import os, struct, glob

userDataDir = r'C:\JXVCTK\JxVoCongTruyenKy\_AutoVLBS\VLBS19\UserData'
for f in sorted(glob.glob(os.path.join(userDataDir, '*.cfg'))):
    char_name = os.path.splitext(os.path.basename(f))[0]
    with open(f, 'rb') as fp:
        data = fp.read()
    
    skills = []
    start = 0x0fbc
    for i in range(15):
        off = start + i * 52
        if off + 52 <= len(data):
            flag, sid, extra = struct.unpack('<iii', data[off:off+12])
            if sid <= 0: break
            name = data[off+12:off+44].split(b'\x00')[0]
            skills.append((sid, name.decode('latin1', errors='ignore'), extra))
    print(f"Char: {char_name} ({len(skills)} skills): {skills}")
