# DNF90 单机模拟器 · 整合启动器 + GM 管理工具 一个**单 EXE** 的精美启动器,内置完整的 GM 管理工具(角色管理、删角色、删档、无限疲劳、道具发放等)。 ## 一、交付成果 ### 1. 单 EXE 整合启动器(`launcher/dist/DNF90启动器.exe`) 纯 Python + pywebview 内嵌窗口,PyInstaller 打包成单文件 EXE(14MB),双击即用。 **窗口化界面**:不再打开浏览器,而是直接弹出一个独立的桌面窗口(基于 Edge WebView2 渲染), 界面就是截图里的那个登录器样式。 **启动器主界面(4 个按钮)**: - ▶ **开始游戏**:configure-client → 启动服务端 → 注册账号 → 自动登录进游戏 - ⚙ **打开 GM**:切换到内置 GM 管理工具界面(不再打开独立 exe) - ■ **关闭服务**:安全停止服务端 - ♥ **赞助我们**:弹出赞助二维码 **内置 GM 工具(点击「打开 GM」进入)**,包含 10 个功能页: - 📊 控制台(服务端/数据库/Native API 状态总览) - 👥 角色管理(查看/编辑等级、金币、职业,含**无限疲劳**、**删除角色**) - 🎁 道具发放(发放道具到背包) - ✉️ 邮件系统 · 🎒 背包装备 - 📜 任务管理 · ⚔️ 副本控制 · 💰 钱包点券 - 🗑️ 删档管理(删除角色/删除账号) - ⚙️ 连接设置(SQLite / Native 数据源切换) ### 2. 界面特色 深色 DNF 风格 + 紫青渐变 + 毛玻璃质感 + 动画光斑 + 危险操作二次确认(输入 DELETE)。 ## 二、技术原理 ### 服务端架构 - **DNF90 单机模拟器**(非私服),单账号本地模式 - 核心控制:`Server/runtime/bin/DNF90Control.exe`(start/stop/configure-client/launch-client/account) - 数据库:**SQLite**,位于 `Server/runtime/data/dnf90.db`(首次启动服务端时创建) ### GM 工具双数据源 - **Native API**:服务端运行时(`127.0.0.1:18111` + `X-Admin-Token`),实时操作 - **SQLite 直读**:服务端停止时直接读写数据库,可删角色/删档/改疲劳 ### 关键功能实现 - **无限疲劳**:把 `stats` 里的 `fatigue` 和 `fatigue_limit` 都设为超大值(999999) - **删除角色**:直接删除 SQLite 中 `character`/`equipment`/`inventory`/`mailbox`/`quest`/`skill` 等记录,**需先停止服务端** ## 三、使用方法 ### 直接运行 ``` 双击 DNF90启动器.exe ``` > 首次运行会请求管理员权限(UAC),因为启动服务端需要管理员权限。 ### 部署位置 EXE 需放在 `Z:\90server` 目录下(或旁边),会自动向上查找 `Server/` 和 `Client/` 目录。若找不到会 fallback 到 `Z:\90server`。 ### 赞助二维码 `sponsor.png` 已打包进 EXE。如需更换,替换源码目录的 `sponsor.png` 后重新打包即可。 ## 四、源码结构 ``` launcher/ ├── server.py # 整合后端(启动器 + GM 工具,纯标准库) ├── db.py # SQLite 数据访问层(删角色/删档/疲劳) ├── native.py # Native API 客户端(完整 GM 端点) ├── index.html # 双视图界面(启动器 + GM 工具) ├── style.css # 统一精美深色主题 ├── app.js # 前端逻辑(启动器 + GM 路由) ├── sponsor.png # 赞助二维码 └── dist/ └── DNF90启动器.exe # 打包产物 ``` ## 五、重新打包 ```bash cd launcher python -m PyInstaller --onefile --noconsole --name "DNF90启动器" \ --add-data "index.html;." --add-data "style.css;." \ --add-data "app.js;." --add-data "sponsor.png;." \ --add-data "db.py;." --add-data "native.py;." \ --collect-all webview --hidden-import clr_loader --hidden-import pythonnet \ server.py ``` ## 六、重要提示 1. **删除角色/删档需停服**:先点「关闭服务」再操作,否则数据库被锁定 2. **改疲劳需停服**:疲劳值只能 SQLite 离线直改 3. **管理员权限**:启动服务端需要管理员权限 4. **数据库首次创建**:首次「开始游戏」后,数据库才会在 `Server/runtime/data/dnf90.db` 生成 5. **依赖 WebView2**:内嵌窗口基于 Windows 自带的 Edge WebView2 运行时(Win10/11 已预装);若系统缺失会自动降级为打开浏览器