--- title: Как читать каталог вызовов и событий summary: Типы параметров, результаты, способы подписки и границы достоверности справочника. section: reference kind: guide status: reference updated: 2026-10-26 tags: ["каталог","API","события","подписки","параметры","типы"] sources: ["https://wiki.egosoft.com/X4%20Foundations%20Wiki/Modding%20Support/","https://www.lua.org/manual/5.1/manual.html","https://luajit.org/ext_ffi_semantics.html"] --- ## Область справочника Каталог описывает известные публичные интерфейсы моддинга X4. Наличие имени не означает полный контракт или проверку каждого вызова в игре. Файлы модов, внутренние документы и полные исходники не распространяются. ## Откуда берутся типы | Основание | Что устанавливает | Что ещё нужно проверить | | --- | --- | --- | | C-объявление | Порядок и C-типы параметров, возвращаемый C-тип | Экспорт, ABI, контекст, владение и срок жизни памяти | | XSD X4 | Имена атрибутов, типы выражений, обязательность | Тип вычисленного значения, payload события и игровой эффект | | Lua 5.1 / LuaJIT | Контракты стандартных функций | Наличие функции и расширения текущего окружения X4 | | Документация конкретного события | Аргументы callback и смысл полей | Версию, момент регистрации и срок жизни объектов | expression в XSD обозначает выражение MD, а не тип его результата. Параметры фильтра не объявляют тип event.param. Игнорирование результата не доказывает none, void или nil. ## Как читать результат Lua может вернуть несколько значений. Запятая разделяет позиции, вертикальная черта обозначает варианты типа. unknown означает отсутствие установленного контракта; any означает зависимость от контекста. none и void обозначают отсутствие прямого результата, но допускают побочные эффекты и выходные буферы. C-тип не всегда совпадает с Lua-представлением. Указатель является cdata; C-строка превращается в Lua string через ffi.string при установленном сроке жизни памяти. ID нельзя преобразовывать с потерей точности. Подробнее: [типы и методы](wiki:types), [идентификаторы](wiki:type-ids), [cdata](wiki:type-cdata). ## События и подписки | Механизм | Как используется | | --- | --- | | Lua-событие | RegisterEvent с точным именем и callback в подходящем UI-контексте | | UI в MD | event_ui_triggered в conditions нужного cue | | Событие движка MD | Соответствующее условие event_* с собственными фильтрами | Это разные маршруты. Имя MD-события нельзя автоматически перенести в RegisterEvent. Подписку регистрируют один раз на контекст; типы и число аргументов проверяют для конкретного отправителя. [Учебный мост Lua / MD](wiki:md-lua-bridge) показывает самостоятельный пример. ## Примеры и проверка Учебным фрагментам нужны указанные контекст, переменные и жизненный цикл. Они не объявляются исполненными в игре без описанного опыта. У неполных контрактов ограничения указаны явно; для неизвестного вызова нельзя угадывать безопасный размер буфера или форму payload. Начни с [индекса API](wiki:api-index). Для дополнения приложи версию игры, первичный публичный источник и небольшой самостоятельный пример через [предложения](wiki:contributing).