hanfuit c58168406b 启动器:游戏更新入口移到开始旁,移除设置页面
- 侧边栏顺序调整为 开始 → 游戏更新 → GM工具 → 一键换装 → 游戏设置
- 删除「设置」页面(侧边栏入口 + page-settings section)
- shell.js 移除 loadSettings 函数及 setRefresh 事件监听
- shell.css 清理 .settings-* 相关样式(明暗主题两套)
2026-11-04 20:38:22 +08:00

DNF90 单机模拟器 · 源码仓库

一个 DNF90 单机模拟器(非私服)的完整源码 monorepo,包含服务端(Go)、客户端补丁(C++)、GM 管理工具 / 启动器(Python)、一键换装工具(C#),以及本地 PVF 解析套件(Go)。

本仓库只含源码,不含编译产物(exe/dll)与美术/PVF 资源。clone 后需按各自子目录的说明编译。


目录结构

DNF90-Source/
├── server/           DNF90 服务端(Go,模块 longheng.io/server)
├── client-patch/     客户端补丁(C++,90CN.dll 源码)
├── loadout-tool/     一键换装工具(C# / .NET)
├── launcher/         整合启动器 + GM 管理工具(Python + pywebview)
├── gmtool/           GM 工具旧版(Python + FastAPI,已被 launcher 取代,保留参考)
├── pvf/              PVF 解析套件(Go,模块 pvfine,GPL-3.0)
│   └── cmd/pvfexport/  物品名称表导出工具
└── docs/             开发文档

子项目速览

目录 语言 模块/技术栈 说明
server/ Go 1.26 longheng.io/server DNF90 服务端,含 GM 拍卖行接口、自动补足上架、背包管理
client-patch/ C++ MSVC / vcxproj 90CN 客户端补丁,含安图恩兼容、蛇腹剑修复等
loadout-tool/ C# .NET 一键换装工具,通过 Admin API 操作
launcher/ Python 3.15 pywebview + PyInstaller 单 EXE 启动器 + 内置 GM 工具(双数据源)
gmtool/ Python FastAPI GM 工具旧版(独立服务 + 网页)
pvf/ Go 1.26 pvfine(GPL-3.0) PVF 解析库 + pvfexport 物品名导出工具

快速开始

1. 服务端(server/)

要求 Go ≥ 1.26(go.mod 声明 1.26.5)。建议配置国内镜像:

go env -w GOPROXY=https://goproxy.cn,direct
go env -w GOSUMDB=sum.golang.google.cn

cd server
go build -buildvcs=false -trimpath -o DNF90Server.exe ./cmd/server/dnf90
go build -buildvcs=false -trimpath -o DNF90Control.exe ./cmd/server/control
go build -buildvcs=false -trimpath -o DNF90Doctor.exe ./cmd/server/doctor

详见 server/README.md。

2. GM 启动器(launcher/)

要求 Python 3.15(32 位)+ Windows。打包:

cd launcher
python -m pip install pywebview pythonnet clr-loader pyinstaller
python -m PyInstaller --clean --noconfirm "DNF90启动器.spec"

产物在 launcher/dist/DNF90启动器.exe。详见 docs/开发文档.md。

3. PVF 解析(pvf/)

cd pvf
go build ./cmd/pvfexport/       # 物品名称表导出工具
pvfexport -pvf Script.pvf -out dnf_items.json -compact

详见 pvf/README.md。

4. 客户端补丁(client-patch/)与换装工具(loadout-tool/)

详见各自说明,编译命令在 docs/开发文档.md 和原 README 中。


关键设计说明

GM 工具双数据源

GM 工具(launcher)支持两种数据访问方式,服务端在线时走 Native API(事务一致),离线时走 SQLite 直读:

  • Native API:127.0.0.1:18111 + X-Admin-Token,实时操作
  • SQLite 直读:直接读写 Server/runtime/data/dnf90.db

物品名称离线显示

pvf/cmd/pvfexport 从 Script.pvf 提取 item_id → 名称 全量映射,导出 dnf_items.json。GM 工具放在 GM配置/ 目录,启动时对比 PVF 与名称表的修改时间,PVF 更新则自动重新导出,实现离线也能显示物品中文名。

GM 拍卖行

服务端已实现 GM 拍卖行接口(/local/dnf-gm/auction/*),支持:

  • 免押金上架(Deposit=0)
  • 自动补足上架(背包不足时凭空发放差额再上架)
  • 列背包 / 删除背包行(含穿戴装备)

许可证

  • server/、client-patch/、loadout-tool/、launcher/、gmtool/:私有/闭源,请勿对外公开。
  • pvf/:来自开源项目 pvfine ,遵循 GPL-3.0(见 pvf/LICENSE)。若需合并/分发,注意 GPL 传染性。

⚠️ 对外发布服务端时,不要附带本机测试用的深渊掉落修改;远程换装工具不要直接公开 Admin 端口。


贡献与开发

  1. 各子项目独立编译,无跨项目构建依赖。
  2. 提交时请遵守各自目录的 .gitignore,勿提交编译产物与 dnf_items.json。
  3. 服务端改动涉及 GM 接口时,同步更新 docs/开发文档.md 的 API 契约章节。
S
Description
No description provided
Readme
21 MiB
0 Stars 2 Watchers 0 Forks
2026-11-04 19:17:54 +08:00
Languages
Go 89.7%
C++ 3.5%
Vue 3%
TypeScript 2.4%
Python 0.5%
Other 0.8%