1. 程式人生 > 其它 >2021雙十一自動刷淘寶喵糖並投骰子Auto.js指令碼(安卓適用)

2021雙十一自動刷淘寶喵糖並投骰子Auto.js指令碼(安卓適用)

前作https://www.cnblogs.com/smileglaze/p/13854538.html,今年大頭主要在瀏覽任務和自動投骰子上,較為省心。

0.更新內容

@_@常回來看看,可能會有bug修復和新增新功能

  • v1.010.22更新:
    • 功能:自動完成淘寶雙十一的喵糖任務中的瀏覽15s任務,並自動投骰子。

  • vx.x 佔位符:
    • 佔位符:佔位符

1.開宗明義

(小白請直接看第三部分內容)

  • 平臺:Android
  • 功能:自動完成淘寶雙十一的喵糖任務中的瀏覽15s任務,並自動投骰子
  • 特色:
    • 增加了程式執行時按下[音量下鍵][長按懸浮窗內文字
      ]
      退出的功能,提供給想要主動退出的情況。(也可以在Auto.js中的管理欄目下找到正在執行的指令碼)
  • 依賴:Auto.js
  • 注意:指令碼開啟前需要保證淘寶開啟,且處於喵糖活動的任務介面(可見“做任務賺喵糖”和一系列任務的介面),否則之後都會錯誤操作

指令碼程式碼如下https://wws.lanzous.com/b01npfw9g,下載後解壓然後使用Auto.js的匯入功能)

/*---原載於https://www.cnblogs.com/smileglaze/p/15440620.html 僅供學習交流,下載後請於24小時內刪除*/

/*--------版本v1.0根據個人情況修改以下內容----------*/

//長等待時間常量,用於應用啟動、廣告等較長時間等待,如果網路不好或手機卡請增加此數值,預設8秒
var LONG_TIME = 8000;

//短等待時間常量,用於例如返回等每步操作後的等待,如果手機卡請增加此數值
var SHORT_TIME = 3000;

/*--------根據個人情況修改以上內容----------*/

auto.waitFor();
var height = device.height;
var width = device.width;
setScreenMetrics(width, height);

//停掉除了本指令碼以外的正在執行的指令碼
killOthersAlive();

//啟用懸浮窗,用於提示,為沒有音量下鍵的手機提供了關閉懸浮窗可以直接停止指令碼的方式
var w = floaty.window(
    <frame gravity="left">
        <text id="text" textColor="black" bg='#ffffff'>★★★Tips:按下[音量-]鍵或者長按[懸浮窗內文字]可隨時結束指令碼</text>
    </frame>
);
//設定懸浮窗變數
floatW();

//啟用按鍵監聽,按下音量下鍵指令碼結束
keyDetector();

//保持螢幕常亮,最多三十分鐘
device.keepScreenDim(30 * 60 * 1000);
//開始刷喵糖
lingQuTaobao();

//啟用按鍵監聽,按下音量下鍵指令碼結束
function keyDetector() {
    threads.start(function() { //在子程序中執行監聽事件
        events.observeKey();
        events.on("key", function(code, event) {
            var keyCodeStr = event.keyCodeToString(code);
            console.log(code);
            console.log(keyCodeStr);
            if (keyCodeStr == "KEYCODE_VOLUME_DOWN") {
                toast("檢測到音量下鍵,程式已結束。");
                //取消螢幕常亮
                device.cancelKeepingAwake();
                exit();
            }
        });
    });
}

function lingQuTaobao() {
    launchApp("淘寶");
    ui.run(function() {
        w.text.setText("★★★Tips:請手動開啟淘寶喵糖活動[做任務賺喵糖]介面");
    });
    t = text("賺糖領紅包").findOne(SHORT_TIME);
    if (t != null) {
        t.click();
        sleep(SHORT_TIME);
    }
    text("做任務贏獎勵").waitFor();
    sleep(1000);
    ui.run(function() {
        w.text.setText("★★★Tips:按下[音量-]鍵或者長按[懸浮窗內文字]可隨時結束指令碼");
    });
    toast("賺喵糖");
    sleep(SHORT_TIME);
    while (text("去瀏覽").exists()) {
        toast("存在去瀏覽");
        text("去瀏覽").findOne().click();
        sleep(SHORT_TIME);
        sleep(20000);
        back();
        sleep(SHORT_TIME + 1000);
        if (!text("做任務贏獎勵").exists()) {
            back();
            sleep(SHORT_TIME);
        }
    }
    while (text("瀏覽15s立得").exists()) {
        toast("存在瀏覽任務");
        text("瀏覽15s立得").findOne().parent().parent().parent().child(1).click();
        sleep(SHORT_TIME);
        sleep(20000);
        back();
        sleep(SHORT_TIME + 1000);
        if (!text("做任務贏獎勵").exists()) {
            back();
            sleep(SHORT_TIME);
        }
    }
    toast("領取完成...");
    text("關閉").findOne().click();
    sleep(SHORT_TIME);
    while (textContains("點選贏紅包").exists()) {
        toast("自動投骰子");
        textContains("點選贏紅包").findOne().click();
        sleep(5000);
    }
    home();
    //刷支付寶喵糖
    toast("指令碼結束^_^");
    //取消螢幕常亮
    device.cancelKeepingAwake();
    sleep(SHORT_TIME);
    exit();
}

function floatW() {
    //懸浮窗不會自動關閉
    setInterval(() => {}, 1000);
    w.setPosition(0, height - 800);
    w.setSize(400, 300);
    //懸浮窗可調整大小
    w.setAdjustEnabled(true);
    //退出懸浮窗即結束指令碼
    //w.exitOnClose();
    //長按懸浮窗內文字結束指令碼
    w.text.longClick(() => {
        //取消螢幕常亮
        device.cancelKeepingAwake();
        toast("檢測到長按懸浮窗文字,指令碼終止");
        //try...catch把exit()函式的異常捕捉,則指令碼不會立即停止,仍會執行幾行後再停止
        try {
            exit();
        } catch (err) {}
        //直接exit()的話堅持不到return的時候
        return true;
    });
}

function killOthersAlive() {
    //獲取全部正在執行的指令碼引擎
    var allEngines = engines.all();
    //log(allEngines);
    for (var i = 0; i < allEngines.length; i++) {
        //停掉除了本指令碼以外的正在執行的指令碼
        if (allEngines[i] != engines.myEngine()) {
            allEngines[i].forceStop();
        }
    }
}

2.Auto.js的使用方法

簡單說,Auto.js是一個手機的APP,不需要root許可權就能執行自己寫的JS指令碼。

  • 安裝AutoJS(可以在此下載https://wwe.lanzoui.com/izzrahmeilc,驗證密碼1234)
  • 在手機上安裝並開啟Auto.js,會提示開啟輔助功能(各個手機叫法不同,比如三星叫服務,魅族叫無障礙服務)。
關於無障礙功能的開啟,各個手機可能不同,但大致是一樣的,以MIUI為例,入口在:設定 - 更多設定 - 無障礙 - 已下載的服務 - Auto.js - 開啟服務
  • 給Auto.js開啟 "顯示懸浮窗" 許可權,否則無法啟動懸浮窗提示!!!
    (開啟方法:長按Auto.js,開啟應用資訊 - 許可權管理,確認“顯示懸浮窗”許可權開啟)
  • 開啟Auto.js,點選右下角"+"號,(在這裡選擇“匯入”可以匯入前面下載的壓縮檔案解壓後的js指令碼)選擇“檔案”可以建立新的指令碼,隨便起個名字,點“確定”,然後把這個部落格上面的程式碼完整複製進去,點右上角儲存的圖示
  • 關閉鍵盤,點右上角的小三角▶執行程式
  • 等待程式執行,超過15s沒反應才是不正常的。(建議鎖屏時間設定為30s及以上)

3.寫給小白

  1. 把連結https://wws.lanzous.com/b01npfw9g的兩個檔案都下載了(記得自己的下載位置)
  2. 把apk檔案安裝
  3. 把zip檔案解壓了,得到js檔案(記得解壓位置)
  4. 看上面第點“Auto.js的使用方法”中,按照上面寫的方法給設定 無障礙顯示懸浮窗許可權(如果沒有許可權也會提示你開啟)
  5. 開啟Auto.js,點選右下角的+號,選第一個匯入指令碼,指令碼就是第3步你解壓的js檔案
  6. 指令碼開啟前需要保證淘寶開啟,且處於喵糖活動的任務介面(可見“做任務賺喵糖”和一系列任務的介面),在Auto.js點選三角號▶執行指令碼(首次執行指令碼可能會提示是否允許Auto.js開啟淘寶,手動點選確認,按[音量-鍵]結束,並重新執行指令碼即可)
  7. 如果遇到瞎點的情況,請立即按下手機的[音量-]鍵[長按懸浮窗內文字]停止程式,你也可以在Auto.js的主頁-管理中找到正在執行的指令碼,點選×關掉它
  8. 如果出錯請告訴我具體執行到哪個階段。

4.Q&A

  • Q:我覺得指令碼執行的每步操作等的太久了,有點憨憨

A:穩定性比效率更重要,這是為了照顧老年機和山區的同志,你可以自行修改程式碼第6、9行的時間常量,設定小一些。

如果等待時間過短,會出現未載入成功就進行判定和點選操作,從而導致錯誤的邏輯。

相對的如果你的手機太卡,或者網路不佳,可以增大這兩個時間常量(需要設定手機鎖屏時間不要過短,否則會鎖屏)。


5.注意事項

  • 測試環境是安卓11版本,執行可能需要安卓7版本以上,適合1080p解析度的全面屏手機
  • 程式並沒有測試所有情況,可能會遇到一些偶然彈窗影響程序,一般手動處理後,關掉指令碼和淘寶,重新執行即可
  • 每天可以通過任務介面最下面的淘寶和支付寶互相開啟的按鈕領取1個喵糖,一次性的,請手動完成
  • 每天除了瀏覽任務,還有種類比較多的“去完成”任務,目前還在蒐集資料中,以後可能會更新這些任務
  • 累計任務獎勵需要手動領取
  • 程式的的喚起如果失敗,需要注意是否禁止了被其他程式啟動
  • 這是一個指令碼的想法和驗證,僅供學習交流,下載體驗後,請24小時內刪除!!!
  • 非商業性使用— 不得將此專案及其衍生的專案的原始碼和二進位制產品用於任何商業和盈利用途
  • License:本專案使用CC-BY-NC-SA授權,但禁止使用此指令碼釋出任何教學視訊!!!