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

UO.Grab

ClassicUO / Basic IDE

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

Подбирает указанный предмет и перемещает его в рюкзак через маршрут Basic/ClassicUO Grab.

Синтаксис

UO.Grab() -> Integer
UO.Grab(id:Any) -> Integer
UO.Grab(amount:Integer, id:Integer) -> Integer
UO.Grab(amount:Integer, id:String) -> Integer
UO.Grab(amount:String, id:String) -> Integer
UO.Grab(Count:Any, ObjID:Any) -> Any
UO.Grab(amount:Any, item:Any, container:Any) -> Integer
UO.Grab(amount:Any, item:Any, container:Any, timeout:Any) -> Integer

Регистр имени не важен. Any — динамическое значение Basic; Unit — отсутствие возвращаемого значения. Integer — знаковое 32-битное число, Decimal — число с плавающей точкой. Правила типов, serial, индексов и ожиданий.

Параметры

Имя Назначение
id Object/mobile serial or a supported Basic object reference such as self/backpack/lasttarget/saved object name; hexadecimal and decimal serials are accepted by Variant overloads.
amount Позиционный аргумент этой перегрузки. Подробности использования указаны в описании/фактической ветви runtime ниже.
Count Позиционный аргумент этой перегрузки. Подробности использования указаны в описании/фактической ветви runtime ниже.
ObjID Object/mobile/item serial. Use 0 only when the command explicitly documents 0 as a sentinel.
item Идентификатор объекта/контейнера или селектор, указанный в описании команды. 0 и -1 не являются универсальными заменителями serial.
container Идентификатор объекта/контейнера или селектор, указанный в описании команды. 0 и -1 не являются универсальными заменителями serial.
timeout Время в миллисекундах, если в описании команды не указана другая единица. Проверяйте отдельно значение 0.

Параметры обязательны внутри каждой показанной сигнатуры. Опустить аргумент можно только при наличии более короткой перегрузки; пропуск позиции посередине не подразумевается.

Примеры

Каждый блок — самостоятельный скрипт из мануала проекта. Параметры демонстрационного объекта/контейнера и условия действия необходимо сопоставить с вашей игровой ситуацией.

Пример 1

SUB Main()
    VAR result = UO.Grab(1, self)
END SUB

Пример 2

SUB Main()
    VAR result = UO.Grab()
END SUB

Пример 3

SUB Main()
    VAR result = UO.Grab(0)
END SUB

Пример 4

SUB Main()
    VAR result = UO.Grab()
    UO.Print(CStr(result))
END SUB

Пример 5

SUB Main()
    VAR arg1 = 1 # amount
    VAR arg2 = self # item
    VAR arg3 = backpack # container
    VAR arg4 = 1000 # timeout
    VAR result = UO.Grab(arg1, arg2, arg3, arg4)
    UO.Print(CStr(result))
END SUB

Пример 6

SUB Main()
    VAR result = UO.Grab(self)
    UO.Print(CStr(result))
END SUB

Пример 7

SUB Main()
    VAR result = UO.Grab(1, self)
    UO.Print(CStr(result))
END SUB

Пример 8

SUB Main()
    VAR result = UO.Grab(1, self, backpack)
    UO.Print(CStr(result))
END SUB

Пример 9

SUB Main()
    VAR result = UO.Grab()
    # Пример порога; выберите подходящий смыслу команды.
    IF result > 0 THEN
        UO.Print(CStr(result))
    END IF
END SUB

Пример 10

FUNCTION ReadResult()
    VAR result = UO.Grab()
    RETURN result
END FUNCTION

SUB Main()
    VAR answer = ReadResult()
    UO.Print(CStr(answer))
END SUB
Реализация и проверка контракта
  • InjectionScript.Runtime.InjectionApiUO+<>c__DisplayClass38_0.<RegisterStealthCompatibility>b__0
  • InjectionScript.Runtime.InjectionApiUO.<Register>b__37_20
  • InjectionScript.Runtime.InjectionApiUO.Grab

Соответствующая ветвь совместимого обработчика в InjectionApiUO.cs. Arg(i)/Text(i) читают позицию с нуля; bridge обращается к клиенту. Прямые типизированные перегрузки перечислены выше и могут иметь отдельный маршрут.

return new InjectionValue(CompactGrab(arguments));

Источник реестра и отчёт сверки. Примеры проверяются загрузчиком/парсером включённого runtime. Действия на игровом сервере этой проверкой не исполняются.

⚠️ **GitHub.com Fallback** ⚠️