Что означает «все известные»#

Каталог собирает известные обращения из авторского Lua runtime, MD и AI, opt-in лабораторных Lua/MD-скриптов, нативных исходников, а также явно названные API в docs/*.md и notes/*.md. Файлы, их хеши и количества записей сохраняются в отчёте покрытия.

Это полная инвентаризация указанной области чтения по правилам сборщика. Она не объявляется полным SDK X4, полным списком всех свойств движка или доказательством исполнения каждого вызова. Внутренние локальные функции алгоритмов и Python-методы не выдаются за API игры. Собственные публичные функции Lua-адаптеров и Lua API нашего C-модуля перечислены отдельно в сетевом направлении.

Три источника параметров#

Основание Что можно утверждать Чего оно не доказывает
C-прототип в авторском ffi.cdef или сигнатурные факты из UI своей X4 Порядок, C-типы, записанные имена и возвращаемый C-тип Наличие экспорта, безопасную ABI и владение указателем
XSD установленной X4 Имена атрибутов, схемные типы, required/optional и default Правильность выражения и реальный эффект
Lua/MD-отправитель и получатель Точные выражения аргументов, поля списка, форма callback, проверки Универсальную сигнатуру всех перегрузок и всех версий

Тип expression в XSD означает выражение MD, а не «строка» или «число» его результата. arg1 в наблюдаемом вызове нельзя переименовать в «корабль» без знания контракта. В каталоге явно указано, если формальное имя или тип не установлен.

Для C-функции отдельно перечислены известные объявления. Если они различаются, это видимые варианты, а не автоматически выбранная «правильная» сигнатура. Для MD/AI разные схемы тоже показываются отдельно.

Как найти конкретное событие#

В боковом меню раскрой тип API, затем подсистему или библиотеку и выбери имя. Например: «Библиотеки Lua → math → math.floor», «События MD / AI → Объекты → event_object_destroyed» или «UI → MD X4FO → Имена объектов → X4FO_ObjectNames / rename».

Каждая функция и каждое событие имеют собственную страницу с постоянным адресом, описанием, параметрами, примерами и источниками. Текущая запись выделяется в дереве, её категория и подсистема раскрываются автоматически. Состояние остальных групп запоминается в этом браузере.

Можно открыть поиск вики и ввести полное имя, например gameSaved, event_object_destroyed или X4FO.ObjectNameWire. Результат открывает страницу записи. Для X4FO выбери сетевое направление либо открой поиск уже из сетевой статьи. Старые ссылки с якорями каталогов перенаправляют на соответствующие страницы.

В карточке Lua-события есть известные подписчики, имена аргументов callback, отправители и варианты payload. В карточке UI → MD есть screen, control, пример event_ui_triggered, получатели и поля полезной нагрузки. Для MD-события показываются атрибуты и используемый cue/AI-контекст.

В слове «событие» скрываются три разных механизма:

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

Нельзя взять имя event_object_destroyed и подписать его через Lua RegisterEvent, ожидая автоматически тот же контракт.

Почему у некоторых записей нет второй стороны#

Событие может исходить от самой игры, от C++-провайдера, использоваться только лабораторией или быть оставшимся исследовательским маршрутом. Отсутствующий в просканированной области отправитель/получатель показан явно. Это не доказательство ошибки runtime и не разрешение придумать типы.

Если callback именованный и его определение не удалось разрешить, пример сохраняет .... Это осознанное отсутствие знания. Фактическое выражение регистрации и источник остаются доступны.

Имена, полученные из статических таблиц и циклов, раскрываются в конкретные записи. Общие обёртки, имена из внешних аргументов и другие неразрешённые выражения сохраняются отдельно. Поэтому «не удалось вычислить имя» не превращается в тихий пропуск.

Как читать примеры безопасно и с пользой#

Новая подписка — учебный шаблон без изменяющего действия. Не вставляй её на каждый кадр. Выбери момент готовности UI, зарегистрируй один раз на контекст, затем проверь payload. MD-фрагмент помещается в cues; ему нужен уникальный cue и подходящий жизненный цикл.

Фрагменты фактических вызовов используют переменные своего источника. Они показывают переданные значения, а не готовый самостоятельный мод. Самозакрывающийся XML-пример в карточке отображает атрибуты: если исходное действие имеет дочерние узлы, прочитай их в источнике перед переносом.

Длинные серии вызовов и все варианты атрибутов сохранены в JSON каталога. В читаемой карточке показаны представительные формы; для событий варианты payload перечислены отдельно. Номера строк относятся к текущей рабочей копии и обновляются со сборкой.

Обновление после изменения кода#

Из D:\X4FoundationsOnline\wiki:

POWERSHELL
npm.cmd ci --ignore-scripts --no-audit --no-fund
npm.cmd run build
npm.cmd run check

build разбирает Lua через AST, XML через XML-парсер, пересобирает индексы catalog-*.md, отдельные страницы api-*.md, JSON, дерево навигации и поисковые записи. check проверяет актуальность относительно исходников, ссылки/якоря, соответствие дерева страницам и сценарии самого сборщика. Установка зависимостей нужна при новом checkout или изменении lock-файла. Нативные параметры и пределы нашего моста разобраны в wiki/references/native-api.json по native/bridge.cpp; их нужно пересматривать при изменении интерфейса DLL.

Автоматически созданные индексы помечены generated: catalog-v2, страницы записей — generated: catalog-entry-v2. Не редактируй их вручную: пояснения к известным контрактам находятся в wiki/references/api-overrides.json, алгоритм — в wiki/scripts/catalog-*.mjs. Подсистемы и библиотеки задаются в wiki/scripts/catalog-navigation.mjs. Адрес записи зависит от её типа и имени; добавление другого вызова его не меняет. Ручные учебные статьи сохраняются отдельно.

После смены игры или добавления нового элемента схемные факты обновляются чтением своей установки из корня проекта:

POWERSHELL
python wiki/scripts/read-game-api.py --game 'C:\Program Files (x86)\Steam\steamapps\common\X4 Foundations'

Выбери свой рабочий Python и путь X4. Скрипт читает схемы и объявления UI из каталогов в памяти и сохраняет только факты об именах, типах, атрибутах и C-сигнатурах уже известных экспортов. Он не копирует оригинальные файлы игры, не запускает X4 и не меняет профили. Маркировку версии фактов нужно сверять при переходе на другую сборку.

Проверка и границы достоверности#

Все автоматически созданные записи имеют статус справочного материала. Даже полное совпадение реестра с исходниками не является игровой приёмкой. Утверждение «проверено в игре» остаётся за конкретным документированным сценарием, версией и независимым чтением результата.

Начать обычный справочник можно с индекса API X4. Собственные сетевые контракты находятся в явно отдельном индексе API X4FO.