API UO NumGumpButton - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
UO.NumGumpButton
Оглавление · Алфавитный указатель · Gumps
ClassicUO • Runtime API
Активирует существующую кнопку серверного гампа по строгому индексу окна и точному ButtonID.
Точный синтаксис
UO.NumGumpButton(GumpIndex:Any, Value:Any) -> Integer
Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.
Параметры
GumpIndex— Обязательный Integer — индекс активного серверного гампа, от 0 до GetGumpsCount()-1. Это не GumpID/serial. Отрицательное число и индекс вне списка недействительны. Открытие, закрытие и изменение порядка окон могут изменить индекс; перед действием проверяйте GetGumpID/GetGumpSerial.Value— Integer — ButtonID из описания обычной кнопки. Не номер строки, не graphic кнопки, не GumpID.
Возвращает
Integer (Boolean) — 1, если окно и кнопка найдены и локальное действие выполнено; 0, если нет окна/кнопки. Смена страницы тоже возвращает 1. Это не подтверждение обработки сервером.
Это логический результат: 1 = TRUE, 0 = FALSE. После VAR result = команда(...) можно писать IF result = TRUE THEN или IF result = 1 THEN; для отрицательного результата — IF result = FALSE THEN или IF result = 0 THEN. TRUE/FALSE пишутся без кавычек. Вызовите команду один раз и сохраните результат: повторный вызов может повторить действие или прочитать уже изменившееся состояние.
Поведение
- Работает с активными серверными гампами. Рюкзак, карта, настройки и другие локальные окна не входят в этот список. Один вызов читает данные в игровом потоке; разные вызовы могут увидеть разные состояния списка.
- Кнопка SwitchPage переключает страницу локально. Кнопка Activate вызывает ответ гампа; окно обычно закрывается. В отличие от SendGumpSelect, эта команда требует существующий ButtonID в дереве контролов.
Примеры
Пример 1. Нажать известную кнопку
# Нажать известную кнопку
#
# Активирует существующую кнопку серверного гампа по строгому индексу окна и точному ButtonID.
#
# Integer (Boolean) — 1, если окно и кнопка найдены и локальное действие выполнено; 0, если нет
# окна/кнопки. Смена страницы тоже возвращает 1. Это не подтверждение обработки сервером.
#
# Это логический результат: 1 = TRUE, 0 = FALSE. После VAR result = команда(...) можно писать IF
# result = TRUE THEN или IF result = 1 THEN; для отрицательного результата — IF result = FALSE
# THEN или IF result = 0 THEN. TRUE/FALSE пишутся без кавычек. Вызовите команду один раз и
# сохраните результат: повторный вызов может повторить действие или прочитать уже изменившееся
# состояние.
SUB Main()
# 0 — индекс окна, 77 — пример ButtonID из инспектора. Для вашей формы нужен её реальный ID.
VAR ok = UO.NumGumpButton(0, 77)
IF ok = 0 THEN
UO.Print('Button not found')
END IF
END SUB
Разбор параметров и выполнения:
- 0 — индекс окна, 77 — пример ButtonID из инспектора. Для вашей формы нужен её реальный ID.
Пример 2. Сначала проверить тип окна
# Сначала проверить тип окна
#
# Активирует существующую кнопку серверного гампа по строгому индексу окна и точному ButtonID.
#
# Integer (Boolean) — 1, если окно и кнопка найдены и локальное действие выполнено; 0, если нет
# окна/кнопки. Смена страницы тоже возвращает 1. Это не подтверждение обработки сервером.
#
# Это логический результат: 1 = TRUE, 0 = FALSE. После VAR result = команда(...) можно писать IF
# result = TRUE THEN или IF result = 1 THEN; для отрицательного результата — IF result = FALSE
# THEN или IF result = 0 THEN. TRUE/FALSE пишутся без кавычек. Вызовите команду один раз и
# сохраните результат: повторный вызов может повторить действие или прочитать уже изменившееся
# состояние.
SUB Main()
# 0x12345678 — ожидаемый GumpID, 100 — ButtonID. Эти два числа относятся к разным пространствам
# ID.
IF UO.GetGumpID(0) = 0x12345678 THEN
VAR ok = UO.NumGumpButton(0, 100)
END IF
END SUB
Разбор параметров и выполнения:
- 0x12345678 — ожидаемый GumpID, 100 — ButtonID. Эти два числа относятся к разным пространствам ID.
Пример 3. Изменить флажок перед кнопкой
# Изменить флажок перед кнопкой
#
# Активирует существующую кнопку серверного гампа по строгому индексу окна и точному ButtonID.
#
# Integer (Boolean) — 1, если окно и кнопка найдены и локальное действие выполнено; 0, если нет
# окна/кнопки. Смена страницы тоже возвращает 1. Это не подтверждение обработки сервером.
#
# Это логический результат: 1 = TRUE, 0 = FALSE. После VAR result = команда(...) можно писать IF
# result = TRUE THEN или IF result = 1 THEN; для отрицательного результата — IF result = FALSE
# THEN или IF result = 0 THEN. TRUE/FALSE пишутся без кавычек. Вызовите команду один раз и
# сохраните результат: повторный вызов может повторить действие или прочитать уже изменившееся
# состояние.
SUB Main()
# 33 — ID флажка, 1 — включить, 100 — ID кнопки. Состояние флажка попадёт в ответ только для
# кнопки Activate.
IF UO.NumGumpCheckBox(0, 33, 1) THEN
VAR ok = UO.NumGumpButton(0, 100)
END IF
END SUB
Разбор параметров и выполнения:
- 33 — ID флажка, 1 — включить, 100 — ID кнопки. Состояние флажка попадёт в ответ только для кнопки Activate.