按鍵精靈是套可幫助您自動完成電腦既定任務的軟體,在遊戲上,亦可以幫助您做一些重複性的動作。此篇文章,小路將以手機遊戲「Empires and Allies 帝國與聯盟」來當作教學範本。
下列文章是假設你已經會安裝「按鍵精靈」並會使用按鍵精靈內「抓點、抓色、抓圖、抓座標」。
- 抓點、抓色、抓圖、抓座標 官方教學:點這裡
雙倒斜線 // : 在程式中用來做註解用。
主程式可以想做一個無窮迴圈,從步驟 1 > 2 > 3 > …. 然後回到 > 1
語法上會寫成:
REM START // 註記標籤 (可以用來寫一些 543 , 或用來當作跳轉程式的目標標籤) *** *** *** GOTO START // 跳轉標籤 (跳轉到指定的 REM 標籤)
遊戲中,主程式應該小路包含了幾個步驟:
REM START 特殊:判斷是否停留在 Android 程式管理畫面 特殊:判斷是否停留在 Android 選單畫面 特殊:判斷是否停留在戰鬥畫面 特殊:判斷是否停留在戰鬥結束畫面 判斷:是否需要補兵 判斷:補兵是否結束 判斷:如果補兵結束且停留在主畫面就開始搜尋敵人 判斷:在搜尋畫面就開始進入戰鬥畫面 判斷:在戰鬥畫面開始執行攻擊程序 GOTO START
下面是完整的腳本程式:小路會將指令註解於程式內(請參考 // ★ 右側註解)
Dim AddSoldier,SoldierTime // ★ DIM : 用於宣告變數 AddSoldier = "" SoldierTime = "" // 增兵時間判斷 AddSoldier = Now // ★ Now = 現在時間 // 退勳章 Dim WinFlag,LostModeTime WinFlag = 1// 1: 贏模式 0: 輸模式 LostModeTime = Now // _____ _____ ___ ______ _____ // / ___|_ _/ _ \| ___ \_ _| // \ `--. | |/ /_\ \ |_/ / | | // `--. \ | || _ | / | | // /\__/ / | || | | | |\ \ | | // \____/ \_/\_| |_|_| \_| \_/ // Rem START // 特殊:判斷是否停留在 Android 程式管理畫面 FindPic 1566,604,1673,649,"Attachment:\Empires.bmp",0.9,intX,intY // ★ FindPic : 找尋畫面中是否有與圖檔相符的圖塊。 // ★ FindPic X1,Y1,X2,Y2,BMP PATH,0.9,intX,intY // ★ X1,X2 = 找尋範圍左上角座標 , X2,Y2 = 右下角座標 // ★ BMP PATH = 圖檔位置(格式:BMP) // ★ intX , intY = 找到相似圖塊時,圖塊的位置。(沒找到則為 0) If intX > 0 And intY > 0 Then // ★ If ? Then... End If : 判斷式 ( ? = 你希望判斷的東西 , 在此是判斷剛剛 FindPic 是否有找到座標) MoveTo 1688, 527 // ★ MoveTo : 滑鼠游標移動到 X,Y 座標 Delay 200 // ★ Delay : 暫停 ? ms (1000 ms = 1s) LeftDown 1 // ★ LeftDown : 滑鼠左鍵下壓 1 次 Delay 200 MoveTo 1688, 330 Delay 200 LeftUp 1 // ★ LeftUp : 滑鼠左鍵放開 1 次 Delay 3000 End If // 特殊:判斷是否停留在 Android 選單畫面 FindPic 145, 126, 231, 217,"Attachment:\Glass.bmp",0.8,intX,intY If intX > 0 And intY > 0 Then FindPic 1,1,1919,1079, "Attachment:\EA_Icon.bmp", 0.8, intX, intY If intX > 0 And intY > 0 Then MoveTo intX, intY Delay 500 LeftClick 1 // ★ 滑鼠左鍵點 1 下 Delay 1000 // 切換成輸一場模式 WinFlag=0 Goto Start End if End If // 確認為戰鬥畫面(判斷是否有撤退按鈕) FindPic 1696, 20, 1766, 56, "Attachment:\RunAway.bmp", 0.5, intX, intY If intX > 0 And intY > 0 Then // 點開 Android 程式畫面 MoveTo 344, 1050 Delay 500 LeftClick 1 Delay 500 End If // 戰鬥結束畫面 FindColorEx 1486, 309, 1510, 339, "2439C8", 0, 0.5, AA, BB // ★ FindColorEx : 找尋範圍內是否有符合的顏色 // ★ 格式: FindColorEx x1,y1,x2,y2,RGB,0.5,intX,intY // ★ x1,y1 = 左上角座標 , x2,y2 = 右下角座標 // ★ RGB = 顏色 #000000 = 黑色 // ★ intX,intY = 找到顏色的位置(x,y)座標 FindColorEx 1499, 360, 1522, 382, "080608", 0, 0.5, CC, DD If AA > 0 And BB > 0 And CC > 0 And DD > 0 Then Delay 200 MoveTo 960, 860 Delay 200 LeftClick 1 End If // 判斷是否需要補兵 FindPic 1720,570,1823,675,"Attachment:\AddSoilder.bmp",0.9,intX,intY If intX > 0 And intY > 0 Then Call Plugin.Msg.ShowScrTXT(561, 1045, 1330, 1073, "補兵", "0000FF") // ★ Call : 呼叫外部程式 或 副程式 // ★ Plugin.Msg.ShowScrTXT(x1,y1,x2,y2,"訊息") : 顯示訊息於螢幕上 Delay 1000 MoveTo 1776, 629 Delay 200 LeftClick 1 Delay 200 MoveTo 967, 647 Delay 200 LeftClick 1 Delay 200 WatchDog = 0 AddSoldier=Now Goto START End If // 確認補兵閃電符號是否撤除 FindColorEx 1772,633,1816,668,"6C2B0A",0,0.9,intX,intY // 模糊搜尋 ! 或 + 號深藍 If intX > 0 And intY > 0 Then If AddSoldier = "" Then AddSoldier = Now End If Call Plugin.Msg.ShowScrTXT(561, 1045, 1330, 1073, "補兵中..." & SoldierTime & " 資源轉送時間:" & datediff("n", Backup_Time, Now), "0000FF") // 進入"輸"模式 (增兵時間大於 2 min 避免無兵可用) LostModeTime=Now If SoldierTime >= 2 and WinFlag = 0 Then Call Lost_Mode End If // 移動螢幕,避免產生過久沒有操作而離開遊戲 Delay 200 MoveTo 1442, 686 Delay 200 LeftDown 1 Delay 200 MoveTo 1355, 746 Delay 200 LeftUp 1 Delay 200 Goto START Else Call Plugin.Msg.ShowScrTXT(561, 1045, 1330, 1073, "放行中", "0000FF") End If // 判斷為主畫面,則進入搜尋敵人畫面! FindPic 0, 0, 1920, 1080, "Attachment:\MissionFlag.bmp", 0.5, intX, intY If intX > 0 And intY > 0 Then // 重置補兵時間判斷 AddSoldier="" SoldierTime = "" // 執行進入搜尋敵人視窗副程式 Call Search End If // 判斷為搜尋敵人畫面則進入戰鬥畫面 FindPic 1573, 974, 1661, 1012, "Attachment:\AttackFlag.bmp", 0.5, intX, intY If intX > 0 And intY > 0 Then Call Plugin.Msg.ShowScrTXT(561, 1045, 1330, 1073, "SUB : BATTLE!!!", "0000FF") // 壓進入戰鬥按鈕 Delay 200 MoveTo 1622, 951 Delay 200 LeftClick 1 Delay 200 End If // 確認為戰鬥畫面(判斷是否有結束戰鬥按鈕) FindPic 1670, 20, 1793, 56, "Attachment:\CloseBattle.bmp", 0.5, intX, intY If intX > 0 And intY > 0 Then // 使用轟炸機 MoveTo 1755, 958 Delay 200 LeftClick 1 Delay 200 MoveTo 960, 490 Delay 200 LeftClick 1 Delay 500 // 點選部隊 MoveTO 168,812 Delay 500 LeftClick 1 Delay 500 // 點地圖右上角 MoveTo 287,20 // 發送部隊 For 10 Delay 200 LeftClick 1 Next Delay 2200 // 醫療 MoveTO 1363,948 Delay 200 LeftClick 1 Delay 200 MoveTo 287,20 Delay 200 LeftClick 1 Delay 200 // 加速 MoveTO 1485,808 Delay 200 LeftClick 1 Delay 200 MoveTo 287,20 Delay 200 LeftClick 1 Delay 1000 End If Goto START // _____ _ _______ // | ___| \ | | _ \ // | |__ | \| | | | | // | __|| . ` | | | | // | |___| |\ | |/ / // \____/\_| \_/___/ // // 到此主程式結束,讓執行序回到最前面,形成一個迴圈 // _ _____ _____ _____ ___ ______________ _____ // | | | _ / ___|_ _| | \/ | _ | _ \ ___| // | | | | | \ `--. | | | . . | | | | | | | |__ // | | | | | |`--. \ | | | |\/| | | | | | | | __| // | |___\ \_/ /\__/ / | | | | | \ \_/ / |/ /| |___ // \_____/\___/\____/ \_/ \_| |_/\___/|___/ \____/ // // 故意輸模式 Sub Lost_Mode Rem Lost Call Plugin.Msg.ShowScrTXT(561, 1045, 1330, 1073, "故意輸模式。。。", "0000FF") // 檢查執行時間是否過長,超過 2 分鐘跳出 If datediff("n", LostModeTime, Now) >= 2 Then Goto START End If //判斷是否為主畫面 FindPic 0, 0, 1920, 1080, "Attachment:\MissionFlag.bmp", 0.5, intX, intY If intX > 0 And intY > 0 Then // MessageBox "主畫面" // 進入戰鬥預備畫面 MoveTo 1773,825 LeftClick 1 Delay 200 End if // 判斷為搜尋敵人畫面則進入戰鬥畫面 FindPic 1573, 974, 1661, 1012, "Attachment:\AttackFlag.bmp", 0.5, intX, intY If intX > 0 And intY > 0 Then MoveTo 1624,951 LeftClick 1 End If // 判斷是否為攻擊頁面 // 確定左上角是否為紅色等級標示 FindPic 1670, 20, 1793, 56, "Attachment:\CloseBattle.bmp", 0.5, intX, intY If intX > 0 And intY > 0 Then MoveTo 1747,955 LeftClick 1 Delay 200 MoveTo 1083,289 LeftClick 1 Delay 200 MoveTo 1736,38 LeftClick 1 Delay 200 End If // 戰鬥失敗畫面 FindPic 902, 526, 961, 568, "Attachment:\Hurt.bmp", 0.5, intX, intY If intX > 0 And intY > 0 Then MoveTo 965, 867 Delay 200 LeftClick 1 Delay 200 /* MainScreen = 0 BattleScreen = 0 AttackScreen = 0 */ WinFlag=1 End If If WinFlag = 0 Then Goto Lost Else Goto START End If End Sub
其它資源整理:
圖檔附件:
[wpba-attachment-list]