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

UO.GetQuantity

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

ClassicUO • Runtime API

Читает количество единиц в одном стеке предмета.

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

UO.GetQuantity(id:String) -> Integer
UO.GetQuantity(id:Integer) -> Integer
UO.GetQuantity(ObjID:Any) -> Any

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

Параметры

  • id / ObjID — Serial/ID объекта, а не graphic/type. Число, hex-строка, стандартное имя self/backpack/lasttarget/lastobject/lastcontainer/laststatus/finditem/lastcorpse или имя AddObject. Алиас должен быть установлен; существование проверяется Exists. В зарегистрированной форме без аргументов используется self. Для этой команды id обязателен.

Возвращает

Integer — поле Amount конкретного предмета. Стек из 1000 единиц обычно возвращает 1000; одиночный предмет — 1. Для неизвестного serial и для персонажа возвращается 0. Это не число дочерних предметов сундука и не лимит items команды MassMove.

Поведение

  • Читаются последние данные, уже известные клиенту; запрос обновления серверу не отправляется.
  • Неизвестный объект и ещё не полученное свойство могут иметь нулевое/пустое значение. Проверяйте Exists и условия конкретного действия.

Примеры

Пример 1. Посмотреть размер найденной стопки

# Посмотреть размер найденной стопки
#
# Читает количество единиц в одном стеке предмета.
#
# Integer — поле Amount конкретного предмета. Стек из 1000 единиц обычно возвращает 1000;
# одиночный предмет — 1. Для неизвестного serial и для персонажа возвращается 0. Это не число
# дочерних предметов сундука и не лимит items команды MassMove.

SUB Main()
    # FindType ищет type золота любого цвета в рюкзаке.
    # gold содержит один serial, поэтому amount относится только к одной найденной стопке.

    VAR gold = UO.FindType(0x0EED, -1, 'backpack')
    IF gold <> '' THEN
        VAR amount = UO.GetQuantity(gold)
        UO.Print('Units in this stack: ' + STR(amount))
    END IF
END SUB

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

  • FindType ищет type золота любого цвета в рюкзаке.
  • gold содержит один serial, поэтому amount относится только к одной найденной стопке.

Пример 2. Проверить минимальное количество

# Проверить минимальное количество
#
# Читает количество единиц в одном стеке предмета.
#
# Integer — поле Amount конкретного предмета. Стек из 1000 единиц обычно возвращает 1000;
# одиночный предмет — 1. Для неизвестного serial и для персонажа возвращается 0. Это не число
# дочерних предметов сундука и не лимит items команды MassMove.

SUB Main()
    # id=sample — последний использованный предмет.
    # 50 означает единицы в данном стеке. Здесь не подсчитываются 50 отдельных items.

    VAR sample = UO.GetSerial('lastobject')
    IF UO.Exists(sample) THEN
        IF UO.GetQuantity(sample) >= 50 THEN
            UO.Print('At least 50 units in this item')
        END IF
    END IF
END SUB

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

  • id=sample — последний использованный предмет.
  • 50 означает единицы в данном стеке. Здесь не подсчитываются 50 отдельных items.

Пример 3. Отличить количество стопок от единиц

# Отличить количество стопок от единиц
#
# Читает количество единиц в одном стеке предмета.
#
# Integer — поле Amount конкретного предмета. Стек из 1000 единиц обычно возвращает 1000;
# одиночный предмет — 1. Для неизвестного serial и для персонажа возвращается 0. Это не число
# дочерних предметов сундука и не лимит items команды MassMove.

SUB Main()
    # FindCount относится к результатам последнего поиска; GetQuantity — к одному serial.
    # Числа могут сильно различаться. MassMove quantity ограничивает целые items, включая стопки.

    VAR item = UO.FindType(0x0EED, -1, 'backpack')
    VAR stacks = UO.FindCount()
    IF item <> '' THEN
        VAR units = UO.GetQuantity(item)
        UO.Print('Matching items: ' + STR(stacks))
        UO.Print('Units in selected item: ' + STR(units))
    END IF
END SUB

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

  • FindCount относится к результатам последнего поиска; GetQuantity — к одному serial.
  • Числа могут сильно различаться. MassMove quantity ограничивает целые items, включая стопки.