Skip to content

API UO IsActiveSpellAbility de

Codex edited this page Sep 23, 2026 · 1 revision

UO.IsActiveSpellAbility

ClassicUO / Basic IDE

Home · API · Commands

Prüft, ob der Server den gewählten Zauber bzw. die Fähigkeit als aktiv gemeldet hat. Hilft, erneutes Aktivieren zu vermeiden. Aktiviert nichts, zaubert nicht und wählt kein Ziel.

Genaue Syntax

UO.IsActiveSpellAbility(SpellName:Any) -> Any

Parameter

  • SpellName — Genau ein Pflichtargument: englischer Katalogname oder ganzzahlige Zauber-ID. "Confidence" und 402 stehen für denselben Bushido-Zauber. Groß-/Kleinschreibung ist egal, Unterstriche werden Leerzeichen. Zahlenzeichenfolgen sind erlaubt. Keine Charakter-Serial, Item-Grafik oder Fertigkeitsnummer.

Rückgabewert

Integer: 1 bei gemeldetem aktivem Zustand, sonst 0. Bedingungen dürfen 1/0 oder TRUE/FALSE verwenden. Kein Zähler, keine Dauer und kein Ergebnis des letzten Zaubers. Unbekannte Namen, IDs außerhalb 1…65535 und fehlende Meldungen liefern ebenfalls 0.

Verhalten

  • Das Serverpaket 0xBF/0x25 fügt IDs hinzu oder entfernt sie. Funktioniert ohne Grafik und Zauberschaltfläche. Fensterschließen behält den Zustand; Verbindungsabbruch löscht ihn. 0 beweist keine fehlende Zauberfähigkeit. Der Shard muss diesen Status senden; keine allgemeine Buff-Abfrage. Heal/Recall bestätigen damit keinen Zaubererfolg. Dauer, Mana, Verfügbarkeit und Erfolg werden nicht ermittelt.

Interne Funktionen: vom Aufruf zum Ergebnis

InjectionApiUO löst Namen über den Full-Katalog auf oder liest die ID. Bridge.IsActiveSpell liest ActiveSpellIconsManager im Welt-Thread und liefert 1/0, ohne Anfrage oder Warten.

1. IsActiveSpell

Prüft, ob der Server den gewählten Zauber bzw. die Fähigkeit als aktiv gemeldet hat. Hilft, erneutes Aktivieren zu vermeiden. Aktiviert nichts, zaubert nicht und wählt kein Ziel.

Integer: 1 bei gemeldetem aktivem Zustand, sonst 0. Bedingungen dürfen 1/0 oder TRUE/FALSE verwenden. Kein Zähler, keine Dauer und kein Ergebnis des letzten Zaubers. Unbekannte Namen, IDs außerhalb 1…65535 und fehlende Meldungen liefern ebenfalls 0.

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

2. ActiveSpellIconsManager

Das Serverpaket 0xBF/0x25 fügt IDs hinzu oder entfernt sie. Funktioniert ohne Grafik und Zauberschaltfläche. Fensterschließen behält den Zustand; Verbindungsabbruch löscht ihn. 0 beweist keine fehlende Zauberfähigkeit. Der Shard muss diesen Status senden; keine allgemeine Buff-Abfrage. Heal/Recall bestätigen damit keinen Zaubererfolg. Dauer, Mana, Verfügbarkeit und Erfolg werden nicht ermittelt.

Integer: 1 bei gemeldetem aktivem Zustand, sonst 0. Bedingungen dürfen 1/0 oder TRUE/FALSE verwenden. Kein Zähler, keine Dauer und kein Ergebnis des letzten Zaubers. Unbekannte Namen, IDs außerhalb 1…65535 und fehlende Meldungen liefern ebenfalls 0.

Projektquelle: src/ClassicUO.Client/Game/Managers/ActiveIconsManager.cs; Funktion ActiveSpellIconsManager.

Integer: 1 bei gemeldetem aktivem Zustand, sonst 0. Bedingungen dürfen 1/0 oder TRUE/FALSE verwenden. Kein Zähler, keine Dauer und kein Ergebnis des letzten Zaubers. Unbekannte Namen, IDs außerhalb 1…65535 und fehlende Meldungen liefern ebenfalls 0.

Beispiele

ID prüfen

# ID prüfen
#
# Prüft, ob der Server den gewählten Zauber bzw. die Fähigkeit als aktiv gemeldet hat. Hilft,
# erneutes Aktivieren zu vermeiden. Aktiviert nichts, zaubert nicht und wählt kein Ziel.
#
# Integer: 1 bei gemeldetem aktivem Zustand, sonst 0. Bedingungen dürfen 1/0 oder TRUE/FALSE
# verwenden. Kein Zähler, keine Dauer und kein Ergebnis des letzten Zaubers. Unbekannte Namen,
# IDs außerhalb 165535 und fehlende Meldungen liefern ebenfalls 0.

SUB Main()
    # 402 ist Confidence. active ist 1/0; TRUE entspricht hier 1. Gemeldeter Status, kein
    # Zauberergebnis.

    VAR active = UO.IsActiveSpellAbility(402)
    IF active = TRUE THEN
        UO.Print("Confidence is active")
    ELSE
        UO.Print("No active Confidence state received")
    END IF
END SUB

Erläuterung der Parameter und Ausführung:

  • 402 ist Confidence. active ist 1/0; TRUE entspricht hier 1. Gemeldeter Status, kein Zauberergebnis.

Doppelte Aktivierung vermeiden

# Doppelte Aktivierung vermeiden
#
# Prüft, ob der Server den gewählten Zauber bzw. die Fähigkeit als aktiv gemeldet hat. Hilft,
# erneutes Aktivieren zu vermeiden. Aktiviert nichts, zaubert nicht und wählt kein Ziel.
#
# Integer: 1 bei gemeldetem aktivem Zustand, sonst 0. Bedingungen dürfen 1/0 oder TRUE/FALSE
# verwenden. Kein Zähler, keine Dauer und kein Ergebnis des letzten Zaubers. Unbekannte Namen,
# IDs außerhalb 165535 und fehlende Meldungen liefern ebenfalls 0.

SUB Main()
    # Cast("Confidence") nimmt nur den Namen und sendet einmal, wenn der aktive Status fehlt. Erfolg
    # ist nicht garantiert. Keine schnelle Wiederholungsschleife: Antworten können verzögert sein.

    IF UO.IsActiveSpellAbility("Confidence") = 0 THEN
        UO.Cast("Confidence")
    END IF
END SUB

Erläuterung der Parameter und Ausführung:

  • Cast("Confidence") nimmt nur den Namen und sendet einmal, wenn der aktive Status fehlt. Erfolg ist nicht garantiert. Keine schnelle Wiederholungsschleife: Antworten können verzögert sein.

Begrenzt auf Status warten

# Begrenzt auf Status warten
#
# Prüft, ob der Server den gewählten Zauber bzw. die Fähigkeit als aktiv gemeldet hat. Hilft,
# erneutes Aktivieren zu vermeiden. Aktiviert nichts, zaubert nicht und wählt kein Ziel.
#
# Integer: 1 bei gemeldetem aktivem Zustand, sonst 0. Bedingungen dürfen 1/0 oder TRUE/FALSE
# verwenden. Kein Zähler, keine Dauer und kein Ergebnis des letzten Zaubers. Unbekannte Namen,
# IDs außerhalb 165535 und fehlende Meldungen liefern ebenfalls 0.

SUB Main()
    # spell: Name/ID; expected: TRUE aktiv, FALSE inaktiv; timeoutMs: Millisekunden. Main prüft bis
    # 500 ms alle 25 ms und zaubert nicht. TRUE bei Übereinstimmung, sonst FALSE. Pause/Last können
    # die reale Dauer verlängern; die Ursache einer Änderung bleibt unbekannt.

    IF WaitAbilityState("Confidence", TRUE, 500) THEN
        UO.Print("Active state received")
    ELSE
        UO.Print("No active state before timeout")
    END IF
END SUB

FUNCTION WaitAbilityState(spell, expected, timeoutMs)
    VAR elapsed = 0
    WHILE elapsed < timeoutMs
        IF (UO.IsActiveSpellAbility(spell) = 1) = expected THEN
            RETURN TRUE
        END IF
        UO.Wait(25)
        elapsed = elapsed + 25
    WEND
    RETURN (UO.IsActiveSpellAbility(spell) = 1) = expected
END FUNCTION

Erläuterung der Parameter und Ausführung:

  • spell: Name/ID; expected: TRUE aktiv, FALSE inaktiv; timeoutMs: Millisekunden. Main prüft bis 500 ms alle 25 ms und zaubert nicht. TRUE bei Übereinstimmung, sonst FALSE. Pause/Last können die reale Dauer verlängern; die Ursache einer Änderung bleibt unbekannt.

Spells / Заклинания

Spells / Заклинания

Русский · English · Українська · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Clone this wiki locally