Жизненный цикл скрипта

Файл с кодом JavaScript должен иметь расширение *.js и содержать известные инструкции, как описано ниже. Скрипт может не иметь инструкций (пустой скрипт). Он запускается, как только начинается новая игра или загружается файл сохранения.

Скрипт завершается автоматически после выполнения последней инструкции. Среда выполнения также завершает зависшие сценарии, чтобы игра не зависала. Застрявший скрипт — это тот, которому потребовалось более 2 секунд для запуска с момента последней команды ожидания. Если это произошло, проверьте свои циклы, в некоторых из них отсутствует команда ожидания.

while (true) {
  // бессмысленный бесконечный цикл, обычно зависающий в игре
  // будет завершено через две секунды
}

Среда выполнения завершит этот скрипт. Чтобы этого избежать, добавьте команду ожидания

while (true) {
  wait(250);
  // все равно бессмысленно, но не зависает в игре
}

Организация сценариев

Один самодостаточный файл скрипта можно поместить прямо в директорию CLEO.

Начиная с версии 0.9.3 сложные скрипты, имеющие множество зависимостей (импортированные файлы, словари FXT), могут быть организованы в папки. CLEO Redux сканирует подкаталоги каталога CLEO и проверяет, есть ли файл с именем index.js. Если index.js найден, CLEO Redux запускает его. Он также загружает все файлы FXT из того же каталога.

Давайте посмотрим на структуру примера:

CLEO/
├─ CLEO_TEXT/
│  ├─ main.fxt
├─ папка A/
│  ├─ text.fxt
│  ├─ index.js
├─ папка B/
│  ├─ test.fxt
│  ├─ test.js
├─ script1.js
├─ script2.cs

По умолчанию CLEO Redux загружает все файлы CS и JS из корня каталога CLEO и файлы FXT из папки CLEO_TEX. Таким образом, он загружает script1.js, script2.cs и main.fxt.

После сканирования подкаталогов CLEO загружает index.js и text.fxt, находящиеся в папке A, и пропускает папку B, так как файла index.js нет.

CLEO_TEXT, CLEO_PLUGINS и .config не считаются каталогами скриптов.