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.
Running — True 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.
Running — True для бега, False для ходьбы.
StepCallback (только DWS, опционально) — функция TMoverStepCallBack, вызываемая перед каждым шагом с текущими X, Y, Z персонажа. Если callback возвращает False, движение прекращается. В PascalScript параметр callback недоступен.
Возвращает True при достижении цели (с учётом accuracy), False при неудаче (путь не найден, телепорт, отключение, остановка).
Метод использует GetPathArray3D для поиска пути и StepQ для перемещения. Выполняет проверку проходимости на 7 точек вперёд, автоматически пересчитывает путь при препятствиях или смещении персонажа, учитывает moveCheckStamina и moveExitOnDisconnect, может быть прерван через MoverStop.
Перед завершением при успехе ожидает отправки всех шагов из очереди и проверяет финальную позицию.
Только DWScript (с callback). В PascalScript параметр callback недоступен.
function newMoveXY(Xdst: Word; Ydst: Word; Optimized: Boolean;
Accuracy: Integer; Running: Boolean;
StepCallback: TMoverStepCallBack = nil): Boolean;
TMoverStepCallBack = function(X, Y: Word; Z: ShortInt): Boolean;
function newMoveXY(Xdst: Word; Ydst: Word; Optimized: Boolean;
Accuracy: Integer; Running: Boolean): Boolean;
def newMoveXY(x_dst: int, y_dst: int, optimized: bool, accuracy: int, running: bool) -> bool: ...
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.
if newMoveXY(1234, 5678, True, 1, True):
AddToSystemJournal('Arrived!')
else:
AddToSystemJournal('Failed to reach destination')