Здравствуйте, уважаемые фанаты модинга ЗП, сегодня я попробую объяснить создание квеста на уничтожение отряда в ЗП на основе моего способа. Способ предполагает, что вы умеете хоть немного работать с логикой\скриптами игры. Итак, я не буду описывать все подробно, в обычных местах, таких, как "создадим диалог и прочее". Я надеюсь это вы итак писать умеете. Просто отмечу, что в диалог нужно будет повесить активатор скрипта для выдачи задания и немного поколдовать с инфопоршнями, чтобы, когда выдан инфопоршень(на выдачу квеста или, что квест выполнен, и работает "таймер перезапуска квеста"), квест нельзя было брать повторно. Первое, создадим отряд на который будет вестись охота. Идем например в squad_descr_zaton.ltx(если отряд будет на Затоне, можете добавить в другие секции squad_descr_название локации или создать отдельный squad_descr файл для мода(я так и сделал)) Создаем там отряд, к примеру, псевдогиганта [zat_giant_for_quest]:online_offline_group story_id = zat_b52_giant_for_quest_squad -- важно дать id, чтобы по квесту отслеживать отряд по метке faction = monster_predatory_day npc = gigant_normal on_death = %+zat_giant_for_quest_death% -- необходимая инфа, чтобы засчитать квест, после гибели отряда и для перезапуска Второе, распаковываем all.spawn и создаем секцию-рестриктор для логики квеста [1868] cse_abstract properties section_name = space_restrictor name = zat_giant_quest_logic -- название рестриктора position = 150.076538085938,1.77096498012543,94.8425521850586 direction = 0.00209100008942187,3,-0.00126799999270588
cse_alife_object properties game_vertex_id = 0 distance = 0 level_vertex_id = 293223 object_flags = 0xffffff3e custom_data = <<END [logic] cfg = scripts\zaton\zat_giant_quest_logic.ltx -- ! логика задания, которая будет обрабатывать инфопоршни и запускать таймер END
cse_shape properties shapes = shape0 shape0:type = sphere shape0:offset = 0,0,0 shape0:radius = 1
cse_alife_space_restrictor properties restrictor_type = 3
Третье, пишем логику [logic] active = sr_idle -- думаю понятно, логика ждет активации [sr_idle] on_info = {+zat_b52_giant_quest_give(это выданный в диалоге инфопоршень старта, который запускает логику!)} sr_idle2 %=create_squad(zat_stalker_for_quest:zat_sim_13)(ну тут понятно - мы создали только что отряд для квеста на точке zat_sim_13, можно бежать и валить))% [sr_idle2] on_info = {+zat_b52_giant_quest_done} sr_idle@timer -- тоже понятно, в диалоге, после получения инфопоршня zat_giant_for_quest_death от убитого отряда, я просто выдал еще один поршень, который "выключает квест", пока не пройдет таймер [sr_idle@timer] on_game_timer = 6000 | %-zat_giant_quest_target1 -zat_b52_giant_quest_give -zat_b52_giant_quest_done -zat_giant_for_quest_death -zat_giant_quest_begin% -- здесь видно, что после отработки таймера, все инфопоршни обнулились и неизвестны игроку, а значит квест вновь свободен для выполнения on_info = {-zat_b52_giant_quest_give} sr_idle -- автоматическое возвращение на начало логики Добавлю, что в логике можно играться с поршнями создавать отряды в помощь, убивать отряды, давать им разные цели после\во время квеста и т.д., все зависит от вашей фантазии и грамотности в написании диалога и выдаче инфопоршней с помощью логики\скриптов П.С. Можно создавать квест и на убийство отдельного сталкера, без регистрации в squad_descr и создания логики, просто создав НПС с story_id в spawn_sections, чтобы можно было вешать метку и спавнить его через диалог путем скрипта alife():create(через таблицу кординат можно создать иллюзию рандом-спавна путем команды math.random Нужно только тоже прописать ему on_death = %+инфопоршень о смерти% и играть с таймером и поршнем в диалоге, так можно не трогать алл.спавн Автор: ZeeK Добавлю: функция create_squad из xr_effects.script работает только в том случае, если у смарт-террейна в котором вы собираетесь спанить сквад, есть точка спавна way_point, котороя прописана в конфиге смарта. Ну и для просто спавна сквада, не обязательно создавать рестриктор в аллспавне, можно вызвать эту функцию из своей, которая вызывается через action диалога: xr_effects.create_squad(zat_stalker_for_quest:zat_sim_13) by Clayman. Дополнение к тексту от Clayman. Насколько я помню в ЗП отсутствуют скриптовые таймеры, в результате спавна функцией xr_effects.create_squad(zat_stalker_for_quest:zat_sim_13) модер столкнется с тем, что квест будет одноразовый(т.к. файла логики с таймером), либо невозможно будет отключать квест на время, так что этот способ подходит для единичного квеста, без повторов.
|