API UO Waiting - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
UO.Waiting
Оглавление · Алфавитный указатель · Scripts & Runtime
ClassicUO • Runtime API
Проверяет, остались ли подготовленные ответы в очереди target.
Точный синтаксис
UO.Waiting() -> Integer
Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.
Параметры
Параметров нет.
Возвращает
Integer 1 — есть неотменённая отложенная цель объекта, тайла или отмена следующего прицела; 0 — очередь пуста. Это не наличие открытого курсора; для курсора используйте TargetPresent/Targeting.
Это логический результат: 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. Проверить подготовку
# Проверить подготовку
#
# Проверяет, остались ли подготовленные ответы в очереди target.
#
# Integer 1 — есть неотменённая отложенная цель объекта, тайла или отмена следующего прицела; 0
# — очередь пуста. Это не наличие открытого курсора; для курсора используйте
# TargetPresent/Targeting.
#
# Это логический результат: 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()
# После WaitTargetSelf и до серверного target ожидается 1.
# CancelWaitTarget убирает очередь; следующая проверка даст 0.
UO.WaitTargetSelf()
UO.Print(STR(UO.Waiting()))
UO.CancelWaitTarget()
END SUB
Разбор параметров и выполнения:
- После WaitTargetSelf и до серверного target ожидается 1.
- CancelWaitTarget убирает очередь; следующая проверка даст 0.
Пример 2. Ограниченно дождаться расходования ответа
# Ограниченно дождаться расходования ответа
#
# Проверяет, остались ли подготовленные ответы в очереди target.
#
# Integer 1 — есть неотменённая отложенная цель объекта, тайла или отмена следующего прицела; 0
# — очередь пуста. Это не наличие открытого курсора; для курсора используйте
# TargetPresent/Targeting.
#
# Это логический результат: 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()
# Параметров у проверки нет. WAIT=50 мс, максимум 20 ожиданий.
# При оставшемся ответе он отменяется. Проверку результата серверного действия добавляйте
# отдельно.
VAR attempts = 0
WHILE UO.Waiting() AND attempts < 20
WAIT(50)
attempts = attempts + 1
WEND
IF UO.Waiting() THEN
UO.CancelWaitTarget()
END IF
END SUB
Разбор параметров и выполнения:
- Параметров у проверки нет. WAIT=50 мс, максимум 20 ожиданий.
- При оставшемся ответе он отменяется. Проверку результата серверного действия добавляйте отдельно.
Пример 3. Показать разницу между очередью и прицелом
# Показать разницу между очередью и прицелом
#
# Проверяет, остались ли подготовленные ответы в очереди target.
#
# Integer 1 — есть неотменённая отложенная цель объекта, тайла или отмена следующего прицела; 0
# — очередь пуста. Это не наличие открытого курсора; для курсора используйте
# TargetPresent/Targeting.
#
# Это логический результат: 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()
# Первая строка показывает отложенные ответы, вторая — состояние прицела.
# Возможна очередь без курсора и курсор без очереди; эти значения не взаимозаменяемы.
UO.Print('Queued: ' + STR(UO.Waiting()))
UO.Print('Cursor: ' + STR(UO.TargetPresent()))
END SUB
Разбор параметров и выполнения:
- Первая строка показывает отложенные ответы, вторая — состояние прицела.
- Возможна очередь без курсора и курсор без очереди; эти значения не взаимозаменяемы.