Formulator / parse_new_school.py
ango
5.16 commit
1cc60af
raw
history blame
2.19 kB
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")