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
  • Переменные
  • Метки
  • Строковые литералы
  • Строковые переменные
  • Имена моделей
  • Числа в 16-ричном формате
  1. Синтаксис

Типы данных

PreviousИстория измененийNextКонстанты

Last updated 1 year ago

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

Переменные

Если перед именем переменной (комбинация букв, цифр, и _) стоит знак $ - это .

0004: $MyVar = 100

Именем может быть только число, после которого стоит @. Это число является индексом в списке локальных переменных, для текущего скрипта или миссии.

0006: 100@ = 10

Переменная ADMA (Advanced Direct Memory Access, усовершенствованный доступ к памяти) - это указатель на определенный адрес внутри файла main.scm. Они используются так же как глобальные переменные, но в отличие от них ADMA могут читать и писать значения по любому адресу в пределах main.scm.

$myVar = &0 // прочитать первые 4 байта main.scm и записать значение в $myVar
&57 += &120(&231,4i) // также могут использоваться как элементы массива

ADMA переменные не влияют на размер буфера для глобальных переменных, выделенного в заголовке main.scm.

Метки

Метки указывают на определенную строку кода и используются в условных (опкод 004D) и безусловных переходах (опкоды 0002, 0050). Имя метки состоит из букв, цифр и _ и всегда начинается с :

:MyLabel

Чтобы использовать такую метку в опкоде замените : на @

0002: jump @MyLabel

Если имя метки написано как самостоятельное выражение с парой скобок в конце, это представляет собой вызов подпрограммы командой gosub:

// следующие выражения эквивалентны
MyLabel()
gosub @MyLabel

Строковые литералы

Текст, обрамленный одинарными кавычками ' ', - это короткий строковый литерал (до 15 символов).

03A4: script_name 'MAIN'

Текст, обрамленный двойными кавычками " ", - это длинный строковый литерал (максимальная длина определяется опкодом).

Если внутри литерала используется кавычка, она должна быть заэкранирована при помощи обратного слэша\

0662: write_debug_message "Hello, \"world\"! \n 'Here we go!'"

Допускается использование пустых строк '' или "".

Строковые переменные

Глобальные переменные, содержащие короткий строковый литерал, начинаются с s$.

05A9: s$MyString = 'GLOBAL'

Локальные переменные, содержащие короткий строковый литерал, заканчиваются на @s.

05AA: 1@s = 'LOCAL'

Глобальные переменные, содержащие длинный строковый литерал, начинаются с v$.

06D1: v$MyString = "LONG_GLOBAL"

Локальные переменные, содержащие длинный строковый литерал, заканчиваются на @v.

06D2: 1@v = "LONG_LOCAL"

Имена моделей

Вместо ID моделей из .ide файлов могут использоваться их имена, перед которыми стоит #

0247: request_model #CELLPHONE

Числа в 16-ричном формате

0x - число в шестнадцатиричном формате -0x - отрицательное число в шестнадцатиричном формате

0004: $var = -0xBB08

Разрешенный диапазон шестнадцатиричных чисел лежит между -80000000 и 7FFFFFFF.

выделенных
глобальная переменная
локальной переменной