API UO FindDistance it - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
UO.FindDistance
ClassicUO • Runtime API
Legge o modifica il raggio orizzontale predefinito della ricerca.
Sintassi esatta
UO.FindDistance() -> Integer
UO.FindDistance(value:Any) -> Unit
Parametri
value— Integer facoltativo. Senza argomento legge; value imposta. Limitato a 0..255; un negativo diventa 0, non illimitato. Nuovo runtime: 18; lo stato ripristinato può differire. I decimali sono troncati verso zero; sono ammesse stringhe numeriche decimal/0x. Usare Integer evita conversioni implicite.
Restituisce
Senza argomenti: Integer, limite corrente (distanza in caselle), non ID, conteggio o Boolean. 0 indica limite zero, non fallimento. Con value: Unit, nessun valore, né TRUE/FALSE né valore precedente. Rileggere FindDistance() dopo la modifica.
Comportamento
- Distanza: max(abs(dx), abs(dy)) dall’origine corrente della portata del client; una diagonale vale una casella. Limite incluso; 0 accetta solo le stesse X/Y. Per Mobile in movimento conta la posizione finale della coda dei passi.
- Memorizzato nel runtime dello script, condiviso dalle sue procedure; runtime indipendenti hanno valori separati. Leggere/scrivere non cerca, non cancella FindItem/FindCount/GetFoundItems, non invia pacchetti, non muove il personaggio e non carica oggetti lontani.
- FindTypeEx e FindTypesArrayEx applicano questi limiti a terra, non nei contenitori. Restano tipo, colore, Ignore e oggetti caricati. FindAtCoord ignora entrambi. distance/maxZ espliciti dei comandi estesi possono sostituirli; -1 in quei parametri usa il predefinito, diversamente da assegnare -1 all’impostazione. FindList filtra Z anche nei contenitori; l’eccezione precedente non vale per esso.
- Salvare prima della ricerca temporanea e ripristinare in Finally; nessun annullamento automatico. Finally copre fine normale ed errori intercettabili; non usare l’arresto d’emergenza per la pulizia.
- Riferimento: Stealth FindDistance. Questo client conserva valori iniziali/intervalli propri: FindDistance 18 / 0..255; FindVertical 2 / 0..120. Sintassi Basic e filtri estesi descrivono questo progetto.
Funzioni interne: dalla chiamata al risultato
Passaggi interni reali. CountGroundInRange è una funzione utente completa, non un comando integrato nascosto.
1. ExecuteStealthCompatibility
Senza argomenti legge; con uno converte value e scrive. I metadati distinguono Integer da Unit.
Senza argomenti: Integer, limite corrente (distanza in caselle), non ID, conteggio o Boolean. 0 indica limite zero, non fallimento. Con value: Unit, nessun valore, né TRUE/FALSE né valore precedente. Rileggere FindDistance() dopo la modifica.
Sorgente del progetto: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; funzione ExecuteStealthCompatibility.
2. GetFindDistance
Il bridge legge l’impostazione runtime oppure limita e memorizza l’intero, senza esaminare il mondo.
Senza argomenti: Integer, limite corrente (distanza in caselle), non ID, conteggio o Boolean. 0 indica limite zero, non fallimento. Con value: Unit, nessun valore, né TRUE/FALSE né valore precedente. Rileggere FindDistance() dopo la modifica.
Sorgente del progetto: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; funzione GetFindDistance.
3. SetFindDistance
Il bridge legge l’impostazione runtime oppure limita e memorizza l’intero, senza esaminare il mondo.
Integer facoltativo. Senza argomento legge; value imposta. Limitato a 0..255; un negativo diventa 0, non illimitato. Nuovo runtime: 18; lo stato ripristinato può differire. I decimali sono troncati verso zero; sono ammesse stringhe numeriche decimal/0x. Usare Integer evita conversioni implicite.
Sorgente del progetto: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; funzione SetFindDistance.
4. FindType
La ricerca successiva legge l’impostazione se non è sostituita esplicitamente. Item a terra e Mobile usano i relativi filtri di distanza e altezza.
FindTypeEx e FindTypesArrayEx applicano questi limiti a terra, non nei contenitori. Restano tipo, colore, Ignore e oggetti caricati. FindAtCoord ignora entrambi. distance/maxZ espliciti dei comandi estesi possono sostituirli; -1 in quei parametri usa il predefinito, diversamente da assegnare -1 all’impostazione. FindList filtra Z anche nei contenitori; l’eccezione precedente non vale per esso.
Sorgente del progetto: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; funzione FindType.
5. FindList
La ricerca successiva legge l’impostazione se non è sostituita esplicitamente. Item a terra e Mobile usano i relativi filtri di distanza e altezza.
FindTypeEx e FindTypesArrayEx applicano questi limiti a terra, non nei contenitori. Restano tipo, colore, Ignore e oggetti caricati. FindAtCoord ignora entrambi. distance/maxZ espliciti dei comandi estesi possono sostituirli; -1 in quei parametri usa il predefinito, diversamente da assegnare -1 all’impostazione. FindList filtra Z anche nei contenitori; l’eccezione precedente non vale per esso.
Sorgente del progetto: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; funzione FindList.
Memorizzato nel runtime dello script, condiviso dalle sue procedure; runtime indipendenti hanno valori separati. Leggere/scrivere non cerca, non cancella FindItem/FindCount/GetFoundItems, non invia pacchetti, non muove il personaggio e non carica oggetti lontani.
Esempi
Leggere, impostare e osservare i limiti
# Leggere, impostare e osservare i limiti
#
# Legge o modifica il raggio orizzontale predefinito della ricerca.
#
# Senza argomenti: Integer, limite corrente (distanza in caselle), non ID, conteggio o Boolean.
# 0 indica limite zero, non fallimento. Con value: Unit, nessun valore, né TRUE/FALSE né valore
# precedente. Rileggere FindDistance() dopo la modifica.
SUB Main()
# previous salva l’impostazione reale. value:=5 imposta un limite normale; 1000 viene ridotto a
# 255. Print legge separatamente. Finally ripristina 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
Spiegazione dei parametri e dell’esecuzione:
- previous salva l’impostazione reale. value:=5 imposta un limite normale; 1000 viene ridotto a 255. Print legge separatamente. Finally ripristina previous.
Ricerca temporanea a terra
# Ricerca temporanea a terra
#
# Legge o modifica il raggio orizzontale predefinito della ricerca.
#
# Senza argomenti: Integer, limite corrente (distanza in caselle), non ID, conteggio o Boolean.
# 0 indica limite zero, non fallimento. Con value: Unit, nessun valore, né TRUE/FALSE né valore
# precedente. Rileggere FindDistance() dopo la modifica.
SUB Main()
# previous conserva il valore del chiamante. 5 cambia solo FindDistance; l’altro limite resta.
# 0x0EED: grafica dell’oro; -1: qualsiasi colore; Container=-1: mondo; FALSE: nessuna ricorsione
# dei contenitori. id è un serial; <> 0 verifica la presenza. FindCount conta oggetti/pile.
# Finally ripristina il limite, non la lista.
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
Spiegazione dei parametri e dell’esecuzione:
- previous conserva il valore del chiamante. 5 cambia solo FindDistance; l’altro limite resta. 0x0EED: grafica dell’oro; -1: qualsiasi colore; Container=-1: mondo; FALSE: nessuna ricorsione dei contenitori. id è un serial; <> 0 verifica la presenza. FindCount conta oggetti/pile. Finally ripristina il limite, non la lista.
Funzione completa CountGroundInRange
# Funzione completa CountGroundInRange
#
# Legge o modifica il raggio orizzontale predefinito della ricerca.
#
# Senza argomenti: Integer, limite corrente (distanza in caselle), non ID, conteggio o Boolean.
# 0 indica limite zero, non fallimento. Con value: Unit, nessun valore, né TRUE/FALSE né valore
# precedente. Rileggere FindDistance() dopo la modifica.
SUB Main()
# CountGroundInRange(graphic, radius, height) salva entrambi i limiti, imposta radius=5 e
# height=10, cerca graphic=0x0EED e restituisce FindCount(). Una pila vale un oggetto. Funzione
# completa dopo Main. Finally ripristina anche con Return; i risultati della ricerca restano
# disponibili.
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
Spiegazione dei parametri e dell’esecuzione:
- CountGroundInRange(graphic, radius, height) salva entrambi i limiti, imposta radius=5 e height=10, cerca graphic=0x0EED e restituisce FindCount(). Una pila vale un oggetto. Funzione completa dopo Main. Finally ripristina anche con Return; i risultati della ricerca restano disponibili.