1. 想法

突然想搞一个FGO的脚本,但还是决定先从阴阳师开始入手

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

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

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

2. 实现

参考了CSDN上两篇关于阴阳师探索和自动御灵的文章

简单讲一下思路:

通过图像识别(使用cv2这个库)来识别开始抽的蓝票、出现SSR(或SR)和十连抽结束这几个需要点按的场景。然后自动点按就可以了。

不简单的讲一下具体实现

(orz简书的markdown不支持流程图)

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

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

点击,画符

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

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

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

出现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 time

import random

import 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和这个代码其实是一样的,无非就是模板不同orz.

但我的模板实在是太辣鸡了所以我把threshold设成了0.3(也就是说只要30%匹配就行了orz)所以。。。我的SSR和SR识别都混在了一起,也就是说无论出的是SR还是SSR都会按两次QAQ(R的话想必也是这样,只是用了图片测试。。。并没有票给我测试QAQ

结束的识别和点击其实也和这个也差不多。。。

好了基本上就只剩下主程序的代码了OWO

主程序无非就是搞一个循环不断地截图,判断有没有出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") #如果不在抽卡界面的话。。。

OWO基本上整个程序的吗都打上来了。。。

整个完整的项目已经放到了Github上面,想看完整的就自己去看看咯QWQ

3. 总结

我觉得其实没什么好总结的orz

其实感觉抽卡的脚本真的没什么用。。。

好好学Python吧

如果有Bug和更好的想法记得告诉我哦

python阴阳师自动狗粮脚本_用Python实现阴阳师自动抽卡相关推荐

  1. python写自动答题脚本_编写Python脚本拉取优学院答案

    上个月审计了云班课和优学院的前端代码,实现了强制修改视频进度和获取选择题答案的功能.但是单个发包效率太低了,昨晚开始着手写了一个脚本,早上修改了一下,基本功能写出来了.考虑到风险,这个脚本是获取答案, ...

  2. python怎么写游戏脚本_用PYTHON做一个简单的游戏脚本(基础,详细)

    引言 这段时间迷上了玩点点点的小游戏,但是某些重复的环节着实无聊,就想着能不能用PYTHON做一个游戏脚本,不过为了熟悉需要做脚本的各个模块,于是打算在4399上找一个比较像的游戏做个脚本练练手,后来 ...

  3. python编写网页游戏脚本_用Python脚本做一些网页游戏中力所能及的自动化任务

    下面是一段自动登录360传奇霸业游戏的脚本: from pymouse importPyMouseimporttimeimportwebbrowserfrom pykeyboard importPyK ...

  4. python传奇自动打怪脚本_易语言传奇sf自动打怪脚本源码

    從目前的傳奇推出的新地圖來看,闖赤月殺蜘蛛還是很刺激的.特別是像我這樣的老玩家,在傳奇中混了很長一段時間了,殺一些簡單的怪,已經很乏味了.好不容易出了新地圖,總不可能放過吧,但大家也別小看了這些蜘蛛哦 ...

  5. python批量拷贝数据脚本_使用python来玩转ensp~3-写个批量备份配置文件脚本

    目录回顾: 根据前面所学习的知识,可以远程登录设备下发命令等,现在已经可以转化为生产力了哈,今天小Q要实现的就是一个批量备份配置的小东西, 小Q通过学习产品文档了解到,可以通过以下四种方法进行备份配置 ...

  6. python 首次登陆outlook 脚本_记Python“用户环境”的一次完美应用

    在之前写过一篇关于虚拟环境使用的文章,但是还没有好好的介绍一下 Python 的用户环境,原因是自己一直没遇到要使用 用户环境 的使用场景,所以就一直懒得写.恰巧这两天,自己遇到了一个使用用户环境的体 ...

  7. python做按键精灵脚本_使用Python实现一个按键精灵 | 蓝士钦

    @HANK1998 其实,你这个代码,还有一个问题,鼠标键盘动作回放时,顺序会乱,线程同步问题,做不到鼠标动作和键盘动作交叉执行.,,我能力不太够了,,学的不深,不知道这个问题你解决没??? ---- ...

  8. 用python写跑酷游戏脚本_用python写游戏之2D跑酷游戏(二)

    这篇文章介绍2D跑酷游戏中,添加地板资源, 给主角附加重力作用,以及添加游戏控制器和游戏场景的切换. 废话不多说,直接开始. 添加地板资源 定义地板类,继承自pygame.sprite.Sprite ...

  9. python修改pip源脚本_修改python的pip源为国内源

    由于网络原因,访问国外的pip源超级慢,因此可将源改为国内源(都是pipy官网的镜像),就能体验到流的飞起的速度了 可临时修改,也可永久修改 临时修改:在后边加个-i参数指定pip源,如下所示: pi ...

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

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

最新文章

  1. 最新android webview,Android 关于WebView全方面的使用(项目应用篇)
  2. 论计算机的创新性,论计算机专业教学创新探索
  3. ios 学习札记 细节(三)
  4. Ubuntu Server安全Webserver搭建流程
  5. 设计模式笔记二:抽象工厂模式
  6. python 字典默认会引用 除非深拷贝
  7. Linux命令之进程的管理
  8. Logistic(对数几率)回归
  9. 你看得上瘾的斗鱼,首次开源了自家项目
  10. 达梦数据库html管理,达梦数据库的管理 - osc_nbqoh20k的个人空间 - OSCHINA - 中文开源技术交流社区...
  11. MagicDraw二次开发过程
  12. 微信购物商城网站定制需要多少钱?电商网站建设开发方案(一)
  13. Automatic classification of defective photovoltaic module cells in electroluminescence images-论文阅读笔记
  14. 鲲鹏920是计算机CPU吗,华为鲲鹏920
  15. iphone app 的图标上被自动添加一层半透明遮罩(玻璃效果),小米3这样的高分屏icon不生效,怎么破?
  16. 从山景城看,Android看起来像什么? 关于Google I / O的见解
  17. FTP上传下载失败或文件为空
  18. Measurement Studio 2019 for Visual Studio 2019
  19. Consul Consensus Protocol
  20. Android事件分发-来龙去脉

热门文章

  1. 【verilog】【Modelsim仿真】“XXX“already declared in this scope
  2. java课程设计动态祝福卡_巧用代码制作动态图文贺卡【平安夜祝福】
  3. jeecgBoot 的JSelectDepart 部门选择组件使用
  4. solaris学习6:帐号、安全管理
  5. doc文件转换为docx文件
  6. java poi写doc文件_如何使用POI hwpfdocument在java中的.doc文件中编写大量文本
  7. POJ1759Garland题解
  8. Oracle11g64位安装步骤
  9. k8s 部署 xxl-job-admin:2.3.0
  10. 波士顿房价预测python决策树_模型评价与验证-波士顿房价预测.ipynb