世紀帝國(AoE)或橫掃千軍(TA)修改原則			李果兆

Hello..

在 FPE 的網站上，很多人問我要如何修改世紀帝國(AoE)或是橫掃千軍(TA)，
這兩個遊戲都是使用浮點數來存放的，在這裡我說明一下如何以 FPE 6.0 DEMO
修改他們。FPE 6.0 DEMO 可以直接分析浮點數，只要直接輸入就好了，
例如 "100.0"。

或許你會問: TA 或 AoE 的資源量在畫面上顯示只有整數部分呢? 是的，他們
隱藏了小數部分的數值，如果畫面上顯示的是 "1000"，因為它隱藏了小數的部
分，若你直接在 FPE 6.0 DEMO 以 "1000" 或 "1000.0" 去分析他，可能是找
不到的。

那我們要怎麼辦呢? 其實程式設計師還是比較喜歡整數的，例如我們剛剛進入
遊戲時，TA 或 AoE 的資源都有個初始值，例如 "400"。這時候這個值很可能
就是 400.0，一個農夫能夠採的資源最大量是 10，也很可能是 10.0。如果你
派個農夫去採資源，一直到他採完 10 搬回基地前不要做任何其他的事，一搬
回基地馬上停止農夫的動作。這時你整的資源量變成 410，很可能就是 410.0
。

依照這個原則，一開始我們分析 "400.0"，派農夫採滿 10，搬回基地前不要做
任何其他的事，一搬回基地馬上停止農夫的動作，分析 "410.0"。依此類推，就
大概可以找到目標了。我們這個原則是猜想程式設計師會對每一個初始值及最大
值以 XXX.0 的方式定義(一般人的習性嘛)。但是如果你在農夫搬回基地前做其
他消耗資源的事或是在農夫沒有採滿 10 就搬回基地，那可能就會有小數點後的
數出現了，那就不能很準確的分析了。

以前有網友說 100.0 到 100.9 的翻成四個十六進位 bytes 時，前兩個 bytes
會一樣。其實這不正確，根據測試，有些浮點數(如120.4和120.5)只有第一
個 byte 會一樣而已. 而且這個 byte 很難變動，必須整個浮點數有很大的變動
才會變。所以比較好的分析方法如同剛剛說的才會比較正確。FPE 6.0 DEMO 也
可以把浮點數轉換為十六進位數，在 "Others" 左下方那兩個中間有個 "Hex" 
按鈕的欄位，你只要在上面欄位輸入浮點數，下面會出現十六進位值，你可以自
行試試。
======================================================================
FPE 6.0 正式版會使用特殊技巧，你只要知道整數部分(如1000)，分析 "1000.*"
就可以分析所有整數部分為 1000 的浮點數，第二次如果變成 1200.XX，可以分
析 "1200.*"，很容易就可以分析出來了，完全不用考慮是不是 XXX.0 及隱藏
小數點後面數值的問題。

======================================================================

