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.

en · ru · uk · fr · de · it · es · zh-tw · ja · ko

Basic