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

UO.GetLayer

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

ClassicUO • Runtime API

Читает фактический слой экипировки предмета и преобразует его в имя слоя Basic.

Точный синтаксис

UO.GetLayer() -> String
UO.GetLayer(id:Any) -> String

Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.

Параметры

  • id — Serial конкретного объекта либо разрешаемый алиас, например "self", "backpack", "lasttarget" или имя, сохранённое AddObject. Graphic/type сюда не передаётся. В форме без аргументов используется self.

Возвращает

String — имя слоя, например "Rhand", "Lhand", "Hat", "Bpack" или "Mount". Возвращается первое каноническое имя для номера слоя, поэтому Helmet выводится как "Hat", а Backpack — как "Bpack". Нулевой слой, неизвестный предмет или self дают "Invalid". Неизвестный ненулевой номер форматируется как "0xNN". Это не serial, не graphic и не высота Z.

Поведение

  • Команда читает локальные данные клиента. Она не посылает target и не меняет объект на сервере.
  • Число 0 может быть допустимым значением данных. Отсутствие объекта проверяйте Exists(serial), а не только значением его свойства.

Примеры

Пример 1. Определить слой предмета в правой руке

# Определить слой предмета в правой руке
#
# Читает фактический слой экипировки предмета и преобразует его в имя слоя Basic.
#
# String — имя слоя, например "Rhand", "Lhand", "Hat", "Bpack" или "Mount". Возвращается первое
# каноническое имя для номера слоя, поэтому Helmet выводится как "Hat", а Backpack — как
# "Bpack". Нулевой слой, неизвестный предмет или self дают "Invalid". Неизвестный ненулевой
# номер форматируется как "0xNN". Это не serial, не graphic и не высота Z.

SUB Main()
    # ObjAtLayer("Rhand") выбирает предмет на правой руке; 0 означает пустой слот.
    # GetLayer получает serial найденного предмета и возвращает строку "Rhand".

    VAR item = UO.ObjAtLayer('Rhand')
    IF item <> 0 THEN
        VAR layer = UO.GetLayer(item)
        UO.Print(layer)
    END IF
END SUB

Разбор параметров и выполнения:

  • ObjAtLayer("Rhand") выбирает предмет на правой руке; 0 означает пустой слот.
  • GetLayer получает serial найденного предмета и возвращает строку "Rhand".

Пример 2. Проверить имя слоя рюкзака

# Проверить имя слоя рюкзака
#
# Читает фактический слой экипировки предмета и преобразует его в имя слоя Basic.
#
# String — имя слоя, например "Rhand", "Lhand", "Hat", "Bpack" или "Mount". Возвращается первое
# каноническое имя для номера слоя, поэтому Helmet выводится как "Hat", а Backpack — как
# "Bpack". Нулевой слой, неизвестный предмет или self дают "Invalid". Неизвестный ненулевой
# номер форматируется как "0xNN". Это не serial, не graphic и не высота Z.

SUB Main()
    # id="backpack" — serial рюкзака текущего персонажа.
    # Проверяется каноническое имя Bpack, а не алиас Backpack.

    VAR layer = UO.GetLayer('backpack')
    IF layer = 'Bpack' THEN
        UO.Print('Player backpack layer')
    ELSE
        UO.Print('Layer: ' + layer)
    END IF
END SUB

Разбор параметров и выполнения:

  • id="backpack" — serial рюкзака текущего персонажа.
  • Проверяется каноническое имя Bpack, а не алиас Backpack.

Пример 3. Обработать отсутствие экипировки

# Обработать отсутствие экипировки
#
# Читает фактический слой экипировки предмета и преобразует его в имя слоя Basic.
#
# String — имя слоя, например "Rhand", "Lhand", "Hat", "Bpack" или "Mount". Возвращается первое
# каноническое имя для номера слоя, поэтому Helmet выводится как "Hat", а Backpack — как
# "Bpack". Нулевой слой, неизвестный предмет или self дают "Invalid". Неизвестный ненулевой
# номер форматируется как "0xNN". Это не serial, не graphic и не высота Z.

SUB Main()
    # lastobject должен быть актуальным алиасом предмета.
    # Invalid означает нулевой слой. Само по себе это не доказывает отсутствие предмета: предмет в
    # сумке тоже не экипирован.

    VAR layer = UO.GetLayer('lastobject')
    IF layer = 'Invalid' THEN
        UO.Print('No equipment layer')
    ELSE
        UO.Print('Equipment layer: ' + layer)
    END IF
END SUB

Разбор параметров и выполнения:

  • lastobject должен быть актуальным алиасом предмета.
  • Invalid означает нулевой слой. Само по себе это не доказывает отсутствие предмета: предмет в сумке тоже не экипирован.