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

UO.NumGumpTextEntry

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

ClassicUO • Runtime API

Устанавливает текст поля ввода в серверном гампе по индексу.

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

UO.NumGumpTextEntry(GumpIndex:Any, TextEntryID:Any, Value:Any) -> Integer

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

Параметры

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

Возвращает

Integer (Boolean) — 1, если нужный элемент найден и его итоговое значение соответствует заданному; 0 при недействительном индексе, отсутствии ID/типа элемента или если поле не приняло точное значение. Повторная установка уже заданного значения также успешна.

Это логический результат: 1 = TRUE, 0 = FALSE. После VAR result = команда(...) можно писать IF result = TRUE THEN или IF result = 1 THEN; для отрицательного результата — IF result = FALSE THEN или IF result = 0 THEN. TRUE/FALSE пишутся без кавычек. Вызовите команду один раз и сохраните результат: повторный вызов может повторить действие или прочитать уже изменившееся состояние.

Поведение

  • Работает с активными серверными гампами. Рюкзак, карта, настройки и другие локальные окна не входят в этот список. Один вызов читает данные в игровом потоке; разные вызовы могут увидеть разные состояния списка.
  • Меняет локальное состояние. Поля и отмеченные переключатели отправляются с последующим ответом кнопки.
  • Выбор радиокнопки снимает выбор соседней радиокнопки той же группы; обычные флажки независимы.

Примеры

Пример 1. Установить значение и проверить результат

# Установить значение и проверить результат
#
# Устанавливает текст поля ввода в серверном гампе по индексу.
#
# Integer (Boolean) — 1, если нужный элемент найден и его итоговое значение соответствует
# заданному; 0 при недействительном индексе, отсутствии ID/типа элемента или если поле не
# приняло точное значение. Повторная установка уже заданного значения также успешна.
#
# Это логический результат: 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 — индекс окна; 33 — точный TextEntryID; '500' — новое значение. Замените 33 ID из своего
    # гампа.

    VAR ok = UO.NumGumpTextEntry(0, 33, '500')
    IF ok = 0 THEN
        UO.Print('Control missing or value rejected')
    END IF
END SUB

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

  • 0 — индекс окна; 33 — точный TextEntryID; '500' — новое значение. Замените 33 ID из своего гампа.

Пример 2. Очистить значение

# Очистить значение
#
# Устанавливает текст поля ввода в серверном гампе по индексу.
#
# Integer (Boolean) — 1, если нужный элемент найден и его итоговое значение соответствует
# заданному; 0 при недействительном индексе, отсутствии ID/типа элемента или если поле не
# приняло точное значение. Повторная установка уже заданного значения также успешна.
#
# Это логический результат: 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()
    # '' очищает поле или снимает отметку. Возвращается успех изменения, а не новое значение поля.

    VAR ok = UO.NumGumpTextEntry(0, 33, '')
    UO.Print(STR(ok))
END SUB

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

  • '' очищает поле или снимает отметку. Возвращается успех изменения, а не новое значение поля.

Пример 3. Заполнить перед ответом

# Заполнить перед ответом
#
# Устанавливает текст поля ввода в серверном гампе по индексу.
#
# Integer (Boolean) — 1, если нужный элемент найден и его итоговое значение соответствует
# заданному; 0 при недействительном индексе, отсутствии ID/типа элемента или если поле не
# приняло точное значение. Повторная установка уже заданного значения также успешна.
#
# Это логический результат: 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()
    # 100 — пример серверного ButtonID подтверждения; его нужно заменить ID вашего окна. 0 в
    # SendGumpSelect(0,100) — индекс окна.
    # Ответ может закрыть гамп и изменить индексы. sent означает локальную отправку, не
    # подтверждённый сервером результат операции.

    IF UO.NumGumpTextEntry(0, 33, '500') THEN
        VAR sent = UO.SendGumpSelect(0, 100)
        UO.Print(STR(sent))
    END IF
END SUB

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

  • 100 — пример серверного ButtonID подтверждения; его нужно заменить ID вашего окна. 0 в SendGumpSelect(0,100) — индекс окна.
  • Ответ может закрыть гамп и изменить индексы. sent означает локальную отправку, не подтверждённый сервером результат операции.