Python制作回合制手游外掛簡單教程(上)


引入:

每次玩回合制游戲的時候,反反復復的日常任務讓人不勝其煩

玩問道的時候,我們希望能夠自動刷道,玩夢幻希望能自動做師門、捉鬼等等

 

說明:

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

 

我這里使用的python2.7

開發工具是PyCharm

 

前期知識准備:

首先下載autopy包,我這里PyCharm可以直接導入autopy包

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

 

鼠標移動

復制如下代碼,運行

#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)。

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

官方文檔的解釋:

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

 

 效果如下:

 

 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM