Dennis_Chikin 3 663 Опубликовано 13 Июля 2014 Grumbler писал(а): за цену продажи рецептов у Информатора в Баре? dialogs_bar.xml Строки типа <precondition>sak_dialog.actor_has_money_150000</precondition> - проверка наличия денег <action>sak_dialog.give_money_150000</action> - отъем денег. Вызываемая функция должна, естественно, существовать. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 21 Июля 2014 amk_mod.script: function start_blow_timer()local basis = game_options.blow_time_basislocal shift = game_options.blow_time_shift--local resuls = basis + (math_random()*shift) - (shift/2)local resuls = basis+math_random(-shift, shift)amk.g_start_timer("blow_shift", 0, 0, resuls)if (news_main and news_main.next_blow) then news_main.next_blow(resuls) endend 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 22 Июля 2014 (изменено) key_krios писал(а): Подскажите как сделать что бы детектор артефактов работал с пояса? Перевесить его на пояс мне удалось, но работает он только из пистолетного слота. Если коротко, то надо брать inventory.script, вставлять туда проверку на наличие требуемого предмета на поясе, и результат сохранять в переменной, описанной в начале (для простоты) скрипта без префикса local. типа: detector1_on_belt = false function ... (все функции скрипта) В скриптах детекторов (или еще чего-нибудь - что там надо) вместо проверки на предмет в слоте проверять if inventory.detector1_on_belt then ... Изменено 29 Апреля 2015 пользователем Eugen81 процитировал 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 22 Июля 2014 (изменено) По детекторам: детекторы аномалий - полудвижковые. Какие аномалии они видят, и как показывают - задается конфигом. Работает только на поясе.Все детекторы, которые были добавлены в модах - скриптовые. Проверка их нахождения на поясе, в слоте, да хоть в не-будем-говорить-где - делается скриптом, и все отображение чего попало - тоже скриптом же.Сравнение, которое здесь приведено:первая строка с local что-то = nil - для мебели.Кусок кода между --[[ и ]] - закомментирован. Добавлен код, проверяющий переменную, как здесь уже описывал, вместо наличия предмета в слоте. Кстати, можно повесить какой-то функционал на детекторы аномалий - конфиг и скрипты не пересекаются, так что будет работать одновременно. Изменено 22 Июля 2014 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 22 Июля 2014 (изменено) посмотрел на предмет "! Cannot find saved game ~~~ watchdog 100.reason autosave Тайник Старого Жила - завершено" и иже с ними. Мда. Похоже, это не лечится. Точнее, лечится, но не наскоком. Поздравляю всех с имущественным цензом - покупайте компьютеры, сертифицированные лично разработчиками сами-знаете-чего. Короче, надо разгребать все, что наваяно в таймерах - то есть, вообще все подряд, и переписывать. В общем, да - отключать автосохранки, и молиться, чтобы работали просто обычные сэйвы. + к этому - стандартное: брать минимальное количество квестов, минимальное количество ремкомплектов, не варить по нескольку артов сразу и т.д. Плюс не сохраняться/не переходить между локами, ближайшие 5-10 минут после загрузки/вывода большого количества новостей. Такие дела... Изменено 22 Июля 2014 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 23 Июля 2014 (изменено) snp.script: Показать elseif section == "wpn_ognemet" then if not (has_alife_info("fli_have_3") or has_alife_info("dimak_toolkit_done")) then obj:set_condition(0.01) end elseif section == "wpn_vihlop" then if not (has_alife_info("bar_deactivate_radar_done") or has_alife_info("izumrud_electra_done")) then obj:set_condition(0.01) end elseif section == "wpn_vintorez" then if not has_alife_info("escape_meceniy_start") then obj:set_condition(0.01) end elseif section == "wpn_ognemet" then if not (has_alife_info("fli_have_3") or has_alife_info("dimak_toolkit_done")) then obj:set_condition(0.01) end elseif section == "wpn_vihlop" then if not (has_alife_info("bar_deactivate_radar_done") or has_alife_info("izumrud_electra_done")) then obj:set_condition(0.01) end elseif section == "wpn_vintorez" then if not has_alife_info("escape_meceniy_start") then obj:set_condition(0.01) end - нафиг ... Поломка огнемет, "Выхлоп", "Винторез". Изменено 5 Мая 2015 пользователем Eugen81 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 24 Июля 2014 (изменено) amk.on_death(victim, who): function on_death(victim, who) if (news_main and news_main.on_death) then news_main.on_death(victim, who) end ... function on_stalker_death(victim_, killer_) ... if (rnd() < 0.5) then -- слишком часто приходят смс о смерти do_news(m_string, "Погиб сталкер:", rnd(timer_stalker_death, timer_stalker_death * 3), 10, "death", nil, 1) end if (rnd() < prob) then ... и т.д. Но вот если это изменить, то см. выше про автосэйвы. 8( Изменено 24 Июля 2014 пользователем Dennis_Chikin 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 24 Июля 2014 amk.on_death() - строчка как раз из мотиватора. Смотрим amk.script - там вызов news_main.on_death(), так что смотрим news_main.script В нем добираемся до function on_stalker_death(), и там будут строчки с if rnd() ... - как раз показывать или не показывать. В общем, по ссылке была правильная мысль: сделать списки, и показывать по ним. Осталось только эти самые списки сделать, и проверку поменять. Мда, но я бы отключил amk_offline_alife (см. пост про ограбление тайников и прочу ересь), и сделал бы бессмертие неписям в онлайне. 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 24 Июля 2014 death_manager.script: после 486 строки: if check_item_dependence(self.npc, k) == true then добавить: if count_by_level[k] then после create_items(self.npc, k, number, v) добавить: else abort( "death_manager, invalid entry: %s", tostring(k) ) end при вылете напишет, что ему не нравится в конфигах. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 30 Июля 2014 (изменено) V92 писал(а): Денис, ты случайно не разбирался с кодом в wawka_dialog.script? А что там можно сделать ? Сидеть, и тупо вычищать весь мусор и весь бред. Начиная с самой первой функции local function v_have_good_wpn(itm) return db.actor:object(itm) and db.actor:object(itm):condition() and db.actor:object(itm):condition() > v_wpn_cond itm = db.actor:object(itm) if itm and itm.condition then return itm:condition() >= v_wpn_cond end -- минимально разрешенная исправность return false end и заканчивая последними function give_af_armor_4(first_speaker, second_speaker) sak.out_item_namber("af_armor_4", 1) end function have_af_armor_4() return sak.have_item_namber("af_armor_4",1) ~= false end Общее количество функций сильно уменьшить не удастся - из диалогов не передаются аргументы, но можно посносить дублирующиеся (только это еще и все xml надо проверять/чистить) Такие дела... adrantsev писал(а): 1. Немерянное количество левых СМС, в том числе и откровенная самореклама amk_mod.script: function show_news() оставить: news_main.on_news() amk.g_start_timer("show_news",0,0,math_random(30,60)) end Кстати, и сэйвы биться реже будут. Изменено 30 Июля 2014 пользователем Dennis_Chikin 1 2 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 11 Августа 2014 К вопросу про неписей, которые убивают других неписей: gamedata\config\creatures\game_relations.ltx ;пороговые значения для отношения персонажейattitude_neutal_threshold = -150 ;когда attitude меньше значения, то выставляется ALife::eRelationEnemy Ставим так, чтобы не убивали, и спокойно делаем, что надо. Скажем attitude_neutal_threshold = -9150. Потом возвращаем на место. 100500 раз, кстати, уже, где только не писалось. 4 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 23 Августа 2014 (изменено) Чтобы закрыть вопрос с гаданиями: Вообще, не думал, что это надо кому-то объяснять. Но придется. Дело в том, что любой человек способен высасывать из пальца огромное количество каких угодно версий, которые потом кто-то вынужден опровергать. Или во все эти версии верить (в том числе во взаимоисключающие), и в итоге подчиняться совершенно необоснованным ограничениям своих возможностей. Если высасыванием из пальца займутся, ну, хотя бы, человек 100 - форум можно закрывать за полной бессмысленностью его существования. Да и не только форум, а вообще всю цивилизацию. Вот чтобы цивилизацию вместе со всеми ее форумами не закрывать, не здесь и не сейчас было принято правило, что бремя доказательств всегда лежит на выдвинувшем утверждение. Причем доказательства должны быть по сути вопроса, и проверяемыми. Если я утверждаю, что кто-то должен мне миллион баксов - я должен представить договор займа и расписку в получении денег. И ни как иначе. Если кто-то утверждает, что вылет происходит от вхождения луны в созвездие ракоскорпиона - с него - код, где определяется положение луны. Либо иная методика проверки, чтобы все могли повторить, и убедиться. И, да, если повторить не получится - этот человек рискует как минимум репутацией. Есть некоторое количество исключений, но они весьма редки. В случае с изменениями конфигов - да, стабильное появление и исчезновение вылета в зависимости от используемого конфига - вполне годная методика. И вывод в том, что проблема в конфиге - вполне годный. А вот дальше - что именно не так в том конфиге - демонстрируется уже конкретной строкой конкретного конфига, и описанием того, как быстро и гарантированно увидеть эффект, вызываемый этой строкой. В общем, см. правила, п 2.1 Изменено 23 Августа 2014 пользователем Dennis_Chikin 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 5 Сентября 2014 (изменено) По телепортам: не факт, что они все в allspawn - скорее, наоборот. Думаю, здесь имеет смысл взять bind_mteleport.script, найти в нем restrictor_teleport:update() (ищем без скобок), и вместо actor:set_actor_position() сделать, скажем, вывод названия тепелепорта. Или добавить перед ним запрос на телепортацию. Заодно там же можно и проверку радиусов поменять на что-нибудь. Аналогично, кстати, с рестрикторами - увеличить радиусы, и сделать вывод имени, когда радиус пересекается. Изменено 5 Сентября 2014 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 10 Сентября 2014 get_console():execute ("r2_mblur 0.6") - лишнее. Оно, конечно, прикольно, когда еще при движении усе расплывается, но, во-первых, бред, во-вторых - если не убрать во-вовремя - эффект остается "пожизненно". А пользователь гадает: что у него случилось с видеокартой. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 4 Октября 2014 (изменено) Для чистой обезжиренной соли у меня конфиги ВСЕХ детекторов выглядят примерно так: [det_artefact_indy]:identity_immunities GroupControlSection = spawn_group discovery_dependency = $spawn = "devices\detector_advanced" $prefetch = 32 class = D_SIMDET cform = skeleton visual = equipments\item_datchik1.ogf description = det_art_indy_info inv_name = "Простой детектор артефактов" inv_name_short = "Простой детектор артефактов" inv_grid_width = 1 inv_grid_height = 1 inv_grid_x = 12 inv_grid_y = 47 inv_weight = 0.3 cost = 15000 slot = 2 animation_slot = 1 belt = true ef_detector_type= 1 radius = 10 То есть, по выбору можно на пояс либо вместо автоматов/винтовок. Это чтобы вешались. И они таки действительно вешаются. По выбору. На поясе или в слоте, естественно, должно быть место. Чтобы работали - да, нужен еще и скрипт. Но это уже другой вопрос. Изменено 4 Октября 2014 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 9 Октября 2014 v92, можно адаптировать, да. Но с совместимостью по сэйвам будет понятно-что, и версия в общем-то промежуточная. Но сильно не спасет - ОП2 перегружен таймерами и записью ненужных переменных. Вот от этого в первую очередь надо избавляться. И уменьшать частоту выдачи новостей. Если 300 байт экономим, а потом килобайты пишем - ну, да, влезет на одну дурацкую новость или на один ОПшный квест больше... А толку ? По артам - как здесь уже блестяще продемонстрировали - вопрос религиозный. У меня таки поднять jump_height в конфигах артов - очень даже помогает. Для особо запущенных случаев - уменьшаем алайф до единиц метров, и к странно ведущим себя артам подходим в таком виде - чтобы вошел в онлайн, и успеть подобрать, пока не укатился. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 5 Ноября 2014 ph_door.script - это и есть двери. Но если не работают (не появляются сообщения типа "открыть" и т.д.) - объект у вас повис, а потом в таком виде сохранился, и был убит при загрузке. А кроме них и еще неизвестно что уиерло. 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 10 Ноября 2014 (изменено) karavan150, еще раз: комментировать надо не функцию, а то, что у нее внутри. Иначе у тебя так и будет регулярно случаться "P.S. Проблемка. При сдаче квеста на ремящики и снятию ранга Монолитовца был вылет." Это надо просто запомнить: function bla-bla-bla() end Ну или function bla-bla-bla() return true end/function bla-bla-bla() return false end - для диалогов. Изменено 25 Ноября 2014 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 13 Ноября 2014 Традиционно это делается в netspawn(), там где --[[local bad_object_names и т.д. Тогда ничего не пищит. Можно удаление даже готовое оставить, и по аналогии слепить создание. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение
Dennis_Chikin 3 663 Опубликовано 15 Ноября 2014 (изменено) for i, v in ipairs( {"agro_final_vert1", "agro_final_vert2", "agr_nii_heli", "agr_helicopter1", "agr_helicopter2", "agr_helicopter3", "agr_helicopter4" } ) do v = alife():object( v ) if v then alife():release( v, true ) end end for i, v in ipairs( { 4421, 4422, 4662, 4727, 4731, 4733, 4732 } ) do alife():create( v ) end Можно, в принципе, еще сами списки подсократить - не все вертухи одинаково полезны. А совсем правильно - удаление всем списком на всех локах повесить на if self.bCheckStart then ... self.bCheckStart = nil end, а спавн каждого конкретного верта - на условие. Но это опять работы много, и результат - до каждого следующего фикса/патча. Изменено 15 Ноября 2014 пользователем Dennis_Chikin 2 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Поделиться этим сообщением Ссылка на сообщение