API UO DropItem - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
UO.DropItem
Оглавление · Алфавитный указатель · Items
ClassicUO • Runtime API
Сбрасывает предмет, ранее успешно взятый Drag/DragItem в том же runtime.
Точный синтаксис
UO.DropItem(MoveIntoID:Any, X:Any, Y:Any, Z:Any) -> Any
Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.
Параметры
MoveIntoID— Serial назначения, backpack либо установленное имя AddObject. Число 0 означает землю. Используйте backpack, а не self: этот низкоуровневый аргумент разрешает self в serial персонажа.X— Для контейнера — место внутри гампа (-1/65535 автоматически); для земли — мировая X.Y— Для контейнера — место внутри гампа (-1/65535 автоматически); для земли — мировая Y.Z— Высота сброса; в контейнере обычно 0, на земле фактическая Z точки.
Возвращает
Integer 1 — сброс отправлен и курсор отмечен Dropped; 0 — не было успешного DragItem, курсор изменился/недоступен или назначение недопустимо. Метадата 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 пишутся без кавычек. Вызовите команду один раз и сохраните результат: повторный вызов может повторить действие или прочитать уже изменившееся состояние.
Поведение
- Требуются все четыре аргумента. Этот вариант не берёт предмет заново; Drop и MoveItem выполняют полный перенос по serial.
- Проверяется, что удерживается именно предмет, запомненный этим runtime. Чужой либо вручную взятый предмет не должен сбрасываться случайно.
- После отправки память захвата очищается. Установленный GrabDelay добавляет паузу в потоке скрипта. Серверный отказ возможен после возврата.
Примеры
Пример 1. Автоматическое место в рюкзаке
# Автоматическое место в рюкзаке
#
# Сбрасывает предмет, ранее успешно взятый Drag/DragItem в том же runtime.
#
# Integer 1 — сброс отправлен и курсор отмечен Dropped; 0 — не было успешного DragItem, курсор
# изменился/недоступен или назначение недопустимо. Метадата 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()
# MoveIntoID=backpack, X/Y=-1, Z=0.
# Проверяется успешный захват до сброса.
IF UO.DragItem('loot', 0) THEN
VAR ok = UO.DropItem('backpack', -1, -1, 0)
END IF
END SUB
Разбор параметров и выполнения:
- MoveIntoID=backpack, X/Y=-1, Z=0.
- Проверяется успешный захват до сброса.
Пример 2. Место внутри сундука
# Место внутри сундука
#
# Сбрасывает предмет, ранее успешно взятый Drag/DragItem в том же runtime.
#
# Integer 1 — сброс отправлен и курсор отмечен Dropped; 0 — не было успешного DragItem, курсор
# изменился/недоступен или назначение недопустимо. Метадата 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()
# chest задан через AddObject. X=60/Y=70 — координаты в его гампе.
# amount=10 относится к Drag, у DropItem собственного количества нет.
IF UO.Drag('loot', 10) THEN
VAR ok = UO.DropItem('chest', 60, 70, 0)
END IF
END SUB
Разбор параметров и выполнения:
- chest задан через AddObject. X=60/Y=70 — координаты в его гампе.
- amount=10 относится к Drag, у DropItem собственного количества нет.
Пример 3. Положить на землю под персонажем
# Положить на землю под персонажем
#
# Сбрасывает предмет, ранее успешно взятый Drag/DragItem в том же runtime.
#
# Integer 1 — сброс отправлен и курсор отмечен Dropped; 0 — не было успешного DragItem, курсор
# изменился/недоступен или назначение недопустимо. Метадата 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()
# MoveIntoID=0 явно выбирает землю.
# X/Y/Z — точка мира, а не координаты контейнера.
VAR x = UO.GetX()
VAR y = UO.GetY()
VAR z = UO.GetZ()
IF UO.DragItem('loot', 0) THEN
VAR ok = UO.DropItem(0, x, y, z)
END IF
END SUB
Разбор параметров и выполнения:
- MoveIntoID=0 явно выбирает землю.
- X/Y/Z — точка мира, а не координаты контейнера.