[按鍵精靈]火影世界自動(dòng)周環(huán)任務(wù),以及后臺(tái)思想


//游戲網(wǎng)址naruto.newxixi.com
//代碼如下
//屏幕分辨率1920*1080,星愿瀏覽器窗口最大化,縮放80%,顯示書簽欄
Dim clr, clr1a,clr1b,clr2a,clr2b,clr3a,clr3b,clr4a,clr4b,clr5a,clr5b,clrm,clrn,clrN1,clrN2,clrN3
Dim hwnd
Hwnd = Plugin.Window.Find(0,"火影世界官網(wǎng)-火影忍者遊戲官網(wǎng)-橫版網(wǎng)頁遊戲扛鼎之作-無需下載終身免費(fèi)-naruto.xixigames.com - Twinkstar")//(類名,"標(biāo)題")
TracePrint hwnd
Call 找富岳
Delay 500
Do While true//判斷接任務(wù)
? ? clr = GetPixelColor(897, 642)'
? ? If clr = "8F5111"Then //'blue
? ? ? ? //當(dāng)循環(huán)條件成立時(shí)---執(zhí)行以下程序---離開循環(huán)體?
? ? ? ? Call Plugin.Bkgnd.LeftClick(Hwnd, 897, 636)//'接任務(wù)
? ? ? ? Delay 1000
? ? ? ? Rem 情況判斷
? ? ? ? clrm=GetPixelColor(1024,519 )'
? ? ? ? clrn=GetPixelColor(1023,527)'
? ? ? ? If clrm = "008700" and clrn = "005900" Then //難度為1,無法刷新,跳過情況判斷
? ? ? ? ? ? Goto 難度為1不再刷新
? ? ? ? Else//難度不為1,則判斷情況
? ? ? ? ? ? //**********情況1*****c4自爆者 跳過***************************//
? ? ? ? ? ? clr1a = GetPixelColor(852,535)'
? ? ? ? ? ? clr1b = GetPixelColor(853, 535) '
? ? ? ? ? ? If clr1a = "008300" and clr1b = "005A00" Then //'如果是c4怪,則降低任務(wù)難度.
? ? ? ? ? ? ? ? Call 降低難度并確認(rèn)使用乾坤密卷
? ? ? ? ? ? ? ? Delay 1100
? ? ? ? ? ? End If
? ? ? ? ? ? //**********情況2***犬冢牙 跳過****************************//
? ? ? ? ? ? clr2a = GetPixelColor(830,551)'
? ? ? ? ? ? clr2b = GetPixelColor(826, 561)'
? ? ? ? ? ? If clr2a = "00C400" and clr2b = "00ED00" Then //'如果是犬冢牙,則降低任務(wù)難度.
? ? ? ? ? ? ? ? Call 降低難度并確認(rèn)使用乾坤密卷
? ? ? ? ? ? ? ? Delay 1100
? ? ? ? ? ? End If
? ? ? ? ? ? //**********情況3 御手洗紅豆 跳過***********************//
? ? ? ? ? ? clr3a = GetPixelColor(826,552)'
? ? ? ? ? ? clr3b = GetPixelColor(833, 560)'
? ? ? ? ? ? If clr3a = "00A300" and clr3b = "00CF00" Then //'如果是御手洗紅豆,則降低任務(wù)難度.
? ? ? ? ? ? ? ? Call 降低難度并確認(rèn)使用乾坤密卷
? ? ? ? ? ? ? ? Delay 1100
? ? ? ? ? ? End If
? ? ? ? ? ? //************情況4 日向雛田 跳過**********************//
? ? ? ? ? ? clr4a = GetPixelColor(827,550)'
? ? ? ? ? ? clr4b = GetPixelColor(834,561)'
? ? ? ? ? ? If clr4a = "008400" and clr4b = "00E300" Then //'如果是日向雛田,則降低任務(wù)難度.
? ? ? ? ? ? ? ? Call 降低難度并確認(rèn)使用乾坤密卷
? ? ? ? ? ? ? ? Delay 1100
? ? ? ? ? ? End If
? ? ? ? ? ? //************情況5 森乃伊比喜 跳過**********************//
? ? ? ? ? ? clr5a = GetPixelColor(826,551)'
? ? ? ? ? ? clr5b = GetPixelColor(833,559)'
? ? ? ? ? ? If clr5a = "008400" and clr5b = "00C400" Then //'如果是森乃伊比喜,則降低任務(wù)難度.
? ? ? ? ? ? ? ? Call 降低難度并確認(rèn)使用乾坤密卷
? ? ? ? ? ? ? ? Delay 1100
? ? ? ? ? ? End If
? ? ? ? End If
? ? ? ? clr1a = GetPixelColor(852,535)'
? ? ? ? clr1b = GetPixelColor(853, 535)'
? ? ? ? clr2a = GetPixelColor(830,551)'
? ? ? ? clr2b = GetPixelColor(826, 561)'
? ? ? ? clr3a = GetPixelColor(826,552)'
? ? ? ? clr3b = GetPixelColor(833, 560)'
? ? ? ? clr4a = GetPixelColor(827,550)'
? ? ? ? clr4b = GetPixelColor(834, 561)'
? ? ? ? clr5a = GetPixelColor(826,551)'
? ? ? ? clr5b = GetPixelColor(833,559)'
? ? ? ? If clr1a = "008300" and clr1b = "005A00" Then?
? ? ? ? ? ? Goto 情況判斷
? ? ? ? ElseIf clr2a = "00C400" and clr2b = "00ED00" Then
? ? ? ? ? ? Goto 情況判斷
? ? ? ? ElseIf clr3a = "00A300" and clr3b = "00CF00" Then
? ? ? ? ? ? Goto 情況判斷
? ? ? ? ElseIf clr4a = "008400" and clr4b = "00E300" Then
? ? ? ? ? ? Goto 情況判斷
? ? ? ? ElseIf clr5a = "008400" and clr5b = "00C400" Then
? ? ? ? ? ? Goto 情況判斷
? ? ? ? End If
? ? ? ? //*********************************************//
? ? ? ? Delay 5000
? ? ? ? Rem 難度為1不再刷新
? ? ? ? Call Plugin.Bkgnd.LeftClick(Hwnd, 959, 753)//開始任務(wù),之前加一條如果是....那么刷新任務(wù)? ? ? ?
? ? ? ? Exit do? ?
? ? End If
? ? Delay 2000
Loop
Do While true//判斷NPC對(duì)話
? ? clrN1 = GetPixelColor(883, 630)
? ? clrN2 = GetPixelColor(880, 621)
? ? clrN3 = GetPixelColor(880, 611)
? ? If clrN1 = "008C00" Then?
? ? ? ? Call Plugin.Bkgnd.LeftClick(Hwnd, 883, 625)//1.1完成對(duì)話
? ? ? ? Delay 100
? ? ? ? Call Plugin.Bkgnd.LeftClick(Hwnd, 829, 189)//離開npc? ??
? ? ? ? Delay 2000
? ? ? ? Exit do
? ? ElseIf clrN2 = "008900" Then
? ? ? ? Call Plugin.Bkgnd.LeftClick(Hwnd, 880, 615)//1.2完成對(duì)話
? ? ? ? Delay 100
? ? ? ? Call Plugin.Bkgnd.LeftClick(Hwnd, 829, 189)//離開npc? ??
? ? ? ? Delay 2000
? ? ? ? Exit do
? ? ElseIf clrN3 = "008700" Then
? ? ? ? Call Plugin.Bkgnd.LeftClick(Hwnd, 880, 606)//1.3完成對(duì)話
? ? ? ? Delay 100
? ? ? ? Call Plugin.Bkgnd.LeftClick(Hwnd, 829, 189)//離開npc? ??
? ? ? ? Delay 2000
? ? ? ? Exit do
? ? End If??
Loop
Call 傳送木葉
Delay 3500
//*************子程序↓************************//
Sub 找富岳
? ? Call Plugin.Bkgnd.LeftClick(Hwnd, 1791, 287)//地圖
? ? Delay 200
? ? Call Plugin.Bkgnd.LeftClick(Hwnd, 1183, 683)//富岳
? ? Delay 100
? ? Call Plugin.Bkgnd.LeftClick(Hwnd, 1228, 799)//尋至此點(diǎn)
? ? Delay 100
? ? Call Plugin.Bkgnd.LeftClick(Hwnd, 1791, 287)//地圖關(guān)閉
End Sub
Sub 傳送木葉
? ? Call Plugin.Bkgnd.LeftClick(Hwnd, 1790, 288)//地圖
? ? Delay 500
? ? Call Plugin.Bkgnd.LeftClick(Hwnd, 688, 386)//世界地圖
? ? Delay 1500
? ? Call Plugin.Bkgnd.LeftClick(Hwnd, 906, 603)//木葉
? ? Delay 300
? ? Call Plugin.Bkgnd.LeftClick(Hwnd, 859, 669)//確定
? ? Delay 1200
End Sub
Sub 降低難度并確認(rèn)使用乾坤密卷
? ? Call Plugin.Bkgnd.LeftClick(Hwnd, 1073, 546)'降低難度
? ? Delay 500
? ? Call Plugin.Bkgnd.LeftClick(Hwnd, 892, 667)'確定,使用乾坤密卷
? ? Delay 500
End Sub
//*************子程序↑************************//
RestartScript
//********代碼部分結(jié)束,以下為解釋說明部分****************************//
代碼中的命令主要有兩部分,點(diǎn)取色和鼠標(biāo)在某坐標(biāo)位置單擊.
我在下文中會(huì)說明為什么要取點(diǎn),以及取完點(diǎn)怎么用.
先從最開始取點(diǎn)代碼說起,我按照從前往后排一下序.
判斷接取任務(wù)
判斷任務(wù)難度是否為1,若不是進(jìn)行情況判斷;若是則跳過情況判斷;
3.1 情況一:C4自爆者,跳過(即刷新任務(wù))
3.2?情況二:犬冢牙,跳過
3.3情況三:御手洗紅豆 跳過
3.4情況四:日向雛田 跳過
3.5情況五:森乃伊比喜 跳過
4.若仍存在以上情況,回到情況一,重復(fù)判斷:否則開始任務(wù)
5.循環(huán)語句內(nèi)IF判斷任務(wù)是否結(jié)束(是否找到任務(wù)回復(fù)人NPC),若是,退出循環(huán),傳送回木葉村:若不是繼續(xù)循環(huán)判斷
代碼中像素點(diǎn)所取位置如下圖:
1.判斷接取任務(wù)

clr = GetPixelColor(897, 642)
?If clr = "8F5111"Then //'blue
2.判斷任務(wù)難度是否為1,若不是進(jìn)行情況判斷;若是則跳過情況判斷;

? ? ? ? clrn=GetPixelColor(1023,527)'
? ? ? ? If clrm = "008700" and clrn = "005900" Then //難度為1,無法刷新,跳過情況判斷
? ? ? ? ? ? Goto 難度為1不再刷新

? ? ? ? clrn=GetPixelColor(1023,527)'
? ? ? ? If clrm = "008700" and clrn = "005900" Then //難度為1,無法刷新,跳過情況判斷
? ? ? ? ? ? Goto 難度為1不再刷新
3.1情況一:C4自爆者,跳過(即刷新任務(wù))

? ? ? ? ? ? clr1b = GetPixelColor(853, 535) '
? ? ? ? ? ? If clr1a = "008300" and clr1b = "005A00" Then //'如果是c4怪,則降低任務(wù)難度.
? ? ? ? ? ? ? ? Call 降低難度并確認(rèn)使用乾坤密卷
? ? ? ? ? ? ? ? Delay 1100
? ? ? ? ? ? End If

? ? ? ? ? ? clr1b = GetPixelColor(853, 535) '
? ? ? ? ? ? If clr1a = "008300" and clr1b = "005A00" Then //'如果是c4怪,則降低任務(wù)難度.
? ? ? ? ? ? ? ? Call 降低難度并確認(rèn)使用乾坤密卷
? ? ? ? ? ? ? ? Delay 1100
? ? ? ? ? ? End If
3.2情況二:犬冢牙,跳過

? ? ? ? ? ? clr2b = GetPixelColor(826, 561)'
? ? ? ? ? ? If clr2a = "00C400" and clr2b = "00ED00" Then //'如果是犬冢牙,則降低任務(wù)難度.
? ? ? ? ? ? ? ? Call 降低難度并確認(rèn)使用乾坤密卷
? ? ? ? ? ? ? ? Delay 1100
? ? ? ? ? ? End If

? ? ? ? ? ? clr2b = GetPixelColor(826, 561)'
? ? ? ? ? ? If clr2a = "00C400" and clr2b = "00ED00" Then //'如果是犬冢牙,則降低任務(wù)難度.
? ? ? ? ? ? ? ? Call 降低難度并確認(rèn)使用乾坤密卷
? ? ? ? ? ? ? ? Delay 1100
? ? ? ? ? ? End If
3.3情況3 御手洗紅豆 跳過

? ? ? ? ? ? clr3b = GetPixelColor(833, 560)'
? ? ? ? ? ? If clr3a = "00A300" and clr3b = "00CF00" Then //'如果是御手洗紅豆,則降低任務(wù)難度.
? ? ? ? ? ? ? ? Call 降低難度并確認(rèn)使用乾坤密卷
? ? ? ? ? ? ? ? Delay 1100
? ? ? ? ? ? End If

? ? ? ? ? ? clr3b = GetPixelColor(833, 560)'
? ? ? ? ? ? If clr3a = "00A300" and clr3b = "00CF00" Then //'如果是御手洗紅豆,則降低任務(wù)難度.
? ? ? ? ? ? ? ? Call 降低難度并確認(rèn)使用乾坤密卷
? ? ? ? ? ? ? ? Delay 1100
? ? ? ? ? ? End If
3.4情況4 日向雛田 跳過

? ? ? ? ? ? clr4b = GetPixelColor(834,561)'
? ? ? ? ? ? If clr4a = "008400" and clr4b = "00E300" Then //'如果是日向雛田,則降低任務(wù)難度.
? ? ? ? ? ? ? ? Call 降低難度并確認(rèn)使用乾坤密卷
? ? ? ? ? ? ? ? Delay 1100
? ? ? ? ? ? End If

? ? ? ? ? ? clr4b = GetPixelColor(834,561)'
? ? ? ? ? ? If clr4a = "008400" and clr4b = "00E300" Then //'如果是日向雛田,則降低任務(wù)難度.
? ? ? ? ? ? ? ? Call 降低難度并確認(rèn)使用乾坤密卷
? ? ? ? ? ? ? ? Delay 1100
? ? ? ? ? ? End If
3.5情況5 森乃伊比喜 跳過

? ? ? ? ? ? clr5b = GetPixelColor(833,559)'
? ? ? ? ? ? If clr5a = "008400" and clr5b = "00C400" Then //'如果是森乃伊比喜,則降低任務(wù)難度.
? ? ? ? ? ? ? ? Call 降低難度并確認(rèn)使用乾坤密卷
? ? ? ? ? ? ? ? Delay 1100
? ? ? ? ? ? End If

? ? ? ? ? ? clr5b = GetPixelColor(833,559)'
? ? ? ? ? ? If clr5a = "008400" and clr5b = "00C400" Then //'如果是森乃伊比喜,則降低任務(wù)難度.
? ? ? ? ? ? ? ? Call 降低難度并確認(rèn)使用乾坤密卷
? ? ? ? ? ? ? ? Delay 1100
? ? ? ? ? ? End If
4.若仍存在以上情況,回到情況一,重復(fù)判斷:否則開始任務(wù)
clr1a = GetPixelColor(852,535)'
? ? ? ? clr1b = GetPixelColor(853, 535)'
? ? ? ? clr2a = GetPixelColor(830,551)'
? ? ? ? clr2b = GetPixelColor(826, 561)'
? ? ? ? clr3a = GetPixelColor(826,552)'
? ? ? ? clr3b = GetPixelColor(833, 560)'
? ? ? ? clr4a = GetPixelColor(827,550)'
? ? ? ? clr4b = GetPixelColor(834, 561)'
? ? ? ? clr5a = GetPixelColor(826,551)'
? ? ? ? clr5b = GetPixelColor(833,559)'
? ? ? ? If clr1a = "008300" and clr1b = "005A00" Then?
? ? ? ? ? ? Goto 情況判斷
? ? ? ? ElseIf clr2a = "00C400" and clr2b = "00ED00" Then
? ? ? ? ? ? Goto 情況判斷
? ? ? ? ElseIf clr3a = "00A300" and clr3b = "00CF00" Then
? ? ? ? ? ? Goto 情況判斷
? ? ? ? ElseIf clr4a = "008400" and clr4b = "00E300" Then
? ? ? ? ? ? Goto 情況判斷
? ? ? ? ElseIf clr5a = "008400" and clr5b = "00C400" Then
? ? ? ? ? ? Goto 情況判斷
? ? ? ? End If
5.循環(huán)語句內(nèi)IF判斷任務(wù)是否結(jié)束(是否找到任務(wù)回復(fù)人NPC),若是,退出循環(huán),傳送回木葉村:若不是繼續(xù)循環(huán)判斷
5.1.1回復(fù)任務(wù)時(shí)只有一行
clrN1 = GetPixelColor(883, 630)
? ? clrN2 = GetPixelColor(880, 621)
? ? clrN3 = GetPixelColor(880, 611)

? ? ? ? Call Plugin.Bkgnd.LeftClick(Hwnd, 883, 625)//1.1完成對(duì)話
? ? ? ? Delay 100
? ? ? ? Call Plugin.Bkgnd.LeftClick(Hwnd, 829, 189)//離開npc ? ?
? ? ? ? Delay 2000
? ? ? ? Exit do
5.1.2回復(fù)任務(wù)時(shí)有兩行

? ? ? ? Call Plugin.Bkgnd.LeftClick(Hwnd, 880, 615)//1.2完成對(duì)話
? ? ? ? Delay 100
? ? ? ? Call Plugin.Bkgnd.LeftClick(Hwnd, 829, 189)//離開npc ? ?
? ? ? ? Delay 2000
? ? ? ? Exit do
5.1.3回復(fù)任務(wù)時(shí)有三行

? ? ? ? Call Plugin.Bkgnd.LeftClick(Hwnd, 880, 606)//1.3完成對(duì)話
? ? ? ? Delay 100
? ? ? ? Call Plugin.Bkgnd.LeftClick(Hwnd, 829, 189)//離開npc ? ?
? ? ? ? Delay 2000
? ? ? ? Exit do
? ? End If
任務(wù)結(jié)束后返回木葉.沒有詳細(xì)解釋的部分不難,結(jié)合代碼部分的注釋自己可以理解.
//###################修改記錄########################################//
2021.10.05
這種腳本屬于圖色腳本(文中代碼僅涉及到找色,沒有找圖),更高級(jí)則是內(nèi)存腳本。不過涉及到內(nèi)存風(fēng)險(xiǎn)也更大。
兼容問題:
想要讓腳本換一臺(tái)電腦仍可以運(yùn)行,就要考慮到兼容問題(比如窗口大小、頁面縮放)。一般來說開發(fā)者開發(fā)時(shí)用的哪款瀏覽器,就讓用戶用那款瀏覽器,這樣能省去很多麻煩。對(duì)于圖色腳本來說最大的問題就是這個(gè)色的問題。由于每臺(tái)電腦顯卡不同,對(duì)于同一點(diǎn)的顏色有一定偏差,如果必須要精準(zhǔn)找色,那么只能讓用戶截好圖(當(dāng)然是*.bmp格式,手機(jī)端是*.png格式)打包發(fā)給制作者去做;如果允許顏色有偏差就可以設(shè)置偏色(同理,如果這個(gè)點(diǎn)的顏色是動(dòng)態(tài)變化的也可以設(shè)置偏色)。與偏色有一個(gè)類似的東西叫模糊度,他倆的區(qū)別可以理解為前者是對(duì)顏色設(shè)置容差,后者是圖片整體的模糊程度。
經(jīng)過我測(cè)試,很多瀏覽器(如chrome、edge、星愿)都綁定窗口后一片黑,可能是因?yàn)橛写翱诒Wo(hù),也就沒法做后臺(tái)圖色腳本,而有一款是可以的——搜狗瀏覽器。
文章中代碼是前臺(tái)找色 后臺(tái)按鍵,總體還是前臺(tái)腳本。而我是對(duì)全局截圖找的色,所以換一臺(tái)電腦估計(jì)腳本就不能用了。(這里本該用窗口截圖,但當(dāng)時(shí)還沒找到可以綁定窗口的瀏覽器,(用的星愿瀏覽器)一截圖就全黑,沒法操作,所以就用了全局截圖)。
搜狗瀏覽器既可以綁定窗口,又支持flash(主要用來玩4399以及其他頁游)。但最新版的我試了下flash有些問題,所以我用了8.幾版本的,是從搜狗論壇下載的,論壇地址我會(huì)放在評(píng)論區(qū)。
后臺(tái)問題:
一般寫后臺(tái)圖色腳本我用大漠插件,所以說下使用大漠插件寫的大致流程:(以下都是寫在代碼中的)
注冊(cè)大漠插件——綁定窗口——使用大漠插件內(nèi)的鍵鼠、圖色命令(綁定窗口大漠的命令即為后臺(tái)命令)——腳本停止前加上解除綁定窗口命令用來釋放CPU。
注意:不要頻繁的綁定窗口,最起碼也要等到上一個(gè)綁定結(jié)束再綁定下一個(gè)。
用BindwindowEx命令,display用dx2模式,mouse和keyboard用dx模式,public用dx.public.active.message模式,最后的參數(shù)mode用4。
做腳本以及做完后運(yùn)行時(shí)都要記住:不要把窗口最小化,否則識(shí)別不到,一定要把窗口露出一部分
//################################################################//
如果你也有想法,歡迎在評(píng)論區(qū)留言.
如果覺得寫的還不錯(cuò),歡迎點(diǎn)贊,投幣,收藏,謝謝!