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

UO.InParty

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

ClassicUO • Runtime API

Проверяет наличие текущей группы по состоянию Party клиента.

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

UO.InParty() -> Integer

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

Параметры

Параметров нет.

Возвращает

Integer 1 — в Party известен ненулевой serial лидера. Integer 0 — лидера нет. Это не число участников и не индекс собственного персонажа в списке.

Это логический результат: 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 или другого действия объект и его флаги могут измениться.
  • В этом клиенте проверяется Party.Leader, а не просто число непустых строк списка. При принятом приглашении состояние изменится после серверного обновления.

Примеры

Пример 1. Разветвить скрипт по наличию группы

# Разветвить скрипт по наличию группы
#
# Проверяет наличие текущей группы по состоянию Party клиента.
#
# Integer 1 — в Party известен ненулевой serial лидера. Integer 0 — лидера нет. Это не число
# участников и не индекс собственного персонажа в списке.
#
# Это логический результат: 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()
    # Аргументов нет. Проверяется группа текущего персонажа.
    # Команда не создаёт группу и не принимает приглашение.

    IF UO.InParty() THEN
        UO.Print('Party is active')
    ELSE
        UO.Print('No active party')
    END IF
END SUB

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

  • Аргументов нет. Проверяется группа текущего персонажа.
  • Команда не создаёт группу и не принимает приглашение.

Пример 2. Сохранить состояние один раз

# Сохранить состояние один раз
#
# Проверяет наличие текущей группы по состоянию Party клиента.
#
# Integer 1 — в Party известен ненулевой serial лидера. Integer 0 — лидера нет. Это не число
# участников и не индекс собственного персонажа в списке.
#
# Это логический результат: 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()
    # inParty — числовой Boolean, не число участников.
    # Повторное использование переменной не перечитывает изменившуюся группу.

    VAR inParty = UO.InParty()
    UO.Print('Party 1/0: ' + STR(inParty))
END SUB

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

  • inParty — числовой Boolean, не число участников.
  • Повторное использование переменной не перечитывает изменившуюся группу.

Пример 3. Подождать обновления не больше нескольких проверок

# Подождать обновления не больше нескольких проверок
#
# Проверяет наличие текущей группы по состоянию Party клиента.
#
# Integer 1 — в Party известен ненулевой serial лидера. Integer 0 — лидера нет. Это не число
# участников и не индекс собственного персонажа в списке.
#
# Это логический результат: 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()
    # Не больше 10 пауз по 200 мс; цикл ограничен примерно двумя секундами плюс выполнение команд.
    # Ожидание не отправляет приглашений и не гарантирует вступление в группу.

    VAR attempts = 0
    WHILE UO.InParty() = 0 AND attempts < 10
        WAIT(200)
        attempts = attempts + 1
    WEND
    IF UO.InParty() THEN
        UO.Print('Party state received')
    ELSE
        UO.Print('Party still absent')
    END IF
END SUB

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

  • Не больше 10 пауз по 200 мс; цикл ограничен примерно двумя секундами плюс выполнение команд.
  • Ожидание не отправляет приглашений и не гарантирует вступление в группу.