Направления обмена#
| Направление | Вызов / условие |
|---|---|
| Lua → MD | AddUITriggeredEvent(screen, control, payload) |
| Приём в MD | event_ui_triggered и event.param3 |
| MD → Lua | raise_lua_event |
| Приём в Lua | RegisterEvent(name, callback) |
Имена должны совпадать точно. Зарегистрируйте получателя до отправки запроса, если ответ может прийти сразу.
Lua: подписка и запрос#
Учебный файл UI, уже подключённый через манифест:
local received = false
RegisterEvent("Wiki.Pong", function(_, payload)
received = payload == "pong"
end)
AddUITriggeredEvent("WikiBridge", "ping", "hello")Это минимальный пример формы вызова, не универсальный механизм готовности игрового мира. В настоящем моде отправка должна происходить в подтверждённый момент жизни UI и MD.
MD: обработка и ответ#
Фрагмент внутри cues вашего скрипта:
<cue name="Ping" instantiate="true" namespace="this">
<conditions>
<event_ui_triggered screen="'WikiBridge'" control="'ping'" />
</conditions>
<actions>
<do_if value="event.param3 == 'hello'">
<raise_lua_event name="'Wiki.Pong'" param="'pong'" />
</do_if>
</actions>
</cue>Когда это становится операцией#
Перед игровым эффектом проверяйте типы входных данных и существование объекта. Для кнопки, создающей объект или списывающей деньги, отдельно обработайте повторное нажатие. Показывайте успешный результат после фактического выполнения действия.
Если ответ содержит несколько частей, сначала соберите полный набор. Не заменяйте отображаемый список одной случайно пришедшей строкой.
См. собственное окно и справочник AddUITriggeredEvent.