API UO GetWorldItems - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki

UO.GetWorldItems

Оглавление · Алфавитный указатель · 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 либо используйте форму без аргументов для всех загруженных предметов земли.

Примеры

Пример 1. Посчитать все загруженные предметы земли

# Посчитать все загруженные предметы земли
#
# Возвращает массив 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 здесь не применяется.

Пример 2. Найти ближайшую стопку нужного типа и цвета

# Найти ближайшую стопку нужного типа и цвета
#
# Возвращает массив 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.
  • Первая запись — ближайший подходящий неигнорируемый предмет; расстояние не проверяет стены или доступность переноса.

Пример 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.
⚠️ **GitHub.com Fallback** ⚠️