2014年3月21日 星期五

手機 腳本精靈 教學(一) - 悍將三國例子

對於玩遊戲的人來說,大家都知道電腦有按鍵精靈可以寫腳本,來幫自已做點簡單的事,
那相對的,Android手機的也可以開始寫腳本來幫忙啦 ~~~ ψ(`∇´)ψ
在開始教學之前,先來準備可以執行腳本的環境 ~~~
1. 一隻 root 過的手機,沒錯,一定要root ,root 方式,請參考google大神。
2. 執行腳本的軟體 ,請上google play 找,我用的是 觸摸精靈 。

準備好環境之後,就開始我們的腳本之旅啦 ~~~ ヾ(*´∀`*)ノ
1.  腳本最原始的資料參考來源,當然就是遊戲畫面啦,
     而遊戲畫面,我們關注的就是 "位置" 跟 "顏色"
     因此我們的第一步就是如何找到想要的位置跟顏色。
     1.1 首先 ,我們需要擷取遊戲畫面,大家可以參考各手機擷取畫面的方式
     1.2 將擷取下來的畫面 複制到 電腦上
     1.3 開始找我們想要的座標與顏色,在這邊,我用的是PhotoShop來幫忙



    1.4 如上圖所示,將圖片導入後,畫面如上面那樣
        1.4.1  非常重要的,請大家不要將畫面做轉動的動作,不要因為想要畫面是正的,就轉了畫面,一旦轉了,座標可是對不上的,腳本執行後,可能不曉得點去那了。
        1.4.2 在PhotoShop中,找座標跟顏色非常方便,如上圖所示,首先在右邊點選 "資訊"
        1.4.3 然後上圖中的2號紅色框框顯示的就是顏色
        1.4.4 上圖中3號紅色框框就是座標
        然後透過滑鼠在左邊圖上的滑動,這樣可以精準的知道每一個座標跟相對應的顏色。
        之前我下載過顏色抓取腳本,實在是太不方便,要先輸入座標,執行後,就可以找到相對的顏色,但是 ~~~  但是 ~~ ~ 我怎麼知道我要的顏色座標是什麼  (#゚Д゚)

2. 知道怎麼抓取想要的顏色跟座標後,就可以開始寫腳本啦,這邊的例子是拿悍將三國的英雄王座來講解
    主要的目標是當 "跳過動畫" 出現的時候,我們讓腳本自動幫我們去點選,
    2.1 首先最重要的是我們要選一個座標跟顏色,來分辦 "跳過動畫" 是否已出現,因此要找一個非常明確座標跟顏色,千萬不要找會變動的,因為之前我在寫腳本時,發生過取了一個座標下的顏色會一直變動的情況,導致腳本一直沒反應。
     2.2 如上圖中,我們取到的座標是 (293 , 421 ) 顏色是 f8d030 為了跟現有的腳本做相對應,我們改取 座標 (290,423) 顏色 f8c820 ,其實差不多的位置
    2.3  有了座標跟顏色後,開始介紹腳本的語法
           2.3.1 腳本的副檔名是 .lua ,因為存檔的時候,記得副檔名是 .lua
           2.3.2 首先 當我們手指按下一個功能後,其實經過了 "按下" 和 "放開" 算是完成一個點擊的動作。
           2.3.3 
              2.3.3.1 按下 我們用的語法是  touchDown(0, 290, 423); 代表在座標(290,423)按下了手指
              2.3.3.2 放開  比較簡單 touchUp(0) 就代表放開了手指
              2.3.3.3 另外我們需要休息一下,再執行下一個語法,休息用的是 mSleep(500); 500指的是毫秒,因此1秒的話就是 1000
          2.3.4 因為整個英雄王座的完成,其實不只是跳過而已,因此我們需要很多的 "按下" 和 "放開",這種時候,我們需要寫一個函數,來幫我們不用重複的寫一樣的語法,函數寫下如下,我們寫一個 "按下"、"放開"、"休息"的函數叫做 confirm

如上圖所示,函數由 function 和 end 組成,我們定義了一個confirm的函數,傳入x跟y的座標。

            2.3.5 
                  2.3.5.1用完座標後,接下來要教顏色怎麼使用,首先我們先定義一下顏色座標的變數,也是為了方便如果重複使用到的話,定義方式很簡單,一個變數、一個值、一個分號
                 2.3.5.2有了座標的變數後,就可以寫顏色的判斷了,用到的語法是 getColor(x2,y2)函數,我們可以透過 getColor 函數取得座標上的顏色,然後比對跟我們一開始在photoshop上抓到的顏色有沒有一樣,因此我們需要一個判斷式就是if 啦~~  (-^〇^-)


如上圖所示,if 是由  if  then  end 組成的,因此由上圖表示,如果座標(x2,y2)的顏色是0xf8c820的話,則執行我們前面定義的confirm函數,做點下、放開的動作。這樣簡單的判斷如果有"跳過動畫"就點下就完成啦~~~ ヾ(*´∀`*)ノ
當然實際上沒這麼簡單,因為我們需要的是等待再等待,等"跳過動畫"出現,而等待的方式,則會在下一篇來教大家,一步一步從簡單的開始~~~

            2.4 
              2.4.1 最後來教大家,怎麼完成一個完整的腳本,首先我們可以針對這個腳本做註解,方便知道這個腳本做了些什麼,用的是  DESCRIPTION 


             2.4.2 還有 因為每一隻手機的解析度不同,因此每個座標的也不一樣,因此我們需要加入 SCREEN_RESOLUTION 來說明我們用的解析度是什麼

            2.4.3 再來我們顏色用的color bit 是多少,印象中有16 、 32 
                              

           2.4.4 另外當腳本越寫越複雜時,我們需要註解來說明每一行是什麼,不然久了,自已都不知在寫什麼,而註解的方式則是 加上 -- ,沒錯,就是二橫
                                 
                             

           2.4.5 最後一個腳本的入口處是由 function main() end 組成,主要的都寫在這裡面,記住函數名稱 main 請大家不要改動,免得出錯。這樣就大功告成啦  ~~ ~ \(^o^)/
          最後附上完成的腳本內容,方便大家對照上面說的,不過大家千萬不要以為底下照打一遍,英雄王座就會自已一路打下去,(#゚Д゚) 
          上面有說過,我們還需要加入等待,才有辦法等到想要的再點下手指,完成
          接下來請大家等待第二篇的教學,讓英雄王座更加完美 ψ(`∇´)ψ




                 

請尊重著作權. 請勿轉載

2 則留言: