标签:游戏 二进制 存档 Day01 改变 卡关 ----- 戴夫 代码
一.简介
大家一定都玩过游戏吧,那么大家有没有想过通过一些不一样的方法来改变游戏的进程呢?
今天我就来以植物大战僵尸为例来教大家如何用我们程序员的方式来改变游戏的进程.
本期我的任务为:
1.修改<植物大战僵尸>的存档,使之跳转到5-1卡关;
2.游戏账户充值1024$
二.任务所需的资料
1.这款游戏的安装包
游戏的安装包可以自行进行下载
或
此为链接:
提取码:wgfr;
2.二进制代码编辑器(Hex editor)
可以自行下载
或
此为链接:
提取码:w75d
三.该如何实现
1.首先应该了解游戏是如何进行存档的
之前我也不是很清楚,但是经过查找以后我了解到该游戏的存档是以二进制代码存在于用户的电脑中的,那么我们是不是可以通过改变二进制代码的排列方式从而达到改变游戏存档的效果.
2.了解是怎样进行存档的(这需要自己尝试然后找出规律)
1.游戏卡关的修改
知道了游戏是如何进行存档以后我有了一个初步的想法首先观察原来的二进制代码是如何排列的,然后进行游戏观察二进制代码排列有何改变
初始的二进制代码排序如下图所示:
当我进行一局游戏后到达卡关1-2时表中的一个数值发生了如下改变:
即第一行第四列对应的元素发生了改变,接下来我们继续游戏,当我在进行一局游戏,达到卡关1-3时表中数据又发生了变化:
这时我就发现了其中的规律:变化的元素可能代表的卡关的进度;我尝试改变其值,发现游戏进度真的发生了改变
我将其值设置为"09"后再次进入游戏发现效果如下:
这时我意识到该元素控制着游戏的关卡相关的数据;于是我将其数值改为29,即将卡关改为5-1;效果图如下:
2.游戏中金币的修改
经过和上述修改卡关类似的过程我发现当金币发生变化时,二进制代码中的第"08","09","0A","0B".列会相应的发生改变,但是它改变的数值和金币的数目并没有直接的关系
但是后来经过我的不断尝试我发现了其中的规律.
规则如下:
把选择要设置的金币数量除以10,然后除完之后的数据换成十六进制,并将它们倒过来写。
eg:1000000/10=100000 转换成十六进制为000186A0于是08 09 0a 0b列输入A0 86 01 00。
四.可能产生的问题
在过程中可能会产生一些问题下面来举例列出我所遇到的几个问题:
1.在寻找游戏数据存储的路径时有些小伙伴可以会找不到,这时只需将此电脑中的查看下的"隐藏的项目"进行勾选即可
2.当我们启动游戏时 一些电脑系统为Win10d 小伙伴可以会产生报错等现象,虽然我也不知道为什么但是我这里有一个解决的方法.可以将输入法进行一下替换,替换为美式键盘,更换后在重新启动游戏即可.
3.要注意的时游戏进行的时候如果user1.dat 文件处于打开状态的话,在游戏关闭后数据时不会进行储存的
五.总结
经过将近四个小时的尝试,总算是顺利的结束了今天的任务,但是其中还是遇到许多的问题,但是遇到困难我们不能害怕要勇敢的进行尝试,相信最终一定会解决的.
标签:游戏,二进制,存档,Day01,改变,卡关,-----,戴夫,代码 来源: https://blog.csdn.net/weixin_54083834/article/details/120978205
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。