Главная » Статьи » Статьи » Моддинг

CoP. Создание квеста на уничтожение отряда
Здравствуйте, уважаемые фанаты модинга ЗП, сегодня я попробую объяснить создание квеста на уничтожение отряда в ЗП на основе моего способа. Способ предполагает, что вы умеете хоть немного работать с логикой\скриптами игры. Итак, я не буду описывать все подробно, в обычных местах, таких, как "создадим диалог и прочее". Я надеюсь это вы итак писать умеете. Просто отмечу, что в диалог нужно будет повесить активатор скрипта для выдачи задания и немного поколдовать с инфопоршнями, чтобы, когда выдан инфопоршень(на выдачу квеста или, что квест выполнен, и работает "таймер перезапуска квеста"), квест нельзя было брать повторно.
Первое, создадим отряд на который будет вестись охота. Идем например в 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) модер столкнется с тем, что квест будет одноразовый(т.к. файла логики с таймером), либо невозможно будет отключать квест на время, так что этот способ подходит для единичного квеста, без повторов.
Категория: Моддинг | Добавил: Hardtmuth (24.07.2012)
Просмотров: 5454 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Меню сайта

Свежие прохождения






Категории раздела

Мини-чат

Поиск

Статистика

Онлайн всего: 3
Гостей: 3
Пользователей: 0


Сегодня посетили:

petro_056, diny52, ivankozack












Форма входа


Войти Зарегистрироваться