国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JavaScript > 正文

Auto.js自動(dòng)收取自己和好友螞蟻森林能量腳本

2019-11-19 13:36:00
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

用autoJS寫的能量收取腳本軟件.說(shuō)一下達(dá)到的效果,把螞蟻森林按鈕要設(shè)置在常用應(yīng)用中.先收取自己主頁(yè)的能量,然后進(jìn)入排行榜收集好友的能量.中途可以按下音量下鍵提前結(jié)束腳本運(yùn)行.改改測(cè)測(cè)基本上現(xiàn)在運(yùn)行完美的了,充分衡量了網(wǎng)絡(luò)延遲和程序運(yùn)行正常的平衡性.并且支持支持運(yùn)動(dòng)能量生成時(shí)間段執(zhí)行,等待自己的運(yùn)動(dòng)能量生成收集.我是配合tasker設(shè)置的定時(shí)執(zhí)行腳本,由Tasker喚醒設(shè)備教程鏈接,調(diào)用autojs插件執(zhí)行任務(wù).總之我覺(jué)得要想下載下來(lái)直接使用的話可能由于運(yùn)行環(huán)境因素,你可能要調(diào)整一下.這個(gè)作為參考的價(jià)值還是稍微比較好的.

說(shuō)明:

我的設(shè)備是6.0的,因?yàn)閏lick及很多函數(shù)7.0以上才能用.根據(jù)搜索組件,利用UiObject組件的click點(diǎn)擊我測(cè)試在我這失效,改用了獲取到組件位置后,調(diào)用Tap(x,y).點(diǎn)擊、滑動(dòng)的處理我用的是root的處理方式,沒(méi)root自行應(yīng)該改為無(wú)障礙方式應(yīng)該也可以話.目前只支持分辨率為1080,1920.如果分辨率不一樣,可能你還有做分辨率兼容性處理.或者等我后續(xù)處理.后邊會(huì)不定期更新新的功能

var myEnergeType=["線下支付","行走","共享單車","地鐵購(gòu)票","網(wǎng)絡(luò)購(gòu)票","網(wǎng)購(gòu)火車票","生活繳費(fèi)","ETC繳費(fèi)","電子發(fā)票","綠色辦公","咸魚(yú)交易","預(yù)約掛號(hào)"];var morningTime="07:10";//自己運(yùn)動(dòng)能量生成時(shí)間function tLog(msg) {  toast(msg);  console.log(msg)}/** * 獲取權(quán)限和設(shè)置參數(shù) */function prepareThings(){  setScreenMetrics(1080, 1920);  //請(qǐng)求截圖  if(!requestScreenCapture()){    tLog("請(qǐng)求截圖失敗");    exit();  }}/** * 設(shè)置按鍵監(jiān)聽(tīng) 當(dāng)腳本執(zhí)行時(shí)候按音量減 退出腳本 */function registEvent() {  //啟用按鍵監(jiān)聽(tīng)  events.observeKey();  //監(jiān)聽(tīng)音量上鍵按下  events.onKeyDown("volume_down", function(event){    tLog("腳本手動(dòng)退出");    exit();  });}/** * 獲取截圖 */function getCaptureImg(){  var img0 = captureScreen();  if(img0==null || typeof(img0)=="undifined"){    tLog("截圖失敗,退出腳本");    exit();  }else{    return img0;  }}/** * 默認(rèn)程序出錯(cuò)提示操作 */function defaultException() {  tLog("程序當(dāng)前所處狀態(tài)不合預(yù)期,腳本退出");  exit();}/** * 等待加載收集能量頁(yè)面,采用未找到指定組件阻塞的方式,等待頁(yè)面加載完成 */function waitPage(type){  // 等待進(jìn)入自己的能量主頁(yè)  if(type==0){    desc("消息").findOne();  }  // 等待進(jìn)入他人的能量主頁(yè)  else if(type==1){    desc("澆水").findOne();  }  //再次容錯(cuò)處理  sleep(3000);}/** * 從支付寶主頁(yè)進(jìn)入螞蟻森林我的主頁(yè) */function enterMyMainPage(){  launchApp("支付寶");  tLog("等待支付寶啟動(dòng)");  var i=0;  sleep(1000);  //五次嘗試螞蟻森林入口  while (!textEndsWith("螞蟻森林").exists() && i<=5){    sleep(2000);    i++;  }  clickByText("螞蟻森林",true,"請(qǐng)把螞蟻森林入口添加到主頁(yè)我的應(yīng)用");  //等待進(jìn)入自己的主頁(yè)  waitPage(0);}/** * 進(jìn)入排行榜 */function enterRank(){  Swipe(520,1860,520,100);  sleep(2500);  clickByDesc("查看更多好友",0,true,"程序未找到排行榜入口,腳本退出");  var i=0;  //等待排行榜主頁(yè)出現(xiàn)  sleep(2000);  while (!textEndsWith("好友排行榜").exists() && i<=5){    sleep(2000);    i++;  }  if(i>=5){    defaultException();  }}/** * 從排行榜獲取可收集好有的點(diǎn)擊位置 * @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寬度  基準(zhǔn)點(diǎn)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;  }}/** * 判斷是否好有排行榜已經(jīng)結(jié)束 * @returns {boolean} */function isRankEnd() {  if(descEndsWith("沒(méi)有更多了").exists()){    var b=descEndsWith("沒(méi)有更多了").findOne();    var bs=b.bounds();    if(bs.centerY()<1920){      return true;    }  }  return false;}/** * 在排行榜頁(yè)面,循環(huán)查找可收集好友 * @returns {boolean} */function enterOthers(){  tLog("開(kāi)始檢查排行榜");  var i=1;  var ePoint=getHasEnergyfriend(1);  //確保當(dāng)前操作是在排行榜界面  while(ePoint==null && textEndsWith("好友排行榜").exists()){    //滑動(dòng)排行榜 root方式的的點(diǎn)擊調(diào)用.如無(wú)root權(quán)限,7.0及其以上可采用無(wú)障礙模式的相關(guān)函數(shù)    Swipe(520,1800,520,300,1000);    sleep(3000);    ePoint=getHasEnergyfriend(1);    i++;    //檢測(cè)是否排行榜結(jié)束了    if(isRankEnd()){      return false;    }    //如果連續(xù)32次都未檢測(cè)到可收集好友,無(wú)論如何停止查找(由于程序控制了在排行榜界面,且判斷了結(jié)束標(biāo)記,基本已經(jīng)不存在這種情況了)    else if(i>32){      tLog("程序可能出錯(cuò),連續(xù)"+i+"次未檢測(cè)到可收集好友");      exit();    }  }  if(ePoint!=null){    //點(diǎn)擊位置相對(duì)找圖后的修正    Tap(ePoint.x,ePoint.y+20);    waitPage(1);    clickByDesc("可收取",80);    //進(jìn)去收集完后,遞歸調(diào)用enterOthers    back();    sleep(2000);    var j=0;    //等待返回好有排行榜    if(!textEndsWith("好友排行榜").exists() && j<=5){      sleep(2000);      j++;    }    if(j>=5){      defaultException();    }    enterOthers();  }else{    defaultException();  }}/** * 根據(jù)描述值 點(diǎn)擊 * @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();      }    }  }}/** * 根據(jù)text值 點(diǎn)擊 * @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點(diǎn)10分左右的話.等待主頁(yè)能量出現(xiàn) 每隔一秒檢測(cè)一次  while(isMorningTime() && descEndsWith("行走").exists()){    if (!checkInMorning){      tLog("等待運(yùn)動(dòng)能量生成中...");      checkInMorning=true;    }    descEndsWith("行走").find().forEach(function(pos){      var posb=pos.bounds();      Tap(posb.centerX(),posb.centerY()-80);      sleep(1500);    });  }  if(checkInMorning){    tLog("運(yùn)動(dòng)能量收集完成");  }  if(descMatches(energyRegex).exists()){    if(!checkInMorning){      tLog("防止小樹(shù)的提示遮擋,等待中");      sleep(7000);    }    descMatches(energyRegex).find().forEach(function(pos){      var posb=pos.bounds();      Tap(posb.centerX(),posb.centerY()-80);      sleep(2000);    });  }}/** * 結(jié)束后返回主頁(yè)面 */function whenComplete() {  tLog("結(jié)束");  back();  sleep(1500);  back();  exit();}/** * 根據(jù)能量類型數(shù)組生成我的能量類型正則查找字符串 * @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();  //注冊(cè)音量下按下退出腳本監(jiān)聽(tīng)  registEvent();  //從主頁(yè)進(jìn)入螞蟻森林主頁(yè)  enterMyMainPage();  //收集自己的能量  collectionMyEnergy();  //進(jìn)入排行榜  enterRank();  //在排行榜檢測(cè)是否有好有的能量可以收集  enterOthers();  //結(jié)束后返回主頁(yè)面  whenComplete();}mainEntrence();

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 高邮市| 壤塘县| 峡江县| 辉南县| 宜宾县| 许昌市| 界首市| 酒泉市| 抚顺县| 全南县| 黎平县| 和林格尔县| 玛纳斯县| 四平市| 谷城县| 华池县| 汝阳县| 东台市| 深水埗区| 水富县| 汕头市| 辽阳市| 舟曲县| 耒阳市| 竹溪县| 仁化县| 会东县| 桦南县| 资源县| 吉木萨尔县| 托克逊县| 新蔡县| 华蓥市| 温泉县| 元江| 康保县| 临潭县| 阿拉善右旗| 伊金霍洛旗| 南木林县| 平原县|