一種王者榮耀刷金幣方法(python腳本)

所用工具環(huán)境

  • python3.6.5 和 支持自動鼠標(biāo)鍵盤點(diǎn)擊等編程的pyautogui功能包
  • windows PC寸爆,安卓模擬器bluestacks,安裝王者榮耀

基本思路

王者榮耀有闖關(guān)任務(wù)模式可以獲得金幣盐欺,任務(wù)兩三分鐘一般就可以完成赁豆,支持自動模式,一次可獲取三四十金幣冗美,且可以重復(fù)刷取魔种。

利用腳本,模擬任務(wù)開啟點(diǎn)擊粉洼,進(jìn)入后自動執(zhí)行节预,中間對話跳過叶摄,最后任務(wù)完成檢測,再次啟動任務(wù)安拟。均是通過截屏信息獲取當(dāng)前在做什么蛤吓,然后應(yīng)該點(diǎn)擊什么,如此往復(fù)執(zhí)行去扣。

腳本所用關(guān)鍵功能說明

網(wǎng)上有關(guān)于pyautogui包的使用的一些參考柱衔,有一些是相對過期的,功能接口調(diào)用存在些差別愉棱,可以在安裝pyautogui包后唆铐,使用python doc 來查找相關(guān)API說明。

pyautogui.screenshot 用于截屏奔滑。
下面是py doc中函數(shù)原型艾岂,可傳入文件名,最終返回截屏圖片朋其,保存在本地

screenshot = _screenshot_win32(imageFilename=None)

pyautogui.locateOnScreen 用于查找局部圖片位置(像素點(diǎn)區(qū)域位置)王浴。輸入圖片文件名,最終返回圖片所在位置梅猿,如果當(dāng)前屏幕不存在該圖片氓辣,則返回None

locateOnScreen(image, grayscale=False, region=None)

事先截取好中間需要點(diǎn)擊的按鈕圖片,保存在本地袱蚓,然后截屏中去匹配查找按鈕圖片是否存在及其位置(該函數(shù)實(shí)際并不需要事先調(diào)用screenshot)

pyautogui.center 用于獲取某一像素區(qū)域的中心像素點(diǎn)位置钞啸。

center(coords)

源文件

pics中是事先截取的

百度云盤可下載使用鏈接:
https://pan.baidu.com/s/1TspfdYdSwnAvlt0iC4BfxQ 密碼: 3q6v

實(shí)際運(yùn)行效果展示

最開始選用最后一個關(guān)卡任務(wù)(大師級)

下一步,進(jìn)入任務(wù)后喇潘,再啟用腳本

后面就自動執(zhí)行了

錄制過屏幕体斩,markdown下視頻無法上傳,想制作gif來這的颖低,視頻太大需要一定裁剪處理絮吵,暫時不會。忱屑。

源碼展示

很簡單蹬敲,重在功能,沒有注重什么規(guī)范
(業(yè)余python選手莺戒,工作之中也是python用于內(nèi)部工具開發(fā),代碼槽點(diǎn)可能較多)粱栖。

# -*- coding: utf-8 -*-
import pyautogui
import time

pyautogui.FAILSAFE = False
screenshot = pyautogui.screenshot

pngLocate = pyautogui.locateOnScreen

def click(x,y):
    pyautogui.moveTo(x,y)

    pyautogui.click()

def get_button_center_from_screen(button_png,png_path='pics'):
    screen = screenshot("screen.png")
    button_png = png_path + '\\' + button_png
    start_pos = pngLocate(button_png)

    if start_pos == None:
        #找不到button
        print("{} not exsit on current screen".format(button_png))
        return 0,0

    return pyautogui.center(start_pos)

def AutoMouse():

    print("Start")

    n = 1

    while(n<60):

        print("{now} 第{n}次\n".format(now=time.strftime("%m-%d %H:%M:%S"), n=n))

        x, y = get_button_center_from_screen('開始闖關(guān).PNG')
        click(x,y)
        time.sleep(5)

        loading = False
        #是否正在加載中
        while(1):
            x,y = get_button_center_from_screen('加載中.PNG')
            time.sleep(3)
            if (x,y) != (0,0):
                break

        loading = False
        print("加載中\(zhòng)n")

        while(1):
            x,y = get_button_center_from_screen('加載中.PNG')
            if (x,y) == (0,0):
                break

        print("加載完成\n")


        #檢查是否初始畫面需要跳過
        x,y = get_button_center_from_screen('跳過.PNG')
        if (x,y) == (0,0):
            print("no need Jump over")
        else:
            print("need Jump over")
            click(x,y)

        #檢查是否已經(jīng)啟用自動
        x,y = get_button_center_from_screen("未啟用自動.PNG")
        if (x,y) != (0,0):
            print("not auto run")
            click(x,y)
        else:
            print("already auto run")


        #運(yùn)行監(jiān)測,是否結(jié)束脏毯,以及中間存在需要跳過,結(jié)束則開啟下一次  每5s檢測一次
        while(1):
            time.sleep(3)
            x,y = get_button_center_from_screen('跳過2.PNG')
            if (x,y) == (0,0):
                print("no need Jump over")
            else:
                print("need Jump over")
                click(x,y)

            x,y = get_button_center_from_screen("結(jié)束后繼續(xù).PNG")
            if (x,y) == (0,0):
                print("not over")
            else:
                print("all over.\n")
                click(x,y)
                time.sleep(5)

                #start 闖關(guān)
                print("Start again")
                x, y = get_button_center_from_screen('再次挑戰(zhàn).PNG')
                n = n+1
                click(x,y)
                time.sleep(10)
                break

if __name__ == '__main__':
    AutoMouse()

注意事項(xiàng)

  1. 腳本可能需要在管理員權(quán)限下執(zhí)行(cmd啟動時以管理員身份運(yùn)行)(click執(zhí)行沒有效果的時候幔崖,就是權(quán)限問題導(dǎo)致的)
  2. 由于電腦尺寸可能不是絕對一樣食店,所以事先截取的按鈕圖片可能都不一樣渣淤,自行截取個人PC上實(shí)際王者榮耀刷任務(wù)運(yùn)行時畫面,對應(yīng)替換
  3. 個人在使用過程中遇到過的問題:
    • 有一次晚上掛機(jī)吉嫩,電腦死過機(jī)价认,應(yīng)該和這個沒關(guān)系。自娩。用踩。
    • 安卓模擬器中的王者榮耀出現(xiàn)卡機(jī)(手動點(diǎn)擊也是沒有反應(yīng),最后只好重啟了模擬器)忙迁,不知有沒有關(guān)系
    • 加載圖片 匹配不到脐彩,原因是王者榮耀有更新,任務(wù)開始后加載頁面的廣告有變化姊扔,建議截取關(guān)鍵按鈕時惠奸,盡量截取小部分,不要截取太多恰梢。

后續(xù)

可以做的更好佛南,日志記錄實(shí)際運(yùn)行情況,出問題時嵌言,方便回溯嗅回。利用圖片識別技術(shù)來識別圖片中的文字,來找到對應(yīng)按鈕的位置摧茴。健壯性考慮绵载,如果中間偶爾出現(xiàn)卡機(jī),點(diǎn)擊失效蓬蝶,如何檢測出來尘分,以及后續(xù)該怎么處理。當(dāng)然需要更高的技術(shù)要求丸氛。喜歡且有相關(guān)能力的可以搞一下培愁。
歡迎留言交流 _

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市缓窜,隨后出現(xiàn)的幾起案子定续,更是在濱河造成了極大的恐慌,老刑警劉巖禾锤,帶你破解...
    沈念sama閱讀 222,378評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件私股,死亡現(xiàn)場離奇詭異,居然都是意外死亡恩掷,警方通過查閱死者的電腦和手機(jī)倡鲸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來黄娘,“玉大人峭状,你說我怎么就攤上這事克滴。” “怎么了优床?”我有些...
    開封第一講書人閱讀 168,983評論 0 362
  • 文/不壞的土叔 我叫張陵劝赔,是天一觀的道長。 經(jīng)常有香客問我胆敞,道長着帽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,938評論 1 299
  • 正文 為了忘掉前任移层,我火速辦了婚禮仍翰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘幽钢。我一直安慰自己歉备,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,955評論 6 398
  • 文/花漫 我一把揭開白布匪燕。 她就那樣靜靜地躺著蕾羊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪帽驯。 梳的紋絲不亂的頭發(fā)上龟再,一...
    開封第一講書人閱讀 52,549評論 1 312
  • 那天,我揣著相機(jī)與錄音尼变,去河邊找鬼利凑。 笑死,一個胖子當(dāng)著我的面吹牛嫌术,可吹牛的內(nèi)容都是我干的哀澈。 我是一名探鬼主播,決...
    沈念sama閱讀 41,063評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼度气,長吁一口氣:“原來是場噩夢啊……” “哼割按!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起磷籍,我...
    開封第一講書人閱讀 39,991評論 0 277
  • 序言:老撾萬榮一對情侶失蹤适荣,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后院领,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體弛矛,經(jīng)...
    沈念sama閱讀 46,522評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,604評論 3 342
  • 正文 我和宋清朗相戀三年比然,在試婚紗的時候發(fā)現(xiàn)自己被綠了丈氓。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,742評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖万俗,靈堂內(nèi)的尸體忽然破棺而出鱼鼓,到底是詐尸還是另有隱情,我是刑警寧澤该编,帶...
    沈念sama閱讀 36,413評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站硕淑,受9級特大地震影響课竣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜置媳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,094評論 3 335
  • 文/蒙蒙 一于樟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧拇囊,春花似錦迂曲、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至传黄,卻和暖如春杰扫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背膘掰。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評論 1 274
  • 我被黑心中介騙來泰國打工章姓, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人识埋。 一個月前我還...
    沈念sama閱讀 49,159評論 3 378
  • 正文 我出身青樓凡伊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親窒舟。 傳聞我的和親對象是個殘疾皇子系忙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,747評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件辜纲、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,123評論 4 61
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,317評論 25 707
  • 在python中笨觅,import用來導(dǎo)入一個python標(biāo)準(zhǔn)模塊,其中包括.py文件耕腾,帶有init.py文件的目錄见剩。...
    hopevow閱讀 660評論 0 0
  • 我是一個漁夫在一片汪洋里做活我把網(wǎng)撒下祈禱海神之眷顧予我一網(wǎng)魚蝦然而收獲寥寥無幾只有幾尾魚,一只蟹貝殼也有一些 我...
    郁衡子閱讀 205評論 16 5
  • 1 一刀斃命扫俺。 那個趾高氣昂的女人拖著長長地裙擺離開苍苞,艷紅色的裙子像淌了一地的血。我看著他們把我的尸體拖下去,還有...
    十里sl閱讀 816評論 2 4