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

UO.Drop

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

ClassicUO • Runtime API

Выполняет полный перенос указанного предмета, по умолчанию на землю под персонажем.

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

UO.Drop(object:Any) -> Integer
UO.Drop(object:Any, count:Any) -> Integer
UO.Drop(object:Any, count:Any, destination:Any) -> Integer
UO.Drop(ObjID:Any, Count:Any, X:Any, Y:Any, Z:Any) -> Any

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

Параметры

  • object / ObjID — Serial конкретного предмета/персонажа: число, hex/десятичная строка, self/backpack/lasttarget/lastobject/lastcontainer/lastcorpse/finditem/laststatus либо сохранённое имя AddObject. Это не type. Объект должен быть загружен; перед действием проверяйте Exists.
  • count / Count — Количество единиц внутри одного стека. 0 или отрицательное значение означает весь стек; положительное ограничивается доступным количеством. Это НЕ число стопок, которое ограничивает MassMove. В короткой форме без count равен 0.
  • destination — Только в форме с тремя аргументами: Serial контейнера или установленное имя AddObject; backpack/self/my выбирают рюкзак, receiving/catchbag — SetCatchBag, а без него рюкзак. lastcontainer/lastobject/lasttarget/lastcorpse/finditem/laststatus допустимы, когда разрешаются в нужный контейнер. ground или 0 явно выбирает землю; -1 — прежний селектор рюкзака. Неизвестное или неустановленное имя вызывает ошибку до захвата предмета. Без аргумента назначения используется рюкзак.
  • X — Только в форме с пятью аргументами: мировая X назначения на земле.
  • Y — Мировая Y для пятиаргументной формы.
  • Z — Мировая высота для пятиаргументной формы.

Возвращает

Integer 1 — запрос полного переноса принят клиентом; 0 — не удалось. Пятиаргументная совместимая форма имеет метадату Any, но фактически также возвращает Integer 1/0. Это не сброс ранее взятого DragItem: для него используйте DropItem.

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

Поведение

  • Зарегистрированы формы с 1, 2, 3 и 5 аргументами. Формы с четырьмя аргументами нет.
  • Drop(item) переносит весь стек на землю под собой; Drop(item,count) задаёт единицы; Drop(item,count,destination) позволяет контейнер.
  • Drop(item,count,X,Y,Z) всегда означает землю. Для контейнера с координатами гампа используйте MoveItem.
  • Действуют ограничения подъёма, DropCheckCoord и проверки сервера. Команда не ждёт отдельного подтверждения доставки.

Примеры

Пример 1. Весь стек под ноги

# Весь стек под ноги
#
# Выполняет полный перенос указанного предмета, по умолчанию на землю под персонажем.
#
# Integer 1 — запрос полного переноса принят клиентом; 0 — не удалось. Пятиаргументная
# совместимая форма имеет метадату Any, но фактически также возвращает Integer 1/0. Это не сброс
# ранее взятого DragItem: для него используйте DropItem.
#
# Это логический результат: 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()
    # object=loot через AddObject, count=0 по умолчанию.
    # Назначение — текущая точка персонажа на земле.

    VAR ok = UO.Drop('loot')
END SUB

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

  • object=loot через AddObject, count=0 по умолчанию.
  • Назначение — текущая точка персонажа на земле.

Пример 2. Пять единиц в рюкзак

# Пять единиц в рюкзак
#
# Выполняет полный перенос указанного предмета, по умолчанию на землю под персонажем.
#
# Integer 1 — запрос полного переноса принят клиентом; 0 — не удалось. Пятиаргументная
# совместимая форма имеет метадату Any, но фактически также возвращает Integer 1/0. Это не сброс
# ранее взятого DragItem: для него используйте DropItem.
#
# Это логический результат: 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()
    # count=5 единиц одной стопки; destination=backpack.
    # Третий аргумент здесь контейнер, не X.

    VAR ok = UO.Drop('loot', 5, 'backpack')
END SUB

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

  • count=5 единиц одной стопки; destination=backpack.
  • Третий аргумент здесь контейнер, не X.

Пример 3. Явная точка на земле

# Явная точка на земле
#
# Выполняет полный перенос указанного предмета, по умолчанию на землю под персонажем.
#
# Integer 1 — запрос полного переноса принят клиентом; 0 — не удалось. Пятиаргументная
# совместимая форма имеет метадату Any, но фактически также возвращает Integer 1/0. Это не сброс
# ранее взятого DragItem: для него используйте DropItem.
#
# Это логический результат: 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=0 весь стек; X/Y/Z=1445/1690/0.
    # Для этой формы третье значение — X. Предварительный Drag не нужен.

    VAR ok = UO.Drop(0x40001234, 0, 1445, 1690, 0)
END SUB

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

  • ObjID замените своим serial; Count=0 весь стек; X/Y/Z=1445/1690/0.
  • Для этой формы третье значение — X. Предварительный Drag не нужен.