Директивы

Препроцессорные директивы - это специальные слова, которые указывают компилятору на необходимое поведение в процессе компиляции. Они начинаются с символа $ и заключены в фигурные скобки {}.

$INCLUDE

Подключает внешний текстовый файл к исходнику. Когда компилятор находит указанную директиву, он открывает файл по пути, переданному в качестве параметра директивы и продолжает компиляцию того кода, который записан во внешнем файле. Когда компилятор достигает конца данного файла, он возвращается обратно в предыдущий файл.

Синтаксис:

{$INCLUDE путь\к\файлу}
{$INCLUDE loadwav.txt}
{$INCLUDE C:\dev\getarrayindex.txt}

Если указан относительный путь, компилятор ищет файл в следующем порядке:

  1. папка, где находится файл, содержащий данную директиву

  2. папка data для текущего режима редактирования

  3. корневая папка Sanny Builder

  4. корневая папка игры

Если компилятор не может найти файл относительно ни одной из указанных папок это вызовет ошибку.

Вы можете использовать данную директиву неограниченное число раз. Вкладываемые файлы могут также содержать в себе данную директиву.

Короткая форма этой директивы $I.

$INCLUDE_ONCE

Действует как {$INCLUDE} с тем единственным отличием, что если файл уже был подключен, он не будет подключен еще раз, и директива будет проигнорирована.

$EXTERNAL

Заставляет скомпилировать файл как внешний скрипт. Получившийся файл будет без заголовка и с локальными метками как .scm файл из script.img. Использование данной директивы подразумевает, что в файле содержится только один скрипт или одна миссия.

Аналогом использования данной директивы является опция SKIP_SCM_HEADER. Данную опцию также можно переключить на главной панели инструментов.

Синтаксис:

{$EXTERNAL}

Короткая форма этой директивы $E.

$CLEO

Является аналогом директивы $E, однако полученный файл автоматически копируется в директорию игра\CLEO, и получает расширение, указанное в директиве.

Синтаксис:

{$CLEO <расширение файла>}

расширение файла - опциональный параметр, который определяет какое расширение получит скомпилированный файл. Начинается с .. По умолчанию равен .cs.

{$CLEO .cm} // файл получит расширение .cm
{$CLEO} // файл получит расширение по умолчанию .cs

Эта директива предназначена максимально упростить создание CLEO скриптов.

{$CLEO} включает в себя {$USE CLEO}

$NOSOURCE

Запрещает компилятору добавлять в конечный файл исходный код скрипта.

Если эта директива отсутствует, то при наличии директив $EXTERNAL или $CLEO и при включенной опции Добавлять доп. информацию в SCM, Sanny Builder добавит исходный код в конец файла для последующего использования при дизассемблировании.

Синтаксис:

{$NOSOURCE}

$OPCODE

Регистрирует новый опкод.

Обычно описания всех опкодов содержатся в специальном файле, по одному для каждой игры. Но иногда необходимо добавить новый опкод для использования в текущем скрипте. Директива $OPCODE делает это возможным без редактирования оригинального списка опкодов.

Синтаксис:

{$OPCODE <описание опкода>}

либо

{$OPCODE <путь к файлу с описанием>}

либо

{$OPCODE}

описание опкода - директива принимает описание опкода в том же формате, что и файл INI:

{$OPCODE 0CCC=1,my_new_opcode %1d%}

путь к файлу с описанием - директива также принимает путь к файлу в качестве параметра. Этот файл должен содержать в себе только описания опкодов, которые будут загружены компилятором. Если указан относительный путь, компилятор ищет файл по тем же правилам, что и в директиве $INCLUDE.

{$OPCODE additional_opcodes.ini}

Если директива использована без какого-либо параметра, это ведет к загрузке оригинального списка опкодов и отмене всех сделанных изменений.

{$OPCODE}

Короткая форма этой директивы $O.

$USE

Разрешает компилятору использовать дополнительный набор инструкций.

{$USE CLEO+}

Допускается перечисление нескольких имен, разделяемых запятыми.

{$USE ini, bitwise, CLEO+}

$VERSION

Эта директива не используется начиная с версии v3.1.0

Устанавливает какая версия опкодов будет использована во время компиляции.

Синтаксис:

{$VERSION x.y.zzzz}
  • y - порядок параметров

    • 0 - оригинальный, все параметры идут последовательно 0, 1, 2 и т.д.

    • 1 - модифицированный порядок, некоторые параметры переставлены

  • zzzz - номер ревизии

По умолчанию компилятор загружает версию <текущий режим>.1.0000

$VERSION_RESTORE

Эта директива не используется начиная с версии v3.1.0

Восстанавливает версию, которая использовалась до директивы $VERSION.

Синтаксис:

{$VERSION_RESTORE}

Last updated