dp2.9 是一个以 DP2/DPX 为核心的 DNF 服务端插件底板。
本仓库当前以 df_game_r.lua 作为轻量入口,并通过 DP 的 Frida 加载链路使用 df_game_r.js。仓库目标是保留一个相对干净、可维护、可逐步模块化的 DP 插件底板。
LD_PRELOAD=/dp2/libdp2pre.so
↓
libdp2.xml
↓
/dp2/df_game_r.lua
↓ frida.load(...)
/dp2/df_game_r.js
注意:
frida.js不是 DP 默认加载文件。DP 默认关注的是df_game_r.lua和df_game_r.js。
README 中的 TODO 记录代码与文档重构任务;部署验收进度以 动态路线图 为准。
当前拆分为两个目标:
- 安全可部署版:高风险功能默认关闭,先验证服务器能启动和低/中风险功能可用。
- 完全功能恢复版:按需开启 SQL、删除、shell 类功能,并完成测试服验证。
当前阶段:安全可部署底板收尾阶段。
将整个 dp2 目录放到服务端根目录,例如:
/dp2
libdp2.xml
libdp2pre.so
libdp2.so
df_game_r.lua
df_game_r.js
lib/
lua/
script/
bootstrap.lua
config.lua
utils.lua
handlers/
quest.lua
job.lua
item_cleanup.lua
inherit.lua
pvp.lua
misc.lua
modules/
online.lua
broadcast.lua
gm_permissions.lua
item_query.lua
hot_reload.lua
finish_back_home.lua
在启动 df_game_r 的命令前添加 LD_PRELOAD:
LD_PRELOAD=/dp2/libdp2pre.so ./df_game_r cain01 start &一般只对普通频道加载,PK 频道是否加载按实际需要决定。
部署前请阅读:
DP2 的加载配置,指定:
- 目标进程:
df_game_r - 依赖库:
libuv.so、libffi.so.8、liblua53.so、luv.so - Lua 入口:
/dp2/df_game_r.lua - 插件库:
/dp2/lib/libdp2game.so
轻量主入口,负责:
- 加载
dp、dpx、df.game、df.game.mgr.world、df.logger - 加载
df.frida - 接入
script/bootstrap.lua - 注册
on_frida_call,允许 JS 层回调 DP/Lua 逻辑 - 维护
item_handler道具触发表 - 注册
UseItem1hook,处理普通右键消耗品 - 保留
UseItem2hook,兼容原入口和其他可能走 UseItem2 的道具 - 通过
script/config.lua应用 DPX 启动配置
DP Frida 侧入口,负责:
- 声明/封装原生函数地址
- 实现需要 JS/Frida 层处理的 Hook 或工具函数
- 在需要时通过 DP Frida bridge 调用 Lua/DP 能力
存放配置、工具函数、handler 模块、玩法模块和辅助脚本。
- 以
dp2.9为主底板。 dp2仓库只作为功能素材库,不直接整包覆盖。- 优先保留
item_handler[item_id] = function(...)的主分发写法。 - 新功能优先模块化,避免继续把所有逻辑堆在入口文件里。
- 高风险功能默认关闭,必须通过配置显式开启。
- 安全可部署版优先保证启动链路、默认安全行为和低/中风险功能可用;完全功能恢复版后续逐项验证。
- 新建重构分支
refactor/dp2-9-base - 补充
README.md - 补充
docs/ARCHITECTURE.md - 补充
docs/CODING_STANDARDS.md - 修正 README 中真实加载链路的路径格式
- 明确:DP 默认加载
df_game_r.lua和df_game_r.js,不加载frida.js - 审核编码规范是否需要调整
- 审查
df_game_r.lua中每段代码的位置是否合理 - 审查
df_game_r.js中每段代码的位置是否合理 - 区分入口初始化、配置、工具函数、handler、hook、临时调试代码
- 标记应保留在 Lua 层的逻辑
- 标记应保留在 JS/Frida 层的逻辑
- 标记应迁入配置文件的开关
- 标记应拆成独立模块的业务逻辑
- 新增
script/config.lua配置模板 - 新增
script/utils.lua工具函数模板 - 新增
script/bootstrap.lua装配模板 - 新增
script/handlers/目录结构 - 新增 handler 模块模板
- 定义 handler 注册约定
- 定义 Lua 模块上下文
ctx传参约定 - 定义风险标记注释模板
- 定义日志格式模板
- 梳理
df_game_r.lua当前结构 - 保留
item_handler[item_id] = function(...)的主分发写法 - 在
script/config.lua中增加模块化 handler 总开关和分模块开关 - 在
script/bootstrap.lua中按配置开关控制模块注册 - 在
df_game_r.lua中接入bootstrap.setup(...) - 启用
quest.lua模块,覆盖任务类旧 handler - 启用
job.lua模块,覆盖觉醒/转职类旧 handler;SQL 职业转换默认关闭 - 启用
inherit.lua模块,覆盖装备继承券旧 handler - 启用
misc.lua模块,覆盖跨界/异界重置/SQL misc;SQL misc 默认关闭 - 启用
item_cleanup.lua模块,覆盖宠物/时装/装备清理;删除类操作默认关闭 - 启用
pvp.lua模块,覆盖 PVP 经验书;shell 操作默认关闭 - 将配置开关从入口逻辑中抽离并接入
script/config.lua - 新增
script/utils.lua工具函数模板 - 在
script/utils.lua中提供旧全局工具函数兼容实现 - 在
script/bootstrap.lua中安装 legacy 工具函数兼容层 - 从
df_game_r.lua删除旧工具函数定义 - 将任务相关 handler 迁移草稿写入
script/handlers/quest.lua - 将职业/转职/觉醒逻辑迁移草稿写入
script/handlers/job.lua - 将宠物/时装/装备清理逻辑迁移草稿写入
script/handlers/item_cleanup.lua - 将装备继承逻辑迁移草稿写入
script/handlers/inherit.lua - 将 PVP 经验逻辑迁移草稿写入
script/handlers/pvp.lua - 将低风险/中风险零散道具券迁入
script/handlers/misc.lua - 将 SQL 类零散道具券以默认关闭方式迁入
script/handlers/misc.lua - 在
df_game_r.lua中统一加载全部 handler 模块 - 从
df_game_r.lua移除已迁移的旧 handler 实现
- 建立
df_game_r.js初始审查和分组文档 - 梳理所有 NativeFunction 并生成逐函数索引
- 标记已使用 / 未使用函数
- 标记版本强绑定风险
- 标记高风险 Hook 区域
- 隔离临时调试代码
- 整理 JS -> Lua/DP 回调逻辑
- 判断哪些 JS 功能可以迁回 Lua/DPX 层
- 对比
dp2的 README 部署说明 - 评估
dp2的 Lua 热加载机制是否迁入dp2.9 - 评估
Work_Reload.lua中可复用的 GM/运营功能 - 评估
dp2的df_game_r.js中可复用 Hook/工具函数 - 明确
frida.js仅作为参考,不作为 DP 默认加载文件 - 建立
dp2未迁移功能跟踪清单
- 新增
docs/RISK_GUIDE.md风险治理说明 - 在已迁移的部分 handler 草稿中增加风险注释和开关示例
- 给当前运行中的
df_game_r.lua直接 SQL 操作增加注释和开关 - 给当前运行中的删除类功能增加二次保护或限制条件
- 给发奖/发物品/返还道具功能增加日志
- 给高风险 DPX 开关接入配置并增加代码注释
- 补充常见问题 FAQ
- 补充回滚原则
- 更新 README 的目录结构说明
- 更新
docs/ARCHITECTURE.md - 增加
CHANGELOG.md - 创建 Draft PR
- 合并 PR 回
main
- 普通频道启动验证
- 确认 bootstrap 日志正常
- 确认
frida.load正常 - 确认
Reach_GameWord登录 hook 正常 - 确认
UseItem1是普通右键消耗品入口 - 在
df_game_r.lua中正式接入UseItem1 -> item_handler分发 - 保留
UseItem2hook 作为兼容入口 - 关闭 1034-1037 临时 debug handler
- 高风险 handler 默认拒绝并返还道具:代码级确认完成
- 高风险 handler 默认拒绝并返还道具:测试服验证通过
- 等级上限 85 与拍卖行最低等级 10 已通过测试服烟测
- legacy_patches 默认关闭与子功能开启路径已通过测试服验证
- hot_reload config-only 主路径已通过测试服验证
- finish_back_home 主要模式与装备品质过滤已通过测试服验证
- 根据后续服务器日志修正 require 路径或 API 差异
当前 PVF 暂不添加 DP 正式道具,以下功能放到最后阶段验证:
- 添加并验证
2021458802主线任务清理 - 添加并验证
2021458808每日任务清理 - 添加并验证
2021458809成就任务清理 - 添加并验证
2021458804异界 E2 重置 - 添加并验证
2021458805异界 E3 重置 - 添加并验证
2022110505装备继承 - 添加并验证觉醒、转职、跨界、SQL/删除/shell 类正式道具行为
详见 dp2 未迁移功能清单。
当前状态:基础设施与部分玩法模块已经迁移,后续优先验证已迁移待测队列,再决定是否迁高风险 GM/经济类能力。
已迁移,待测试服验证或配置验证:
- [~]
signin.lua:每日签到,默认关闭,需测试服验证。 - [~]
player_info.lua:个人信息查询,默认开启,需测试服验证。 - [~]
command_menu.lua:安全指令菜单,默认开启,需测试服验证。 - [~]
command_help.lua:低风险帮助入口,默认开启,需测试服验证。 - [~]
item_query.lua:物品查询帮助,已迁移,仍需专项命令验证。 - [~]
exp_dungeon.lua:经验副本 / 泡点,需确认副本 5000 是否存在。 - [~]
dungeon_gate.lua:持物进图,需配置规则后验证。 - [~]
drop_rules.lua:等级差限制掉落,需测试服验证。
已迁移并完成主路径验证:
-
online.lua:在线玩家表、上线/下线记录。 -
broadcast.lua:全服消息,带频率限制。 -
gm_permissions.lua:GM 权限判断基础模块。 -
hot_reload.lua:config-only 热加载。 -
finish_back_home.lua:翻牌回城 / 自动处理 / 随机点券,主要模式已验证。 -
legacy_patches.lua:旧入口补丁,默认关闭与子功能开启路径已验证。
暂缓或后置:
- 801xx 运营道具系列。
-
//send发物品,高风险。 -
//cz*充值/点券/代币/SP/TP/QP,高风险。 -
//set*改库,高风险。 -
//clearp*清背包,高风险。 - 强化/增幅保护,涉及装备成长和经济,暂缓。
- 高风险 JS/Frida 功能按专项文档逐项确认。