C1 任务01-修改游戏存档项目总结
——技术精英组
任务目标:修改《植物⼤战僵⼫》的存档⽂件,将⼀个新⽤户的进度直接修改到5-2关,⾦钱(能量)直接修改到10000
使用到的工具:《植物大战僵尸游戏》,Hex Editor编辑工具
完成过程:
一、准备阶段
1.首先下载《植物大战僵尸》游戏,并注册了一个新的账户
2.在我的电脑中,找到账户存档文件夹
路径为C:\ProgramData\PopCap Games\PlantsVsZombies\userdata(文件夹有可能会隐藏,如果找不到,设置一下显示隐藏文件就可以了)
3.使用Hex Editor打开user1.dat,并观察显示的数据
4.打开《植物大战僵尸》游戏,开始过关
二.修改关卡
5.当我打到第3-2关时,再次用编辑器打开了文件,发现数据发生了变化
在04的位置上,数据从01变成了16。紧接着,我再次打开游戏通关,当我打到4-1关时,04位置上的数据变成了1f。所以,编辑器显示的数据是十六进制。
总结三个阶段的数据,
在初始状态下,04位置的数据为00,转换为十进制为0;
3-2关时,04位置的数据为16,转换为十进制为22;
4-1关时,04位置的数据为1f,转换为十进制为31;
所以,第5-2关时,十进制数应为42,在编辑器上的显示应为2a。手动编辑了04位置上的数据验证想法,结果正确,关卡数改正成功
三.修改金币
6.修改关卡成功后,发现08位置上的数据和初始状态下相比,也发生了变化,此时,我的账户上的金币数为1230。
而此时,08位置上的数据为7b,换算为十进制为123。所以,编辑器中金币位置上的数字*10=游戏中的金币数值。手动修改08位置上的数据验证想法,把08位置上的数据改为了c8(十进制为200),此时游戏中金币的数值为2000。
任务目标是将金币数改为10000,所以在编辑器中,金币所在位置的数据应为3e8(即十进制中的1000),但是如何将3e8填入编辑器中呢?
当我第一次修改数据时,将3e填入了08位置上,将8填入了09位置上并补0(即09置上的数值为80),而此时游戏中的数据为328300。
通过换算,十进制32830的十六进制为803e,所以328300这个数值是09位置上的数据连接08位置上的数据并乘10得到的。当我将3e填入09的位置上,80填入08的位置上,游戏中的金币数变为了160000,然而十进制16000的十六进制为3e80,也是09位置上的数字连接08位置上的数字。即数值的高位对应地址的高位(高对高,低对低)
所以,我改变了补0的位置,在09的位置上输入03,在08的位置上输入e8,此时游戏中的金币数为10000,修改成功。
拓展
在完成任务后,通过研究编译器,找到了更为简单的操作方法。
点击view(视图)>Display As(显示方式),在这里,可以转换进制,关卡数如果使用十进制的显示方法,直接在04位置上输入42,就直接变成了5-2关。但是相比之下,我觉得金币的设置还是使用十六进制和二进制更为方便一些。