監(jiān)視游戲窗口,實現(xiàn)掉線重連
高高興興寫腳本,開開心心掛游戲~但是,網(wǎng)絡(luò)渣的時候游戲掉線怎么辦?(游戲掉線還有可能是游戲服務(wù)器超負(fù)荷,例如熱門游戲剛開服的時候,那掉線掉得臉都綠了。)晚上掛機(jī),早上起來看成果,映入眼簾的居然是游戲掉
高高興興寫腳本,開開心心掛游戲~但是,網(wǎng)絡(luò)渣的時候游戲掉線怎么辦?(游戲掉線還有可能是游戲服務(wù)器超負(fù)荷,例如熱門游戲剛開服的時候,那掉線掉得臉都綠了。)晚上掛機(jī),早上起來看成果,映入眼簾的居然是游戲掉線提示~天啊~這不僅僅是損失一點點掛機(jī)成果,最傷的還是我們的心情。掉線!掉線!多么煩躁!掉了就給我自己乖乖重新連上!那么,用腳本該如何實現(xiàn)掉線重連的功能呢?一起來了解看看。
腳本思路
腳本啟動之后,循環(huán)判斷游戲是否掉線,如果掉線則重登游戲,沒有掉線則繼續(xù)循環(huán)判斷是否掉線。
步驟
1. 監(jiān)視游戲窗口。循環(huán)找掉線提示。監(jiān)視游戲窗口的方法:
1. 在主程序內(nèi)調(diào)用子程序無限循環(huán)判斷
2. 啟動單獨的線程來監(jiān)視。小編拿武尊游戲做個掉線重連的例子,這里我們選擇單獨線程的方式來監(jiān)控。
2. 線程相關(guān)命令:
- BeginThread 啟動新線程
- StopThread 停止線程運行
- PauseThread 暫停線程運行
- ContinueThread 繼續(xù)線程運行
3. 啟動"監(jiān)視"線程代碼:
```
線程ID BeginThread(監(jiān)視)
Sub 監(jiān)視
//判斷游戲是否掉線
End Sub
```
在線程中我們要循環(huán)查看游戲窗口中有沒有出現(xiàn)掉線窗口,我們可以通過找字或者找圖的方法,找掉線窗口里的標(biāo)識圖文。
找圖技巧
1. 首先將運行游戲的瀏覽器大小調(diào)整到固定大小。本例子中瀏覽器的窗口大小為:1024,900,并且隱藏了瀏覽器收藏欄。
2. 把瀏覽器窗口先移動到屏幕左上角坐標(biāo)(0,0)位置。
3. 使用抓抓工具將瀏覽器窗口整個抓取。
4. 在抓抓圖像里點擊掉線窗口的左上角和右下角獲取找圖的范圍。
5. 經(jīng)過第四步獲取到的找圖的范圍坐標(biāo)是相對于屏幕的,如果瀏覽器窗口移動了,找圖范圍就是錯誤的。所以,需要將屏幕坐標(biāo)轉(zhuǎn)換為瀏覽器窗口坐標(biāo)。
掉線處理邏輯
1. 找掉線窗口,找到則點擊確定。
2. 找武尊首頁的標(biāo)識圖片,例子中小編找的是"武尊首頁"這幾個文字的截圖。
3. 如果找到這張圖,說明是第二種情況,掉線太久了之后返回到武尊游戲首頁。點擊上次進(jìn)入的區(qū)服。
4. 如果沒有找武尊首頁的截圖,則開始找角色界面里的"進(jìn)入游戲"按鈕截圖。找到則點擊。
通過以上步驟,我們就可以實現(xiàn)武尊游戲掉線重連的功能了。
掉線重連腳本
```
Dim Env sRect //定義環(huán)境變量 -因為這個值是要傳遞到線程中的,如果是局部變量是不支持線程的。
PutAttachment "c:a*.bmp" //釋放圖片
hwnd () //獲取鼠標(biāo)指向窗口的窗口句柄
Call (hwnd, 1024, 900)//設(shè)置窗口大小為1024,900
sRect (Hwnd) //獲取窗口客戶區(qū)大小
//////////////////////////////////////////////////////////
BeginThread 監(jiān)視
Sub 監(jiān)視
MyArray Split(sRect, "|")
Do //循環(huán)找掉線窗口,找到的話才進(jìn)入第二個循環(huán)
L Clng(MyArray(0)): T Clng(MyArray(1)) //獲取窗口左上角坐標(biāo)
FindPic L 300,T 413,L 721,T 611,"C:掉線.bmp", 0.9,intX,intY //找掉線重連圖片
If intX > 0 And intY > 0 Then
MoveTo L 568, T 566
LeftClick 1
Do //第二個循環(huán),循環(huán)找是不是首頁,是的話點擊進(jìn)入?yún)^(qū)服,不是的話則進(jìn)入下一個循環(huán)。
FindPic L 9,T 144,L 100,T 195,"C:武尊首頁.bmp", 0.9,intX,intY //找游戲首頁里的"武尊首頁"字體圖片 判斷是不是在游戲首頁
If intX > 0 And intY> 0 Then
MoveTo L 72, T 683
LeftClick 1
Delay 200
End If
Do//第三個循環(huán),找角色界面的進(jìn)入游戲按鈕,找到的話則點擊,沒有找到則繼續(xù)查找
FindPic L 414,T 701,L 623,T 780,"C:進(jìn)入游戲.bmp", 0.9,intX,intY //找角色界面里的"進(jìn)入游戲"字體圖片 判斷是不是在角色選擇界面
If intX > 0 And intY > 0 Then
MoveTo intX,intY
LeftClick 1
Delay 200
End If
loop
Loop
End If
Loop
End Sub
```
通過以上代碼,我們可以實現(xiàn)武尊游戲掉線后自動重新登錄的功能。