文章目录
1、作业
2、说明
3、任务实现过程
4、总结
1、作业
1、作业任务
1、修改《植物大战僵尸》的存档文件,将一个新用户的进度直接修改到5-2关
2、将金钱(能量)直接修改到10000
2、说明
1、任务实现工具
1、游戏:《植物大战僵尸》中文版(版)
2、十六进制编辑器:Hex Editor Neo
2、掌握进制转换
1、R进制转十进制—按权展开求和法
十进制:20=2×10¹+0×10º
二进制:(10100)=1×2⁴+0×2³+1×2²+0×2¹+0×2º=20
八进制:(24)=2×8¹+4×8º=20
十六进制:(14)=1×16¹+4×16º=20
2、十进制转R进制—除数取余法
(1)十进制转二进制
十进制数有整数和小数两部分,在转换时,整数部分采用除2取余法,小数部分采用乘2取整法,然后通过小数点将转换后的二进制数连接起来即可。例如:整数:20/2=10……0 、10/2=5……0、5/2=2……1,、2/2=1……0、1/2=0……1,所以(20)=(10100)₂
小数:0.625×2=1.250、1.250×2=0.500、0.500×2=1.000,所以(.625)=(.101)₂
(2)十进制转八进制
75/8=9……3、9/8=1……1、1/8=0……1,所以(75)=(113)八进制
(3)十进制转十六进制
75/16=4……11、4/16=0……4,所以(75)=(4B)十六进制
11在16进制中用B表示
3、任务实现过程
3.1、任务实现流程
1、下载安装游戏《植物大战僵尸》中文版和16进制编辑器
2、打开游戏,新建游戏账户
3、找到《植物大战僵尸》的用户存档文件夹,用十六进制编辑器:Hex Editor Neo打开指定用户的存档文件
4、根据要求,将关卡和金币的数据转换到5-2关和10000金币的16进制,修改后保存文件
5、修改后重新打开游戏界面,检查游戏进度和金币数量是否已经达到标准
3.2、任务实现具体操作
3.2.1、新建账户
(1)打开游戏注册一个新账户,我这里为yonghu1(名字可自拟),账户建成后关闭游戏,使之在本地生成对应的存档文件。
(2)再建3个账户分别为yonghu2、yonghu3、yonghu4,目的是为了找到控制关卡和金币功能数据,与yonghu1作对比。账户建成后关闭游戏,使之在本地生成对应的存档文件。
3.2.2、修改关卡
1、修改关卡需先找到游戏存档文件
单机游戏数据都是存储在本地,植物大战僵尸存档位置一般放在(如果玩家没有自行更改过)C:\ProgramData\PopCap Games\PlantsVsZombies\userdata。
找到存档的方法:
1.以win10为例子(win7一样)首先打开c盘(系统盘),点查看,勾选“隐藏的项目”。
2.打开”Programdata“文件夹。
3.打开“PopCap Games”文件夹。
4.接着打开“PlantsVsZombies”“userdata”文件夹就是存档。
注意:如果打开C盘无”Programdata“文件夹,就是被隐藏了,点查看,勾选“隐藏的项目”。
2、找到存档文件数据
将创建的4个用户进行对比找到存档文件数据。
为了更容易找到存档文件数据,我们采用控制变量法和对比法。用十六进制编辑器:Hex Editor Neo打开用户文件。我将yonghu1玩到关卡1-9,将yonghu2关卡玩到2-1,yonghu4不进行游戏,在十六进制编辑器:Hex Editor Neo将三者进行比较发现只有第一行第四列的数据发生变化,说明第一行第四列的数据是控制游戏进度的。
在十六进制编辑器:Hex Editor Neo进行观察发现玩到1-9关,第一行第四列的数据是09;玩到2-1关,第一行第四列的数据是0b:而没有玩的第一行第四列的数据是01,这就不难发现到哪一关是将关卡数转换为16进制数。如果要将进度调整至5-2关(通过百度可以知道植物大战僵尸每个大关卡有10个小关卡)所以要将数值调整为42。因为我们发现到哪一关是将关卡数转换为16进制数,所以要将42转换为16进制数。
由上面说明可知十进制转R进制—除数取余法
42/16=2……10
2/16==0……2
10在16进制中用A表示,所以,42的16进制为2A
3、修改存档文件数据
由上面已经找到存档文件数据,所以我们将yonghu3的游戏存档在十六进制编辑器:Hex Editor Neo中修改到5-2关。最后打开游戏,游戏进度已经到5-2关。这样我们就完成游戏进度了。
注意:修改的时候需关闭游戏,否则修改的数据不会被保存
3.2.3、修改金币
在yonghu2中我们通过试玩获得一定的金币,再将yonghu2的关卡进度改到5-2。然后与yonghu3进行对比。(在十六进制编辑器:Hex Editor Neo中进行对比)
通过对比我们发现 第一行第八列的数据变成1C,所以 第一行第八列是控制金币数量的数据。在十六进制编辑器:Hex Editor Neo中是16进制,而游戏中是十进制。那我们将16进制转换为十进制:
由上面说明可知R进制转十进制—按权展开求和法
1C=1×16¹+12×16º=28
可以看出金币的数量是16进制数转换为十进制数的10倍
所以,要将金币数量修改到10000,需要在十六进制编辑器:Hex Editor Neo中将第一行第八列的数据修改为1000。而1000的16进制数为:
由上面说明可知十进制转R进制—除数取余法
1000/16=62……8
62/16=3……14
3/16=0……3
14在16进制数中是E,所以1000的十六进制数是3E8
这时发现1000的十六进制数有3位,所以通过相同的方法测试发现第一行第九列也能控制金币数值。并且从大到小是从右到左,所以在yonghu3中修改第一行第八列和第九列金币就变为10000了。如下修改:
到这里就完成关卡和金币的修改了。
4、总结
修改游戏存档需要我们掌握进制转换等,同时也需要我们认真进行每一步。以上就是这篇博客的全部内容。