API UO IsWarMode - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
UO.IsWarMode
Оглавление · Алфавитный указатель · Combat
ClassicUO • Runtime API
Проверяет боевую стойку mobile.
Точный синтаксис
UO.IsWarMode(ObjID:Any) -> Integer
Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.
Параметры
id / ObjID / MobID— Обязательный serial/ID конкретного объекта: Integer, hex-строка либо алиас self, backpack, lasttarget, lastobject, lastcontainer, laststatus, finditem, lastcorpse или имя AddObject. Это не graphic/type. Неустановленное имя разрешается в 0; никакой новый target команда не открывает. Аргумент обязателен; для себя передайте self.
Возвращает
Integer 1 — загруженный mobile имеет признак InWarMode. 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. Проверить собственное состояние
# Проверить собственное состояние
#
# Проверяет боевую стойку mobile.
#
# Integer 1 — загруженный mobile имеет признак InWarMode. 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()
# Аргумент self явно выбирает своего персонажа. state — только 1/0.
# Не сообщает, кого атакует персонаж, и не включает боевой режим. Чтение чужого режима
# ограничено полученными от сервера данными.
VAR state = UO.IsWarMode('self')
IF state THEN
UO.Print('Combat stance is active')
ELSE
UO.Print('Combat stance is inactive')
END IF
END SUB
Разбор параметров и выполнения:
- Аргумент self явно выбирает своего персонажа. state — только 1/0.
- Не сообщает, кого атакует персонаж, и не включает боевой режим. Чтение чужого режима ограничено полученными от сервера данными.
Пример 2. Проверить выбранного mobile
# Проверить выбранного mobile
#
# Проверяет боевую стойку mobile.
#
# Integer 1 — загруженный mobile имеет признак InWarMode. 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()
# IsNpc исключает предмет и неизвестный объект. target сохраняет один serial, а не живую ссылку
# на меняющийся lasttarget.
# Результат относится к полю InWarMode. Данные обновляются только после получения
# соответствующего состояния клиентом.
VAR target = UO.GetSerial('lasttarget')
IF UO.IsNpc(target) THEN
VAR state = UO.IsWarMode(target)
UO.Print('Selected mobile state 1/0: ' + STR(state))
ELSE
UO.Print('No loaded mobile selected')
END IF
END SUB
Разбор параметров и выполнения:
- IsNpc исключает предмет и неизвестный объект. target сохраняет один serial, а не живую ссылку на меняющийся lasttarget.
- Результат относится к полю InWarMode. Данные обновляются только после получения соответствующего состояния клиентом.
Пример 3. Сравнить состояние до и после паузы
# Сравнить состояние до и после паузы
#
# Проверяет боевую стойку mobile.
#
# Integer 1 — загруженный mobile имеет признак InWarMode. 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()
# WAIT(500) — пауза в миллисекундах. После неё отдельно проверяется, что mobile ещё существует.
# Сравниваются два снимка. Промежуточные изменения могут быть пропущены, и это не непрерывная
# подписка на серверные события.
VAR target = UO.GetSerial('lasttarget')
IF UO.IsNpc(target) THEN
VAR before = UO.IsWarMode(target)
WAIT(500)
IF UO.IsNpc(target) THEN
VAR after = UO.IsWarMode(target)
IF before <> after THEN
UO.Print('Flag changed: ' + STR(before) + ' -> ' + STR(after))
END IF
ELSE
UO.Print('Mobile left the local world')
END IF
END IF
END SUB
Разбор параметров и выполнения:
- WAIT(500) — пауза в миллисекундах. После неё отдельно проверяется, что mobile ещё существует.
- Сравниваются два снимка. Промежуточные изменения могут быть пропущены, и это не непрерывная подписка на серверные события.