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

UO.TargetToObject

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

ClassicUO • Runtime API

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

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

UO.TargetToObject(ObjID:Any) -> Unit

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

Параметры

  • ObjID — Serial/ID предмета или персонажа, число либо hex/десятичная строка, self/backpack/lasttarget/lastobject или сохранённое имя AddObject. Это не type. Перед действием с именованным объектом проверяйте Exists; неразрешённый алиас даёт serial 0.

Возвращает

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

Поведение

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

Примеры

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

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

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

    IF UO.TargetPresent() THEN
        UO.TargetToObject('self')
    END IF
END SUB

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

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

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

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

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

    IF UO.WaitForTarget(3000) THEN
        UO.TargetToObject('self')
    ELSE
        UO.Print('Target timeout')
    END IF
END SUB

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

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

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

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

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

    UO.CancelTarget()
    UO.TargetToObject('self')
    UO.Print('Queued: ' + STR(UO.IsWaitTargetActive()))
END SUB

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

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