70 lines
1.9 KiB
Python
70 lines
1.9 KiB
Python
|
|
#!/usr/bin/env python3
|
||
|
|
"""
|
||
|
|
스킬 캔슬 윈도우 추출 스크립트
|
||
|
|
|
||
|
|
AnimMontage.json에서 ANS_SkillCancel_C 노티파이를 가진 몽타주를 찾아
|
||
|
|
캔슬 가능 시간 구간을 추출합니다.
|
||
|
|
|
||
|
|
사용법:
|
||
|
|
python extract_skill_cancel_windows.py <AnimMontage.json 경로>
|
||
|
|
"""
|
||
|
|
|
||
|
|
import json
|
||
|
|
import sys
|
||
|
|
from pathlib import Path
|
||
|
|
|
||
|
|
|
||
|
|
def extract_cancel_windows(json_path):
|
||
|
|
"""AnimMontage.json에서 스킬 캔슬 윈도우 추출"""
|
||
|
|
|
||
|
|
with open(json_path, 'r', encoding='utf-8') as f:
|
||
|
|
montages = json.load(f)
|
||
|
|
|
||
|
|
cancel_montages = []
|
||
|
|
|
||
|
|
for montage in montages:
|
||
|
|
asset_name = montage.get('AssetName', '')
|
||
|
|
|
||
|
|
# ANS_SkillCancel_C 노티파이 찾기
|
||
|
|
for notify in montage.get('AnimNotifies', []):
|
||
|
|
if notify.get('NotifyStateClass') == 'ANS_SkillCancel_C':
|
||
|
|
trigger_time = notify['TriggerTime']
|
||
|
|
duration = notify['Duration']
|
||
|
|
|
||
|
|
cancel_montages.append({
|
||
|
|
'montage': asset_name,
|
||
|
|
'start': trigger_time,
|
||
|
|
'end': trigger_time + duration,
|
||
|
|
'duration': duration
|
||
|
|
})
|
||
|
|
|
||
|
|
return cancel_montages
|
||
|
|
|
||
|
|
|
||
|
|
def main():
|
||
|
|
if len(sys.argv) < 2:
|
||
|
|
print("사용법: python extract_skill_cancel_windows.py <AnimMontage.json 경로>")
|
||
|
|
sys.exit(1)
|
||
|
|
|
||
|
|
json_path = Path(sys.argv[1])
|
||
|
|
|
||
|
|
if not json_path.exists():
|
||
|
|
print(f"오류: 파일을 찾을 수 없습니다: {json_path}")
|
||
|
|
sys.exit(1)
|
||
|
|
|
||
|
|
print(f"분석 중: {json_path}")
|
||
|
|
print("-" * 80)
|
||
|
|
|
||
|
|
cancel_windows = extract_cancel_windows(json_path)
|
||
|
|
|
||
|
|
print(f"\n총 {len(cancel_windows)}개의 스킬 캔슬 윈도우 발견\n")
|
||
|
|
|
||
|
|
for item in cancel_windows:
|
||
|
|
print(f"{item['montage']}")
|
||
|
|
print(f" 캔슬 구간: {item['start']:.3f}s ~ {item['end']:.3f}s (지속: {item['duration']:.3f}s)")
|
||
|
|
print()
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
main()
|