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

UO.DragItem

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

ClassicUO • Runtime API

Поднимает конкретный предмет и запоминает его для DropItem этого runtime.

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

UO.DragItem(ObjID:Any, Count:Any) -> Any

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

Параметры

  • ObjID — Serial конкретного предмета/персонажа: число, hex/десятичная строка, self/backpack/lasttarget/lastobject/lastcontainer/lastcorpse/finditem/laststatus либо сохранённое имя AddObject. Это не type. Объект должен быть загружен; перед действием проверяйте Exists.
  • Count — Количество единиц внутри одного стека. 0 или отрицательное значение означает весь стек; положительное ограничивается доступным количеством. Это НЕ число стопок, которое ограничивает MassMove.

Возвращает

Integer 1 — клиент принял подъём; 0 — предмет не найден или PickUp отказал. Метадата совместимости Any не означает произвольный тип результата. Это не serial.

Это логический результат: 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(id,amount,timeout) добавляет ожидание локального Picking.
  • После успешного захвата завершите действие DropItem. Предмет, вручную взятый мышью, не устанавливает память DragItem данного runtime.

Примеры

Пример 1. Поднять весь стек

# Поднять весь стек
#
# Поднимает конкретный предмет и запоминает его для DropItem этого runtime.
#
# Integer 1 — клиент принял подъём; 0 — предмет не найден или PickUp отказал. Метадата
# совместимости Any не означает произвольный тип результата. Это не serial.
#
# Это логический результат: 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()
    # ObjID=loot через AddObject, Count=0 — весь стек.
    # Вторая команда сбрасывает тот же поднятый предмет.

    IF UO.DragItem('loot', 0) THEN
        VAR ok = UO.DropItem('backpack', -1, -1, 0)
    END IF
END SUB

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

  • ObjID=loot через AddObject, Count=0 — весь стек.
  • Вторая команда сбрасывает тот же поднятый предмет.

Пример 2. Поднять пять единиц

# Поднять пять единиц
#
# Поднимает конкретный предмет и запоминает его для DropItem этого runtime.
#
# Integer 1 — клиент принял подъём; 0 — предмет не найден или PickUp отказал. Метадата
# совместимости Any не означает произвольный тип результата. Это не serial.
#
# Это логический результат: 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()
    # Замените ObjID своим serial. Count=5 относится к единицам одной стопки.
    # Место 44/55 находится внутри гампа рюкзака.

    IF UO.DragItem(0x40001234, 5) THEN
        VAR ok = UO.DropItem('backpack', 44, 55, 0)
    END IF
END SUB

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

  • Замените ObjID своим serial. Count=5 относится к единицам одной стопки.
  • Место 44/55 находится внутри гампа рюкзака.

Пример 3. Показать неудачный захват

# Показать неудачный захват
#
# Поднимает конкретный предмет и запоминает его для DropItem этого runtime.
#
# Integer 1 — клиент принял подъём; 0 — предмет не найден или PickUp отказал. Метадата
# совместимости Any не означает произвольный тип результата. Это не serial.
#
# Это логический результат: 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()
    # picked — Integer 1/0.
    # Не вызывайте DropItem после неудачного захвата: курсор может принадлежать другому действию.

    VAR picked = UO.DragItem('loot', 0)
    IF picked = 0 THEN
        UO.Print('Item was not picked up')
    ELSE
        VAR ok = UO.DropItem('backpack', -1, -1, 0)
    END IF
END SUB

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

  • picked — Integer 1/0.
  • Не вызывайте DropItem после неудачного захвата: курсор может принадлежать другому действию.