資源描述:
《漸變顏色判斷攻略--奇跡世界血條顏色的準確識別》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、在奇跡世界里面,血條的顏色是并不是一個固定的數(shù)值。而空血狀態(tài)的下的也不是固定的數(shù)值。我們應(yīng)該怎樣來根據(jù)這個顏色來判斷何時加血呢?比較簡單的辦法是用ifcolor命令的相似顏色??墒怯械臅r候你顏色設(shè)置的不好,并不能準確的來判定。其實還有更準確點的辦法。讓我們先來分析一下奇跡世界的血條在1024*768分辨率下,血條的起始坐標是87,11對應(yīng)的顏色是#007108??終點坐標是295,11對應(yīng)的顏色是#00B00C再看一段其他坐標點對應(yīng)的顏色數(shù)值:104,11=007708105,11=007708106,11=007708107,11=007808108,11=007808109,11=0
2、07808110,11=007808111,11=007908112,11=007909113,11=007909114,11=007A09115,11=007A09116,11=007A09117,11=007B09這些是滿血時候坐標的一段變化情況。大家有沒有發(fā)現(xiàn)其中的規(guī)律,也就是這個血條是在一定范圍內(nèi)逐漸變化的。直接看血條的顏色我們也能看出來。是一個線性漸變的血條。其中顏色的最低值是#007108最高值是#00B00C拿#007108來說,其中的00是Blue的值,71是Green的值,08是Red的值我們可以用VBS里面的RGB函數(shù)來求出這個顏色的具體RGB值是多少具體用法是:RG
3、B(red,green,blue)??其中redgreenblue必須是0-255之間的整數(shù),所以我們要先把他們轉(zhuǎn)成10進制的??梢杂孟旅娴拇a來求1.C="007108"2.VBSr=Cint("&H"&Right(c,2))3.VBSg=Cint("&H"&Mid(c,3,2))4.VBSb=Cint("&H"&Left(c,2))5.VBSa=RGB(r,g,b)6.VBSCallMessageBox(a)復(fù)制代碼得到的結(jié)果是#007108=28936#00B00C=45068也就是血條顏色的RGB值范圍是28936-45068之間,也就是如果x坐標在87-295之間,y為11的時
4、候。這個點的RGB在這個范圍之內(nèi)說明是有血狀態(tài)。這樣的話我們可以通過先獲取血量像素點的顏色值來判斷是否為有血狀態(tài),代碼如下:1.VBSCallc=GetPixelColor(x,y)2.VBSr=Cint("&H"&Right(c,2))3.VBSg=Cint("&H"&Mid(c,3,2))4.VBSb=Cint("&H"&Left(c,2))5.VBSa=RGB(r,g,b)6.Ifa>28936anda<450687.KeyPress57,18.EndIf??復(fù)制代碼其實還有更簡單的辦法:大家可以從上面的數(shù)據(jù)看出,血條顏色的B值始終為0。這樣我們只要讀取顏色點的B值就,之后判斷是否
5、為0就可以決定是否加血了。比如我寫的這個腳本1.UserVarHP=60血量為多少時使用快捷鍵9的技能或者藥品加血,0為不使用自動加血2.HPYansheX=87+Int(208*HP/100)3.UserVarYC=200用戶自定義延遲,單位為毫秒4.Rem[繼續(xù)]5.IfHP>06.??VBSCallHPYanshe=GetPixelColor(HPYansheX,11)7.??VBSHPYansheb=Cint("&H"&Left(HPYanshe,2))8.??IfHPYansheb<>09.??????KeyPress57,110.??EndIf11.EndIf12.Delay
6、5013.KeyPress48,114.DelayYC15.Goto[繼續(xù)]復(fù)制代碼血條可以這么來判斷,藍條當然也可以。。具體寫法大家再自己考慮一下吧。