new:新增技能代码导入

This commit is contained in:
2026-03-05 13:20:35 +08:00
parent f488b30577
commit 9a0a31ac2f
8 changed files with 137 additions and 35 deletions
-3
View File
@@ -1,3 +0,0 @@
from core.open.skillTree import get_skill_info
print(get_skill_info("eJytxzFOwmAAQOH3oA34U2gXQtDBMGBiSPBfSKBXIB5COjh1MDq4MXuDpju7CTsn8RaMLgbO4De85J2TNOm+87kF6e+/fj6+Ie5nVKbuHPLiDa1jcyf+UtB46ytSMSXzgRWP1ix8RkqWSmBDNBIdIImBNwL3BFJ7rNGCQAedoyP0Ds3QE3KkzxOaoGkjubRaY6bd9voljDaUNOa2HoDIippMqORid+3/O/8Bl00Yew=="))
+16 -2
View File
@@ -2,7 +2,7 @@ import re
from api.core.Auth import createToken
from api.core.Gzip import register_gzip_request
import json
from fastapi import APIRouter,Request, Depends
from fastapi import APIRouter,Request, Depends, Body
from typing import Annotated
from api.core.Response import Return, response
from api.core.Redis import get_redis_info
@@ -10,6 +10,7 @@ from api.dp import RedisDep,AltersDep
from core.character.adventure import get_adv_list
from core.basic.character import createCharacter
from core.open.helper import get_user_info_by_id
from core.open.skillTree import get_skill_tree_info
from api.core.exception import ResponseException
router = APIRouter()
@@ -104,4 +105,17 @@ async def get_info_by_dnfhelper(uid: str, state: AltersDep, redis: RedisDep):
except Exception as e:
if isinstance(e, ResponseException):
return response(code=500, message=str(e), data=None)
return response(code=500, message="Failed to fetch DNFHelper info", data=None)
return response(code=500, message="Failed to fetch DNFHelper info", data=None)
@router.post("/skillTree/")
async def get_skill_by_code(state: AltersDep, code = Body(None)):
try:
skills = get_skill_tree_info(code.get("code", ""))
if skills.get("job",{}).get("class","") != state.alter:
return response(code=500, message="技能加点代码职业与登录职业不匹配", data=None)
return response(data=skills)
except Exception as e:
print(f"Error fetching skill tree info: {e}")
if isinstance(e, ResponseException):
return response(code=500, message=str(e), data=None)
return response(code=500, message="解析技能加点失败", data=None)
+11 -3
View File
@@ -403,7 +403,7 @@ def _parse_section2(sec2: bytes):
return evolutions, enhancements, keybinds, remaining
def get_skill_info(encoded: str) -> dict:
def get_skill_tree_info(encoded: str) -> dict:
r = decode_skill_hash(encoded)
header = r['header']
role = role_map.get(str(header['job_bytes'][0]), None)
@@ -443,10 +443,10 @@ def get_skill_info(encoded: str) -> dict:
chosen = next((x for x in candidates if x.type == ('active' if skill['skill_type'] == 1 else 'passive')), None)
if chosen:
skillLearn[str(chosen.id)] = {
'level': skill['level'],
'lv': skill['level'],
'up': 0,
'vp': 0,
'name': chosen.name,
# 'name': chosen.name,
}
# 处理进化
@@ -460,6 +460,14 @@ def get_skill_info(encoded: str) -> dict:
for s in skillMap.get(enh['skill_index'], []):
if getattr(s, 'hasUP', False) and str(s.id) in skillLearn:
skillLearn[str(s.id)]['up'] = enh['type']
for i in character.skills:
if (i.learnLv in [50,85] or i.name == '基础精通') and str(i.id) not in skillLearn:
skillLearn[str(i.id)] = {
'lv': i.calculate_lv(),
'up': 0,
'vp': 0,
# 'name': i.name,
}
return {
"name": header['name'],
"level": header['level'],