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
  • FOR..END
  • WHILE..END
  • REPEAT..UNTIL
  • Команды Continue и Break
  1. Синтаксис

Циклы

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

Last updated 5 years ago

Цикл - это конструкция, позволяющая выполнять последовательность команд неоднократно. Sanny Builder поддерживает несколько видов циклов: , , .

FOR..END

В цикле FOR количество повторений (итераций) определено заранее.

Синтаксис: FOR <имя переменной> = <начальное значение> TO/DOWNTO <конечное значение> [шаг = 1] <тело цикла> END

имя переменной - , которая используется для подсчета количества итераций (счетчик) начальное значение - значение счетчика перед первой итерацией (любое число, включая ) TO или DOWNTO - указывает на то, увеличивается или уменьшается значение счетчика после каждой итерации конечное значение - значение счетчика, при котором цикл завершается (любое число, включая ) шаг - необязательный параметр, который определяет на сколько изменяется значение счетчика после каждой итерации. По умолчанию равен 1 тело цикла - команды, которые выполняются при каждой итерации цикла; тело цикла может отсутствовать

var
    $value: int = 0
    $final: int = 100
end

FOR $MyCounter = 1 to $final step 2
    $value += $mycounter
end

Если тип счетчика не был ранее, счетчик приобретает тип Integer. Если начальное значение, конечное значение или шаг цикла указаны в виде переменных, эти переменные будут автоматически объявлены с тем же типом, который есть у переменной цикла.

Для использования дробных чисел для счетчика итераций, счетчик должен иметь тип Float.

var
    $MyCounter: float
end

FOR $MyCounter = 1.0 to $final step 2.0

end

// переменные $MyCounter и $final имеют тип Float

WHILE..END

Синтаксис: WHILE <условие цикла> <тело цикла> END

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

while not #AK47.Available
    wait 0
end

Цикл WHILE работает до тех пор, пока условие цикла истинно. Условие цикла проверяется до первой итерации цикла. Поэтому если условие изначально ложно, цикл не отработает ни разу.

$var = 10

while $var > 11
    inc($var)
end

// условие цикла ложно, поэтому команда inc($var) никогда не выполнится
while true
    <тело цикла>
end

Такой цикл будет выполняться бесконечно, пока в теле не выполнится командаBreak.

while false
    <the loop body>
end

Такой цикл игнорируется компилятором, т.к. условие изначально ложно.

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

while true
    if and
       $var >= 0
       $var <= 100
    then
       Break
    end

    // цикл выполняется, пока значение переменной $var 
    // находится в интервале [0...100]    
    <тело цикла>
end

REPEAT..UNTIL

Синтаксис: REPEAT <тело цикла> UNTIL <условие цикла>

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

Цикл REPEAT..UNTIL работает, пока условие цикла не будет истинно. Условие проверяется в конце итерации цикла, поэтому данный цикл будет иметь минимум одну итерацию.

Константы True и False могут быть использованы в качестве условия цикла.

repeat
  // цикл с одной итерацией
until true 
repeat
  // цикл работает бесконечно, пока не остановлен командой Break
until false

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

repeat  
    <тело цикла>
    if and
       $var >= 0
       $var <= 100
    then
       Break
    end
  // цикл выполняется, пока значение переменной $var 
  // находится в интервале [0...100]  
until false

Команды Continue и Break

Если необходимо пропустить текущую итерацию цикла и перейти к следующей, используйте команду Continue.

Команда Break завершает цикл и передает управление на команду, следующую за завершающим end.

Обе эти команды могут быть использованы как параметр в опкоде (например, jf Continue) или как отдельная команда.

while true
  if
    not $actor.dead
  jf Break // завершить цикл

  if
    $actor.dead
  then
    Continue // перейти на следующую итерацию
  end
end

True и False могут использоваться в качестве условия цикла.

Константы
переменная
for
while
repeat
объявлен
имя модели
имя модели