手游传奇自动打怪脚本手游传奇助手哪个好

防不胜防 2024-08-09 22:31:56 传奇手游 591 ℃
正文
一、布景

先交代下布景手游传奇主动打怪脚本,就是疫情期间手游传奇主动打怪脚本,随意玩了一款游戏,玩了后发现,游戏使命太繁重了,为了兼顾进修和游戏,所以就萌发了本身脱手开发手游辅助外挂手游传奇主动打怪脚本的设法,调研了几个手机主动化测试平台最初选中了uiautomator2,然后有了那边文章 《uiautomator2介绍及情况搭建》 以及文章《uiautomator2一分钟实现辅助外挂》若是认真读过第二篇文章的伴侣就会发现,前面说的外挂就是 按时使命+ 模仿用户点击,若是碰上复杂点场景,就完全无法适应了,好比下面几种

手游传奇主动打怪脚本

Boss有刷新又时间间隔,然后区分“野外”,”秘境“,”神谕“,每个刷新时间都差别,那么那个辅助脚本怎么写呢,轮训点击必定不现实,无法快人一步抢先刷到怪,怎么处理呢? 当然是如题目写的 那样,通过阅读那篇博文,各人会领会到那些常识

uiautomator2 截图并裁剪python + tesseract 实现文字OCR识别tesseract 安拆及留意事项以及带各人看辅助外挂是若何一步步开发完成的。二、需求合成

要实现定时去刷怪,那么必定需要上图红色框中阿谁刷新时间,那个文字又无法通过简单的通过控件去识别,那么就只能通过图片去实现了,我那里的思绪是用网上开源的OCR文字识别库识别出时间,到那里又不能不赞赏python扩展才能实是强大,关键是拓展起来超等easy,不愧是“胶水语言”。好了,长话短说,文件OCR识别,我那里用的是tesseract,下面会介绍 tesseract 的安拆简单利用。继续我们刚刚的合成,假设能够通过图片停止文字识别,那么要实现一个按时抢怪使命,我们需要的工做如下:1、模仿点击到刷怪页面,并停止截图2、截图到的图片做裁剪(次要是过滤其手游传奇主动打怪脚本他文字识别干扰)3、对裁剪到的图片做 灰度处置(好比彩色变黑白),然后二值化、降噪等一系列操做,次要是去除布景和一些其他的干扰。4、识别到的数字转化为秒,然后成立按时使命5、按时启动抢怪使命,截图每个步调图片,拼接成一张图,供人工查下成果。6、截反复前面5个步调实现主动刷挂打配备好了,下面我们一步步来实现那个效果。

三、脚本开发理论1、tesseract 安拆及测试

若是要利用Tesseract库,起首需要安拆它到你的机器上。macOS用户,我们利用Homebrew 去安拆Tesseract:

$ brew install tesseract1

当然有时候Homebrew 可能更新招致卡住,最简单的法子是在 .bash_profile 文件中新增一行,暂时封闭更新

export HOMEBREW_NO_AUTO_UPDATE=true1

安拆完成后 tesseract -v 查看能否安拆完成

手游传奇主动打怪脚本

能够通过号令测试一把好比下面一张图片

手游传奇主动打怪脚本

我们通过号令 tesseract /Users/bifeng/222222.png stdout digits

手游传奇主动打怪脚本

能够看出一会儿就把数字识别出来了,那里识别得是数字,若是是中文则需要改为tesseract /Users/bifeng/3333.jpg stdout -l chi_sim-l 后面得参数代表识别得语言 chi_sim 代表是中文简体。当然中文简体字体是需要额外去下载字库得,去往https://github.com/tesseract-ocr/tessdata下载中文数据集chi_sim.traineddata,把它放到那目次下:/usr/local/Cellar/tesseract/对应版本/tessdata/目次下即可更多Tesseract的介绍能够拜候GitHub 那里就不做过多发散了

2、python利用Tesseract库识别文字

其其实良多场景中,城市有验证码情况,一般我们都是用 python + Tesseract来识别验证码,那里我们用来识别手游上倒计时也是“适得其用” 来,利用体例如下,起首安拆扩展库a、pip install pytesseract 用于python操做pytesseractb、对要识此外图片做降噪,简单的说就是对图片做简单处置,如裁剪指定区域,过滤其他文字的干扰,做灰度化、二值化等一些操做,供给文字识此外准确性,详细代码能够拜见如下#!/usr/bin/python

############################## #encoding=utf-8# bifeng 2020.03.23# python tesseract 文字识别东西类###############################import pytesseractfrom PIL import Imageclass TesseractUtils(object): @staticmethod def imgae_to_str(image): # 处置成黑白图 image_gray = image.convert("L") # image_gray.show() # 进一步加强,利用二值化处置 image_two = image_gray.point(lambda x: 255 if x > 129 else 0) #image_two.show() # content = pytesseract.image_to_string(image) # 解析图片 content = pytesseract.image_to_string(image_two, lang='chi_sim') print(content) return content @staticmethod def crop_image_to_str(image, left, top, right, bottom): '''识别图片部门区域位置''' box = (left, top, right, bottom) crop_img = image.crop(box) # crop_img.show() image_gray = crop_img.convert("L") # image_gray.show() # 进一步加强,利用二值化处置 image_two = image_gray.point(lambda x: 255 if x > 129 else 0) #image_two.show() content = pytesseract.image_to_string(image_two) #识别中文 # content = pytesseract.image_to_string(crop_img, lang='chi_sim') print(content) return content12345678910111213141516171819202122232425262728293031323334353637

利用办法,通过通过挪用api,能够识别指定区域图片如:

TesseractUtils.crop_image_to_str(crop_img, 767, 289, 915, 334)1

那里 767, 289, 915, 334 别离代表图片区域 left, top, right, bottom 坐标如下面一张图片

手游传奇主动打怪脚本

767, 289, 915, 334 刚好代表红色框框区域,运行后我们能够得到00:12:30 如许一个时间 ,

3、构建按时使命,按时刷怪

转换我们把它转化为秒

def timeStr2s(t): '''xx:xx:xx转换为秒''' if t is None: return 10000 time = 10000 try: h, m, s = t.strip().split(":") time = int(h) * 3600 + int(m) * 60 + int(s) except: print("格局不合错误 : " + t) return time1234567891011

然后在成立按时使命

fristJob = TesseractUtils.crop_image_to_str(ywImg, 767, 289, 915, 334) currSec = time.time()+ StringUtils.timeStr2s(fristJob) tiemstr = time.strftime("%H:%M:%S", time.localtime(currSec)) LogEx.d("excuteJobList in " + tiemstr) schedule.every().day.at(tiemstr).do(excuteJobList)12345

如许一个按时刷挂使命就完成了,剩下的根本就是封拆刷挂,施行刷改,那里我是那么封拆的

#!/usr/bin/python# #encoding=utf-8# bifeng 2020.03.23# 单步施行途径###########################class CaseInfo(object): def __init__(self): # 用例名称 self.name = '' # 模仿施行列表 self.clicklist = [] # 单步施行休眠时间 self.sleepTime = 2 # 图片裁取区域 self.cropBox = [] # 施行列表单步反复项 self.innerRepeatIndex = 2 # 默认轮回次数 self.innerRepeatCount = 20 # 用例延迟几秒后施行 self.excuteDelayTime = 30123456789101112131415161718192021

name 代表名字clicklist 代表施行途径,好比一次野外使命,他有良多点,那么他的途径就是如下:

case_table = { 'yewai0': [ # Boss坐标 (1028, 1321), # 野外 (329, 1665), # 第1个boss 885,406 (885, 406), # 返回 (1009, 1831), ]}1234567891011

self.innerRepeatCount = 20 代表,boss 挑战按钮 (885, 406), 那个我会轮回施行良多变,包管我第一个按下,从而完成刷改功用,封拆好后,刷挂的代码就很简单了

def excuteJobList(): LogEx.v("----------excuteJobList start---------------------") # global runner runner = LegendRunner(adbConnectIp) caseItem = caseList.pop() LogEx.v("case list size = " + str(len(caseList))) clickList = caseItem.getClickList() LogEx.v("excute job " + caseItem.toString()) for index in range(0, len(clickList)): LogEx.d("click : " + str(clickList[index][0]) + " " + str(clickList[index][1])) runner.click(clickList[index][0], clickList[index][1]) if index == caseItem.getInnerRepeatIndex(): caseItem.setRepeatCount(90) for i in range(0, caseItem.getRepeatCount()): LogEx.d("click : " + str(i) + " " + str(clickList[index][0]) + " " + str(clickList[index][1])) runner.click(clickList[index][0], clickList[index][1], 0) time.sleep(0.4) elif index == len(clickList) - 1: timestamp = time.strftime("%H:%M:%S", time.localtime(time.time())) LogEx.d("--sleep 80 s---------: " + timestamp) runner.d.screenshot(os.getcwd() + "/image/" + timestamp + ".png") time.sleep(80) currSec = time.time() + 3 tiemstr = time.strftime("%H:%M:%S", time.localtime(currSec)) schedule.every().day.at(tiemstr).do(scheduleNextJob) LogEx.v("----------excuteJobList end---------------------")123456789101112131415161718192021222324252627

我只需要 for index in range(0, len(clickList)): 轮回施行那个clicklist 就行了,然后在每个步调下截图一张,使命完成后把所有的图片拼接成一张图(若何拼接见文章《Python东西类之PIL.Image库快速实现多图拼接》)施行完一个刷改使命,最初我们有成立下一个刷改使命

def scheduleNextJob(): LogEx.v("----------scheduleNextJob start---------------------") global runner # runner = LegendRunner(adbConnectIp) # 获取比来的boss按时使命 caseItem = runner.getRecentlyBossTask() # 参加到使命列表 caseList.append(caseItem) # 延时 currSec = time.time() + caseItem.getExcuteDelayTime() - 50 if currSec < time.time(): currSec = time.time() + 1 tiemstr = time.strftime("%H:%M:%S", time.localtime(currSec)) LogEx.d("excuteJobList in " + tiemstr) schedule.every().day.at(tiemstr).do(excuteJobList) LogEx.v("----------scheduleNextJob end---------------------")12345678910111213141516

扫码到比来boss使命-》按时施行-》 施行完继续扫码下一个比来boss使命,如许不断轮回下去,就完成了一个简单的主动按时刷怪使命。

4、最末效果

看下最末效果

手游传奇主动打怪脚本

刷怪过程中我们做了每个步调的截图,我们看下一次刷怪的效果截图

手游传奇主动打怪脚本

如许我们的脚本就开发完成了,剩下的只需要开启脚本,喝上一杯茶,等上一段时候回来收成刷怪掉落的神拆就能够了,是不是很爽.

本文TAG:

传奇手游发布网_传奇手游sf发布网新服_传奇手游sf发布网_传奇手游发布网站_手游传奇发布网