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 означает наличие пары сейчас; повторно открытое окно с той же парой не отличается от прежнего.