API UO moveThroughNPC - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
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 мс.
- Последняя команда восстанавливает настройку после обычного возврата движения.