词条
一次基于 Auto.js 的游戏自动化的实践
PC 最近更新 : · 阅读数:22129 · 历史记录
我这次要搞一个有用的东西!
效果展示
升车/发斩演示
示例脚本已贴在后面。
什么是Auto.js
Auto.js是一个运行在Android平台上的JavaScript集成开发环境,部分功能依赖于无障碍服务。
反正就是安卓机上的一个可以在不Root的情况下运行自己写的脚本的App。
主要有两个版本:一个是开源的版本,最高版本号为4.1.1 Alpha 2,现在已经不再维护了;另一个是付费的Pro版,为了规避法律风险,屏蔽了对一些流行App的操作,目前一直在更新。
开源的版本已经包含了足够多的功能,所以先使用这个版本。因为一些原因,作者删除了这个版本的安装包,只有源码,所以要自己编译生成apk。当然,也可以去网上下载现成的apk,如果你信任他们没有在里面加点什么的话。
编译生成apk
这一章主要讲如何自己编译生成apk,如果去网上下载现成apk可以跳过此章。
下载和安装
首先,需要下载:
源码
打开https://github.com/hyb1996/Auto.js,点击“Code”下的“Download ZIP”下载源码。
Android Studio
打开https://developer.android.google.cn/studio,下载一个Android Studio,然后安装,没有什么特别要注意的地方。如果已经安装了可以忽略。
JDK
准备一个JDK,比如JDK8,没有什么特别要注意的地方。如果已经安装了可以忽略。
环境搭建
启动Android Studio,点击“Open”,
找到上一步下载的源码解压出的文件夹,
点击“OK”,选择信任项目,之后便会自动开始同步并下载需要的文件。
与此同时,点击“Tools->SDK Manager”打开SDK管理器,在右侧“SDK Platforms”页签中勾上“Android 9.0 (Pie)”,接着到“SDK Tools”页签,在右下方勾上“Show Package Details”后,再展开“Android SDK Build-Tools”,勾上“28.0.3”,然后点击“OK”,开始下载安装这两样东西。
如果电脑内存不大,可能需要打开gradle.propeities文件,将“org.gradle.jvmargs=-Xms8192m -Xmx8192m -Dfile.encoding=UTF-8”中的“8192”调成合适的数值。
大约十几二十分钟后,会提示同步完成。如果中途发生了打断同步的问题,解决问题后重试,直到同步完成。
生成apk文件
点击“Build->Build Bundle(s) / APK(s)->Build APK(s)”,几分钟后会在“项目文件夹所在路径\Auto.js-master\app\build\outputs\apk\common\debug”目录下生成两个apk文件,带“armeabi-v7a”字样的是用于大部分手机的,带“x86”字样的可能是用于模拟器的。
安装启动App
把apk文件传到手机上并安装,启动App后界面如下,
点击左上方的“三横线”,打开“无障碍服务”和“悬浮窗”。
点击右下脚的圆形加号按钮可以新建、导入脚本等。
编写脚本
推荐使用Visual Studio Code,可以安装上“hyb1996”的“Auto.js-VSCodeExt”这个扩展。
当然,用记事本也可以,直接在手机上写也可以。
App上自带了文档和一些例子,应该不难学会。这里是Auto.js文档的链接:https://hyb1996.github.io/AutoJs-Docs,还是比较详细的。
下面简单的介绍几个功能。
- click(x, y)
点击屏幕指定位置。
- press(x, y, duration)
按住屏幕指定位置一段时间。
- swipe(x1, y1, x2, y2, duration)
从屏幕的一处划到另一处。
- images.read(path)
读取存储上的图片文件。
- images.requestScreenCapture()
请求截屏权限,执行一个脚本只需要请求一次。
- images.captureScreen()
截取屏幕。
- images.findImage(img, template[, options])
在一张大图里找一个小图。
一种游戏自动化的思路:
先把游戏界面上的特征截图保存在手机存储里,比如Raid界面上的橙黄色Logo或是出车时的巨大提示。
然后不断的截取屏幕,在截图里找这些特征小图,如果找到了就说明游戏正处于这一界面,这时点击屏幕的对应位置进入下一界面,比如检测到出车了就点击下方的按钮,检测到进入了打车页面就点击战斗按钮,检测到在车列表就刷新找没打的车。不断的循环这一过程,就能实现游戏自动化。
其中可能会有不少细节要处理,比如网断了,车斩了,车满了,没票了等问题,这就需要加入更多的判断。
升车/发斩参考示例
脚本示例,点赞后显示内容
---- ----
运行测试
打开悬浮窗,点击最上面的按钮,找到写好的脚本来运行。
打包
脚本写好后,还可以打包成一个专门的App供别人使用。
。。。 。。。
评论(34)
TrasPor WAP
2023年02月13日 12:12 来自浙江省
#15
夜奏花 WAP
2023年01月21日 18:51 来自广东省
#14
TrasPor PC
2023年01月20日 21:01 来自浙江省
#13
肆幼 WAP
2022年12月30日 08:19
#12
勤奋冥王星 PC
2022年10月16日 22:23
#11
yibei02 安卓
2022年09月22日 16:25
#10
bctlyuan PC
2022年07月22日 11:54
#9
纠结37
2022年07月19日 13:15
#8
绯 PC
2022年07月19日 10:16
#7
xyzpace
2022年07月18日 23:17
#6