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


引入:

接着上篇的博文,今天我們講如何實現助人為樂

前期准備:

如何獲取圖片中指定文字的坐標?

我的思路是截取一個小區域,再根據小區域左上角的坐標獲取中央坐標

例如:

獲取坐上角的x和y坐標,測量x到紅點的橫向距離x1,在測量y點到紅點的縱向距離y1

可以得出紅點的坐標(x+x1,y+y1)

 

復制代碼,運行

X1 = 1132
X2 = 1536
time.sleep(3)
screenshot(X1, 622, X2, 676,helpedName1)#截圖

mousemove_click(X1 + 200, Y + 30)

 

截取了一小區域,然后獲得了中心坐標,這里的200和30是自己測量出來的

 

如果有更好更直接的獲取圖片中指定文字的坐標的方法可以下方評論告訴我,我也學習學習

開始制作外掛:

詳細步驟之前的博文1博文2已經說過

 

詳細代碼如下:

imageGrabUtil.py(截圖工具)

復制代碼
#coding=utf-8

from PIL import ImageGrab # 參數說明 # 第一個參數 開始截圖的x坐標 # 第二個參數 開始截圖的y坐標 # 第三個參數 結束截圖的x坐標 # 第四個參數 結束截圖的y坐標 def screenshot(x1,y1,x2,y2,filename): bbox = (x1, y1, x2, y2) im = ImageGrab.grab(bbox) # 參數 保存截圖文件的路徑 im.save('E:\\python_project\\Asktao_Automation\\resource\\'+filename+'.png')
復制代碼

 

baiduAipUtil.py(文字識別工具)

我這里百度雲的APPP_ID、API_KEY、SECRET_KEY保存在config.ini

復制代碼
#coding=utf-8
from aip import AipOcr import re #百度文字識別 # !/usr/bin/env python # -*- coding:utf-8 -*- import ConfigParser import os os.chdir("E:\python_project\Asktao_Automation\util") cf = ConfigParser.ConfigParser()  cf.read("config.ini")  secs = cf.sections() APPP_ID = cf.get("baiduAip","APPP_ID") API_KEY = cf.get("baiduAip","API_KEY") SECRET_KEY = cf.get("baiduAip","SECRET_KEY")  client = AipOcr(APPP_ID,API_KEY,SECRET_KEY) def characterRecognition(filePath): i = open(filePath,'rb') img = i.read() message = client.basicGeneral(img); #print(message.get('words_result')) string = ''; for i in message.get('words_result'): print(i.get('words')) string += i.get('words') return string
復制代碼

 

config.ini

[baiduAip]
APPP_ID = APPP_ID 
API_KEY = API_KEY 

SECRET_KEY = SECRET_KEY

 

joyByHelpingPeople.py

我只做了馮喜來和楊鏢頭的部分,其他人物的可以用同樣的方法做出來,先走完流程,再寫代碼

#coding=utf-8
import autopy
import time
import win32api
import win32con
from imageGrabUtil import screenshot
from baiduAipUtil import characterRecognition
import sys
defaultencoding = 'utf-8'
if sys.getdefaultencoding() != defaultencoding:
    reload(sys)
    sys.setdefaultencoding(defaultencoding)

#助人為樂
#time.sleep(5)
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()


#幫助馮喜來
def fengXiLai(Y):
    mousemove_click(X1+200,Y+30) #鼠標移到按鈕中央,點擊馮喜來按鈕
    for i in range(1,4,1):
        mousemove_click(1448,380)
        time.sleep(150) #打強盜、無名劍客平均時間150s
        mousemove_click(1515, 258)#跳過對話
        mousemove_click(1515, 258)
        time.sleep(15)
        mousemove_click(1448, 380)# 白邦芒處領賞

#幫助楊鏢頭
def yangBiaoTou(Y):
    mousemove_click(X1 + 200, Y + 30)
    for i in range(1,5,1):
        #和張老板對話,傳遞心意,找張老板,找玄武
        mousemove_click(1448, 380)#點任務欄 和張老板對話
        time.sleep(15)
        mousemove_click(1515, 258)  # 跳過對話

    mousemove_click(1448, 380)  # 點任務欄 尋找竊賊
    time.sleep(45)#和竊賊對戰時間45s
    mousemove_click(1515, 258)  # 跳過對話

    for i in range(1,5,1):
        #向張老板復命,月老,蓮花姑娘,張老板
        mousemove_click(1448, 380)  # 點任務欄 向張老板復命
        time.sleep(15)
        mousemove_click(1515, 258)  # 跳過對話

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

mousemove_click(1359,503) #前往的坐標

time.sleep(15)#從天墉城城中心/其他地圖走到白幫忙花費15s

mousemove_click(1336,649) #領賞

#為了獲取圖片中指定文字的坐標,這里需要分開截圖
helpedName1 = "helpedName1"
X1 = 1132
X2 = 1536
time.sleep(3)
screenshot(X1, 622, X2, 676,helpedName1)#截圖

judgehelpedNameStr1 = characterRecognition('E:\\python_project\\Asktao_Automation\\resource\\'+helpedName1+'.png')#文字識別

helpedName2 = "helpedName2"

screenshot(X1, 690, X2, 741,helpedName2)#截圖

judgehelpedNameStr2 = characterRecognition('E:\\python_project\\Asktao_Automation\\resource\\'+helpedName2+'.png')#文字識別
if '馮喜來' in judgehelpedNameStr1:
    fengXiLai(622)
elif '馮喜來' in judgehelpedNameStr2:
    fengXiLai(690)
elif '楊鏢頭' in judgehelpedNameStr1:
    yangBiaoTou(622)
elif '楊鏢頭' in judgehelpedNameStr2:
    yangBiaoTou(690)

 

至此,回合制手游(如問道)的所有任務的腳本都可以用這三篇教程的所講方法去做

若有更簡潔的方法,歡迎指出

 

三篇教程的所有代碼請點擊這里獲取


免責聲明!

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



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