Skip to content

API UO FindCount

Codex edited this page Sep 19, 2026 · 4 revisions

UO.FindCount

Оглавление · Алфавитный указатель · Search

ClassicUO • Runtime API

Читает количество единиц в указанной стопке, если передан ID. Форма без аргументов сохраняет отдельный смысл: число объектов последнего поиска.

Точный синтаксис

UO.FindCount() -> Integer
UO.FindCount(id:Any) -> Integer

Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.

Параметры

  • id — Serial/ID конкретного объекта: Integer, десятичная/hex-строка или установленный алиас self, backpack, lasttarget, lastobject либо имя AddObject. Это не graphic/type. Необязательный аргумент. При переданном ID читается текущий Amount именно этого предмета. Алиас finditem явно выбирает первый результат поиска. Без аргумента возвращается число найденных объектов.

Возвращает

Integer: FindCount(id) — количество единиц в указанной стопке (Amount); обычный одиночный предмет даёт 1, неизвестный/удалённый предмет, ошибочный алиас или Mobile дают 0. FindCount() без ID — число объектов в последнем поиске: одна стопка считается одним объектом независимо от Amount. Например, три стопки по 20, 50 и 100: FindCount()=3, FindCount(ID второй стопки)=50, FindFullQuantity()=170.

Поведение

  • FindCount(id) эквивалентна чтению GetQuantity(id), не запускает поиск и не изменяет FindItem/FindCount()/FindFullQuantity/GetFoundItems.
  • ID означает serial конкретного предмета, не type. Изменение количества отражается при следующем вызове FindCount(id). Количество в удалённом предмете равно 0; это не автоматический поиск другой стопки.
  • Исходная совместимость без аргументов сохранена: FindCount() считает объекты. Справка Stealth: https://stealth.od.ua/api/FindCount/ ; FindQuantity() читает одну найденную стопку, FindFullQuantity() суммирует единицы по последнему поиску.
  • Данные принадлежат последнему обычному поиску этого скрипта. FindType с 1–5 аргументами, FindTypeEx, Count/CountEx/CountGround заменяют результаты. Расширенные фильтрованные команды персонажей не обязаны менять этот снимок.
  • Новый поиск без совпадений обнуляет FindItem, FindCount и FindFullQuantity и очищает GetFoundItems. Чтение результата само по себе новый поиск не запускает.

Примеры

Пример 1. Количество в конкретной стопке по ID

# Количество в конкретной стопке по ID
#
# Читает количество единиц в указанной стопке, если передан ID. Форма без аргументов сохраняет
# отдельный смысл: число объектов последнего поиска.
#
# Integer: FindCount(id)количество единиц в указанной стопке (Amount); обычный одиночный
# предмет даёт 1, неизвестный/удалённый предмет, ошибочный алиас или Mobile дают 0. FindCount()
# без IDчисло объектов в последнем поиске: одна стопка считается одним объектом независимо от
# Amount. Например, три стопки по 20, 50 и 100: FindCount()=3, FindCount(ID второй стопки)=50,
# FindFullQuantity()=170.

SUB Main()
    # id=0x40001234пример serial стопки. Замените своим ID предмета.
    # Стопка из 50 единиц вернёт 50; одиночный предмет1; неизвестный ID0.

    VAR amount = UO.FindCount('0x40001234')
    UO.Print('Units: ' + STR(amount))
END SUB

Разбор параметров и выполнения:

  • id=0x40001234 — пример serial стопки. Замените своим ID предмета.
  • Стопка из 50 единиц вернёт 50; одиночный предмет — 1; неизвестный ID — 0.

Пример 2. Найти предмет и прочитать его количество

# Найти предмет и прочитать его количество
#
# Читает количество единиц в указанной стопке, если передан ID. Форма без аргументов сохраняет
# отдельный смысл: число объектов последнего поиска.
#
# Integer: FindCount(id)количество единиц в указанной стопке (Amount); обычный одиночный
# предмет даёт 1, неизвестный/удалённый предмет, ошибочный алиас или Mobile дают 0. FindCount()
# без IDчисло объектов в последнем поиске: одна стопка считается одним объектом независимо от
# Amount. Например, три стопки по 20, 50 и 100: FindCount()=3, FindCount(ID второй стопки)=50,
# FindFullQuantity()=170.

SUB Main()
    # FindType получает type золота 0x0EED, любой hue=-1, область backpack и возвращает serial.
    # В FindCount передаётся возвращённый serial item. Сам type 0x0EED сюда передавать нельзя.

    VAR item = UO.FindType(0x0EED, -1, 'backpack')
    IF item <> '' THEN
        VAR units = UO.FindCount(item)
        UO.Print(STR(units))
    END IF
END SUB

Разбор параметров и выполнения:

  • FindType получает type золота 0x0EED, любой hue=-1, область backpack и возвращает serial.
  • В FindCount передаётся возвращённый serial item. Сам type 0x0EED сюда передавать нельзя.

Пример 3. Количество в последней цели и в сохранённом имени

# Количество в последней цели и в сохранённом имени
#
# Читает количество единиц в указанной стопке, если передан ID. Форма без аргументов сохраняет
# отдельный смысл: число объектов последнего поиска.
#
# Integer: FindCount(id)количество единиц в указанной стопке (Amount); обычный одиночный
# предмет даёт 1, неизвестный/удалённый предмет, ошибочный алиас или Mobile дают 0. FindCount()
# без IDчисло объектов в последнем поиске: одна стопка считается одним объектом независимо от
# Amount. Например, три стопки по 20, 50 и 100: FindCount()=3, FindCount(ID второй стопки)=50,
# FindFullQuantity()=170.

SUB Main()
    # lasttarget должен указывать на предмет. AddObject сохраняет этот serial под именем
    # selected_stack.
    # FindCount разрешает имя в ID и читает Amount. Если выбрана цель-персонаж, возвращается 0.

    VAR item = UO.GetSerial('lasttarget')
    IF UO.Exists(item) THEN
        UO.AddObject('selected_stack', item)
        UO.Print(STR(UO.FindCount('selected_stack')))
    END IF
END SUB

Разбор параметров и выполнения:

  • lasttarget должен указывать на предмет. AddObject сохраняет этот serial под именем selected_stack.
  • FindCount разрешает имя в ID и читает Amount. Если выбрана цель-персонаж, возвращается 0.

Пример 4. Измерить результат поиска золота

# Измерить результат поиска золота
#
# Читает количество единиц в указанной стопке, если передан ID. Форма без аргументов сохраняет
# отдельный смысл: число объектов последнего поиска.
#
# Integer: FindCount(id)количество единиц в указанной стопке (Amount); обычный одиночный
# предмет даёт 1, неизвестный/удалённый предмет, ошибочный алиас или Mobile дают 0. FindCount()
# без IDчисло объектов в последнем поиске: одна стопка считается одним объектом независимо от
# Amount. Например, три стопки по 20, 50 и 100: FindCount()=3, FindCount(ID второй стопки)=50,
# FindFullQuantity()=170.

SUB Main()
    # type=0x0EEDзолото; color=-1любой hue; backpackтолько прямое содержимое рюкзака в этой
    # форме FindType.
    # Integerчисло найденных items/персонажей, 0 без совпадений. Одна стопка из 1000 единиц
    # считается одним объектом. Это не сумма единиц, для неё нужен FindFullQuantity.

    VAR found = UO.FindType(0x0EED, -1, 'backpack')
    VAR value = UO.FindCount()
    UO.Print(STR(value))
END SUB

Разбор параметров и выполнения:

  • type=0x0EED — золото; color=-1 — любой hue; backpack — только прямое содержимое рюкзака в этой форме FindType.
  • Integer — число найденных items/персонажей, 0 без совпадений. Одна стопка из 1000 единиц считается одним объектом. Это не сумма единиц, для неё нужен FindFullQuantity.

Пример 5. Сравнить предметы и единицы

# Сравнить предметы и единицы
#
# Читает количество единиц в указанной стопке, если передан ID. Форма без аргументов сохраняет
# отдельный смысл: число объектов последнего поиска.
#
# Integer: FindCount(id)количество единиц в указанной стопке (Amount); обычный одиночный
# предмет даёт 1, неизвестный/удалённый предмет, ошибочный алиас или Mobile дают 0. FindCount()
# без IDчисло объектов в последнем поиске: одна стопка считается одним объектом независимо от
# Amount. Например, три стопки по 20, 50 и 100: FindCount()=3, FindCount(ID второй стопки)=50,
# FindFullQuantity()=170.

SUB Main()
    # Все четыре чтения относятся к одному поиску, пока между ними не вызван другой поиск.
    # Например, две стопки по 50: Items=2, First stack=50, All units=100; First ID содержит
    # уникальный ID одной стопки.

    VAR found = UO.FindType(0x0EED, -1, 'backpack')
    UO.Print('Items: ' + STR(UO.FindCount()))
    UO.Print('First stack: ' + STR(UO.FindQuantity()))
    UO.Print('All units: ' + STR(UO.FindFullQuantity()))
    UO.Print('First ID: 0x' + Hex(UO.FindItem()))
END SUB

Разбор параметров и выполнения:

  • Все четыре чтения относятся к одному поиску, пока между ними не вызван другой поиск.
  • Например, две стопки по 50: Items=2, First stack=50, All units=100; First ID содержит уникальный ID одной стопки.

Пример 6. Сохранить результат до следующего поиска

# Сохранить результат до следующего поиска
#
# Читает количество единиц в указанной стопке, если передан ID. Форма без аргументов сохраняет
# отдельный смысл: число объектов последнего поиска.
#
# Integer: FindCount(id)количество единиц в указанной стопке (Amount); обычный одиночный
# предмет даёт 1, неизвестный/удалённый предмет, ошибочный алиас или Mobile дают 0. FindCount()
# без IDчисло объектов в последнем поиске: одна стопка считается одним объектом независимо от
# Amount. Например, три стопки по 20, 50 и 100: FindCount()=3, FindCount(ID второй стопки)=50,
# FindFullQuantity()=170.

SUB Main()
    # Первый typeзолото, второй 0x0F7Aотдельный тип реагента. Новая команда меняет общий
    # снимок.
    # saved остаётся числом из первого поиска. Второе чтение относится к реагенту даже при
    # отсутствии совпадений.

    VAR found = UO.FindType(0x0EED, -1, 'backpack')
    VAR saved = UO.FindCount()
    found = UO.FindType(0x0F7A, -1, 'backpack')
    UO.Print('Saved: ' + STR(saved))
    UO.Print('Current: ' + STR(UO.FindCount()))
END SUB

Разбор параметров и выполнения:

  • Первый type — золото, второй 0x0F7A — отдельный тип реагента. Новая команда меняет общий снимок.
  • saved остаётся числом из первого поиска. Второе чтение относится к реагенту даже при отсутствии совпадений.

Clone this wiki locally