Skip to content

API UO IsActiveSpellAbility ja

Codex edited this page Sep 23, 2026 · 1 revision

UO.IsActiveSpellAbility

ClassicUO / Basic IDE

Home · API · Commands

指定した呪文・能力について、サーバーから有効状態が通知されたか確認します。不要な再発動を避けるために使います。発動・詠唱・対象選択は行いません。

正確な構文

UO.IsActiveSpellAbility(SpellName:Any) -> Any

パラメーター

  • SpellName — 必須引数は1つ。カタログの英語名または整数の呪文IDです。"Confidence"と402は同じBushido呪文。大文字小文字は区別せず、下線は空白に変換し、数値文字列も解釈します。キャラクターserial、アイテムgraphic、スキル番号ではありません。

戻り値

Integer:受信した有効IDの集合に含まれると1、含まれないと0。条件では1/0またはTRUE/FALSEと比較できます。個数・持続時間・最後の詠唱結果ではありません。不明な名前、1…65535外のID、未受信状態も0です。

動作

  • サーバーパケット0xBF/0x25でIDを追加・削除します。画面や呪文ボタンがなくても動作し、画面を閉じても保持、切断時に消去します。0は詠唱不能の証明ではありません。シャードが通知する必要があり、全バフ共通の確認ではありません。Heal/Recallの成功判定には使えず、残り時間・マナ・利用可否・成功も判定しません。

内部関数:呼び出しから結果まで

InjectionApiUOがFullカタログで名前を解決するかIDを読み、Bridge.IsActiveSpellがワールドスレッドのActiveSpellIconsManagerから1/0を返します。問い合わせや待機は行いません。

1. IsActiveSpell

指定した呪文・能力について、サーバーから有効状態が通知されたか確認します。不要な再発動を避けるために使います。発動・詠唱・対象選択は行いません。

Integer:受信した有効IDの集合に含まれると1、含まれないと0。条件では1/0またはTRUE/FALSEと比較できます。個数・持続時間・最後の詠唱結果ではありません。不明な名前、1…65535外のID、未受信状態も0です。

プロジェクトのソース: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; 関数 IsActiveSpell.

2. ActiveSpellIconsManager

サーバーパケット0xBF/0x25でIDを追加・削除します。画面や呪文ボタンがなくても動作し、画面を閉じても保持、切断時に消去します。0は詠唱不能の証明ではありません。シャードが通知する必要があり、全バフ共通の確認ではありません。Heal/Recallの成功判定には使えず、残り時間・マナ・利用可否・成功も判定しません。

Integer:受信した有効IDの集合に含まれると1、含まれないと0。条件では1/0またはTRUE/FALSEと比較できます。個数・持続時間・最後の詠唱結果ではありません。不明な名前、1…65535外のID、未受信状態も0です。

プロジェクトのソース: src/ClassicUO.Client/Game/Managers/ActiveIconsManager.cs; 関数 ActiveSpellIconsManager.

Integer:受信した有効IDの集合に含まれると1、含まれないと0。条件では1/0またはTRUE/FALSEと比較できます。個数・持続時間・最後の詠唱結果ではありません。不明な名前、1…65535外のID、未受信状態も0です。

使用例

IDで確認

# IDで確認
#
# 指定した呪文能力についてサーバーから有効状態が通知されたか確認します不要な再発動を避けるために使います発動詠唱対象選択は行いません#
# Integer受信した有効IDの集合に含まれると1含まれないと0条件では1/0またはTRUE/FALSEと比較できます個数持続時間最後の詠唱結果ではありません不明な名前165535外のID未受信状態も0ですSUB Main()
    # 402はConfidenceactiveは1/0この条件のTRUEは1です受信状態であり詠唱の成否ではありません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

パラメーターと実行の説明:

  • 402はConfidence。activeは1/0で、この条件のTRUEは1です。受信状態であり詠唱の成否ではありません。

再発動を避ける

# 再発動を避ける
#
# 指定した呪文能力についてサーバーから有効状態が通知されたか確認します不要な再発動を避けるために使います発動詠唱対象選択は行いません#
# Integer受信した有効IDの集合に含まれると1含まれないと0条件では1/0またはTRUE/FALSEと比較できます個数持続時間最後の詠唱結果ではありません不明な名前165535外のID未受信状態も0ですSUB Main()
    # Cast("Confidence")の引数は名前だけ有効状態がないと1回要求を送り成功は保証しません返答が遅れるので高速ループで繰り返さないでくださいIF UO.IsActiveSpellAbility("Confidence") = 0 THEN
        UO.Cast("Confidence")
    END IF
END SUB

パラメーターと実行の説明:

  • Cast("Confidence")の引数は名前だけ。有効状態がないと1回要求を送り、成功は保証しません。返答が遅れるので高速ループで繰り返さないでください。

制限付きの状態待機

# 制限付きの状態待機
#
# 指定した呪文能力についてサーバーから有効状態が通知されたか確認します不要な再発動を避けるために使います発動詠唱対象選択は行いません#
# Integer受信した有効IDの集合に含まれると1含まれないと0条件では1/0またはTRUE/FALSEと比較できます個数持続時間最後の詠唱結果ではありません不明な名前165535外のID未受信状態も0ですSUB Main()
    # spellは名前/IDexpectedは有効TRUE無効FALSEtimeoutMsはミリ秒Mainは最大500ms25ms間隔で確認し詠唱しません一致でTRUEそうでなければFALSE停止や負荷で実時間は延びることがあり変更原因は分かりません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

パラメーターと実行の説明:

  • spellは名前/ID、expectedは有効TRUE・無効FALSE、timeoutMsはミリ秒。Mainは最大500ms、25ms間隔で確認し、詠唱しません。一致でTRUE、そうでなければFALSE。停止や負荷で実時間は延びることがあり、変更原因は分かりません。

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

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

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

Clone this wiki locally