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服务器端的开发必备知 ...
随机推荐
- Windows和linux通过命令互传文件
下载pscp https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html 放在Windows的c:windows/system32下 ...
- mac下MySQL、MysqL workbench的安装与配置配置
请戳这里 但是3.4的创建instance还不会
- python中的基本数据类型(int,bool,str)及字符串操作
一. 基本数据类型概况 1. int 整数,主要用来进行数学运算 2. str 字符串,可以保存少量数据并进行相应的操作 3. bool 布尔值,判断真假,True,False 4. list ...
- Java中的内部类(二)成员内部类
Java中的成员内部类(实例内部类):相当于类中的一个成员变量,下面通过一个例子来观察成员内部类的特点 public class Outer { //定义一个实例变量和一个静态变量 private i ...
- JavaScript一个页面中有多个audio标签,其中一个播放结束后自动播放下一个,audio连续播放
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- CTF中密码学一些基础
本文作者:i春秋签约作家MAX. 凯撒密码作为一种最为古老的对称加密体制,在古罗马的时候都已经很流行,他的基本思想是:通过把字母移动一定的位数来实现加密和解密. 给大家先找两道题,来一起探讨基础密码学 ...
- 【Hadoop & Ecilpse】Exception in thread "main" org.apache.hadoop.security.AccessControlException: Permission denied: user=bruce, access=WRITE, inode="/out2/_temporary/0":atguigu:supergroup:drwxr-xr-x
问题再现: 使用本机 Ecilpse (Windows环境) 去访问远程 hadoop 集群出现以下异常: 问题原因: 因为远程提交的情况下如果没有 hadoop 的系统环境变量,就会读取当前主机的 ...
- 总结day13 ----内置函数
内置函数 我们一起来看看python里的内置函数.什么是内置函数?就是Python给你提供的,拿来直接用的函数,比如print,input等等.截止到python版本3.6.2,现在python一共为 ...
- day00 预习 ------基础数据类型预习 ,int ,str ,bool ,dict ,set ,切片,等相关
知识点明确 1 int 2 str 3 元祖 4.列表 5. 字典 6 集合 7 布尔 1 int 数据类型 int 数据类型指的是. 数字型的内容 ,主要用于计算, 2 str 字符类型 str ...
- 编程开发之--java多线程学习总结(1)问题引入与概念叙述
1.经典问题,火车站售票,公共票源箱,多个窗口同时取箱中车票销售 package com.lfy.ThreadsSynchronize; /** * 解决办法分析:即我们不能同时让超过两个以上的线程进 ...