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

UO.GetParalyzed

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

ClassicUO • Runtime API

Проверяет известный клиенту флаг паралича персонажа.

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

UO.GetParalyzed() -> Integer
UO.GetParalyzed(value:Any) -> Integer

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

Параметры

  • value — Необязательный serial/ID mobile: число, hex-строка, self, lasttarget либо другое стандартное имя объекта или имя AddObject. Это не graphic/type. Без аргумента используется self. Неизвестное имя разрешается в 0; target не открывается.

Возвращает

Integer Boolean: 1 = TRUE — загруженный mobile имеет флаг IsParalyzed; 0 = FALSE — флага нет, mobile неизвестен, удалён либо объект является предметом. Это не время паралича и не гарантия возможности движения при результате 0.

Поведение

  • Используйте Paralyzed для проверки флага паралича. Варианты Is/Get, GetParalisa, Frozen и GetLocked читают тот же флаг.
  • Команда только читает локальные данные. Она не накладывает и не снимает паралич, не ждёт его окончания и не отправляет запрос обновления серверу.
  • Для результата этой проверки условия value = TRUE, value = 1 и IF value равнозначны. TRUE/FALSE пишутся без кавычек. Значение сохраняет смысл флага, а не количества или ID.

Примеры

Пример 1. Проверить себя через TRUE

# Проверить себя через TRUE
#
# Проверяет известный клиенту флаг паралича персонажа.
#
# Integer Boolean: 1 = TRUE — загруженный mobile имеет флаг IsParalyzed; 0 = FALSE — флага нет,
# mobile неизвестен, удалён либо объект является предметом. Это не время паралича и не гарантия
# возможности движения при результате 0.

SUB Main()
    # Пустые скобки выбирают self. state сохраняет один снимок флага; TRUE — числовая константа 1.
    # Результат FALSE не исключает стену, отсутствие выносливости или другую причину остановки.

    VAR state = UO.GetParalyzed()
    IF state = TRUE THEN
        UO.Print('Paralysis flag is set')
    ELSE
        UO.Print('Paralysis flag is absent or unavailable')
    END IF
END SUB

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

  • Пустые скобки выбирают self. state сохраняет один снимок флага; TRUE — числовая константа 1.
  • Результат FALSE не исключает стену, отсутствие выносливости или другую причину остановки.

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

# Проверить выбранного mobile
#
# Проверяет известный клиенту флаг паралича персонажа.
#
# Integer Boolean: 1 = TRUE — загруженный mobile имеет флаг IsParalyzed; 0 = FALSE — флага нет,
# mobile неизвестен, удалён либо объект является предметом. Это не время паралича и не гарантия
# возможности движения при результате 0.

SUB Main()
    # target сохраняет hex-строку serial последней цели. IsNpc проверяет, что это загруженный
    # mobile, включая игроков.
    # Команда с аргументом читает именно target. Она не выбирает нового персонажа и не меняет
    # lasttarget.

    VAR target = UO.GetSerial('lasttarget')
    IF UO.IsNpc(target) THEN
        VAR state = UO.GetParalyzed(target)
        UO.Print('Selected mobile paralysis 1/0: ' + STR(state))
    ELSE
        UO.Print('No loaded mobile selected')
    END IF
END SUB

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

  • target сохраняет hex-строку serial последней цели. IsNpc проверяет, что это загруженный mobile, включая игроков.
  • Команда с аргументом читает именно target. Она не выбирает нового персонажа и не меняет lasttarget.

Пример 3. Ограниченно подождать снятия паралича

# Ограниченно подождать снятия паралича
#
# Проверяет известный клиенту флаг паралича персонажа.
#
# Integer Boolean: 1 = TRUE — загруженный mobile имеет флаг IsParalyzed; 0 = FALSE — флага нет,
# mobile неизвестен, удалён либо объект является предметом. Это не время паралича и не гарантия
# возможности движения при результате 0.

SUB Main()
    # Не больше 10 пауз по 100 мс. Каждый вызов без аргумента заново читает self.
    # После цикла отдельно проверяется наличие self. Это наблюдение примерно на секунду плюс
    # исполнение команд, а не гарантированное снятие паралича.

    VAR attempts = 0
    WHILE UO.GetParalyzed() = TRUE AND attempts < 10
        WAIT(100)
        attempts = attempts + 1
    WEND
    IF UO.IsNpc('self') THEN
        IF UO.GetParalyzed() = FALSE THEN
            UO.Print('Paralysis flag is clear')
        ELSE
            UO.Print('Still paralyzed')
        END IF
    ELSE
        UO.Print('Self is unavailable')
    END IF
END SUB

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

  • Не больше 10 пауз по 100 мс. Каждый вызов без аргумента заново читает self.
  • После цикла отдельно проверяется наличие self. Это наблюдение примерно на секунду плюс исполнение команд, а не гарантированное снятие паралича.