CLEO 3 позволяет добавлять новые скрипты без необходимости начала новой игры. Строго говоря. для них не имеет значения состояние вашего main.scm. CLEO-скрипты запускаются и функционируют отдельно от main.scm.
Что это дает? Вы можете в любой момент игры добавить новые скрипты, а также удалить имеющиеся. При этом вам не требуется редактировать main.scm, а значит пропадают проблемы с необходимостью начала новой игры, несовместимостью сейвов, скриптовыми лимитами и так далее.
CLEO-скрипт – это обычный скрипт, написанный с использованием опкодов в Sanny Builder. Каждый скрипт должен быть выполнен в виде отдельного файла с расширением .cs (Custom Script). Главное требование, которое предъявляется к написанию таких скриптов, это то, что они должны быть скомпилированы как внешние скрипты.
Существует несколько способов написания CLEO-скрипта, способного нормально работать в игре.
Во-первых, вы добавляете в исходник новый внешний скрипт, после этого компилируете, и извлекаете нужный файл из script.img. Этот файл будет иметь расширение .scm, и вам останется только изменить его на .cs и скопировать в папку ‘игра\CLEO’.
Второй способ гораздо проще. Создайте новый файл в Sanny Builder’е, напишите в начале директиву $E, после этого код скрипта и скомпилируйте. Полученный файл будет точно такой, как если бы вы извлекли его из script.img. Вам останется только дать ему нужное расширение .cs и скопировать в папку \CLEO.
CLEO-скрипты могут использоваться и как миссии. Процесс компиляции точно такой же, однако итоговый файл должен иметь расширение .cm (Custom Mission). Для того чтобы запустить такую миссию, используйте опкод 0A94.
Правила, которым вы обязаны следовать при использовании CLEO 3:
- Один файл – один поток. Каждый CLEO-скрипт должен быть выполнен в виде отдельного потока, который компилируется в отдельный файл. Если вам нужно создавать дополнительные потоки для вашего скрипта, используйте опкоды 004F или 0A92, в зависимости от того, где находится этот поток: в main.scm или отдельном cs-файле.
- Никогда не используйте опкод 004E в CLEO-скриптах. Они работают отдельно от обычных потоков, и использование этого опкода вызовет ошибку. Если вам нужно остановить CLEO-поток, используйте опкод 0A93. В CLEO-миссиях наоборот никогда не используйте опкод 0A93, а для остановки миссии используйте 004E.
Как уже говорилось, для установки скрипта достаточно скопировать его в папку ‘игра\CLEO’. Имя файла не имеет значения, работа с файлами происходит по расширению. Однако имя файла используется при инициализации CLEO-потока, чтобы дать ему внутреннее имя (name_thread) по названию файла (первые 7 символов). Например, CLEO-поток в файле showsavescreen будет иметь имя SHOWSAV.
Для удаления скрипта из игры просто удалите соответствующий файл.
Статус CLEO-потоков может сохраняться и загружаться вместе с обычными потоками. По умолчанию эти потоки не сохраняются. Сами сейвы находятся отдельно, в папке CLEO\cleo_saves. Для каждого слота используется отдельный сейв. В сейве сохраняются только те CLEO-потоки, для которых включен флаг сохранения (опкод 0A95). В сейве сохраняются не только активные потоки, но и те, которые были завершены (опкод 0A93), чтобы предотвратить их повторную загрузку. Если при последующей загрузке один из сохраненных скриптов не будет найден, ошибки не будет. Если вы добавите новый скрипт, которого нет в сейве, он запустится вместе со всеми и начнет работать с начала.
В целом CLEO-потоки такие же как и обычные потоки. У них также 32 локальных переменных и 2 таймера. При создании CLEO-потока или CLEO-миссии можно передавать в них до 34 параметров (по аналогии с опкодом 004F).
Важный момент, связанный с обменом данными между CLEO-скриптом и main.scm. Чтобы пользоваться кодом из майна, его переменными, потоками, вы должны компилировать CLEO-скрипт как внешний скрипт, а затем извлекать из script.img. Однако этот способ очень не рекомендован, поскольку такой скрипт становится весьма чувствительным к изменению main.scm. По смыслу, CLEO-скрипты должны быть самодостаточными и использовать минимум ресурсов главного скм-файла. Вы, однако, можете свободно использовать имена глобальных переменных из файла CustomVariables.ini (например, $PLAYER_CHAR, $PLAYER_ACTOR, $ONMISSION и т.д.).
Также для обмена данными между main.scm и CLEO, или между CLEO-скриптами вы можете использовать CLEO-переменные (см. опкоды 0AB3, 0AB4).
В комплект CLEO 3 включены примеры простых скриптов с исходниками.

