Pls help в ковырянии FPS 1.2.1(ТЧ)

Релизы, ссылки и обсуждения

Re: Pls help в ковырянии FPS 1.2.1(ТЧ)

Сообщение XiaNi » 03 апр 2014, 09:59

примерно так:
[Показать] Спойлер:
<dialog id="agr_commander_clear_und">
<phrase_list>
<phrase id="0">
<text>agr_commander_clear_und_0</text> <!---Задания есть?---->
<next>1</next> <!-- есть -->
<next>2</next> <!-- уже взял -->
</phrase>
<phrase id="1">
<dont_has_info>eliminate_lager_agr_u_bandits_quest_have</dont_has_info>
<text>agr_commander_clear_und_1</text> <!---Для опытного бойца задачи всегда есть. В подземных коммуникациях под комплексом замечены мутанты и неучтеные лица. Надо оказать помощь моему отделению, которое занимается зачисткой--->
<next>11</next>
<next>12</next>
</phrase>
<phrase id="11">
<text>agr_commander_clear_und_11</text> <!---Есть оказать помощь. Выдвигаюсь--->
<!-– квест выдается дальше вместе с боекомплектом -->
<next>111</next>
</phrase>
<phrase id="12">
<text>agr_commander_clear_und_12</text> <!---Не, это вы без меня----->
</phrase>
<phrase id="111">
<text>agr_commander_clear_und_111</text><!--- Возьми боекомплект (4 пачки 5,45х39, 1 РГД-5, 1 Ф1, 1 армейская аптечка) ---->
<give_info>eliminate_lager_agr_u_bandits_quest_have</give_info> <!-- выдача задания -->
<action>dialogs.military_give_arsenal_type1</action><!-- выдача предметов скриптом, нужно самому написать в dialogs.script -->
</phrase>
<phrase id="2">
<has_info>eliminate_lager_agr_u_bandits_quest_have</has_info>
<text>agr_commander_clear_und_2</text> <!-- пока заданий нет -->
</phrase>
</phrase_list>
</dialog>


а в инфопоршни добавить
<info_portion id="eliminate_lager_agr_u_bandits_quest_have">
<task>eliminate_lager_agr_u_bandits_quest</task>
</info_portion>
Um... has anyone seen a floating sarcastic skull around here?
Аватара пользователя
XiaNi
shaman
 
Сообщения: 1710
Зарегистрирован: 01 сен 2008, 18:37

Re: Pls help в ковырянии FPS 1.2.1(ТЧ)

Сообщение Ghazhsh » 03 апр 2014, 10:21

спасибо, сейчас попробую привинтить, и потом диалог буду делать на сдачу задания
Ghazhsh
 
Сообщения: 13
Зарегистрирован: 14 сен 2012, 10:41

Re: Pls help в ковырянии FPS 1.2.1(ТЧ)

Сообщение XiaNi » 03 апр 2014, 10:47

сдачу можно там же делать, разветвив "немного" диалог
[Показать] Спойлер:
<dialog id="agr_commander_clear_und">
<phrase_list>
<phrase id="0"><!-- ГГ -->
<dont_has_info>eliminate_lager_agr_u_bandits_quest_reported</dont_has_info><!-- если уже сдали задание, не показывать диалог -->
<text />
<next>start1</next> <!-- нет задания -->
<next>start2</next> <!-- есть задание, готов отчитаться -->
<next>start3</next> <!-- есть задание, еще не сделал -->
</phrase>
<phrase id="start1"><!-- НПЦ -->
<text />
<dont_has_info>eliminate_lager_agr_u_bandits_quest_have</dont_has_info><!-- не получал задания -->
<next>pre1</next>
</phrase>
<phrase id="start2"><!-- НПЦ -->
<text />
<has_info>eliminate_lager_agr_u_bandits_quest_have</has_info><!-- получил задание -->
<has_info>eliminate_lager_agr_u_bandits_quest_complete</has_info><!-- выполнил задание -->
<next>pre2</next>
</phrase>
<phrase id="start3"><!-- НПЦ -->
<text />
<has_info>eliminate_lager_agr_u_bandits_quest_have</has_info><!-- получил задание -->
<dont_has_info>eliminate_lager_agr_u_bandits_quest_complete</dont_has_info><!-- еще не выполнил задание -->
<next>pre3</next>
</phrase>
<phrase id="pre1"><!-- ГГ -->
<text>agr_commander_clear_und_0</text> <!---Задания есть?---->
<next>1</next>
</phrase>
<phrase id="pre2"><!-- ГГ -->
<text>agr_commander_clear_und_2</text> <!-- отчитываюсь о выполнении задачи -->
<next>2</next>
</phrase>
<phrase id="pre3"><!-- ГГ -->
<text>agr_commander_clear_und_3</text> <!-- повторите инструктаж по заданию -->
<next>3</next>
</phrase>
<phrase id="1">
<text>agr_commander_clear_und_1</text> <!---Для опытного бойца задачи всегда есть. В подземных коммуникациях под комплексом замечены мутанты и неучтеные лица. Надо оказать помощь моему отделению, которое занимается зачисткой--->
<next>11</next>
<next>12</next>
</phrase>
<phrase id="11">
<text>agr_commander_clear_und_11</text> <!---Есть оказать помощь. Выдвигаюсь--->
<!-– квест выдается дальше вместе с боекомплектом -->
<next>111</next>
</phrase>
<phrase id="12">
<text>agr_commander_clear_und_12</text> <!---Не, это вы без меня----->
</phrase>
<phrase id="111">
<text>agr_commander_clear_und_111</text><!--- Возьми боекомплект (4 пачки 5,45х39, 1 РГД-5, 1 Ф1, 1 армейская аптечка) ---->
<give_info>eliminate_lager_agr_u_bandits_quest_have</give_info> <!-- выдача задания -->
<action>dialogs.military_give_arsenal_type1</action><!-- выдача предметов скриптом, нужно самому написать в dialogs.script -->
</phrase>
<phrase id="2">
<text>agr_commander_clear_und_2</text> <!-- вот тебе медаль! отлично, свободен -->
<give_info>eliminate_lager_agr_u_bandits_quest_reported</give_info> <!-- выдачать инфо о том что отчитался -->
<action>dialogs.transfer_medkit</action> <!-- выдать медаль -->
</phrase>
<phrase id="3">
<text>agr_commander_clear_und_3</text> <!-- В подземных коммуникациях под комплексом замечены мутанты и неучтеные лица. Надо оказать помощь моему отделению, которое занимается зачисткой. Беги уже давай!!! -->
</phrase>
</phrase_list>
</dialog>


так получается нужно сделать три инфопоршня
eliminate_lager_agr_u_bandits_quest_have - задание
eliminate_lager_agr_u_bandits_quest_complete - цель задания выполнена, не отчитались (задание какбы не завершено)
eliminate_lager_agr_u_bandits_quest_reported - завершили от отчитались
Um... has anyone seen a floating sarcastic skull around here?
Аватара пользователя
XiaNi
shaman
 
Сообщения: 1710
Зарегистрирован: 01 сен 2008, 18:37

Re: Pls help в ковырянии FPS 1.2.1(ТЧ)

Сообщение Ghazhsh » 03 апр 2014, 15:08

По первому варианту:
диалог рабочий, но для выдачи квесета пришлось прописать задание в tasks_agroprom.xml
[Показать] Спойлер:
<game_task id="eliminate_lager_agr_u_bandits_quest">
<title>Зачистить подземные сооружения НИИ Агропром</title>
<objective>
<text>Зачистить подземные сооружения НИИ Агропром</text>
<icon>ui_iconsTotal_grouping</icon>
<infoportion_complete>eliminate_lager_agr_u_bandits_quest</infoportion_complete>
</objective>
<objective>
<text>Доложить о выполнении</text>
<object_story_id>agr_soldier_commander2</object_story_id>
</objective>
</game_task>

Вышло судя по всему криво, т.к. в ПДА отображается только вторая часть задания, по уничтожении бандюков квест не засчитывает, по разговору с НПС тоже нет. Примеров на уничтожение лагеря в .xml файлах не нашел.

По второму варианту:
Окончание диалога немного переделал.
[Показать] Спойлер:
<text>agr_commander_clear_und_111</text><!--- Возьми боекомплект (4 пачки 5,45х39, 1 РГД-5, 1 Ф1, 1 армейская аптечка) ---->
<give_info>eliminate_lager_agr_u_bandits_quest_have</give_info> <!-- выдача задания -->
<action>dialogs.give_arsenal_to clear_agr_u </action><!-- выдача предметов скриптом, нужно самому написать в dialogs.script -->
</phrase>
<phrase id="2">
<text>agr_commander_clear_und_4</text> <!-- вот тебе медаль! отлично, свободен -->
<give_info>eliminate_lager_agr_u_bandits_quest_reported</give_info> <!-- выдачать инфо о том что отчитался -->
<action>dialogs.give_arsenal_after clear_agr_u</action> <!-- выдать медаль -->
</phrase>
<phrase id="3">
<text>agr_commander_clear_und_5</text> <!-- В подземных коммуникациях под комплексом замечены мутанты и неучтеные лица. Надо оказать помощь моему отделению, которое занимается зачисткой. Беги уже давай!!! -->
</phrase>
</phrase_list>
</dialog>
</game_dialogs>


Функции в dialogs.script прописал следующим образом:
[Показать] Спойлер:
function give_arsenal_to clear_agr_u (agr_soldier_commander2, actor)
dialogs.relocate_item_section(agr_soldier_commander2, "ammo_5.45x39_fmj", "in")
dialogs.relocate_item_section(agr_soldier_commander2, "ammo_5.45x39_fmj", "in")
dialogs.relocate_item_section(agr_soldier_commander2, "ammo_5.45x39_fmj", "in")
dialogs.relocate_item_section(agr_soldier_commander2, "ammo_5.45x39_fmj", "in")
dialogs.relocate_item_section(agr_soldier_commander2, "grenade_rgd5", "in")
dialogs.relocate_item_section(agr_soldier_commander2, "grenade_f1", "in")
dialogs.relocate_item_section(agr_soldier_commander2, "medkit_army", "in")
end

function give_arsenal_after clear_agr_u (agr_soldier_commander2, actor)
dialogs.relocate_item_section(agr_soldier_commander2, "ammo_5.45x39_fmj", "in")
dialogs.relocate_item_section(agr_soldier_commander2, "ammo_5.45x39_fmj", "in")
dialogs.relocate_item_section(agr_soldier_commander2, "grenade_f1", "in")
dialogs.relocate_item_section(agr_soldier_commander2, "medkit_army", "in")
end

<action>dialogs.transfer_medkit</action> не стал использовать, т.к. судя по содержанию файла - это передача аптечки от ГГ к НПС.

В инфопоршнях мало что понятно, думаю что написал их криво:
[Показать] Спойлер:
<info_portion id="eliminate_lager_agr_u_bandits_quest_have"> <!--- получение задания -->
<task>eliminate_lager_agr_u_bandits_quest</task>
</info_portion>

<info_portion id="eliminate_lager_agr_u_bandits_quest_complete"> <!--- цель задания выполнена, но не отчитались -->
<task>eliminate_lager_agr_u_bandits_quest_done</task>
</info_portion>

<info_portion id="eliminate_lager_agr_u_bandits_quest_reported"> <!--- задание выполнено, отчитались -->
<disable>eliminate_lager_agr_u_bandits_quest_have</disable>
</info_portion>


В итоге безлоговый вылет при попытке разговора с НПС. Попробовал закомментировать задание, которое под спойлером - ничего не изменилось.
Ghazhsh
 
Сообщения: 13
Зарегистрирован: 14 сен 2012, 10:41

Re: Pls help в ковырянии FPS 1.2.1(ТЧ)

Сообщение XiaNi » 04 апр 2014, 09:46

выполнение задачи нужно проверять функцией
[Показать] Спойлер:
<game_task id="eliminate_lager_agr_u_bandits_quest">
<title>Зачистить подземные сооружения НИИ Агропром</title>
<objective>
<text>Зачистить подземные сооружения НИИ Агропром</text>
<icon>ui_iconsTotal_grouping</icon>
<function_complete>agroprom_tasks.eliminate_lager_agr_u_bandits_complete</function_complete>
<infoportion_set_complete>eliminate_lager_agr_u_bandits_quest_complete</infoportion_set_complete>

</objective>
<objective>
<text>Доложить о выполнении</text>
<object_story_id>agr_soldier_commander2</object_story_id>
</objective>
</game_task>


[Показать] Спойлер:
function eliminate_lager_agr_u_bandits_complete()
return (xr_gulag.getGulagPopulation("agr_u_bandits") < 1)
end


dialogs.transfer_medkit это для примера было
проверь что у тебя тут нет пробела в конце <action>dialogs.give_arsenal_to clear_agr_u </action>
может это и не важно, но лучше убрать

в инфопоршнях
[Показать] Спойлер:
<info_portion id="eliminate_lager_agr_u_bandits_quest_have"> <!--- получение задания -->
<task>eliminate_lager_agr_u_bandits_quest</task>
</info_portion>

<info_portion id="eliminate_lager_agr_u_bandits_quest_complete"></info_portion><!--- цель задания выполнена, но не отчитались -->
<info_portion id="eliminate_lager_agr_u_bandits_quest_reported"></info_portion><!--- задание выполнено, отчитались -->
<!--- тут не нужно отменять информацию о том что задача была выдана -->
Um... has anyone seen a floating sarcastic skull around here?
Аватара пользователя
XiaNi
shaman
 
Сообщения: 1710
Зарегистрирован: 01 сен 2008, 18:37

Re: Pls help в ковырянии FPS 1.2.1(ТЧ)

Сообщение Ghazhsh » 05 апр 2014, 10:23

вылет. сначала был безлоговый, потом я внес изменения в _g.scrıpt, чтобы весь лог писался в консоль, начало выдавать следующее:
[Показать] Спойлер:
Expression : ai().script_engine().functor(start_game_callback,functor)
Function : CALifeSimulator::CALifeSimulator
File : E:\stalker\patch_1_0004\xr_3da\xrGame\alife_simulator.cpp
Line : 64
Description : failed to get start game callback

Вот эта функция
[Показать] Спойлер:
function start_game_callback()
printf ("start_game_callback called")
task_manager.clear_task_manager()
treasure_manager.clear_treasure_manager()
xr_sound.clear_all_sound_object()
dialog_manager.fill_phrase_table()

Если я правильно понял, она как бы очищает таск менеджер, т.е. в игровом интерфейсе раздел текущих заданий в КПК.

Подумал, может в диалоге не хватает <precondition> на наличие врагов в лагере перед взятием задания? Можно ли сделать предусловие в таком виде (синяя строчка под спойлером), и нужно ли добавлять предусловие как в типовых квестах (зеленая строка)
[Показать] Спойлер:
<dialog id="agr_commander_clear_und">
<phrase_list>
<phrase id="0"><!-- ГГ -->
<dont_has_info>eliminate_lager_agr_u_bandits_quest_reported</dont_has_info><!-- если уже сдали задание, не показывать диалог -->
<text>Есть задания</text>
<next>start1</next> <!-- нет задания -->
<next>start2</next> <!-- есть задание, готов отчитаться -->
<next>start3</next> <!-- есть задание, еще не сделал -->
</phrase>
<phrase id="start1"><!-- НПЦ -->
<text>Есть как раз для опытного бойца</text>
<precondition>xr_gulag.getGulagPopulation("agr_u_bandits")>1</precondition>
<precondition>task_manager.has_active_vendor_task</precondition>
<precondition>dialogs.is_opp_not_wounded</precondition>
<dont_has_info>eliminate_lager_agr_u_bandits_quest_have</dont_has_info><!-- не получал задания -->
<next>pre1</next>
</phrase>
<phrase id="start2"><!-- НПЦ -->
<text>Докладывай результаты</text>
<has_info>eliminate_lager_agr_u_bandits_quest_have</has_info><!-- получил задание -->
<has_info>eliminate_lager_agr_u_bandits_quest_complete</has_info><!-- выполнил задание -->
<next>pre2</next>
</phrase>
<phrase id="start3"><!-- НПЦ -->
<text>Какие проблемы?</text>
<has_info>eliminate_lager_agr_u_bandits_quest_have</has_info><!-- получил задание -->
<dont_has_info>eliminate_lager_agr_u_bandits_quest_complete</dont_has_info><!-- еще не выполнил задание -->
<next>pre3</next>
</phrase>
Ghazhsh
 
Сообщения: 13
Зарегистрирован: 14 сен 2012, 10:41

Пред.

Вернуться в Моды (Mods)

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7

cron