Skip to content

API UO IsContainer

Codex edited this page Sep 19, 2026 · 5 revisions

UO.IsContainer

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

ClassicUO • Runtime API

Проверяет флаг Container в tiledata графического типа загруженного предмета.

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

UO.IsContainer(ObjID:Any) -> Integer

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

Параметры

  • ObjID — Обязательный serial/ID конкретного объекта: Integer, hex-строка либо алиас self, backpack, lasttarget, lastobject, lastcontainer, laststatus, finditem, lastcorpse или имя AddObject. Это не graphic/type. Неустановленное имя разрешается в 0; никакой новый target команда не открывает.

Возвращает

Integer 1 — известный предмет имеет признак контейнера в данных его graphic. Integer 0 — такого признака нет, объект является mobile, неизвестен или удалён. Это не количество вещей в контейнере, не признак открытого гампа и не подтверждение доступа к содержимому.

Это логический результат: 1 = TRUE, 0 = FALSE. После VAR result = команда(...) можно писать IF result = TRUE THEN или IF result = 1 THEN; для отрицательного результата — IF result = FALSE THEN или IF result = 0 THEN. TRUE/FALSE пишутся без кавычек. Вызовите команду один раз и сохраните результат: повторный вызов может повторить действие или прочитать уже изменившееся состояние.

Поведение

  • Читается локальная модель клиента; запросов серверу, ожидания и перемещения нет.
  • Результат относится к моменту чтения. После WAIT или другого действия объект и его флаги могут измениться.

Примеры

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

# Проверить последний использованный предмет
#
# Проверяет флаг Container в tiledata графического типа загруженного предмета.
#
# Integer 1известный предмет имеет признак контейнера в данных его graphic. Integer 0# такого признака нет, объект является mobile, неизвестен или удалён. Это не количество вещей в
# контейнере, не признак открытого гампа и не подтверждение доступа к содержимому.
#
# Это логический результат: 1 = TRUE, 0 = FALSE. После VAR result = команда(...) можно писать IF
# result = TRUE THEN или IF result = 1 THEN; для отрицательного результатаIF result = FALSE
# THEN или IF result = 0 THEN. TRUE/FALSE пишутся без кавычек. Вызовите команду один раз и
# сохраните результат: повторный вызов может повторить действие или прочитать уже изменившееся
# состояние.

SUB Main()
    # itemserial объекта lastobject, а не его type.
    # Команда читает только признак контейнера и не открывает его.

    VAR item = UO.GetSerial('lastobject')
    IF UO.IsContainer(item) THEN
        UO.Print('Known container: ' + item)
    ELSE
        UO.Print('Not a known container')
    END IF
END SUB

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

  • item — serial объекта lastobject, а не его type.
  • Команда читает только признак контейнера и не открывает его.

Пример 2. Выбрать контейнер перед поиском

# Выбрать контейнер перед поиском
#
# Проверяет флаг Container в tiledata графического типа загруженного предмета.
#
# Integer 1известный предмет имеет признак контейнера в данных его graphic. Integer 0# такого признака нет, объект является mobile, неизвестен или удалён. Это не количество вещей в
# контейнере, не признак открытого гампа и не подтверждение доступа к содержимому.
#
# Это логический результат: 1 = TRUE, 0 = FALSE. После VAR result = команда(...) можно писать IF
# result = TRUE THEN или IF result = 1 THEN; для отрицательного результатаIF result = FALSE
# THEN или IF result = 0 THEN. TRUE/FALSE пишутся без кавычек. Вызовите команду один раз и
# сохраните результат: повторный вызов может повторить действие или прочитать уже изменившееся
# состояние.

SUB Main()
    # bag должен быть выбран заранее и содержимое должно быть известно клиенту.
    # FindType получает type золота, любой hue и serial контейнера. Пустой результат не доказывает,
    # что серверный контейнер пуст.

    VAR bag = UO.GetSerial('lasttarget')
    IF UO.IsContainer(bag) THEN
        VAR found = UO.FindType(0x0EED, -1, bag)
        UO.Print('Known gold item: ' + found)
    END IF
END SUB

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

  • bag должен быть выбран заранее и содержимое должно быть известно клиенту.
  • FindType получает type золота, любой hue и serial контейнера. Пустой результат не доказывает, что серверный контейнер пуст.

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

# Отдельно проверить наличие и классификацию
#
# Проверяет флаг Container в tiledata графического типа загруженного предмета.
#
# Integer 1известный предмет имеет признак контейнера в данных его graphic. Integer 0# такого признака нет, объект является mobile, неизвестен или удалён. Это не количество вещей в
# контейнере, не признак открытого гампа и не подтверждение доступа к содержимому.
#
# Это логический результат: 1 = TRUE, 0 = FALSE. После VAR result = команда(...) можно писать IF
# result = TRUE THEN или IF result = 1 THEN; для отрицательного результатаIF result = FALSE
# THEN или IF result = 0 THEN. TRUE/FALSE пишутся без кавычек. Вызовите команду один раз и
# сохраните результат: повторный вызов может повторить действие или прочитать уже изменившееся
# состояние.

SUB Main()
    # Exists и IsContainer отвечают на разные вопросы об одном serial.
    # При неподходящих или ещё недоступных tiledata классификация может отличаться от ожидаемой; не
    # используйте её как проверку прав на сундук.

    VAR bag = UO.GetSerial('backpack')
    VAR exists = UO.Exists(bag)
    VAR container = UO.IsContainer(bag)
    UO.Print('Loaded: ' + STR(exists))
    UO.Print('Container flag: ' + STR(container))
END SUB

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

  • Exists и IsContainer отвечают на разные вопросы об одном serial.
  • При неподходящих или ещё недоступных tiledata классификация может отличаться от ожидаемой; не используйте её как проверку прав на сундук.

Clone this wiki locally