v2 폐기하고 v3로 새출발
This commit is contained in:
120
legacy/분석도구/v2/archive/check_bp_verification.py
Normal file
120
legacy/분석도구/v2/archive/check_bp_verification.py
Normal file
@ -0,0 +1,120 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Blueprint 변수 검증 조사 스크립트"""
|
||||
import json
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
# Blueprint.json 로드
|
||||
bp_file = Path("D:/Work/WorldStalker/DS-전투분석_저장소/원본데이터/Blueprint.json")
|
||||
with open(bp_file, 'r', encoding='utf-8') as f:
|
||||
bp_data = json.load(f)
|
||||
|
||||
# DataTable.json 로드
|
||||
dt_file = Path("D:/Work/WorldStalker/DS-전투분석_저장소/원본데이터/DataTable.json")
|
||||
with open(dt_file, 'r', encoding='utf-8') as f:
|
||||
dt_data = json.load(f)
|
||||
|
||||
# validated_data.json 로드
|
||||
val_file = Path("D:/Work/WorldStalker/DS-전투분석_저장소/분석결과/20251024_210822_v2/validated_data.json")
|
||||
with open(val_file, 'r', encoding='utf-8') as f:
|
||||
val_data = json.load(f)
|
||||
|
||||
print("=" * 80)
|
||||
print("Blueprint 변수 검증 조사")
|
||||
print("=" * 80)
|
||||
|
||||
# 예시: Hilda의 SK100202 (반격) 스킬 조사
|
||||
print("\n=== 예시: Hilda SK100202 (반격) 스킬 ===")
|
||||
|
||||
# DT_Skill에서 SK100202 정보
|
||||
assets = dt_data.get('Assets', [])
|
||||
dt_skill = [a for a in assets if a.get('AssetName') == 'DT_Skill'][0]
|
||||
rows = dt_skill.get('Rows', [])
|
||||
sk100202_row = [r for r in rows if r.get('RowName') == 'SK100202'][0]
|
||||
sk100202_data = sk100202_row.get('Data', {})
|
||||
|
||||
print(f"스킬 이름: {sk100202_data.get('name')}")
|
||||
print(f"Desc: {sk100202_data.get('desc')}")
|
||||
print(f"DescValues: {sk100202_data.get('descValues')}")
|
||||
print(f"AbilityClass: {sk100202_data.get('abilityClass')}")
|
||||
|
||||
# Blueprint에서 관련 GA_Skill 찾기
|
||||
ability_class = sk100202_data.get('abilityClass', '')
|
||||
if ability_class:
|
||||
bp_name = ability_class.split('/')[-1].split('.')[0] if '/' in ability_class else ability_class
|
||||
print(f"\nBlueprint 이름: {bp_name}")
|
||||
|
||||
# Blueprint.json에서 검색
|
||||
bp_assets = bp_data.get('Assets', [])
|
||||
matching_bp = [a for a in bp_assets if a.get('AssetName') == bp_name]
|
||||
|
||||
if matching_bp:
|
||||
print(f"Blueprint 발견: {matching_bp[0].get('AssetName')}")
|
||||
|
||||
# 변수 확인
|
||||
variables = matching_bp[0].get('BlueprintVariables', [])
|
||||
print(f"\nBlueprint 변수 ({len(variables)}개):")
|
||||
for var in variables[:10]: # 처음 10개만
|
||||
var_name = var.get('VarName', 'N/A')
|
||||
var_type = var.get('VarType', 'N/A')
|
||||
default_value = var.get('DefaultValue', 'N/A')
|
||||
print(f" - {var_name} ({var_type}): {default_value}")
|
||||
else:
|
||||
print(f"Blueprint '{bp_name}' 찾을 수 없음")
|
||||
|
||||
# validated_data에서 확인
|
||||
hilda = val_data['hilda']
|
||||
sk = hilda['skills']['SK100202']
|
||||
print(f"\n=== Validated Data ===")
|
||||
print(f"DescFormatted: {sk.get('descFormatted')}")
|
||||
print(f"Blueprint Variables in extracted data:")
|
||||
bp_vars = sk.get('blueprintVariables', {})
|
||||
if bp_vars:
|
||||
for var_name, var_info in list(bp_vars.items())[:5]:
|
||||
print(f" - {var_name}: {var_info}")
|
||||
else:
|
||||
print(" (Blueprint 변수 없음)")
|
||||
|
||||
# 다른 스킬도 몇 개 조사
|
||||
print("\n" + "=" * 80)
|
||||
print("다른 스킬 샘플 조사")
|
||||
print("=" * 80)
|
||||
|
||||
sample_skills = [
|
||||
('SK100201', 'hilda', '칼날 격돌'),
|
||||
('SK110205', 'urud', '다발 화살'),
|
||||
('SK160202', 'rene', 'Ifrit 소환')
|
||||
]
|
||||
|
||||
for skill_id, stalker, skill_name in sample_skills:
|
||||
print(f"\n=== {skill_id} ({skill_name}) ===")
|
||||
|
||||
# DT_Skill
|
||||
skill_row = [r for r in rows if r.get('RowName') == skill_id]
|
||||
if not skill_row:
|
||||
print(" DT_Skill에 없음")
|
||||
continue
|
||||
|
||||
skill_data = skill_row[0].get('Data', {})
|
||||
desc = skill_data.get('desc', '')
|
||||
desc_values = skill_data.get('descValues', [])
|
||||
ability_class = skill_data.get('abilityClass', '')
|
||||
|
||||
print(f" Desc: {desc[:100]}...")
|
||||
print(f" DescValues: {desc_values}")
|
||||
print(f" AbilityClass: {ability_class}")
|
||||
|
||||
# Blueprint
|
||||
if ability_class:
|
||||
bp_name = ability_class.split('/')[-1].split('.')[0] if '/' in ability_class else ability_class
|
||||
matching_bp = [a for a in bp_assets if a.get('AssetName') == bp_name]
|
||||
if matching_bp:
|
||||
variables = matching_bp[0].get('BlueprintVariables', [])
|
||||
print(f" Blueprint 변수 개수: {len(variables)}")
|
||||
|
||||
# 숫자 타입 변수 찾기
|
||||
numeric_vars = [v for v in variables if any(t in str(v.get('VarType', '')) for t in ['Float', 'Int', 'Byte'])]
|
||||
if numeric_vars:
|
||||
print(f" 숫자 변수 샘플:")
|
||||
for var in numeric_vars[:3]:
|
||||
print(f" - {var.get('VarName')}: {var.get('DefaultValue')}")
|
||||
Reference in New Issue
Block a user