Linux编程 点击右侧关注,免费入门到精通!

作者丨Meowcolm024

https://www.jianshu.com/p/b45416bed86f

前言

现在版本官方已经有了自动御魂、觉醒和探索的脚本了。

既然是这样那不如就搞一个抽卡的脚本好了,这样大佬(土豪,欧皇)们

几百连抽就不用画符,和点SSR点到手软了XD。

(Ps:过年了,祝大家SSR抽到手软~)

不简单的具体实现

1、通过adb截图判断是否在抽卡界面

2、在的话,使用matchTemplate()函数识别开始召唤的按钮

3、点击,画符

4、同样使用matchTemplate()函数和模板对比识别SSR和SR并点击

5、若识别到“十连召唤”(即抽卡结束)点击返回

开始抽卡的时候要识别的区域

出现SSR或SR要识别的区域

结束时要识别的区域

这里主要通过adb来实现对手机的模拟点按和滑动

(手机记得要开USB侦错啊QWQ)

import os#模拟点按def tap(x0, y0):    cmdTap = 'adb shell input tap {x1} {y1}'.format(        x1=x0,        y1=y0    )    print(cmdTap)    os.system(cmdTap)#模拟滑动(用来画符的)def swipe(x0, y0, x1, y1, delay0):    cmdSwipe = 'adb shell input swipe {x2} {y2} {x3} {y3} {delay1}'.format(        x2=x0,        y2=y0,        x3=x1,        y3=y1,        delay1=delay0    )    print(cmdSwipe)    os.system(cmdSwipe)#截图并返回图片def screenshot():    os.system('adb shell screencap -p /sdcard/sh.png')    os.system('adb pull /sdcard/sh.png .')    return "sh.png"

上面这个基本上是对手机的所有操作OWO。

(我将这个单独保存在了项目目录的/lib/ats.py中,这样主程序就可以直接调用啦XD)

然后来讲一下这里最核心的操作:图像识别orz

#我们要用的其实就只有这一个库import cv2#不过我们还是要。。。import timeimport randomimport lib.ats #233 这个就是刚才那段代码import numpy as np

好的我们先来个例子,就从识别开始抽卡的按钮开始。。。

def start(sh):    #一看就知道是导入图片orz    imgSTART = cv2.imread(sh, 0)    templateSTART = cv2.imread('res/START.png', 0) #我的模板保存在了项目目录的/res文件夹里    #和模板对比    resSTART = cv2.matchTemplate(imgSTART, templateSTART, cv2.TM_CCOEFF_NORMED)    thresholdSTART = 0.85    pos = []    #如果result大于threshold才可以执行(不在界面你抽个啥)    if (resSTART >= thresholdSTART).any():        loc = np.where(resSTART >= thresholdSTART)        for pt in zip(*loc[::-1]): #刚学Python没多久,我只知道这个压缩后切片QAQ            pos.append(pt) #更新list        return pos #返回按钮位置    else:        return 0

然后是抽到SSR的时候

(其实这个完全可以不写,因为SSR根本不存在(手动滑稽)XD)

def ssr(sh):    #这个不随机点说不定有封号的可能。。。    xSSR = random.randrange(800, 1200)    ySSR = random.randrange(400, 800)    #导入图像和模板    imgSSR = cv2.imread(sh, 0)    templateSSR = cv2.imread('res/SR.png', 0)    #和模板对比    resSSR = cv2.matchTemplate(imgSSR, templateSSR, cv2.TM_CCOEFF_NORMED)    thresholdSSR = 0.30 #这里啊QAQ可能是我的模板不是很好,大于0.3基本识别不出来    #只要有SSR就行了,然后点一下    if (resSSR >= thresholdSSR).any():        lib.ats.tap(xSSR, ySSR)

主程序无非就是搞一个循环不断地截图,判断有没有出SR或SSR还有是不是已经抽完了而已

def main():    #里面的delay gap x1 y1 x2 y2 dly 都随机产生这里就懒得写了XD    #这里是截图判断是否在抽卡界面    sh = lib.ats.screenshot()    pos = start(sh)    if pos != 0:        lib.ats.tap(pos[0][0], pos[0][1]) #从刚才的代码可以看到返回的是二维数组我们就选第一个好了        lib.ats.swipe(x1, y1, x2, y2, dly)        time.sleep(delay) #十连开始还有点动画的(感觉这个不加也行)        while lib.ats.screenshot():  #不断的截图Zzz...            gap = random.uniform(0.5, 1.5)            time.sleep(gap)            sh = lib.ats.screenshot()            if end(sh) == 1: #抽卡没结束(匹配率低于threshold)返回1,否则返回0                ssr(sh)                sr(sh)            elif end(sh) == 0: #结束的时候随机按一下                xEND = random.randrange(800, 1200)                yEND = random.randrange(400, 800)                lib.ats.tap(xEND, yEND)                print("Finished")                break    else:        print("Error") #如果不在抽卡界面的话。。。

总结

 推荐↓↓↓ 

?16个技术公众号】都在这里!

涵盖:程序员大咖、源码共读、程序员共读、数据结构与算法、黑客技术和网络安全、大数据科技、编程前端、Java、Python、Web编程开发、Android、iOS开发、Linux、数据库研发、幽默程序员等。

万水千山总是情,点个 “ 好看” 行不行

利用Python实现阴阳师自动抽卡相关推荐

  1. python抽卡游戏,利用Python实现阴阳师自动抽卡,SSR手到擒来,开始爆肝!

    前言 现在版本官方已经有了自动御魂.觉醒和探索的脚本了. 既然是这样那不如就搞一个抽卡的脚本好了,这样大佬(土豪,欧皇)们 几百连抽就不用画符,和点SSR点到手软了XD. (Ps:过年了,祝大家SSR ...

  2. 利用Python实现阴阳师自动抽卡,SSR手到擒来,开始爆肝!

    前言 现在版本官方已经有了自动御魂.觉醒和探索的脚本了. 既然是这样那不如就搞一个抽卡的脚本好了,这样大佬(土豪,欧皇)们 几百连抽就不用画符,和点SSR点到手软了XD. (Ps:过年了,祝大家SSR ...

  3. python实现阴阳师自动刷御魂脚本_用Python实现FGO自动战斗脚本

    我家黑贞! 1. 背景 Fate/Grand Order(非的肝不过欧的)作为索尼为了拯救自己不倒闭而开发的面向月厨的骗氪养成抽卡爆肝游戏,居然没有像隔壁<阴阳师>的自动战斗系统(看看别人 ...

  4. python实现app自动签到器_利用Python实现App自动签到领取积分

    要自动签到,最简单的是打开页面分析请求,然后我们用脚本实现请求的自动化.但是发现食行没有页面,只有 APP,这不是一个好消息,这意味着需要抓包处理了. 有需要Python学习资料的小伙伴吗?小编整理[ ...

  5. 利用Python模拟鼠标自动完成MM32-LINK程序下载

    简 介: 编写了利用Python控制MM32-LINK自动下载程序,这可以减少在开发过程中的操作. MM32-LINK在打开程序过程中,对话框的标题出现错误,"Load form file& ...

  6. python 打卡记录代码_利用Python实现对考勤打卡数据处理的总结

    利用Python实现对考勤打卡数据处理的总结 一.背景交代 二.说明 三. 8种方法 1. 查看文件是否存在 2. 导入excel文件,并把数据保存为dataframe格式 3. 计算程序运行时间 4 ...

  7. 利用Python实现校园网自动登录(部署在树莓派)

    利用Python实现校园网自动登录(部署在树莓派) 项目场景: 在实验室的时候,每天的第一个苦恼就是面对不自动弹窗的校园网登录,且一个账号仅支持两个设备. 实验室使用了路由器,多个设备使用同一个账号上 ...

  8. python京东自动签到_利用python Selenium实现自动登陆京东签到领金币功能

    如何自动登陆京东? 我们先来看一下京东的登陆页面,如下图所示: [插入图片,登陆页面] 登陆框就是右面这一个框框了,但是目前我们遇到一个困呐,默认的登陆方式是扫码登陆,如果我们想要以用户民个.密码的形 ...

  9. Python进行网页自动打卡系统

    Python进行网页自动打卡系统 安装Python 下载Chromedriver 安装selenium 设置定时自动运行 Python程序 安装Python 可以直接Python官网下载,需要进行路径 ...

最新文章

  1. 南邮java实验一报告_南邮JAVA程序设计实验1 综合图形界面程序设计
  2. 本地如何预览php文件上传,如何实现js上传图片本地预览同时支持预览截图的功能...
  3. 多线程不重复读取数据_别再犯错了,多线程访问同一个资源一定要上锁?
  4. git 报错:Please make sure you have the correct access rights and the repository exists
  5. 将python源文件打包成exe文件
  6. 【报告分享】2021年双11电商营销全景洞察.pdf(附下载链接)
  7. php扩展介绍,初步介绍PHP扩展开发经验分享
  8. 设计艺术学院院长 读《未来产品的设计》这本书
  9. c++两个文档匹配数据_MongoDB 数据库的命名、设计规范
  10. Golang Gin实践 连载十六 在图片上绘制文字
  11. wxParse空格解析不生效的解决方案
  12. python入门自学软件手机版_python编程入门
  13. linux 实时显示网速,linux 实时显示网速bash
  14. java小项目之简单聊天室
  15. RouterOS如何实现多线路带宽叠加功能
  16. 双稳态电路的两个稳定状态是什么_一文为你详解继电器的工作原理及电路
  17. LGB、XGB、CBT参数
  18. 推荐4款非常实用的电脑软件
  19. 无线网卡的工作模式--ath9k网卡驱动开发总结(一)
  20. 计算机软考网络工程师难度大吗,国家软考的网络工程师与CCNP相比,哪个难?...

热门文章

  1. 装饰装修类小程序开发
  2. 学术论文等级划分(包括EI会议论文)
  3. 形式语言与自动机 Part.1绪论, Part.2 语言与文法
  4. 贤鱼的刷题日常【c++动态规划】4978:宠物小精灵之收服
  5. 7z001怎么解压在安卓手机上面_安卓手机来电闪光灯怎么设置
  6. 如何删除kafka消费组
  7. dom4j api 详解
  8. 利用命令行实现图片转换等操作--ImageMagick
  9. Python数据分析_美国犯罪数据_US_Crime_Rates EDA.csv
  10. wilcoxon rank sum test R代码