Skip to content

API UO IsFlying fr

Codex edited this page Sep 22, 2026 · 1 revision

UO.IsFlying

ClassicUO / Basic IDE

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

Vérifie si un personnage vole actuellement, généralement un Gargoyle avant un trajet ou une demande de décollage. Sans argument : « suis-je en vol ? ». La commande lit seulement l’état ; elle ne fait ni décoller, ni atterrir, ni déplacer le personnage.

Syntaxe exacte

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

Paramètres

  • value — Serial facultatif : nombre, chaîne hexadécimale, self, lasttarget ou nom UO.AddObject. Sans argument : votre personnage. ID de mobile, pas graphic/type ni Z. Nom inconnu, mobile absent/détruit ou objet : 0.

Retour

Integer Boolean : 1 = TRUE, 0 = FALSE. Comparez avec des nombres ou des constantes logiques sans guillemets. 1 si le mobile a IsFlying ; sinon, ou s’il est absent, 0. La hauteur Z ne suffit pas à indiquer le vol.

Résultat logique : 1 = TRUE, 0 = FALSE. Après VAR result = commande(...), utilisez IF result = TRUE THEN ou IF result = 1 THEN ; sinon IF result = FALSE THEN ou IF result = 0 THEN. TRUE/FALSE sans guillemets. Appelez une seule fois et conservez le résultat : un nouvel appel peut répéter l’action ou lire un état modifié.

Comportement

  • Utilisée surtout pour le vol Gargoyle, sans contrôle de race dans ce getter. Il lit le bit mobile 0x04 avec le protocole 7.0.0.0 ou ultérieur ; sinon 0. Un toit, une Z élevée, des ailes animées ou la race seule ne prouvent pas le vol.
  • UO.ToggleFly() demande séparément une bascule, pas une activation garantie. En vol, elle demande un atterrissage. Le serveur peut refuser : relire Flying avec une attente bornée. FALSE peut aussi signifier absence de personnage/données ; vérifier Connected avant une action.
  • Lit le modèle local : aucun target, aucune demande de status, aucune modification d’indicateur ni émission de paquet. Un objet détruit est absent avant même le retrait de son entrée du dictionnaire.
  • Chaque résultat est une lecture distincte. Le monde peut changer entre Exists et l’appel suivant ; plusieurs lectures ne forment pas un instantané atomique.

Fonctions internes : de l’appel au résultat

Voici les véritables étapes internes C#. ReadState est une fonction auxiliaire entièrement définie dans l’exemple, pas une commande intégrée cachée.

1. RegisterCharacterGetterAliases

À la création du runtime, RegisterCharacterGetterAliases enregistre les noms et les formes. Sans argument, utilise bridge.Self ; avec un argument, son serial. Les enregistrements existants sont conservés.

1 si le mobile a IsFlying ; sinon, ou s’il est absent, 0. La hauteur Z ne suffit pas à indiquer le vol.

Source du projet: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; fonction RegisterCharacterGetterAliases.

2. TryGetObject

TryGetObject résout les nombres, les chaînes hexadécimales et les noms enregistrés. Le nom AddObject est résolu à chaque appel ; aucune recherche graphic/type ni sélection interactive.

Serial facultatif : nombre, chaîne hexadécimale, self, lasttarget ou nom UO.AddObject. Sans argument : votre personnage. ID de mobile, pas graphic/type ni Z. Nom inconnu, mobile absent/détruit ou objet : 0.

Source du projet: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; fonction TryGetObject.

3. Invoke

Invoke lit dans le thread du jeu ; un thread de travail attend le traitement par le gestionnaire. L’annulation du script interrompt cette attente. Aucun délai ni appel réseau supplémentaire.

Chaque résultat est une lecture distincte. Le monde peut changer entre Exists et l’appel suivant ; plusieurs lectures ne forment pas un instantané atomique.

Source du projet: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; fonction Invoke.

4. Flying

Vérifie si un personnage vole actuellement, généralement un Gargoyle avant un trajet ou une demande de décollage. Sans argument : « suis-je en vol ? ». La commande lit seulement l’état ; elle ne fait ni décoller, ni atterrir, ni déplacer le personnage.

Utilisée surtout pour le vol Gargoyle, sans contrôle de race dans ce getter. Il lit le bit mobile 0x04 avec le protocole 7.0.0.0 ou ultérieur ; sinon 0. Un toit, une Z élevée, des ailes animées ou la race seule ne prouvent pas le vol.

Source du projet: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; fonction Flying.

Lit le modèle local : aucun target, aucune demande de status, aucune modification d’indicateur ni émission de paquet. Un objet détruit est absent avant même le retrait de son entrée du dictionnaire.

Exemples

Vérifier le mode avant la suite du script

# Sans argument : self. TRUE = 1, FALSE = 0 ; IF UO.Flying() THEN convient. Aucun changement ici.
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

Explication des paramètres et du déroulement:

  • Sans argument : self. TRUE = 1, FALSE = 0 ; IF UO.Flying() THEN convient. Aucun changement ici.

Examiner un personnage déjà sélectionné

# ReadState(obj) reçoit un serial/alias et renvoie l’état ; la fonction complète teste d’abord la présence. Les autres personnages utilisent les données déjà chargées.
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

Explication des paramètres et du déroulement:

  • ReadState(obj) reçoit un serial/alias et renvoie l’état ; la fonction complète teste d’abord la présence. Les autres personnages utilisent les données déjà chargées.

Demander une seule bascule et attendre

# Pour votre Gargoyle sur un serveur autorisant le vol. EnsureFlight(timeoutMs) renvoie 1/TRUE si le vol est observé, sinon 0/FALSE. Limite 2000 ms, contrôles toutes les 50 ms. Aucun appel si déjà en vol, sinon une demande au maximum. Une pause ou un retard d’exécution peut allonger le temps réel.
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

Explication des paramètres et du déroulement:

  • Pour votre Gargoyle sur un serveur autorisant le vol. EnsureFlight(timeoutMs) renvoie 1/TRUE si le vol est observé, sinon 0/FALSE. Limite 2000 ms, contrôles toutes les 50 ms. Aucun appel si déjà en vol, sinon une demande au maximum. Une pause ou un retard d’exécution peut allonger le temps réel.

Clone this wiki locally