Skip to content

API UO moveThroughNPC

Codex edited this page Sep 19, 2026 · 4 revisions

UO.moveThroughNPC

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

ClassicUO • Runtime API

Разрешение попытки прохода сквозь персонажей.

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

UO.moveThroughNPC() -> Any
UO.moveThroughNPC(value:Any) -> Any

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

Параметры

  • value — Необязательное новое значение. Целое >=0, отрицательное становится 0; положительное разрешает попытку. Явный avoidMobiles задаёт обратное ограничение для отдельного вызова.

Возвращает

Integer — текущее сохранённое значение. Без аргумента только читает; с аргументом возвращает значение после применения правил выше. Это настройка, не результат движения.

Поведение

  • Настройка хранится в состоянии runtime и используется соответствующими командами при запуске; изменение не переписывает уже построенный путь автоматически.
  • Возврат исходного значения показан для обычного завершения. После аварийной остановки следующие строки восстановления не выполняются.
  • По умолчанию 1000. Значение 0 сохраняет загруженных персонажей как препятствия; значение >0 разрешает попытку прохода сквозь них. Это не порог выносливости: величины 1 и 1000 включают одинаковый режим. Серверный запрет прохода остаётся в силе.

Примеры

Пример 1. Прочитать настройку

# Прочитать настройку
#
# Разрешение попытки прохода сквозь персонажей.
#
# Integerтекущее сохранённое значение. Без аргумента только читает; с аргументом возвращает
# значение после применения правил выше. Это настройка, не результат движения.

SUB Main()
    # Аргументов нет, состояние не меняется.
    # valueчисловое значение этой настройки.

    VAR value = UO.moveThroughNPC()
    UO.Print(STR(value))
END SUB

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

  • Аргументов нет, состояние не меняется.
  • value — числовое значение этой настройки.

Пример 2. Установить явное значение

# Установить явное значение
#
# Разрешение попытки прохода сквозь персонажей.
#
# Integerтекущее сохранённое значение. Без аргумента только читает; с аргументом возвращает
# значение после применения правил выше. Это настройка, не результат движения.

SUB Main()
    # value=0. Целое >=0, отрицательное становится 0; положительное разрешает попытку. Явный
    # avoidMobiles задаёт обратное ограничение для отдельного вызова.
    # applied показывает сохранённое значение, а не успешное достижение цели.

    VAR applied = UO.moveThroughNPC(0)
    UO.Print('Applied: ' + STR(applied))
END SUB

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

  • value=0. Целое >=0, отрицательное становится 0; положительное разрешает попытку. Явный avoidMobiles задаёт обратное ограничение для отдельного вызова.
  • applied показывает сохранённое значение, а не успешное достижение цели.

Пример 3. Применить на один участок скрипта

# Применить на один участок скрипта
#
# Разрешение попытки прохода сквозь персонажей.
#
# Integerтекущее сохранённое значение. Без аргумента только читает; с аргументом возвращает
# значение после применения правил выше. Это настройка, не результат движения.

SUB Main()
    # previous хранит исходную настройку; NewMoveXY ограничен 3000 мс.
    # Последняя команда восстанавливает настройку после обычного возврата движения.

    VAR previous = UO.moveThroughNPC()
    UO.moveThroughNPC(0)
    VAR ok = UO.NewMoveXY(UO.GetX() + 2, UO.GetY(), TRUE, 0, FALSE, 0, 3000)
    UO.moveThroughNPC(previous)
    UO.Print(STR(ok))
END SUB

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

  • previous хранит исходную настройку; NewMoveXY ограничен 3000 мс.
  • Последняя команда восстанавливает настройку после обычного возврата движения.

Clone this wiki locally