API UO GetContent - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
Оглавление · Алфавитный указатель · Containers
ClassicUO • Runtime API
Читает прямое содержимое контейнера или загруженные предметы на земле.
UO.GetContent(ID:Any) -> Any
Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.
-
ID— Serial/ID конкретного объекта: Integer, десятичная/hex-строка или установленный алиас self, backpack, lasttarget, lastobject либо имя AddObject. Это не graphic/type. Строки my/backpack выбирают рюкзак. Только явные 0, "0" или "ground" выбирают землю. Неизвестный алиас, отсутствующий рюкзак, отрицательный ID или неподходящий вид значения дают пустой массив.
Array — serial каждого прямого дочернего предмета. Для ground/0 — предметы вне контейнеров; учитываются обе обычные отметки земли 0 и 0xFFFFFFFF. Без записей возвращается пустой Array. Список содержит ID, не type и не слои.
- Читаются данные, уже загруженные клиентом. Команда не открывает контейнер, не перемещает предметы и не загружает объекты со всего сервера.
- Array — массив с индексами от 0. Сохраняйте его в VAR, проверяйте GetArrayLength перед доступом. Элементы могут исчезнуть из мира после создания снимка: перед действием проверяйте Exists(serial).
- Нет рекурсивного обхода вложенных сумок, сортировки по расстоянию, фильтра Ignore или FindDistance/FindVertical. Снимок обычного FindType не меняется.
- Неоткрытый сундук может выглядеть пустым: отсутствие полученных данных не доказывает пустоту на сервере. Сначала используйте открытие контейнера и дождитесь его содержимого.
# Получить размер списка
#
# Читает прямое содержимое контейнера или загруженные предметы на земле.
#
# Array<Integer> — serial каждого прямого дочернего предмета. Для ground/0 — предметы вне
# контейнеров; учитываются обе обычные отметки земли 0 и 0xFFFFFFFF. Без записей возвращается
# пустой Array. Список содержит ID, не type и не слои.
SUB Main()
# ID="backpack" — рюкзак текущего персонажа, только прямые вложенные предметы.
# Длина — число записей/ID. Это не сумма Amount в стопках. Пустой список даёт 0.
VAR items = UO.GetContent('backpack')
UO.Print(STR(GetArrayLength(items)))
END SUBРазбор параметров и выполнения:
- ID="backpack" — рюкзак текущего персонажа, только прямые вложенные предметы.
- Длина — число записей/ID. Это не сумма Amount в стопках. Пустой список даёт 0.
# Обойти все найденные ID
#
# Читает прямое содержимое контейнера или загруженные предметы на земле.
#
# Array<Integer> — serial каждого прямого дочернего предмета. Для ground/0 — предметы вне
# контейнеров; учитываются обе обычные отметки земли 0 и 0xFFFFFFFF. Без записей возвращается
# пустой Array. Список содержит ID, не type и не слои.
SUB Main()
# ID="backpack" — рюкзак текущего персонажа, только прямые вложенные предметы.
# items[i] — числовой serial. Hex используется только для вывода. Цикл не обращается за
# последним индексом.
VAR items = UO.GetContent('backpack')
VAR i = 0
WHILE i < GetArrayLength(items)
UO.Print('0x' + Hex(items[i]))
i = i + 1
WEND
END SUBРазбор параметров и выполнения:
- ID="backpack" — рюкзак текущего персонажа, только прямые вложенные предметы.
- items[i] — числовой serial. Hex используется только для вывода. Цикл не обращается за последним индексом.
# Проверить первую запись перед чтением
#
# Читает прямое содержимое контейнера или загруженные предметы на земле.
#
# Array<Integer> — serial каждого прямого дочернего предмета. Для ground/0 — предметы вне
# контейнеров; учитываются обе обычные отметки земли 0 и 0xFFFFFFFF. Без записей возвращается
# пустой Array. Список содержит ID, не type и не слои.
SUB Main()
# ID="backpack" — рюкзак текущего персонажа, только прямые вложенные предметы.
# Проверяются две разные вещи: запись в снимке и существование объекта сейчас. Порядок без явной
# сортировки не означает близость.
VAR items = UO.GetContent('backpack')
IF GetArrayLength(items) > 0 THEN
VAR first = items[0]
IF UO.Exists(first) THEN
UO.Print(UO.GetName(first))
END IF
ELSE
UO.Print('Empty list')
END IF
END SUBРазбор параметров и выполнения:
- ID="backpack" — рюкзак текущего персонажа, только прямые вложенные предметы.
- Проверяются две разные вещи: запись в снимке и существование объекта сейчас. Порядок без явной сортировки не означает близость.
# Получить все загруженные предметы земли
#
# Читает прямое содержимое контейнера или загруженные предметы на земле.
#
# Array<Integer> — serial каждого прямого дочернего предмета. Для ground/0 — предметы вне
# контейнеров; учитываются обе обычные отметки земли 0 и 0xFFFFFFFF. Без записей возвращается
# пустой Array. Список содержит ID, не type и не слои.
SUB Main()
# ID="ground" явно выбирает землю. NPC/игроки в этот список не включаются.
# Радиус поиска здесь не ограничивается FindDistance. Для фильтра type и расстояния есть
# GetWorldItems(type,color,distance).
VAR groundItems = UO.GetContent('ground')
UO.Print(STR(GetArrayLength(groundItems)))
END SUBРазбор параметров и выполнения:
- ID="ground" явно выбирает землю. NPC/игроки в этот список не включаются.
- Радиус поиска здесь не ограничивается FindDistance. Для фильтра type и расстояния есть GetWorldItems(type,color,distance).