Что такое library#

library задаёт шаблон cue; экземпляр создаёт ссылающийся cue ref. Это не Lua-функция. Обязательный параметр не имеет default; у пользователя библиотеки param размещается без оболочки params.

Полный самостоятельный пример#

XML
<mdscript name="WikiLibraryDemo">
  <cues>
    <library name="DescribeAmount">
      <params>
        <param name="Amount" />
        <param name="Offset" default="1" />
      </params>
      <actions>
        <set_value name="$Result" exact="$Amount + $Offset" />
        <debug_text text="$Result" />
      </actions>
    </library>
    <cue name="Small" ref="DescribeAmount">
      <param name="Amount" value="4" />
    </cue>
    <cue name="Large" ref="DescribeAmount">
      <param name="Amount" value="10" />
      <param name="Offset" value="2" />
    </cue>
  </cues>
</mdscript>

Что произойдёт#

В новом состоянии скрипта Small вычисляет 5, Large - 12. debug_text отправляет значения в диагностический журнал при включённом выводе скриптов. Порядок двух сообщений не обещается. Пример отдельно в игре не выполнялся.

Проверьте упражнение: поменяйте только вход Amount у Small. Его ожидаемый результат должен измениться без правки шаблона или параметров Large.

Область видимости#

Параметры становятся переменными $Amount и $Offset при включении cue. Для библиотеки другого скрипта используется квалифицированный ref="md.ScriptName.LibraryName". Не добавляйте атрибуты поведения к ссылающемуся cue в расчёте переопределить ими шаблон: кроме имени, поведение берётся из library.

Обновление уже включённого cue требует проверки сохранения. Общий guide Egosoft применим к XR и X4 по устройству MD, но набор действий сверяется с X4. Далее: cues, переменные.