API UO GetMobile - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
UO.GetMobile
Оглавление · Алфавитный указатель · Mobiles
ClassicUO • Runtime API
Собирает компактную запись свойств по одному ID.
Точный синтаксис
UO.GetMobile(ID:Any) -> Any
Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.
Параметры
ID— Serial/ID конкретного объекта: Integer, десятичная/hex-строка или установленный алиас self, backpack, lasttarget, lastobject либо имя AddObject. Это не graphic/type.
Возвращает
Array из 9 полей: [0] Integer serial, [1] String имя, [2] Integer X, [3] Integer Y, [4] Integer Z, [5] Integer HP, [6] Integer MaxHP, [7] Integer notoriety, [8] Integer направление 0..7. Для неизвестного ID массив тоже имеет 9 полей: переданный ID сохраняется, имя пустое, недоступные числовые свойства равны 0. Это не полный Pascal record TMobile.
Поведение
- Читаются данные, уже загруженные клиентом. Команда не открывает контейнер, не перемещает предметы и не загружает объекты со всего сервера.
- Array — массив с индексами от 0. Сохраняйте его в VAR, проверяйте GetArrayLength перед доступом. Элементы могут исчезнуть из мира после создания снимка: перед действием проверяйте Exists(serial).
- Наличие девяти полей не подтверждает существование персонажа; используйте Exists. Команда сама не проверяет, что ID принадлежит именно Mobile. Для предмета могут вернуться его имя/координаты и нулевые свойства персонажа.
- HP/MaxHP другого персонажа зависят от присланной сервером шкалы. Z — высота, не слой экипировки.
Примеры
Пример 1. Прочитать имя и здоровье своего персонажа
# Прочитать имя и здоровье своего персонажа
#
# Собирает компактную запись свойств по одному ID.
#
# Array из 9 полей: [0] Integer serial, [1] String имя, [2] Integer X, [3] Integer Y, [4]
# Integer Z, [5] Integer HP, [6] Integer MaxHP, [7] Integer notoriety, [8] Integer направление
# 0..7. Для неизвестного ID массив тоже имеет 9 полей: переданный ID сохраняется, имя пустое,
# недоступные числовые свойства равны 0. Это не полный Pascal record TMobile.
SUB Main()
# ID=self. [1] — имя, [5]/[6] — текущие и максимальные HP, а не Mana.
# Массив имеет фиксированные девять полей. Пустое имя и 0/0 возможны до входа в мир.
VAR mobile = UO.GetMobile('self')
UO.Print(mobile[1] + ': ' + STR(mobile[5]) + '/' + STR(mobile[6]))
END SUB
Разбор параметров и выполнения:
- ID=self. [1] — имя, [5]/[6] — текущие и максимальные HP, а не Mana.
- Массив имеет фиксированные девять полей. Пустое имя и 0/0 возможны до входа в мир.
Пример 2. Прочитать координаты выбранного персонажа
# Прочитать координаты выбранного персонажа
#
# Собирает компактную запись свойств по одному ID.
#
# Array из 9 полей: [0] Integer serial, [1] String имя, [2] Integer X, [3] Integer Y, [4]
# Integer Z, [5] Integer HP, [6] Integer MaxHP, [7] Integer notoriety, [8] Integer направление
# 0..7. Для неизвестного ID массив тоже имеет 9 полей: переданный ID сохраняется, имя пустое,
# недоступные числовые свойства равны 0. Это не полный Pascal record TMobile.
SUB Main()
# lasttarget должен указывать на персонажа. [2]/[3]/[4] — X/Y/Z мира.
# Сначала проверяется наличие объекта. Если target — предмет в сумке, координаты относятся к его
# гампу.
VAR target = UO.GetSerial('lasttarget')
IF UO.Exists(target) THEN
VAR mobile = UO.GetMobile(target)
UO.Print(STR(mobile[2]) + ',' + STR(mobile[3]) + ',' + STR(mobile[4]))
END IF
END SUB
Разбор параметров и выполнения:
- lasttarget должен указывать на персонажа. [2]/[3]/[4] — X/Y/Z мира.
- Сначала проверяется наличие объекта. Если target — предмет в сумке, координаты относятся к его гампу.
Пример 3. Проверить состояние выбранного Mobile
# Проверить состояние выбранного Mobile
#
# Собирает компактную запись свойств по одному ID.
#
# Array из 9 полей: [0] Integer serial, [1] String имя, [2] Integer X, [3] Integer Y, [4]
# Integer Z, [5] Integer HP, [6] Integer MaxHP, [7] Integer notoriety, [8] Integer направление
# 0..7. Для неизвестного ID массив тоже имеет 9 полей: переданный ID сохраняется, имя пустое,
# недоступные числовые свойства равны 0. Это не полный Pascal record TMobile.
SUB Main()
# [7] — значение notoriety, [8] — направление 0..7. Ни одно поле не является type.
# Команда читает известные данные, не направляет персонажа и не переключает боевой режим.
VAR target = UO.GetSerial('lasttarget')
IF UO.Exists(target) THEN
VAR mobile = UO.GetMobile(target)
UO.Print('Notoriety: ' + STR(mobile[7]))
UO.Print('Direction: ' + STR(mobile[8]))
END IF
END SUB
Разбор параметров и выполнения:
- [7] — значение notoriety, [8] — направление 0..7. Ни одно поле не является type.
- Команда читает известные данные, не направляет персонажа и не переключает боевой режим.