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, если другой скрипт её не изменил.