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
  • Присваивание
  • Сравнение
  • Побитовые операции
  • FPS-независимое сложение и вычитание
  • Конвертация типов
  1. Синтаксис

Операторы

PreviousМассивыNextУсловия

Last updated 1 year ago

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

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

Большинство поддерживаемых операций в Sanny Builder используют лишь два операнда: один слева от оператора (LHS), и один - справа (RHS).

Присваивание

  • LHS = RHS - операция присваивания. RHS - число, переменная или строка. В присваивании LHS всегда является переменной.

  • LHS += RHS - операция сложения с присваиванием. LHS и RHS должны быть одного типа, целого или дробного. Значение LHS увеличивается на соответствующее значение RHS.

  • LHS -= RHS - операция вычитания с присваиванием

  • LHS *= RHS - операция умножения с присваиванием

  • LHS /= RHS - операция деления с присваиванием

Нижеперечисленные операции требуют CLEO ({$USE CLEO} или {$CLEO}).

  • LHS = value1 + value2 - сложить два целых числа и записать результат в LHS

  • LHS = value1 - value2 - вычесть одно целое число из другого и записать результат в LHS

  • LHS = value1 * value2 - перемножить два целых числа и записать результат в LHS

  • LHS = value1 / value2 - разделить одно целое число на другое и записать результат в LHS

Сравнение

  • LHS == RHS - операция "равно". Стороны должны иметь одинаковое значение, чтобы результат был истиной (true).

  • LHS > RHS - операция "больше чем"

  • LHS >= RHS - операция "больше либо равно"

  • LHS < RHS - операция "меньше чем"

  • LHS <= RHS - операция "меньше либо равно"

  • LHS <> RHS - операция "не равно". Стороны должны иметь разные значения, чтобы результат был истиной (true).

Побитовые операции

Операция
Опкод
Пример

AND

0B10

0@ = 1@ & 2@

OR

0B11

0@ = 1@ | 2@

XOR

0B12

0@ = 1@ ^ 2@

NOT

0B13

0@ = ~1@

MOD

0B14

0@ = 1@ % 2@

Shift Right

0B15

0@ = 1@ >> 2@

Shift Left

0B16

0@ = 1@ << 2@

AND (с присваиванием)

0B17

0@ &= 1@

OR (с присваиванием)

0B18

0@ |= 1@

XOR (с присваиванием)

0B19

0@ ^= 1@

NOT (унарный)

0B1A

~0@

MOD (с присваиванием)

0B1B

0@ %= 1@

Shift Right (с присваиванием)

0B1C

0@ >>= 1@

Shift Left (с присваиванием)

0B1D

0@ <<= 1@

FPS-независимое сложение и вычитание

Команда
Опкод
Пример

ADD_TIMED_VAL_TO_FLOAT_VAR

0078

$var +=@ 5.0

ADD_TIMED_VAL_TO_FLOAT_LVAR

0079

0@ +=@ 5.0

ADD_TIMED_FLOAT_VAR_TO_FLOAT_VAR

007A

$var1 +=@ $var2

ADD_TIMED_FLOAT_LVAR_TO_FLOAT_LVAR

007B

0@ +=@ 1@

ADD_TIMED_FLOAT_VAR_TO_FLOAT_LVAR

007C

0@ +=@ $var

ADD_TIMED_FLOAT_LVAR_TO_FLOAT_VAR

007D

$var +=@ 1@

SUB_TIMED_VAL_FROM_FLOAT_VAR

007E

$var -=@ 5.0

SUB_TIMED_VAL_FROM_FLOAT_LVAR

007F

0@ -=@ 5.0

SUB_TIMED_FLOAT_VAR_FROM_FLOAT_VAR

0080

$var1 -=@ $var2

SUB_TIMED_FLOAT_LVAR_FROM_FLOAT_LVAR

0081

0@ -=@ 1@

SUB_TIMED_FLOAT_VAR_FROM_FLOAT_LVAR

0082

0@ -=@ $var

SUB_TIMED_FLOAT_LVAR_FROM_FLOAT_VAR

0083

$var -=@ 1@

Конвертация типов

Некоторые значения могут быть сконвертированы в другой тип. Игра поддерживает перевод между типами Integer и Float.

Команда
Опкод
Пример

CSET_VAR_INT_TO_VAR_FLOAT

008C

$i =# $f

CSET_VAR_FLOAT_TO_VAR_INT

008D

$f =# $i

CSET_LVAR_INT_TO_VAR_FLOAT

008E

0@ =# $f

CSET_LVAR_FLOAT_TO_VAR_INT

008F

1@ =# $i

CSET_VAR_INT_TO_LVAR_FLOAT

0090

$i =# 1@

CSET_VAR_FLOAT_TO_LVAR_INT

0091

$f =# 0@

CSET_LVAR_INT_TO_LVAR_FLOAT

0092

0@ =# 1@

CSET_LVAR_FLOAT_TO_LVAR_INT

0093

1@ =# 0@

В языке нет отдельного типа Boolean. Результат каждого сравнения имеет значение только в пределах текущего .

Игра не поддерживает побитовые операции, поэтому для их использования нужен особый . Кроме того, в исходном коде при помощи директивы {$USE bitwise} должно быть подключено соответствующее .

Игра поддерживает операции сложения и вычитания, которые не зависят от FPS. Прочитайте на GTAMods.com чтобы узнать больше.

Использование оператора =# требует, чтобы тип обеих переменных был заранее.

условного выражения
плагин CLEO
расширение
статью
расширения
объявления типа
объявлен