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

UO.Picking

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

ClassicUO • Runtime API

Проверяет, занят ли курсор клиента поднятым предметом.

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

UO.Picking() -> Integer

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

Параметры

Параметров нет.

Возвращает

Integer 1 — ItemHold.Enabled установлен; 0 — не установлен. Это состояние клиента, не ID и не подтверждение серверной доставки. Учитывается предмет, поднятый мышью или другим скриптом.

Это логический результат: 1 = TRUE, 0 = FALSE. После VAR result = команда(...) можно писать IF result = TRUE THEN или IF result = 1 THEN; для отрицательного результата — IF result = FALSE THEN или IF result = 0 THEN. TRUE/FALSE пишутся без кавычек. Вызовите команду один раз и сохраните результат: повторный вызов может повторить действие или прочитать уже изменившееся состояние.

Поведение

  • Чтение не поднимает и не сбрасывает предмет.
  • Для собственного переноса проверяйте также результат Drag/DragItem; чужой занятый курсор не означает, что нужный предмет успешно взят.

Примеры

Пример 1. Показать состояние

# Показать состояние
#
# Проверяет, занят ли курсор клиента поднятым предметом.
#
# Integer 1 — ItemHold.Enabled установлен; 0 — не установлен. Это состояние клиента, не ID и не
# подтверждение серверной доставки. Учитывается предмет, поднятый мышью или другим скриптом.
#
# Это логический результат: 1 = TRUE, 0 = FALSE. После VAR result = команда(...) можно писать IF
# result = TRUE THEN или IF result = 1 THEN; для отрицательного результата — IF result = FALSE
# THEN или IF result = 0 THEN. TRUE/FALSE пишутся без кавычек. Вызовите команду один раз и
# сохраните результат: повторный вызов может повторить действие или прочитать уже изменившееся
# состояние.

SUB Main()
    # Аргументов нет.
    # Выводится 1 или 0.

    UO.Print(STR(UO.Picking()))
END SUB

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

  • Аргументов нет.
  • Выводится 1 или 0.

Пример 2. Проверить занятые руки до захвата

# Проверить занятые руки до захвата
#
# Проверяет, занят ли курсор клиента поднятым предметом.
#
# Integer 1 — ItemHold.Enabled установлен; 0 — не установлен. Это состояние клиента, не ID и не
# подтверждение серверной доставки. Учитывается предмет, поднятый мышью или другим скриптом.
#
# Это логический результат: 1 = TRUE, 0 = FALSE. После VAR result = команда(...) можно писать IF
# result = TRUE THEN или IF result = 1 THEN; для отрицательного результата — IF result = FALSE
# THEN или IF result = 0 THEN. TRUE/FALSE пишутся без кавычек. Вызовите команду один раз и
# сохраните результат: повторный вызов может повторить действие или прочитать уже изменившееся
# состояние.

SUB Main()
    # Один аргумент Drag означает весь стек и timeout=0.
    # Picking проверяет общий курсор клиента. Не запускайте два независимых переноса одновременно.

    IF UO.Picking() = 0 THEN
        IF UO.Drag('loot') THEN
            VAR dropped = UO.DropItem('backpack', -1, -1, 0)
        END IF
    END IF
END SUB

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

  • Один аргумент Drag означает весь стек и timeout=0.
  • Picking проверяет общий курсор клиента. Не запускайте два независимых переноса одновременно.

Пример 3. Подождать свободный курсор с пределом

# Подождать свободный курсор с пределом
#
# Проверяет, занят ли курсор клиента поднятым предметом.
#
# Integer 1 — ItemHold.Enabled установлен; 0 — не установлен. Это состояние клиента, не ID и не
# подтверждение серверной доставки. Учитывается предмет, поднятый мышью или другим скриптом.
#
# Это логический результат: 1 = TRUE, 0 = FALSE. После VAR result = команда(...) можно писать IF
# result = TRUE THEN или IF result = 1 THEN; для отрицательного результата — IF result = FALSE
# THEN или IF result = 0 THEN. TRUE/FALSE пишутся без кавычек. Вызовите команду один раз и
# сохраните результат: повторный вызов может повторить действие или прочитать уже изменившееся
# состояние.

SUB Main()
    # Проверка повторяется до двадцати раз с паузами по 50 мс.
    # Команда не освобождает курсор и не отменяет чужой перенос.

    VAR tries = 0
    WHILE UO.Picking() AND tries < 20
        WAIT(50)
        tries = tries + 1
    WEND
    IF UO.Picking() THEN
        UO.Print('Cursor is still occupied')
    END IF
END SUB

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

  • Проверка повторяется до двадцати раз с паузами по 50 мс.
  • Команда не освобождает курсор и не отменяет чужой перенос.