Повернутися на сторінку уроків

Стаття: Квест на ліквідацію загону (скваду) мутантів

Документ

Створення примітивного квеста на ліквідацію сквада мутантів, без переробки спавна на S.T.A.L.K.E.R. Call of Pripyat

Автор: Devil_Stalker

Телеграм: https://t.me/modostoi_stalker

Файли які потрібно для роботи:

1. gamedata\configs\gameplay

-character_desc_zaton.xml

-dialogs_zaton.xml

-info_zaton.xml

2. gamedata\configs\misc

- tm_zaton.ltx

3.gamedata\configs\text\rus

- st_dialogs_zaton.xml

- st_quests_zaton.xml

5. gamedata\scripts

- dialogs_zaton.script

В файл dialogs_zaton.xml(gamedata\configs\gameplay) в низу добавим два діалога:

На видачу завдання.

<dialog id="zat_b106_stalker_gonta_lesson_start">

<has_info>zat_b106_search_soroka</has_info>

<dont_has_info>zat_b106_stalker_gonta_lesson_otkaz</dont_has_info>

<dont_has_info>zat_b106_stalker_gonta_lesson_start_tm</dont_has_info>

<phrase_list>

<phrase id="1">

<text>zat_b106_stalker_gonta_lesson_start_1</text>

<next>2</next>

<next>21</next>

</phrase>

<phrase id="3">

<text>zat_b106_stalker_gonta_lesson_start_3</text>

</phrase>

<phrase id="2">

<text>zat_b106_stalker_gonta_lesson_start_2</text>

<action>dialogs_zaton.zat_b106_stalker_gonta_give_tm_lesson</action>

<give_info>zat_b106_stalker_gonta_lesson_start_tm</give_info>

<next>3</next>

</phrase>

<phrase id="0">

<text>zat_b106_stalker_gonta_lesson_start_0</text>

<next>1</next>

</phrase>

<phrase id="21">

<text>zat_b106_stalker_gonta_lesson_start_21</text>

<give_info>zat_b106_stalker_gonta_lesson_otkaz</give_info>

</phrase>

</phrase_list>

</dialog>

На заввершення завдання.

<dialog id="zat_b106_stalker_gonta_lesson_end">

<has_info>zat_b106_stalker_gonta_lesson_start_tm</has_info>

<dont_has_info>zat_b106_stalker_gonta_lesson_complite</dont_has_info>

<dont_has_info>zat_b106_stalker_gonta_lesson_fail</dont_has_info>

<phrase_list>

<phrase id="1">

<text>zat_b106_stalker_gonta_lesson_end_1</text>

<next>2</next>

<next>21</next>

<next>22</next>

</phrase>

<phrase id="3">

<text>zat_b106_stalker_gonta_lesson_end_3</text>

</phrase>

<phrase id="0">

<text>zat_b106_stalker_gonta_lesson_end_0</text>

<next>1</next>

</phrase>

<phrase id="2">

<text>zat_b106_stalker_gonta_lesson_end_2</text>

<has_info>zat_sim_16_snork_squad_kill</has_info>

<action>dialogs_zaton.zat_b106_stalker_gonta_give_revard</action>

<give_info>zat_b106_stalker_gonta_lesson_complite</give_info>

<next>3</next>

</phrase>

<phrase id="22">

<text>zat_b106_stalker_gonta_lesson_end_22</text>

</phrase>

<phrase id="21">

<text>zat_b106_stalker_gonta_lesson_end_21</text>

<give_info>zat_b106_stalker_gonta_lesson_fail</give_info>

</phrase>

</phrase_list>

</dialog>

Пояснення

Діалог буде активовано тільки після того як ми поговоримо з гонтой про сороку
тобто отримали інфопоршень zat_b106_search_soroka

zat_b106_stalker_gonta_lesson_start_tm

Це алгоритм діалога у нас відсутній інфопоршень zat_b106_stalker_gonta_lesson_start_tm в

ході діалогу ми його отримаємо <give_info>zat_b106_stalker_gonta_lesson_start_tm </give_info> і наш діалог не буде активуватись знову.

zat_b106_stalker_gonta_lesson_otkaz

Інфопршень в діалогу на відмову брати цю роботу після чого діалогу бідьше не буде.

<action>dialogs_zaton.zat_b106_stalker_gonta_give_tm_lesson</action>

<action>dialogs_zaton.zat_b106_stalker_gonta_give_tm_lesson</action>це ссилка на фунцію в скрипті(gamedata\scripts \dialogs_zaton.script ) для видачі завдання на полювання , та спавн мутантів

zat_b106_stalker_gonta_lesson_fail

ході діалогу ми його отримаємо <give_info>zat_b106_stalker_gonta_lesson_fail </give_info> і наш діалог не буде активуватись знову. Завдання буде провалено

zat_b106_stalker_gonta_lesson_complite

ході діалогу ми його отримаємо <give_info>zat_b106_stalker_gonta_lesson_complite </give_info> і наш діалог не буде активуватись знову. Завдання буде виконано

dialogs_zaton.zat_b106_stalker_gonta_give_revard

<action>dialogs_zaton.zat_b106_stalker_gonta_give_revard</action>це ссилка на фунцію в скрипті(gamedata\scripts \dialogs_zaton.script ) для видачі винагороди ГГ.

Тепер пропишем текст наших діалогів

- st_dialogs_zaton.xml(gamedata\configs\text\rus)в низу перед строкою </string_table> добавим такі строки:

<string id="zat_b106_stalker_gonta_lesson_end_0">

<text>Я з приводу роботи.</text>

</string>

<string id="zat_b106_stalker_gonta_lesson_end_1">

<text>Ну що там друже?</text>

</string>

<string id="zat_b106_stalker_gonta_lesson_end_2">

<text>Все немає снорків.</text>

</string>

<string id="zat_b106_stalker_gonta_lesson_end_21">

<text>Я відмовляюся виконувати це завдання.</text>

</string>

<string id="zat_b106_stalker_gonta_lesson_end_22">

<text>Я ще не ходив туди.</text>

</string>

<string id="zat_b106_stalker_gonta_lesson_end_3">

<text>Дякую тобі сталкер, ти багатьом допоміг.</text>

</string>

<string id="zat_b106_stalker_gonta_lesson_start_0">

<text>Чи якась робота для мене?</text>

</string>

<string id="zat_b106_stalker_gonta_lesson_start_1">

<text>Там у лісництва завелися снорки, повилазили з нори скоти тепер там спокійно не пройдеш, а толкових мисливців зараз у нас немає.</text>

</string>

<string id="zat_b106_stalker_gonta_lesson_start_2">

<text>Ну добре схожу постреляю тих гадів.</text>

</string>

<string id="zat_b106_stalker_gonta_lesson_start_21">

<text>Та ні самі якось.</text>

</string>

<string id="zat_b106_stalker_gonta_lesson_start_3">

<text>Удачі тобі сталкер, будь обережний.</text>

</string>

В файл nfo_zaton.xml (gamedata\configs\gameplay) в низу добавим Інфопоршні

<!-- lesson gonta-->

<info_portion id="zat_b106_stalker_gonta_lesson_start_tm"></info_portion>

<info_portion id="zat_b106_stalker_gonta_lesson_otkaz"></info_portion>

<info_portion id="zat_b106_stalker_gonta_lesson_complite"></info_portion>

<info_portion id="zat_b106_stalker_gonta_lesson_fail"></info_portion>

Пояснення

В цій строкі <!-- -->    можна проаисати назву груп наших інфопоршнів які відносяться до квесту

В файл character_desc_zaton.xml(gamedata\configs\gameplay) в секції Гонти zat_b106_stalker_gontaдобавим ідентифікатори діалогів:

<actor_dialog>zat_b106_stalker_gonta_lesson_start</actor_dialog>

<actor_dialog>zat_b106_stalker_gonta_lesson_end</actor_dialog>

Пропишем функції в скриптах

dialogs_zaton.script(gamedata\scripts) в кінці пропишем фунції які ми указували в діалогах

function zat_b106_stalker_gonta_give_tm_lesson()

task_manager.get_task_manager():give_task("lesson_zat_b106_stalker_gonta")

xr_effects.create_squad(nil, nil, {"zat_sim_16_snork_squad", "zat_sim_16"})

end

function zat_b106_stalker_gonta_give_revard(first_speaker, second_speaker)

dialogs.relocate_money_to_actor(first_speaker, second_speaker, 5000)

treasure_manager.get_treasure_manager():give_treasure("zat_hiding_place_20")

end

Пояснення

function zat_b106_stalker_gonta_give_tm_lesson()

task_manager.get_task_manager():give_task("lesson_zat_b106_stalker_gonta")

xr_effects.create_squad(nil, nil, {"zat_sim_16_snork_squad", "zat_sim_16"})

end

Функція для видачі завдання та спавна сквада снорків у смарт терейн під назвою zat_sim_16

function zat_b106_stalker_gonta_give_revard(first_speaker, second_speaker)

dialogs.relocate_money_to_actor(first_speaker, second_speaker, 5000)

treasure_manager.get_treasure_manager():give_treasure("zat_hiding_place_20")

end

Функція для передачі грошової винагороди ГГ та наводки на схрон

В файл tm_zaton.ltx(gamedata\configs\misc) добавим квест:

[lesson_zat_b106_stalker_gonta]

icon = ui_inGame2_Ohota_na_Himeru

prior = 2

storyline = false

title = {+esc_tushkan_monster_kill} lesson_zat_b106_stalker_gonta_title_1, lesson_zat_b106_stalker_gonta_title_0

descr = {+esc_tushkan_monster_kill} lesson_zat_b106_stalker_gonta_descr_1, lesson_zat_b106_stalker_gonta_descr_0

target = {+zat_sim_16_snork_squad_kill} zat_b106_stalker_gonta, zat_sim_16_snork_squad

condlist_0 = {+zat_b106_stalker_gonta_lesson_complite} complete

condlist_1 = {+zat_b106_stalker_gonta_lesson_fail} fail

Пояснення

- [lesson_zat_b106_stalker_gonta]- назва завдання в таск менеджері

- icon = ui_inGame2_Ohota_na_Himeru - іконка квеста

- prior = 2 - пріоритет завдання 

- storyline = false - сюжетный квест або ні

- title = - заголовки при обновленні завдання 

- descr = - дескрипшини при обновленні завдання

- target = - мітка на карті при обновленні завдання

- condlist_0 =- кондішн в квесті на завершення

- condlist_1 =- кондішн в квесті на провал

Пропишемо транскрипцію дескрипшинов і тайтлов квеста в st_quests_zaton.xml (gamedata\configs\text\rus)

<string id="lesson_zat_b106_stalker_gonta_title_1">

<text>Розповісти Гонті про ліквідацію мутантів</text>

</string>

<string id="lesson_zat_b106_stalker_gonta_descr_1">

<text>Мутанти вбиті потрібно повернутися до гонти та розповісти йому і отримати винагороду за урок</text>

</string>

<string id="lesson_zat_b106_stalker_gonta_descr_0">

<text>Гонта в ході уроку поросив мене допомогти розібратися зі снорками у лісництва</text>

</string>

<string id="lesson_zat_b106_stalker_gonta_title_0">

<text>Ліквідувати снорків</text>

</string>

В файл squad_descr_zaton.ltx(gamedata\configs\misc) створимо сквад снорків в низу допишемо секцію:

[zat_sim_16_snork_squad]:online_offline_group

faction = monster_zombied_day

npc = snork_indoor, snork_indoor, snork_indoor, snork_indoor

target_smart = zat_sim_16

story_id = zat_sim_16_snork_squad

on_death = %+zat_sim_16_snork_squad_kill%

Пояснення

[zat_sim_16_snork_squad]:online_offline_group назва нашого сквада

faction = monster_zombied_day фракція сквада

npc = snork_indoor, snork_indoor, snork_indoor, snork_indoor назва мутантів і кількість які будуть в скваді ( можна взяти із character_desc_general.XML )

target_smart = zat_sim_16 смарт терейн якому належить сквад і до якого він буде прив'язаний

story_id = zat_sim_16_snork_squad сторі ІД для мінікарти і позначення нашого сквада

on_death = %+zat_sim_16_snork_squad_kill% інфопоршень який нам видасть якщо сквад буде знищено

Завантажити PDF-файл уроку

2.pdf