API UO TargetID - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
UO.TargetID
Оглавление · Алфавитный указатель · Targeting
ClassicUO • Runtime API
Читает идентификатор текущего курсора цели.
Точный синтаксис
UO.TargetID() -> Any
Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.
Параметры
Параметров нет.
Возвращает
Integer — 32 бита ID курсора, а не serial последнего объекта. При отсутствии курсора возвращается 0. Если старший бит установлен, Integer отрицателен; Int2Hex сохраняет его биты. Реальный cursorID=0 и локальный прицел также могут давать 0: проверяйте TargetPresent для определения активности. В этом клиенте специальная ненулевая подстановка для нулевого ID не используется.
Поведение
- LastTarget/GetSerial("lasttarget") относятся к выбранному объекту, TargetID — к запросу цели. Эти значения нельзя подменять друг другом.
Примеры
Пример 1. Вывести ID активного курсора
# Вывести ID активного курсора
#
# Читает идентификатор текущего курсора цели.
#
# Integer — 32 бита ID курсора, а не serial последнего объекта. При отсутствии курсора
# возвращается 0. Если старший бит установлен, Integer отрицателен; Int2Hex сохраняет его биты.
# Реальный cursorID=0 и локальный прицел также могут давать 0: проверяйте TargetPresent для
# определения активности. В этом клиенте специальная ненулевая подстановка для нулевого ID не
# используется.
SUB Main()
# Аргументов нет.
# Int2Hex позволяет увидеть все биты ID, включая старший бит.
IF UO.TargetPresent() THEN
UO.Print(UO.Int2Hex(UO.TargetID()))
END IF
END SUB
Разбор параметров и выполнения:
- Аргументов нет.
- Int2Hex позволяет увидеть все биты ID, включая старший бит.
Пример 2. Различить два вида ID
# Различить два вида ID
#
# Читает идентификатор текущего курсора цели.
#
# Integer — 32 бита ID курсора, а не serial последнего объекта. При отсутствии курсора
# возвращается 0. Если старший бит установлен, Integer отрицателен; Int2Hex сохраняет его биты.
# Реальный cursorID=0 и локальный прицел также могут давать 0: проверяйте TargetPresent для
# определения активности. В этом клиенте специальная ненулевая подстановка для нулевого ID не
# используется.
SUB Main()
# cursor — ID прицела, object — serial объекта.
# В TargetToObject передают object, а не cursor.
VAR cursor = UO.TargetID()
VAR object = UO.GetSerial('lasttarget')
UO.Print('Cursor: ' + UO.Int2Hex(cursor))
UO.Print('Object: ' + object)
END SUB
Разбор параметров и выполнения:
- cursor — ID прицела, object — serial объекта.
- В TargetToObject передают object, а не cursor.
Пример 3. Проверить после ожидания
# Проверить после ожидания
#
# Читает идентификатор текущего курсора цели.
#
# Integer — 32 бита ID курсора, а не serial последнего объекта. При отсутствии курсора
# возвращается 0. Если старший бит установлен, Integer отрицателен; Int2Hex сохраняет его биты.
# Реальный cursorID=0 и локальный прицел также могут давать 0: проверяйте TargetPresent для
# определения активности. В этом клиенте специальная ненулевая подстановка для нулевого ID не
# используется.
SUB Main()
# 1000 — тайм-аут ожидания в миллисекундах.
# Признаком появления служит результат WaitForTarget; знак cursor для этого не проверяется.
IF UO.WaitForTarget(1000) THEN
VAR cursor = UO.TargetID()
UO.Print('Request: ' + UO.Int2Hex(cursor))
ELSE
UO.Print('No cursor arrived')
END IF
END SUB
Разбор параметров и выполнения:
- 1000 — тайм-аут ожидания в миллисекундах.
- Признаком появления служит результат WaitForTarget; знак cursor для этого не проверяется.