Skip to content

KO API UO LimitMove

Codex edited this page Oct 17, 2026 · 1 revision

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

UO.LimitMove

int UO.LimitMove();
int UO.LimitMove(object? distance);

UO.LimitMove()는 목적지까지의 최대 타일 거리를 반환합니다. UO.LimitMove(distance)는 값을 바꾸고 새 값을 반환합니다. 초깃값은 2000입니다. 0은 거리 제한 해제이며, 음수는 오류를 발생시키고 기존 값을 유지합니다.

거리는 max(abs(targetX-startX), abs(targetY-startY))로 계산합니다. 우회 경로의 길이가 아니라 지정한 목적지까지의 거리입니다. 명시한 maxDistance, maxSteps, timeout은 계속 적용됩니다.

MoveXY, NewMoveXY, MoveXYZ, PMove, Follow, GetPathArray/GetPathArray3D 및 Manager 지도 이동에 적용됩니다. 게임 창 유무와 관계없이 지도 데이터를 읽습니다. 이동에는 활성 게임 세션이 필요하며 벽이나 지도 경계를 무시하지 않습니다.

같은 프로필의 스크립트와 지도가 설정을 공유하며 API 상태와 함께 저장합니다. 새 프로필은 2000으로 시작하며 다른 스크립트를 실행해도 선택한 값은 초기화되지 않습니다. UO.LimitMove(2000)으로 기본값을 복원합니다.

예제

int previousLimit = UO.LimitMove();
UO.LimitMove(2000);
UO.Print(UO.LimitMove().ToString());
UO.LimitMove(0);
int destinationX = 5000;
int destinationY = 1500;
int arrived = UO.NewMoveXY(destinationX, destinationY, true, 1, true);
UO.Print(arrived.ToString());
int previousLimit = UO.LimitMove();
try
{
    UO.LimitMove(6000);
    var route = UO.GetPathArray(5000, 1500, true, 1);
    UO.Print(route.Length.ToString());
}
finally
{
    UO.LimitMove(previousLimit);
}

내부 함수

InjectionRuntimeState.LimitMove → InjectionApiUO.MoveToCanonical / BuildPortablePath → ClassicUOInjectionApiBridge.MoveTo → Pathfinder.WalkTo. NativeFollowController / WorldMapController → Pathfinder.WalkTo.

UO.LimitMove는 목적지 거리를 제한합니다. 기본값은 2000이고 0은 무제한입니다. 숨겨진 4096걸음/노드 및 10000노드 제한은 없습니다. 작업은 중단 가능한 단위로 나뉩니다. GetPathArray는 moveThroughNPC 체력 기준과 moveOpenDoor를 따릅니다.

int savedLimit = UO.LimitMove();
try
{
    int applied = ApplyLimit(6000);
    UO.Print(applied.ToString());
}
finally { UO.LimitMove(savedLimit); }

int ApplyLimit(int distance)
{
    if (distance < 0) throw new ArgumentOutOfRangeException(nameof(distance));
    return UO.LimitMove(distance);
}
UO.Print(new MovementLimits(UO).Current().ToString());

class MovementLimits(ClassicUO.CSharp.CSharpGameApi api)
{
    public int Current() => api.LimitMove();
}

Clone this wiki locally