词条

一次基于 Auto.js 的游戏自动化的实践

PC
最近更新 : · 阅读数:22129 · 历史记录
页面贡献者:
共 1 人编辑

我这次要搞一个有用的东西!

效果展示

升车/发斩演示

示例脚本已贴在后面。

什么是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或是出车时的巨大提示。
然后不断的截取屏幕,在截图里找这些特征小图,如果找到了就说明游戏正处于这一界面,这时点击屏幕的对应位置进入下一界面,比如检测到出车了就点击下方的按钮,检测到进入了打车页面就点击战斗按钮,检测到在车列表就刷新找没打的车。不断的循环这一过程,就能实现游戏自动化。
其中可能会有不少细节要处理,比如网断了,车斩了,车满了,没票了等问题,这就需要加入更多的判断。

升车/发斩参考示例

脚本示例,点赞后显示内容
链接:https://pan.baidu.com/s/1AxrsZWKN8DmL5puZJ3763w,提取码:2s27。
脚本示例在DC/Auto.js文件夹内。
---- ----

运行测试

打开悬浮窗,点击最上面的按钮,找到写好的脚本来运行。

打包

脚本写好后,还可以打包成一个专门的App供别人使用。

。。。 。。。

投稿模式

评论(34)

TrasPor WAP

2023年02月13日 12:12 来自浙江省

最近会出现老版本不推荐使用的弹窗,如果要继续使用请到showDeprecatedDialogIfNeeded处,于首行return;(用英文分号)后重新打包安装(老版本你都不维护了还不让我好好用了,不清楚是不是我导入过百度的ocr反正更新按钮是没用的)
TrasPor回复lyzzzk源码没了可还行 那我扔个秒传在这 不准/不应该发就给我删了() a19945f5085a627beaceab14c506795a#438#readme-repack.txt f3cec3bbdbfa5b53f5adda7f45bdda4c#613458307#Auto.js-master.7z
lyzzzk感谢补充。我是直接把VersionGuard类里那个用来检查版本的公有方法的内容全注释了。其实如果之前开启了悬浮窗都不影响使用。我昨天看了作者的Github,他把源码都删了。
2条回复

#15

2 0

夜奏花 WAP

2023年01月21日 18:51 来自广东省

有用

#14

0 0

TrasPor PC

2023年01月20日 21:01 来自浙江省

-看完花了一周给自己玩的几个手游写了几个自动脚本,俩简单的签到脚本,一个24h全托,但是唯独忘了给DC写一个(写个签到的差不多了 不指望RD斩车 -另外还有一个软件(冰狐智能辅助)和autojs是竞争关系,我在autojs上尝试做OCR的时候发现的(虽然没做成),推荐先尝试这个冰狐,auto要自动搞android sdk,又要自己打包做apk,还要改gradle适配模拟器,甚至debug玩脚本后findImage的template项又常常在log里报Unclosed的异常还屏蔽不掉 -真要用的话最好配上安卓到PC的投屏软件或者一个模拟器 这样方便取点以及在电脑上编辑脚本与转移脚本
TrasPor顺带一提 如果图省事的话可以在使用findImage时手动设置Level为1,找图效率可能下降。只要不做代码修改,设置Level大于等于2且找图失败就会出错
lyzzzk牛的。
2条回复

#13

2 0

肆幼 WAP

2022年12月30日 08:19

还有个免费的软件,一触即发,我一直用的这款编的辅助程序斩车

#12

0 0

勤奋冥王星 PC

2022年10月16日 22:23

大佬,按你的说明,Android studio打开Auto.js时出现错误,并且build菜单下找不到你说的选项。请问是什么原因啊
勤奋冥王星找了个git的在线打包,目前正在学习js
lyzzzk你试试把错误提示里面那个蓝色的zip下载下来放在下面那个红色的位置看看。
2条回复

#11

2 0

yibei02 安卓

2022年09月22日 16:25

马克

#10

0 0

bctlyuan PC

2022年07月22日 11:54

马克 学习

#9

0 0

纠结37

管理员
不忘初心
PC

2022年07月19日 13:15

我以前做过剑灵开源的脚本,手机的不会弄,电脑上配合模拟器超简单,我偶尔用。

#8

0 0

PC

2022年07月19日 10:16

名字一股毕设课题的味道

#7

0 0

xyzpace

版主
夏日蓝调
安卓

2022年07月18日 23:17

有大佬开发这个,而且迭代多次了,要不你们交流交流😂
z回复春日无战事股东你好
z回复z好久
2条回复

#6

2 0