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

UO.WaitingForMenu

ClassicUO / Basic IDE

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

Waits for a server menu and returns 1 only when the requested occurrence/name is satisfied. menuCount selects the ordinal distinct menu appearance; menuName is matched case-sensitively. blockMenu=TRUE sends the menu cancel/right-click response and closes the matched menu. skillOrSerial optionally uses a skill or object before the wait starts.

Синтаксис

UO.WaitingForMenu(delay:Any) -> Integer
UO.WaitingForMenu(delay:Any, menuCount:Any) -> Integer
UO.WaitingForMenu(delay:Any, menuCount:Any, blockMenu:Any) -> Integer
UO.WaitingForMenu(delay:Any, menuCount:Any, blockMenu:Any, menuName:Any) -> Integer
UO.WaitingForMenu(delayValue:Any, menuCountValue:Any, blockMenuValue:Any, menuNameValue:Any, skillOrSerial:Any) -> Integer

Регистр имени не важен. Any — динамическое значение Basic; Unit — отсутствие возвращаемого значения. Integer — знаковое 32-битное число, Decimal — число с плавающей точкой. Правила типов, serial, индексов и ожиданий.

Параметры

Имя Назначение
delay Время в миллисекундах, если в описании команды не указана другая единица. Проверяйте отдельно значение 0.
menuCount Ordinal menu occurrence to accept. Values <= 1 select the first matching occurrence; larger values wait for that many distinct menu appearances.
blockMenu Menu blocking flag: FALSE/0 lets the server menu remain visible; TRUE/1 sends the server cancel/right-click response and closes the matched menu locally.
menuName Exact case-sensitive server menu caption. Empty string accepts any menu caption.
delayValue Время в миллисекундах, если в описании команды не указана другая единица. Проверяйте отдельно значение 0.
menuCountValue Позиционный аргумент этой перегрузки. Подробности использования указаны в описании/фактической ветви runtime ниже.
blockMenuValue Позиционный аргумент этой перегрузки. Подробности использования указаны в описании/фактической ветви runtime ниже.
menuNameValue Позиционный аргумент этой перегрузки. Подробности использования указаны в описании/фактической ветви runtime ниже.
skillOrSerial Позиционный аргумент этой перегрузки. Подробности использования указаны в описании/фактической ветви runtime ниже.

Параметры обязательны внутри каждой показанной сигнатуры. Опустить аргумент можно только при наличии более короткой перегрузки; пропуск позиции посередине не подразумевается.

Допустимые значения

maxDelay — Maximum wait in milliseconds. 0 performs an immediate check; negative values are normalized by the runtime to a non-negative wait.

  • menuCount — Ordinal menu occurrence to accept. Values <= 1 select the first matching occurrence; larger values wait for that many distinct menu appearances.
  • blockMenu — Menu blocking flag: FALSE/0 lets the server menu remain visible; TRUE/1 sends the server cancel/right-click response and closes the matched menu locally.
  • menuName — Exact case-sensitive server menu caption. Empty string accepts any menu caption.
  • skillOrSerial — Optional trigger before waiting: skill name String, object serial/reference, or 0/empty to perform no trigger.

Пропущенные аргументы

Omitted trailing parameters use: menuCount=1 effective first occurrence, blockMenu=FALSE, menuName='' (any caption), skillOrSerial=0 (no trigger).

Ограничения

A timeout or unmatched menu returns 0. Empty menuName accepts any caption. The menu identity is tracked so one unchanged open menu is not counted repeatedly. Blocking is a real server-menu cancel action, not only a local visual hide.

Примеры

Каждый блок — самостоятельный скрипт из мануала проекта. Параметры демонстрационного объекта/контейнера и условия действия необходимо сопоставить с вашей игровой ситуацией.

Пример 1

SUB Main()
    VAR ok = UO.WaitingForMenu(3000, 1, FALSE, 'Bank')
END SUB

Пример 2

SUB Main()
    VAR ok = UO.WaitingForMenu(5000, 1, TRUE, 'Choose item', 'Blacksmithy')
END SUB

Пример 3

SUB Main()
    VAR result = UO.WaitingForMenu(100)
    UO.Print(CStr(result))
END SUB

Пример 4

SUB Main()
    VAR arg1 = 100 # delayValue
    VAR arg2 = 2 # menuCountValue
    VAR arg3 = 3 # blockMenuValue
    VAR arg4 = 4 # menuNameValue
    VAR arg5 = 'Hiding' # skillOrSerial
    VAR result = UO.WaitingForMenu(arg1, arg2, arg3, arg4, arg5)
    UO.Print(CStr(result))
END SUB

Пример 5

SUB Main()
    VAR result = UO.WaitingForMenu(100, 2)
    UO.Print(CStr(result))
END SUB

Пример 6

SUB Main()
    VAR result = UO.WaitingForMenu(100, 2, 3)
    UO.Print(CStr(result))
END SUB

Пример 7

SUB Main()
    VAR result = UO.WaitingForMenu(100, 2, 3, 4)
    UO.Print(CStr(result))
END SUB

Пример 8

SUB Main()
    VAR arg1 = 100 # delay
    VAR result = UO.WaitingForMenu(arg1)
    # Пример порога; выберите подходящий смыслу команды.
    IF result > 0 THEN
        UO.Print(CStr(result))
    END IF
END SUB

Пример 9

FUNCTION ReadResult()
    VAR arg1 = 100 # delay
    VAR result = UO.WaitingForMenu(arg1)
    RETURN result
END FUNCTION

SUB Main()
    VAR answer = ReadResult()
    UO.Print(CStr(answer))
END SUB
Реализация и проверка контракта
  • InjectionScript.Runtime.InjectionApiUO.WaitingForMenu

Источник реестра и отчёт сверки. Примеры проверяются загрузчиком/парсером включённого runtime. Действия на игровом сервере этой проверкой не исполняются.

⚠️ **GitHub.com Fallback** ⚠️