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

UO.CanChangeName

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

ClassicUO • Runtime API

Проверяет известный клиенту признак возможности переименовать mobile.

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

UO.CanChangeName(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 команда не открывает. Аргумент обязателен; для себя передайте self.

Возвращает

Integer 1 — загруженный mobile имеет признак IsRenamable. 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 имеет признак IsRenamable. 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.CanChangeName('self')
    IF state THEN
        UO.Print('Rename permission flag is present')
    ELSE
        UO.Print('Rename permission flag is absent')
    END IF
END SUB

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

  • Аргумент self явно выбирает своего персонажа. state — только 1/0.
  • Это последнее серверное разрешение, например для питомца. Команда не переименовывает объект и не гарантирует, что последующий запрос будет принят сервером.

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

# Проверить выбранного mobile
#
# Проверяет известный клиенту признак возможности переименовать mobile.
#
# Integer 1 — загруженный mobile имеет признак IsRenamable. 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.
    # Результат относится к полю IsRenamable. Данные обновляются только после получения
    # соответствующего состояния клиентом.

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

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

# Сравнить состояние до и после паузы
#
# Проверяет известный клиенту признак возможности переименовать mobile.
#
# Integer 1 — загруженный mobile имеет признак IsRenamable. 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.CanChangeName(target)
        WAIT(500)
        IF UO.IsNpc(target) THEN
            VAR after = UO.CanChangeName(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 ещё существует.
  • Сравниваются два снимка. Промежуточные изменения могут быть пропущены, и это не непрерывная подписка на серверные события.