Область справочника#

Каталог описывает известные публичные интерфейсы моддинга 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 нельзя преобразовывать с потерей точности. Подробнее: типы и методы, идентификаторы, cdata.

События и подписки#

Механизм Как используется
Lua-событие RegisterEvent с точным именем и callback в подходящем UI-контексте
UI в MD event_ui_triggered в conditions нужного cue
Событие движка MD Соответствующее условие event_* с собственными фильтрами

Это разные маршруты. Имя MD-события нельзя автоматически перенести в RegisterEvent. Подписку регистрируют один раз на контекст; типы и число аргументов проверяют для конкретного отправителя. Учебный мост Lua / MD показывает самостоятельный пример.

Примеры и проверка#

Учебным фрагментам нужны указанные контекст, переменные и жизненный цикл. Они не объявляются исполненными в игре без описанного опыта. У неполных контрактов ограничения указаны явно; для неизвестного вызова нельзя угадывать безопасный размер буфера или форму payload.

Начни с индекса API. Для дополнения приложи версию игры, первичный публичный источник и небольшой самостоятельный пример через предложения.