Skip to content

API UO GetFlying de

Codex edited this page Sep 22, 2026 · 1 revision

UO.GetFlying

ClassicUO / Basic IDE

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

Prüft, ob eine Figur gerade fliegt, meist ein Gargoyle vor einem Weg oder einer Fluganfrage. Ohne Argument: „Fliege ich gerade?“. Die Abfrage liest nur den Zustand; sie startet, landet oder bewegt die Figur nicht.

Genaue Syntax

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

Parameter

  • value — Optionaler Mobile-Serial: Zahl, Hex-String, self, lasttarget oder UO.AddObject-Name. Ohne Argument: eigene Figur. Objekt-ID, nicht graphic/type oder Z. Unbekannter Name, fehlendes/zerstörtes Mobile oder Gegenstand ergibt 0.

Rückgabewert

Integer Boolean: 1 = TRUE, 0 = FALSE. Zahlen oder logische Konstanten ohne Anführungszeichen sind vergleichbar. 1 bedeutet IsFlying beim Mobile; sonst oder ohne Mobile 0. Die Höhe Z allein bedeutet keinen Flug.

Logisches Ergebnis: 1 = TRUE, 0 = FALSE. Nach VAR result = Befehl(...) sind IF result = TRUE THEN und IF result = 1 THEN gleichwertig; entsprechend IF result = FALSE THEN und IF result = 0 THEN. TRUE/FALSE ohne Anführungszeichen. Einmal aufrufen und speichern: Ein weiterer Aufruf kann die Aktion wiederholen oder einen geänderten Zustand lesen.

Verhalten

  • Hauptzweck ist Gargoyle-Flug; der Getter prüft jedoch keine Rasse. Er liest Mobile-Bit 0x04 ab Protokoll 7.0.0.0, sonst 0. Dach, hohe Z, Flügelanimation oder Rasse allein beweisen keinen Flug.
  • UO.ToggleFly() fordert separat einen Wechsel an, kein garantiertes Einschalten. Im Flug wird eine Landung angefordert. Der Server kann ablehnen: Flying mit begrenzter Wartezeit erneut prüfen. FALSE kann auch fehlende Daten bedeuten; vor einer Aktion Connected prüfen.
  • Liest das lokale Modell: kein target, keine status-Anforderung, Flagänderung oder Paketsendung. Ein zerstörtes Objekt gilt schon vor dem Entfernen seines Wörterbucheintrags als fehlend.
  • Jedes Ergebnis ist eine einzelne Abfrage. Zwischen Exists und dem nächsten Aufruf kann sich die Welt ändern; mehrere Abfragen bilden keinen atomaren Schnappschuss.

Interne Funktionen: vom Aufruf zum Ergebnis

Dies sind die tatsächlichen internen C#-Schritte. ReadState ist eine vollständig definierte Hilfsfunktion im Beispiel, kein verborgener integrierter Befehl.

1. RegisterCharacterGetterAliases

Beim Erstellen des runtime registriert RegisterCharacterGetterAliases Namen und Formen. Ohne Argument wird bridge.Self gewählt, mit Argument dessen serial. Bestehende Registrierungen bleiben erhalten.

1 bedeutet IsFlying beim Mobile; sonst oder ohne Mobile 0. Die Höhe Z allein bedeutet keinen Flug.

Projektquelle: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; Funktion RegisterCharacterGetterAliases.

2. TryGetObject

TryGetObject löst Zahlen, Hex-Zeichenfolgen und gespeicherte Namen auf. AddObject-Namen werden bei jedem Aufruf neu aufgelöst; keine Suche nach graphic/type und keine interaktive Auswahl.

Optionaler Mobile-Serial: Zahl, Hex-String, self, lasttarget oder UO.AddObject-Name. Ohne Argument: eigene Figur. Objekt-ID, nicht graphic/type oder Z. Unbekannter Name, fehlendes/zerstörtes Mobile oder Gegenstand ergibt 0.

Projektquelle: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; Funktion TryGetObject.

3. Invoke

Invoke liest im Spielthread; ein Arbeitsthread wartet auf die Verarbeitung durch den Manager. Skriptabbruch unterbricht das Warten. Keine zusätzliche Verzögerung oder Netzwerkanfrage.

Jedes Ergebnis ist eine einzelne Abfrage. Zwischen Exists und dem nächsten Aufruf kann sich die Welt ändern; mehrere Abfragen bilden keinen atomaren Schnappschuss.

Projektquelle: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; Funktion Invoke.

4. Flying

Prüft, ob eine Figur gerade fliegt, meist ein Gargoyle vor einem Weg oder einer Fluganfrage. Ohne Argument: „Fliege ich gerade?“. Die Abfrage liest nur den Zustand; sie startet, landet oder bewegt die Figur nicht.

Hauptzweck ist Gargoyle-Flug; der Getter prüft jedoch keine Rasse. Er liest Mobile-Bit 0x04 ab Protokoll 7.0.0.0, sonst 0. Dach, hohe Z, Flügelanimation oder Rasse allein beweisen keinen Flug.

Projektquelle: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; Funktion Flying.

Liest das lokale Modell: kein target, keine status-Anforderung, Flagänderung oder Paketsendung. Ein zerstörtes Objekt gilt schon vor dem Entfernen seines Wörterbucheintrags als fehlend.

Beispiele

Modus vor dem nächsten Skriptschritt prüfen

# Leere Klammern wählen self. TRUE = 1, FALSE = 0; IF UO.Flying() THEN ist gültig. Es wird nichts umgeschaltet.
SUB Main()
    # Read once; no toggle request is sent.
    VAR active = UO.GetFlying()
    IF active = TRUE THEN
        UO.Print("Flying mode active")
    ELSE
        UO.Print("Ground mode or character data unavailable")
    END IF
END SUB

Erläuterung der Parameter und Ausführung:

  • Leere Klammern wählen self. TRUE = 1, FALSE = 0; IF UO.Flying() THEN ist gültig. Es wird nichts umgeschaltet.

Eine zuvor ausgewählte Figur prüfen

# ReadState(obj) nimmt Serial/Alias an und liefert den Zustand. Die vollständige Funktion prüft zuerst die Existenz. Fremde Figuren werden anhand geladener Daten gelesen.
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.GetFlying(obj)
END FUNCTION

Erläuterung der Parameter und Ausführung:

  • ReadState(obj) nimmt Serial/Alias an und liefert den Zustand. Die vollständige Funktion prüft zuerst die Existenz. Fremde Figuren werden anhand geladener Daten gelesen.

Einmal Flug anfordern und Zustand abwarten

# Für den eigenen Gargoyle auf einem Server mit Flug. EnsureFlight(timeoutMs) liefert bei beobachtetem Flug 1/TRUE, sonst 0/FALSE. Grenze 2000 ms, Abfragen alle 50 ms. Bei bestehendem Flug keine Anfrage, sonst höchstens eine. Pause oder Ausführungsverzögerungen können die reale Zeit verlängern.
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.GetFlying() THEN
        RETURN TRUE
    END IF
    UO.ToggleFly()
    VAR waited = 0
    WHILE waited < timeoutMs
        IF NOT UO.Connected() THEN
            RETURN FALSE
        END IF
        IF UO.GetFlying() THEN
            RETURN TRUE
        END IF
        WAIT(50)
        waited += 50
    WEND
    RETURN UO.GetFlying()
END FUNCTION

Erläuterung der Parameter und Ausführung:

  • Für den eigenen Gargoyle auf einem Server mit Flug. EnsureFlight(timeoutMs) liefert bei beobachtetem Flug 1/TRUE, sonst 0/FALSE. Grenze 2000 ms, Abfragen alle 50 ms. Bei bestehendem Flug keine Anfrage, sonst höchstens eine. Pause oder Ausführungsverzögerungen können die reale Zeit verlängern.

Clone this wiki locally