--- title: Обмен событиями Lua ↔ MD summary: Полный путь запроса от интерфейса к Mission Director и ответа обратно в Lua. section: ui kind: example status: example tags: ["lua","md","events","AddUITriggeredEvent","RegisterEvent","raise_lua_event"] sources: ["https://wiki.egosoft.com/X4%20Foundations%20Wiki/Modding%20Support/"] --- ## Направления обмена | Направление | Вызов / условие | | --- | --- | | Lua → MD | `AddUITriggeredEvent(screen, control, payload)` | | Приём в MD | `event_ui_triggered` и `event.param3` | | MD → Lua | `raise_lua_event` | | Приём в Lua | `RegisterEvent(name, callback)` | Имена должны совпадать точно. Зарегистрируйте получателя до отправки запроса, если ответ может прийти сразу. ## Lua: подписка и запрос Учебный файл UI, уже подключённый через манифест: ```lua local received = false RegisterEvent("Wiki.Pong", function(_, payload) received = payload == "pong" end) AddUITriggeredEvent("WikiBridge", "ping", "hello") ``` Это минимальный пример формы вызова, не универсальный механизм готовности игрового мира. В настоящем моде отправка должна происходить в подтверждённый момент жизни UI и MD. ## MD: обработка и ответ Фрагмент внутри `cues` вашего скрипта: ```xml ``` ## Когда это становится операцией Перед игровым эффектом проверяйте типы входных данных и существование объекта. Для кнопки, создающей объект или списывающей деньги, отдельно обработайте повторное нажатие. Показывайте успешный результат после фактического выполнения действия. Если ответ содержит несколько частей, сначала соберите полный набор. Не заменяйте отображаемый список одной случайно пришедшей строкой. См. [собственное окно](wiki:create-ui) и справочник [AddUITriggeredEvent](wiki:add-ui-triggered-event).