高高興興寫腳本,開開心心掛遊戲~但是,網絡渣的時候遊戲掉線怎麼辦?(遊戲掉線還有可能是遊戲服務器超負荷,例如熱門遊戲剛開服的時候,那掉線掉得臉都綠了。)晚上掛機,早上起來看成果,映入眼簾的居然是遊戲掉線提示~天啊~這不僅僅是損失一點點掛機成果,最傷的還是我們的心情。掉線!掉線!多麼煩躁!掉了就給我自己乖乖重新連上!那麼,用腳本該如何實現掉線重連的功能呢?一起來了解看看。
工具/原料
按鍵精靈2014
方法/步驟
腳本思路
腳本啟動之後,循環判斷遊戲是否掉線,如果掉線則重登遊戲,沒有掉線則繼續循環判斷是否掉線。
步驟
1 、監視遊戲窗口。循環找掉線提示。
監視遊戲窗口的方法:
1、 在主程序內調用子程序無限循環判斷 弊端:如果主程序中有一個地方卡住了,那麼作為監控用的子程序也會卡住,無法再進行監測。2、啟動單獨的線程來監視。
小編拿武尊遊戲做個掉線重連的例子,這裡我們選擇單獨線程的方式來監控。建立一個線程,名作 :監視。
線程相關命令:
命令名稱
BeginThread 同時運行過程
命令功能
新開一個線程運行當前腳本,從指定的過程開始運行
命令參數
過程名
返 回 值
整數型,線程ID
代碼示例:線程ID=BeginThread(監視) //方法1:啟動線程,並且將啟動的線程的id返回給變量線程id BeginThread 監視 //方法2:啟動線程,沒有返回值的寫法 編程好習慣,啟動了線程之後,不需要使用的時候要記得停止線程 。
命令名稱
StopThread 停止線程運行
命令功能
停止某個線程的運行
命令參數
整數型,線程ID編號
返 回 值
無
代碼示例: StopThread 線程ID 這裡的停止是指關閉了線程。如果希望只是暫時停止線程,一會兒還要重新繼續這個線程,可以使用暫停線程的命令
命令名稱
PauseThread 暫停線程運行
命令功能
暫停某個線程的運行
命令參數
整數型,線程ID
返 回 值
無
代碼示例:PauseThread 線程ID 暫停之後想要繼續運行線程,使用繼續線程運行命令。 假設之前的線程是負責往記事本里依次輸入1-100的數字,當輸入到59的時候我們停止了線程,那麼腳本就暫停對記事本輸入。當我們使用繼續線程命令恢復線程運行後,腳本會對記事本繼續輸入,繼續輸入60-100.
命令名稱
ContinueThread 繼續線程運行
命令功能
繼續某個線程的運行
命令參數
整數型,線程ID
返 回 值
無
代碼示例:ContinueThread 線程ID
啟動“監視”線程代碼:
線程ID = BeginThread(監視)
Sub 監視
//判斷遊戲是否掉線
End Sub
在線程中我們要循環查看遊戲窗口中有沒有出現掉線窗口,我們可以通過找字或者找圖的方法,找掉線窗口裡的標識圖文,例子中,小編使用找圖的方法。
武尊掉線提示:
找圖技巧: 1、 首先將運行遊戲的瀏覽器大小調整到固定大小。本例子中瀏覽器的窗口大小為:1024,900 瀏覽器:360瀏覽器 並且隱藏了瀏覽器收藏欄 收藏欄隱藏快捷鍵 ctrl+B 2、 把瀏覽器窗口先移動到屏幕左上角座標(0,0)位置。 3、 使用抓抓工具將瀏覽器窗口整個抓取。 4、在抓抓圖像裡點擊掉線窗口的左上角和右下角獲取找圖的範圍。
左上角
右下角
5、 經過第四步獲取到的找圖的範圍座標是相對於屏幕的,如果瀏覽器窗口移動了,找圖範圍就是錯誤的。所以,需要將屏幕座標轉換為瀏覽器窗口座標。
2、點擊確定重登遊戲
武尊這款遊戲,有的代理平臺支持記錄賬號,有的平臺不支持。也就是說,有的平臺掉線之後不需要再次輸入賬號密碼,而有的則需要。小編今天登錄的是37武尊,這個平臺是有記錄賬號功能的。
37武尊掉線處理有如下兩種情況:1、掉線斷網的時間不長,那麼點擊掉線提示窗口裡的確定之後即會回到,角色選擇界面。這個時候再點擊進入遊戲即可。2、掉線斷網時間過長,點擊掉線提示窗口的確定之後會返回到武尊遊戲的首頁。這個時候需要點擊區服,進入到角色界面之後再點擊進入遊戲。實際上,這兩種情況,我們做三個判斷就可以實現重連。
步驟:1、找掉線窗口,找到則點擊確定。2、找武尊首頁的標識圖片,例子中小編找的是 武尊首頁 這幾個文字的截圖。 3、如果找到這張圖,說明是第二種情況,掉線太久了之後返回到武尊遊戲首頁。 點擊上次進入的區服。
4、如果沒有找武尊首頁 的截圖,則開始找 角色界面裡的 進入遊戲 按鈕截圖。找到則點擊。
代碼
DimEnv sRect //定義環境變量 -因為這個值是要傳遞到線程中的,如果是局部變量是不支持線程的。
PutAttachment "c:\","*.bmp" //釋放圖片
hwnd = Plugin.Window.MousePoint() //獲取鼠標指向窗口的窗口句柄
Call Plugin.Window.Size(hwnd, 1024, 900)//設置窗口大小為1024,900
sRect = Plugin.Window.GetClientRect(Hwnd) //獲取窗口客戶區大小
//////////////////////////////////////////////////////////
BeginThread 監視
Sub 監視
MyArray = Split(sRect, " ")
Do //循環找掉線窗口,找到的話才進入第二個循環
L = Clng(MyArray(0)): T = Clng(MyArray(1)) //獲取窗口左上角座標
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 //第二個循環,循環找是不是首頁,是的話點擊進入區服,不是的話則進入下一個循環。
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//第三個循環,找角色界面的進入遊戲按鈕,找到的話則點擊,沒有找到則繼續查找
FindPic L+414,T+701,L+623,T+780,"C:\進入遊戲.bmp",0.9,intX,intY //找角色界面裡的 進入遊戲 字體圖片 判斷是不是在角色選擇界面
If intX > 0 And intY > 0 Then
MoveTo intX,intY
LeftClick 1
Delay 200
End If
loop
Loop
End If
Loop
End sub