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 означает нулевой слой. Само по себе это не доказывает отсутствие предмета: предмет в сумке тоже не экипирован.