Skip to content

API BasicXor

Codex edited this page Sep 19, 2026 · 5 revisions

BasicXor

Оглавление · Алфавитный указатель · BASIC built-ins

ClassicUO • Runtime API

Логическое исключающее ИЛИ двух числовых условий. Это не побитовый XOR масок.

Точный синтаксис

BasicXor(left:Any, right:Any) -> Integer

Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.

Параметры

  • left — Число Integer/Decimal или числовая строка с точкой и необязательной экспонентой, например "-1.25e2". Преобразование не зависит от языка интерфейса. Нераспознанная строка, Unit, Array и Object преобразуются в 0. Для пользовательского ввода сначала проверяйте IsNumeric.
  • right — Число Integer/Decimal или числовая строка с точкой и необязательной экспонентой, например "-1.25e2". Преобразование не зависит от языка интерфейса. Нераспознанная строка, Unit, Array и Object преобразуются в 0. Для пользовательского ввода сначала проверяйте IsNumeric.

Возвращает

Integer 1, когда ровно один из двух преобразованных аргументов ненулевой. В остальных случаях 0. BasicXor(2,4)=0: оба аргумента истинны, побитового результата 6 здесь нет.

Поведение

  • Вычисляется локально, без ожидания ответа сервера.
  • Decimal в этом языке хранится как double: возможна погрешность двоичной арифметики. Это не десятичный финансовый тип .NET decimal.

Примеры

Пример 1. Одно истинное условие

# Одно истинное условие
#
# Логическое исключающее ИЛИ двух числовых условий. Это не побитовый XOR масок.
#
# Integer 1, когда ровно один из двух преобразованных аргументов ненулевой. В остальных случаях
# 0. BasicXor(2,4)=0: оба аргумента истинны, побитового результата 6 здесь нет.

SUB Main()
    # left=1 истинно, right=0 ложно.
    # Ожидаемый результат: 1. value сохраняет возвращённое значение; Print только выводит его.

    VAR value = BasicXor(1, 0)
    UO.Print(STR(value))
END SUB

Разбор параметров и выполнения:

  • left=1 истинно, right=0 ложно.
  • Ожидаемый результат: 1. value сохраняет возвращённое значение; Print только выводит его.

Пример 2. Два ненулевых числа

# Два ненулевых числа
#
# Логическое исключающее ИЛИ двух числовых условий. Это не побитовый XOR масок.
#
# Integer 1, когда ровно один из двух преобразованных аргументов ненулевой. В остальных случаях
# 0. BasicXor(2,4)=0: оба аргумента истинны, побитового результата 6 здесь нет.

SUB Main()
    # Оба значения считаются истинными.
    # Ожидаемый результат: 0. value сохраняет возвращённое значение; Print только выводит его.

    VAR value = BasicXor(2, 4)
    UO.Print(STR(value))
END SUB

Разбор параметров и выполнения:

  • Оба значения считаются истинными.
  • Ожидаемый результат: 0. value сохраняет возвращённое значение; Print только выводит его.

Пример 3. Разрешить ровно один режим

# Разрешить ровно один режим
#
# Логическое исключающее ИЛИ двух числовых условий. Это не побитовый XOR масок.
#
# Integer 1, когда ровно один из двух преобразованных аргументов ненулевой. В остальных случаях
# 0. BasicXor(2,4)=0: оба аргумента истинны, побитового результата 6 здесь нет.

SUB Main()
    # left=buyMode и right=sellModeфлаги скрипта.
    # Оба 0 или оба ненулевые попадают в ELSE; функция не запускает покупку или продажу.

    VAR buyMode = 1
    VAR sellMode = 0
    IF BasicXor(buyMode, sellMode) THEN
        UO.Print('Exactly one mode enabled')
    ELSE
        UO.Print('Choose one mode')
    END IF
END SUB

Разбор параметров и выполнения:

  • left=buyMode и right=sellMode — флаги скрипта.
  • Оба 0 или оба ненулевые попадают в ELSE; функция не запускает покупку или продажу.

Clone this wiki locally