Python製做回合制手遊外掛簡單教程(上)

引入:

每次玩回合制遊戲的時候,反反覆覆的平常任務讓人不勝其煩python

玩問道的時候,咱們但願可以自動刷道,玩夢幻但願能自動作師門、捉鬼等等api

 

說明:

該外掛只能模擬鼠標鍵盤操做,並不能修改遊戲數據app

 

我這裏使用的python2.7python2.7

開發工具是PyCharm工具

 

前期知識準備:

首先下載autopy包,我這裏PyCharm能夠直接導入autopy包開發工具

或者用利用pip進行安裝:pip install autopyui

 

鼠標移動

複製以下代碼,運行spa

#coding=utf-8

import time

 

import autopy

#quick move

autopy.mouse.move(1,1)

 

#smooth move

#autopy.mouse.smooth_move(1370,120)

會發現鼠標瞬間移動到座標(1,1)的位置,個人電腦是1920*1080的,最右下角的座標就是(1920,1080)。code

將move換成smooth_move,會發現鼠標慢慢地移動到指定座標blog

官方文檔的解釋:

autopy.mouse.move(x: float, y: float)

 

    Moves the mouse to the given (x, y) coordinate.

 

    Exceptions:

 

            ValueError is thrown if the point is out of index.

 

autopy.mouse.smooth_move(x: float, y: float)

 

    Smoothly moves the mouse to the given (x, y) coordinate in a straight line.

 

    Exceptions:

 

            ValueError is thrown if the point is out of index.

座標超過度辨率會報異常

 

鼠標點擊

運行代碼,發現當前位置產生了點擊操做

#coding=utf-8

import autopy

autopy.mouse.click() # 單擊

 

鍵盤操做

下面時一些常見的鍵值碼和鍵的對應:

   字母和數字鍵 數字小鍵盤的鍵  功能鍵    其它鍵 
      鍵   鍵碼      鍵   鍵碼          鍵   鍵碼       鍵      鍵碼 
      A   65          0   96            F1   112       Backspace    8 
      B   66          1   97            F2   113       Tab       9 
      C   67          2   98            F3   114       Clear      12 
      D   68          3   99            F4   115       Enter      13 
      E   69          4   100           F5   116      Shift      16 
      F   70          5   101           F6   117      Control     17 
      G   71         6   102           F7   118      Alt       18 
      H   72         7   103           F8   119      Caps Lock    20 
      I    73          8   104          F9   120      Esc       27 
      J    74          9   105          F10  121     Spacebar    32 
      K   75         *   106           F11  122      Page Up     33 
      L   76         +   107           F12  123      Page Down    34 
      M   77        Enter 108                          End       35 
      N   78         -   109                              Home      36 
      O   79         .   110                              Left Arrow   37 
      P   80         /   111                              Up Arrow    38 
      Q   81                                                Right Arrow   39 
      R   82                                                Down Arrow    40 
      S   83                                                Insert      45 
      T   84                                                Delete      46 
      U   85                                                Help       47 
      V   86                                                Num Lock     144   
      W  87          
      X   88      
      Y   89      
      Z   90      
      0   48      
      1   49      
      2   50       
      3   51       
      4   52       
      5   53       
      6   54       
      7   55       
      8   56       
      9   57

複製代碼,運行,這裏須要win32api包

調用win32api的keybd_event方法,用過要釋放按鍵

#coding=utf-8

import time

import win32api

 

win32api.keybd_event(18,0,0,0)  #alt鍵位碼是18

win32api.keybd_event(9,0,0,0)  #tab鍵位碼是9

time.sleep(0.5)

win32api.keybd_event(13,0,0,0)  #enter鍵位碼是13

 

win32api.keybd_event(18,0,win32con.KEYEVENTF_KEYUP,0) #釋放按鍵

win32api.keybd_event(9,0,win32con.KEYEVENTF_KEYUP,0)

win32api.keybd_event(13,0,win32con.KEYEVENTF_KEYUP,0)

time.sleep(2)

 能夠看到,完成了切換窗口的操做,至關於咱們按alt+tab,而後回車進入

 

開始製做外掛:

這裏以問道手遊爲例(回合制手遊相似)

須要夜神模擬器,並在模擬器上安裝問道

我試過藍疊和MuMu模擬器,我用autopy移動鼠標到模擬器時鼠標就消失了,不能完成後續的自動操做,後來百度了

說有的模擬器不受win窗口的控制。無論那麼多,咱們先用夜神模擬器吧!

 

 

進入遊戲,打開「活動」

 

咱們以「競技場」活動舉例說明

 

 這裏咱們要用到截圖工具,我用的是PicPick

 我的用戶免費,我主要用它來測量座標

 

 記錄下競技場前往的座標(1358,504)

 

 

記錄下競技場按鈕的座標(1332,650)

 

製做回合制腳本首先得要熟悉任務流程

而後點擊競技場,走完這個任務流程,依次記錄按鈕的座標

競技場任務一天能夠作五次,咱們對步驟循環五次

戰鬥時間咱們須要本身來計時,不一樣門派,土豪或者平民玩家時間都不同

我是平民玩家,大概耗時60s,點擊過挑戰讓代碼延遲60s再繼續執行

 

 

複製代碼,運行

#coding=utf-8

import autopy

import time

import win32api

import win32con

#競技場

win32api.keybd_event(18,0,0,0)  #alt鍵位碼是18

win32api.keybd_event(9,0,0,0)  #tab鍵位碼是9

time.sleep(0.5)

win32api.keybd_event(13,0,0,0)  #enter鍵位碼是13

 

win32api.keybd_event(18,0,win32con.KEYEVENTF_KEYUP,0) #釋放按鍵

win32api.keybd_event(9,0,win32con.KEYEVENTF_KEYUP,0)

win32api.keybd_event(13,0,win32con.KEYEVENTF_KEYUP,0)

time.sleep(2)

 

def mousemove_click(x,y):

    autopy.mouse.smooth_move(x, y)

    autopy.mouse.click()

 

mousemove_click(771, 203)  # 活動的座標

 

mousemove_click(1358,504)  # 競技場"前往"的座標

 

time.sleep(20)#從天墉城城中心/其餘地圖走到競技使者花費20s

 

mousemove_click(1334, 650)  # 競技使者對話框中的競技場的座標

 

 

#挑戰完畢會出現對話窗口

for i in range(1,6,1):

    mousemove_click(664,706) #挑戰試煉童子

 

    mousemove_click(1082,578) #確認

 

    mousemove_click(1530, 794)  # 戰鬥自動

 

    time.sleep(60)#挑戰試煉童子預計60s

 

 效果以下:

 

 

下一集將介紹如何實現隊長模式刷道(自動組隊,自動跑環接任務)

相關文章
相關標籤/搜索