在製作遊戲輔助程式,如果遊戲中,沒有自動尋路的功能,那麼分析地圖的碰撞偵測就會顯得非常困難,因為要知道遊戲中的障礙物的位置,並且還要透過一些路徑規劃(A*演算法),才能走到想要到的位置,因此整體上來說,會花比較多的時間在分析遊戲地圖。
這裡是將產生空白地圖的空間,可以知道地圖的相關資訊。
1. [ecx+0x38] 是存放行的相關資訊 (行等於[ecx+0x38] * 0x17)。
2. [ecx+0x68] 是存放列的相關資訊。
3. ebx是暫存地圖的整體大小。
從這邊可以知道遊戲碰撞偵測的演算法,並撰寫尋路的功能。
演算法步驟:
- 獲取地圖值:Map的基址 + y * 列的大小 + x / 2
- 判斷x的奇偶數
- 奇數將地圖值除以16,偶數跟0xF做and運算
- 判斷是否大於2 (大於2就是可以走得路徑)
下面的影片是自動的走道傳送站的前面。
更多技術文章
https://www.facebook.com/Xtutlab-%E6%95%99%E5%AD%B8%E5%AF%A6%E9%A9%97%E5%AE%A4-345668095840741/