API UO IsContainer - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
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()
# item — serial объекта 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 классификация может отличаться от ожидаемой; не используйте её как проверку прав на сундук.