DNF90 服务端与启动器完整源码(含 GM 工具功能增强)

服务端(Go):
- GM 塞背包/带属性装备发放:在线角色推送 op14 增量物品行,背包实时刷新,无需回角色选择界面
- GM 改金币/改等级:去掉在线拒绝,落库后推送 op14 钱包/op37 等级状态,在线实时刷新
- 等级端点统一切换到新版 GMSetCharacterLevel(自带在线刷新)
- 无限/锁死疲劳模式 + 燃烧疲劳:每房间消耗 2 点、打怪与通关经验双倍
- 燃烧疲劳开关时给所有在线角色推送系统提示(op12 mode 0)
- 深渊史诗掉率:GM 全局倍率 + 城镇增益药剂窗口倍率,真实接入掉落结算

启动器(Python/JS):
- 标题栏自绘、窗口 1204x717、禁止拖拽改大小、仅最小化/关闭
- GM 工具:疲劳与燃烧、深渊史诗掉率、拍卖行上架(单一定价对齐)
- 拍卖行上架前端对齐服务端单一价格语义,修复 400 报错
This commit is contained in:
hanfuit committed 2026-11-04 14:31:55 +08:00
commit 645b64fe21
4388 files changed
+1405457

No files matched your search

+86
View File
@@ -0,0 +1,86 @@
# DNF90 GM 管理工具
一个全新的、页面精美的 DNF90(九零轮回)单机私服 GM 管理工具。
基于对旧源码(`90轮回源码` 与 `DNF90工具与资料备份`)的深入分析,完整还原了服务端 GM API 协议,并重新实现了一套现代化、美观的管理界面。
## 功能特性
- 🎨 **精美深色主题**:DNF 风格渐变 + 毛玻璃质感,响应式布局
- 👥 **角色管理**:按账号/角色名/用户名查询角色,编辑等级、金币、技能点
- 🎁 **道具发放**:搜索道具并发放、查看道具详情
- ✉️ **邮件系统**:系统邮件、角色邮件、附件道具与金币
- 🎒 **背包装备**:查看背包、删除道具、清空背包、装备管理
- 📜 **任务管理**:查询任务、完成/放弃/撤销任务
- ⚔️ **副本控制**:副本状态监控、解锁难度/深渊、安全回城
- 💰 **钱包点券**:钱包查询、黑钻开通
- 🎮 **玩法配置**:深渊掉率、史诗药剂倍率
- 📡 **频道管理**:频道列表、热重载
- 🔍 **自动发现**:自动探测本地服务端地址与 Admin Token
## 技术架构
```
浏览器前端 (HTML/CSS/JS 单页应用)
↓ fetch
FastAPI 后端 (Python) ← 端口 9527,CORS 代理
↓ HTTP + X-Admin-Token
DNF90Server 本地 GM API ← 端口 18111
```
- **后端**:Python 3.15 + FastAPI + requests
- **前端**:纯原生 HTML/CSS/JS,无框架依赖
- **API 协议**:完整对接服务端 `/dnf/gm/*` 与 `/local/dnf-gm/*` 两套路由
## 快速开始
### 1. 安装依赖
```bash
pip install fastapi uvicorn requests
```
### 2. 启动服务
```bash
python gmtool/main.py
```
或双击 `启动GM工具.bat`。
### 3. 访问
浏览器打开 http://127.0.0.1:9527
## 连接服务端
GM 工具需要连接本地运行的 DNF90 服务端(`DNF90Server.exe`):
1. **自动发现**:点击顶栏「🔍 自动发现服务端」,工具会自动探测端口与 Token
2. **手动连接**:在「连接设置」页面填写主机、端口、Admin Token
默认配置:
- 主机:`127.0.0.1`
- 端口:`18111`
- Token:`local-admin-token`(或服务端 `instance.json` 中自动生成的 Token)
## 目录结构
```
gmtool/
├── main.py # FastAPI 后端入口
├── gm_client.py # GM API 客户端封装(含自动发现)
└── static/
├── index.html # 页面骨架
├── css/style.css # 样式
└── js/
├── api.js # API 客户端与工具函数
├── pages.js # 各功能页面
└── app.js # 应用初始化与路由
```
## 注意事项
- 工具通过本地回环地址通信,不暴露到公网
- 危险操作(清空背包、删除道具等)均有二次确认
- 服务端需在 `local` 环境运行,`/local/*` 兼容路由才可用