导航菜单
首页 » 问答 » 正文

植物大战僵尸(6) 植物无冷却时间

今天来研究一下如何使植物无冷却时间。

根据前面的一些章节,我们可以猜测出植物的冷却时间也是存在一个累加器不断累加,达到上限后归零实现的。

进入游戏,CE附加,放下一个冷却时间较长的植物,我们搜索未知的初始值,然后依次搜索增加的数值。

经过不断努力,我们找到了一个在辣椒冷却结束时,值为0的数据。再次放下辣椒,然后把这个值改为5000,发现冷却结束了。说明这个值就是我们要找的值。

接下来老规矩,我们看是什么改写了这个值。第一个指令是我们拿起或放下辣椒的指令,第二个是我们放下辣椒后,辣椒CD减少的指令,我们看第二个指令的反汇编。

通过分析不难发现,我们可以将01改为一个较大的数字,实现快速CD。这种方法大家应该很熟悉了,那么接下来看看是否有新的思路。

一般来说,冷却的代码都是这样来实现的:

while (冷却中) {
    减少冷却时间;
}
设置冷却结束;

然而在汇编语言中,没有while关键字,只能用跳转指令来实现,我们可以用汇编语言模拟一个循环:

00  ->   是否冷却中
01 |  -  如果不是跳转到04
02 | |   减少冷却时间
03  -|-  跳转到00
04    -> 设置冷却结束

分析完之后,我们可以发现,关键语句在01,我们看汇编代码,差不多与之类似,我们看减少冷却时间上面的一条,je .exe+872AC,我们试着把这个条件反过来,即把je改为jne。(上图为原来的,下图为改过之后的)

我们进到游戏里面看一下。我们发现果然达到了目的,我在这里种了满屏的核弹。

好了,今天的内容就到这里了。

评论(0)

二维码