Python制作回合制手游外挂简单教程(下)
引入:
接着上篇的博文,今天我们讲如何实现助人为乐
前期准备:
如何获取图片中指定文字的坐标?
我的思路是截取一个小区域,再根据小区域左上角的坐标获取中央坐标
例如:

获取坐上角的x和y坐标,测量x到红点的横向距离x1,在测量y点到红点的纵向距离y1
可以得出红点的坐标(x+x1,y+y1)
复制代码,运行
X1 =
X2 =
time.sleep()
screenshot(X1, , X2, ,helpedName1)#截图 mousemove_click(X1 + , Y + )
截取了一小区域,然后获得了中心坐标,这里的200和30是自己测量出来的
如果有更好更直接的获取图片中指定文字的坐标的方法可以下方评论告诉我,我也学习学习
开始制作外挂:
详细代码如下:
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-
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()
win32api.keybd_event(,,,) #alt键位码是18
win32api.keybd_event(,,,) #tab键位码是9
time.sleep(0.5)
win32api.keybd_event(,,,) #enter键位码是13 win32api.keybd_event(,,win32con.KEYEVENTF_KEYUP,) #释放按键
win32api.keybd_event(,,win32con.KEYEVENTF_KEYUP,)
win32api.keybd_event(,,win32con.KEYEVENTF_KEYUP,)
time.sleep() def mousemove_click(x,y):
autopy.mouse.smooth_move(x, y)
autopy.mouse.click() #帮助冯喜来
def fengXiLai(Y):
mousemove_click(X1+,Y+) #鼠标移到按钮中央,点击冯喜来按钮
for i in range(,,):
mousemove_click(,)
time.sleep() #打强盗、无名剑客平均时间150s
mousemove_click(, )#跳过对话
mousemove_click(, )
time.sleep()
mousemove_click(, )# 白邦芒处领赏 #帮助杨镖头
def yangBiaoTou(Y):
mousemove_click(X1 + , Y + )
for i in range(,,):
#和张老板对话,传递心意,找张老板,找玄武
mousemove_click(, )#点任务栏 和张老板对话
time.sleep()
mousemove_click(, ) # 跳过对话 mousemove_click(, ) # 点任务栏 寻找窃贼
time.sleep()#和窃贼对战时间45s
mousemove_click(, ) # 跳过对话 for i in range(,,):
#向张老板复命,月老,莲花姑娘,张老板
mousemove_click(, ) # 点任务栏 向张老板复命
time.sleep()
mousemove_click(, ) # 跳过对话 mousemove_click(, ) # 活动的坐标 mousemove_click(,) #前往的坐标 time.sleep()#从天墉城城中心/其他地图走到白帮忙花费15s mousemove_click(,) #领赏 #为了获取图片中指定文字的坐标,这里需要分开截图
helpedName1 = "helpedName1"
X1 =
X2 =
time.sleep()
screenshot(X1, , X2, ,helpedName1)#截图 judgehelpedNameStr1 = characterRecognition('E:\\python_project\\Asktao_Automation\\resource\\'+helpedName1+'.png')#文字识别 helpedName2 = "helpedName2" screenshot(X1, , X2, ,helpedName2)#截图 judgehelpedNameStr2 = characterRecognition('E:\\python_project\\Asktao_Automation\\resource\\'+helpedName2+'.png')#文字识别
if '冯喜来' in judgehelpedNameStr1:
fengXiLai()
elif '冯喜来' in judgehelpedNameStr2:
fengXiLai()
elif '杨镖头' in judgehelpedNameStr1:
yangBiaoTou()
elif '杨镖头' in judgehelpedNameStr2:
yangBiaoTou()
至此,回合制手游(如问道)的所有任务的脚本都可以用这三篇教程的所讲方法去做
若有更简洁的方法,欢迎指出
三篇教程的所有代码请点击这里获取
Python制作回合制手游外挂简单教程(下)的更多相关文章
- Python制作回合制手游外挂简单教程(上)
引入: 每次玩回合制游戏的时候,反反复复的日常任务让人不胜其烦 玩问道的时候,我们希望能够自动刷道,玩梦幻希望能自动做师门.捉鬼等等 说明: 该外挂只能模拟鼠标键盘操作,并不能修改游戏数据 我这里使用 ...
- Python制作回合制手游外挂简单教程(中)
接着上篇的博文,今天我们讲如何实现自动组队刷道 引入: 自动组队刷道的流程是先点击刷道按钮.再点击前往按钮.再点击便捷组队······ 这些操作上篇博文已经告诉我们怎么做了,利用picpick丈量坐标 ...
- Android手游外挂入侵----寓攻于守,方能破敌
欢迎访问网易云社区,了解更多网易技术产品运营经验. 手游外挂入侵 随着各种爆款手游的风靡,目前手机游戏的占比用户已经形成一个巨大的市场,市场上你争我夺,有将PC版本移植到手机中,也有新模式手游的推出. ...
- python制作爬虫爬取京东商品评论教程
作者:蓝鲸 类型:转载 本文是继前2篇Python爬虫系列文章的后续篇,给大家介绍的是如何使用Python爬取京东商品评论信息的方法,并根据数据绘制成各种统计图表,非常的细致,有需要的小伙伴可以参考下 ...
- 【转载】QQ炫舞手游自制谱子教程(星动模式)
第一步:计算ET和BPM: 抄送原作者部落链接:https://buluo.qq.com/p/detail.html?bid=368006&pid=981862-1529828677& ...
- 腾讯WeTest《2017中国移动游戏质量白皮书》开放预约,再为国内手游把把脉
产品为王,质量先行.如果说2016年是爆款手游相继崛起的一年,那么2017年则更像是打磨精品.建立生态的高手切磋之年.守住一个游戏的质量生命线,方能建立健康生态,方能在如火如荼的行业竞争中角逐到最后. ...
- 类传奇手游简单Demo
这是一年多前自己闲时以Unity2D制作的很粗糙简单的传奇类手游Demo(单机),已很久未作继续开发. 此小Demo初步完成或实现了如下功能(有诸多考虑欠妥甚至不完善之处): 1).图片资源打包方式. ...
- 手游[追忆之青]动画导演:2D动画制作技巧
转自:http://www.gamelook.com.cn/2016/09/264591 GameLook报道/由一般法人计算机娱乐协会(CESA)主办的CEDEC2016日前在日本横滨举行,诸多开发 ...
- Unity制作王者荣耀商业级手游
<王者荣耀>这种现象级手机游戏是如何制作出来的呢?本文以<王者荣耀>MOBO类型的多人在线战术竞技游戏为入口,覆盖Unity游戏制作开发前端与Node.js服务器端的开发必备知 ...
随机推荐
- 使用pscp/pslurp批量并发分发/回收文件
pssh pssh -h ip文件 本地文件 远程目录或文件 pslurp pslurp -h ip文件 -L 本地目录 远程文件 本地文件名称
- pipeline构建时报错问题解决
问题: 1.No such field found: field java.lang.String sh. Administrators can decide whether to approve o ...
- 日志框架 NLog
这里按老规矩先进行和其它产品进行比较: 目前在.net平台存在两个比较老牌的日志框架分别为Log4net和NLog. 我们进行对这两种框架进行比较下 Log4net Log4net是一个老牌的日志框架 ...
- .NET中的异常处理机制(一)
1.异常处理的总体指导思想 学习C#中的异常处理机制,大概要了解以下几点: 首先,我们需要知道的事所有具体异常都是继承自System.Exception基类的. 其次,要熟悉FCL类库内置好的一些异常 ...
- c++11新特性总结(转。加上重点)
1.类型与变量相关 1.1.nullptr: 取代了NULL,专用于空指针 1.2.constexpr: 近似const, 可以修饰变量,也可以修饰函数, 修饰变量如: const int globa ...
- yield 学习
什么是生成器 生成器是可以迭代的,但是你只可以读取它一次 ,因为它并不把所有的值放在内存中,它是实时地生成数据. yield 理解 通常的for...in...循环中,in后面是一个数组,这个数组就是 ...
- Git 教程 -- 基于自己学习记录
Git 教程 -- 基于自己学习记录 1. 引言 由于学校布置了一项熟悉 git 和 svn 操作的实验,所以自己重新温习了下 git,记录过程在这. 2. 注册登录 GitHub. 3. 选择一个仓 ...
- [Swift实际操作]七、常见概念-(13)使用UIScreen查询设备屏幕信息
本文将为你演示,如何获得设备的屏幕信息,了解设备的屏幕尺寸等信息,才能做出适配性更好的应用程序. 首先导入需要使用到的界面工具框架 import UIKit 然后通过UIScreen类,就可以获得设备 ...
- 浅谈Android选项卡(四)
前面几篇介绍的选项的用法,基本上使用TabActivity.ViewPager.已经基本上满足开发需求了.但是这里再介绍一种小技巧,在有的时候,感觉使用前面的ViewPager和Fragment时候, ...
- spring中scope的prototype与singleton区别
最近在研究单例模式,突然想起项目中以下配置,scope="singleton" 和 scope="prototype"到底有何区别呢?以下做下简要分析. < ...