-
Notifications
You must be signed in to change notification settings - Fork 0
API UO Flying es
ClassicUO / Basic IDE
Comprueba si un personaje está volando, normalmente un Gargoyle antes de una ruta o una solicitud de despegue. Sin argumento: «¿estoy volando?». Solo lee el estado; no despega, aterriza ni mueve al personaje.
UO.Flying() -> Integer
UO.Flying(id:Any) -> Integer
-
id— Serial opcional: número, cadena hexadecimal, self, lasttarget o nombre UO.AddObject. Si se omite usa tu personaje. Es un ID de mobile, no graphic/type ni Z. Nombre desconocido, mobile ausente/destruido u objeto devuelven 0.
Integer Boolean: 1 = TRUE, 0 = FALSE. Puede compararse con números o constantes lógicas sin comillas. 1 indica IsFlying en el mobile; en caso contrario, o si no existe, 0. La altura Z por sí sola no indica vuelo.
Resultado lógico: 1 = TRUE, 0 = FALSE. Tras VAR result = comando(...), use IF result = TRUE THEN o IF result = 1 THEN; para el resultado negativo, IF result = FALSE THEN o IF result = 0 THEN. TRUE/FALSE sin comillas. Llame una vez y guarde el resultado: otra llamada puede repetir la acción o leer un estado cambiado.
- Se usa principalmente para vuelo Gargoyle, pero el getter no comprueba raza. Lee el bit mobile 0x04 desde el protocolo 7.0.0.0; antes devuelve 0. Techo, Z alta, animación de alas o raza por sí solos no prueban el vuelo.
- UO.ToggleFly() solicita aparte un cambio, no una activación garantizada. Si ya vuelas solicita aterrizar. El servidor puede rechazarlo: vuelve a leer Flying con espera limitada. FALSE también puede indicar datos ausentes; comprueba Connected antes de actuar.
- Lee el modelo local: no abre target, no solicita status, no cambia indicadores ni envía paquetes. Un objeto destruido está ausente incluso antes de eliminar su entrada del diccionario.
- Cada resultado es una lectura independiente. El mundo puede cambiar entre Exists y la siguiente llamada; varias consultas no forman una instantánea atómica.
Estas son las etapas internas reales de C#. ReadState es una función auxiliar completamente definida en el ejemplo, no un comando integrado oculto.
Al crear el runtime, RegisterCharacterGetterAliases registra nombres y formas. Sin argumento utiliza bridge.Self; con un argumento utiliza su serial. Se conservan los registros existentes.
1 indica IsFlying en el mobile; en caso contrario, o si no existe, 0. La altura Z por sí sola no indica vuelo.
Código del proyecto: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; función RegisterCharacterGetterAliases.
TryGetObject resuelve números, cadenas hexadecimales y nombres guardados. El nombre AddObject se resuelve en cada llamada; no busca graphic/type ni abre una selección interactiva.
Serial opcional: número, cadena hexadecimal, self, lasttarget o nombre UO.AddObject. Si se omite usa tu personaje. Es un ID de mobile, no graphic/type ni Z. Nombre desconocido, mobile ausente/destruido u objeto devuelven 0.
Código del proyecto: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; función TryGetObject.
Invoke lee en el hilo del juego; un hilo de trabajo espera el procesamiento del gestor. Cancelar el script interrumpe esa espera. No añade demoras ni consultas de red.
Cada resultado es una lectura independiente. El mundo puede cambiar entre Exists y la siguiente llamada; varias consultas no forman una instantánea atómica.
Código del proyecto: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; función Invoke.
Comprueba si un personaje está volando, normalmente un Gargoyle antes de una ruta o una solicitud de despegue. Sin argumento: «¿estoy volando?». Solo lee el estado; no despega, aterriza ni mueve al personaje.
Se usa principalmente para vuelo Gargoyle, pero el getter no comprueba raza. Lee el bit mobile 0x04 desde el protocolo 7.0.0.0; antes devuelve 0. Techo, Z alta, animación de alas o raza por sí solos no prueban el vuelo.
Código del proyecto: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; función Flying.
Lee el modelo local: no abre target, no solicita status, no cambia indicadores ni envía paquetes. Un objeto destruido está ausente incluso antes de eliminar su entrada del diccionario.
# Paréntesis vacíos: self. TRUE = 1, FALSE = 0; IF UO.Flying() THEN es válido. No cambia el estado.
SUB Main()
# Read once; no toggle request is sent.
VAR active = UO.Flying()
IF active = TRUE THEN
UO.Print("Flying mode active")
ELSE
UO.Print("Ground mode or character data unavailable")
END IF
END SUBExplicación de los parámetros y la ejecución:
- Paréntesis vacíos: self. TRUE = 1, FALSE = 0; IF UO.Flying() THEN es válido. No cambia el estado.
# ReadState(obj) recibe serial/alias y devuelve el estado; la función completa comprueba primero la existencia. Para otros personajes usa los datos ya cargados.
SUB Main()
# Previously selected mobile; no target cursor is opened.
VAR target = ASC(UO.GetSerial("lasttarget"), 0)
IF target <> 0 AndAlso UO.Exists(target) THEN
IF ReadState(target) THEN
UO.AddObject("flying_mobile", target)
END IF
END IF
END SUB
FUNCTION ReadState(obj)
IF NOT UO.Exists(obj) THEN
RETURN FALSE
END IF
RETURN UO.Flying(obj)
END FUNCTIONExplicación de los parámetros y la ejecución:
- ReadState(obj) recibe serial/alias y devuelve el estado; la función completa comprueba primero la existencia. Para otros personajes usa los datos ya cargados.
# Para tu Gargoyle en un servidor con vuelo. EnsureFlight(timeoutMs) devuelve 1/TRUE al observar vuelo, o 0/FALSE. Límite 2000 ms, consultas cada 50 ms. Ninguna solicitud si ya vuelas; en otro caso como máximo una. Una pausa o retraso de ejecución puede alargar el tiempo real.
SUB Main()
# timeoutMs = 2000; poll interval = 50 ms; at most one toggle request.
IF EnsureFlight(2000) THEN
UO.Print("Flight confirmed; ready for the next stage")
ELSE
UO.Print("Flight not confirmed; route was not started")
END IF
END SUB
FUNCTION EnsureFlight(timeoutMs)
IF NOT UO.Connected() OrElse UO.Dead() THEN
RETURN FALSE
END IF
IF UO.Flying() THEN
RETURN TRUE
END IF
UO.ToggleFly()
VAR waited = 0
WHILE waited < timeoutMs
IF NOT UO.Connected() THEN
RETURN FALSE
END IF
IF UO.Flying() THEN
RETURN TRUE
END IF
WAIT(50)
waited += 50
WEND
RETURN UO.Flying()
END FUNCTIONExplicación de los parámetros y la ejecución:
- Para tu Gargoyle en un servidor con vuelo. EnsureFlight(timeoutMs) devuelve 1/TRUE al observar vuelo, o 0/FALSE. Límite 2000 ms, consultas cada 50 ms. Ninguna solicitud si ya vuelas; en otro caso como máximo una. Una pausa o retraso de ejecución puede alargar el tiempo real.
ClassicUO
Bad Newbie & Basic IDE
Найти в справочнике
Клиент и скрипты
Каталоги значений
Разработка и помощь