Sanny Builder
На русском (не обновляется)
На русском (не обновляется)
  • Введение
  • Благодарности
  • История изменений
  • Синтаксис
    • Типы данных
    • Константы
    • Переменные
    • Массивы
    • Операторы
    • Условия
    • Циклы
    • Классы
    • Ключевые слова
    • Дополнительные команды
    • HEX..END
    • Директивы
    • Комментарии
  • Редактор
    • Возможности
    • Опции программы
      • Общие настройки
      • Форматирование
      • Редактор
      • Редактор тем оформления
      • Горячие клавиши
    • Консоль
    • Горячие клавиши
    • Поиск опкодов
    • Интерфейс командной строки
    • Языковая служба
  • Режимы редактирования
    • CustomLabels.ini
    • Enums.txt
    • Расширения
    • Список опкодов (SCM.INI)
    • Шаблоны кода
  • Документация по SCM
    • Скриптовые лимиты
    • GTA III
      • Иконки радара
      • Типы пешеходов
    • Vice City
      • Банды
      • Гаражи
      • Иконки радара
      • Интерьеры
      • Номера кнопок
      • Типы оружия
      • Типы пешеходов
    • San Andreas
      • Банды
      • Варианты изменения авто
      • Гаражи
      • Зоны
      • Интерьеры
      • Номера клавиш
      • Одежда
      • Оружие
      • Персонажи
      • Погода
      • Прически
      • Системы частиц
      • Статистика
      • Татуировки
      • Типы пешеходов
      • Типы поездов
      • Части тела игрока
    • Liberty City Stories
      • Банды
      • Модели
      • Одежда
      • Оружие
      • Персонажи
      • Погода
    • Vice City Stories
      • Банды
      • Одежда
      • Погода
  • Исправление проблем
    • Сообщения об ошибках
      • 0001: INI файл не найден
      • 0002: Неизвестный тип массива
      • 0003: Ошибка чтения script.img
      • 0004: Неизвестный тип параметра
      • 0005: Неправильный режим редактирования
      • 0006: Неверный заголовок файла
      • 0007: Файл не найден
      • 0008: Ошибка чтения списка опкодов
      • 0009: Список опкодов не найден
      • 0010: Неизвестный опкод
      • 0011: Неизвестный опкод
      • 0012: Переход за границы файла
      • 0013: Неизвестная команда
      • 0014: Неверное выражение
      • 0016: Скрипт не найден
      • 0017: Переменная не объявлена
      • 0018: Неверный размер массива
      • 0019: Неизвестный тип массива
      • 0020: Переменная не объявлена как массив
      • 0021: Неверное значение в имени переменной
      • 0022: Cчетчик итераций не является переменной
      • 0023: Неверный синтаксис
      • 0024: Ожидалось целочисленное значение
      • 0025: Неверный цикл
      • 0026: Неверное число с плавающей точкой
      • 0027: Слишком длинная строка
      • 0028: Незавершенная строка
      • 0029: Неверный ID отладочного скрипта
      • 0031: Неверное количество элементов
      • 0032: Неверное значение элемента в заголовке
      • 0033: Неверное имя локальной переменной
      • 0034: Локальная переменная вне допустимых границ
      • 0035: Ожидалось слово
      • 0036: Локальная переменная миссии вне допустимых границ
      • 0037: Отладочный скрипт не найден
      • 0038: Неизвестный тип массива
      • 0039: Неверное определение элемента
      • 0040: Имя или значение константы не определено
      • 0041: Неверный ID миссии
      • 0042: Дублирование имени внешнего скрипта
      • 0043: Неверный индекс массива
      • 0044: Неверное имя массива
      • 0045: Неверный синтаксис массива: пропущено имя переменной
      • 0046: Неверный синтаксис массива
      • 0047: Неверный размер массива
      • 0048: Ошибка чтения размера массива
      • 0049: Недостаточно параметров для опкода
      • 0050: Недостаточно параметров для команды
      • 0051: Ошибка записи заголовка script.img
      • 0052: Ошибка записи script.img
      • 0053: Рекурсивное подключение файла
      • 0054: Метка не найдена
      • 0055: Идентификатор не найден
      • 0056: Метка переобьявлена
      • 0057: Внутренная метка не найдена
      • 0058: Недопустимый параметр
      • 0059: Неверное определение опкода
      • 0060: Нет исходного файла
      • 0061: Пустой исходный файл
      • 0062: IDE файл не найден
      • 0063: Ожидалась метка миссии
      • 0064: Метка миссии не найдена
      • 0065: Метка внешнего скрипта не найдена
      • 0067: Недопустимый символ в имени внешнего скрипта
      • 0068: Неверный символ в идентификаторе
      • 0069: Неверный символ в имени объекта
      • 0071: Неверное число условий
      • 0072: Логический оператор пропущен
      • 0073: Лишний логический оператор
      • 0074: Опция отключена
      • 0075: Неверное 16-ричное значение
      • 0076: Ожидалось условие
      • 0079: Недопустимый параметр в команде Alloc
      • 0080: Ожидалось неотрицательное число
      • 0081: Слишком много параметров
      • 0082: Неверный синтаксис
      • 0083: Неизвестный ID модели
      • 0084: Переход на оффсет 0
      • 0086: Неверный индекс массива
      • 0087: Недопустимая переменная
      • 0088: Глобальная переменная вне допустимых границ
      • 0089: Опкод не найден
      • 0090: Константа переобъявлена
      • 0091: Недостаточно памяти для переменной
Powered by GitBook
On this page
  • $INCLUDE
  • $INCLUDE_ONCE
  • $EXTERNAL
  • $CLEO
  • $NOSOURCE
  • $OPCODE
  • $USE
  • $VERSION
  • $VERSION_RESTORE
  1. Синтаксис

Директивы

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

$INCLUDE

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

Синтаксис:

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

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

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

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

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

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

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

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

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

$INCLUDE_ONCE

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

$EXTERNAL

Синтаксис:

{$EXTERNAL}

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

$CLEO

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

Синтаксис:

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

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

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

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

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

$NOSOURCE

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

Синтаксис:

{$NOSOURCE}

$OPCODE

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

Синтаксис:

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

либо

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

либо

{$OPCODE}
{$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}
PreviousHEX..ENDNextКомментарии

Last updated 1 year ago

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

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

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

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

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

Разрешает компилятору использовать .

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

X- ID

специальном файле
дополнительный набор инструкций
опкодов
режима редактирования
опция
метками
опции
формате