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 с реальной точкой лестницы.