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

UO.TargetToXYZ

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

ClassicUO • Runtime API

Немедленно отвечает на уже активный серверный прицел координатами тайла.

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

UO.TargetToXYZ(X:Any, Y:Any, Z:Any) -> Unit

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

Параметры

  • X / x — Мировая координата X на текущей карте, 0..65535. Это не пиксель экрана или координата гампа.
  • Y / y — Мировая координата Y на текущей карте, 0..65535.
  • Z / z — Высота игровой точки, для сетевого target используйте -128..127. Это не этаж и не слой экипировки.

Возвращает

Unit — возвращаемого значения нет. Вызывайте отдельной строкой; не используйте как true/false, serial или type. Метадата Any у совместимых форм не меняет фактический результат Unit.

Поведение

  • Без активного серверного курсора ничего не делает и не создаёт отложенного ответа. Для предварительной подготовки используйте WaitTargetObject/WaitTargetTile/WaitTargetXYZ.
  • Локальные ClientRequest* и другие callback-прицелы этой командой не обрабатываются.
  • Цель с graphic=0 требует координатного прицела; предметный прицел не принимает землю.

Примеры

Пример 1. Ответить на открытый прицел

# Ответить на открытый прицел
#
# Немедленно отвечает на уже активный серверный прицел координатами тайла.
#
# Unit — возвращаемого значения нет. Вызывайте отдельной строкой; не используйте как true/false,
# serial или type. Метадата Any у совместимых форм не меняет фактический результат Unit.

SUB Main()
    # Параметры задают пример реальной точки: замените координаты и graphic нужными значениями.
    # В очередь будущих прицелов ничего не добавляется.

    IF UO.TargetPresent() THEN
        UO.TargetToXYZ(1445, 1690, 0)
    END IF
END SUB

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

  • Параметры задают пример реальной точки: замените координаты и graphic нужными значениями.
  • В очередь будущих прицелов ничего не добавляется.

Пример 2. Сначала дождаться прицела

# Сначала дождаться прицела
#
# Немедленно отвечает на уже активный серверный прицел координатами тайла.
#
# Unit — возвращаемого значения нет. Вызывайте отдельной строкой; не используйте как true/false,
# serial или type. Метадата Any у совместимых форм не меняет фактический результат Unit.

SUB Main()
    # 3000 — максимум ожидания в миллисекундах; запросившее прицел действие должно быть выполнено
    # ранее.
    # Команда вызывается только после появления прицела; игровое действие может затем завершиться
    # отказом сервера.

    IF UO.WaitForTarget(3000) THEN
        UO.TargetToXYZ(1445, 1690, 0)
    ELSE
        UO.Print('Target timeout')
    END IF
END SUB

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

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

Пример 3. Проверить отсутствие отложенного ответа

# Проверить отсутствие отложенного ответа
#
# Немедленно отвечает на уже активный серверный прицел координатами тайла.
#
# Unit — возвращаемого значения нет. Вызывайте отдельной строкой; не используйте как true/false,
# serial или type. Метадата Any у совместимых форм не меняет фактический результат Unit.

SUB Main()
    # CancelTarget закрывает старый прицел и очищает очередь.
    # При отсутствии нового прицела вызов не создаёт ожидание. Вывод очереди остаётся 0, если другой
    # скрипт её не изменил.

    UO.CancelTarget()
    UO.TargetToXYZ(1445, 1690, 0)
    UO.Print('Queued: ' + STR(UO.IsWaitTargetActive()))
END SUB

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

  • CancelTarget закрывает старый прицел и очищает очередь.
  • При отсутствии нового прицела вызов не создаёт ожидание. Вывод очереди остаётся 0, если другой скрипт её не изменил.