背景:
92超级街头霸王是80后的回忆,偶尔玩玩,调剂一下心情。winkawaks是玩街霸的一种模拟器,自带搜索作弊码的功能。电脑控制的角色太弱,比如我最喜欢用红人VS警察,感觉太不抗揍,几个民工三连后,已经gameover,于是乎想把对手变成无限生命。首先,用了winkawaks的金手指,不行,对手直接变成无敌模式,游戏不能正常进行。
解决思路:
很自然就想到了cheatengine,步骤如下
- 查找血量相关的内存地址。游戏开始时,为了节省搜索时间,先通过搜索精确值 144.为什么是144呢,因为前面通过观察,知道血量初始值是144,而且只有一个字节,理论上,最大可以设置为255,实际上,我在需要的时候,只将血量重置为144.

- 每打警察一次,血量减少的时候。做一次decrease value搜索,经过大约5次左右搜索后,得到了最终相关的血量地址。

- 血量修改。血量只有一个字节,再大也不够用。在不编写脚本的情况下面,我采用了一个土方法,实现了我想要的效果。为每一个血量相关的内存地址,添加一个热键,比如我设置了K,每按一次K,对手的血量自动恢复,基本不影响游戏,也不用编写一行代码,简直是兵不血刃。即可以达到无限生命,还有正常的血量减少进度提示。

下图,打到这里,已经为警察加了两次血,警察还是处于头晕状态。还可以将时间调为无限,这样就成了生存模式。因为总是会意外被警察击中,也就是说,只要警察生命无限,自己有限,总会被对方干掉。但最终坚持了多少时间,没法把握,不过用脚本应该可以实现这个功能。

问题小结与展望:
问题主要还是在于不够智能,不够自动化。
- 这几个血量地址不是固定的,每次重新打开winkawaks模拟器,这个地址都会变化。观察内存地址可以发现,这几个内存地址的相对位置总是固定的,游戏初始后,可以用cheatengine脚本去搜索,应该能搜索得到,这样,免去了每次游戏都要搜索一遍的麻烦。
- 血量目前是手动控制,在对手血量不够时,按一个快捷键就回血了。应该设计一个脚本,在后台能够自动监测血量,一旦不够了,就自动回血。
- 其实最终的目的,我想可以统计一下游戏中的技术指标,比如在一次游戏中,对手的去血量和自已的去血量。每次游戏中,这些数据能够保留下来,形成一个统计图表。我最关心的是,在一次99秒的时候里面,在狂虐警察的时候,一共废去对方多少的血量。没有工具,只能靠自己记忆,有点不科学。我记得自己最多给警察加了5次学,并且在时间结束前,击败了他。
这个小工具实现应该并不会难,只是目前没什么精力去干这个
做了几个视频放在优酷上,有兴趣的可以看看
本文分享了使用cheatengine在《92超级街头霸王》中实现角色无限生命的技巧,通过搜索血量相关内存地址并设置热键,实现在不编写脚本的情况下调整游戏难度。
4393

被折叠的 条评论
为什么被折叠?



