CoP. Создание квеста на уничтожение отряда — различия между версиями — S.T.A.L.K.E.R. Inside Wiki

CoP. Создание квеста на уничтожение отряда — различия между версиями

Материал из S.T.A.L.K.E.R. Inside Wiki

Перейти к: навигация, поиск
Строка 89: Строка 89:
  
 
'''Автор: ZeeK'''
 
'''Автор: ZeeK'''
 +
 +
Добавлю: функция create_squad из xr_effects.script работает только в том случае, если у смарт-террейна в котором вы собираетесь спанить сквад, есть точка спавна way_point, котороя прописана в конфиге смарта. Ну и для просто спавна сквада, не обязательно создавать рестриктор в аллспавне, можно вызвать эту функцию из своей, которая вызывается через action диалога:
 +
xr_effects.create_squad(zat_stalker_for_quest:zat_sim_13)
 +
 +
by Clayman.

Версия 12:29, 12 июля 2012

Здравствуйте, уважаемые фанаты модинга ЗП, сегодня я попробую объяснить создание квеста на уничтожение отряда в ЗП на основе моего способа. Способ предполагает, что вы умеете хоть немного работать с логикой\скриптами игры. Итак, я не буду описывать все подробно, в обычных местах, таких, как "создадим диалог и прочее". Я надеюсь это вы итак писать умеете. Просто отмечу, что в диалог нужно будет повесить активатор скрипта для выдачи задания и немного поколдовать с инфопоршнями, чтобы, когда выдан инфопоршень(на выдачу квеста или, что квест выполнен, и работает "таймер перезапуска квеста"), квест нельзя было брать повторно.

Первое, создадим отряд на который будет вестись охота. Идем например в 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.

Другие места
LANGUAGE