简介:面向冒险岛 WZ 修改新手的一份入门图文教程,由尐静制作,定位于帮助零基础读者建立 WZ 文件编辑的基本思路并熟悉常用工具操作。内容围绕 deMSwz、HR、Winpatch 等工具展开,依次讲解魔法无敌、闹钟不缩头、蛋蛋无延迟、补丁制作、物品过滤、代码提取以及辅助技能全屏化与无延迟等模块,并贯穿修改前备份、读入模式选择、属性项删除等易错细节,把“改数值、删动作、打包补丁”串成一条可跟随的实践路径。压缩包共 1 个 doc 文件,约 890KB,以图文混排方式记录操作界面与关键参数,便于对照软件逐步复现。目前已有 4369 人浏览学习,适合刚接触 WZ 修改、希望按模块查漏补缺的初级玩家,也可作为日常使用 HR 与 deMSwz 时的速查手册。
1. 先弄明白一件事:WZ 文件到底是什么,改了它又能怎样
刚摸到这块的人,八成都有过同一个困惑:我只是想改一个很小的效果,怎么网上的说法全在讲「打开 mob.wz」「把某一项删掉」?听着就像要去动游戏的核心零件,稍微手抖整个客户端就报废了。其实没这么玄。
WZ 是这类横版像素网游用的一种资源包格式,它把怪物模型、动作帧、技能数值、道具图标、界面贴图全部打成一个个后缀是.wz的文件:mob.wz管怪物,item.wz管道具,skill.wz管技能,ui.wz管界面。所谓 WZ 修改,本质就是拿工具打开这个包,找到某个字段改数值,或者把某个节点删掉,再存回去。它解决的是「我想要的效果官方没提供」这种需求,适合想自己动手调游戏表现的新手;如果你打算写服务端、搞协议,那是另一个方向,这套东西帮不上你。
2. 动手前的三件准备:备份、工具认脸、环境不撞车
在真正点开任何文件之前,有三件事比操作本身更重要。我第一次弄的时候嫌麻烦,备份只做了一半,结果一个mob.wz被我存坏,重装客户端花了小半个晚上,血泪经验就是一句话:这一章看着像废话,跳过的人最后都会回来补。
2.1 为什么第一步永远是复制一份文件
WZ 文件的保存逻辑大多是「整包重写」而不是「打个小补丁」。你打开的是几百兆的包,点保存的时候工具会按当前内存里的结构重新生成一份完整的文件覆盖回去。也就是说,只要中途哪一步删错了、勾错了,覆盖下去就是既成事实,没有后悔药。
所以规矩很简单:改哪个文件,就先复制哪个文件。复制出来的备份不要跟原文件放在同一个目录里凑数,单独建一个backup文件夹,文件名带上日期和用途。
# 在游戏目录的上一级执行(Git Bash / WSL 之类有 bash 的环境都行) cp mob.wz backup/mob.wz.bak-20240305-before-attack # 文件名里写清日期和这次要改什么,隔两周回来你还能认出哪份是哪份如果你习惯用文件管理器手动复制,也完全可以,原则只有两条:一是备份和原文件分开存放,二是同一份文件在动手前至少留两份。原文作者的说法是「最好准备多份」,这不是啰嗦——第一份用来回滚,第二份用来对照,改坏了的时候你能一眼看出差异在哪。
还有一个容易被忽略的点:备份要连同目录下的关联文件一起考虑。很多效果不是只靠一个包生效的,mob.wz改完之后你还要用重打包器再动一次,中间产物最好单独另存成mob_step1.wz这种名字,别在原文件上反复覆盖。养成「每完成一个阶段就另存一份」的习惯,出了问题能精确回到某一步,而不是全部从头再来。
2.2 三个工具各自负责什么活
这套流程里会用到三类工具,功能不重叠,弄混了就白忙。
第一类是WZ 编辑器,图标通常很朴素,打开大文件要等挺久。它的强项是读值、改值、按条件批量处理,适合做「把某个字段统一改成某个数」这种活。原文里改怪物数值那一步用的就是它。
第二类是WZ 重打包器,全称里带 Repacker 的那种。它强项是看树状结构、展开节点、删节点、导出图片。你要做的动画裁剪、道具图标隐藏、界面贴图替换,基本都是它的活。
第三类是补丁生成器,负责把你改前和改后的两个文件夹做差分,生成一个小体积的补丁文件发给别人。
这三者的关系可以类比成:编辑器是螺丝刀,重打包器是手术刀,补丁生成器是打包快递的胶带。螺丝刀能干粗活,但你要精细地切掉一段动画,还是得用手术刀。
| 工具角色 | 主要用途 | 典型操作 | 不擅长 |
|---|---|---|---|
| WZ 编辑器 | 批量改数值、按条件处理 | 自定义值 + 批量处理按钮 | 精细删节点 |
| 重打包器 | 看结构、删节点、导贴图 | 展开树、删属性、导出 PNG | 大批量数值替换 |
| 补丁生成器 | 做差分、发布成品 | 选新旧文件夹、排除文件 | 编辑 WZ 内容 |
重打包器还有一点要提前说:它依赖 .NET Framework 3.5 运行时,机器上没装这个框架,双击就是闪退或者干脆没反应。这不是工具坏了,是缺零件。装之前先看一眼系统里有没有,别一边怀疑下载的文件损坏一边反复重下。
2.3 装不上、打不开时先看这里
新手卡在第一步的比例其实挺高,症状翻来覆去就那么几种。
双击没反应:九成是缺 .NET Framework 3.5。这类老工具都是十几年前写的,不会给你弹一个友好的错误框。
打开后一直转圈、状态栏显示正在读取:正常现象。mob.wz这种包体积大,读进去要几十秒到几分钟,别以为卡死了就去点关闭。判断标准很明确——状态栏那个读取提示消失,并且没有弹出任何错误框,才算真的打开完成。中途强行关掉,工具的内存状态是不完整的,这时候去保存大概率得到一个坏包。
读入时提示格式不对、树是空的:模式选错了。重打包器读包的时候要选对应的区域模式,选错就读不出内容。这一步原文特意强调过「必须用对应的模式读入」,我第一次就是随手选了默认项,对着空树找了半天代码,怀疑文件损坏,其实是自己选错。
工具开着,游戏也开着,然后游戏被强制关闭:这不是 bug,是游戏客户端检测到了外部程序在读写资源包,直接把你踢下线。所以规矩是:改的时候游戏必须完全退出,包括后台进程。反过来也一样,工具没关干净之前别急着进游戏。
3. 第一个能跑通的例子:把一个数值改到上限
准备工作做完,可以动手了。第一个例子选最简单的:只改一个数字,不碰结构。这个例子跑通,你就理解了「自定义值 + 批量处理」这条主线,后面所有改数值的操作都是它的变体。
3.1 打开大文件前先学会看状态栏
用 WZ 编辑器打开游戏目录里的mob.wz。记住两条:游戏要关掉,等待要耐心。
打开之后先别急着操作,看三个地方。第一是主窗口下方那行状态文字,它消失且没有报错,才代表读取完毕。第二是左侧的树,正常情况下你能看到一层层的节点,而不是空白。第三是界面上的各种勾选框,默认状态下往往带了一堆过滤条件。
原文在这里有个很关键的动作:把所有勾全部去掉。为什么?因为这些勾是过滤开关,勾着的时候批量处理只作用于被勾中的那部分节点,你想要的字段可能压根不在范围内。全去掉之后再手动指定条件,范围才是干净的。
提示:全去掉勾之后,界面上会出现一个「自定义值」的输入区域,通常在最下面一排。这是整个工具里最有用的一块地方,后面所有改数值的操作都从这儿进。
3.2 attackAfter 和 2147483647 到底在干什么
在自定义值前面的框里输入字段名,后面的框里填数值,然后把旁边的勾打上,点批量处理按钮。
字段名(前面框):attackAfter 数值(后面框):2147483647 勾选:必须打上,不打勾等于没填字段名一个字都不能错,大小写敏感,attackAfter和attackafter在工具眼里是两个东西。这个字段管的是怪物受击之后的一段延迟状态,把它顶到 32 位有符号整数的上限 2147483647,表现上就是这段状态被拉得极长——原作者把这种效果叫作「魔法无敌」,名字听着夸张,实际就是拿一个数值的极限去换一个视觉上的结果。
关于 2147483647 这个数,多说一句:它是 32 位有符号整数能表示的最大值。选这个数不是玄学,是因为它足够大,大到游戏里任何正常的计时逻辑都不可能跑完。你在别的地方看到这个数字,八成也是同一个思路。
点下批量处理按钮之后会有进度条。这时候千万别手痒去点别的按钮,等它跑完。跑完之后点另存为,注意原文在这里提醒过一个细节:截图里演示的时候有个勾没去掉,导致保存出来的结果不对。所以保存前再扫一眼界面上还有没有残留的勾选,尤其是那种「只处理选中项」的开关。
3.3 保存与覆盖:多一步验证少十次重装
存的时候有两个选择:覆盖原文件,或者另存成一个新名字。
新手的正确做法是先另存,比如mob_test.wz,然后把它改名替换进游戏目录,进游戏验证效果。验证通过了,再决定要不要正式覆盖。这样万一改错了,你手上永远有一份干净的原始备份,把备份改回原名就恢复了。
验证的时候看什么?不是看有没有报错,而是看你预期的效果有没有出现。数值类的改动,如果进游戏完全没变化,常见原因有两个:一是保存的文件没真正替换进去(游戏读的还是旧包),二是这个字段在你改的那类怪物身上不生效,得换个目标对象试。
还有个小技巧:改完之后用重打包器把文件重新打开一次,展开到对应节点,看一眼数值是不是真的变成了 2147483647。这一步花不了两分钟,但能帮你把「工具没保存成功」和「效果不生效」这两种完全不同的故障区分开,省下大量瞎猜的时间。
4. 从「改数值」到「删条目」:动画类修改的通用手法
改数字跑通了,接下来是最有代表性的一类操作:删节点。数值修改是「换一个值」,删节点是「把这段内容整个拿掉」,后者对结构理解的要求更高,但手法一旦掌握,能套用到非常多场景上。
4.1 先学会在树状结构里找东西:8500001 这条路径
打开重打包器,选对区域模式,然后从菜单里加载你要改的包。这里加载的是上一步改过的mob.wz——注意,是改过的那份,不是原始备份,路径别搞错。
加载完成之后,左侧是一棵树。WZ 包的结构大致是这样:最外层是一堆以数字命名的节点,每个数字对应一个对象的编号;展开某个编号,里面是该对象的各个属性和动作组;再展开动作组,才是具体的帧。
原文举的例子是编号8500001的怪物,展开之后能看到一个叫attack1的子节点,再往下就是它放技能时的各段动作。你要做的是在这个动作序列里找到「缩头」相关的几帧,把它们删掉。
查找技巧:不要从上到下一个个翻。树的节点非常多,翻到天亮也翻不完。正确做法是先找到编号,双击展开,然后只关注与你要改的行为同名的那个动作组。名字通常能对应上——攻击叫 attack,死亡叫 die,待机叫 stand,移动叫 move。知道自己在找什么行为,就能直接定位到对应的组。
4.2 删 21 到 24:顺序陷阱比操作本身更坑
进到动作组内部,你会看到一串以数字命名的帧节点,比如 21、22、23、24。原文的方案是从这几个里随便挑一个开始,把它以及它后面的全部删掉,效果就是这段动作被截断,不会完整播完。
删除动作本身很简单:选中节点,打开属性面板,点移除属性,或者用快捷键。但这里有个真正的坑:节点在树里显示的顺序,不等于编号的大小顺序。
也就是说,你可能看到列表里 23 排在 21 前面,24 又夹在中间。这时候如果凭「排在后面就是编号更大」的直觉去删,删掉的根本不是你想要的那一段。原文专门用了一句话警告这件事:「注意动作名称的排列并非后面的就是数字大的,别删错了。」
正确姿势是:先把要保留的边界确认清楚,再逐个核对编号,一个一个删。别用框选,别用「从这一项往下全选」。删的时候顺手数一下删了几项,删完核对一下剩下的编号是不是连续的、是不是你预期的那些。
修改前:21 22 23 24 25 26 目标:只保留到 20 做法:逐个确认编号 → 删除 21 → 删除 22 → 删除 23 → 删除 24 ... 不要:从列表中第 3 项开始往下全选删除删完记得保存。重打包器的保存通常是菜单里的保存项或者快捷键,保存的仍然是整包重写,所以前面那份备份在这个时候就是你的安全绳。
4.3 换个目标套同一手法:die1 与 iconRaw
同样的手法可以套到很多地方,我挑两个最能说明问题的。
第一个是死亡动画。有些召唤类对象死亡之后会有一个「慢慢站起来」的过渡动作,对应的节点名字类似die1。如果你希望它死亡后立刻进入下一形态、跳过这个过渡,做法就是把这个节点整个删掉。逻辑和第 4.2 节完全一致:定位对象编号 → 展开动作组 → 找到目标节点 → 删除 → 保存。区别只是这次不需要处理「删到哪一项为止」的顺序问题,因为目标就是单个节点。
第二个是道具图标隐藏,也就是常说的物品过滤。这个操作换了个包:item.wz。步骤是先在树里找到道具的分类节点(比如0400.img这一层),再展开到具体的道具编号,比如04000000,然后删掉里面的图标节点(名字类似iconRaw)。删掉之后,这个道具在游戏里就没有图标可画了。
但这里有个必须提前知道的副作用:被过滤掉图标的道具,凡是需要「拖拽」的操作都会失效——不能丢地上,不能在背包之间拖来拖去。出售给商店、存进仓库这类不依赖拖拽的操作通常还能用。所以做过滤之前先想清楚,你是想让这个道具彻底看不见、不再误操作,还是只是想让它不出现在某个列表里。前者可以这么干,后者得另想办法。
保存之后进游戏验证,注意观察两个点:图标是不是真的没了,以及原本能做的操作是不是被限制住了。如果图标还在,八成是保存的文件没替换成功;如果整个道具都消失了,说明你删的不止是图标节点,回滚重来。
5. 避坑清单:新手最容易翻车的五个地方
这一章全是别人踩过的坑。每条我都按「看到什么现象 → 为什么会这样 → 怎么解决」写,遇到问题可以直接对号入座。
5.1 文件和进程相关的坑
坑一:工具开着,游戏也开着,游戏突然被踢下线
现象:刚打开编辑器没多久,游戏客户端自己关了,或者弹窗提示检测到异常程序。
原因:游戏客户端会监控资源包是否被外部程序以写方式打开,一旦发现就直接断开。这不是工具的问题,也不是你操作错了。
解决:改之前把游戏完全退出,任务管理器里确认没有残留进程再动手。反过来,工具用完之后也要关干净再进游戏。养成「改的时候不玩、玩的时候不改」的习惯,这条能省掉你一半的困惑。
坑二:备份做了,但做成了「同一个文件夹里改个名」
现象:改坏了想回滚,发现备份文件跟原文件在同一个目录,游戏加载时读到了错误的那个,或者自己手滑把备份也覆盖了。
原因:备份的价值在于「物理隔离」,放在一起等于没隔离。
解决:单独建一个目录放备份,文件名带日期和用途。更稳的做法是改完之后把整个游戏目录复制一份到别处,作为「已知可用状态」的快照。
5.2 结构操作相关的坑
坑三:删节点时按显示顺序删,结果删错了段
现象:本来只想删掉后面几帧,结果改完进游戏,动作变得奇怪,或者干脆整个技能放不出来。
原因:树里节点的显示顺序和编号大小不一致,凭视觉位置判断边界必错。
解决:逐个核对编号再删,删完检查剩下的编号序列是否符合预期。删之前把要删的清单在心里过一遍,别一边删一边想。
坑四:读入时模式选错,树是空的,以为是文件坏了
现象:加载完文件,左侧一片空白,或者提示格式无法识别。
原因:重打包器需要按对应的区域模式读取,模式不对就读不出内容。
解决:重新加载,明确选对模式。选错模式这件事几乎每个新手都会遇到一次,遇到别慌,也别急着重下工具。
5.3 保存和补丁相关的坑
坑五:做补丁时偷懒没排除文件,补丁会删掉别人的东西
现象:别人装了你发的补丁之后,游戏目录里一堆无关文件消失了,客户端直接打不开。
原因:补丁生成器做的是「两个文件夹的差分」。如果你把整个游戏目录都丢进去做对比,那么「新文件夹里没有、旧文件夹里有」的所有文件,都会被判定成「需要删除」。一个步骤懒了一下,补丁就带上了删除全部无关文件的效果。
解决:做补丁之前,把改动过的文件单独挑出来放进两个干净的小文件夹(一个改前、一个改后),只对这两个文件夹做差分。生成之前在预览列表里逐条看一遍,确认每一条都是「替换」而不是「删除」。
6. 把改动做成补丁,以及下一步该练什么
改完自己玩只是第一步,把它变成一个能发给别人的小文件,才算真的走完一轮。这部分操作不难,难的是细心。
6.1 补丁生成的正确姿势:新旧文件夹分开、逐个排除
流程拆开是四步。
第一步,准备两个文件夹:old放改动前的原始文件,new放改动后的文件。两个文件夹的内部结构要完全一致,old里有mob.wz,new里也得有同名的mob.wz。
第二步,打开补丁生成器,切到专家模式。普通模式给的是傻瓜流程,专家模式才让你控制哪些文件参与对比。
第三步,分别指定新旧文件夹,然后开始排除。工具会列出所有差异项,每一项旁边都有排除按钮。这一步的关键判断标准是:只保留你真正改过的文件,其余全部排除。原文特意提醒过,这一步如果偷懒,做出来的补丁会附带「删除除补丁文件以外所有文件」的效果,那不是夸张,是差分逻辑的必然结果。
第四步,填一下补丁运行时显示的说明文字,然后点生成。生成可能要等一会儿,文件越多越慢。
生成完别急着发。自己先在一份干净的客户端副本上装一遍,确认三件事:装完之后目标效果出现了、游戏能正常启动、目录里没少别的文件。三条都过,再考虑分享。
6.2 下一步练什么:从代码索引到贴图替换
跑通上面这些,你已经具备继续往下走的基础了。接下来建议按这个顺序练,每一步都能独立看到结果,不会一上来就卡死。
第一站,建一份自己的代码索引表。有个包专门用来存和版本同步的编号信息,用编辑器打开它,找到你关心的分类,把里面的编号复制出来存到一个文本文件里。原作者的提醒很实在:双击对应项,全选复制到记事本,攒成一张表。以后要查某个对象、某个道具的编号,翻自己的表比在树里瞎找快十倍。这件事看起来笨,但它是后面所有操作的地基。
第二站,练技能表的编号规律。技能相关的包结构比怪物复杂,因为编号是拼出来的。大致规律是:职业代码 + 序号。有些职业分支用三位数代码,后面的新分支用四位数,技能的完整编号就是在职业代码后面接一段固定位数的序号。原文举过一个例子,某个四转职业的全屏技能编号是1121000这种形态。
重点是理解一点:改一个技能不等于改全部技能。哪怕两个职业有同名技能,它们在包里也是各自独立的节点,得一个一个改。指望改一处全职业生效,会浪费你半天时间找「为什么没生效」。
第三站,玩一玩贴图替换。界面包ui.wz里基本就是一堆图片。步骤是:在树里定位到目标图片的路径,导出成 PNG,用图像软件改颜色或透明度,存回 PNG 格式,再导回去覆盖。这里有两个硬性要求:格式必须是 PNG,文件名最好保持原样,方便回填的时候不搞混。不建议改动窗口的整体形状,改颜色和透明度就够玩了。
6.3 我给自己的三条规矩
第一条,任何一次改动都从复制开始。不是「我觉得这次改动很小,应该没事」,而是无条件复制。我被这条坑过一次之后,现在哪怕只是改一个数字,也会先复制一份带日期的备份,改完对比一下文件大小,确认保存真的写进去了。
第二条,改完必回读验证。保存不等于生效,工具不报错不等于写对了。用重打包器把文件重新打开,展开到那个节点,亲眼看一眼值变了没有、节点删掉了没有。这一步花两分钟,能挡掉后面两小时的瞎折腾。
第三条,一次只改一个变量。想同时试三个效果,就先做完一个、进游戏验证、确认没问题,再做下一个。一口气全改完,出问题的时候你根本不知道该回滚哪一步。
这三条没什么技术含量,但它们是我从一堆坏包和重装记录里换来的。你要是刚开始学,把它们抄下来贴在屏幕边上,比记住任何快捷键都有用。希望帮到你。
本文还有配套的精品资源,点击获取