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

UO.GetRun

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

ClassicUO • Runtime API

Проверяет флаг бега в последнем известном направлении mobile.

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

UO.GetRun() -> Integer
UO.GetRun(id: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 команда не открывает. У GetRun также есть форма GetRun() для self.

Возвращает

Integer 1 — загруженный mobile имеет признак Direction.Running. Integer 0 — признак отсутствует, объект не является mobile, неизвестен или удалён. Последний флаг бега может сохраниться после остановки. Это не активность маршрута, не скорость и не количество оставшихся шагов. Для движения self используйте также Moving().

Это логический результат: 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 или другого действия объект и его флаги могут измениться.
  • Последний флаг бега может сохраниться после остановки. Это не активность маршрута, не скорость и не количество оставшихся шагов. Для движения self используйте также Moving().

Примеры

Пример 1. Проверить собственное состояние

# Проверить собственное состояние
#
# Проверяет флаг бега в последнем известном направлении mobile.
#
# Integer 1 — загруженный mobile имеет признак Direction.Running. Integer 0 — признак
# отсутствует, объект не является mobile, неизвестен или удалён. Последний флаг бега может
# сохраниться после остановки. Это не активность маршрута, не скорость и не количество
# оставшихся шагов. Для движения self используйте также Moving().
#
# Это логический результат: 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.
    # Последний флаг бега может сохраниться после остановки. Это не активность маршрута, не скорость
    # и не количество оставшихся шагов. Для движения self используйте также Moving().

    VAR state = UO.GetRun('self')
    VAR moving = UO.Moving()
    UO.Print('Running flag: ' + STR(state))
    UO.Print('Self movement active: ' + STR(moving))
END SUB

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

  • Аргумент self явно выбирает своего персонажа. state — только 1/0.
  • Последний флаг бега может сохраниться после остановки. Это не активность маршрута, не скорость и не количество оставшихся шагов. Для движения self используйте также Moving().

Пример 2. Проверить выбранного mobile

# Проверить выбранного mobile
#
# Проверяет флаг бега в последнем известном направлении mobile.
#
# Integer 1 — загруженный mobile имеет признак Direction.Running. Integer 0 — признак
# отсутствует, объект не является mobile, неизвестен или удалён. Последний флаг бега может
# сохраниться после остановки. Это не активность маршрута, не скорость и не количество
# оставшихся шагов. Для движения self используйте также Moving().
#
# Это логический результат: 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.
    # Результат относится к полю Direction.Running. Данные обновляются только после получения
    # соответствующего состояния клиентом.

    VAR target = UO.GetSerial('lasttarget')
    IF UO.IsNpc(target) THEN
        VAR state = UO.GetRun(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.
  • Результат относится к полю Direction.Running. Данные обновляются только после получения соответствующего состояния клиентом.

Пример 3. Сравнить состояние до и после паузы

# Сравнить состояние до и после паузы
#
# Проверяет флаг бега в последнем известном направлении mobile.
#
# Integer 1 — загруженный mobile имеет признак Direction.Running. Integer 0 — признак
# отсутствует, объект не является mobile, неизвестен или удалён. Последний флаг бега может
# сохраниться после остановки. Это не активность маршрута, не скорость и не количество
# оставшихся шагов. Для движения self используйте также Moving().
#
# Это логический результат: 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.GetRun(target)
        WAIT(500)
        IF UO.IsNpc(target) THEN
            VAR after = UO.GetRun(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 ещё существует.
  • Сравниваются два снимка. Промежуточные изменения могут быть пропущены, и это не непрерывная подписка на серверные события.