Repository navigation
KO API UO PMove
Codex edited this page Oct 17, 2026
·
3 revisions
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.PMove(object? targetX, object? targetY);
void UO.PMove(object? x, object? y, object? z);PMove는 경로 탐색과 이동 완료를 기다립니다. XY 형식은 정확한 XY를, XYZ 형식은 지정한 높이도 요구합니다. 반환값은 void이므로 실제 좌표를 비교하세요. 숫자 결과는 NewMoveXY 또는 MoveXYZ를 사용하세요. 암묵적인 30초 제한은 없습니다.
int destinationX = UO.GetX() + 1;
int destinationY = UO.GetY();
UO.PMove(destinationX, destinationY);
bool arrived = UO.GetX() == destinationX && UO.GetY() == destinationY;
UO.Print(arrived.ToString());int savedLimit = UO.LimitMove();
try
{
UO.LimitMove(0);
UO.PMove(5000, 1500, 0);
UO.Print($"{UO.GetX()}, {UO.GetY()}, {UO.GetZ()}");
}
finally
{
UO.LimitMove(savedLimit);
}InjectionRuntimeState.LimitMove → InjectionApiUO.MoveToCanonical / BuildPortablePath → ClassicUOInjectionApiBridge.MoveTo → Pathfinder.WalkTo. NativeFollowController / WorldMapController → Pathfinder.WalkTo.
bool arrived = WalkTo(UO.GetX() + 1, UO.GetY());
UO.Print(arrived.ToString());
bool WalkTo(int destinationX, int destinationY)
{
UO.PMove(destinationX, destinationY);
return UO.GetX() == destinationX && UO.GetY() == destinationY;
}var walker = new CoordinateWalker(UO);
bool arrived = walker.Walk(UO.GetX() + 1, UO.GetY(), UO.GetZ());
UO.Print(arrived.ToString());
class CoordinateWalker(ClassicUO.CSharp.CSharpGameApi api)
{
public bool Walk(int x, int y, int z)
{
api.PMove(x, y, z);
return api.GetX() == x && api.GetY() == y && api.GetZ() == z;
}
}ClassicUO — Bad Newbie & C# Scripts IDE