之前介紹過用AutoHotKey寫出腳本
讓Tsum Tsum能以模擬器自動收心的MyAutoClick
MyAutoClick的基本運作:
1.將滑鼠點擊的位置以及順序記錄在文字檔中
2.從該文字檔依序讀取滑鼠點擊的位置
3.移動滑鼠至該位置並執行點擊的動作
4. 重複動作2.到3.,直到程式被終止或是重新讀入腳本的命令發生
此篇就接續著來介紹腳本內容是如何編寫的。
AutoHotKey是一種能依照簡單的語法寫出的動作腳本
在電腦上自動執行的軟體工具
首先可以從AutoHotKey的官網中取得主程式
之後若沒有特殊改動,則預設的腳本位置在
C:\Users\user\Documents\AutoHotkey.ahk
我們初期就先用這個AutoHotkey.ahk來編輯
第一個測試,將以下的綠色文字貼到AutoHotkey.ahk中:
執行AutoHotKey之後
我們按住滑鼠左鍵加上鍵盤的字母'm'
就會出現如下的對話框:
如果您也看到!恭喜!您已經學會使用AutoHotKey啦!
簡單解說一下:
分號 ';' 是註解的意思,也就是在分號之後輸入的同列文字都不會被當作腳本來執行
~LButton: 指的是按住滑鼠左鍵的意思
& m : 表示接連前面的組成複合按鍵以觸動以下的腳本動作
Msgbox: 顯示一個(基本)提示對話視窗
return: 表示此段動作結束
所以最基本的AutoHotKey腳本的組成:
1. 觸發的按鍵組合::
2. 動作腳本
3. 動作結束 (return)
接著我們改動內容如下:
儲存之後,我們要更新腳本,讓AutoHotKey重新讀入
從右下角的常駐圖示-->右鍵-->選擇"Reload This Script"
如此就能使AutoHotKey重新讀入腳本
看到對話視窗的內容改變了!
對於正在編寫腳本測試,要一直重複此動作,是否很不方便(懶...)?
因此第一個宅犬編寫AutoHotKey最常用的功能就是:
;●●● 重新載入Autohotkey的腳本ahk Mouse(L)+r
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
看懂了嗎?就是:
1. 按住滑鼠左鍵加上'r'後
2. 執行重新讀入腳本(reload)
3. 腳本結束(return)
有了這個動作腳本之後,我們就能修改完成
就住滑鼠左鍵+'r' 來重新讀入腳本
此外,reload的命令還有個額外的附加作用
能夠立刻中止目前正在執行的腳本
這是很重要的指令!
當編寫過程測試時,萬一動作失控
可以立刻執行此一動作來中止世界的毀滅呀!
歡迎加入懶人的世界!!
好了正式來介紹MyAutoClick的腳本吧!
1. 重設記錄檔(Clear)
當對應的滑鼠順序位置改變時,需要重新定位
就得將原來的紀錄檔C:\MyAutoClick.txt清除
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
觸動按鍵組合: 按住滑鼠左鍵+'c' (clear)
2. 紀錄滑鼠座標(Get)
取得滑鼠座標,並記錄在檔案C:\MyAutoClick.txt中
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
觸動按鍵組合: 按住滑鼠左鍵+'g' (get)
3. 從檔案中讀取座標,並自動(Auto)依序點擊
這裡是MyAutoClick最核心的部分
將X,Y座標依序從C:\MyAutoClick.txt讀出
並移動滑鼠至該位置並執行點擊的動作
mousemove, %nowX%,%newY%,50, ;;;移動滑鼠到該位置
Sleep,500 ;;;給予作用對象程式的反應時間
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
在C:\MyAutoClick.txt 中紀錄的數值將如下:
因此必須讀取的是
X:1172 <第1組
所以座標一共將有XArrayCount除以2組
即: XArrayCount/= 2
而讀取時必須跳Y的位置以讀取下一組的X座標開始
即: nowIndx += 2
觸動按鍵組合: 按住滑鼠左鍵+'a' (Auto)
雖然看起來落落長
但理解後其實也是很簡單的!不是嗎?
啊?還是不太會?
好啦!將整個MyAutoClick.ahk放上來
讓大家可以直接下載
無論直接使用或研究修改都歡迎!
夠佛心來著了吧?

你好,我是Autohotkey初心者,我想寫一個長按某個鍵然後再點擊一個畫面上的按鈕。不過按照爬文教學所使用的Send {X down}, Sleep 25000, Send {X up}, Sleep 10000, Click 1754,945; 結果測試是指會按X鍵,開頭有放Loop但是也沒有循環...想請問是哪邊漏掉了什麼呢? 謝謝
您好 看起來,您的動作流程: 按住X鍵-&gt;等待25秒-&gt;放開X鍵-&gt;再等待10秒-&gt;最後點擊滑鼠在(1754,945)的位置 如果您的問題是Click沒有動作?可能檢查一下是否有先宣告螢幕的座標模式? Click 44, 55 Clicks the left mouse button once at coordinates 44, 55 (based on CoordMode). 所以建議在呼叫前增加以下這行: &quot;CoordMode, Mouse, Screen &quot; 再試試看喽~
大大啊 這個是不是要電腦才可以自動送 買台chromebook 或是2in1 可以嗎 要windows的才行嗎
基本上我的模擬器以及autohotkey都是以windows為版本的喔~
還有筆電的處理器選擇 想自動送心10幾小時以上 應該選i3的還是i5比較好 或其實入門級的已經可以 不必用到那麼高階.. 希望大大回覆 感激
入門的其實就夠了, 但要注意記憶體最好加到4GB以上喔~
您好~能否請您指導 小弟遊戲想寫讓腳色在四的定點間移動,並施放技能 大致上是A點施放技能,一分鐘後 走去B點施放技能在一分鐘走去C點,最後D點走回A點 可是實際運作角色不會移動 目前想法是 F9啟動 F10關閉 skill_1~3 是施放, skill_4~5為行走 ~F9:: { settimer, skill_1, 1000 settimer, skill_2, 700 settimer, skill_3, 600 settimer, skill_4, 30000 settimer, skill_5, 60000 return } ~F10:: { settimer, skill_1, off settimer, skill_2, off settimer, skill_3, off settimer, skill_4, off settimer, skill_5, off return } skill_1: { Send {1 Down}{1 Up} return } skill_2: { Send {D Down}{D Up} return } skill_3: { Send {SPACE Down}{SPACE Up} return } skill_4: { Send {W Down} Sleep 1000 Send {W Up} return } skill_5: { Send {S Down} Sleep 1000 Send {S Up} return } 麻煩您了Orz
很多遊戲會防止[軟體]控制的滑鼠指令喔~ 所以先確定autohotkey的指令是否真的能在遊戲中作用?
感謝您的回復,是可以運作的,只是不能移動 還是說要指定滑鼠定時點選特定座標該如何撰寫呢?
滑鼠移動到螢幕的某個座標: mousemove, %nowX%,%newY%,50, ;;;移動滑鼠到該位置 記得要先註記一行 CoordMode, Mouse, Screen ;;;將滑鼠的座標系統對應到螢幕上 比較好校正滑鼠位置 另外 send down 到 up中間最好多少都加一點sleep避免接收速度不夠快 造成沒有感應到 多多嘗試 得到的經驗都是相當寶貴的!