/*
软件作者:https://xuhss.com/oxox/pro
*/
//小七对本脚本做部分备注,方便大家解读脚本。(我不是作者哦!!!)
var isAuthor = false; //如果你不是作者,这里务必为false,不然各种报错。
var debug = false; //开启调试,会截图保存到本地
var useShell = false; //使用shell命令执行模拟输入tap、swipe动作。如果你的滑动不了或者点能量球点不了,测试把它改为true
var debug_dir = "/sdcard/debug/take/";
if (debug) {
files.ensureDir(debug_dir); //小七注:判断 路径debug_dir文件夹 是否存在,不存在则创建该文件夹。
}
//检测手机是否已root,如果root,下面的代码会自动开启autojs的无障碍服务!!!
if (isRoot()) { //小七注:isRoot()函数 是作者自己建立的函数,在脚本的末尾位置,不嫌累的自己往后捯。
var s = shell("settings get secure enabled_accessibility_services", true).result.replace(/\n/, "");
//小七注:上面一句中的shell指令是 获取系统中 已经开启的 无障碍服务 列表,
// 字符串.replace(正则表达式,文本) 函数功能是:用 文本 替换字符串中满足正则表达式的部分,返回替换后的 完整的字符串。
log(s);
if (s.indexOf("stardust") == "-1") {
//小七注:原字符串.indexOf(目标字符串) 功能是:在原字符串中查找 目标字符串的位置,找不到就返回-1。
//这个判断在这里目的是 判断 auto.js 是否 没有开启无障碍服务。
var stardust = "com.stardust.scriptdroid/com.stardust.scriptdroid.accessibility.AccessibilityService";
var code = shell("settings put secure enabled_accessibility_services " + s + ":" + stardust, true).code;
//小七注:上面的shell()就是尝试把js的无障碍服务写入已开启列表的。code是返回的信息,如果是0,表示执行成功。非0表示失败。
if (code) {
toastLog("尝试开启无障碍服务异常");
}
}
shell("settings put secure accessibility_enabled 1", true);
//小七注:开启系统的无障碍服务。
}
if (isAuthor) { //小七注:判断变量isAuthor的真假。
var unlock = require("unlock"); //小七注:加载另一个同文件夹下的unlock.js文件(这是作者自己写的一个文件)
unlock();
shell("pm enable com.eg.android.AlipayGphone", true); //小七注:启用应用 支付宝。
} else {
device.wakeUp(); //小七注:device.wakeUp() 唤醒屏幕。(本地教程 device模块中有,自行查看)
}
sleep(3000);
var temp = images.read("/sdcard/take.png"); //小七注:读取图片文件。
if (!temp) { //小七注:判断读取图片 是否没有成功。
toastLog("缺少图片文件,请仔细查看\n使用方法的第一条!!!");
switch (device.width) { //小七注:device.width 获取屏幕宽度。
case 1080: //小七注:依据不同的屏幕宽度 选择不同分辨率的 图片进行下载。
temp = images.load("https://raw.githubusercontent.com/start201711/autojs/master/take.png");
break;
case 720:
temp = images.load("https://raw.githubusercontent.com/start201711/autojs/master/take720p.png");
break;
default:
temp = null;
break;
}
if (!temp) { //小七注:判断变量是否为 非空。
toastLog("尝试下载take.png失败,脚本停止运行");
exit();
}
toastLog("现在将尝试使用别人的图片,分辨率可能不匹配,脚本可能无法正常执行");
}
var r = new Robot(); //小七注: Robot()是一个 对象构造函数,作者自己写的,在后面的程序里,自己往下找。
var dh = 40 * device.height / 720;
//向系统申请截图时,自动确认
new java.lang.Thread(function() { //小七注: 利用Java.lang.Thread定义一个新的线程(具体的不了解还没学习Java)。
classNameContains("Button").textContains("立即开始").click(); //小七注: 找到并单击 立即开始 按钮(一般情况下这个没必要)。
}).start();
if (!requestScreenCapture()) { //小七注: 向系统发出截图请求,判断请求是否 不被允许。
toast("请求截图失败,脚本退出");
exit();
}
toastLog("即将收取蚂蚁森林能量,请勿操作!");
launch("com.eg.android.AlipayGphone"); //小七注: 打开 支付宝。
waitForPackage("com.eg.android.AlipayGphone"); //小七注: 等待进入支付宝程序。
clickSenlin(); //小七注: 作者自定义的函数,在后面的脚本中。
className("android.widget.Button").desc("攻略").waitFor(); //小七注: 等待这个蚂蚁森林的标志性控件出现
toastLog("成功进入蚂蚁森林");
sleep(3000);
takeMyself(); //小七注: 自定义函数,脚本后面自己找。
toastLog("收取自己的能量完毕");
sleep(2000);
takeInRank();//小七注: 自定义函数,脚本后面自己找。
toastLog("收取更多好友的能量");
sleep(2000);
//通知tasker下一次运行脚本的时间,全天候自动挂机
if (isAuthor) { //小七注: 判断变量是否为真。
var loop = require("loop"); //小七注: 加载同目录下的loop.js脚本模块(作者自己写的)。
loop(); //将等待下一次时间写入文件中给tasker
sleep(2000);
}
var more = descContains("查看更多好友").findOne();
r.pressCenter(more);
//小七注: r是上面(大概在73行)利用对象构造函数定义的一个 对象。
//小七注: pressCenter()是这个对象中定义的一个 方法。
sleep(5000);
takeMore(); //小七注: 自定义函数,脚本后面自己找。
toastLog("收取能量完毕");
idContains("h5_tv_nav_back").click();
sleep(2000);
idContains("h5_tv_nav_back").click();
if (isAuthor) { //小七注: 判断变量是否为真。
shell("pm disable com.eg.android.AlipayGphone", true);
//小七注: 冻结应用程序 支付宝
}
exit();
/******************收取能量函数********************/
function takeInRank() {
takeOthers("爱心捐赠");
}
function takeMore() {
takeOthers("没有更多了")
}
function takeOthers(end) {
while (1) {
for (var p = findImage(captureScreen(), temp); p; p = findImage(captureScreen(), temp)) {
//小七注:findImage(大图, 小图) 在大图中 查找小图的 位置,找到返回位置坐标,找不到返回null。
//temp 是在脚本前部分定义的,内容是一个图片。
if (debug) { //小七注:debug 脚本开始时定义的一个变量
toastLog("进入好友的森林");
}
r.press(device.width / 2, p.y + dh, 100); //小七注:r是作者在前面定义的一个对象。
takeOther();
sleep(1000);
idContains("h5_tv_nav_back").click();
sleep(2000);
}
if (debug) { //小七注:debug 脚本开始时定义的一个变量
images.captureScreen(debug_dir + new Date().getTime() + ".png");
//小七注:images.captureScreen(路径)是截图并保存的指定路径。
//debug_dir是作者在脚本开始位置定义的一个文件夹路径。
//new Date() 是获取当前系统的时间。
//Date对象.getTime()是获取从 1970年1月1日 到 Date对象指定时间 的毫秒数。
}
if (descContains(end).find().size() > 0) {
//小七注:descContains(字符串) 是筛选控件中desc属性包含 指定字符串 的控件
//控件集.size() 是获取控件集合中控件的数量,也可以用 控件集.length
// size()是一个函数,length是一个属性。
if (descContains(end).findOne().bounds().top < device.height) {
break;
}
}
r.swipe(device.width / 2, device.height * 2 / 3, device.width / 2, device.height * 1 / 3);
sleep(2000);
}
}
function takeMyself() {
take("攻略");
}
function takeOther() {
take("浇水");
}
function take(desc) {
var right_bottom = className("a
AutoJs源码-蚂蚁森林(小七备注版)
需积分: 3 117 浏览量
2022-11-16
07:39:03
上传
评论
收藏 5KB 7Z 举报
[虚幻私塾】
- 粉丝: 335
- 资源: 1559
最新资源
- 2406011243520696.mp4
- sql语句及应用场景.zip
- 疯狂吃月饼游戏小程序前端源码
- 硬件工程师+电子类工程师岗位简历模板
- 知识领域: 人工智能 技术关键词: TensorFlow、Keras、深度学习、神经网络
- 知识领域: 自动化测试 技术关键词: pytest、unittest、自动化测试、测试框架
- 知识领域: 数据库管理 技术关键词: SQLAlchemy、数据库、ORM、SQL 内容关键词: 数据库连接、数据查询、数据操作
- 知识领域: 网络编程 技术关键词: socket、网络编程、异步IO、TCP/IP 内容关键词: 客户端、服务器、网络协议
- 知识领域: 自然语言处理 技术关键词: NLTK、spaCy、文本处理、语言模型
- ubuntu20.04安装教程.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈