Autojs4.1.1学习实践-奖券世界版

本文分享了一款使用AutoJS编写的奖券世界辅助工具,能自动转盘、看广告并建设国家。代码实现了银币领取、自动合成等关键功能,借助广告处理技术提高效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近研究各种产品,发现了autojs,瞎折腾的心又按捺不住了。然后,发现奖券世界最近推的很火,于是用autojs试试牛刀,就有了今天这份文章。
相关源码见:https://download.youkuaiyun.com/download/yang3yang/60928189
相关APK见:https://wwo.lanzouo.com/i0KShxhmh0j
主要功能:自动转盘,自动看AD,自动建设国家
主要代码如下:

var ver="v0.2-1130";
pTools = require('tools.js');
adunit = require('adunit.js');
pTools.writeLog("奖券世界助手开始运行"+ver+"|"+pTools.version()+"|"+adunit.version());
// #初始化配置区
var conf = storages.create("assistant-jiangquanshijie");
var lstFlowFinish=0;
var ZP=0;
var BCYB_0=0;
var BCYB_12=0;
var BCYB_20=0;
加载配置();

//#
var curTime = new Date();
var waitADTimes = 5000;//#广告播放之前的等待时长
var sPackName="com.caike.ticket";
var ADTimeOut =70;
var maxRuntime=30;//#最大运行时长

//#获取截屏权限
if(!pTools.requestScreenCapturePermision()){exit();};

threads.start(function () {
    main()
    pTools.writeLog("奖券世界助手运行结束");
    pTools.log2File("log-jqsj");
});

function main() {
    try {
        if(无法再获取银币()){
            pTools.writeLog("银币无领取次数!暂不建设国家!");
            home(); 
            return;
        }

        if (!packageName(sPackName).findOnce()) {
            app.launch(sPackName);
            pTools.writeLog("启动奖券世界APP");
            sleep(15 * 1000);//#等待APP启动
            if (!packageName(sPackName).findOnce()) {
                pTools.writeLog("启动奖券世界APP失败?");
                //home();return;
            }
        }
        离线收益();
        转盘();
        
        var startTime =new Date().getTime();
        建设国家();
        while(new Date().getTime()-startTime<maxRuntime*60*1000){
            //#运行时长
            if(!建设国家()){
                break;
            }
        }

        curTime = new Date();
        lstFlowFinish = curTime.getTime();
        conf.put("lstFlowFinish", lstFlowFinish);

        pTools.closeAPP(sPackName);
        home();          
    } catch (a) {
        pTools.writeLog("异常" + a)
        // home(); 
        return;
    }
    //console.hide();
};

///=======================业务函数区====================================///
//#加载配置
function 加载配置() {
    maxRuntime =conf.get("maxruntime");
    if (!maxRuntime) { maxRuntime = 30; };//#默认运行最多10分钟

    lstFlowFinish = conf.get("lstFlowFinish");
    if (!lstFlowFinish) { lstFlowFinish = 0; };
    console.log("lstFlowFinish:" + lstFlowFinish);

    ZP = conf.get("zp");
    if (!ZP) { ZP = 0; };
    console.log("zp:" + ZP);

    curTime =new Date();
    if(curTime.getHours()>=0 && curTime.getHours()<12){
        BCYB_0 = conf.get("bcyb_0");
        if (!BCYB_0) { BCYB_0 = 0; };
        console.log("bcyb_0:" + BCYB_0);

        BCYB_12=0;
        conf.put("bcy_12",BCYB_12);
        
        BCYB_20=0;
        conf.put("bcy_20",BCYB_20);

    }else if(curTime.getHours()>=12 && curTime.getHours()<20){
        BCYB_12 = conf.get("bcyb_12");
        if (!BCYB_12) { BCYB_12 = 0; };
        console.log("bcyb_12:" + BCYB_12);

        BCYB_0=0;
        conf.put("bcy_0",BCYB_0);
        
        BCYB_20=0;
        conf.put("bcy_20",BCYB_20);
    }else{
        BCYB_20 = conf.get("bcyb_20");
        if (!BCYB_20) { BCYB_20 = 0; };
        console.log("bcyb_20:" + BCYB_20);

        BCYB_12=0;
        conf.put("bcy_12",BCYB_12);
        
        BCYB_0=0;
        conf.put("bcy_0",BCYB_0);
    } 
}
function 离线收益() {
    var b =text("翻倍领取").findOnce();
    if (b) {
        sleep(500);
        pTools.writeLog("点击翻倍领取!");
        pTools.randomClickVAD(b.bounds().centerX(), b.bounds().centerY(),20,waitADTimes);
        adunit.handleIncentiveAD(ADTimeOut);
        sleep(1500);

        b =text("开心收下").findOnce();
        if(b){
            sleep(500);
            pTools.writeLog("点击开心收下!");
            pTools.randomClick(b.bounds().centerX(), b.bounds().centerY(),20);
            sleep(1500);
        }else{
            pTools.writeLog("点击开心收下失败!" ,true);
        }
    }
};
function 转盘() {
    // #
    if(curTime.getDate()== ZP){
        pTools.writeLog("转盘次数已达到,不再执行!");
        return;
    }
    var b=id("iv_dial").findOnce();
    if (b) {
        sleep(500);
        pTools.randomClick(b.bounds().centerX(), b.bounds().centerY(),20);
        pTools.writeLog("点击转盘成功!");
        sleep(1500);

        for(let i=0;i<6;i++){
            b =className("android.widget.TextView").text("恢复次数").findOnce();
            if(b){//#说明转盘已经次数用完
                pTools.writeLog("转盘次数已经用完!");
                conf.put("zp", curTime.getDate());
    
                b =id("iv_close").findOnce();
                pTools.writeLog("点击关闭转盘!");
                pTools.randomClick(b.bounds().centerX(), b.bounds().centerY(),3);
                sleep(1000);
                return;
            }else{
                b =text("立刻抽奖").findOnce();
                if(b){
                    pTools.writeLog("点击立刻抽奖!");
                    pTools.randomClick(b.bounds().centerX(), b.bounds().centerY(),3);
                    sleep(7000);

                    b =text("开心收下").findOnce();
                    if(b){
                        sleep(500);
                        pTools.writeLog("点击开心收下(转盘)!");
                        pTools.randomClick(b.bounds().centerX(), b.bounds().centerY(),20);
                        sleep(1500);
                    }else{
                        pTools.writeLog("点击开心收下(转盘)失败!" ,true);
                        return;
                    }

                }else{
                    pTools.writeLog("立刻抽奖失败!");
                    return;
                }
            }
        }
    }else{
        pTools.writeLog("点击转盘失败!" ,true);
        return false;
    }

};
function 建设国家(){
    自动合成();
    var b=id("tab_buy").findOnce();
    if(b){
        for(let i=0;i<4;i++){//#每次点击4下
            pTools.randomClick(b.bounds().centerX(), b.bounds().centerY(),20);
            sleep(random(100,200));
            点击关闭();
            if(!银币不足()){
                return false;
            }
        }
        sleep(1000);//#给自动合成时间
        return true;
    }else{
        return false;
    }
};
function 自动合成() {
    var b =text("停止合成").findOnce();
    if(b){//#正在自动合成中

    }else{
        pTools.writeLog("需要自动合成!");
        b =id("lyt_auto_merge").findOnce();
        if (b) {
            sleep(500);
            pTools.writeLog("点击自动合成!");
            pTools.randomClick(b.bounds().centerX(), b.bounds().centerY(),5);
            sleep(500);
    
            b =text("看视频开启").findOnce();
            if(b){
                sleep(500);
                pTools.writeLog("点击看视频开启!");
                pTools.randomClickVAD(b.bounds().centerX(), b.bounds().centerY(),20 ,waitADTimes);
                adunit.handleIncentiveAD(ADTimeOut);
                sleep(1500);
            }else{
                pTools.writeLog("点击看视频开启失败!" ,true);
            }
        }
    }
};
function 银币不足(){
    var b =text("银币不足").findOnce();
    if(b){//#
        pTools.writeLog("需要领取银币!");
        b =text("立即领取").findOnce();
        if(b){
            sleep(500);
            pTools.writeLog("点击领取银币!");
            pTools.randomClickVAD(b.bounds().centerX(), b.bounds().centerY(),20 ,waitADTimes);
            adunit.handleIncentiveAD(ADTimeOut);
            sleep(1500);

            b =text("开心收下").findOnce();
            if(b){
                sleep(500);
                pTools.writeLog("点击开心收下(银币)!");
                pTools.randomClick(b.bounds().centerX(), b.bounds().centerY(),20);
                sleep(1500);
            }else{
                pTools.writeLog("点击开心收下(银币)失败!" ,true);
            }
            return true;
        }else{
            pTools.writeLog("银币暂无领取次数!" ,true);
            设置无法再获取银币();
            return false;
        }
    }
    return true;
};
function 点击关闭(){
    var b =text("点击关闭").findOnce();
    if(b){//#存在点击关闭按钮
        sleep(500);
        pTools.writeLog("点击关闭!");
        pTools.randomClick(b.bounds().centerX(), b.bounds().centerY(),20);
        sleep(1500);
    }
};
function 无法再获取银币(){
    curTime =new Date();
    if(curTime.getHours()>=0 && curTime.getHours()<12){
        if(BCYB_0==curTime.getDate()){
            return true;
        }else{
            return false;
        }
    }else if(curTime.getHours()>=12 && curTime.getHours()<20){
        if(BCYB_12==curTime.getDate()){
            return true;
        }else{
            return false;
        }
    }else{
        if(BCYB_20==curTime.getDate()){
            return true;
        }else{
            return false;
        }
    }
};
function 设置无法再获取银币(){
    curTime =new Date();
    if(curTime.getHours()>=0 && curTime.getHours()<12){
        BCYB_0=curTime.getDate();
        conf.put("bcyb_0",BCYB_0);
    }else if(curTime.getHours()>=12 && curTime.getHours()<20){
        BCYB_12=curTime.getDate();
        conf.put("bcyb_12",BCYB_12);
    }else{
        BCYB_20=curTime.getDate();
        conf.put("bcyb_20",BCYB_20);
    }
};

里头广告处理部分用了文章:https://blog.youkuaiyun.com/zy0412326/article/details/121099001 的方案,感谢大神。
代码比较简单,欢迎拍砖。

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值