修改《植物大战僵尸》游戏数据

修改《植物大战僵尸》游戏数据

最近参加认证培训,注重动手操作,虽然对新手有难度,但是这种模式确实能够很好的锻炼动手能力,最重要的是记忆会非常深刻。第一个任务就是修改植物大战僵尸游戏数据到“5-2”关,金币10000。任务描述很简单,操作其实也不难,当然是在摸清楚之后。

  1. 运行《植物大战僵尸》游戏
    游戏很简单,大多数人都玩过,但是当时肯定没多想,现在带着目的去玩,心态完全不一样,关注点就是关卡和金币数。然而,第一单元玩完之后“2-1”关才会有金币产生,大概是280.
  2. 找游戏数据文件
    新手找不到,上网搜,在“C:\ProgramData\PopCap Games\PlantsVsZombies”的目录里有一个“userdata”的文件夹,找到名为“user1.dat”的文件。需要说明的是这个目录不是游戏安装目录,而是系统盘的“ProgramData”文件夹里面,这个文件夹是隐藏的,要在“文件夹选项”里的“查看”方式里勾选之后才能看见(见图1)。图1
  3. 打开数据文件
    找到文件之后,双击,打不开;换打开方式,记事本打不开、浏览器打不开、画图打不开……总之,都打不开。上网搜!“.dat”文件可能是任何格式,头大,要用二进制数据编辑器打开,开心。下一步就是搜二进制数据编辑器,得UltraEdit,安装,要激活,不管,试用1个月,打开“user1.dat”,成功,得到一个类似数据表格的东西(见图2)。
    在这里插入图片描述
  4. 修改数据
    这里是核心,几经曲折才算成功。
    第一次尝试,里面好多数据,一看大多是“00”,好,那就找不是“00”的。一共有三行,第一行(00000000h)里的横坐标为0、4、8的三个不是“00”;第N行(000002e0h)里的横坐标为0、1、4、5的不是“00”;倒数第五行(00000330h)里的横坐标为c、d的不是“00”。总共8个数据,哪个是关卡?哪个是金币?不知道!
    继续尝试,我再玩一关,再得到一组数据,对比。只有倒数第五行的数据没什么变化,弃之。再玩一关,第三组数据产生。原始资料有了,好像还是看不明白,想起了这顿操作的目的是掌握二进制、十六进制等等这些数据的基本玩法。哦……这堆乱码是十六进制数据,换算为二进制。“0C”换成“00001100”,“07”换成“00000111”……好了,第一行好像有点意思,第N行好像很复杂,先不管。坐标为0的一直都没变,不管。剩下坐标为4和8的,来了。
    坐标为4的在刚才“2-2”关和“2-1”关的数据里,就只相差了1,“00001100”和“00001011”换成十进制分别是12的11,完美,这个应该就是关卡了。
    坐标为8的“00011100”和“00111011”依葫芦画瓢换成十进制是28和59,刚才的金币好像分别是280和590,哦……这个数据应该就是金币了,游戏里捡的最便宜的银币好像就是10。搞起来!
    1000(10000除以10)好像在8位二进制数里溢出了,“1111101000”有10位,怎么搞?补0!前面不是还有个横坐标为7的数据是“00”吗,改它“00000011 11101000”。
    换成十六进制的就是:横坐标为4的“2A”、横坐标为7的“03”、横坐标为8的“E8”。保存,替换,打开游戏。
    关卡“6-”、金币“2320”。
    有鬼!
    再次尝试,关卡先不管,位置没错,数据可以再试,简单。金币2320应该是改得不对,232只是横坐标为8的数据换成十进制后的结果,横坐标为7的数据无效,头疼。
    那我再改横坐标为9的数据,改多少,不知道,随便改,还得改大点,金币要破10000最好,改“00”里的前一个0。保存,替换,打开游戏。哦……果然,4万多了,怎么来的,研究,搞不懂,那就再搞几组。直接把原目录的用房数据文件“user1”打开,也不备份了,游戏也打开,花钱。每花一次,进一次UltraEdit界面,会提示数据变化(见图3),是否重新加载,点“是”。在这里插入图片描述
    新的数据就出现了,换算成二进制,列表,对比。好像横坐标为8的数据变化比较随意,没什么规律,横坐标为9的倒是在递减,有门。换算成十进制,还是看不懂。能不能把两个数据连起来,要不然金币怎么也突破不了2550了(8位二进制数最大能表示十进制的255),“8+9”不对,那“9+8”吧(见图4),好像有点意思了。
    | 在这里插入图片描述
    “101011111000”换数成十进制就是2808,完美!
    再次验证其他的数,刚好都能对上,就是这样了。
    安排:横坐标为8的“E8”、横坐标为9的“03”。保存,打开游戏。金币如愿成为了10000。
    再看关卡,大概是游戏里的解锁要求,不能直接到“5-2”,改成“26”,后退4关,到“4-8”关,打2局,解锁5-1关,就能如愿改成“5-2”了,至此任务完成。

总结一下,整个过程前后花了两天时间,当然不是一直趴在电脑上,但是真的花了大量的时间来思考二进制数据结构问题,主要是那个金币的精准修改问题,因为自己对于二进制数据的了解有限,只能尝试摸索,虽然我现在依然觉得了解不多,但是至少这款游戏我能搞定。应该来说,不同的开发者开发的软件对于数据的存放设计是不同的,要想弄清楚,只能一个个去找规律,只要思路清晰,头脑清醒,愿意付出时间,应该都能成功,关键是这个缓慢的进步过程,要能够坚持得下去,我很期待。

猜你喜欢

转载自blog.csdn.net/weixin_49349864/article/details/115407011