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