API BasicMod - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
BasicMod
Оглавление · Алфавитный указатель · BASIC built-ins
ClassicUO • Runtime API
Вычисляет остаток целочисленного деления. В BASIC также используется оператор Mod.
Точный синтаксис
BasicMod(numerator:Integer, denominator:Integer) -> Integer
Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.
Параметры
numerator— Знаковое целое int32 — делимое.denominator— Знаковое целое int32 — делитель. Ноль вызывает ошибку BASIC Mod cannot divide by zero.
Возвращает
Integer — остаток. Знак ненулевого остатка совпадает со знаком делимого. Делитель -1 даёт 0, включая минимальный int32.
Поведение
- Вычисляется локально, без ожидания ответа сервера.
- Decimal в этом языке хранится как double: возможна погрешность двоичной арифметики. Это не десятичный финансовый тип .NET decimal.
Примеры
Пример 1. Остаток от деления
# Остаток от деления
#
# Вычисляет остаток целочисленного деления. В BASIC также используется оператор Mod.
#
# Integer — остаток. Знак ненулевого остатка совпадает со знаком делимого. Делитель -1 даёт 0,
# включая минимальный int32.
SUB Main()
# numerator=17, denominator=5: 17=3*5+2.
# Ожидаемый результат: 2. value сохраняет возвращённое значение; Print только выводит его.
VAR value = BasicMod(17, 5)
UO.Print(STR(value))
END SUB
Разбор параметров и выполнения:
- numerator=17, denominator=5: 17=3*5+2.
- Ожидаемый результат: 2. value сохраняет возвращённое значение; Print только выводит его.
Пример 2. Отрицательное делимое
# Отрицательное делимое
#
# Вычисляет остаток целочисленного деления. В BASIC также используется оператор Mod.
#
# Integer — остаток. Знак ненулевого остатка совпадает со знаком делимого. Делитель -1 даёт 0,
# включая минимальный int32.
SUB Main()
# numerator=-17, denominator=5. Это остаток, а не всегда положительный modulo.
# Ожидаемый результат: -2. value сохраняет возвращённое значение; Print только выводит его.
VAR value = BasicMod(-17, 5)
UO.Print(STR(value))
END SUB
Разбор параметров и выполнения:
- numerator=-17, denominator=5. Это остаток, а не всегда положительный modulo.
- Ожидаемый результат: -2. value сохраняет возвращённое значение; Print только выводит его.
Пример 3. Выполнять действие раз в пять циклов
# Выполнять действие раз в пять циклов
#
# Вычисляет остаток целочисленного деления. В BASIC также используется оператор Mod.
#
# Integer — остаток. Знак ненулевого остатка совпадает со знаком делимого. Делитель -1 даёт 0,
# включая минимальный int32.
SUB Main()
# numerator=i — номер итерации, denominator=5 — период.
# Сообщения появляются при i=5 и i=10. Цикл конечный и ничего не перемещает в игре.
VAR i = 0
FOR i = 1 TO 10
IF BasicMod(i, 5) = 0 THEN
UO.Print('Checkpoint: ' + STR(i))
END IF
NEXT
END SUB
Разбор параметров и выполнения:
- numerator=i — номер итерации, denominator=5 — период.
- Сообщения появляются при i=5 и i=10. Цикл конечный и ничего не перемещает в игре.