-
Notifications
You must be signed in to change notification settings - Fork 87
Dialogs ru RU
- Force reload режим, будет вызывать
init_func
при каждом открытии окна диалога. Позволяет перестраивать граф целиком. Работает только если cinit_func
(и соответственно нетуphrase_list
) в xml:
XML: force_reload="1"
LUA: dlg.SetForceReload(true)
- Для фраз установка текста через скрипты:
XML: <script_text>dialog_manager.create_bye_phrase</script_text>
LUA: phrase_script:SetScriptText("travel_manager.squad_action_description")
Параметры такие же, как для action\predicate
.
- Новые скриптовые методы для построения диалогов через
init_func
:
dlg.SetPriority(123) -- изменить приоритет диалога
dlg.SetCaption("test") -- изменить заголовок
dlg.SetForceReload(false) -- изменить флаг force_reload (перестать обновлять диалог после какого то уловия)
dlg.GetPhrase("PhraseId") -- получить фразу по id
dlg.GetPhraseScript() -- доступ к CPhraseScript самого диалога. (работают только методы AddPrecondition/AddHasInfo/AddDontHasInfo)
phrase.GetText() -- получить текст фразы
phrase.SetText(str) -- изменить текст фразы
- Поддержка передачи аргументов в функции, вызываемые из диалогов, например:
<precondition>my_script.test_func(123, true, nil, ...)</precondition>
<action>my_script.test_func(123, true, nil, ...)</action>
Если указать в конце переменное кол-во аргументов ...
, то туда будут переданы стандартные аргументы, типа pSpeakerGO1->lua_game_object(), pSpeakerGO2->lua_game_object(), dialog_id, phrase_id
.
-
Каждой фразе назначается акселлратор от 1 до 0. Т.е. если нажать соотв. кнопку - будет выбрана соответствующая фраза. Что бы эти номера показывались перед фразами, нужно включить опцию
show_dialog_numbers
в секцииfeatures
, т.к. для этого требуется дополнительный статик"num_text"
вtalk.xml
, как в ЗП. Вот рабочий пример:
<question_item x="0" y="0" width="527" height="20" min_height="13">
<num_text x="0" y="0" width="8" height="20">
<text font="letterica18" r="255" g="232" b="208" align="l" />
</num_text>
<content_text x="15" y="0" width="512" height="20">
<text font="letterica18" r="255" g="232" b="208" align="l" complex_mode="1"/>
<text_color>
<t r="231" g="168" b="12"/> <e r="255" g="232" b="208"/> <h r="255" g="255" b="255"/>
</text_color>
</content_text>
</question_item>
-
Добавил скриптовым кнопкам метод
SetAccelerator( dik, idx )
Позволяет из скрипта назначить кнопке клавишу, при нажатии которой она должна сработать. Тоже самое, что и атрибут"accel"
в xml конфиге.
Выданные задания сохраняются в сейве и сохраняются полностью: текст, поршни, функции и т.д. Поэтому, изменение соотв. <game_task/>
на уже выданное задание не повлияет. Для того, что бы повлияло, я добавил два аттрибута. Это version
и objectives_version
. По умолчанию оба равны 0. При увеличении version
, например
<game_task id="shax_plennik" prio="0" version="1">
</game_task>
параметры задания из сейва будут проигнорированы, за исключением времени выдачи и т.п, а так же состояний <objective/>
. Т.е. те подзадания, которые уже были выполнены, так и остануться выполненными. Если дополнительно к version
увеличить objectives_version
, например
<game_task id="shax_plennik" prio="0" version="1" objectives_version="1">
</game_task>
то сохраненное состояние подзаданий использоваться не будет. Такое имеет смысл делать в том случае, если в конфиге меняется кол-во подзаданий или их смысл.
Обращаю внимание. Это не флаги. Это номера версий и они должны монотонно увеличиваться.
- Для xml тасков добавились :
infoportion_skipped
,infoportion_set_skipped
,function_skipped
,function_call_skipped
. - Для xml ui тасков добавились цвет
task_sub_item:description:text_colors:skiped
и текстураui_icons_PDA_subtask_skiped
. - Для скриптов добавились методы для класса SGameTaskObjective:
add_skipped_info
,add_on_skipped_info
,add_skipped_func
,add_on_skipped_func
и новый ETaskState:skipped
.
Для добавления вкладки с отменёнными заданиями в PDA добавьте новую кнопку в pda_events.xml
.
Пример:
<button x="155" y="0" width="50" height="18"hint="pda_btn_skipped_hint">
<text align="c" x="0" y="0" font="letterica18" r="255" g="255" b="255" complex_mode="0">pda_btn_skipped</text>
<text_color>
<t r="231" g="168" b="12"/> <d r="181" g="170" b="148"/> <e r="127" g="127" b="127"/> <h r="255" g="255" b="255"/>
</text_color>
</button>