API UO FindDistance es - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
UO.FindDistance
ClassicUO • Runtime API
Lee o cambia el radio horizontal de búsqueda predeterminado.
Sintaxis exacta
UO.FindDistance() -> Integer
UO.FindDistance(value:Any) -> Unit
Parámetros
value— Integer opcional. Sin argumento lee; value establece. Se limita a 0..255; un negativo pasa a 0, no a ilimitado. Runtime nuevo: 18; un estado restaurado puede diferir. Los decimales se truncan hacia cero; también admite cadenas numéricas decimal/0x. Use Integer para evitar conversiones implícitas.
Devuelve
Sin argumentos: Integer, límite actual (distancia en casillas), no un ID, cantidad de objetos o Boolean. 0 significa límite cero, no fallo. Con value: Unit, sin valor, ni TRUE/FALSE ni valor anterior. Lea FindDistance() después de escribir.
Comportamiento
- Distancia: max(abs(dx), abs(dy)) desde el origen actual de alcance del cliente; una diagonal cuenta como una casilla. Incluye el límite; 0 exige las mismas X/Y. En Mobiles en movimiento se usa la posición final de la cola de pasos.
- Se guarda en el runtime del script y se comparte entre sus procedimientos; runtimes independientes tienen valores separados. Leer/escribir no busca, no borra FindItem/FindCount/GetFoundItems, no envía paquetes, no mueve al personaje ni carga objetos lejanos.
- FindTypeEx y FindTypesArrayEx aplican estos límites al suelo, no al contenido de contenedores. Siguen vigentes tipo, color, Ignore y objetos cargados. FindAtCoord ignora ambos. distance/maxZ explícitos de comandos ampliados pueden sustituirlos; -1 en esos parámetros usa el valor por defecto, a diferencia de asignar -1 al ajuste. FindList también filtra Z en contenedores; la excepción anterior no se le aplica.
- Guarde antes de una búsqueda temporal y restaure en Finally; no hay reversión automática. Finally cubre finalización normal y errores capturables; la parada de emergencia no es un mecanismo de limpieza.
- Referencia: Stealth FindDistance. Este cliente conserva valores iniciales/rangos propios: FindDistance 18 / 0..255; FindVertical 2 / 0..120. La sintaxis Basic y los filtros ampliados describen este proyecto.
Funciones internas: de la llamada al resultado
Etapas internas reales. CountGroundInRange es una función de usuario completa, no un comando integrado oculto.
1. ExecuteStealthCompatibility
Cero argumentos seleccionan lectura; uno convierte value y escribe. Los metadatos distinguen Integer de Unit.
Sin argumentos: Integer, límite actual (distancia en casillas), no un ID, cantidad de objetos o Boolean. 0 significa límite cero, no fallo. Con value: Unit, sin valor, ni TRUE/FALSE ni valor anterior. Lea FindDistance() después de escribir.
Código del proyecto: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; función ExecuteStealthCompatibility.
2. GetFindDistance
El bridge lee el ajuste runtime o limita y guarda el entero, sin recorrer el mundo.
Sin argumentos: Integer, límite actual (distancia en casillas), no un ID, cantidad de objetos o Boolean. 0 significa límite cero, no fallo. Con value: Unit, sin valor, ni TRUE/FALSE ni valor anterior. Lea FindDistance() después de escribir.
Código del proyecto: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; función GetFindDistance.
3. SetFindDistance
El bridge lee el ajuste runtime o limita y guarda el entero, sin recorrer el mundo.
Integer opcional. Sin argumento lee; value establece. Se limita a 0..255; un negativo pasa a 0, no a ilimitado. Runtime nuevo: 18; un estado restaurado puede diferir. Los decimales se truncan hacia cero; también admite cadenas numéricas decimal/0x. Use Integer para evitar conversiones implícitas.
Código del proyecto: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; función SetFindDistance.
4. FindType
La búsqueda posterior lee el ajuste cuando no hay sustitución explícita. Items del suelo y Mobiles pasan los filtros de distancia y altura correspondientes.
FindTypeEx y FindTypesArrayEx aplican estos límites al suelo, no al contenido de contenedores. Siguen vigentes tipo, color, Ignore y objetos cargados. FindAtCoord ignora ambos. distance/maxZ explícitos de comandos ampliados pueden sustituirlos; -1 en esos parámetros usa el valor por defecto, a diferencia de asignar -1 al ajuste. FindList también filtra Z en contenedores; la excepción anterior no se le aplica.
Código del proyecto: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; función FindType.
5. FindList
La búsqueda posterior lee el ajuste cuando no hay sustitución explícita. Items del suelo y Mobiles pasan los filtros de distancia y altura correspondientes.
FindTypeEx y FindTypesArrayEx aplican estos límites al suelo, no al contenido de contenedores. Siguen vigentes tipo, color, Ignore y objetos cargados. FindAtCoord ignora ambos. distance/maxZ explícitos de comandos ampliados pueden sustituirlos; -1 en esos parámetros usa el valor por defecto, a diferencia de asignar -1 al ajuste. FindList también filtra Z en contenedores; la excepción anterior no se le aplica.
Código del proyecto: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; función FindList.
Se guarda en el runtime del script y se comparte entre sus procedimientos; runtimes independientes tienen valores separados. Leer/escribir no busca, no borra FindItem/FindCount/GetFoundItems, no envía paquetes, no mueve al personaje ni carga objetos lejanos.
Ejemplos
Leer, establecer y comprobar los límites
# Leer, establecer y comprobar los límites
#
# Lee o cambia el radio horizontal de búsqueda predeterminado.
#
# Sin argumentos: Integer, límite actual (distancia en casillas), no un ID, cantidad de objetos
# o Boolean. 0 significa límite cero, no fallo. Con value: Unit, sin valor, ni TRUE/FALSE ni
# valor anterior. Lea FindDistance() después de escribir.
SUB Main()
# previous guarda el ajuste real. value:=5 fija un límite normal; 1000 se reduce a 255. Print
# lee por separado. Finally restaura 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
Explicación de los parámetros y la ejecución:
- previous guarda el ajuste real. value:=5 fija un límite normal; 1000 se reduce a 255. Print lee por separado. Finally restaura previous.
Búsqueda temporal en el suelo
# Búsqueda temporal en el suelo
#
# Lee o cambia el radio horizontal de búsqueda predeterminado.
#
# Sin argumentos: Integer, límite actual (distancia en casillas), no un ID, cantidad de objetos
# o Boolean. 0 significa límite cero, no fallo. Con value: Unit, sin valor, ni TRUE/FALSE ni
# valor anterior. Lea FindDistance() después de escribir.
SUB Main()
# previous conserva el valor del llamador. 5 cambia solo FindDistance; el otro límite permanece.
# 0x0EED: gráfico del oro; -1: cualquier color; Container=-1: mundo; FALSE: sin recursión de
# contenedores. id es un serial; <> 0 comprueba existencia. FindCount cuenta objetos/pilas.
# Finally restaura el ajuste, no 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
Explicación de los parámetros y la ejecución:
- previous conserva el valor del llamador. 5 cambia solo FindDistance; el otro límite permanece. 0x0EED: gráfico del oro; -1: cualquier color; Container=-1: mundo; FALSE: sin recursión de contenedores. id es un serial; <> 0 comprueba existencia. FindCount cuenta objetos/pilas. Finally restaura el ajuste, no la lista.
Función completa CountGroundInRange
# Función completa CountGroundInRange
#
# Lee o cambia el radio horizontal de búsqueda predeterminado.
#
# Sin argumentos: Integer, límite actual (distancia en casillas), no un ID, cantidad de objetos
# o Boolean. 0 significa límite cero, no fallo. Con value: Unit, sin valor, ni TRUE/FALSE ni
# valor anterior. Lea FindDistance() después de escribir.
SUB Main()
# CountGroundInRange(graphic, radius, height) guarda ambos límites, establece radius=5 y
# height=10, busca graphic=0x0EED y devuelve FindCount(). Una pila cuenta como un objeto.
# Función completa después de Main. Finally restaura incluso al salir con Return; los resultados
# de búsqueda permanecen.
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
Explicación de los parámetros y la ejecución:
- CountGroundInRange(graphic, radius, height) guarda ambos límites, establece radius=5 y height=10, busca graphic=0x0EED y devuelve FindCount(). Una pila cuenta como un objeto. Función completa después de Main. Finally restaura incluso al salir con Return; los resultados de búsqueda permanecen.