Skip to content

API UO CountEx

Codex edited this page Oct 17, 2026 · 11 revisions

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

UO.CountEx

int UO.CountEx(object? objType, object? color, object? container);

Повертає кількість одиниць предметів безпосередньо в контейнері; вкладені сумки не обходить. Для землі враховує також відповідних персонажів/NPC, по одиниці на кожного. FindDistance, FindVertical та Ignore залишаються чинними. Не змінює FindItem, FindCount, FindFullQuantity чи GetFoundItems.

objType — графіка/type, а не serial. color — відтінок. Значення -1 або 0xFFFF означає будь-який type/відтінок. container — ID контейнера, UO.Backpack() для рюкзака або UO.Ground() для землі. Результат int: сума max(1, Amount), 0 — збігів немає. Враховуються лише вже отримані дані; автоматичного відкриття сумок немає.

Приклади

int goldUnits = UO.CountEx(0x0EED, -1, UO.Backpack());
UO.Print(goldUnits.ToString());
UO.FindTypeEx(0x0EED, -1, UO.Backpack(), false);
int previousFoundItem = UO.FindItem();
int bandages = UO.CountEx(0x0E21, -1, UO.Backpack());
bool searchPreserved = UO.FindItem() == previousFoundItem;
UO.Print($"{bandages}; {searchPreserved}");
int units = CountBackpackUnits(0x0EED);
UO.Print(units.ToString());

int CountBackpackUnits(int graphic)
{
    return UO.CountEx(graphic, -1, UO.Backpack());
}
var counter = new InventoryCounter(UO);
UO.Print(counter.CountGold().ToString());

class InventoryCounter(ClassicUO.CSharp.CSharpGameApi api)
{
    public int CountGold() => api.CountEx(0x0EED, -1, api.Backpack());
}

Внутрішня реалізація

ClassicUOInjectionApiBridge.CountDirectItems → MatchesFindIdentity / MatchesFindContainer / MatchesFindMobile.

Clone this wiki locally