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.