大漠插件字庫(kù)原理介紹_第1頁
大漠插件字庫(kù)原理介紹_第2頁
大漠插件字庫(kù)原理介紹_第3頁
大漠插件字庫(kù)原理介紹_第4頁
大漠插件字庫(kù)原理介紹_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、首先說明下大漠綜合工具制作字庫(kù)的過程和原理1.截取你所需要的圖片2.點(diǎn)擊你所需要字的顏色3.點(diǎn)擊提取點(diǎn)陣4.輸入字符 按回車生成字庫(kù)具體的原理我不好說,但是就我的理解是:對(duì)圖片中不符合指定顏色的部分去除掉,然后二值化獲取點(diǎn)陣,點(diǎn)陣也就是這些顏色的分布規(guī)律,二值化就是黑白兩色,RGB格式中黑色"000000"白色"ffffff"由于我的腳本在別人電腦上運(yùn)行的時(shí)候經(jīng)常失效,今天改成16位色后我機(jī)器上運(yùn)行也失效了,而我這個(gè)腳本主要采用的就是大漠插件的找字功能,我以為是機(jī)器間的色偏造成的,一直想法子算色偏,但是我失敗了。后來我想起論壇上有個(gè)帖子專門講過同色系的R

2、GB格式中R值是不變的(不好意思忘了作者了,在這里致謝)于是我就在大漠綜合工具的色偏處輸入了00ffff結(jié)果是在16位色環(huán)境下,大漠綜合工具中二值化區(qū)域內(nèi)的字顯示的跟我在32位色環(huán)境下做的一模一樣,接著我提取點(diǎn)陣,制作字庫(kù),進(jìn)行調(diào)試,命令格式如下:dm_ret =dm.FindStr(0,0,978,585, "碼", "ffd463-00ffff", 1.0, x1, y1)If x1 >= 0 Then     MessageBox x1 & y1End If準(zhǔn)確的彈出了x,y的坐標(biāo)值接著我換32位色做同樣

3、的調(diào)試,顯示結(jié)果與16位色下相同,我測(cè)了坐標(biāo)正好是我要找的字的左上角經(jīng)多次測(cè)試發(fā)現(xiàn)這個(gè)方法中字色的R值必須為FF或00(至于F1,01等未測(cè)試,有興趣的朋友可以試試)慶幸啊以后找字可以不考慮偏色了 呵呵 再說了考慮我也不會(huì)算具體原理我也不是很懂,但是我估計(jì)應(yīng)該是:我比較了點(diǎn)陣中R值相同的所有點(diǎn),取得符合二值化點(diǎn)陣區(qū)域內(nèi)所有的點(diǎn)造成的再次提醒 此方法只適合R值為00,F(xiàn)F的 其他位置相同的未測(cè)試當(dāng)然這么做效率是低了點(diǎn),但是在我看來腳本應(yīng)該是:穩(wěn)定性>通用性>執(zhí)行效率,畢竟腳本也是你編寫的一種軟件嗎鮮花,銀幣在哪 拿來啊 呵呵簡(jiǎn)單說下后臺(tái)操作的方法,先判斷該窗口是否支持后臺(tái),用下面的語

4、句:If Hwmd<>0 thenMessagebox "可以"ElseMessagebox "不可以"End if然后把下面的放在腳本開頭/下面接自己的代碼首先后臺(tái)一點(diǎn)是要有句柄、這個(gè)很簡(jiǎn)單第一步我們先打開抓抓,接著點(diǎn)擊句柄 接著把鼠標(biāo)移到你所要后臺(tái)的窗口上,按下F8 是否看見當(dāng)前窗口句柄那里出現(xiàn)一串?dāng)?shù)字? 把它復(fù)制下來第二步我們點(diǎn)擊圖像,在指定窗口句柄那里打鉤 接著把數(shù)字復(fù)制進(jìn)去 按下抓圖鍵(Print Screen SysRq) 是否只看見你要后臺(tái)的的圖像呢? 對(duì)著你所需要的坐標(biāo)按右鍵加入點(diǎn)1 記住坐標(biāo) 然后加入到后臺(tái)鼠標(biāo)點(diǎn)擊里面就行了

5、作業(yè):設(shè)計(jì)一個(gè)在記事本上后臺(tái)打字"1"的循環(huán)代碼要求:能循環(huán)多開rem aDelay 500goto a注:8.0寫的 如只有7的同學(xué) 自己翻譯 不太難的回復(fù)后能見教程本帖隱藏的內(nèi)容需要回復(fù)才可以瀏覽第一步:將禁止腳本重復(fù)運(yùn)行 選為否(在是否循環(huán)的下面)第二步:設(shè)置啟動(dòng)熱鍵為F2(以免與記事本熱鍵沖突)第三步:保存退出(或選調(diào)試)第四步:打開第一個(gè)記事本文件,鼠標(biāo)指中按F2,此時(shí)可看見 后臺(tái)打的111出現(xiàn) 最小化第五步:打開第二個(gè)記事本文件,鼠標(biāo)指中按F2,此時(shí)可看見 后臺(tái)打的111出現(xiàn) 最小化.此時(shí)你如果將多個(gè)記事本都打開 看 他們都在干活呢-可以無限后臺(tái)多開-多線程的哦

6、總結(jié):第一步很關(guān)鍵.啟示:如果我做的"打1"的腳本換成打怪的呢?本帖隱藏的內(nèi)容需要回復(fù)才可以瀏覽第1步:什么是后臺(tái)插件及命令首先我們要明白什么是后臺(tái)插件以及后臺(tái)命令,在編輯窗口找到全部命令,找到窗口插件(建議大家可以站內(nèi)搜一下361插件,下載后放進(jìn)去,看一下361插件的命令),點(diǎn)開后點(diǎn)擊每一條命令仔細(xì)看說明,對(duì)比每條命令跟前臺(tái)命令的對(duì)應(yīng)關(guān)系,這樣我們就可以把對(duì)應(yīng)的前臺(tái)命令轉(zhuǎn)換為后臺(tái)命令了。第2步:窗口句柄的概念以及如何找出窗口句柄操作系統(tǒng)種每打開一個(gè)窗口就會(huì)相應(yīng)的為這個(gè)窗口做一個(gè)記號(hào),他是用一串?dāng)?shù)字表示,也就是我們所要找的窗口句柄了(新手的理解方式不知道準(zhǔn)確不-),這個(gè)東西

7、對(duì)我們后臺(tái)操作來說是最重要的,你在查看插件命令的時(shí)候都會(huì)看到,我們每個(gè)命令后面跟的參數(shù)里面都有個(gè)hwnd,他其實(shí)就是窗口句柄變量。怎么樣理解窗口句柄其實(shí)很簡(jiǎn)單吧第3步:窗口坐標(biāo)(可以理解為后臺(tái)坐標(biāo))窗口坐標(biāo)是指游戲窗口里面的坐標(biāo),如果我們把屏幕坐標(biāo)比作絕對(duì)坐標(biāo),那么窗口坐標(biāo)就是個(gè)相對(duì)坐標(biāo)了,我們平時(shí)用抓抓找出的坐標(biāo)就是屏幕坐標(biāo),所以他是不能直接在后臺(tái)用的。其實(shí)不用對(duì)窗口坐標(biāo)很煩惱,如果你下載了361插件,有個(gè)很簡(jiǎn)單的方法可以直接找出窗口坐標(biāo)。Plugin hw=Window.MousePoint()Plugin text=Window.GetText(hw)Plugin class1=Wind

8、ow.GetClass(hw)VBSCall GetCursorPos(x,y)Plugin win=BGKM5.ScrToCli(hw,x,y)MessageBox "窗口句柄:"&CStr(hw)&VbCrLf&"窗口名:"&text&VbCrLf&"類名:"&class1&VbCrLf&"鼠標(biāo)所在位置的窗口坐標(biāo):"&win這段代碼是從361插件哪里抄來的-如果不理解的話你在下載361插件的時(shí)候應(yīng)該那里能看到說明把這段做成腳本你就可

9、以很方便的找到你需要的點(diǎn)的窗口坐標(biāo),省去了在腳本中加入窗口坐標(biāo)轉(zhuǎn)換的麻煩。第4步:定義窗口句柄變量這步是你是否成功的關(guān)鍵,窗口插件里面可以看到很多定義窗口變量的命令(這個(gè)是361里面沒有的,在窗口插件里面找吧),我個(gè)人喜歡用的是這條:Plugin hw=Window.MousePoint()大致意思是找出當(dāng)前鼠標(biāo)說在窗口的窗口句柄(hw是自己定義的變量,你可以更改它,一般多數(shù)地方是hwnd,你可以用你自己喜歡的方式定義)注:前后臺(tái)命令的區(qū)別    基本上到第4步我們已經(jīng)能夠做出后臺(tái)腳本了,但是有很多新學(xué)的朋友(比如我-)還是要問前臺(tái)命令和后臺(tái)命令到底怎么回事?。课医o自己解釋

10、一下,用幾個(gè)例子來比較吧(我用的361插件命令)鼠標(biāo)左鍵:前臺(tái)(LeftClick 1)后臺(tái)Plugin BGKM5.LClick(參數(shù)1,參數(shù)2,參數(shù)3)鼠標(biāo)移動(dòng):前臺(tái)moveto (參數(shù)1,參數(shù)2)后臺(tái)Plugin BGKM5.Mouse(參數(shù)1,參數(shù)2,參數(shù)3)鍵盤按鍵(回車鍵):前臺(tái)keypress(13,1)后臺(tái)Plugin BGKM5.KeyClick(參數(shù)1,13)      看出區(qū)別了吧,首選后臺(tái)命令都有一個(gè)“Plugin”這個(gè)東西是調(diào)用插件命令的意思,不用管它了,主要區(qū)別在參數(shù)那里,后臺(tái)命令里面動(dòng)作參數(shù)都要比前臺(tái)多一個(gè),就是那個(gè)參數(shù)1,

11、其實(shí)那個(gè)東西就是窗口句柄了,也就是說我們自己開始定義的那個(gè)變量hwnd,到這里應(yīng)該都明白了吧,如果不明白那你比我還笨咯,努力吧-寫在最后,還在繼續(xù)努力學(xué)習(xí)中如果有新的心得的話我還會(huì)繼續(xù)寫成系列的361后臺(tái)找圖插件的按鍵8代碼使用方法【收】Rem a/這里面的sx和sy就是x和y的左邊值 是一開始我用另一段語句定義sx,sy為起始坐標(biāo)Delay 50/鼠標(biāo)點(diǎn)擊游戲內(nèi)打開任務(wù)欄的位置Delay 200/鼠標(biāo)移動(dòng)到起始點(diǎn) 避免找圖時(shí)被鼠標(biāo)遮擋Delay 300/在游戲窗口內(nèi)0, 0,1000, 1000 的范圍內(nèi)找能確定任務(wù)欄打開的那個(gè)圖/如果找不到可能是沒有點(diǎn)開從新返回a點(diǎn)擊并找圖直到點(diǎn)開找到為止

12、/找不到時(shí)返回的值是-1 所以用“<0”來判斷If x<0 And y<0goto a/判斷結(jié)束,也就是說找到了EndIf/這時(shí)候你可以執(zhí)行下一步了這個(gè)是361°后臺(tái)插件放在按鍵精靈的plugin目錄下/得到當(dāng)前鼠標(biāo)指向的窗口的句柄賦值給hwnd/找圖前先轉(zhuǎn)換句柄為hwnd的窗口/OnScriptExit過程在腳本結(jié)束時(shí)執(zhí)行,即使腳本執(zhí)行到一半的時(shí)候,你按了停止熱鍵,它也會(huì)執(zhí)行了這個(gè)過程再停止,這樣能保證占用的資源被釋放Sub OnScriptExit/將前面轉(zhuǎn)換的窗口還原End Sub一段簡(jiǎn)單實(shí)用的代碼,不會(huì)取后臺(tái)坐標(biāo)的進(jìn)來回復(fù)。絕對(duì)值。實(shí)時(shí)顯示光標(biāo)所在屏幕坐標(biāo),

13、所在當(dāng)前窗口窗戶區(qū)坐標(biāo),16進(jìn)制顏色&R,G,B三色!有些朋友不明白我這帖子的意思?,F(xiàn)在再來說說,我這個(gè)不是什么后臺(tái)命令,只是取坐標(biāo)和顏色的。只要鼠標(biāo)在當(dāng)前窗口中,屏幕上顯示的客戶區(qū)坐標(biāo)就是后臺(tái)要用的坐標(biāo)。While 1 Plugin jb=Window.GetKeyFocusWnd() Plugin kb=Window.GetClientRect(jb) bxy=split(kb,"|") VBSCall GetCursorPos(x,y) VBSCall GetColor=GetPixelColor(x,y) Plugin Color.ColorToRGB(Ge

14、tColor,R,G,B) If x-int(bxy(0)>0 and y-int(bxy(1)>0 and x-(int(bxy(2)+int(bxy(0)<0 and y-(int(bxy(3)+int(bxy(1)<0 stxt="當(dāng)前光標(biāo)所在屏幕坐標(biāo) "&x&"."&y&" 當(dāng)前光標(biāo)所在窗口客戶區(qū)坐標(biāo) "&x-bxy(0)&"."&y-bxy(1)&" 光標(biāo)指向處顏色 "&GetColor&a

15、mp;" R="&R&" G="&G&" B="&B&" " Plugin Msg.ShowScrTXT(200,0,1024,768,stxt,"FF0000") Else stxt="當(dāng)前光標(biāo)所在屏幕坐標(biāo) "&x&"."&y&" 當(dāng)前光標(biāo)所在窗口客戶區(qū)坐標(biāo) 0.0 光標(biāo)指向處顏色 "&GetColor&" R="&am

16、p;R&" G="&G&" B="&B&" " Plugin Msg.ShowScrTXT(200,0,1024,768,stxt,"0000FF") EndIf Delay 100EndWhile一直以來都不知道在VBS執(zhí)行塊里怎么插入找圖、找色等按鍵本身的命令,有的人說不能用VBSBegin '需要插入的VBS代碼 GetColor=GetPixelColor(10,5) msgbox "得到顏色值為:" & GetColor Call

17、 FindColor(0,0,1024,768,"FFFFFF",intX,intY) If intX>0 And intY>0 Then msgbox intX & "," & intY MoveTo intX,intY End If '找圖類似 Call FindPic(0,0,1024,768,"Attachment:神盾.bmp",0.9,intX,intY) If intX>0 And intY>0 Then msgbox intX & "," &a

18、mp; intY MoveTo intX,intY End IfVBSEnd使用插件調(diào)用方法!Import color.dllVBSBegin '需要插入的VBS代碼 a=Color.GetRGB(255,255,255) msgbox aVBSEnd一直以來按鍵精靈都無法支持結(jié)構(gòu)這種做法,我們只能模擬類似方法!例子模擬:讓按鍵精靈支持結(jié)構(gòu)排序!/語法格式:數(shù)組() = "數(shù)字大小=值"dim NB_PaiXu(9)NB_PaiXu(0) = "200=A"NB_PaiXu(1) = "3=B"NB_PaiXu(2) = &q

19、uot;5=C"NB_PaiXu(3) = "4=D"NB_PaiXu(4) = "9=E"NB_PaiXu(5) = "7=F"NB_PaiXu(6) = "12=G"NB_PaiXu(7) = "94=H"NB_PaiXu(8) = "60=I"NB_PaiXu(9) = "60=J"Gosub 【最牛排序的算法】MsgBox "得到結(jié)果:" & PaiXuEndScript Sub 【最牛排序的算法】 /初始賦值

20、 Int_A = 0: Int_Num = UBound(NB_PaiXu) For Int_Num Int_B = Int_A: Int_Len = Int_Num - Int_B + 1 For Int_Len /根據(jù)“=”號(hào)分離,進(jìn)行大小判斷 A_Str = Split(NB_PaiXu(Int_A), "="): B_Str = Split(NB_PaiXu(Int_B), "=") If Clng(A_Str(0) > Clng(B_Str(0) Int_Temp = NB_PaiXu(Int_A): NB_PaiXu(Int_A) =

21、NB_PaiXu(Int_B): NB_PaiXu(Int_B) = Int_Temp EndIf Int_B = Int_B + 1 EndFor Int_A = Int_A + 1 EndFor /排序結(jié)果 PaiXu = Join(NB_PaiXu) /返回最大值 /PaiXu = NB_PaiXu(Int_Num) /返回最小值 /PaiXu = NB_PaiXu(0)Return關(guān)于自定義界面問題很多用戶在使用UserVar用戶變量時(shí),想使用數(shù)組變量;但是按鍵不支持UserVar數(shù)組的定義,那該如何解決呢?下面還是寫代碼舉例吧:/按鍵腳本例子/按鍵用戶設(shè)置變量的腳本UserVar H

22、P=0 補(bǔ)血量UserVar MP=0 補(bǔ)藍(lán)量Msgbox HP & "     " & MP'VB界面代碼'在界面上放2個(gè)Txet1文本控件,做成數(shù)組(不懂做數(shù)組控件的可以先放一個(gè)Txet1文本控件,然后選它,Ctrl+C復(fù)制,在Ctrl+V粘貼出來,選擇【確定】即可變?yōu)閿?shù)組了)Public Sub OnSave()    ClearControlData    '固定位置,不需要進(jìn)行修改    '

23、;*以下的內(nèi)容,可以自己修改或者刪除    Call SaveControlData("HP", Text1(0).Text)    'HP為用戶自定義變量名,控件數(shù)組值    Call SaveControlData("MP", Text1(1).Text)    'MP為用戶自定義變量名,控件數(shù)組值End SubPublic Sub OnLoad()    '*以下的內(nèi)容,可以自己修改或者刪除

24、60;   Text1(0).Text = LoadControlData("HP")    '控件數(shù)組值 = HP為用戶自定義變量名    Text1(1).Text = LoadControlData("MP")    '控件數(shù)組值 = MP為用戶自定義變量名End Sub'這樣就可以隨便使用控件數(shù)組了。不影響腳本自定義變量名無限循環(huán)大家都知道按鍵精靈腳本可以自定義循環(huán),按鍵精靈本身也可設(shè)置無限循環(huán) 但有沒有人發(fā)現(xiàn)自定義循環(huán)次數(shù)

25、那輸入-1,可以執(zhí)行無限循環(huán),即使按鍵精靈本身沒有設(shè)置無限循環(huán),也可以執(zhí)行無限循環(huán)特別是打包成小精靈時(shí),只要在自定義循環(huán)輸入窗口那輸入-1,就可以使想要的那段腳本執(zhí)行無限循環(huán)1.2. UserVar Var1=-1  輸入-1可無限循環(huán)3. For Var14.     LeftClick 15. EndFor復(fù)制代碼- -!不錯(cuò)。新發(fā)現(xiàn)。鼓勵(lì)下。按鍵事有無限循環(huán)的 WHite 這事條件循環(huán)條件為真的時(shí)候循環(huán)只要設(shè)置一個(gè)永遠(yuǎn)為真的值就事無限循環(huán)了比如例子1a=1white a=1例子2white 1 /非0值為真,0值為假例子3white true /t

26、rue 是真的意思(我一般這樣用)還有向跳轉(zhuǎn)GOTO也可以做到無限循環(huán)。例子 REM 1  /定義一個(gè)標(biāo)簽(記)1。goto 1 / 跳到標(biāo)簽1.。/現(xiàn)在就MsgBox函數(shù)操作簡(jiǎn)單簡(jiǎn)紹用法/字符串提示換行寫法MsgBox "a"&vbcr&"b"&vbcr&"c"/或者使用chr(13),chr(10)效果一樣MsgBox "a"&chr(13)&"b"&chr(10)&"c"/帶有警告標(biāo)志的窗口MsgBox "a"&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論