API UO ContainerOf - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
UO.ContainerOf
Оглавление · Алфавитный указатель · Containers
ClassicUO • Runtime API
Читает непосредственного родителя предмета.
Точный синтаксис
UO.ContainerOf(name:Any) -> String
Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.
Параметры
name— Serial/ID конкретного объекта: Integer, десятичная/hex-строка или установленный алиас self, backpack, lasttarget, lastobject либо имя AddObject. Это не graphic/type.
Возвращает
String вида "0x40001234" — serial контейнера/персонажа-владельца. Для предмета на земле это "0x00000000" либо "0xFFFFFFFF". Для неизвестного имени/объекта или Mobile — "0x00000000". Это не graphic контейнера, не ID самого предмета и не корневой владелец вложенной сумки.
Поведение
- Читается поле Container локального предмета, без рекурсивного обхода и обращения к серверу. Проверяйте Exists до интерпретации нулевого результата. Ground использует два допустимых представления.
Примеры
Пример 1. Узнать контейнер предмета
# Узнать контейнер предмета
#
# Читает непосредственного родителя предмета.
#
# String вида "0x40001234" — serial контейнера/персонажа-владельца. Для предмета на земле это
# "0x00000000" либо "0xFFFFFFFF". Для неизвестного имени/объекта или Mobile — "0x00000000". Это
# не graphic контейнера, не ID самого предмета и не корневой владелец вложенной сумки.
SUB Main()
# item — serial найденной стопки. type=0x0EED передаётся только FindType.
# parent обозначает непосредственный рюкзак, не персонажа, в котором находится рюкзак.
VAR item = UO.FindType(0x0EED, -1, 'backpack')
IF item <> '' THEN
VAR parent = UO.ContainerOf(item)
UO.Print(CStr(parent))
END IF
END SUB
Разбор параметров и выполнения:
- item — serial найденной стопки. type=0x0EED передаётся только FindType.
- parent обозначает непосредственный рюкзак, не персонажа, в котором находится рюкзак.
Пример 2. Узнать владельца рюкзака
# Узнать владельца рюкзака
#
# Читает непосредственного родителя предмета.
#
# String вида "0x40001234" — serial контейнера/персонажа-владельца. Для предмета на земле это
# "0x00000000" либо "0xFFFFFFFF". Для неизвестного имени/объекта или Mobile — "0x00000000". Это
# не graphic контейнера, не ID самого предмета и не корневой владелец вложенной сумки.
SUB Main()
# Аргументом является сам рюкзак.
# Родителем экипированного рюкзака будет serial персонажа.
VAR bag = UO.GetSerial('backpack')
IF UO.Exists(bag) THEN
UO.Print(CStr(UO.ContainerOf(bag)))
END IF
END SUB
Разбор параметров и выполнения:
- Аргументом является сам рюкзак.
- Родителем экипированного рюкзака будет serial персонажа.
Пример 3. Проверить предмет на земле
# Проверить предмет на земле
#
# Читает непосредственного родителя предмета.
#
# String вида "0x40001234" — serial контейнера/персонажа-владельца. Для предмета на земле это
# "0x00000000" либо "0xFFFFFFFF". Для неизвестного имени/объекта или Mobile — "0x00000000". Это
# не graphic контейнера, не ID самого предмета и не корневой владелец вложенной сумки.
SUB Main()
# GetContent("ground") даёт ID предметов вне контейнеров.
# Оба представления земли допустимы. Одного нулевого родителя без Exists недостаточно для вывода
# о положении предмета.
VAR items = UO.GetContent('ground')
IF GetArrayLength(items) > 0 THEN
VAR item = items[0]
IF UO.Exists(item) THEN
UO.Print(CStr(UO.ContainerOf(item)))
END IF
END IF
END SUB
Разбор параметров и выполнения:
- GetContent("ground") даёт ID предметов вне контейнеров.
- Оба представления земли допустимы. Одного нулевого родителя без Exists недостаточно для вывода о положении предмета.