API UO FindDistance fr - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
UO.FindDistance
ClassicUO • Runtime API
Lit ou modifie le rayon horizontal de recherche par défaut.
Syntaxe exacte
UO.FindDistance() -> Integer
UO.FindDistance(value:Any) -> Unit
Paramètres
value— Integer facultatif. Sans argument : lecture ; value : écriture. Borné à 0..255 ; un négatif devient 0, pas illimité. Nouveau runtime : 18 ; un état restauré peut différer. Les décimaux sont tronqués vers zéro ; les chaînes numériques decimal/0x sont acceptées. Utilisez Integer pour éviter une conversion implicite.
Retour
Sans argument : Integer, limite actuelle (distance en cases), pas un ID, un nombre d’objets ou un Boolean. 0 indique une limite nulle, pas un échec. Avec value : Unit, aucune valeur ; ni TRUE/FALSE ni ancienne valeur. Relisez FindDistance() après écriture.
Comportement
- Distance : max(abs(dx), abs(dy)) depuis l’origine courante de portée du client ; une diagonale vaut une case. Borne incluse ; 0 exige les mêmes X/Y. Pour un Mobile en mouvement, la position finale des pas en attente est utilisée.
- Valeur du runtime du script courant, partagée par ses procédures ; les runtimes indépendants ont leurs propres valeurs. Lire/écrire ne cherche rien, ne vide pas FindItem/FindCount/GetFoundItems, n’envoie aucun paquet, ne déplace personne et ne charge aucun objet lointain.
- FindTypeEx et FindTypesArrayEx appliquent ces limites au sol, pas au contenu des conteneurs. Type, couleur, Ignore et objets chargés restent déterminants. FindAtCoord ignore les deux limites. Les distance/maxZ explicites des commandes étendues peuvent les remplacer ; -1 dans ces paramètres utilise le défaut, contrairement à -1 affecté à la configuration. FindList filtre aussi Z dans les conteneurs : cette exception ne le concerne pas.
- Sauvegardez avant une recherche temporaire et restaurez dans Finally : aucune annulation automatique. Finally couvre la fin normale et les erreurs interceptables ; l’arrêt d’urgence n’est pas un mécanisme de nettoyage.
- Référence : Stealth FindDistance. Ce client conserve ses valeurs initiales/plages : FindDistance 18 / 0..255 ; FindVertical 2 / 0..120. La syntaxe Basic et les filtres étendus décrivent ce projet.
Fonctions internes : de l’appel au résultat
Étapes internes réelles. CountGroundInRange est une fonction utilisateur entièrement définie, pas une commande intégrée cachée.
1. ExecuteStealthCompatibility
Zéro argument sélectionne la lecture ; un argument convertit value puis écrit. Les métadonnées distinguent Integer et Unit.
Sans argument : Integer, limite actuelle (distance en cases), pas un ID, un nombre d’objets ou un Boolean. 0 indique une limite nulle, pas un échec. Avec value : Unit, aucune valeur ; ni TRUE/FALSE ni ancienne valeur. Relisez FindDistance() après écriture.
Source du projet: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; fonction ExecuteStealthCompatibility.
2. GetFindDistance
Le bridge lit le réglage du runtime ou borne et stocke l’entier, sans parcourir le monde.
Sans argument : Integer, limite actuelle (distance en cases), pas un ID, un nombre d’objets ou un Boolean. 0 indique une limite nulle, pas un échec. Avec value : Unit, aucune valeur ; ni TRUE/FALSE ni ancienne valeur. Relisez FindDistance() après écriture.
Source du projet: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; fonction GetFindDistance.
3. SetFindDistance
Le bridge lit le réglage du runtime ou borne et stocke l’entier, sans parcourir le monde.
Integer facultatif. Sans argument : lecture ; value : écriture. Borné à 0..255 ; un négatif devient 0, pas illimité. Nouveau runtime : 18 ; un état restauré peut différer. Les décimaux sont tronqués vers zéro ; les chaînes numériques decimal/0x sont acceptées. Utilisez Integer pour éviter une conversion implicite.
Source du projet: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; fonction SetFindDistance.
4. FindType
Une recherche ultérieure lit le réglage en l’absence de remplacement explicite. Items au sol et Mobiles passent les filtres de distance et de hauteur correspondants.
FindTypeEx et FindTypesArrayEx appliquent ces limites au sol, pas au contenu des conteneurs. Type, couleur, Ignore et objets chargés restent déterminants. FindAtCoord ignore les deux limites. Les distance/maxZ explicites des commandes étendues peuvent les remplacer ; -1 dans ces paramètres utilise le défaut, contrairement à -1 affecté à la configuration. FindList filtre aussi Z dans les conteneurs : cette exception ne le concerne pas.
Source du projet: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; fonction FindType.
5. FindList
Une recherche ultérieure lit le réglage en l’absence de remplacement explicite. Items au sol et Mobiles passent les filtres de distance et de hauteur correspondants.
FindTypeEx et FindTypesArrayEx appliquent ces limites au sol, pas au contenu des conteneurs. Type, couleur, Ignore et objets chargés restent déterminants. FindAtCoord ignore les deux limites. Les distance/maxZ explicites des commandes étendues peuvent les remplacer ; -1 dans ces paramètres utilise le défaut, contrairement à -1 affecté à la configuration. FindList filtre aussi Z dans les conteneurs : cette exception ne le concerne pas.
Source du projet: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; fonction FindList.
Valeur du runtime du script courant, partagée par ses procédures ; les runtimes indépendants ont leurs propres valeurs. Lire/écrire ne cherche rien, ne vide pas FindItem/FindCount/GetFoundItems, n’envoie aucun paquet, ne déplace personne et ne charge aucun objet lointain.
Exemples
Lire, régler et vérifier les bornes
# Lire, régler et vérifier les bornes
#
# Lit ou modifie le rayon horizontal de recherche par défaut.
#
# Sans argument : Integer, limite actuelle (distance en cases), pas un ID, un nombre d’objets ou
# un Boolean. 0 indique une limite nulle, pas un échec. Avec value : Unit, aucune valeur ; ni
# TRUE/FALSE ni ancienne valeur. Relisez FindDistance() après écriture.
SUB Main()
# previous sauvegarde le réglage réel. value:=5 définit une limite normale ; 1000 est ramené à
# 255. Print utilise la lecture séparée. Finally restaure previous.
VAR previous = UO.FindDistance()
TRY
UO.FindDistance(value:=5)
UO.Print(CStr(UO.FindDistance()))
UO.FindDistance(1000)
UO.Print(CStr(UO.FindDistance()))
FINALLY
UO.FindDistance(previous)
END TRY
END SUB
Explication des paramètres et du déroulement:
- previous sauvegarde le réglage réel. value:=5 définit une limite normale ; 1000 est ramené à 255. Print utilise la lecture séparée. Finally restaure previous.
Recherche temporaire au sol
# Recherche temporaire au sol
#
# Lit ou modifie le rayon horizontal de recherche par défaut.
#
# Sans argument : Integer, limite actuelle (distance en cases), pas un ID, un nombre d’objets ou
# un Boolean. 0 indique une limite nulle, pas un échec. Avec value : Unit, aucune valeur ; ni
# TRUE/FALSE ni ancienne valeur. Relisez FindDistance() après écriture.
SUB Main()
# previous conserve le réglage appelant. 5 change seulement FindDistance, pas l’autre limite.
# 0x0EED : graphique de l’or ; -1 : toute couleur ; Container=-1 : monde ; FALSE : sans
# récursion des conteneurs. id est un serial ; <> 0 teste sa présence. FindCount compte les
# objets/piles. Finally restaure le réglage, pas la liste.
VAR previous = UO.FindDistance()
TRY
UO.FindDistance(5)
VAR id = UO.FindTypeEx(0x0EED, -1, -1, FALSE)
IF id <> 0 THEN
UO.Print(HEX(id) + ':' + CStr(UO.FindCount()))
ELSE
UO.Print('0')
END IF
FINALLY
UO.FindDistance(previous)
END TRY
END SUB
Explication des paramètres et du déroulement:
- previous conserve le réglage appelant. 5 change seulement FindDistance, pas l’autre limite. 0x0EED : graphique de l’or ; -1 : toute couleur ; Container=-1 : monde ; FALSE : sans récursion des conteneurs. id est un serial ; <> 0 teste sa présence. FindCount compte les objets/piles. Finally restaure le réglage, pas la liste.
Fonction complète CountGroundInRange
# Fonction complète CountGroundInRange
#
# Lit ou modifie le rayon horizontal de recherche par défaut.
#
# Sans argument : Integer, limite actuelle (distance en cases), pas un ID, un nombre d’objets ou
# un Boolean. 0 indique une limite nulle, pas un échec. Avec value : Unit, aucune valeur ; ni
# TRUE/FALSE ni ancienne valeur. Relisez FindDistance() après écriture.
SUB Main()
# CountGroundInRange(graphic, radius, height) sauvegarde les deux limites, applique radius=5 et
# height=10, cherche graphic=0x0EED et renvoie FindCount(). Une pile vaut un objet. Fonction
# complète après Main. Finally restaure les limites même lors de Return ; le résultat de
# recherche reste accessible.
VAR count = CountGroundInRange(0x0EED, 5, 10)
UO.Print(CStr(count))
END SUB
FUNCTION CountGroundInRange(graphic, radius, height)
VAR oldDistance = UO.FindDistance()
VAR oldVertical = UO.FindVertical()
TRY
UO.FindDistance(radius)
UO.FindVertical(height)
UO.FindTypeEx(graphic, -1, -1, FALSE)
RETURN UO.FindCount()
FINALLY
UO.FindDistance(oldDistance)
UO.FindVertical(oldVertical)
END TRY
END FUNCTION
Explication des paramètres et du déroulement:
- CountGroundInRange(graphic, radius, height) sauvegarde les deux limites, applique radius=5 et height=10, cherche graphic=0x0EED et renvoie FindCount(). Une pile vaut un objet. Fonction complète après Main. Finally restaure les limites même lors de Return ; le résultat de recherche reste accessible.