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

UO.GumpExists

Оглавление · Алфавитный указатель · Gumps

ClassicUO • Runtime API

Проверяет наличие серверного гампа по одному селектору или точной паре serial/GumpID.

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

UO.GumpExists(id:Any) -> Integer
UO.GumpExists(firstId:Any, secondId:Any) -> Integer

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

Параметры

  • id — Одноаргументная форма: числовой serial, GumpID либо индекс с 0. -1 здесь не выбирает последний гамп.
  • firstId — Двухаргументная форма: числовой 32-битный serial, включая отрицательный Integer со старшим битом.
  • secondId — Двухаргументная форма: точный 32-битный GumpID. 0 — точное число, не wildcard. Только -1 переключает обратно на одноаргументную проверку firstId как serial/GumpID/индекса.

Возвращает

Integer — 1, если соответствующее окно существует сейчас; 0 иначе. Не возвращает индекс, serial или число совпадений.

Поведение

  • Работает с активными серверными гампами. Рюкзак, карта, настройки и другие локальные окна не входят в этот список. Один вызов читает данные в игровом потоке; разные вызовы могут увидеть разные состояния списка.
  • Проверка не выбирает окно и не резервирует его. Пара ID проверяется целиком; ID со старшим битом не отключает фильтр.

Примеры

Пример 1. Проверить известный ID

# Проверить известный ID
#
# Проверяет наличие серверного гампа по одному селектору или точной паре serial/GumpID.
#
# Integer — 1, если соответствующее окно существует сейчас; 0 иначе. Не возвращает индекс,
# serial или число совпадений.

SUB Main()
    # 0x87654321 — искомый GumpID либо serial. Один аргумент не различает эти пространства ID.

    VAR exists = UO.GumpExists(0x87654321)
    UO.Print(STR(exists))
END SUB

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

  • 0x87654321 — искомый GumpID либо serial. Один аргумент не различает эти пространства ID.

Пример 2. Проверить точную пару

# Проверить точную пару
#
# Проверяет наличие серверного гампа по одному селектору или точной паре serial/GumpID.
#
# Integer — 1, если соответствующее окно существует сейчас; 0 иначе. Не возвращает индекс,
# serial или число совпадений.

SUB Main()
    # Первое число — serial, второе — GumpID. Оба отрицательны в знаковом Integer, но сравнение
    # сохраняет все 32 бита.

    VAR exists = UO.GumpExists(0x87654321, 0x98765432)
    IF exists THEN
        UO.Print('Matching pair exists')
    END IF
END SUB

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

  • Первое число — serial, второе — GumpID. Оба отрицательны в знаковом Integer, но сравнение сохраняет все 32 бита.

Пример 3. Проверить сохранённые идентификаторы

# Проверить сохранённые идентификаторы
#
# Проверяет наличие серверного гампа по одному селектору или точной паре serial/GumpID.
#
# Integer — 1, если соответствующее окно существует сейчас; 0 иначе. Не возвращает индекс,
# serial или число совпадений.

SUB Main()
    # info[0]/info[1] принадлежат одному снимку. exists=1 означает наличие пары сейчас; повторно
    # открытое окно с той же парой не отличается от прежнего.

    VAR info = UO.GetGumpInfo(0)
    IF GetArrayLength(info) = 5 THEN
        VAR exists = UO.GumpExists(info[0], info[1])
        UO.Print(STR(exists))
    END IF
END SUB

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

  • info[0]/info[1] принадлежат одному снимку. exists=1 означает наличие пары сейчас; повторно открытое окно с той же парой не отличается от прежнего.