Структура скрипта#
MD хранит обработчики внутри mdscript → cues → cue. Действия находятся в actions. Cue без условий подходит для короткой инициализации.
<mdscript name="WikiExample">
<cues>
<cue name="Init">
<actions>
<set_value name="$Count" exact="0" />
</actions>
</cue>
</cues>
</mdscript>Это самостоятельная учебная заготовка. Переменная принадлежит контексту cue; подробнее — переменные и области видимости.
Обработчик события#
Для повторяющихся UI-событий используется следующий шаблон. Фрагмент размещается внутри cues:
<cue name="Read" instantiate="true" namespace="this">
<conditions>
<event_ui_triggered screen="'WikiExample'" control="'read'" />
</conditions>
<actions>
<set_value name="$Payload" exact="event.param3" />
<debug_text text="'Wiki read request received'" />
</actions>
</cue>instantiate="true" позволяет обрабатывать повторяющиеся события отдельными экземплярами. Не сохраняйте изменяемые данные разных запросов в общей переменной без явной причины.
Условие без события#
При check_value без события задайте режим проверки, например checkinterval или onfail, согласно контракту cue. В проекте отсутствие режима прошло XSD, но вызвало отказ парсера игры.
Не используйте return как универсальный выход из обычного cue: в нашем сценарии X4 9.00 это было отвергнуто движком. Для раннего ограничения действий использовались условные блоки; возврат результата оставался внутри соответствующей library.
Отладка#
Отделяйте три вопроса: загрузился ли файл, пришло ли событие, произошёл ли эффект. Одна строка в логе отвечает только на тот вопрос, для которого её поставили.