-
Notifications
You must be signed in to change notification settings - Fork 0
API UO CountEx
Codex edited this page Sep 16, 2026
·
4 revisions
ClassicUO • Runtime API
Выполняет поиск и суммирует единицы найденных предметов.
UO.CountEx(ObjType:Any, Color:Any, Container:Any) -> Integer
Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.
-
type / ObjType— Graphic/type предмета (например 0x0EED), не serial. -1 или 0xFFFF — любой type. -
color / Color— Hue предмета; -1 или 0xFFFF — любой цвет. В Count(type) и CountGround(type) по умолчанию -1. -
container / Container— В Count(type,color,container): my или числовой -1 — все предметы, корневой владелец которых self (включая экипировку и вложенные сумки); backpack/serial — содержимое указанного контейнера рекурсивно; UO.Ground(), явные 0/"0", ground или 1 — предметы и Mobile на земле. В CountEx числовой -1 и 0xFFFFFFFF тоже означают землю, а конкретный serial — только прямое содержимое. CountEx принимает backpack и имена AddObject; неизвестное имя вызывает ошибку скрипта. Проверяйте полученный serial до вызова: явный ноль выбирает землю, а не отсутствующий контейнер.
Integer — сумма max(1, Amount) найденных предметов; каждый Mobile добавляет 1. 0 без совпадений. Это число единиц, не число стопок. Одновременно обновляются FindItem, FindCount, FindFullQuantity и GetFoundItems.
- Count с одним или двумя аргументами ищет принадлежащие self предметы, включая экипировку и вложенные сумки. CountGround всегда ищет землю, включая подходящие Mobile, но исключая self.
- Count(type,color,serial) обходит вложенные сумки, CountEx(type,color,serial) — только прямое содержимое. Ограничения FindDistance/FindVertical применяются к земле; Ignore применяется к найденным объектам.
- Результат зависит от уже полученного содержимого контейнеров. Автоматического открытия и серверного запроса полного инвентаря нет.
- В этом Basic CountEx заменяет общий результат поиска так же, как Count. Это отличается от справки Stealth CountEx, где поля поиска восстанавливаются. Сохраните UO.GetFoundItems() до подсчёта, если прежний массив ID ещё нужен.
# Посчитать единицы золота
#
# Выполняет поиск и суммирует единицы найденных предметов.
#
# Integer — сумма max(1, Amount) найденных предметов; каждый Mobile добавляет 1. 0 без
# совпадений. Это число единиц, не число стопок. Одновременно обновляются FindItem, FindCount,
# FindFullQuantity и GetFoundItems.
SUB Main()
# type=0x0EED, color=-1. Область — рюкзак; учитывайте различие рекурсивности Count/CountEx.
# Одна стопка из 1000 даст units=1000, не 1.
VAR units = UO.CountEx(0x0EED, -1, 'backpack')
UO.Print('Units: ' + STR(units))
END SUBРазбор параметров и выполнения:
- type=0x0EED, color=-1. Область — рюкзак; учитывайте различие рекурсивности Count/CountEx.
- Одна стопка из 1000 даст units=1000, не 1.
# Показать единицы и число объектов отдельно
#
# Выполняет поиск и суммирует единицы найденных предметов.
#
# Integer — сумма max(1, Amount) найденных предметов; каждый Mobile добавляет 1. 0 без
# совпадений. Это число единиц, не число стопок. Одновременно обновляются FindItem, FindCount,
# FindFullQuantity и GetFoundItems.
SUB Main()
# FindCount читается сразу после Count, до другого поиска.
# Две стопки по 50 дают 2 items и 100 units.
VAR units = UO.CountEx(0x0EED, -1, 'backpack')
VAR items = UO.FindCount()
UO.Print(STR(items) + ' items, ' + STR(units) + ' units')
END SUBРазбор параметров и выполнения:
- FindCount читается сразу после Count, до другого поиска.
- Две стопки по 50 дают 2 items и 100 units.
# Продолжать только при достаточном количестве
#
# Выполняет поиск и суммирует единицы найденных предметов.
#
# Integer — сумма max(1, Amount) найденных предметов; каждый Mobile добавляет 1. 0 без
# совпадений. Это число единиц, не число стопок. Одновременно обновляются FindItem, FindCount,
# FindFullQuantity и GetFoundItems.
SUB Main()
# 100 — порог единиц в этом примере.
# Это проверка снимка данных, не резервирование предметов. Между проверкой и переносом
# количество может измениться.
VAR units = UO.CountEx(0x0EED, -1, 'backpack')
IF units >= 100 THEN
UO.Print('Enough units known to the client')
ELSE
UO.Print('Not enough known units')
END IF
END SUBРазбор параметров и выполнения:
- 100 — порог единиц в этом примере.
- Это проверка снимка данных, не резервирование предметов. Между проверкой и переносом количество может измениться.
ClassicUO - Bad Newbie & Basic IDE Edition