欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2018年06月28日 08:53:20   作者:Kimipoker  
這篇文章主要為大家詳細(xì)介紹了Auto.js自動(dòng)收取自己和好友螞蟻森林能量腳本,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

用autoJS寫的能量收取腳本軟件.說一下達(dá)到的效果,把螞蟻森林按鈕要設(shè)置在常用應(yīng)用中.先收取自己主頁的能量,然后進(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ù).總之我覺得要想下載下來直接使用的話可能由于運(yùn)行環(huán)境因素,你可能要調(diào)整一下.這個(gè)作為參考的價(jià)值還是稍微比較好的.

說明:

我的設(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的處理方式,沒root自行應(yīng)該改為無障礙方式應(yīng)該也可以話.目前只支持分辨率為1080,1920.如果分辨率不一樣,可能你還有做分辨率兼容性處理.或者等我后續(xù)處理.后邊會(huì)不定期更新新的功能

var myEnergeType=["線下支付","行走","共享單車","地鐵購票","網(wǎng)絡(luò)購票","網(wǎng)購火車票","生活繳費(fèi)","ETC繳費(fèi)","電子發(fā)票","綠色辦公","咸魚交易","預(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)聽 當(dāng)腳本執(zhí)行時(shí)候按音量減 退出腳本
 */
function registEvent() {
  //啟用按鍵監(jiān)聽
  events.observeKey();
  //監(jiān)聽音量上鍵按下
  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();
}
/**
 * 等待加載收集能量頁面,采用未找到指定組件阻塞的方式,等待頁面加載完成
 */
function waitPage(type){
  // 等待進(jìn)入自己的能量主頁
  if(type==0){
    desc("消息").findOne();
  }
  // 等待進(jìn)入他人的能量主頁
  else if(type==1){
    desc("澆水").findOne();
  }
  //再次容錯(cuò)處理
  sleep(3000);
}
/**
 * 從支付寶主頁進(jìn)入螞蟻森林我的主頁
 */
function enterMyMainPage(){
  launchApp("支付寶");
  tLog("等待支付寶啟動(dòng)");
  var i=0;
  sleep(1000);
  //五次嘗試螞蟻森林入口
  while (!textEndsWith("螞蟻森林").exists() && i<=5){
    sleep(2000);
    i++;
  }
  clickByText("螞蟻森林",true,"請(qǐng)把螞蟻森林入口添加到主頁我的應(yīng)用");
  //等待進(jìn)入自己的主頁
  waitPage(0);
}
/**
 * 進(jìn)入排行榜
 */
function enterRank(){
  Swipe(520,1860,520,100);
  sleep(2500);
  clickByDesc("查看更多好友",0,true,"程序未找到排行榜入口,腳本退出");
  var i=0;
  //等待排行榜主頁出現(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("沒有更多了").exists()){
    var b=descEndsWith("沒有更多了").findOne();
    var bs=b.bounds();
    if(bs.centerY()<1920){
      return true;
    }
  }
  return false;
}
/**
 * 在排行榜頁面,循環(huán)查找可收集好友
 * @returns {boolean}
 */
function enterOthers(){
  tLog("開始檢查排行榜");
  var i=1;
  var ePoint=getHasEnergyfriend(1);
  //確保當(dāng)前操作是在排行榜界面
  while(ePoint==null && textEndsWith("好友排行榜").exists()){
    //滑動(dòng)排行榜 root方式的的點(diǎn)擊調(diào)用.如無root權(quán)限,7.0及其以上可采用無障礙模式的相關(guān)函數(shù)
    Swipe(520,1800,520,300,1000);
    sleep(3000);
    ePoint=getHasEnergyfriend(1);
    i++;
    //檢測(cè)是否排行榜結(jié)束了
    if(isRankEnd()){
      return false;
    }
    //如果連續(xù)32次都未檢測(cè)到可收集好友,無論如何停止查找(由于程序控制了在排行榜界面,且判斷了結(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分左右的話.等待主頁能量出現(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("防止小樹的提示遮擋,等待中");
      sleep(7000);
    }
    descMatches(energyRegex).find().forEach(function(pos){
      var posb=pos.bounds();
      Tap(posb.centerX(),posb.centerY()-80);
      sleep(2000);
    });
  }
}
/**
 * 結(jié)束后返回主頁面
 */
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)聽
  registEvent();
  //從主頁進(jìn)入螞蟻森林主頁
  enterMyMainPage();
  //收集自己的能量
  collectionMyEnergy();
  //進(jìn)入排行榜
  enterRank();
  //在排行榜檢測(cè)是否有好有的能量可以收集
  enterOthers();
  //結(jié)束后返回主頁面
  whenComplete();
}
mainEntrence();

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

相關(guān)文章

  • 微信小程序之仿微信漂流瓶實(shí)例

    微信小程序之仿微信漂流瓶實(shí)例

    這篇文章主要介紹了微信小程序之仿微信漂流瓶實(shí)例,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。
    2016-12-12
  • JavaScript實(shí)現(xiàn)重置表單(reset)的方法

    JavaScript實(shí)現(xiàn)重置表單(reset)的方法

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)重置表單(reset)的方法,涉及javascript中reset()方法的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-04-04
  • 原生JS封裝vue Tab切換效果

    原生JS封裝vue Tab切換效果

    這篇文章主要為大家詳細(xì)介紹了原生JS封裝vue Tab切換效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • 純js分頁代碼(簡(jiǎn)潔實(shí)用)

    純js分頁代碼(簡(jiǎn)潔實(shí)用)

    純js寫的分頁代碼且簡(jiǎn)潔實(shí)用哦!需要的朋友可以過來參考下,希望對(duì)大家有所幫助
    2013-11-11
  • 基于JSONP原理解析(推薦)

    基于JSONP原理解析(推薦)

    下面小編就為大家推薦一篇基于JSONP原理解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • 淺談HBuilderX開發(fā)小程序的一些問題

    淺談HBuilderX開發(fā)小程序的一些問題

    本文主要介紹了HBuilderX開發(fā)小程序的一些問題,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • JS異步堆棧追蹤之為什么await勝過Promise

    JS異步堆棧追蹤之為什么await勝過Promise

    與直接使用Promise相比,使用async/await不僅可以使代碼更具可讀性,而且還可以在JavaScript引擎中實(shí)現(xiàn)一些有趣的優(yōu)化。這篇文章是關(guān)于一個(gè)這樣的優(yōu)化,涉及異步代碼的堆棧追蹤。
    2021-04-04
  • 基于require.js的使用(實(shí)例講解)

    基于require.js的使用(實(shí)例講解)

    下面小編就為大家?guī)硪黄趓equire.js的使用(實(shí)例講解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • 純JS 繪制數(shù)學(xué)函數(shù)

    純JS 繪制數(shù)學(xué)函數(shù)

    今天閑來無事用js寫了個(gè)數(shù)學(xué)繪圖包,還不算完整,不過總出現(xiàn)了雛形。
    2009-04-04
  • 微信小程序中使用自定義圖標(biāo)(阿里icon)的方法

    微信小程序中使用自定義圖標(biāo)(阿里icon)的方法

    這篇文章主要介紹了微信小程序中使用自定義圖標(biāo)(阿里icon)的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-08-08

最新評(píng)論