File size: 2,194 Bytes
a67101c
 
1cc60af
a67101c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
dace851
 
a67101c
 
 
 
 
 
 
 
 
 
 
 
 
 
1cc60af
a2a5d31
a67101c
 
 
 
 
 
 
 
a2a5d31
 
a67101c
 
 
 
 
 
 
 
a05a2de
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import json

from utils.lua import parse_player


class Parser:
    @staticmethod
    def parse_talents(detail):
        return [row[1] for row in detail]

    def parse_buff(self, row):
        detail = row.strip("{}").split(",")
        buff_id, buff_stack, buff_level = int(detail[4]), int(detail[5]), int(detail[8])
        if buff_id not in self.buffs:
            self.buffs[buff_id] = {}
        if buff_level not in self.buffs[buff_id]:
            self.buffs[buff_id][buff_level] = []
        if buff_stack not in self.buffs[buff_id][buff_level]:
            self.buffs[buff_id][buff_level].append(buff_stack)
            self.buffs[buff_id][buff_level].sort()

    def parse_skill(self, row):
        detail = row.strip("{}").split(",")

        skill_id, skill_level, critical = int(detail[4]), int(detail[5]), detail[6] == "true"
        # if not sum(parse(row)[-1].values()):
        #     return
        if skill_id not in self.skills:
            self.skills[skill_id] = []
        if skill_level not in self.skills[skill_id]:
            self.skills[skill_id].append(skill_level)
            self.skills[skill_id].sort()

    def __call__(self, file_name):
        self.buffs = {}
        self.skills = {}
        self.talents = []
        lines = open(file_name).readlines()
        for line in lines:
            row = line.split("\t")
            if row[4] == "4":
                detail = parse_player(row[-1])
                self.school_id = int(detail[3])
                if isinstance(detail, list):
                    self.talents = self.parse_talents(detail[6])
        for line in lines:
            row = line.split("\t")
            if row[4] == "13":
                self.parse_buff(row[-1])
            elif row[4] == "21":
                self.parse_skill(row[-1])
        print(self.school_id)
        print(self.talents)
        json.dump(self.skills, open("skills.json", "w", encoding="utf-8"))
        print(len(self.skills))
        json.dump(self.buffs, open("buffs.json", "w", encoding="utf-8"))
        print(len(self.buffs))


if __name__ == '__main__':
    parser = Parser()
    parser(r"2024-05-11-22-42-47-长安(15)-极境试炼木桩(24538).jcl")