Repository navigation
FR API UO LimitMove
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.LimitMove();
int UO.LimitMove(object? distance);UO.LimitMove() renvoie la distance maximale à la destination en cases. UO.LimitMove(distance) la modifie et renvoie la nouvelle valeur. Valeur initiale : 2000. Zéro supprime la limite ; une valeur négative provoque une erreur sans modifier le réglage.
La distance est max(abs(targetX-startX), abs(targetY-startY)). Elle mesure la destination indiquée, pas la longueur du détour. Les arguments explicites maxDistance, maxSteps et timeout restent applicables.
La limite couvre MoveXY, NewMoveXY, MoveXYZ, PMove, Follow, GetPathArray/GetPathArray3D et les déplacements sur la carte de Manager. Les données de carte sont chargées avec ou sans fenêtre de jeu. Une session active est nécessaire ; les murs et les limites de carte restent valables.
Le réglage est partagé entre les scripts et la carte du même profil et enregistré avec l’état API. Un nouveau profil commence à 2000 ; un autre script ne réinitialise pas une valeur choisie. UO.LimitMove(2000) rétablit la valeur par défaut.
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 limite la distance à la destination : 2000 par défaut, zéro sans limite. Les limites cachées de 4096 pas/nœuds et 10000 nœuds sont supprimées. Le travail se déroule par tranches interruptibles. GetPathArray respecte le seuil d’endurance moveThroughNPC et 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