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

newMoveXY

Newer implementation of character movement to the specified destination coordinates using StepQ-based queued stepping with path recomputation.

Xdst, Ydst — destination coordinates. Must be non-zero; otherwise an error is logged and the method returns False.

Optimized — passed to the pathfinding algorithm.

Accuracy — how close to the destination the character needs to be (in tiles). AccuracyXY is clamped to 0–20, AccuracyZ to 0–255.

RunningTrue to run, False to walk.

StepCallback (DWS only, optional) — a TMoverStepCallBack function called before each step with the character’s current X, Y, Z. If the callback returns False, movement is aborted. In PascalScript, the callback parameter is not available.

Returns True if the destination was reached (within accuracy), False on failure (path not found, teleported, disconnected, stopped).

The method uses GetPathArray3D for pathfinding and StepQ for movement. It performs lookahead passability checks (up to 7 points ahead), automatically recomputes the path when obstacles are encountered or when the character is displaced, respects moveCheckStamina and moveExitOnDisconnect, and can be interrupted by MoverStop.

Before exiting on success, it waits for all queued steps to complete and verifies the final position.

DWScript only (with callback). In PascalScript, the callback parameter is not available.

Более новая реализация перемещения персонажа к указанным координатам через пошаговое перемещение на основе StepQ с пересчётом пути.

Xdst, Ydst — координаты назначения. Должны быть ненулевыми, иначе логируется ошибка и возвращается False.

Optimized — передаётся в алгоритм поиска пути.

Accuracy — допустимое расстояние до цели (в тайлах). AccuracyXY ограничивается 0–20, AccuracyZ — 0–255.

RunningTrue для бега, False для ходьбы.

StepCallback (только DWS, опционально) — функция TMoverStepCallBack, вызываемая перед каждым шагом с текущими X, Y, Z персонажа. Если callback возвращает False, движение прекращается. В PascalScript параметр callback недоступен.

Возвращает True при достижении цели (с учётом accuracy), False при неудаче (путь не найден, телепорт, отключение, остановка).

Метод использует GetPathArray3D для поиска пути и StepQ для перемещения. Выполняет проверку проходимости на 7 точек вперёд, автоматически пересчитывает путь при препятствиях или смещении персонажа, учитывает moveCheckStamina и moveExitOnDisconnect, может быть прерван через MoverStop.

Перед завершением при успехе ожидает отправки всех шагов из очереди и проверяет финальную позицию.

Только DWScript (с callback). В PascalScript параметр callback недоступен.

DWS

function newMoveXY(Xdst: Word; Ydst: Word; Optimized: Boolean;
  Accuracy: Integer; Running: Boolean;
  StepCallback: TMoverStepCallBack = nil): Boolean;
TMoverStepCallBack = function(X, Y: Word; Z: ShortInt): Boolean;

Pascal Script

function newMoveXY(Xdst: Word; Ydst: Word; Optimized: Boolean;
  Accuracy: Integer; Running: Boolean): Boolean;

Python

def newMoveXY(x_dst: int, y_dst: int, optimized: bool, accuracy: int, running: bool) -> bool: ...

Pascal Example

DWScript with callback:

function OnStep(X, Y: Word; Z: ShortInt): Boolean;
begin
  AddToSystemJournal(Format('Stepping: %d, %d, %d', [X, Y, Z]));
  Result := True;  // return False to abort
end;

begin
  if newMoveXY(1234, 5678, True, 1, True, @OnStep) then
    AddToSystemJournal('Arrived!')
  else
    AddToSystemJournal('Failed to reach destination');
end.

PascalScript (no callback):

begin
  if newMoveXY(1234, 5678, True, 1, True) then
    AddToSystemJournal('Arrived!')
  else
    AddToSystemJournal('Failed to reach destination');
end.

Python Example

if newMoveXY(1234, 5678, True, 1, True):
    AddToSystemJournal('Arrived!')
else:
    AddToSystemJournal('Failed to reach destination')

See Also

MoveXY, MoveXYZ