Skip to content

API UO IsFlying it

Codex edited this page Sep 22, 2026 · 1 revision

UO.IsFlying

ClassicUO / Basic IDE

Home · API A–Z · Каталоги

Controlla se un personaggio sta volando, normalmente un Gargoyle prima di un percorso o di una richiesta di decollo. Senza argomento: «sto volando?». Legge soltanto lo stato: non decolla, atterra o sposta il personaggio.

Sintassi esatta

UO.IsFlying() -> Integer
UO.IsFlying(value:Any) -> Integer

Parametri

  • value — Serial opzionale: numero, stringa esadecimale, self, lasttarget o nome UO.AddObject. Se omesso usa il proprio personaggio. È un ID mobile, non graphic/type o Z. Nome sconosciuto, mobile assente/distrutto o oggetto restituiscono 0.

Restituisce

Integer Boolean: 1 = TRUE, 0 = FALSE. Confrontabile con numeri o costanti logiche senza virgolette. 1 indica IsFlying sul mobile; altrimenti, o se assente, 0. La sola altezza Z non indica il volo.

Risultato logico: 1 = TRUE, 0 = FALSE. Dopo VAR result = comando(...), usare IF result = TRUE THEN o IF result = 1 THEN; per il risultato negativo, IF result = FALSE THEN o IF result = 0 THEN. TRUE/FALSE senza virgolette. Chiamare una sola volta e salvare il risultato: un nuovo richiamo può ripetere l’azione o leggere uno stato cambiato.

Comportamento

  • Serve soprattutto per il volo Gargoyle, ma il getter non controlla la razza. Legge il bit mobile 0x04 dal protocollo 7.0.0.0; prima restituisce 0. Tetto, Z alta, animazione delle ali o razza da soli non dimostrano il volo.
  • UO.ToggleFly() richiede separatamente un cambio di stato, non un’attivazione garantita. Durante il volo richiede l’atterraggio. Il server può rifiutare: rileggere Flying con attesa limitata. FALSE può indicare anche dati assenti; controllare Connected prima di agire.
  • Legge il modello locale: nessun target, richiesta di status, modifica di flag o invio di pacchetti. Un oggetto distrutto è assente anche prima della rimozione dal dizionario.
  • Ogni risultato è una lettura distinta. Il mondo può cambiare tra Exists e la chiamata successiva; più letture non formano un’istantanea atomica.

Funzioni interne: dalla chiamata al risultato

Queste sono le vere fasi interne C#. ReadState è una funzione ausiliaria completamente definita nell’esempio, non un comando integrato nascosto.

1. RegisterCharacterGetterAliases

Alla creazione del runtime, RegisterCharacterGetterAliases registra nomi e forme. Senza argomento usa bridge.Self; con un argomento usa il relativo serial. Le registrazioni esistenti vengono mantenute.

1 indica IsFlying sul mobile; altrimenti, o se assente, 0. La sola altezza Z non indica il volo.

Sorgente del progetto: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; funzione RegisterCharacterGetterAliases.

2. TryGetObject

TryGetObject risolve numeri, stringhe esadecimali e nomi salvati. Il nome AddObject viene risolto a ogni chiamata; nessuna ricerca graphic/type o selezione interattiva.

Serial opzionale: numero, stringa esadecimale, self, lasttarget o nome UO.AddObject. Se omesso usa il proprio personaggio. È un ID mobile, non graphic/type o Z. Nome sconosciuto, mobile assente/distrutto o oggetto restituiscono 0.

Sorgente del progetto: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; funzione TryGetObject.

3. Invoke

Invoke legge nel thread del gioco; un thread di lavoro attende l’elaborazione del gestore. L’annullamento dello script interrompe l’attesa. Nessun ritardo o richiesta di rete aggiuntivi.

Ogni risultato è una lettura distinta. Il mondo può cambiare tra Exists e la chiamata successiva; più letture non formano un’istantanea atomica.

Sorgente del progetto: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; funzione Invoke.

4. Flying

Controlla se un personaggio sta volando, normalmente un Gargoyle prima di un percorso o di una richiesta di decollo. Senza argomento: «sto volando?». Legge soltanto lo stato: non decolla, atterra o sposta il personaggio.

Serve soprattutto per il volo Gargoyle, ma il getter non controlla la razza. Legge il bit mobile 0x04 dal protocollo 7.0.0.0; prima restituisce 0. Tetto, Z alta, animazione delle ali o razza da soli non dimostrano il volo.

Sorgente del progetto: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; funzione Flying.

Legge il modello locale: nessun target, richiesta di status, modifica di flag o invio di pacchetti. Un oggetto distrutto è assente anche prima della rimozione dal dizionario.

Esempi

Controllare il modo prima del prossimo passo

# Parentesi vuote: self. TRUE = 1, FALSE = 0; IF UO.Flying() THEN è valido. Nessun cambio di stato.
SUB Main()
    # Read once; no toggle request is sent.
    VAR active = UO.IsFlying()
    IF active = TRUE THEN
        UO.Print("Flying mode active")
    ELSE
        UO.Print("Ground mode or character data unavailable")
    END IF
END SUB

Spiegazione dei parametri e dell’esecuzione:

  • Parentesi vuote: self. TRUE = 1, FALSE = 0; IF UO.Flying() THEN è valido. Nessun cambio di stato.

Controllare un personaggio già selezionato

# ReadState(obj) riceve serial/alias e restituisce lo stato; la funzione completa verifica prima l’esistenza. Per altri personaggi usa dati già caricati.
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.IsFlying(obj)
END FUNCTION

Spiegazione dei parametri e dell’esecuzione:

  • ReadState(obj) riceve serial/alias e restituisce lo stato; la funzione completa verifica prima l’esistenza. Per altri personaggi usa dati già caricati.

Richiedere il volo una volta e attendere

# Per il proprio Gargoyle su un server con volo. EnsureFlight(timeoutMs) restituisce 1/TRUE se osserva il volo, altrimenti 0/FALSE. Limite 2000 ms, controllo ogni 50 ms. Nessuna richiesta se già in volo, al massimo una negli altri casi. Pausa o ritardi di esecuzione possono estendere il tempo reale.
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.IsFlying() THEN
        RETURN TRUE
    END IF
    UO.ToggleFly()
    VAR waited = 0
    WHILE waited < timeoutMs
        IF NOT UO.Connected() THEN
            RETURN FALSE
        END IF
        IF UO.IsFlying() THEN
            RETURN TRUE
        END IF
        WAIT(50)
        waited += 50
    WEND
    RETURN UO.IsFlying()
END FUNCTION

Spiegazione dei parametri e dell’esecuzione:

  • Per il proprio Gargoyle su un server con volo. EnsureFlight(timeoutMs) restituisce 1/TRUE se osserva il volo, altrimenti 0/FALSE. Limite 2000 ms, controllo ogni 50 ms. Nessuna richiesta se già in volo, al massimo una negli altri casi. Pausa o ritardi di esecuzione possono estendere il tempo reale.

Clone this wiki locally