-
Notifications
You must be signed in to change notification settings - Fork 0
API 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. Чтение результата само по себе новый поиск не запускает.
# Количество в конкретной стопке по 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; неизвестный ID — 0.
VAR amount = UO.FindCount('0x40001234')
UO.Print('Units: ' + STR(amount))
END SUBРазбор параметров и выполнения:
- id=0x40001234 — пример serial стопки. Замените своим ID предмета.
- Стопка из 50 единиц вернёт 50; одиночный предмет — 1; неизвестный ID — 0.
# Найти предмет и прочитать его количество
#
# Читает количество единиц в указанной стопке, если передан 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 сюда передавать нельзя.
# Количество в последней цели и в сохранённом имени
#
# Читает количество единиц в указанной стопке, если передан 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.
# Измерить результат поиска золота
#
# Читает количество единиц в указанной стопке, если передан 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.
# Сравнить предметы и единицы
#
# Читает количество единиц в указанной стопке, если передан 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 одной стопки.
# Сохранить результат до следующего поиска
#
# Читает количество единиц в указанной стопке, если передан 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 остаётся числом из первого поиска. Второе чтение относится к реагенту даже при отсутствии совпадений.
ClassicUO - Bad Newbie & Basic IDE Edition