乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      自制按鍵精靈

       老匹夫 2019-07-30

      項目地址(已經(jīng)閉源)

      由來

      之前想給手游寫一套很牛逼的自動化控制腳本,能夠?qū)崿F(xiàn)自動領(lǐng)任務(wù),自動尋路,找怪,打怪。。。以前一直用按鍵精靈寫簡單的游戲腳本,但是按鍵精靈底層不夠穩(wěn)定,經(jīng)常死掉無響應(yīng),而且按鍵精靈網(wǎng)絡(luò)通信基本等于殘廢。于是我決定自己從輪子開始開發(fā)。

      大致架構(gòu)

      首先,領(lǐng)任務(wù),找怪。。。這些肯定得用上文字識別,在尋找很久后,最終用了cnocr 這個項目使用了TensorFlow,基于MXNet網(wǎng)絡(luò)訓(xùn)練,并且部署及其簡單。在識別率和速度上面都完全滿足游戲腳本開發(fā),我將其用django包裹成了restapi以供腳本調(diào)用。

      屏幕監(jiān)控方面,使用的android的錄屏實(shí)現(xiàn),屏幕每次從新渲染都會更新記錄到內(nèi)存,因此有些低配手機(jī)可能會卡頓。但是如果不保存每次的屏幕可能會造成找圖慢和找圖延遲(按鍵精靈就是這樣)。

      模擬點(diǎn)擊和輸入,為了實(shí)現(xiàn)這個我花了很多時間,我反編譯了按鍵精靈,看了他的實(shí)現(xiàn),也在網(wǎng)上找了很多別人的實(shí)現(xiàn)。但是都沒有找到合適的方法。最終,我使用了android的Instrumentation實(shí)現(xiàn)。使用了xposed的hook功能, 攔截修改了系統(tǒng)權(quán)限檢測函數(shù),從而實(shí)現(xiàn)全局的按鍵點(diǎn)擊。

      找圖功能,我第一想法是引入opencv,使用opencv的模板匹配來找圖,但是實(shí)際使用發(fā)現(xiàn)opencv太大了,用在這里不太適合。于是我自己實(shí)現(xiàn)了一個找圖功能(其實(shí)相當(dāng)于按鍵精靈的多點(diǎn)找色)。出于性能的考慮,沒有實(shí)現(xiàn)圖片匹配功能, 其實(shí)按鍵精靈也是滑動窗口的方法找圖的,性能并不好,另外實(shí)際游戲腳本開發(fā)中找圖并不好用,各種屏幕尺寸會造成各種適配問題。為此得每種屏幕都做截圖,非常麻煩。

      到這里,整個項目基本功能都實(shí)現(xiàn)了,但是!嘗試進(jìn)行腳本開發(fā)后發(fā)現(xiàn)使用java代碼開發(fā)很不方便,每次改動都得重新編譯安裝,安裝過程中游戲會處于后臺,可能被殺死。于是我引入了lua腳本到程序中,使用lua腳本來控制程序。 從而每次改動只需要重新推lua腳本到手機(jī)上,然后就能重新運(yùn)行測試。

      引入lua腳本參考了Android-Lua項目。

      引入lua腳本后,我把常用的幾個功能寫成了lua的全局函數(shù),注入到了lua運(yùn)行時中,在lua腳本中可以直接調(diào)用。

      目前支持函數(shù):

      1.Lua語言提供的自帶函數(shù),有哪些請參考Lua官網(wǎng)

      2.找圖函數(shù) findMulPoint(string t)

      findMulPoint("0,0,0,0,\"FFFFFF\",\"36|14|1E1EE9,54|24|FFFFFF,69|24|000000")  
      

      和按鍵精靈的多點(diǎn)找圖相似,前4個數(shù)字表示需要查找的區(qū)域(左上到右下),后面一個是顏色的第一個坐標(biāo),再后面是顏色和第一個顏色的偏移位置+顏色的色值。提示,這個多點(diǎn)找色特征值可以使用按鍵精靈的工具制作(刪掉最后的顏色偏差),也可以使用我提供的python腳本制作,但是我的工具很簡陋。

      3.日志輸出loge(string log)

      loge("hello")

      輸出錯誤日志。使用的android Log.e輸入,因此,你需要連接adb才能看到錯誤輸出。

      4.單行文字識別singeLineOcr(int x1,int y1,int x2,int y2)

      singeLineOcr(x1,y1,x2,y2)

      識別一個區(qū)域(參數(shù)為左上到右下的坐標(biāo))內(nèi)的文字,這個文字必須是單行的(其實(shí)可以支持多行,但是我不需要,沒有實(shí)現(xiàn))。

      5.暫停sleep(int i)

      sleep(int i)

      使腳本停止i毫秒

      6.觸摸屏幕某個點(diǎn)tap(int x,int y)

      tap(int x,int y)

      點(diǎn)擊屏幕(x,y)坐標(biāo)

      到此。大喊一聲,真tm完美!終于,把輪子造完了。我可以開始開發(fā)我的手游程序了。但是,輪子造完我已經(jīng)不想玩以前那手游了。emmmmmm,我這里把我造的輪子開源出來吧,有需要的老哥自取。(滑稽)


        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多