From 9a0a31ac2f553d6ed322ceca3b6e2323fa7dfb6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A5=BF=E7=93=9C=C2=B0?= Date: Thu, 5 Mar 2026 13:20:35 +0800 Subject: [PATCH] =?UTF-8?q?new:=E6=96=B0=E5=A2=9E=E6=8A=80=E8=83=BD?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/1.py | 3 - backend/api/routes/info.py | 18 ++++- backend/core/open/skillTree.py | 14 +++- frontend/eslint.config.ts | 24 ++++++- frontend/src/api/info/index.ts | 4 ++ .../src/pages/Character/Config/import.vue | 26 +------ .../pages/Character/Config/importSkill.vue | 70 +++++++++++++++++++ frontend/src/pages/Character/Index.vue | 13 +++- 8 files changed, 137 insertions(+), 35 deletions(-) delete mode 100644 backend/1.py create mode 100644 frontend/src/pages/Character/Config/importSkill.vue diff --git a/backend/1.py b/backend/1.py deleted file mode 100644 index 4b89c0ba..00000000 --- a/backend/1.py +++ /dev/null @@ -1,3 +0,0 @@ -from core.open.skillTree import get_skill_info - -print(get_skill_info("eJytxzFOwmAAQOH3oA34U2gXQtDBMGBiSPBfSKBXIB5COjh1MDq4MXuDpju7CTsn8RaMLgbO4De85J2TNOm+87kF6e+/fj6+Ie5nVKbuHPLiDa1jcyf+UtB46ytSMSXzgRWP1ix8RkqWSmBDNBIdIImBNwL3BFJ7rNGCQAedoyP0Ds3QE3KkzxOaoGkjubRaY6bd9voljDaUNOa2HoDIippMqORid+3/O/8Bl00Yew==")) \ No newline at end of file diff --git a/backend/api/routes/info.py b/backend/api/routes/info.py index 931cda87..2a23f3e5 100644 --- a/backend/api/routes/info.py +++ b/backend/api/routes/info.py @@ -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) \ No newline at end of file + 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) \ No newline at end of file diff --git a/backend/core/open/skillTree.py b/backend/core/open/skillTree.py index 8ce4760f..cfe15e26 100644 --- a/backend/core/open/skillTree.py +++ b/backend/core/open/skillTree.py @@ -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'], diff --git a/frontend/eslint.config.ts b/frontend/eslint.config.ts index 0b6f2ee8..1f2772dc 100644 --- a/frontend/eslint.config.ts +++ b/frontend/eslint.config.ts @@ -8,6 +8,10 @@ import skipFormatting from '@vue/eslint-config-prettier/skip-formatting' // configureVueProject({ scriptLangs: ['ts', 'tsx'] }) // More info at https://github.com/vuejs/eslint-config-typescript/#advanced-setup +// To allow more languages other than `ts` in `.vue` files, uncomment the following lines: +import { configureVueProject } from '@vue/eslint-config-typescript' +configureVueProject({ scriptLangs: ['ts', 'tsx'] }) + export default defineConfigWithVueTs( { name: 'app/files-to-lint', @@ -21,5 +25,23 @@ export default defineConfigWithVueTs( pluginVue.configs['flat/essential'], vueTsConfigs.recommended, ...oxlint.configs['flat/recommended'], - skipFormatting, + { + rules: { + 'vue/multi-word-component-names': 'off', + }, + }, + // skipFormatting, + { + files: ['**/*.vue'], + languageOptions: { + parserOptions: { + parser: '@typescript-eslint/parser', // 内部使用 TypeScript 解析器 + ecmaVersion: 'latest', + sourceType: 'module', + ecmaFeatures: { + jsx: true, + }, + }, + }, + }, ) diff --git a/frontend/src/api/info/index.ts b/frontend/src/api/info/index.ts index 2e527d74..88b3717c 100644 --- a/frontend/src/api/info/index.ts +++ b/frontend/src/api/info/index.ts @@ -22,6 +22,10 @@ export default defineRequest((request) => { async getConfigFromHelper(uid: string) { const res = await request.get(`/dnfhelper/${uid}/`) return res.data + }, + async getSkillFromCode(code: string) { + const res = await request.post(`/skillTree/`, { code }) + return res.data } } }) diff --git a/frontend/src/pages/Character/Config/import.vue b/frontend/src/pages/Character/Config/import.vue index ba7166e4..aed47ee8 100644 --- a/frontend/src/pages/Character/Config/import.vue +++ b/frontend/src/pages/Character/Config/import.vue @@ -1,6 +1,6 @@ diff --git a/frontend/src/pages/Character/Index.vue b/frontend/src/pages/Character/Index.vue index e2eb106b..ee521d85 100644 --- a/frontend/src/pages/Character/Index.vue +++ b/frontend/src/pages/Character/Index.vue @@ -22,18 +22,25 @@ 系统奶 组队 + - + + + + + +