在英雄无敌3中要实现无限移动力必须要有航海家之帽这个组合宝物,和骑士手套和神行靴这两件加移动力的宝物。下面让我们来看下是如何实现的吧。
英雄会后勤术的话,会减少下船后的移动力。(估计电脑计算认为是跟宝物的效果一样的)
具体做法:在上船的时候带上帽子(注意不要穿鞋子和手套);再上岸(航海家之帽上岸不减移动力地球人都知道了),上岸前注意穿上鞋子和手套,如果移动力不高的话,你就会看到移动力上涨了一节,这样就是成功的一个程序了,接下来要做的就是重复这个程序无数次……其实也不用这么多,据说有人试了14次就可以达到无限移动力的这个临界BUG了,但是据说也不是无限,曾经有牛人疯狂移动了两个小时后终于成功耗尽移动力停了下来,照这样看应该就是这个移动力的封顶最大值了。OK,你还在等什么?
两点补充:
说是14次,其实是和英雄的总体移动力有关系,而这又和所带的队伍速度有关系,那么可知上下船的次数是不固定,而且就算临界值是14次,那也不意味这无限移动力。临界值的意思是说一过此数行动值会回归0,到达临界值后英雄的行动能力逛上十来圈超大地图估计是没有问题的了,但不是无限,再逛下去就会发现行动值也在消耗,不停逛也只是数分钟或十来分钟就耗完了,一个多两个小时是没有的事--不过,假如在行动力耗完前再去重复上下船……我没有试验过--若也成那才是真正的无限行动力了,重复这样做就行--但是,临界值也是和剩余的行动力有关的,假如临界值是14,必须是剩余行动力恰好等于最初的行动力才合适,把握不好的话也许就会行动归0了,遇此要么精确计算剩余行动力,要么干脆不要上下那么多次,保险一点。
通过这个技巧实现的原理,同样的可以在没有鞋子和手套的情况下实现无限移动力——通过另一个英雄配合交换部队,带低速兵上船,到海上后换高速兵上岸(例如农民和天使~),当然没有宝物那么方便,但是也是一个办法。
bug原理解释(by inactive)
进追踪了一下程序,发现这个bug的根本原因,在于一个公式。是英雄有船长之帽时,程序在英雄上船和下船之间,行移动力修正的公式。这个公式是:
目标地点剩余移动力 = 目标地点最高移动力 * ( 当前地点剩余移动力 / 当前地点最高移动力 )
举个例子。一个英雄在岸边,差一步上船。他在陆地上最高移动力2460(因为此英雄带4速兵,无后勤学,有手套鞋子),而现有移动力是2160(因为他已经走了3步了)。那么他上船以后的移动力会是多少呢?
首先,他上船要走一步,在进船之前的一刹那,移动力就减去了100,现有移动力就是2060。
然后,他在陆地上的最高移动力还是2460。
再后,他在海上的最高移动力是3000。(因为无航海术,所有英雄在海上移动力1500,船长之帽再加1500)。
所以,他在海上的剩余移动力 3000 * ( 2060 / 2460 ) = 2512 。
以此类推,如果他就此上岸,在陆地的剩余移动力将是 2460 * ( 2412 / 3000 ) = 1978。这是少于他上船之前的移动力2160的。
所以可以看到,这个公式的初衷是,既然陆地和海上的最高移动力有区别,那么我就按比例算吧,可以说童叟无欺了。这样就来了bug。因为 这个比例是可以大于1的。
接着上面的例子。
如果在上船之前,英雄取下手套帽子,他的陆地最高移动力会减少1000!
再上船,他在海上的剩余移动力将是 3000* (2060 / 1460 ) = 4233 !
如果装上鞋子手套,接着下船,他在陆地的剩余移动力将是 2460 * ( 4133 / 3000 ) = 3389 。
这样他在陆地的剩余移动力,就大于他上船之前的2160了。
最后补充两点。
上面提到不用宝物,通过改变英雄带的兵种速度,也可以实现无限移动力。
这也可以同理解释。核心就是要把英雄的最高移动力,变得比他当前的移动力小。从而使得速度转换的比例大于1,达到移动力增加的目的。
上面提到14次上下船以后,移动力会超过临界值从而归零。
这实际是不太准确的。背后的实际原理是:程序在计算上面那个公式的时候,是不带括号算的。也就是说他先乘,再除。而当你的现有剩余移动力非常高以后,这个乘法就溢出了(也就是结果超过32bit)。这样就可能得到一个负数。再算除法,还是负数。程序见到一个负数的移动力,就判断英雄不能动了。总的来说通过这种方法,最多可以获得大概一百万的移动力,基本相当于可以走一万步!