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 недостаточно для вывода о положении предмета.