API UO GetWorldItems - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
Оглавление · Алфавитный указатель · Search
ClassicUO • Runtime API
Возвращает массив ID предметов мира либо выбранного контейнера.
UO.GetWorldItems() -> Any
UO.GetWorldItems(type:Any) -> Any
UO.GetWorldItems(type:Any, color:Any) -> Any
UO.GetWorldItems(type:Any, color:Any, distance:Any) -> Any
UO.GetWorldItems(type:Any, color:Any, distance:Any, container:Any) -> Any
UO.GetWorldItems(type:Any, color:Any, distance:Any, container:Any, nearest:Any) -> Any
UO.GetWorldItems(type:Any, color:Any, distance:Any, container:Any, nearest:Any, maxZ:Any) -> Any
Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.
-
type— Первый аргумент фильтрованной формы: graphic/type, -1 или 0xFFFF — любой. Это не serial. Без всех аргументов используется отдельная форма без фильтрации. -
color— Hue; по умолчанию -1, любой цвет. 0xFFFF также допускает любой hue. -
distance— Радиус в клетках по X/Y. Отрицательное значение или отсутствие используют FindDistance; 0 означает ту же клетку. Для контейнера проверяется расстояние до контейнера, не его внутренние X/Y. -
container— По умолчанию земля. ground, числовые 0/1 и их строки — земля. backpack, my и числовой -1 — прямое содержимое рюкзака. Serial/hex-строка/алиас контейнера — его прямое содержимое; self выбирает предметы, чей родитель персонаж. Неизвестное имя и отсутствующий рюкзак дают пустой массив, не землю. -
nearest— По умолчанию FALSE. TRUE сортирует по расстоянию, затем по числовому serial. Для одного контейнера расстояние у всех результатов одинаково. -
maxZ— Допустимая разница высот относительно self. Отрицательное значение или отсутствие используют FindVertical; 0 требует ту же высоту. В контейнере берётся высота самого контейнера.
Array — serial/ID предметов, не type, координаты или Amount. Пустой Array без совпадений. GetWorldItems() возвращает все загруженные предметы вне контейнеров без Ignore/дальности/высоты; GetWorldItems(type,...) использует перечисленные фильтры и Ignore. NPC/игроки не включаются ни в одну форму.
- Читаются данные, уже загруженные клиентом. Команда не открывает контейнер, не перемещает предметы и не загружает объекты со всего сервера.
- Array — массив с индексами от 0. Сохраняйте его в VAR, проверяйте GetArrayLength перед доступом. Элементы могут исчезнуть из мира после создания снимка: перед действием проверяйте Exists(serial).
- Снимок FindItem/FindCount/GetFoundItems не меняется. Команда не открывает контейнер и не обходит вложенные сумки.
- Для отключения ограничений недостаточно -1: это выбор текущей настройки, а не бесконечного радиуса. Укажите нужное неотрицательное distance/maxZ либо используйте форму без аргументов для всех загруженных предметов земли.
# Посчитать все загруженные предметы земли
#
# Возвращает массив ID предметов мира либо выбранного контейнера.
#
# Array<Integer> — serial/ID предметов, не type, координаты или Amount. Пустой Array без
# совпадений. GetWorldItems() возвращает все загруженные предметы вне контейнеров без
# Ignore/дальности/высоты; GetWorldItems(type,...) использует перечисленные фильтры и Ignore.
# NPC/игроки не включаются ни в одну форму.
SUB Main()
# Параметров нет: специальная форма без фильтров.
# Результат не означает все предметы карты или сервера. Ignore здесь не применяется.
VAR items = UO.GetWorldItems()
UO.Print(STR(GetArrayLength(items)))
END SUBРазбор параметров и выполнения:
- Параметров нет: специальная форма без фильтров.
- Результат не означает все предметы карты или сервера. Ignore здесь не применяется.
# Найти ближайшую стопку нужного типа и цвета
#
# Возвращает массив ID предметов мира либо выбранного контейнера.
#
# Array<Integer> — serial/ID предметов, не type, координаты или Amount. Пустой Array без
# совпадений. GetWorldItems() возвращает все загруженные предметы вне контейнеров без
# Ignore/дальности/высоты; GetWorldItems(type,...) использует перечисленные фильтры и Ignore.
# NPC/игроки не включаются ни в одну форму.
SUB Main()
# type=0x0EED — золото, color=-1 — любой; distance=5, container=ground, nearest=TRUE, maxZ=3.
# Первая запись — ближайший подходящий неигнорируемый предмет; расстояние не проверяет стены или
# доступность переноса.
VAR items = UO.GetWorldItems(0x0EED, -1, 5, 'ground', TRUE, 3)
IF GetArrayLength(items) > 0 THEN
VAR item = items[0]
IF UO.Exists(item) THEN
UO.Print('Nearest ID: 0x' + Hex(item))
END IF
END IF
END SUBРазбор параметров и выполнения:
- type=0x0EED — золото, color=-1 — любой; distance=5, container=ground, nearest=TRUE, maxZ=3.
- Первая запись — ближайший подходящий неигнорируемый предмет; расстояние не проверяет стены или доступность переноса.
# Посчитать прямое содержимое рюкзака
#
# Возвращает массив ID предметов мира либо выбранного контейнера.
#
# Array<Integer> — serial/ID предметов, не type, координаты или Amount. Пустой Array без
# совпадений. GetWorldItems() возвращает все загруженные предметы вне контейнеров без
# Ignore/дальности/высоты; GetWorldItems(type,...) использует перечисленные фильтры и Ignore.
# NPC/игроки не включаются ни в одну форму.
SUB Main()
# Любые type/color; my выбирает рюкзак. Расстояние 20 и перепад Z 255 относятся к контейнеру.
# FALSE сохраняет исходный порядок.
# Считаются прямые items, не единицы в стопках и не содержимое вложенных сумок. Без рюкзака
# возвращается пустой Array.
VAR items = UO.GetWorldItems(-1, -1, 20, 'my', FALSE, 255)
UO.Print(STR(GetArrayLength(items)))
END SUBРазбор параметров и выполнения:
- Любые type/color; my выбирает рюкзак. Расстояние 20 и перепад Z 255 относятся к контейнеру. FALSE сохраняет исходный порядок.
- Считаются прямые items, не единицы в стопках и не содержимое вложенных сумок. Без рюкзака возвращается пустой Array.