在英雄無敵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)。這樣就可能得到一個負數。再算除法,還是負數。程序見到一個負數的移動力,就判斷英雄不能動了。總的來說通過這種方法,最多可以獲得大概一百萬的移動力,基本相當於可以走一萬步!