whisky7 发表于 2020-12-2 12:59

Auto.js-淘宝欢乐造红包脚本

本帖最后由 whisky7 于 2020-12-3 23:39 编辑

Autojs小白不请自来,不习惯注释,请见谅!以下为淘宝欢乐造红包的脚本,需下载Autojs使用,源码借鉴了某大佬的随机睡眠函数和曲线滑动函数,其它均为原创,最好下载老版本的淘宝防止检测,新版本目前暂时也还未被检测到,代码如下:
更新:1.修正打卡失败问题;2.增加视频浏览睡眠时间,以避免网络或手机卡顿造成的浏览未完成问题。
auto.waitFor();
console.show();
var width=device.width;
var height=device.height;
var COIN=0;
var float=1.25;
setScreenMetrics(width,height);
function music(file_path){
    media.playMusic(file_path);
    sleep(media.getMusicDuration());
}
function random(min, max) {
    return Math.round(Math.random() * (max - min)) + min;
}

function ramdomByFloat(number) {
    return random(number, number * float);
}

function randomSleep(time) {
    sleep(ramdomByFloat(time));
}

function accomplishment(){
    var index=0;
    var a=text("去完成").findOnce(index);
    while(a){
      if(a.parent().findOne(textContains("好友")))break;
      if(a.parent().findOne(textContains("施肥")))index++;
      if(a.parent().findOne(textContains("心愿")))index++;
      else
      {
            var coinNum=a.parent().findOne(textMatches(/×\d+/));
            coinNum=/\d+/.exec(coinNum.text())-0;
            a.click();
            toastLog(/\d+:\d+:\d+/.exec(Date())+' 正在完成...');
            randomSleep(3000);
            var secCount=0;
            while(!textContains("完成").exists() && !descContains("完成").exists()){
                if(secCount>20)break;
                if(! textContains("主播").exists()){randomSwipe();randomSleep(500);}      
                else randomSleep(2500);
                secCount++;
            }
            COIN+=coinNum;
            toastLog(/\d+:\d+:\d+/.exec(Date())+' 去完成任务成功!获得欢乐币:'+coinNum);
            back();
            textContains("累计任务奖励").waitFor();
            randomSleep(2000);
      }
      a=text("去完成").findOnce(index);
    }
}

/**
* 随机滑动
*/
function randomSwipe() {
    smlMove(ramdomByFloat(width / 2), ramdomByFloat(height / 1.5), ramdomByFloat(width / 2), ramdomByFloat(height / 4), ramdomByFloat(800));
}

/**
* 范围随机数生成
* @param min
* @param max
*/
function random(min, max) {
    return Math.round(Math.random() * (max - min)) + min;
}

/**
* 根据float生成随机数
* @param number
*/
function ramdomByFloat(number) {
    return random(number, number * float);
}

/**
* 仿真随机带曲线滑动
* @param qx 起点x轴坐标
* @param qy 起点y轴坐标
* @param zx 终点x轴坐标
* @param zy 终点y轴坐标
* @param time 滑动时间,毫秒
*/
function smlMove(qx, qy, zx, zy, time) {
    var xxy = ;
    var point = [];
    var dx0 = {
      "x": qx,
      "y": qy
    };
    var dx1 = {
      "x": random(qx - 100, qx + 100),
      "y": random(qy, qy + 50)
    };
    var dx2 = {
      "x": random(zx - 100, zx + 100),
      "y": random(zy, zy + 50),
    };
    var dx3 = {
      "x": zx,
      "y": zy
    };
    for (var i = 0; i < 4; i++) {
      eval("point.push(dx" + i + ")");
    };
    for (let i = 0; i < 1; i += 0.08) {
      xxyy = ;
      xxy.push(xxyy);
    }
    gesture.apply(null, xxy);
};

function bezierCurves(cp, t) {
    cx = 3.0 * (cp.x - cp.x);
    bx = 3.0 * (cp.x - cp.x) - cx;
    ax = cp.x - cp.x - cx - bx;
    cy = 3.0 * (cp.y - cp.y);
    by = 3.0 * (cp.y - cp.y) - cy;
    ay = cp.y - cp.y - cy - by;

    tSquared = t * t;
    tCubed = tSquared * t;
    result = {
      "x": 0,
      "y": 0
    };
    result.x = (ax * tCubed) + (bx * tSquared) + (cx * t) + cp.x;
    result.y = (ay * tCubed) + (by * tSquared) + (cy * t) + cp.y;
    return result;
};

function doubleTwelve(){
    COIN=0;
    while(true){
    try{
    toastLog(/\d+:\d+:\d+/.exec(Date())+' 请自行前往欢乐造红包任务中心并打开任务栏...');
    text("累计任务奖励").waitFor();
    toastLog(/\d+:\d+:\d+/.exec(Date())+" 正在执行任务...");
    var signUp=text('去打卡').findOne(2000);
    if(signUp){
      signUp.click();
      toastLog(/\d+:\d+:\d+/.exec(Date())+' 签到成功!');
    }
    accomplishment();
    var bonus=text("立即领取").findOne(2000);
    while(bonus){
      bonus.click();
      log(/\d+:\d+:\d+/.exec(Date())+' 领取奖励成功!');
      randomSleep(1000);
      var bonus=text("立即领取").findOne(2000);
    }
    toastLog(/\d+:\d+:\d+/.exec(Date())+' 欢乐造红包任务完成!获得总欢乐币:'+COIN);
    break;
    //music('/storage/emulated/0/脚本/success.wav');
}
    catch(err){
      log(err.message);
      //music('/storage/emulated/0/脚本/failure.mp3')
    }
    }
    }
   
doubleTwelve();

希望有什么问题可以提出来,我才能一边改进一边学习。

whisky7 发表于 2020-12-2 18:34

坏人。丶 发表于 2020-12-2 14:07
你可以编辑下代码,文本框有一个代码的插件,放入会更好看点。。

谢谢指正,第一次发布不太懂,现在改了,不过审核有点慢就是了

kosaku 发表于 2020-12-2 14:33

本帖最后由 kosaku 于 2020-12-2 14:57 编辑

节约时间就是节约生命,感恩楼主的分享~~!!
实在抱歉今天的份额已经打赏了另外一个大佬,明日一定再来支持~!

坏人。丶 发表于 2020-12-2 14:07

你可以编辑下代码,文本框有一个代码的插件,放入会更好看点。。

梦古无疆 发表于 2020-12-2 14:07

谢谢大佬分享   正需要这玩意

shiina0831 发表于 2020-12-2 14:23

感谢大佬 又可以节省一点步骤了

第一名dym 发表于 2020-12-2 14:34

谢谢大佬!终于可以轻松一点了

bamyoo 发表于 2020-12-2 14:37

正好需要这个,收藏下。

钢公鸡 发表于 2020-12-2 14:41

很强,又可以解放双手了

旺旺小小酥 发表于 2020-12-2 15:06

感谢分享
页: [1] 2
查看完整版本: Auto.js-淘宝欢乐造红包脚本