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 для этого не проверяется.