Auto.js自動(dòng)收取自己和好友螞蟻森林能量腳本
用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)文章
JavaScript實(shí)現(xiàn)重置表單(reset)的方法
這篇文章主要介紹了JavaScript實(shí)現(xiàn)重置表單(reset)的方法,涉及javascript中reset()方法的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-04-04微信小程序中使用自定義圖標(biāo)(阿里icon)的方法
這篇文章主要介紹了微信小程序中使用自定義圖標(biāo)(阿里icon)的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-08-08