Repository navigation
DE API UO LimitMove
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.LimitMove();
int UO.LimitMove(object? distance);UO.LimitMove() liefert die maximale Entfernung zum Ziel in Feldern. UO.LimitMove(distance) ändert sie und liefert den neuen Wert. Anfangswert: 2000. Null hebt die Entfernungsgrenze auf; negative Werte verursachen einen Fehler und lassen die Einstellung unverändert.
Die Entfernung ist max(abs(targetX-startX), abs(targetY-startY)). Gemeint ist die Zielentfernung, nicht die Länge eines Umwegs. Explizite maxDistance-, maxSteps- und timeout-Argumente gelten weiterhin.
Die Grenze gilt für MoveXY, NewMoveXY, MoveXYZ, PMove, Follow, GetPathArray/GetPathArray3D und Bewegung über die Manager-Karte. Kartendaten werden mit und ohne Spielfenster geladen. Bewegung benötigt eine aktive Spielsitzung; Wände und Kartengrenzen bleiben gültig.
Die Einstellung wird von Skripten und Karte desselben Profils gemeinsam verwendet und mit dem API-Zustand gespeichert. Neue Profile beginnen bei 2000; ein anderes Skript setzt einen gewählten Wert nicht zurück. UO.LimitMove(2000) stellt den Standard wieder her.
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 begrenzt die Zielentfernung: Standard 2000, Null unbegrenzt. Versteckte Grenzen von 4096 Schritten/Knoten oder 10000 Knoten entfallen. Die Arbeit erfolgt in abbrechbaren Abschnitten. GetPathArray berücksichtigt moveThroughNPC als Ausdauerschwelle sowie 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();
}ClassicUO — Bad Newbie & C# Scripts IDE