Skip to content

API UO IsActiveSpellAbility ko

Codex edited this page Sep 23, 2026 · 1 revision

UO.IsActiveSpellAbility

ClassicUO / Basic IDE

Home · API · Commands

서버가 해당 주문/능력을 활성 상태로 알렸는지 확인합니다. 불필요한 재활성화를 피할 때 사용하며, 활성화·시전·대상 선택은 하지 않습니다.

정확한 구문

UO.IsActiveSpellAbility(SpellName:Any) -> Any

매개변수

  • SpellName — 필수 인수 하나: 카탈로그의 영어 이름 또는 정수 주문 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 Confidence. active는 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")는 이름만 받고 활성 상태가 없을    요청합니다. 성공은 보장하지 않습니다. 응답이 늦을  있으므로 빠른 루프로 반복하지
    # 마세요.

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

매개변수 및 실행 설명:

  • Cast("Confidence")는 이름만 받고 활성 상태가 없을 때 한 번 요청합니다. 성공은 보장하지 않습니다. 응답이 늦을 수 있으므로 빠른 루프로 반복하지 마세요.

제한 시간 동안 대기

# 제한 시간 동안 대기
#
# 서버가 해당 주문/능력을 활성 상태로 알렸는지 확인합니다. 불필요한 재활성화를 피할  사용하며, 활성화·시전·대상 선택은 하지 않습니다.
#
# Integer: 수신한 활성 ID 집합에 있으면 1, 없으면 0. 조건에서 1/0 또는 TRUE/FALSE 비교할  있습니다. 개수·지속 시간·최근 시전 결과가
# 아닙니다.   없는 이름, 165535 밖의 ID, 미수신 상태도 0입니다.

SUB Main()
    # spell: 이름/ID; expected: 활성 TRUE, 비활성 FALSE; timeoutMs: 밀리초. Main은 최대 500ms 동안 25ms마다 확인하고 시전하지
    # 않습니다. 일치  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