API UO SetBadLocation - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
UO.SetBadLocation
Оглавление · Алфавитный указатель · Search
ClassicUO • Runtime API
Добавляет X/Y в список запрещённых клеток для следующих маршрутов MoveXY, NewMoveXY, MoveXYZ, PMove и запросов GetPathArray/GetPathArray3D.
Точный синтаксис
UO.SetBadLocation(X:Any, Y:Any) -> Unit
Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.
Параметры
X— Мировой X исключаемой клетки.Y— Мировой Y исключаемой клетки.
Возвращает
Unit — возвращаемого значения нет. Вызывайте отдельной строкой; это не true/false и не число шагов.
Поведение
- Ключ состоит из X/Y, без карты и Z. Координаты должны быть целыми в пределах 0..65535; выход за диапазон вызывает ошибку скрипта.
- Запреты относятся к runtime вызвавшего скрипта. Новый маршрут или запрос получает их снимок. Уже идущий маршрут сохраняет свой снимок, включая внутренний перерасчёт. После изменения списка запустите новый маршрут.
- Это не изменение карты: обычное ручное движение и маршруты другого runtime не получают этот запрет. Исходную клетку можно покинуть, даже если она отмечена запрещённой.
Примеры
Пример 1. Исключить соседнюю клетку из расчёта
# Исключить соседнюю клетку из расчёта
#
# Добавляет X/Y в список запрещённых клеток для следующих маршрутов MoveXY, NewMoveXY, MoveXYZ,
# PMove и запросов GetPathArray/GetPathArray3D.
#
# Unit — возвращаемого значения нет. Вызывайте отдельной строкой; это не true/false и не число
# шагов.
SUB Main()
# X/Y — клетка восточнее персонажа.
# Если возможен обход, возвращается другой полный путь; персонаж не двигается.
UO.SetBadLocation(UO.GetX() + 1, UO.GetY())
VAR path = UO.GetPathArray(UO.GetX() + 3, UO.GetY(), TRUE, 0)
UO.Print(STR(GetArrayLength(path)))
END SUB
Разбор параметров и выполнения:
- X/Y — клетка восточнее персонажа.
- Если возможен обход, возвращается другой полный путь; персонаж не двигается.
Пример 2. Добавить две клетки
# Добавить две клетки
#
# Добавляет X/Y в список запрещённых клеток для следующих маршрутов MoveXY, NewMoveXY, MoveXYZ,
# PMove и запросов GetPathArray/GetPathArray3D.
#
# Unit — возвращаемого значения нет. Вызывайте отдельной строкой; это не true/false и не число
# шагов.
SUB Main()
# Каждый вызов добавляет одну пару X/Y.
# Повтор пары не создаёт второй отдельный запрет; Z не является параметром.
UO.SetBadLocation(1445, 1690)
UO.SetBadLocation(1445, 1691)
END SUB
Разбор параметров и выполнения:
- Каждый вызов добавляет одну пару X/Y.
- Повтор пары не создаёт второй отдельный запрет; Z не является параметром.
Пример 3. Очистить прикладные запреты перед новым маршрутом
# Очистить прикладные запреты перед новым маршрутом
#
# Добавляет X/Y в список запрещённых клеток для следующих маршрутов MoveXY, NewMoveXY, MoveXYZ,
# PMove и запросов GetPathArray/GetPathArray3D.
#
# Unit — возвращаемого значения нет. Вызывайте отдельной строкой; это не true/false и не число
# шагов.
SUB Main()
# ClearBadLocationList удаляет все сохранённые пары.
# Естественные препятствия карты всё равно учитываются.
UO.ClearBadLocationList()
VAR path = UO.GetPathArray(UO.GetX() + 2, UO.GetY(), TRUE, 0)
UO.Print(STR(GetArrayLength(path)))
END SUB
Разбор параметров и выполнения:
- ClearBadLocationList удаляет все сохранённые пары.
- Естественные препятствия карты всё равно учитываются.