Diablo Edit2:暗黑2存档修改器完整教程

📅 2026/8/27 2:56:01
Diablo Edit2:暗黑2存档修改器完整教程
Diablo Edit2暗黑2存档修改器完整教程【免费下载链接】diablo_editDiablo II Character editor.项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit玩了八十级的角色想换个 Build却舍不得推倒重来技能点早就加错了又不想重练。Diablo Edit2 就是为这种情况准备的一个直接读写 .d2s 存档文件的暗黑破坏神2存档修改器属性、技能点、装备、任务进度都可以离线改掉再存回文件即可生效。下文按“先编译、再改档、最后看原理”的顺序讲每一步都对应到具体文件和菜单。先跑起来克隆、编译、首次打开存档整个工具是 MFC 工程用 Visual Studio 2017 或更高版本打开即可解决方案里包含两个项目主程序 Diablo Edit2以及负责生成数据文件的辅助工程 Generate Data。克隆仓库到本地git clone https://gitcode.com/gh_mirrors/di/diablo_edit用 Visual Studio 打开根目录的暗黑II.sln平台选x86MFC 工程按 x86 编译先编译并运行Generate Data它会读取 Generate Data 目录下的itemdata.txt、language.txt、property.txt等文本源生成主程序依赖的.dat数据文件再编译Diablo Edit2并运行通过“文件 → 打开”选择一个.d2s文件——每个角色对应一个.d2s存放在游戏存档目录里菜单 View → Language 可以切换界面语言目前支持英文、繁体中文、简体中文后两者翻译尚不完整打开存档成功后你会看到基本信息、技能、物品、任务等面板这就是全部主界面。场景一把角色拉满级快速测试新 Build目标是得到一个等级、属性都符合你测试需求的角色跳过几十小时的练级过程。打开目标.d2s进入基本信息面板把等级改成 90或你需要的值在同一面板设置力量、敏捷、体力、精力四项属性及剩余属性点切到技能面板按目标 Build 分配三条技能树的点数另存为一个新文件再用新存档进入游戏验证⚠️ 永远先“另存为”而不是直接覆盖原档。属性在文件里是按位压缩存储的见后文原理一节超出可表示范围的值会直接写坏存档建议小步调整、进游戏验证一次再改下一处。场景二让阿卡拉帮你重置技能和属性点加错了技能点1.13 及以上版本有一个官方机制可用存档的任务信息结构里有个重置标志位置位后游戏里找阿卡拉付费即可重置属性与技能。打开存档进入任务信息Quest Info面板勾选/设置属性与技能重置对应的选项——源码里对应D2S_Struct.h中CQuestInfoData的bResetStats字段保存存档登录游戏与阿卡拉对话按提示付费重置⚠️ 该机制仅对 1.13 及以上版本的存档有效更老的版本没有这个字段改了也不会触发重置。场景三补装备、改任务进度想给测试角色塞几件指定装备或者把章节任务标记为已完成以推进后续流程在物品面板选中角色当前装备或背包位置打开新建物品对话框从物品树里选择武器、护甲或杂项界面里每类物品都带图标任务面板中逐条设置各章节任务的完成状态需要的话在小站面板调整各幕小站的解锁情况另存为后进入游戏检查 物品能否正确显示取决于数据文件itemdata.dat与存档版本是否匹配。如果你看到的物品缺失或图标错乱先回到“先跑起来”第 3 步重新编译运行一次 Generate Data 再生成。它是怎么工作的.d2s 文件格式速览.d2s不是通用格式而是暗黑2自定义的二进制结构。D2S_Struct.h里的CD2S_Struct就是整个存档文件的逐字段映射开头是魔数0xAA55AA55、版本号、文件大小和校验和随后依次是任务信息、小站、NPC 对话、人物状态、技能、物品列表、尸体、雇佣兵和石魔数据。读档时BinDataStream按位流把这些数据依次拆出来改完再按同样顺序写回。以人物属性为例四项基础属性并不是四个独立的整数而是被压进一个 16 项的 DWORD 数组里每个 DWORD 内部再按位切分// Diablo Edit2/D2S_Struct.h 中 CPlayerStats 的存储方式 DWORD m_adwValue[ARRAY_SIZE]; // ARRAY_SIZE 0x10 // 0: 9 bits 10 bits Strength 力量 // 1: 9 bits 10 bits Energy 精力 // 2: 9 bits 10 bits Dexterity 敏捷 // 3: 9 bits 10 bits Vitality 体力 // 4: 9 bits 10 bits 剩余属性点 // C: 9 bits 7 bits 等级这段注释解释了为什么编辑器不能“直接改数”界面看到的每个属性值保存时都要重新打包回这些位域这也解释了场景一里“超范围会写坏存档”的原因。版本差异则由D2Version.h处理文件头里的版本号决定走哪套读写逻辑1.09 对应0x5C1.10~1.13 对应0x60重制版 D2R 是0x61PTR 2.4/2.5 分别是0x62、0x63。README 中标注的已测试范围是 1.09、1.10、1.13 以及 D2RPTR 2.4/2.5/2.6不在这个列表里的版本打开时会被直接拒绝。常见问题速查现象可能原因处理建议打开存档被拒绝或提示版本不支持文件头版本号不在D2Version.h的合法列表内确认你的游戏版本在 1.09~1.13 / D2R 测试范围内过新版本的存档需等适配改完存档游戏进不去或闪退属性、等级等值超出了位域可表示范围恢复修改前的备份小步调整并逐次进游戏验证游戏里阿卡拉不提供重置存档版本低于 1.13重置机制仅 1.13 及以上可用老版本存档请走场景一手动改点物品缺失或图标对不上itemdata.dat未生成或与存档版本不匹配重新编译并运行 Generate Data 工程后再用主程序中文界面有缺漏或乱码翻译数据尚未补全先用 View → Language 切到英文也可以顺手补翻译见下节想参与开发先从补翻译开始贡献说明在CONTRIBUTING.md里门槛最低的一条是给界面补翻译用 Excel 打开Generate Data/language.txt第一列是字符串索引其余列是各语言译文以*开头的行是分组标题填上缺失的译文保存时保持原格式编译运行 Generate Data 重新生成language.dat再运行主程序通过 View → Language 确认效果如果你要动版本支持或物品结构重点看三个文件D2S_Struct.h存档字段映射、D2Version.h版本分支、MetaData.h物品与属性的元数据定义。总的来说当你只想在自己的存档上测试 Build、补装备或重置技能点时Diablo Edit2 能省下几十小时的重复劳动但请坚持两条底线每次修改前先备份原.d2s以及不要用它处理 hardcore 或天梯存档——校验不符或数值越界造成的损失无法挽回。遇到版本打不开、字段读不对的情况带着你的游戏版本号去提 issue想上手贡献从补翻译开始是最稳妥的路。【免费下载链接】diablo_editDiablo II Character editor.项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考