CoP. Создание квеста — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
THE ATLAS (обсуждение | вклад) (→Разбираем конкретно параметры:) |
|||
(не показаны 24 промежуточных версий 8 участников) | |||
Строка 1: | Строка 1: | ||
− | == Разбираем | + | === Разбираем параметры === |
− | |||
'''icon''' — иконка квеста<br/> | '''icon''' — иконка квеста<br/> | ||
''Пример использования:'' icon = ui_inGame2_Put_v_pripyat<br/> | ''Пример использования:'' icon = ui_inGame2_Put_v_pripyat<br/> | ||
− | + | ||
'''prior''' — приоритет квеста<br/> | '''prior''' — приоритет квеста<br/> | ||
''Пример использования:'' prior = 112<br/> | ''Пример использования:'' prior = 112<br/> | ||
− | + | ||
'''storyline''' — флаг задания (true — сюжетное, false — несюжетное)<br/> | '''storyline''' — флаг задания (true — сюжетное, false — несюжетное)<br/> | ||
''Пример использования:'' storyline = true<br/> | ''Пример использования:'' storyline = true<br/> | ||
− | + | ||
'''title '''— название задание (id из xml) — если брать название не из xml, то в игре оно будет отображаться без пробелов<br/> | '''title '''— название задание (id из xml) — если брать название не из xml, то в игре оно будет отображаться без пробелов<br/> | ||
''Пример использования:'' title = zat_a9_way_gates_check_transport_workshop_name<br/> | ''Пример использования:'' title = zat_a9_way_gates_check_transport_workshop_name<br/> | ||
− | + | ||
'''descr''' — описание задания (id из xml) — если брать название не из xml, то в игре оно будет отображаться без пробелов<br/> | '''descr''' — описание задания (id из xml) — если брать название не из xml, то в игре оно будет отображаться без пробелов<br/> | ||
''Пример использования:'' descr = zat_a9_way_gates_check_transport_workshop_text<br/> | ''Пример использования:'' descr = zat_a9_way_gates_check_transport_workshop_text<br/> | ||
− | + | ||
'''target''' — цель на карте (метка)<br/> | '''target''' — цель на карте (метка)<br/> | ||
''Примеры использования:''<br/> | ''Примеры использования:''<br/> | ||
'''target''' =zat_a2_stalker_barmen (ID нпц, на которого будет поставлена метка)<br/> | '''target''' =zat_a2_stalker_barmen (ID нпц, на которого будет поставлена метка)<br/> | ||
'''target''' = {+название_инфопоршня}zat_a2_stalker_barmen — проверка инфопоршня, после которого метка будет поставлена на нпц<br/> | '''target''' = {+название_инфопоршня}zat_a2_stalker_barmen — проверка инфопоршня, после которого метка будет поставлена на нпц<br/> | ||
− | + | ||
'''condlist_x''' — блок условий. возможные значения complete, reversed, fail<br/> | '''condlist_x''' — блок условий. возможные значения complete, reversed, fail<br/> | ||
''Примеры использования:''<br/> | ''Примеры использования:''<br/> | ||
'''condlist_0''' = {+название_инфопоршня} complete — если выполняется условие, задание выполнено.<br/> | '''condlist_0''' = {+название_инфопоршня} complete — если выполняется условие, задание выполнено.<br/> | ||
− | '''condlist_1''' = {+название_инфопоршня} reversed — если выполняется условие, значит | + | '''condlist_1''' = {+название_инфопоршня} reversed — если выполняется условие, значит задание отменено.<br/> |
'''condlist_2''' = {+название_инфопоршня} fail — если выполняется условие, задание провалено.<br/> | '''condlist_2''' = {+название_инфопоршня} fail — если выполняется условие, задание провалено.<br/> | ||
− | + | ||
'''on_init''' - действия, которые выполняются, при выдаче задания<br/> | '''on_init''' - действия, которые выполняются, при выдаче задания<br/> | ||
'''on_complete''' — действия, которые выполняются, если задание выполнено<br/> | '''on_complete''' — действия, которые выполняются, если задание выполнено<br/> | ||
− | '''on_reversed''' — действия, которые выполняются, если задание провалено<br/> | + | '''on_reversed''' — действия, которые выполняются, если задание отменено<br/> |
+ | '''on_fail''' — действия, которые выполняются, если задание провалено<br/> | ||
''Примеры использования:''<br/> | ''Примеры использования:''<br/> | ||
'''on_init''' = %+название_инфопоршня% -- выдаем опр.инфопоршень<br/> | '''on_init''' = %+название_инфопоршня% -- выдаем опр.инфопоршень<br/> | ||
'''on_complete''' = %=inc_faction_goodwill_to_actor(stalker:200)% — повышаем репу у сталкеров (функция юзаются из xr_effect)<br/> | '''on_complete''' = %=inc_faction_goodwill_to_actor(stalker:200)% — повышаем репу у сталкеров (функция юзаются из xr_effect)<br/> | ||
'''on_reversed''' = {+название_ифопоршня} %=inc_faction_goodwill_to_actor(stalker:200)% — повышаем репу у сталкеров, только если есть опр.инфопоршень<br/> | '''on_reversed''' = {+название_ифопоршня} %=inc_faction_goodwill_to_actor(stalker:200)% — повышаем репу у сталкеров, только если есть опр.инфопоршень<br/> | ||
− | + | ||
'''reward_money''' - денежная награда<br/> | '''reward_money''' - денежная награда<br/> | ||
'''reward_item''' - награда в виде предмета<br/> | '''reward_item''' - награда в виде предмета<br/> | ||
− | + | ||
''Примеры использования:''<br/> | ''Примеры использования:''<br/> | ||
reward_money = 5000 -- даем актору 5000.<br/> | reward_money = 5000 -- даем актору 5000.<br/> | ||
reward_item = wpn_ak74 -- даем актору АК-74.<br/> | reward_item = wpn_ak74 -- даем актору АК-74.<br/> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | </game_dialogs> | + | '''''Примечание:''''' Награда выдается двумя методами: от NPC или просто свалится с неба. Если не найден NPC, с которым мы в диалоге, то валится с неба.<br/> |
− | < | + | |
− | + | === Практика === | |
+ | |||
+ | '''Используемые файлы:''' | ||
+ | |||
+ | *'''configs\gameplay\dialogs_zaton.xml''' | ||
+ | *'''configs\gameplay\info_zaton.xml''' | ||
+ | *'''configs\gameplay\character_desc_zaton.xml''' | ||
+ | *'''configs\text\rus\st_quests_zaton.xml''' | ||
+ | *'''configs\misc\tm_zaton.ltx''' | ||
+ | *'''scripts\dialogs_zaton.script''' | ||
+ | |||
+ | Открываем файл '''dialogs_zaton.xml''' и добавляем перед '''</game_dialogs>''': | ||
+ | |||
+ | <xml> | ||
+ | <dialog id="vodka_quest_dialog"> | ||
<dont_has_info>quest_vodka_give</dont_has_info> | <dont_has_info>quest_vodka_give</dont_has_info> | ||
<phrase_list> | <phrase_list> | ||
Строка 67: | Строка 76: | ||
<dialog id="vodka_quest_prines"> | <dialog id="vodka_quest_prines"> | ||
<has_info>quest_vodka_give</has_info> | <has_info>quest_vodka_give</has_info> | ||
+ | <dont_has_info>quest_vodka_done</dont_has_info> | ||
<precondition>dialogs_zaton.is_has_vodka_borode</precondition> | <precondition>dialogs_zaton.is_has_vodka_borode</precondition> | ||
<phrase_list> | <phrase_list> | ||
Строка 74: | Строка 84: | ||
</phrase> | </phrase> | ||
<phrase id="0"> | <phrase id="0"> | ||
− | |||
<text>Вот твоя водяра</text> | <text>Вот твоя водяра</text> | ||
<action>dialogs_zaton.transfer_vodka_to_boroda</action> | <action>dialogs_zaton.transfer_vodka_to_boroda</action> | ||
Строка 80: | Строка 89: | ||
</phrase> | </phrase> | ||
</phrase_list> | </phrase_list> | ||
− | </dialog></ | + | </dialog> |
+ | </xml> | ||
− | |||
Далее добавляем наши диалоги Бороде.<br/> | Далее добавляем наши диалоги Бороде.<br/> | ||
Открываем файл '''character_desc_zaton.xml'''<br/> | Открываем файл '''character_desc_zaton.xml'''<br/> | ||
− | Находим строчку '''<actor_dialog>zat_a2_stalker_barmen_actor_info</actor_dialog>''' и под ней пишем | + | Находим строчку '''<actor_dialog>zat_a2_stalker_barmen_actor_info</actor_dialog>''' и под ней пишем: |
− | < | + | |
+ | <xml> | ||
<actor_dialog>vodka_quest_dialog</actor_dialog> | <actor_dialog>vodka_quest_dialog</actor_dialog> | ||
− | <actor_dialog>vodka_quest_prines</actor_dialog></ | + | <actor_dialog>vodka_quest_prines</actor_dialog> |
− | + | </xml> | |
− | + | ||
− | Открываем файл '''info_zaton.xml''' и добавляем перед '''</game_information_portions>:''' | + | Сохраняем. |
− | < | + | |
+ | Открываем файл '''info_zaton.xml''' и добавляем перед '''</game_information_portions>:''' | ||
+ | |||
+ | <xml> | ||
<info_portion id="quest_vodka_give"></info_portion> | <info_portion id="quest_vodka_give"></info_portion> | ||
<info_portion id="quest_has_vodka"></info_portion> | <info_portion id="quest_has_vodka"></info_portion> | ||
<info_portion id="quest_vodka_done"></info_portion> | <info_portion id="quest_vodka_done"></info_portion> | ||
− | </ | + | </xml> |
− | + | ||
Открываем файл '''dialogs_zaton.script''' и в начало записываем: | Открываем файл '''dialogs_zaton.script''' и в начало записываем: | ||
− | < | + | |
+ | <lua> | ||
+ | function give_vodka_quest() | ||
task_manager.get_task_manager():give_task("quest_vodka_give") | task_manager.get_task_manager():give_task("quest_vodka_give") | ||
end | end | ||
Строка 110: | Строка 125: | ||
function transfer_vodka_to_boroda(first_speaker, second_speaker) | function transfer_vodka_to_boroda(first_speaker, second_speaker) | ||
dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "vodka") | dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "vodka") | ||
− | end | + | end |
− | < | + | </lua> |
− | + | ||
− | + | Сохраняем. | |
− | ''' | + | |
− | < | + | Открываем файл '''tm_zaton.ltx''' и в конец пишем: |
+ | |||
+ | <ini> | ||
+ | [quest_vodka_give] | ||
icon = ui_inGame2_Put_v_pripyat | icon = ui_inGame2_Put_v_pripyat | ||
prior = 2 | prior = 2 | ||
Строка 122: | Строка 140: | ||
descr = vodka_barmen_descr | descr = vodka_barmen_descr | ||
target = {=actor_has_item(vodka)}zat_a2_stalker_barmen | target = {=actor_has_item(vodka)}zat_a2_stalker_barmen | ||
− | condlist_0 = {+quest_vodka_done} complete</ | + | condlist_0 = {+quest_vodka_done} complete |
+ | </ini> | ||
− | Открываем файл '''st_quests_zaton.xml''' и добавляем после '''<string_table>''' | + | Открываем файл '''st_quests_zaton.xml''' и добавляем после '''<string_table>''': |
− | < | + | <xml> |
+ | <string id="vodka_barmen_naiti_name"> | ||
<text>Найти водку для бармена</text> | <text>Найти водку для бармена</text> | ||
</string> | </string> | ||
Строка 134: | Строка 154: | ||
<string id="vodka_barmen_descr"> | <string id="vodka_barmen_descr"> | ||
<text>Бармен в тестовых целях попросил найти и принести ему 2 бутылки водки</text> | <text>Бармен в тестовых целях попросил найти и принести ему 2 бутылки водки</text> | ||
− | </string | + | </string> |
− | + | </xml> | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | </ | + | |
− | + | Сохраняем. | |
− | + | ||
− | + | <span style="color: gray">P.S.: в CoP инфопорции можно и не регистрировать, работать будет и так.</span> | |
− | + | ||
− | + | Автор: '''XMK''' [http://ars-team.ru/index.php?autocom=ibwiki&cmd=article&id=5 Источник] Корректирование: [[Участник:THE_ATLAS|THE_ATLAS]] | |
− | + | ||
− | + | [[Категория:Конфигурационные файлы]] | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | [[Категория: | + |
Текущая версия на 08:00, 23 августа 2017
Разбираем параметры
icon — иконка квеста
Пример использования: icon = ui_inGame2_Put_v_pripyat
prior — приоритет квеста
Пример использования: prior = 112
storyline — флаг задания (true — сюжетное, false — несюжетное)
Пример использования: storyline = true
title — название задание (id из xml) — если брать название не из xml, то в игре оно будет отображаться без пробелов
Пример использования: title = zat_a9_way_gates_check_transport_workshop_name
descr — описание задания (id из xml) — если брать название не из xml, то в игре оно будет отображаться без пробелов
Пример использования: descr = zat_a9_way_gates_check_transport_workshop_text
target — цель на карте (метка)
Примеры использования:
target =zat_a2_stalker_barmen (ID нпц, на которого будет поставлена метка)
target = {+название_инфопоршня}zat_a2_stalker_barmen — проверка инфопоршня, после которого метка будет поставлена на нпц
condlist_x — блок условий. возможные значения complete, reversed, fail
Примеры использования:
condlist_0 = {+название_инфопоршня} complete — если выполняется условие, задание выполнено.
condlist_1 = {+название_инфопоршня} reversed — если выполняется условие, значит задание отменено.
condlist_2 = {+название_инфопоршня} fail — если выполняется условие, задание провалено.
on_init - действия, которые выполняются, при выдаче задания
on_complete — действия, которые выполняются, если задание выполнено
on_reversed — действия, которые выполняются, если задание отменено
on_fail — действия, которые выполняются, если задание провалено
Примеры использования:
on_init = %+название_инфопоршня% -- выдаем опр.инфопоршень
on_complete = %=inc_faction_goodwill_to_actor(stalker:200)% — повышаем репу у сталкеров (функция юзаются из xr_effect)
on_reversed = {+название_ифопоршня} %=inc_faction_goodwill_to_actor(stalker:200)% — повышаем репу у сталкеров, только если есть опр.инфопоршень
reward_money - денежная награда
reward_item - награда в виде предмета
Примеры использования:
reward_money = 5000 -- даем актору 5000.
reward_item = wpn_ak74 -- даем актору АК-74.
Примечание: Награда выдается двумя методами: от NPC или просто свалится с неба. Если не найден NPC, с которым мы в диалоге, то валится с неба.
Практика
Используемые файлы:
- configs\gameplay\dialogs_zaton.xml
- configs\gameplay\info_zaton.xml
- configs\gameplay\character_desc_zaton.xml
- configs\text\rus\st_quests_zaton.xml
- configs\misc\tm_zaton.ltx
- scripts\dialogs_zaton.script
Открываем файл dialogs_zaton.xml и добавляем перед </game_dialogs>:
<dialog id="vodka_quest_dialog"> <dont_has_info>quest_vodka_give</dont_has_info> <phrase_list> <phrase id="1"> <text>Принеси бутылочку</text> <give_info>quest_vodka_give</give_info> <action>dialogs_zaton.give_vodka_quest</action> </phrase> <phrase id="0"> <text>Привет, тебе водки не принести?</text> <next>1</next> </phrase> </phrase_list> </dialog> <dialog id="vodka_quest_prines"> <has_info>quest_vodka_give</has_info> <dont_has_info>quest_vodka_done</dont_has_info> <precondition>dialogs_zaton.is_has_vodka_borode</precondition> <phrase_list> <phrase id="1"> <text>Спасибо, чувак. Выручил</text> <give_info>quest_vodka_done</give_info> </phrase> <phrase id="0"> <text>Вот твоя водяра</text> <action>dialogs_zaton.transfer_vodka_to_boroda</action> <next>1</next> </phrase> </phrase_list> </dialog>
Далее добавляем наши диалоги Бороде.
Открываем файл character_desc_zaton.xml
Находим строчку <actor_dialog>zat_a2_stalker_barmen_actor_info</actor_dialog> и под ней пишем:
<actor_dialog>vodka_quest_dialog</actor_dialog> <actor_dialog>vodka_quest_prines</actor_dialog>
Сохраняем.
Открываем файл info_zaton.xml и добавляем перед </game_information_portions>:
<info_portion id="quest_vodka_give"></info_portion> <info_portion id="quest_has_vodka"></info_portion> <info_portion id="quest_vodka_done"></info_portion>
Открываем файл dialogs_zaton.script и в начало записываем:
function give_vodka_quest() task_manager.get_task_manager():give_task("quest_vodka_give") end function is_has_vodka_borode() if db.actor:object("vodka") then return true end return false end function transfer_vodka_to_boroda(first_speaker, second_speaker) dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "vodka") end
Сохраняем.
Открываем файл tm_zaton.ltx и в конец пишем:
[quest_vodka_give] icon = ui_inGame2_Put_v_pripyat prior = 2 storyline = false title = {=actor_has_item(vodka)}vodka_barmen_prinesti_name, vodka_barmen_naiti_name descr = vodka_barmen_descr target = {=actor_has_item(vodka)}zat_a2_stalker_barmen condlist_0 = {+quest_vodka_done} complete
Открываем файл st_quests_zaton.xml и добавляем после <string_table>:
<string id="vodka_barmen_naiti_name"> <text>Найти водку для бармена</text> </string> <string id="vodka_barmen_prinesti_name"> <text>Принести водку бармену</text> </string> <string id="vodka_barmen_descr"> <text>Бармен в тестовых целях попросил найти и принести ему 2 бутылки водки</text> </string>
Сохраняем.
P.S.: в CoP инфопорции можно и не регистрировать, работать будет и так.