auto.js 支付宝蚂蚁森林绿色能量脚本

安卓auto.js收取绿色能量脚本

使用方法

在手机分辨率宽度1080测试正常运行

将myforest.js放到 /sdcard/脚本/ 目录下,auto.js即可自动识别,需要开启无障碍服务。

点击运行,第一次使用需要确认赋予截屏权限。

脚本将会自动打开支付宝-蚂蚁森林页面收取能量,注意需要将蚂蚁森林放到支付宝首页。

收取完成后自动返回支付宝首页。

若中途需要关闭可在Auto.js中设置“音量上键停止所有脚本”。

早上6:50到7:50开启脚本可在此时间段内不断循环收取。

"auto";
	var width = device.width;
	var height = device.height;
	if(!device.isScreenOn()){
	    device.wakeUpIfNeeded()
	    device.keepScreenOn(60*3600)
	    sleep(1000)
	    gesture(200,[600,1640],[600,1000])
	    sleep(500)
	    gesture( 500, [750, 1390], [560,1632],[320,1656], [530,1437]);
	}
	

	// 请求截图权限
	if (!requestScreenCapture()) {
	    toast("请求截图失败");
	}
	//打开支付宝App
	launch("com.eg.android.AlipayGphone");
	waitForPackage("com.eg.android.AlipayGphone", 200);
	

	while (!className("android.widget.TextView").text("蚂蚁森林").exists()) {
	    sleep(1000);
	}
	toast("进入蚂蚁森林");
	click("蚂蚁森林");
	while (!desc("种树").findOnce()) {
	    sleep(500);
	}
	//获取当前能量 新版本没有ID故不可用
	// var amountOfE1 = idContains("tree_energy").findOne().desc();
	

	// 收集自己能量
	log("收集自己能量")
	sleep(1000) //能量球生成需要一秒钟时间
	while (descStartsWith("收集能量").exists()) {
	    var p = descStartsWith("收集能量").findOne().bounds();
	    click(p.centerX(), p.centerY());
	    sleep(1000);
	    click(p.centerX(), p.centerY());
	};
	// 下滑打开好友列表
	while (!desc("查看更多好友").exists()) {
	    scrollDown();
	    sleep(500);
	}
	

	while (!desc("查看更多好友").findOne().click());
	// 等待直到加载完毕再进行下面的操作,不然会出现截图截错的问题
	while (descContains("个环保证书").exists());
	sleep(1500);
	collectInRanklistNew();
	

	//判断时间
	if (time()) {
	    while(time()){
	        log("时间判断符合");
	        //先返回再重新进入
	        back();
	        while (!desc("查看更多好友").findOne().click());
	        collectInRanklist();
	    }   
	}else{
	    log("时间不符合")
	}
	

	// 收取完成,回到主界面
	toast("收取完成");
	back(); //先返回到个人界面获取能量数目
	//获取当前能量 新版本没有ID 故不可用
	// var amountOfE2 = idContains("tree_energy").findOne().desc();
	// var amountReg = /.*(?=g)/;
	// amountOfE1 = amountOfE1.match(amountReg);
	// amountOfE2 = amountOfE2.match(amountReg);
	// amountOfE1 = parseInt(amountOfE1);
	// amountOfE2 = parseInt(amountOfE2);
	// var extra = amountOfE2 - amountOfE1;
	// toast("收取了 " + extra + " g能量");
	// log("收取了 " + extra + " g能量")
	while (!className("android.widget.TextView").text("首页").exists()) {
	    back();
	    sleep(1000);
	};
	if (!className("android.widget.TextView").text("蚂蚁森林").exists()) {
	    var fresh = className("android.widget.TextView").text("首页").findOne().bounds()
	    click(fresh.centerX(), fresh.centerY());
	    click(fresh.centerX(), fresh.centerY());
	}
	device.cancelKeepingAwake()
	

	

	// 进入并收取
	function EnterAndCollect(x, y) {
	    log("进入收取!" + x + "," + y);
	    sleep(100);
	    click(x, y);
	    sleep(300)
	    descContains("大树养成").findOne(3000);
	    if (!desc("大树养成").exists()) {
	        sleep(1000);
	        click(x, y); //再次点击
	    }
	    descContains("大树养成记录").findOne();
	    log("成功打开收取页面");
	    sleep(1000); //等待能量球加载
	    {
	        let i=0;
	        while (descStartsWith("收集能量").exists()) {
	            log("点击能量球")
	            sleep(200);
	            var barr = new Array();
	            var bs = descStartsWith("收集能量").find().forEach(function(b) {
	                barr.push(b.bounds());
	            })
	            for (let i = 0; i < barr.length; i++) {
	                click(barr[i].centerX(), barr[i].centerY() );
	            }
	            i++;
	            if(i>2) break;//防止无限点击能量罩
	        };
	    }
	    log("收取完成,返回");
	    idContains("h5_tv_nav_back").findOne().click();
	}
	

	// 时间判断
	function time() {
	    var now = new Date();
	    var minutes = now.getMinutes();
	    var hours = now.getHours();
	    var time = hours * 60 + minutes - 400; //6点50
	    if (time >= 0 && time <= 60) { //6点50到7点50
	        log('时间符合,再次收取');
	        return true
	    } else {
	        return false
	    }
	}
	

	

	//改进方法
	function collectInRanklistNew() {
	    while (!descContains("没有更多了").exists()) {
	        sleep(200); //延时以防止截图错误
	        var img = captureScreen();
	        var x = width - 5;
	        var y = 0;
	        var str = ''; //记录颜色判断结果
	        while (y < height) {
	            if (images.detectsColor(img, "#1DA06D", x, y, 8)) //海洋绿
	                str += '1';
	            else
	                str += '0';
	            y++;
	        }
	        
	        // log(str);
	        var reg = /1{30,}0{1,13}1/g; //寻找可收取的特征
	        var coordinate = new Array(); //记录非绿色区间
	

	        while (true) {
	            var arr = reg.exec(str);
	            if (arr)
	                coordinate.push(arr.index);
	            else break;
	        }
	

	        log(coordinate);
	

	

	        for (var i = 0; i < coordinate.length; i++) {
	            EnterAndCollect(width / 2, coordinate[i] + 10);
	        }
	

	

	        while (!descContains("kg").exists()) {
	            sleep(100);
	        }
	        scrollDown();
	    }
	}
	

	//在排行榜中收取方法(旧)
	function collectInRanklist() {
	    while (!descContains("没有更多了").exists()) {
	        sleep(200); //延时以防止截图错误
	        var img = captureScreen();
	        var x = width - 5;
	        var y = 0;
	        var str = ''; //记录颜色判断结果
	        while (y < height - 100) {
	            if (images.detectsColor(img, "#30BF6C", x, y, 8))
	                str += '1';
	            else
	                str += '0';
	            y++;
	        }
	

	

	        var reg = /1?0{50,}(?=1)/g;
	        var coordinate = new Array(); //记录非绿色区间
	

	        while (true) {
	            var arr = reg.exec(str);
	            if (arr)
	                coordinate.push(arr.index, arr.index + arr[0].length);
	            else break;
	        }
	

	        log(coordinate);
	

	

	        var i = 1;
	        var selectedArr = new Array(); //记录最后判断成功的纵坐标
	        while (i < coordinate.length - 1) {
	            // 对i到i+1内进行判断
	            var whiteReg = /1{30,}0{1,5}1*/;
	            var testResult = whiteReg.test(str.substring(coordinate[i], coordinate[i + 1]));
	            if (testResult == true) selectedArr.push(coordinate[i]);
	            i += 2;
	        }
	        // 判断结束,开始依据selectedArr点击收取
	        //length先提取,避免因判错造成死循环
	        var tmp_length = selectedArr.length;
	        for (var j = 0; j < selectedArr.length; j++) {
	            EnterAndCollect(width / 2, selectedArr[j] + 10)
	        }
	

	        while (!descContains("kg").exists()) {
	            sleep(100);
	        }
	        scrollDown();
	    }
	}

– 下载地址:

失效https://github.com/jiaton/Forest

看最新最新文章:

auto.js 支付宝蚂蚁森林绿色能量脚本

0194
「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
  

数据中心运维
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论