暗黑破坏神2角色存档编辑器 Diablo Edit2:免费保姆级教程,从编译到改档全流程
【免费下载链接】diablo_editDiablo II Character editor.项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit
Diablo Edit2 是一款免费的暗黑破坏神2角色存档编辑器,基于 MFC 开发,直接读写.d2s存档文件,覆盖等级、属性点、技能、装备词条、任务进度和小站,官方测试过 1.09、1.10、1.13 以及重制版 D2R(PTR 2.4/2.5/2.6)的存档格式。想跳过练级和刷装、快速验证一套 build 思路的话,读这篇就够了:先讲清楚它为什么敢直接改二进制,再走一遍编译流程,最后是三个典型场景的实操步骤。
先看懂:它凭什么敢直接改 .d2s 存档
.d2s不是普通文本,而是一条紧凑的位流:属性、装备、技能一块块按位域塞在一起,末尾还有 CRC 校验。直接手改二进制就像拿铅笔在病历本上涂改,一个字节错位整页都作废——这也是存档编辑工具难做的地方。
Diablo Edit2 的做法是在源码里把每一块结构完整还原:CPlayerStats(力量、体力、等级、经验等基础数值)、CCharSkills(30 项技能等级)、CQuestInfo(五幕任务标志位)、CWaypoints(各幕小站),以及从普通、魔法、稀有到暗金、套装、合成的整套物品品质体系。你界面上看到的每个输入框,背后都有对应的读写函数和版本号判断,保存时重新计算校验,所以大部分操作对游戏来说是"合法"的。
需要心里有数的一点:编辑器自动识别的版本是 1.09、1.10、1.13、D2R 及 PTR 2.4/2.5/2.6 这几档,D2Version.h里逐个适配,其他版本没有保证。
如何用 Visual Studio 编译并运行 Diablo Edit2
- 克隆仓库到本地:
git clone https://gitcode.com/gh_mirrors/di/diablo_edit - 用 Visual Studio 2017 或更高版本打开根目录下的
暗黑II.sln。 - 配置选Release | x86再编译。MFC 项目要走 32 位,选成 x64 会在链接阶段直接报错。
- 解决方案里有两个项目:主项目Diablo Edit2(编辑器本体)和Generate Data(数据生成器,后面场景 3 会用到)。
- 编译完运行主项目,菜单"文件→打开"选一个
.d2s,角色数据就全部铺开在眼前了。
这一步卡住的话,九成是平台选了 x64,或者 VS 没装"使用 C++ 的桌面开发"工作负载——MFC 组件需要它在安装器里勾上。
打开存档后能改哪些地方
界面按功能分成了若干页:基础信息(DlgCharBasicInfo)、背包与装备(DlgCharItems)、技能(DlgSkills)、铸造台(DlgFoundry,可编辑等级、防御等数值)、任务信息(DlgQuestInfo)、小站(DlgWayPoints),新建物品走 DlgNewItem。下面这张表按"你想改什么"来对照:
| 想改什么 | 在哪改 | 能改到什么程度 |
|---|---|---|
| 等级、经验、生命、法力、体力、金币 | 基础信息页 | 逐字段直接填,等级上限 255(7 位) |
| 力量、敏捷、体力、精力、剩余点数 | 属性页 | 含剩余点数,可把点一次分完 |
| 技能等级 | 技能页 | 30 项技能任意调级,不必走升序 |
| 装备品质、孔数、镶嵌、属性词条 | 物品页 / 新建物品 | 普通→魔法→稀有→暗金→套装→合成全品质体系 |
| 五幕任务完成标志 | 任务信息页 | 逐位勾选,附 1.13+ 的洗点标志 |
| 各幕小站 | 小站页 | 传送点直接点亮 |
| 界面语言 | View → Language | 英文 / 简中 / 繁中,数据源可自行补译 |
场景 1:把死灵法师改造成召唤流
动机:手上有个练歪的死灵,想改成纯召唤,但不想重新练级。
- 打开存档,在属性页把剩余点数全部分给体力和精力。
- 进技能页,把召唤骷髅、召唤骸骨、掌握骨骼、尸爆、复活这类核心技能直接拉到想要的等级——注意技能等级一次写死,不用按升序解锁。
- 保存,进游戏看一眼技能面板是否生效。
结果:几分钟内完成一次"转职",练级时间直接省掉。
场景 2:给装备塞词条和符文
动机:想测试"无限"符文之语或者给防具补一条防御属性。
- 在物品页选目标装备,把孔数加到需要的位置(比如长剑开到 3 孔)。
- 给孔位镶上符文,或者新建一件带孔武器再镶。
- 属性列表里增删词条,铸造台页面还能顺手调等级和防御值。
- 保存后回游戏验证。
结果:不用刷几十遍秘境,符文之语和定制词条随造随测。
场景 3:补翻译、扩展物品数据
动机:简繁中文明显没翻全,或者想让自己自定义的物品表生效。
- 用 Excel 打开
Generate Data/language.txt:第一列是字符串索引,后面几列是各语言译文,*开头的行是分组标题(比如一整组技能名)。 - 填上缺失的译文,务必保存成原格式(Tab 分隔),别动
*LANG文件头。 - 编译并运行Generate Data项目:它会读取
itemdata.txt、property.txt、language.txt,压缩后刷新出itemdata.dat、property.dat、language.dat。 - 重新运行编辑器,在 View → Language 里切到你的语言核对效果。
这套流程同样适用于调整物品模板:改itemdata.txt再跑一遍 Generate Data,编辑器读到的物品表就是新的了。
改档前必须记住的边界
- 危险:装备孔数别超过 6。源码里写得很明白:多于 6 个孔可能导致游戏崩溃。
- 危险:改过的存档别拿去战网。修改存档属于违反服务条款的行为,后果是封号,还可能连累同账号的其他角色。
- 注意:每个字段都有位宽上限,等级最多 255,经验是 32 位——填进超上限的数值会破坏存档结构,游戏读档时直接闪退。
- 注意:动手前先复制一份原始存档到别处。这是存档修改的铁律,出任何状况都有退路。
- 提醒:不同版本格式不同,编辑器会按存档里的版本号自动识别,但别指望跨版本混存。另有一个小福利:1.13 及以上存档里有洗点标志位,按源码注释设为
0x2就可以找阿卡拉重置属性和技能点,省一次洗点机会。
新手常见问题 FAQ
Q:重制版 D2R 的存档能打开吗?A:可以。官方测试范围包含 D2R 及 PTR 2.4/2.5/2.6,D2Version.h里对这些版本逐一做了适配,老版本 1.09、1.10、1.13 也都能读。
Q:编译报错怎么排查?A:先确认平台是 x86 而不是 x64;还报错就在 VS 安装器里补上"使用 C++ 的桌面开发"工作负载,MFC 依赖它。
Q:中文界面在哪切?A:菜单 View → Language,支持英文、简中、繁中。翻译有缺漏的话,按场景 3 的流程在language.txt里补上重新生成即可。
Q:改完存档游戏闪退了怎么办?A:先恢复备份,再检查两个高频原因:数值超上限、孔数超 6。改回合理范围重新存一次。
Q:它具体能编辑哪些内容?A:人物属性与剩余点数、技能等级、各幕任务标志、小站、装备的品质/孔数/镶嵌/词条、耳朵(PTR 2.4 起支持 UTF8 命名)、雇佣兵装备、铸造台数值,以及新建物品。
Q:有没有还没做完的功能?A:作者自己的 TODO 里写着:任务奖励的"未完成 / 已完成 / 待领取"细分状态尚未实现,目前任务进度是按各幕标志位展示的,别对未实现的功能抱预期。
下一步:打开你的第一份存档
工具跑起来之后,挑一个平时舍不得动的主力角色练手:先备份,再只改一个小字段(比如剩余点数)保存进游戏验证,流程走通了再碰装备和任务。Diablo Edit2 是开源的,代码就摆在仓库里,哪块结构看不懂直接翻对应头文件——你的存档数据,从这以后完全在你自己手里。
【免费下载链接】diablo_editDiablo II Character editor.项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考