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

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

4.2 KiB
Raw Blame History

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   # 打包产物

五、重新打包

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 已预装);若系统缺失会自动降级为打开浏览器