API UO GetCliloc - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
UO.GetCliloc
Оглавление · Алфавитный указатель · Localization
ClassicUO • Runtime API
Читает готовый текст свойств объекта из OPL. GetTooltip и GetCliloc являются синонимами.
Точный синтаксис
UO.GetCliloc(ObjID:Any) -> Any
Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.
Параметры
ObjID— Обязательный serial/ID объекта, не type и не cliloc. Допускается Integer, десятичная/hex-строка, self, backpack, lasttarget, finditem или имя AddObject. 0 означает отсутствие объекта.
Возвращает
String — имя и текст свойств, разделённые переводом строки, либо только непустая часть. Пустая строка при ObjID=0 или если свойства не получены. Это готовый текст; числовые ID cliloc и параметры возвращает GetTooltipRec.
Поведение
- Если запись уже есть в OPL, возвращается её текст сразу. При отсутствии записи отправляется запрос свойств и ожидается ответ до 200 мс с проверкой каждые 10 мс. Пауза не означает гарантированное получение ответа.
- Нужны доступный объект и поддержка свойств сервером. Пустой результат не является доказательством отсутствия объекта: используйте Exists отдельно.
- Текст может содержать разметку сервера. Не разбирайте числовые свойства по позиции строки; для этого используйте GetTooltipRec.
- Первичный справочник: https://stealth.od.ua/api/GetCliloc/ .
Примеры
Пример 1. Свойства предмета в рюкзаке
# Свойства предмета в рюкзаке
#
# Читает готовый текст свойств объекта из OPL. GetTooltip и GetCliloc являются синонимами.
#
# String — имя и текст свойств, разделённые переводом строки, либо только непустая часть. Пустая
# строка при ObjID=0 или если свойства не получены. Это готовый текст; числовые ID cliloc и
# параметры возвращает GetTooltipRec.
SUB Main()
# FindType: золото 0x0EED, любой hue=-1, прямое содержимое backpack. ObjID=item — найденный
# serial.
# Результат getter — текст, а не количество золота. Для количества используйте FindCount(item).
VAR item = UO.FindType(0x0EED, -1, 'backpack')
IF item <> '' THEN
UO.Print(UO.GetCliloc(item))
END IF
END SUB
Разбор параметров и выполнения:
- FindType: золото 0x0EED, любой hue=-1, прямое содержимое backpack. ObjID=item — найденный serial.
- Результат getter — текст, а не количество золота. Для количества используйте FindCount(item).
Пример 2. Обработать отсутствие ответа
# Обработать отсутствие ответа
#
# Читает готовый текст свойств объекта из OPL. GetTooltip и GetCliloc являются синонимами.
#
# String — имя и текст свойств, разделённые переводом строки, либо только непустая часть. Пустая
# строка при ObjID=0 или если свойства не получены. Это готовый текст; числовые ID cliloc и
# параметры возвращает GetTooltipRec.
SUB Main()
# ObjID=lasttarget должен указывать на нужный объект.
# Пустая строка обрабатывается отдельно; автоматически повторять запрос в бесконечном цикле не
# нужно.
VAR text = UO.GetCliloc('lasttarget')
IF text = '' THEN
UO.Print('No properties received')
ELSE
UO.Print(text)
END IF
END SUB
Разбор параметров и выполнения:
- ObjID=lasttarget должен указывать на нужный объект.
- Пустая строка обрабатывается отдельно; автоматически повторять запрос в бесконечном цикле не нужно.
Пример 3. Сохранить текст до следующего действия
# Сохранить текст до следующего действия
#
# Читает готовый текст свойств объекта из OPL. GetTooltip и GetCliloc являются синонимами.
#
# String — имя и текст свойств, разделённые переводом строки, либо только непустая часть. Пустая
# строка при ObjID=0 или если свойства не получены. Это готовый текст; числовые ID cliloc и
# параметры возвращает GetTooltipRec.
SUB Main()
# id и saved — отдельные переменные: уникальный ID объекта и снимок его текста.
# saved не изменится автоматически, если свойства на сервере позже поменяются.
VAR id = UO.GetSerial('lasttarget')
VAR saved = UO.GetCliloc(id)
UO.Print('Object: 0x' + Hex(id))
UO.Print(saved)
END SUB
Разбор параметров и выполнения:
- id и saved — отдельные переменные: уникальный ID объекта и снимок его текста.
- saved не изменится автоматически, если свойства на сервере позже поменяются.