Monday, April 11, 2016

用 AutoIt 做簡單外掛 (for 雨兒)

基本上, 外掛有好多種, 可以只係模擬 鍵盤/滑鼠, 又可以係修改程式的數值, 亦可以模擬通訊.
呢幾樣入面, 最簡單就係模擬 鍵盤/滑鼠, 只需要將自己玩 game 時做的動作記下來, 由電腦代勞.

大皇帝中既神將就係一個最簡單既例子, 每 31秒左右按一次出戰, 早了就要扣 100金.
如果每次都由人手去做, 真的太辛苦了, 還是讓電腦代勞吧.

以下是用 AutoIt 做簡單 macro 的過程:

1) 首先要下載並安裝 AutoIt v3 (完全免費) 下載地址: https://www.autoitscript.com/site/autoit/downloads/ 

2) 安裝後會有幾個程式, 以下是安裝在 Windows 10 x64 下, 開始功能表下, AutoIt 的程式:

Windows 7 (32bit) 會是這樣:



主要會用到以下幾個:
- SciTE Script Editor       : 就是編程用的 editor, 可以直接執行 script 
- AutoIt Windows Info    : 用來找出要按下的位置
- Compile Script to .exe   : 把 script 變成 executable 檔, 可以直接執行

3) 由於需要寫 script, 不是三言兩語可以講解, 由於時間關係, 就用我的 script 吧.
    這裡有兩個 script, 將會慢慢教你點用.
  1. 神將無雙
  2. 重複戰鬥 (就是遇上難打的地方, 不斷重複挑戰)

4) 以上兩個 script, 神將無雙 是用 1024 x 768 的解像去做, 而 重複戰鬥 是用 1920 x 1200 的.
     因為 神將我是在 VM 行, 所以畫面比較細.
     當然, 大家的畫面, 可能會是不同的解像, 所以有些地方要修改, 先用 SciTE Script Editor 打開 file.  應該不難吧, File..Open... 先打開 GoGod.au3, 就會見到以下畫面:

5)   如果有寫過程式的朋友, 或許會看得明白.  否則, 暫時不用理會.
    神將比較簡單, 只需不斷在同一位置按下就可以 (要鼓的請自己加上).
    因應畫面大小不同, 按下的位置也有不同.  先在程式中找出以下地方 (即 41 行):

   這裡, 390, 680 是我要按下的地方.   最好你先找出在你的畫面, 要按在那裡.

   註: 這個 script 中大部份都是為UI而做的, 但這些都是可以說是沒必要的.
         如果只是為了每 33秒按一下, 可以只做一個簡單的 loop 就可以了.

For $i = 1 to 60
 MouseUp("Left")
 Sleep(1)
 MouseMove( 390, 680)
 Sleep(1)
 MouseCLick("Left")
 Sleep(3300)
Next




6) 這個有點麻煩, 神將不是隨時可以試, 必須要等一次星期五/日去量度.
     當然, 那個 [出戰] 的 button 也不小, 如果你記得大約位置也可以.
     執行 AutoIt Windows Info, 然後在中間選 "Mouse" page


    
之後, 用mouse 把 "Finder Tool" 那個目標靶 drag 去你要按的位置 (drag 就是按下 mouse 左鐽, 再拉去想要的位置, 然後放手).  一般放在 "出戰" 那個大圓上面就可以.  然後你會見到 Position 顯示了出來.  如下圖, 位置就是  864, 1082.

注意, AutoIt Windows Info 是 always on top 的, 如果阻擋了 要按的位置, 就先把它移開一點.

7) 記下位置, 就可以關閉 AutoIt Windows Info, 回到 SciTE Script Editor .  把原來的 位置改成剛才記下的位置就可以了.  如上, 就是把 390, 860 改成 864, 1082 即可.


8) 改好後, 可以先測試一下.  只要在 SciTE Script Editor 上按 [F5] 就會自動執行了.
    不一定要在 大皇帝之內的, 任何地方也可以.  比如我現在打緊 blog, 一樣可以...


執行後, 看到什麼嗎?  首先會在 864, 1082 的地方按了一下, 之後好像什麼也沒有.
請留意一下左上角, 這裡有個我自己做的 掛機 UI.

讓我簡單解釋一下是什麼 (其實...一看就明白吧).

左右兩邊有個 checkbox, 是用來 close 程式的, 只要把左右都 check 了就會停止.
"神將無雙" 就是執行中的外掛的功用.
60 - 是我設定, 要執行的次數....其實, 50 就夠, 多了亦不會有問題.  你可以改了 第 36行中, $goCnt=60 的數值就可以.
1  - 是當前執行的之數 (1 就是第一次出戰吧)
29 - 是倒數下次執行的時間, 現在設定了 33 秒一次, 其實 31 秒也可以.  但為免浪費 100金, 所以我多預留了 2 秒.  你可以自行修改 第 42 行 WaitTime(33) 內的值.

現在可以執行了, 如果怕麻煩, 不想每次都打開 SciTE Script Editor 去執行, 可以轉成 executable 檔, 放在 taskbar, 就可以直接執行.

9) 在 start menu 中執行  compile to .exe 的程式, 再選 之前的 GoGod.au3.
之後再加個 icon 給它吧, 可以用這個自家制的 icon: 


之後, 按 [Convert] 就會生成一個 executable files 了.

    

只要把 exe file Pin to taskbar, 下次進入神將畫面後, 按下面的 icon, 就會自動出戰了.