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-8from 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 AipOcrimport 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键位码是13win32api.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) #打强盗、无名剑客平均时间150smousemove_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)#和窃贼对战时间45smousemove_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)#从天墉城城中心/其他地图走到白帮忙花费15smousemove_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)

 

至此,回合制手游(如问道)的所有任务的脚本都可以用这三篇教程的所讲方法去做

若有更简洁的方法,欢迎指出

 

三篇教程的所有代码请点击这里获取

转载于:https://www.cnblogs.com/Java-Starter/p/9609671.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/352860.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

XSHELL下直接下载文件到本地(Windows)

转载自:http://www.cnblogs.com/davytitan/p/3966606.html xshell很好用,然后有时候想在windows和linux上传或下载某个文件,其实有个很简单的方法就是rz,sz 首先你的Ubuntu需要安装rz.sz(如果没有安装请执行以下命令,安装完的请跳过.其它版本linux请自行安装相应软…

linux操作系统2试题,RedHat Linux 9.0 操作系统测试题2

一、填空题(每空1分,共14分)1.任何Linux系统都至少需要两类分区:根分区和交换分区。2.CD-ROM标准的文件系统是iso9660。3.使用vi编辑器可以创建文本文件,在输入文件内容之前需要先按INSERT键进入插入模式,在保存之前需下先使用ESC…

HazelCast的Spring-Boot和Cache抽象

以前,我们是使用spring提供的默认Cache Manager来开始Spring Cache抽象的。 尽管这种方法可能适合我们对简单应用程序的需求,但是在出现复杂问题的情况下,我们需要使用具有更多功能的其他工具。 Hazelcast就是其中之一。 当涉及到基于JVM的应…

Ubuntu18.04 安装搜狗输入法后无法启动的问题

ibus 改选成fcitx后搜狗输入法照样没出来。 这里需要im-config 没有的话需要安装: sudo apt install im-config 然后在Terminal中执行 im-config 根据提示选择fcitx转载于:https://www.cnblogs.com/feipeng8848/p/9609877.html

linux华为路由器模拟器,华为路由器模拟器与实验内容.doc

华为路由器模拟器与实验内容华为的路由器模拟器及实验内容??2009-12-21 20:27:53|??分类: HYPERLINK "/ah..zhangrui/blog/" \l "m0&t1&cfks_080074086080086074092094074070087095083070092086084" \o "默认分类" 默认分…

_WIN32_WCE有什么用

转载自:http://blog.csdn.net/thanklife/article/details/21477561 _WIN32_WCE有什么用,我这里找了一些人的回应。由于目前我手头的源码有限,还没有找到定义之处。先这样保留着这个问题吧。以下是一些别人给的认识。 经常看到 #ifndef _WIN32_WCE 这是什…

zk ui_高级ZK:异步UI更新和后台处理–第1部分

zk ui异步UI更新非常有用,因为它们通常可以提高响应性,可用性和用户界面的总体感觉。 我将在这里重点介绍ZK框架,但是通常,相同的原理也适用于桌面UI(Swing,SWT)。 长时间运行的处理 有时您可能…

BZOJ 3223: Tyvj 1729 文艺平衡树-Splay树(区间翻转)模板题

3223: Tyvj 1729 文艺平衡树 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 6881 Solved: 4213[Submit][Status][Discuss]Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作&#…

在Spring中了解事务注释

1.简介 Spring为程序性和声明性事务提供支持。 1.1程序化交易 对于程序性事务,需要显式编写事务管理代码,以便在一切成功后提交,并在出现问题时回滚。 在这种情况下,事务管理代码与业务逻辑紧密绑定。 1.2声明式交易 声明式事…

GIS开源库shapeLib的使用方法

转自:http://www.cnblogs.com/liongis/archive/2012/10/23/2736015.html 近期研究了一下GIS开源库shapeLib读写ArcGIS数据的API函数,先整理一下,将各个API的用法介绍一下。 分为两个模块,shape API和DBF API,前者的读取…

linux 升级 iphone,Linux 5.13 更新有望增加对苹果 M1 处理器的支持

IT之家 4 月 10 日消息 预计 Linux 5.13 将初步支持苹果 Silicon M1 处理器,不过可能还需要几年时间才能完全支持。虽然已经在苹果 Silicon M1 上运行,但这是通过一系列的补丁,单纯是为了 Linux 能够在 M1 设备上启动而已,而现在 …

201771010118马昕璐

第一部分 理论知识的学习 第三章Java基本程序设计结构 1 基本知识: (1)标识符:标识符由字母、下划线、美元符号和数字组成,且第一个符号不能为数字。Hello、$1234、程序名、www_123都是合法标识符。 标识符可用作类名…

Xshell显示中文乱码问题

转载自:http://www.blogjava.net/RoyPayne/archive/2011/12/21/366899.htmlXshell对于嵌入式开发来说,是个非常不错的工具。但或许都有过被中文显示为乱码的问题感觉有点不爽。解决方法其实很简单的,即把xshell编码方式改成UTF-8即可。 [文…

apache wicket_Apache Wicket:记住我的功能

apache wicket在Web应用程序中,很常见的是具有“记住我”功能,该功能使用户每次访问我们的网站时都能自动登录。 可以使用Spring Security来实现这种功能,但我认为将基于请求的身份验证框架与基于组件的Web框架一起使用并不是最好的主意。 这…

linux pap认证,配置PPP PAP 认证

配置PPP PAP 认证:1. 单向认证:R1启动pap R1为主验证方,R2为被验证方。r1(config)#inter s1/0r1(config-if)#ip add 202.146.0.1 255.255.255.0r1(config-if)#no shutdownr1(config-if)#encapsulation pppr1(config-if)#ppp authenticatin pa…

Shell编程关于Sha-Bang(#!)

转载自:http://blog.chinaunix.net/uid-26657936-id-3066136.html Q. #!的名字为什么叫Sha-Bang? A. Sha-Bang是Sharp和Bang的组合词。Sharp for #, Bang for ! 类似的情况是,C#通常被称为C SharpQ. Sha-Bang(#!)是不是注释?A. 不…

您应该保持联系的十大高级Java对话

在线讲座和视频是学习软件开发新事物的主要资源之一。 您可以找到Java专家与您分享他们的经验,而不必坐下来。 在下面的文章中,我们收集了10位我们最喜欢的演讲者和主题,我们相信每个Java开发人员都应该注意。 获取爆米花,坐下来…

c语言定时器作用,Go语言定时器实现原理及作用

对于任何一个正在运行的应用,如何获取准确的绝对时间都非常重要,但是在一个分布式系统中我们很难保证各个节点上绝对时间的一致性,哪怕通过 NTP 这种标准的对时协议也只能把时间的误差控制在毫秒级,所以相对时间在一个分布式系统中…

非常详细的/etc/passwd解释

root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin desktop:x:80:80:desktop:/var/lib/menu/kde:/sbin/nologin mengqc:x:500:500:mengqc:/home/mengqc:/bin/bash 在该文件中,每一行用户记录的各个数据段…

QT:基本知识(一);

注: 该博文为扩展型; 1) QString转换为LPCTSTR QString szStr; LPCTSTR str (LPWSTR)(szStr.utf16()); 2) 中文乱码解决; QTextCodec *pCodec QTextCode::codecForName("gb2312"); if(!pCodec) return ""; std…