-
Notifications
You must be signed in to change notification settings - Fork 0
API UO SendGumpSelect
Codex edited this page Sep 19, 2026
·
5 revisions
Оглавление · Алфавитный указатель · Gumps
ClassicUO • Runtime API
Отправляет ButtonID для выбранного серверного гампа.
UO.SendGumpSelect(triggerId:Integer) -> Integer
UO.SendGumpSelect(triggerId:String) -> Integer
UO.SendGumpSelect(gumpIndex:Any, triggerId:Any) -> Integer
UO.SendGumpSelect(serial:Any, gumpId:Any, triggerId:Any) -> Integer
UO.SendGumpSelect(serial:Any, gumpId:Any, triggerId:Any, timeout:Any) -> Integer
Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.
-
triggerId— Integer или числовая строка — серверный ButtonID. 0 обычно означает закрытие/отказ, но точное действие определяет сервер. Наличие видимого ButtonID в дереве не требуется. -
gumpIndex— Обязательный Integer — индекс активного серверного гампа, от 0 до GetGumpsCount()-1. Это не GumpID/serial. Отрицательное число и индекс вне списка недействительны. Открытие, закрытие и изменение порядка окон могут изменить индекс; перед действием проверяйте GetGumpID/GetGumpSerial. Используется только в двухаргументной форме (gumpIndex, triggerId). -
serial— В формах из 3/4 аргументов — числовой 32-битный serial. 0 или -1 отключают фильтр serial; остальные числа, включая отрицательные со старшим битом, сравниваются точно. -
gumpId— В формах из 3/4 аргументов — числовой 32-битный GumpID. 0 или -1 отключают фильтр GumpID. Hex-строки разрешены; имена AddObject здесь не разрешаются. -
timeout— Необязательный четвёртый аргумент, Integer миллисекунд ожидания подходящей пары ID. По умолчанию 0 — одна немедленная попытка; отрицательное ограничивается 0. Интервал повторной проверки 20 мс.
Integer — 1, если найден живой серверный гамп и выполнен вызов ответа; 0, если окно не найдено до истечения ожидания. Не возвращает выбранный ID и не ждёт подтверждения результата сервером.
- Работает с активными серверными гампами. Рюкзак, карта, настройки и другие локальные окна не входят в этот список. Один вызов читает данные в игровом потоке; разные вызовы могут увидеть разные состояния списка.
- Один аргумент выбирает ранее выбранный этим скриптом гамп; если он закрыт/не выбран — последний элемент текущего списка. Два аргумента задают строгий индекс. Три/четыре — пару ID с фильтрами.
- Выбор и вызов ответа происходят в одном запросе игрового потока. Ожидание отменяется остановкой процедуры. Не путайте прямой серверный ответ со сменой страницы: для кнопки SwitchPage нужен NumGumpButton.
# Ответить выбранному окну
#
# Отправляет ButtonID для выбранного серверного гампа.
#
# Integer — 1, если найден живой серверный гамп и выполнен вызов ответа; 0, если окно не найдено
# до истечения ожидания. Не возвращает выбранный ID и не ждёт подтверждения результата сервером.
SUB Main()
# SelectGump выбирает тип/serial 0x12345678 либо сообщает об отсутствии; 100 — ButtonID.
# Если выбранного окна уже нет, одноаргументная форма использует последнее доступное окно. Для
# строгой идентичности применяйте форму с двумя ID.
UO.SelectGump(0x12345678)
VAR sent = UO.SendGumpSelect(100)
UO.Print(STR(sent))
END SUBРазбор параметров и выполнения:
- SelectGump выбирает тип/serial 0x12345678 либо сообщает об отсутствии; 100 — ButtonID.
- Если выбранного окна уже нет, одноаргументная форма использует последнее доступное окно. Для строгой идентичности применяйте форму с двумя ID.
# Ответить первому элементу списка
#
# Отправляет ButtonID для выбранного серверного гампа.
#
# Integer — 1, если найден живой серверный гамп и выполнен вызов ответа; 0, если окно не найдено
# до истечения ожидания. Не возвращает выбранный ID и не ждёт подтверждения результата сервером.
SUB Main()
# 0 — индекс, 100 — ButtonID. Это не serial=0 и не GumpID=100.
VAR sent = UO.SendGumpSelect(0, 100)
IF sent = 0 THEN
UO.Print('No gump at index zero')
END IF
END SUBРазбор параметров и выполнения:
- 0 — индекс, 100 — ButtonID. Это не serial=0 и не GumpID=100.
# Ответить именно окну из снимка
#
# Отправляет ButtonID для выбранного серверного гампа.
#
# Integer — 1, если найден живой серверный гамп и выполнен вызов ответа; 0, если окно не найдено
# до истечения ожидания. Не возвращает выбранный ID и не ждёт подтверждения результата сервером.
SUB Main()
# info[0] — serial, info[1] — GumpID, 100 — ButtonID. Изменение индекса не перенаправит ответ
# другому типу/владельцу.
# Serial/GumpID со значениями 0/-1 являются фильтрами без ограничения; одинаковые пары не
# различают повторно открытые экземпляры.
VAR info = UO.GetGumpInfo(0)
IF GetArrayLength(info) = 5 THEN
VAR sent = UO.SendGumpSelect(info[0], info[1], 100)
END IF
END SUBРазбор параметров и выполнения:
- info[0] — serial, info[1] — GumpID, 100 — ButtonID. Изменение индекса не перенаправит ответ другому типу/владельцу.
- Serial/GumpID со значениями 0/-1 являются фильтрами без ограничения; одинаковые пары не различают повторно открытые экземпляры.
# Ожидать конкретный тип
#
# Отправляет ButtonID для выбранного серверного гампа.
#
# Integer — 1, если найден живой серверный гамп и выполнен вызов ответа; 0, если окно не найдено
# до истечения ожидания. Не возвращает выбранный ID и не ждёт подтверждения результата сервером.
SUB Main()
# 0 отключает фильтр serial; 0x87654321 — точный ID со старшим битом; 100 — кнопка; 2000 —
# максимум ожидания в мс. Не используется как безусловный wildcard.
VAR sent = UO.SendGumpSelect(0, 0x87654321, 100, 2000)
UO.Print(STR(sent))
END SUBРазбор параметров и выполнения:
- 0 отключает фильтр serial; 0x87654321 — точный ID со старшим битом; 100 — кнопка; 2000 — максимум ожидания в мс. Не используется как безусловный wildcard.
ClassicUO - Bad Newbie & Basic IDE Edition