
引入:
接着上篇的博文,今天我们讲如何实现助人为乐
'''
作者:Rest探路者
源自:https://www.cnblogs.com/Java-Starter/p/9609671.html
'''
前期准备:
如何获取图片中指定文字的坐标?
我的思路是截取一个小区域,再根据小区域左上角的坐标获取中央坐标
例如:

获取坐上角的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是自己测量出来的
如果有更好更直接的获取图片中指定文字的坐标的方法可以下方评论告诉我,我也学习学习
回到顶部
开始制作外挂:
详细步骤之前已经说过
Python制作回合制手游外挂,轻松帮你完成游戏人物
Python制作回合游戏自动完成任务辅助脚本,进阶篇
详细代码如下:
imageGrabUtil.py(截图工具)
from PIL import ImageGrab
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
我只做了冯喜来和杨镖头的部分,其他人物的可以用同样的方法做出来,先走完流程,再写代码
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)
win32api.keybd_event(18,0,0,0)
win32api.keybd_event(9,0,0,0)
time.sleep(0.5)
win32api.keybd_event(13,0,0,0)
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)
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)
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)
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)
至此,回合制手游(如问道)的所有任务的脚本都可以用这三篇教程的所讲方法去做
若有更简洁的方法,欢迎指出