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 @@
系统奶
组队
+
-
+
+
+
+
+
+