Home API Manuals About Forum
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

MoveXYZ

Moves the character to the specified XYZ coordinates using 3D pathfinding (GetPathArray3D).

Xdst, Ydst, Zdst — destination coordinates.

AccuracyXY — horizontal accuracy in tiles. Clamped to 0–20.

AccuracyZ — vertical accuracy. Clamped to 0–255.

Running — if True, the character runs; if False, walks.

DWScript additionally supports an optional StepCallback parameter — a callback function invoked at each movement step. If the callback returns False, movement stops immediately.

TMoverStepCallBack = function(X, Y: Word; Z: ShortInt): Boolean;

This method is similar to MoveXY but uses the 3D pathfinder, which takes Z level into account. Useful for multi-level areas (dungeons, houses, boats).

The following movement variables affect this method’s behavior: moveOpenDoor, moveThroughNPC, moveThroughCorner, moveBetweenTwoCorners, moveCheckStamina, moveHeuristicMult, moveTurnCost, moveExitOnDisconnect.

Returns True if the destination was reached within the specified accuracy, False otherwise.

Перемещает персонажа к указанным координатам XYZ с использованием 3D-поиска пути (GetPathArray3D).

Xdst, Ydst, Zdst — координаты назначения.

AccuracyXY — горизонтальная точность в тайлах. Ограничивается 0–20.

AccuracyZ — вертикальная точность. Ограничивается 0–255.

RunningTrue — бег, False — ходьба.

В DWScript дополнительно поддерживается необязательный параметр StepCallback — функция обратного вызова на каждом шаге. Если callback возвращает False, движение немедленно прекращается.

TMoverStepCallBack = function(X, Y: Word; Z: ShortInt): Boolean;

Метод аналогичен MoveXY, но использует 3D-поиск пути, учитывающий уровень Z. Полезен для многоуровневых зон (данжи, дома, корабли).

На поведение метода влияют следующие переменные движения: moveOpenDoor, moveThroughNPC, moveThroughCorner, moveBetweenTwoCorners, moveCheckStamina, moveHeuristicMult, moveTurnCost, moveExitOnDisconnect.

Возвращает True, если цель достигнута в пределах указанной точности, False — в противном случае.

DWS

function MoveXYZ(Xdst: Word; Ydst: Word; Zdst: ShortInt;
  AccuracyXY: Integer; AccuracyZ: Integer; Running: Boolean;
  StepCallback: TMoverStepCallBack = nil): Boolean;

Pascal Script

function MoveXYZ(Xdst: Word; Ydst: Word; Zdst: ShortInt;
  AccuracyXY: Integer; AccuracyZ: Integer; Running: Boolean): Boolean;

Python

def MoveXYZ(Xdst: int, Ydst: int, Zdst: int,
            AccuracyXY: int, AccuracyZ: int, Running: bool) -> bool: ...

Pascal Example

Simple movement:

begin
  if MoveXYZ(1500, 1200, 25, 1, 5, True) then
    AddToSystemJournal('Arrived at 3D destination')
  else
    AddToSystemJournal('Could not reach destination');
end.

With StepCallback (DWS):

function StepCallBack(X, Y: Word; Z: ShortInt): Boolean;
begin
  Result := True;
  if Life < MaxLife div 3 then
    Exit(False);
end;

begin
  MoveXYZ(1500, 1200, 25, 1, 5, True, @StepCallBack);
end.

Python Example

if MoveXYZ(1500, 1200, 25, 1, 5, True):
    AddToSystemJournal('Arrived at 3D destination')
else:
    AddToSystemJournal('Could not reach destination')

See Also

MoveXY, newMoveXY, GetPathArray3D, MoverStop, moveOpenDoor, moveThroughNPC, moveThroughCorner, moveBetweenTwoCorners, moveCheckStamina, moveHeuristicMult, moveTurnCost, moveExitOnDisconnect