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

UO.CloseSimpleGump

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

ClassicUO • Runtime API

Локально закрывает разрешённый к закрытию серверный гамп по строгому индексу.

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

UO.CloseSimpleGump(GumpIndex:Any) -> Unit

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

Параметры

  • GumpIndex — Обязательный Integer — индекс активного серверного гампа, от 0 до GetGumpsCount()-1. Это не GumpID/serial. Отрицательное число и индекс вне списка недействительны. Открытие, закрытие и изменение порядка окон могут изменить индекс; перед действием проверяйте GetGumpID/GetGumpSerial.

Возвращает

Unit — ничего не возвращает. Нельзя интерпретировать результат как подтверждение сервера или Boolean.

Поведение

  • Работает с активными серверными гампами. Рюкзак, карта, настройки и другие локальные окна не входят в этот список. Один вызов читает данные в игровом потоке; разные вызовы могут увидеть разные состояния списка.
  • Недействительный индекс и NoClose ничего не меняют. Команда не отправляет ответ кнопки серверу. Для такого ответа используйте SendGumpSelect.
  • Закрытие изменяет список и индексы. Для массового закрытия обходите список от последнего индекса к первому.

Примеры

Пример 1. Закрыть первое окно

# Закрыть первое окно
#
# Локально закрывает разрешённый к закрытию серверный гамп по строгому индексу.
#
# Unit — ничего не возвращает. Нельзя интерпретировать результат как подтверждение сервера или
# Boolean.

SUB Main()
    # 0 — индекс, а не ID. Если окно запрещает закрытие, оно остаётся открытым.

    UO.CloseSimpleGump(0)
END SUB

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

  • 0 — индекс, а не ID. Если окно запрещает закрытие, оно остаётся открытым.

Пример 2. Закрыть все разрешённые окна

# Закрыть все разрешённые окна
#
# Локально закрывает разрешённый к закрытию серверный гамп по строгому индексу.
#
# Unit — ничего не возвращает. Нельзя интерпретировать результат как подтверждение сервера или
# Boolean.

SUB Main()
    # Обратный обход уменьшает влияние сдвига индексов после закрытия. При параллельном открытии
    # новых окон повторно проверьте список.

    VAR i = UO.GetGumpsCount() - 1
    WHILE i >= 0
        UO.CloseSimpleGump(i)
        i = i - 1
    WEND
END SUB

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

  • Обратный обход уменьшает влияние сдвига индексов после закрытия. При параллельном открытии новых окон повторно проверьте список.

Пример 3. Сохранить информацию перед закрытием

# Сохранить информацию перед закрытием
#
# Локально закрывает разрешённый к закрытию серверный гамп по строгому индексу.
#
# Unit — ничего не возвращает. Нельзя интерпретировать результат как подтверждение сервера или
# Boolean.

SUB Main()
    # info[1] — сохранённый GumpID. Действие ничего не возвращает, поэтому результат не
    # присваивается переменной.

    VAR info = UO.GetGumpInfo(0)
    IF GetArrayLength(info) = 5 THEN
        UO.CloseSimpleGump(0)
        UO.Print(Hex(info[1]))
    END IF
END SUB

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

  • info[1] — сохранённый GumpID. Действие ничего не возвращает, поэтому результат не присваивается переменной.