API UO PMove - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
UO.PMove
Оглавление · Алфавитный указатель · Movement
ClassicUO • Runtime API
Совместимая команда движения к X/Y через отдельные клавишные шаги с пределом 30 секунд.
Точный синтаксис
UO.PMove(targetX:Integer, targetY:Integer) -> Unit
UO.PMove(x:Integer, y:Integer, z:Integer) -> Unit
Выберите одну из зарегистрированных форм. Параметры передаются позиционно. Any означает значение BASIC с преобразованием внутри команды; Unit — отсутствие возвращаемого значения.
Параметры
targetX / x— Целевой мировой X.targetY / y— Целевой мировой Y.z— Третий совместимый аргумент принимается, но игнорируется. Для контроля высоты используйте MoveXYZ.
Возвращает
Unit — возвращаемого значения нет. Вызывайте отдельной строкой; это не true/false и не число шагов.
Поведение
- Это простое движение в сторону цели с паузой 75 мс между попытками, без полноценного поиска обхода. Для новых сценариев с препятствиями используйте NewMoveXY.
- Если за 30 секунд точные X/Y не достигнуты, выводится сообщение. Из результата Unit нельзя получить успех; сравнивайте координаты.
- MoveOff запрещает клавишные шаги этой команды, MoveOn снова разрешает. PMove при выключенном движении всё равно может ждать до предела.
Примеры
Пример 1. Пройти соседнюю клетку
# Пройти соседнюю клетку
#
# Совместимая команда движения к X/Y через отдельные клавишные шаги с пределом 30 секунд.
#
# Unit — возвращаемого значения нет. Вызывайте отдельной строкой; это не true/false и не число
# шагов.
SUB Main()
# x/y задают назначение. MoveOn разрешает клавишные шаги.
# PMove не возвращает число: позиция читается отдельно.
VAR x = UO.GetX() + 1
VAR y = UO.GetY()
UO.MoveOn()
UO.PMove(x, y)
UO.Print('X=' + STR(UO.GetX()))
END SUB
Разбор параметров и выполнения:
- x/y задают назначение. MoveOn разрешает клавишные шаги.
- PMove не возвращает число: позиция читается отдельно.
Пример 2. Проверить результат по координатам
# Проверить результат по координатам
#
# Совместимая команда движения к X/Y через отдельные клавишные шаги с пределом 30 секунд.
#
# Unit — возвращаемого значения нет. Вызывайте отдельной строкой; это не true/false и не число
# шагов.
SUB Main()
# 1445/1690 замените своей доступной точкой.
# Проверка сравнивает обе координаты; Unit не подходит для IF UO.PMove(...).
VAR x = 1445
VAR y = 1690
UO.PMove(x, y)
IF UO.GetX() == x AND UO.GetY() == y THEN
UO.Print('Exact XY reached')
END IF
END SUB
Разбор параметров и выполнения:
- 1445/1690 замените своей доступной точкой.
- Проверка сравнивает обе координаты; Unit не подходит для IF UO.PMove(...).
Пример 3. Совместимая форма с третьим аргументом
# Совместимая форма с третьим аргументом
#
# Совместимая команда движения к X/Y через отдельные клавишные шаги с пределом 30 секунд.
#
# Unit — возвращаемого значения нет. Вызывайте отдельной строкой; это не true/false и не число
# шагов.
SUB Main()
# X/Y совпадают с текущими, поэтому идти не требуется.
# z=20 игнорируется и не поднимает на верхний этаж. Для этого нужен MoveXYZ с реальной точкой
# лестницы.
UO.PMove(UO.GetX(), UO.GetY(), 20)
UO.Print('Actual Z=' + STR(UO.GetZ()))
END SUB
Разбор параметров и выполнения:
- X/Y совпадают с текущими, поэтому идти не требуется.
- z=20 игнорируется и не поднимает на верхний этаж. Для этого нужен MoveXYZ с реальной точкой лестницы.