C1试验 01 修改游戏存档

C1 任务1 修改游戏存档

1.找到游戏存档的位置

一开始没想到,游戏的数据放到哪里,所以刚开始一直在改这个userdata文件夹里的内容,结果存档一直没有效果,后来改劈叉后,删掉重新解压一次

发现数据和存档还在,然后根据我以前写程序的时候,总是把数据放到 C:\ProgramData 文件夹下(许多程序的设置也都是保存到这个文件夹的),这个文件夹已经被隐藏了,由于我电脑默认设置的就是显示隐藏项目。

在这里插入图片描述

用图上的方法来设置,接着找到C:\ProgramData\PopCap Games\PlantsVsZombies\userdata文件夹

然后游戏数据就出来了

在这里插入图片描述

users.dat是保存的用户信息,userx.dat才是用户下的缓存

2.修改存档

然后新建两个用户,用来对比数据,用第一个数据先闯到(1,5)关

在这里插入图片描述

然后在看没玩的,可以看到改变的数值是 04列下的第一行

在这里插入图片描述

我们的要求是改到5,2关,植物大战僵尸的一个大关卡中的小关卡一共有10关,我们到5,2关也就是到52关

计算5,2关也就是52的十六进制得出 34,我们把01改到34后,发现关卡是6,2关了,然后懵逼了,具体我也不知道啊,不应该是这样吗???

接着我算出了42的十六进制 2a 然后改到了5,2关

用5.1凑个数

在这里插入图片描述

3.修改金币数量

当值为2a的时候,商城已经出现了,但是银币为0,我又打了一关获取到10银币后找到了修改后的数据位置,也就是08列到0b列,然后发现,10银币表示的是1,那么我们获取到10000银币的话,只需要把1000的十六进制打上去就行

我们算出的1000十六进制是3e8,接着在前面补个0 变成03e8,接下来开始改存档

保存之后进游戏一看,又懵了,593950个银币。。。

然后又算出来这个数值的十六进制得出 e803,发现和我们的03e8有点相反呐。。。

然后又把08列到09列修改为了 e803(因为我们写的是03e8但是的出来的值是e803的值,就可以想到,它是反着来的)

在这里插入图片描述

然后在进游戏查看,银币已经到10000个了

在这里插入图片描述

拓展任务

拓展任务: 用十六进制绘制一个带黑线的图

这个任务完成的话,需要了解BMP的结构

这段话来源于百度百科

位图文件可看成由4个部分组成:位图文件头(bitmap-file header)、位图信息头(bitmap-information header)、彩色表(color table)和定义位图的字节(位图数据,即图像数据,Data Bits 或Data Body)阵列,它具有如下所示的形式。

结构大小描述
bfType2说明文件的类型.该值必需是0x4D42
bfSize4说明文件的大小,用字节为单位
bfReserved12保留,必须设置为0
bfReserved22保留,必须设置为0
bfOffBits4文件头开始到实际的图象数据之间的字节的偏移量

接下来用hex editor Neo 新建一个十六进制临时文件,先把头文件怼好

然后我们来进行画图了

在这里插入图片描述

我们先弄一堆白色(白色的16进制为FF)

所以我们给他补一堆F

如果FF没有加够的话,那么图片应该是损坏的,当白色底图出来后就可以停止了

在这里插入图片描述

保存后就是这个样子

在这里插入图片描述

然后开始画黑线了,在学html的时候我们知道,黑色的十六进制rgb是 #000000

所以我们只需要把一部分f换成0就可以画出来黑线了,但是要注意的是,bmp的十六进制是从底往头走的,也就是上面的f是底部的白色背景,然后最下边的f是最顶部的白色背景,我们尽量靠中间走

在这里插入图片描述

把中间的f换成0后,我们在看效果图片

在这里插入图片描述

这个扩展任务就完事了

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值