蚂蚁森林怎么自动偷好友的能量啊,我有几个好友,我的能量刚刚好,就被偷...

发布网友 发布时间:2022-04-23 20:05

我来回答

8个回答

懂视网 时间:2022-05-19 05:18

用autoJS写的能量收取脚本软件.说一下达到的效果,把蚂蚁森林按钮要设置在常用应用中.先收取自己主页的能量,然后进入排行榜收集好友的能量.中途可以按下音量下键提前结束脚本运行.改改测测基本上现在运行完美的了,充分衡量了网络延迟和程序运行正常的平衡性.并且支持支持运动能量生成时间段执行,等待自己的运动能量生成收集.我是配合tasker设置的定时执行脚本,由Tasker唤醒设备教程链接,调用autojs插件执行任务.总之我觉得要想下载下来直接使用的话可能由于运行环境因素,你可能要调整一下.这个作为参考的价值还是稍微比较好的.

说明:

我的设备是6.0的,因为click及很多函数7.0以上才能用.根据搜索组件,利用UiObject组件的click点击我测试在我这失效,改用了获取到组件位置后,调用Tap(x,y).点击、滑动的处理我用的是root的处理方式,没root自行应该改为无障碍方式应该也可以话.目前只支持分辨率为1080,1920.如果分辨率不一样,可能你还有做分辨率兼容性处理.或者等我后续处理.后边会不定期更新新的功能

var myEnergeType=["线下支付","行走","共享单车","地铁购票","网络购票","网购火车票","生活缴费","ETC缴费","电子","绿色办公","咸鱼交易","预约挂号"];
var morningTime="07:10";//自己运动能量生成时间
function tLog(msg) {
 toast(msg);
 console.log(msg)
}
/**
 * 获取权限和设置参数
 */
function prepareThings(){
 setScreenMetrics(1080, 1920);
 //请求截图
 if(!requestScreenCapture()){
 tLog("请求截图失败");
 exit();
 }
}
/**
 * 设置按键监听 当脚本执行时候按音量减 退出脚本
 */
function registEvent() {
 //启用按键监听
 events.observeKey();
 //监听音量上键按下
 events.onKeyDown("volume_down", function(event){
 tLog("脚本手动退出");
 exit();
 });
}
/**
 * 获取截图
 */
function getCaptureImg(){
 var img0 = captureScreen();
 if(img0==null || typeof(img0)=="undifined"){
 tLog("截图失败,退出脚本");
 exit();
 }else{
 return img0;
 }
}
/**
 * 默认程序出错提示操作
 */
function defaultException() {
 tLog("程序当前所处状态不合预期,脚本退出");
 exit();
}
/**
 * 等待加载收集能量页面,采用未找到指定组件阻塞的方式,等待页面加载完成
 */
function waitPage(type){
 // 等待进入自己的能量主页
 if(type==0){
 desc("消息").findOne();
 }
 // 等待进入他人的能量主页
 else if(type==1){
 desc("浇水").findOne();
 }
 //再次容错处理
 sleep(3000);
}
/**
 * 从支付宝主页进入蚂蚁森林我的主页
 */
function enterMyMainPage(){
 launchApp("支付宝");
 tLog("等待支付宝启动");
 var i=0;
 sleep(1000);
 //五次尝试蚂蚁森林入口
 while (!textEndsWith("蚂蚁森林").exists() && i<=5){
 sleep(2000);
 i++;
 }
 clickByText("蚂蚁森林",true,"请把蚂蚁森林入口添加到主页我的应用");
 //等待进入自己的主页
 waitPage(0);
}
/**
 * 进入排行榜
 */
function enterRank(){
 Swipe(520,1860,520,100);
 sleep(2500);
 clickByDesc("查看更多好友",0,true,"程序未找到排行榜入口,脚本退出");
 var i=0;
 //等待排行榜主页出现
 sleep(2000);
 while (!textEndsWith("好友排行榜").exists() && i<=5){
 sleep(2000);
 i++;
 }
 if(i>=5){
 defaultException();
 }
}
/**
 * 从排行榜获取可收集好有的点击位置
 * @returns {*}
 */
function getHasEnergyfriend(type) {
 var img = getCaptureImg();
 var p=null;
 if(type==1){
 //411宽度 #a2cbb4 1032,1820 #30bf6c 1032,1787 -33 #52ca84 1032,1832 12 #ffffff 1032,1835 15
 p = images.findMultiColors(img, "#a2cbb4",[[0, -33, "#30bf6c"], [0,12, "#52ca84"],[0,15, "#ffffff"]], {
 region: [1032, 180, 1, 1700]
 });
 }else if(type==2){
 // 480宽度 基准点1775,832 #30bf6 -2,23 #ffffff -5,16 #ffffff 0,-12 #30bf6c 0,44 #30bf6c
 p = images.findMultiColors(img, "#30bf6c",[[-2, 23, "#ffffff"], [-5,16, "#ffffff"],[0,-12, "#30bf6c"],[0,44, "#30bf6c"]], {
 region: [1069, 180, 7, 1680]
 });
 }
 if(p!=null){
 return p;
 }else {
 return null;
 }
}
/**
 * 判断是否好有排行榜已经结束
 * @returns {boolean}
 */
function isRankEnd() {
 if(descEndsWith("没有更多了").exists()){
 var b=descEndsWith("没有更多了").findOne();
 var bs=b.bounds();
 if(bs.centerY()<1920){
 return true;
 }
 }
 return false;
}
/**
 * 在排行榜页面,循环查找可收集好友
 * @returns {boolean}
 */
function enterOthers(){
 tLog("开始检查排行榜");
 var i=1;
 var ePoint=getHasEnergyfriend(1);
 //确保当前操作是在排行榜界面
 while(ePoint==null && textEndsWith("好友排行榜").exists()){
 //滑动排行榜 root方式的的点击调用.如无root权限,7.0及其以上可采用无障碍模式的相关函数
 Swipe(520,1800,520,300,1000);
 sleep(3000);
 ePoint=getHasEnergyfriend(1);
 i++;
 //检测是否排行榜结束了
 if(isRankEnd()){
 return false;
 }
 //如果连续32次都未检测到可收集好友,无论如何停止查找(由于程序控制了在排行榜界面,且判断了结束标记,基本已经不存在这种情况了)
 else if(i>32){
 tLog("程序可能出错,连续"+i+"次未检测到可收集好友");
 exit();
 }
 }
 if(ePoint!=null){
 //点击位置相对找图后的修正
 Tap(ePoint.x,ePoint.y+20);
 waitPage(1);
 clickByDesc("可收取",80);
 //进去收集完后,递归调用enterOthers
 back();
 sleep(2000);
 var j=0;
 //等待返回好有排行榜
 if(!textEndsWith("好友排行榜").exists() && j<=5){
 sleep(2000);
 j++;
 }
 if(j>=5){
 defaultException();
 }
 enterOthers();
 }else{
 defaultException();
 }
}
/**
 * 根据描述值 点击
 * @param energyType
 * @param noFindExit
 */
function clickByDesc(energyType,paddingY,noFindExit,exceptionMsg){
 if(descEndsWith(energyType).exists()){
 descEndsWith(energyType).find().forEach(function(pos){
 var posb=pos.bounds();
 Tap(posb.centerX(),posb.centerY()-paddingY);
 sleep(2000);
 });
 }else{
 if(noFindExit!=null && noFindExit){
 if(exceptionMsg !=null){
 tLog(exceptionMsg);
 exit();
 }else{
 defaultException();
 }
 }
 }
}
/**
 * 根据text值 点击
 * @param energyType
 * @param noFindExit
 */
function clickByText(energyType,noFindExit,exceptionMsg){
 if(textEndsWith(energyType).exists()){
 textEndsWith(energyType).find().forEach(function(pos){
 var posb=pos.bounds();
 Tap(posb.centerX(),posb.centerY()-60);
 });
 }else{
 if(noFindExit!=null && noFindExit){
 if(exceptionMsg !=null){
 tLog(exceptionMsg);
 exit();
 }else{
 defaultException();
 }
 }
 }
}
/**
 * 遍历能量类型,收集自己的能量
 */
function collectionMyEnergy(){
 var energyRegex=generateCollectionType();
 var checkInMorning=false;
 //如果是早上7点10分左右的话.等待主页能量出现 每隔一秒检测一次
 while(isMorningTime() && descEndsWith("行走").exists()){
 if (!checkInMorning){
 tLog("等待运动能量生成中...");
 checkInMorning=true;

 }
 descEndsWith("行走").find().forEach(function(pos){
 var posb=pos.bounds();
 Tap(posb.centerX(),posb.centerY()-80);
 sleep(1500);
 });
 }
 if(checkInMorning){
 tLog("运动能量收集完成");
 }
 if(descMatches(energyRegex).exists()){
 if(!checkInMorning){
 tLog("防止小树的提示遮挡,等待中");
 sleep(7000);
 }
 descMatches(energyRegex).find().forEach(function(pos){
 var posb=pos.bounds();
 Tap(posb.centerX(),posb.centerY()-80);
 sleep(2000);
 });
 }
}
/**
 * 结束后返回主页面
 */
function whenComplete() {
 tLog("结束");
 back();
 sleep(1500);
 back();
 exit();
}
/**
 * 根据能量类型数组生成我的能量类型正则查找字符串
 * @returns {string}
 */
function generateCollectionType() {
 var regex="/";
 myEnergeType.forEach(function (t,num) {
 if(num==0){
 regex+="(\s*"+t+"$)";
 }else{
 regex+="|(\s*"+t+"$)";
 }
 });
 regex+="/";
 return regex;
}
function isMorningTime() {
 var now =new Date();
 var hour=now.getHours();
 var minu=now.getMinutes();
 var targetTime=morningTime.split(":");
 if(Number(targetTime[0])==hour && Math.abs(Number(targetTime[1])-minu)<=2){
 return true;
 }else{
 return false;
 }
}
//程序主入口
function mainEntrence(){
 //前置操作
 prepareThings();
 //注册音量下按下退出脚本监听
 registEvent();
 //从主页进入蚂蚁森林主页
 enterMyMainPage();
 //收集自己的能量
 collectionMyEnergy();
 //进入排行榜
 enterRank();
 //在排行榜检测是否有好有的能量可以收集
 enterOthers();
 //结束后返回主页面
 whenComplete();
}
mainEntrence();

热心网友 时间:2022-05-19 02:26

目前蚂蚁森林没有自动偷能量的功能。

热心网友 时间:2022-05-19 03:44

1、在蚂蚁森林的排行榜中对应的好友,若有可被收集的绿色能量,在其头像右边会有“手”的标识。

2、收集好友的绿色能量时,每天每一个能量球只能收取一次,每次收集的数量由系统随机决定,系统也会保留30%不被收取。

热心网友 时间:2022-05-19 05:19

你消费产生的能量球别人是能看见产生的倒计时的,可以蹲守
你走路产生的能量是早上5点多产生的,有很多人早上等着收的
这些都是有规律的,想偷就能偷到追问我知道有倒计时,我就是等着收能量的,结果时间刚刚到,就被偷玩了,你不觉得很奇怪么。

热心网友 时间:2022-05-19 07:10

每天早上七点半左右,你起来上厕所时候顺便收一下就行了,基本上大家的能量那时候都可以收了,所以一般集中时间收一下,或者看到某个人的批量要熟的时候,可以看到时间的,直接到时间去收一下就行了,没听说说用G玩

热心网友 时间:2022-05-19 09:18

我支付宝好友不多,可是每天都有一个好友都准时蹲在我的蚂蚁森林里准时偷我的,而且我摘他的都是1,2g,他摘我的都是十几克,也不知道是哪个沙雕想出的这个创意,哪怕是做公益也不能不劳而获,在哪做公益都一样,已经转战QQ

热心网友 时间:2022-05-19 11:43

我昨天试了下 倒计时显示水的数量好像有延迟 我在倒计时最后一分钟大概走了30秒左右吧我就点击收取 没想到真的能收取 这样别人就很难在偷走了

热心网友 时间:2022-05-19 14:24

我的也是,自己在看着还是被偷了!很生气!嗯

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com