GithubHelp home page GithubHelp logo

xindonglalala / auto_player Goto Github PK

View Code? Open in Web Editor NEW

This project forked from anywhere2go/auto_player

0.0 0.0 0.0 1.94 MB

自动挂机脚本,适用阴阳师、碧蓝航线、明日方舟等游戏

Python 100.00%

auto_player's Introduction

2021.03.21更新

两年前随便写的一个小脚本居然骗到100个星了,感觉十分惭愧对不起大家厚爱。 正好我现在弄另一个类似游戏的脚本,于是就结合了现用的脚本,重新封装整理出一个通用的框架。 目标是遇到相似的游戏时能10分钟内迅速写出一个能用脚本来。

还是一样包含桌面版和ADB版两个版本,分别用的明日方舟和阴阳师写了个例子。 主要目的是提供封装好的API供大家使用,而不是提供现成产品,所以例子写得比较简单只写了开始结束的自动点击和战斗中的判断。 剩下的比如体力不足、接受或拒绝组队之类的细节大家自行添加。其实主要是我懒。

补充:我不是专业程序员github不经常上,加上人懒阴阳师也半弃了所以不常更新。 有需要探讨交流的可以加我V信anywhere2go,可以交流思路,要手把手帮改代码的就别来了。 另外刚看到lisai9093那边有添加了更多丰富功能并长期更新至今的完整版,欢迎大家移步使用传送门

自动游戏挂机辅助

  • 通用手游自动挂机脚本,解放双手,功能同阴阳师手游内自带的小纸人挂机系统类似,等于不受樱饼限制无限使用的小纸人~
  • 拟人化的识图与模拟点击,不读取或修改游戏内部数据,只是取代手动操作。通过随机偏移点击位置和操作延迟防检测。
  • 适用阴阳师、明日方舟、碧蓝航线等能自动战斗只要手动点开始结束的游戏。不适用王者荣耀等需要大量操作的游戏.

核心思路:

  • 通过截屏和图片识别的方法判断当前游戏场景,找到需要点击的位置(用的opencv)
  • 使用随机位置偏移与随机操作延迟防检测
  • 桌面版本:电脑截屏,鼠标点击(用的pyautogui,可以用于电脑客户端或模拟器)
  • ADB版本: 电脑向手机发送ADB命令截屏和点击(可以用连接真实手机或模板器)

使用说明:

setting.py是设置文件,里面mode=1就是桌面模式,mode设置为0就是ADB模式。默认1。 wanted文件夹是要查找的目标图标,比如开始按键确认按键等截图保存到这里,文件后缀为.jpg。 screen文件夹是用来自动可在当前截屏的。 auto_player.py是主体文件,导入后就可以使用下面两个API。 example_adb_arknights.py是ADB模式的明日方舟脚本,用的自己手机,明日方舟所有地图开始结束界面都一样,超简单。 example_desktop_YYS.py是桌面模式的阴阳师挂机脚本,用的官方客户端,只写了一个简单的单人御魂模式,供大家参考。

find_touch(target, tap=True)。

  • 功能:截屏,查找target图标在截屏上的位置,并点击所在位置
  • 传入参数target:string,查找的图标文件名,比如target='start',则会查找wanted文件夹里的start.jpg图标所在位置并点击
  • 传入参数tap:bool,是找到后是否点击,True是找到并点击。False是只查找不点击。因为这类游戏都是只要开始和结束时点击,中间有些图标是判断它正在自动战斗中的,不需要点击。
  • 返回参数:找到了返回True, 未找到返回False

find_touch_any(target_list, tap=True)。

  • 功能:截屏,查找target_list列表图标在截屏上的位置,找到任意一个就会中断查找并点击所在位置。就是上面那个的批量处理版本,一次截屏查找多个目标。
  • 传入参数target_list:string list,查找的图标文件名列表, 比如target=['start', 'end'], 则会查找wanted文件夹里的start.jpg图标和end.jpg图标所在位置,按顺序查找,只会点击最先找到的那个。
  • 传入参数tap:同上
  • 返回参数:找到了则返回找到的图标名称, 未找到返回None

代码示例:

import auto_player as player

#在当前屏幕寻找start.jpg图标的位置并点击
player.find_touch("start") 

#判断当前屏幕是否有start.jpg图标,只返回判断结果但不点击
player.find_touch("start", tap=False) 

#在当前屏幕寻找start.jpg图标或end.jpg,找到其中任意一个就会点击并返回
player.find_touch_any(["start", "end"]) 

#判断当前屏幕是否有start.jpg图标或end.jpg,只返回第一个找到的图标名,未找到则返回None
player.find_touch_any(["start", "end"], tap=False) 

#以上代码需要你先把开始按键、结算按键保存wanted文件夹并命名为start.jpg、end.jpg,否则会出现keyError错误

常见问题

  • 注意文件路径不要有中文,否则会导致opencv读取图片失败,出现无法读取NoneType的Shape之类的错误
  • 桌面版本是是截屏识别所以游戏窗口需要在前台不能被遮挡。
  • 桌面版本如果找到了目标且鼠标移动了,却没有点击,大概率是权限问题。用管理员权限打开CMD来运行程序即可。
  • ADB版本可以后台控制不怕遮挡,但是需要等手机截屏传输到电脑,传文件过程较慢且有极小概率出错卡死
  • 果运行没有提示错误,但是一直匹配失败找不到,多半是图标精度问题,重新截取要找的图标
  • ADB版本效率稍低但可以后台运行,不影响用电脑正常使用,我自己平常用的比较多。桌面版效率高,据反馈有概率被抓,可能是速度太快了或者游戏客户端带了检测。
  • 脚本纯属爱好与分享,欢迎一起交流,但不提供售后服务

补充说明

这个原来来是专门写给阴阳师的,点赞的人应该也都是阴阳师玩家,所以针对阴阳师脚本的思路再做一点补充说明、

  • 例子上写的是单人御魂, 组队跟单人其实是一样的,就再加一个点击接受组队。
  • 御魂、业原火、觉醒这类地图都是一样的逻辑,就是界面和图标有的不一样,一直循环查找点击就好了。
  • 探索麻烦一点,因为每个怪长得不一样。建议查找目标设置为怪头上那个交叉的剑的小图标,这个不会变。
  • 探索进图后找那个交叉剑的攻击标识,找不到就拖动地图,拖动几次还找不到就退出重进,单刷大概就这样思路
  • 组队探索最好是乘客位,不当司机,因为识别不了双倍经验BUFF怪。 有一个发表情的标识可以判断队长是否还在地图里,队长退了就跟着退厃重新接受组长
  • 最最麻烦的百鬼夜行,动来动去超坑爹,我打算弄个机器学习给他们做人脸识别。 等哪天我做成功了就重新回坑把我那上千张百鬼票砸了。

auto_player's People

Contributors

anywhere2go avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.