Что такое library#
library задаёт шаблон cue; экземпляр создаёт ссылающийся cue ref. Это не Lua-функция. Обязательный параметр не имеет default; у пользователя библиотеки param размещается без оболочки params.
Полный самостоятельный пример#
<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, переменные.