-
Notifications
You must be signed in to change notification settings - Fork 0
API UO GetFlying de
ClassicUO / Basic IDE
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.
UO.GetFlying() -> Integer
UO.GetFlying(value:Any) -> Integer
-
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.
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.
- 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.
Dies sind die tatsächlichen internen C#-Schritte. ReadState ist eine vollständig definierte Hilfsfunktion im Beispiel, kein verborgener integrierter Befehl.
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.
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.
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.
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.
# 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 SUBErlä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.
# 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 FUNCTIONErlä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.
# 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 FUNCTIONErlä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.
ClassicUO
Bad Newbie & Basic IDE
Найти в справочнике
Клиент и скрипты
Каталоги значений
Разработка и помощь