Что получится#

Небольшое расширение hello_x4, которое пишет сообщение в журнал. Для первого шага достаточно XML и Mission Director.

Создайте папки#

Рабочая структура расширения относительно папки extensions:

TEXT
hello_x4/
├── content.xml
└── md/
    └── HelloX4.xml

Не добавляйте лишний уровень hello_x4/hello_x4. Игра должна найти content.xml непосредственно в корне расширения. Выберите одну установку и один тестовый профиль; не держите несколько копий расширения с одинаковым ID.

Опишите расширение#

Файл content.xml:

XML
<?xml version="1.0" encoding="utf-8"?>
<content id="hello_x4" name="Hello X4" version="100"
         author="Your name" enabled="1" save="1"
         description="A minimal Mission Director example.">
  <dependency version="900" />
</content>

Замените автора и используйте собственный уникальный id. Зависимость здесь соответствует базовой версии 9.00, с которой работает эта вики. Добавляйте сторонние зависимости только тогда, когда действительно используете их API.

Добавьте игровой код#

Файл md/HelloX4.xml:

XML
<?xml version="1.0" encoding="utf-8"?>
<mdscript name="HelloX4">
  <cues>
    <cue name="Hello">
      <actions>
        <debug_text text="'Hello, X4!'" />
      </actions>
    </cue>
  </cues>
</mdscript>

mdscript и cue - имена элементов XML. HelloX4 и Hello - ваши идентификаторы. Кавычки внутри text нужны потому, что атрибут содержит MD-выражение со строковым литералом.

Проверьте запуск#

  1. Включите расширение в игре и перезапустите X4, если игра этого требует.
  2. Используйте тестовое сохранение или новую игру.
  3. Включите журнал: параметры и чтение лога.
  4. Найдите Hello, X4! и проверьте отсутствие ошибок импорта этого MD-файла.

Уже выполненный cue сохраняет своё состояние. Загрузка старого сейва не обязана повторять сообщение - это не доказательство, что файл не загрузился. Подробнее: сохранения и миграции.

Следующий шаг#

Разберите жизненный цикл cue, затем переходите к событиям Lua ↔ MD. Для изменения существующих данных игры начните с XML diff-патчей.