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 после неудачного захвата: курсор может принадлежать другому действию.