螞蟻森林 能量腳本 附 文件以及教程

第一步 :下載auto.js
手機瀏覽器搜索auto.js 下載 / 商店搜索下載(部分商店可能沒有,直接瀏覽器搜就行了)
第二步 : 拷貝 下方文件放進來就行 rt
在這裏插入圖片描述
代碼如下

var morningTime = "07:18";//自己運動能量生成時間
var startTime = "07:00";
var endTime = "08:50";
unlock();
sleep(2000);
mainEntrence();

//解鎖
function unlock () {
  if (!device.isScreenOn()) {
    //點亮屏幕
    device.wakeUp();
    //由於MIUI的解鎖有變速檢測,因此要點開時間以進入密碼界面
    sleep(1000);
    swipe(500, 0, 500, 1900, 2000);
    click(100, 150);
    //輸入屏幕解鎖密碼,其他密碼請自行修改
    sleep(2000);
    click(540, 1800);
    sleep(500);

    click(540, 1800);
    sleep(500);

    click(240, 1620);
    sleep(500);

    click(540, 1620);
    sleep(500);
  }
}

/**
 * 獲取權限和設置參數
 */
function prepareThings () {
 setScreenMetrics(device.width, device.height);//1080, 2340
  //請求截圖
  if (!requestScreenCapture()) {
    toastLog("請求截圖失敗,腳本退出");
    exit();
  }

}
/**
 * 設置按鍵監聽 當腳本執行時候按音量減 退出腳本
 */
function registEvent () {
  //啓用按鍵監聽
  events.observeKey();
  //監聽音量上鍵按下
  events.onKeyDown("KEYCODE_VOLUME_DOWN", function (event) {
    toastLog("腳本手動退出");
    exit();
  });
}
/**
 * 獲取截圖
 */
function getCaptureImg () {
  //captureScreen("/storage/emulated/0/DCIM/Screenshots/1.png");
  //sleep(500);
  var img0 = captureScreen();
  sleep(100);
  if (img0 == null || typeof (img0) == "undifined") {
    toastLog("截圖失敗,腳本退出");
    exit();
  } else {
    return img0;
  }
}


/**
 * 從支付寶主頁進入螞蟻森林我的主頁
 */
function enterMyMainPage () {
  //五次嘗試螞蟻森林入
  var i = 0;
  swipe(520, 1200, 520, 600, 500);
  sleep(500);
  swipe(520, 600, 520, 1200, 500);
  while (!textEndsWith("螞蟻森林").exists() && !descEndsWith("螞蟻森林").exists() && i <= 5) {
    sleep(1000);
    i++;
  }
  clickByTextDesc("螞蟻森林", 0, true, "請把螞蟻森林入口添加到主頁,腳本退出");

  //等待進入自己的主頁,10次嘗試
  sleep(3000);
  i = 0;
  while (!textEndsWith("地圖").exists() && !descEndsWith("地圖").exists() && i <= 10) {
    sleep(1000);
    i++;
  }
  toastLog("第" + i + "次嘗試進入自己主頁");
  if (i >= 10) {
    toastLog("進入自己能量主頁失敗,腳本退出");
    exit();
  }

  //收自己能量
  //將能量球存在的區域都點一遍,間隔是能量球的半徑
  for (var row = 640; row < 900; row += 100)
    for (var col = 140; col < 800; col += 100) {
      click(col, row);
      sleep(50);
    }
  toastLog("自己能量收集完成");
  sleep(100);
}
/**
 * 進入排行榜
 */
function enterRank () {
  toastLog("進入排行榜");
  sleep(2000);
  swipe(520, 1800, 520, 300, 500);
  sleep(500);
  swipe(520, 1800, 520, 300, 500);
  toastLog("查看更多好友");
  sleep(500);
  clickByTextDesc("查看更多好友", 0, true, "程序未找到排行榜入口,腳本退出");

  //等待排行榜主頁出現
  var i = 0;
  while (!textEndsWith("好友排行榜").exists() && !descEndsWith("好友排行榜").exists() && i <= 5) {
    sleep(1000);
    i++;
  }
  if (i >= 5) {
    toastLog("進入好友排行榜失敗,腳本退出");
    exit();
  }
}
/**
 * 從排行榜獲取可收集好友的點擊位置
 */
function getHasEnergyfriend (type) {
  var img = getCaptureImg();
  //getCaptureImg();
  //var img = images.read("/storage/emulated/0/DCIM/Screenshots/1.png");
  var p = null;
  if (type == 1) {
    // 區分倒計時和可收取能量的小手
    p = images.findMultiColors(img, "#ffffff", [[0, -35, "#1da06d"], [0, 23, "#1da06d"]], {
      region: [1074, 200, 1, 2000]
    });
  }
  if (p != null) {
    toastLog("找到好友");
    return p;
  } else {
    toastLog("此頁沒有找到可收能量的好友");
    return null;
  }
}

/**
 * 在排行榜頁面,循環查找可收集好友
 * @returns {boolean}
 */
function enterOthers () {
  var i = 1;
  var ePoint = getHasEnergyfriend(1);

  //確保當前操作是在排行榜界面
  //不斷滑動,查找好友
  while (ePoint == null) {
    //如果到了收取自己能量的時間,先收取自己能量
    if (myEnergyTime()) {
      return false;
    }
    if (textEndsWith("好友排行榜").exists() || descEndsWith("好友排行榜").exists()) {
      swipe(520, 1800, 520, 300, 500);
      sleep(100);
      ePoint = getHasEnergyfriend(1);
      i++;

      //如果檢測到結尾,同時也沒有可收能量的好友,那麼結束收取
      if (textEndsWith("沒有更多了").exists() || descEndsWith("沒有更多了").exists()) {
        if (ePoint == null) {
          return false;
        }
      }

      //如果連續32次都未檢測到可收集好友,無論如何停止查找(由於程序控制了在排行榜界面,且判斷了結束標記,基本已經不存在這種情況了)
      if (i > 32) {
        toastLog("程序可能出錯,連續" + i + "次未檢測到可收集好友");
        exit();
      }
    }
  }

  //找到好友
  //進入好友頁面,10次嘗試
  click(ePoint.x, ePoint.y + 20);
  sleep(3000);
  var i = 0;
  while (!textEndsWith("澆水").exists() && !descEndsWith("澆水").exists() && i <= 10) {
    sleep(1000);
    i++;
  }
  toastLog("第" + i + "次嘗試進入好友主頁");
  if (i >= 10) {
    toastLog("進入好友能量主頁失敗,腳本退出");
    exit();
  }

  //收能量
  for (var row = 560; row < 900; row += 100)
    for (var col = 170; col < 900; col += 100) {
      click(col, row);
      sleep(50);
    }

  //等待返回好友排行榜
  back();
  var j = 0;
  if (!textEndsWith("好友排行榜").exists() && !descEndsWith("好友排行榜").exists() && j <= 10) {
    sleep(1000);
    j++;
  }
  if (j >= 10) {
    toastLog("返回排行榜失敗,腳本退出");
    exit();
  }

  //返回排行榜成功,繼續
  enterOthers();

}

function clickByTextDesc (energyType, paddingY, noFindExit, exceptionMsg) {
  if (descEndsWith(energyType).exists()) {
    descEndsWith(energyType).find().forEach(function (pos) {
      var posb = pos.bounds();
      click(posb.centerX(), posb.centerY() - paddingY);
      //sleep(200);
    });
  } else if (textEndsWith(energyType).exists()) {
    textEndsWith(energyType).find().forEach(function (pos) {
      var posb = pos.bounds();
      click(posb.centerX(), posb.centerY() - paddingY);
    });
  } else {
    if (noFindExit != null && noFindExit) {
      if (exceptionMsg != null) {
        toastLog(exceptionMsg);
        exit();
      } else {
        toastLog("程序當前所處狀態不合預期,腳本退出");
        exit();
      }
    }
  }
}

/**
 * 結束後返回主頁面
 */
function whenComplete () {
  toastLog("結束");
  back();
  sleep(1500);
  back();
  //exit();
}

function checkTime () {
  var now = new Date();
  var hour = now.getHours();
  var minu = now.getMinutes();
  var time_a = startTime.split(":");
  var time_b = endTime.split(":");
  var timea = 60 * Number(time_a[0]) + Number(time_a[1]);
  var timeb = 60 * Number(time_b[0]) + Number(time_b[1]);
  var time = 60 * hour + minu;
  if (time >= timea && time <= timeb) {
    //sleep(2000);
    return true;
  } else {
    return false;
  }
}

function myEnergyTime () {
  var now = new Date();
  var hour = now.getHours();
  var minu = now.getMinutes();
  var mytime = morningTime.split(":");

  if (mytime[0] == hour && (mytime[1] == minu || mytime[1] == minu - 1)) {
    return true;
  } else {
    return false;
  }
}

function enterAntFarm () {
  var i = 0;
  swipe(520, 1200, 520, 600, 500);
  sleep(500);
  swipe(520, 600, 520, 1200, 500);
  while (!textEndsWith("螞蟻莊園").exists() && !descEndsWith("螞蟻莊園").exists() && i <= 5) {
    sleep(1000);
    i++;
  }
  clickByTextDesc("螞蟻莊園", 0, true, "請把螞蟻莊園入口添加到主頁我的應用");
  sleep(7000);
  //captureScreen("/storage/emulated/0/DCIM/Screenshots/2_1.png");
  //exit();
  click(931, 2150);
  sleep(2000);
  click(340, 1420);
  sleep(1000);
  click(340, 1900); sleep(1000); click(230, 1600); sleep(1000);
  click(930, 1900); sleep(1000); click(670, 1600); sleep(1000);
  //captureScreen("/storage/emulated/0/DCIM/Screenshots/2_2.png");
  back();
  sleep(2000);
}

function openAlipay () {
  //launchApp("Alipay");

  launchApp("支付寶");
  toastLog("等待支付寶啓動");
  //sleep(3000);
  var i = 0;
  while (!textEndsWith("掃一掃").exists() && !descEndsWith("掃一掃").exists() && i <= 5) {
    sleep(2000);
    i++;
  }
  toastLog("第" + i + "次嘗試進入支付寶主頁");
  if (i >= 5) {
    toastLog("沒有找到支付寶首頁,程序退出");
    exit();
  }
}

//程序主入口
function mainEntrence () {
  //前置操作
  prepareThings();
  //註冊音量下按下退出腳本監聽
  registEvent();
  do {
    //打開支付寶
    openAlipay();
    //螞蟻莊園
    // if (!checkTime()) {
    //   enterAntFarm();
    // }
    //進入螞蟻森林主頁,收集自己的能量
    enterMyMainPage();
    //進入排行榜
    enterRank();
    //進入好友主頁,收好友能量
    enterOthers();
    //結束後返回主頁面
    whenComplete();
  } while (checkTime());

  exit();
}

需要注意的是我這個是 小米9的配置(1080, 2340) 不同的手機分辨率自行調整一下

第三步: 運行
這一步就不多講了,在更多裏面可以設置定時任務,大家自己摸索一下

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章