API UO ClearClassMask - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki

UO.ClearClassMask

UO API · Все команды

Удаляет одно пользовательское правило экипировки либо все правила текущего скриптового runtime. Полезно перед перенастройкой наборов или отключением временного приоритета.

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

UO.ClearClassMask() -> Integer
UO.ClearClassMask(name:Any) -> Integer

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

Параметры

  • name — Необязательное имя, переданное SetClassMask. Регистр не важен. Без аргументов удаляются все правила этого runtime. Это не строка приоритетов: "mage|tank" здесь недопустимо; удаляйте по одному или вызовите без аргументов.

Возвращает

Integer — количество удалённых правил. С именем 1 означает удалено, 0 — такого правила не было. Без аргументов возвращается 0..N, не логический флаг. Поэтому общий результат сравнивайте с > 0, а не с true.

Поведение

  • Не отменяет уже отправленную атаку и не останавливает скрипт. Не изменяет экипировку персонажей.
  • После удаления имя остаётся неизвестным для следующего AttackNearest. Удалите его также из classMask или зарегистрируйте снова; неизвестное имя блокирует весь выбор.
  • Чужие runtime и их правила не затрагиваются. Для обычного поиска без классов используйте classMask=-1, а не пустой набор обязательной одежды.

Внутренние функции: последовательность выполнения

Ниже описана реализация этого движка. Имена внутренних методов не являются дополнительными командами BASIC.

1. ClearClassMask

Удаляет запись или очищает словарь этого runtime под блокировкой.

Возвращает количество удалённых записей.

Исходник проекта: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.ClassMasks.cs; функция ClearClassMask.

Снимок правил уже выполняющегося выбора остаётся неизменным; следующий вызов увидит новый набор.

Примеры

Пример 1. Удалить временный класс и использовать оставшийся

SUB Main()
    UO.SetClassMask("временный", 0x13B2)
    UO.SetClassMask("основной", 0x1415)
    UO.ClearClassMask("временный")
    # В строке больше нет удалённого имени.
    VAR enemy = UO.AttackNearest(5, 10, -1, 8, true, -1, "основной", true, true)
    IF enemy <> 0 THEN
        UO.AddObject("main_enemy", enemy)
    END IF
END SUB

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

  • Удаление не переключает оружие и не завершает бой. Оно меняет только дальнейшую классификацию.

Пример 2. Пересоздать все правила для другой задачи

SUB Main()
    # Удаляем прежние правила только этого runtime, затем создаём новые.
    UO.SetClassMask("старый_набор", 0x13B2)
    VAR removed = UO.ClearClassMask()
    UO.SetClassMask("новый_набор", 0x0F50)
    VAR enemy = UO.AttackNearest(5, 8, -1, 4, true, -1, "новый_набор", true, true)
    IF enemy <> 0 THEN
        UO.AddObject("new_enemy", enemy)
    END IF
END SUB

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

  • removed — число удалённых правил. Новый набор создаётся в том же runtime, без перезапуска клиента.

Пример 3. Сбросить правила и перейти к обычной ближайшей цели

SUB Main()
    # Сброс не отменяет старую атаку; он влияет на дальнейший выбор.
    UO.SetClassMask("по_одежде", 0x13C4)
    UO.ClearClassMask()
    VAR classes = -1 # Явно отключаем фильтр одежды.
    VAR enemy = UO.AttackNearest(5, 5, -1, 4, true, -1, classes, true, true)
    IF enemy <> 0 THEN
        UO.AddObject("enemy_without_classes", enemy)
    END IF
END SUB

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

  • Не передавайте удалённое имя: результат был бы 0. -1 отключает только одежду; остальные фильтры продолжают работать.