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

UO.FindItem

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

ClassicUO • Runtime API

Читает serial первого результата последнего обычного поиска.

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

UO.FindItem() -> Any

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

Параметры

Параметров нет.

Возвращает

Integer — serial/ID первого найденного объекта, 0 при отсутствии результата. Это числовой serial, тогда как FindType возвращает hex-строку или пустую строку. Не возвращает type.

Поведение

  • Данные принадлежат последнему обычному поиску этого скрипта. FindType с 1–5 аргументами, FindTypeEx, Count/CountEx/CountGround заменяют результаты. Расширенные фильтрованные команды персонажей не обязаны менять этот снимок.
  • Новый поиск без совпадений обнуляет FindItem, FindCount и FindFullQuantity и очищает GetFoundItems. Чтение результата само по себе новый поиск не запускает.

Примеры

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

# Измерить результат поиска золота
#
# Читает serial первого результата последнего обычного поиска.
#
# Integer — serial/ID первого найденного объекта, 0 при отсутствии результата. Это числовой
# serial, тогда как FindType возвращает hex-строку или пустую строку. Не возвращает type.

SUB Main()
    # type=0x0EED — золото; color=-1 — любой hue; backpack — только прямое содержимое рюкзака в этой
    # форме FindType.
    # Integer — serial/ID первого найденного объекта, 0 при отсутствии результата. Это числовой
    # serial, тогда как FindType возвращает hex-строку или пустую строку. Не возвращает type.

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

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

  • type=0x0EED — золото; color=-1 — любой hue; backpack — только прямое содержимое рюкзака в этой форме FindType.
  • Integer — serial/ID первого найденного объекта, 0 при отсутствии результата. Это числовой serial, тогда как FindType возвращает hex-строку или пустую строку. Не возвращает type.

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

# Сравнить предметы и единицы
#
# Читает serial первого результата последнего обычного поиска.
#
# Integer — serial/ID первого найденного объекта, 0 при отсутствии результата. Это числовой
# serial, тогда как FindType возвращает hex-строку или пустую строку. Не возвращает type.

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 одной стопки.

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

# Сохранить результат до следующего поиска
#
# Читает serial первого результата последнего обычного поиска.
#
# Integer — serial/ID первого найденного объекта, 0 при отсутствии результата. Это числовой
# serial, тогда как FindType возвращает hex-строку или пустую строку. Не возвращает type.

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

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

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

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