API UO WaitingForMenu - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
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.
Каждый блок — самостоятельный скрипт из мануала проекта. Параметры демонстрационного объекта/контейнера и условия действия необходимо сопоставить с вашей игровой ситуацией.
SUB Main()
VAR ok = UO.WaitingForMenu(3000, 1, FALSE, 'Bank')
END SUBSUB Main()
VAR ok = UO.WaitingForMenu(5000, 1, TRUE, 'Choose item', 'Blacksmithy')
END SUBSUB Main()
VAR result = UO.WaitingForMenu(100)
UO.Print(CStr(result))
END SUBSUB 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 SUBSUB Main()
VAR result = UO.WaitingForMenu(100, 2)
UO.Print(CStr(result))
END SUBSUB Main()
VAR result = UO.WaitingForMenu(100, 2, 3)
UO.Print(CStr(result))
END SUBSUB Main()
VAR result = UO.WaitingForMenu(100, 2, 3, 4)
UO.Print(CStr(result))
END SUBSUB Main()
VAR arg1 = 100 # delay
VAR result = UO.WaitingForMenu(arg1)
# Пример порога; выберите подходящий смыслу команды.
IF result > 0 THEN
UO.Print(CStr(result))
END IF
END SUBFUNCTION 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. Действия на игровом сервере этой проверкой не исполняются.