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

UO.IsWaitTargetActive

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

ClassicUO • Runtime API

Проверяет, остались ли подготовленные ответы в очереди target.

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

UO.IsWaitTargetActive() -> Any

Выберите одну из зарегистрированных форм. Параметры передаются позиционно. 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.IsWaitTargetActive()))
    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.IsWaitTargetActive() AND attempts < 20
        WAIT(50)
        attempts = attempts + 1
    WEND
    IF UO.IsWaitTargetActive() 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.IsWaitTargetActive()))
    UO.Print('Cursor: ' + STR(UO.TargetPresent()))
END SUB

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

  • Первая строка показывает отложенные ответы, вторая — состояние прицела.
  • Возможна очередь без курсора и курсор без очереди; эти значения не взаимозаменяемы.