0ced46416878abebf6231267c48588954a28dc31
- 服务端新增活动开关运行时配置与 GM 接口(GET/POST /dnf/gm/activity-switches), 持久化到 Settings,接入月签到/周签到/PC房↔累计在线的实时下发 - 服务端新增频道开关 GM 接口(channel-switches),目录生成时过滤禁用频道 - channelcatalog/channelinfo 支持按禁用频道 ID 过滤目录与客户端脚本 - 启动器新增「游戏设置」页面:频道开关 Tab + 活动开关 Tab - native.py/server.py 新增对应转发 API - 窗口标题/页面 title/侧边栏「90轮回」统一改为「DNF90 灵狐小竹整合单机版」
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 端口。
贡献与开发
- 各子项目独立编译,无跨项目构建依赖。
- 提交时请遵守各自目录的
.gitignore,勿提交编译产物与dnf_items.json。 - 服务端改动涉及 GM 接口时,同步更新
docs/开发文档.md的 API 契约章节。
Releases
1
90CN灵宝小竹20261104更新补丁
Latest
Languages
Go
89.7%
C++
3.5%
Vue
3%
TypeScript
2.4%
Python
0.5%
Other
0.8%