前言
x> 双十一活动已经过期,本文仅作存档
本脚本仅供学习交流之用,使用者如何使用与本文作者无关。
AutoJS下载 & 教程
全民营业脚本
i> 如果遇到问题请在下方评论
脚本
//遇到问题请在 https://chrxw.com 留言
//Ver 0.6 2020.10.31
//By Chr_([email protected])
//=========================
//功能配置
//自动加入会员(设为false禁用)
var auto_join_vip = true;
//自动完成加购任务(设为false禁用)
var auto_add_cart = true;
//=========================
auto.waitFor();
// console.show();
toast('\n脚本开始运行\n请切换到任务页');
for (var i = 0; i < 10; i++) {
    //等待切换到任务页
    if (className("android.view.View").text("收取金币").exists() ||
        className("android.view.View").text("立即解锁").exists()) {
        log('break');
        break;
    }
    rsleep(1);
}
if (!className("android.view.View").textStartsWith("邀请好友助力").exists()) {
    advclick(className("android.view.View").text("领金币").findOnce());
}
toast("\n即将开始工作\n中途需退出请按【音量+】终止");
sleep(2000);
for (; ;) {
    var flag = false;
    var objs = text("去完成").find();
    for (var i = 0; i < 10; i++) {
        if (objs[i] != null) {
            obj = objs[i].parent();
            if (obj.children() >= 8) {
                break;
            }
        }
    }
    var tasks = obj.children();
    for (var i = 2; i < tasks.length; i += 4) {
        var txt = tasks[i].text();
        log(txt, i);
        if (txt.search("8秒") != -1) {
            var btn = tasks[i + 1];
            if (btn.text() == "去完成") {
                advclick(btn);
                view();
                flag = true;
            }
        } else if (txt.search("浏览可得") != -1) {
            var btn = tasks[i + 1];
            if (btn.text() == "去完成") {
                advclick(btn);
                view2();
                flag = true;
            }
        } else if (auto_join_vip && txt.search("成功入会可得") != -1) {
            var btn = tasks[i + 1];
            if (btn.text() == "去完成") {
                advclick(btn);
                view3();
                flag = true;
            }
        } else if (auto_add_cart && txt.search("5个") != -1) {
            var btn = tasks[i + 1];
            if (btn.text() == "去完成") {
                advclick(btn);
                view4();
                flag = true;
            }
        }
        if (flag) {
            break;
        }
    }
    if (!flag) {
        toast("\n脚本运行完毕\n模拟浏览任务全部完成(大概)");
        break;
    }
}
//模拟浏览(浏览会场任务)
function view() {
    rsleep(3);
    rslide(10);
    // className("android.widget.Image").text("vk image").findOne(5000);
    rslideR(1);
    rsleep(3);
    advback();
}
//模拟浏览(直接返回)
function view2() {
    rsleep(2);
    back();
    rsleep(2);
}
//模拟浏览(开卡)
function view3() {
    rsleep(2);
    var btn = className("android.view.View").text("确认授权并加入店铺会员").findOne(5000);
    log(btn);
    if (btn) {
        advclick(btn);
        className("android.view.View").text("恭喜您已集齐所有会员卡").findOne(2000);
        rsleep(2);
        advback();
    }
}
//模拟浏览(浏览商品、加购任务)
function view4() {
    rsleep(3);
    var add_cart = true;
    var count = 4;
    if (className("android.view.View").text("任意浏览以下5个商品").exists()) {
        var add_cart = false;
        var count = 4;
    } else {
        var add_cart = true;
        var count = 5;
    }
    log(add_cart ? "加购模式" : "浏览模式");
    for (var i = 0; i < 5; i++) {
        var prices = className("android.view.View").textMatches("^¥[0-9]+\.[0-9][0-9]").untilFind();
        log(i, prices[i].text());
        var good = prices[i].parent().parent();
        if (good.childCount() > count) {
            log('已完成,跳过');
            continue;
        }
        if (!add_cart) {
            advclick(good);
            rsleep(2);
            rslide(1);
            className("android.widget.ImageView").desc("返回").click();
        } else {
            good.child(4).click();
        } rslide(1);
        rsleep(2);
    }
    advback();
    rsleep(3);
}
//随机延时
function rsleep(s) {
    while (s--) {
        sleep(random(900, 1200));
    }
}
//模拟返回
function advback() {
    for (var i = 0; i < 3; i++) {
        if (!className("android.widget.ImageView").desc("返回").exists()) {
            rslideR(1);
            rsleep(2);
            continue;
        }
        className("android.widget.ImageView").desc("返回").click();
        rsleep(5);
        if (className("android.view.View").text("领金币").exists()) {
            return;
        }
    }
    log("定位不到返回按钮,模拟返回键");
    back();
}
//随机划屏
function rslide(i) {
    while (i--) {
        var x1 = random(200, 900);
        var y1 = random(1200, 1900);
        var x2 = random(200, 900);
        var y2 = random(1000, 1200);
        swipe(x1, y1, x2, y2, 300);
        rsleep(1);
    }
}
//随机划屏,反向
function rslideR(i) {
    while (i--) {
        var x1 = random(200, 900);
        var y1 = random(900, 1300);
        var x2 = random(200, 900);
        var y2 = random(1500, 1900);
        swipe(x1, y1, x2, y2, 300);
        rsleep(1);
    }
}
function advclick(uiobject) {
    var rect = uiobject.bounds();
    // var x = random(rect.left, rect.right);
    // var y = random(rect.top, rect.bottom);
    click(rect.centerX(), rect.centerY());
}说明
- 加了几个功能开关,可以禁用部分功能。
- 修正了几个影响使用的bug。
- 支持浏览,开卡,加购等任务。
- 修复无法退出的bug。
- 修复了无法运行的bug。
每日逛店脚本
活动页最下面每日逛店也有少量金币,不过受益比较感人,就不整合了,需要的自取
//遇到问题请在 https://chrxw.com 留言
//Ver 0.1 2020.10.27
//By Chr_([email protected])
auto.waitFor();
toast('\n脚本开始运行\n请切换到任务页');
className("android.view.View").textStartsWith("宝箱随机藏在以下店铺内").waitFor();
for (var k = 0; k < 10; k++) {
    count = className("android.view.View").text("寻宝箱 领金币").findOne().parent().child(2).childCount();
    if (count > 0) {
        toast("\n即将开始工作\n中途需退出请按【音量+】终止");
        for (var i = 0; i < 20; i++) {
            var shops = className("android.view.View").text("寻宝箱 领金币").findOne().parent().child(2).children();
            shops[i].click();
            rsleep(4);
            if (className("android.view.View").text("每日签到 (0/1)").findOne(100) &&
                className("android.view.View").text("去完成").findOne(100)) {
                toast('达到每日上限,任务结束');
                back();
                break; 
            }
            back();
        }
        toast('工作完成,总计', i, '个店铺');
        break;
    } else {
        toast('获取不到店铺列表,请手动划到活动页最下面');
    }
}
//随机延时
function rsleep(s) {
    while (s--) {
        sleep(random(900, 1200));
    }
}热爱时光机脚本
脚本
//遇到问题请在 https://chrxw.com 留言
//Ver 0.1 2020.11.1
//By Chr_([email protected])
//=========================
//功能配置
//=========================
auto.waitFor();
//console.show();
// toast('\n脚本开始运行\n请切换到品牌狂欢城任务页');
className("android.view.View").text("热爱时光机").waitFor();
// toast("\n即将开始工作\n中途需退出请按【音量+】终止");
// sleep(2000);
for (; ;) {
    if (!className("android.view.View").textStartsWith("邀请好友一起玩").exists()) {
        get_task_btn().click();
        rsleep(2);
    }
    var flag = false;
    var objs = text("去完成").find();
    for (var i = 0; i < objs.size(); i++) {
        if (objs[i] != null) {
            obj = objs[i].parent();
            if (obj.children().size() == 2) {
                break;
            }
        }
    }
    var tasks = obj.parent().parent().children();
    for (var i = 0; i < tasks.length; i++) {
        var txt = tasks[i].child(1).text();
        var btn = tasks[i].child(3).child(0);
        if (txt.search("超级") != -1) {
            if (btn.text() == "去完成") {
                log(1, txt);
                btn.click();
                rsleep(2);
                view2();
                flag = true;
            }
        } else if (txt.search("大牌") != -1) {
            if (btn.text() == "去完成") {
                log(2, txt);
                btn.click();
                rsleep(2);
                view3();
                flag = true;
            }
        } else if (txt.search("精选") != -1) {
            if (btn.text() == "去完成") {
                log(3, txt);
                btn.click();
                view();
                flag = true;
            }
        // 有bug,暂时不能使用
        // } else if (txt.search("同城") != -1) {
        //     if (btn.text() == "去完成") {
        //         log(3, txt);
        //         btn.click();
        //         view();
        //         flag = true;
        //     }
        }
        if (flag) {
            break;
        }
    }
    if (!flag) {
        toast("\n脚本运行完毕\n模拟浏览任务全部完成(大概)");
        break;
    }
}
//模拟浏览(直接返回)
function view() {
    rsleep(2);
    advback();
    rsleep(2);
}
//模拟浏览(主页浏览任务1)
function view2() {
    var task = className("android.view.View").textStartsWith("逛超级品牌立得100").findOnce(1);
    if (task) {
        var str = task.text();
        var nums = str.match(/\d+/g);
        var curr = nums[1];
        var max = nums[2];
        while (curr < max) {
            toastLog('逛超级品牌任务', curr);
            className("android.view.View").textStartsWith("逛超级品牌立得100").findOnce(1).parent().child(2).child(0).child(1).click();
            view();
            curr++;
        }
    }
}
//模拟浏览(主页浏览任务2)
function view3() {
    var task = className("android.view.View").textStartsWith("逛大牌品牌立得50").findOnce(1);
    if (task) {
        var str = task.text();
        var nums = str.match(/\d+/g);
        var curr = nums[1];
        var max = nums[2];
        toastLog(nums)
        while (curr < max) {
            toastLog('逛大牌品牌任务' + curr);
            className("android.view.View").textStartsWith("逛大牌品牌立得50").findOnce(1).parent().child(1).child(1).click();
            view();
            curr++;
        }
    }
}
//随机延时
function rsleep(s) {
    while (s--) {
        sleep(random(900, 1200));
    }
}
//模拟返回
function advback() {
    for (var i = 0; i < 3; i++) {
        if (!className("android.widget.ImageView").desc("返回").exists()) {
            rslideR(1);
            rsleep(2);
            continue;
        }
        className("android.widget.ImageView").desc("返回").click();
        rsleep(5);
        if (className("android.view.View").text("热爱时光机").exists()) {
            return;
        }
    }
    log("定位不到返回按钮,模拟返回键");
    back();
}
//随机划屏
function rslide(i) {
    while (i--) {
        var x1 = random(200, 900);
        var y1 = random(1200, 1900);
        var x2 = random(200, 900);
        var y2 = random(1000, 1200);
        swipe(x1, y1, x2, y2, 300);
        rsleep(1);
    }
}
//随机划屏,反向
function rslideR(i) {
    while (i--) {
        var x1 = random(200, 900);
        var y1 = random(900, 1300);
        var x2 = random(200, 900);
        var y2 = random(1500, 1900);
        swipe(x1, y1, x2, y2, 300);
        rsleep(1);
    }
}
//高级点击
function advclick(uiobject) {
    var rect = uiobject.bounds();
    // var x = random(rect.left, rect.right);
    // var y = random(rect.top, rect.bottom);
    click(rect.centerX(), rect.centerY());
}
//获取任务按钮
function get_task_btn() {
    var tips = className("android.view.View").textMatches("剩余\\d+能量").findOnce();
    var btn = tips.parent().parent().child(4);
    return (btn);
}说明
- 此为第一版,可能存在bug,如有遇到请在此反馈。
本文链接:https://blog.chrxw.com/archives/2020/10/25/1409.html
转载请保留本文链接,谢谢
 
                             
                            
45 条评论
文章写的很好啊,赞(ㆆᴗㆆ),每日打卡~~
每次都费时费力为了广大撸毛党制作脚本,浪费的时间匹配不上你的才华,何不毕全功于一役制作一个这种类型的万能脚本,有没有这种可能性?
这个想法不太现实,不过有可能的话我想自己造个轮子,autojs免费版年久失修,不是很好用了
你真是太棒了!!
求营业版图任务脚本。路径双11活动主要左上角图标
要不试试别人的脚本:https://github.com/hyue418/taobao-11-11
我暂时不会做这个功能,因为这周在赶项目
亲还是在报错直接就完成了
时光机的还是用不了额,只会不停的打开弹窗,不会点进店里去
现在又有新的活动,京东的,叫品牌狂欢城,在我的-我的双11里面,集能量任务里面逛店铺起码73家,手动要抽筋了,请问大佬有兴趣也弄一个脚本吗
我没找到入口,能再说明的详细一点吗?
真大佬
在点开京东APP后,右下角我的,第一屏下方,我的11.11,从左数第三个,品牌狂欢城
花了1小时简单的撸了一个,放到文章末尾了
谢谢大佬!
这个热爱时光机的脚本一直会提示没有悬浮窗权限,全民营业的就不会。。
第8行 console.show(); 删掉即可,忘记去掉了。
老是弹出集能量那页面,做不了任务
ok
营业版图什么时候能加上呢,每个城市都有任务哦
还有快递员送货
快递员点4次就没有了。自己做吧
不行了 开始就结束
已修复
不能用了,打开后先显示任务开始后,直接显示任务已完成
修复了 ,第30行改成findOnce(1)即可
 ,第30行改成findOnce(1)即可
重新用了,今天更新的可以用
只能完成一次~不会返回
结束运行脚本,然后重新运行即可解决,这个问题我稍后修复。
完成一个任务之后会退回到京东首页,华为EMUI11
结束运行脚本,然后重新运行即可解决,这个问题我稍后修复。
完成那个“11.11主场”的任务后,会卡着不动,需要停止重新来才行。
k30pro无法正常使用脚本,看了主会场之后无法自动返回,然后就会卡死在一个界面上
尝试按音量+结束脚本,然后重启试试?有可能是卡视图分析了,貌似是autojs的bug
请问在哪里改浏览时间,手机太慢,每次都是没完成就自动返回,想调时间但不知道应该调那个数值
137行,里面的数字调大点,单位是毫秒
从618过来的,感谢分享!|´・ω・)ノ
甄选优品任务无法完成
强制结束脚本然后再重新运行一次就行了,估计是卡视图分析了,我找个时间调试下
0.3的在我一台安卓7的华为老爷机上只能打开控制台窗口,不动也没其他输出。
切到任务页面,就是能看到任务信息的页面再开脚本
不行啊,安卓10的一加5T,JD版本9.0.6,在任务不会动,也不会打开任务页。
有没有给autojs后台读写手机储存的权限呢?
0.3的好像能动了,但是之前已经手动把浏览任务做完了没法试了,剩下开卡入会员任务,0.3的脚步唰唰地替我加了加了其他会员。
加入会员这个功能建议加上个控制标志,毕竟加入了太多会员以后短信就发过来一堆。
ok,那我加个开关