uitx_basedef按鍵精靈是套可幫助您自動完成電腦既定任務的軟體,在遊戲上,亦可以幫助您做一些重複性的動作。此篇文章,小路將以手機遊戲「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]

Comments are closed.

Post Navigation