Fail 发表于 2020-10-17 18:30:00

Autojs王者荣耀冒险模式自动刷金币

本帖最后由 UPX1 于 2020-10-17 18:31 编辑

刷币效果可能一般,一局也就十几个金币,但思路可参考!

用法:
第一次启动:
先手动登录王者荣耀,进入“万象天工->冒险模式->挑战”,选一个关卡,选好上场英雄
再关闭王者荣耀,运行脚本
脚本会按照你选的英雄,重复刷你选的关卡
要停止脚本,可按音量+键

非第一次启动:
直接运行脚本即可

说明:
截图权限一定要给

成品脚本:

auto();

/**
用法:
第一次启动:
    先手动登录王者荣耀,进入“万象天工->冒险模式->挑战”,选一个关卡,选好上场英雄
    再关闭王者荣耀,运行脚本
    脚本会按照你选的英雄,重复刷你选的关卡
    要停止脚本,可按音量+键

非第一次启动:
    直接运行脚本即可

说明:
    截图权限一定要给
*/

function deBug(str) {
    log(str);
    toast(str);
}

function findImg(iconName)
{
    var img = captureScreen();
    while(!img) {
      sleep(500);
      img = captureScreen();
    }
    // deBug("截图完成!");
    var url="http://xfxuezhang.cn/WEB/SHARE/GoK/"+iconName;
    // deBug(url);

    var targetImg = null;
    if(!files.exists("GoKtemp.jpg")) {
      var res = http.get(url);
      if(res.statusCode == 200){
            files.writeBytes("GoKtemp.jpg", res.body.bytes());
            // targetImg = images.fromBytes(res.body.bytes());
            // deBug("下载成功");
      }else{
            deBug("请求失败: "+url);
            return null;
      }
    }
    targetImg = images.read("GoKtemp.jpg");
    var p = findImage(img, targetImg, { threshold: 0.9 });
    if(p){
      // deBug("找到啦:" + p);
    }else{
      // deBug("没找到");
    }
    return p;
}

// 删除下载的缓存图片
function clearImgCache() {
    if(files.exists("GoKtemp.jpg")) {
      files.remove("GoKtemp.jpg");
    }
}

// 匹配比对大小图
function matchImg(wait, imgName, tim) {
    clearImgCache();
    var res = null;
    if(wait == 1) {
      res = findImg(imgName);
      while(!res) {
            sleep(tim);
            res = findImg(imgName);
      }
      return res;
    }else{
      return findImg(imgName);
    }
}

function closeWidget() {
    matchImg(1, "close.jpg", 2000);
    //while(!findImg("close.jpg")) {sleep(2000);}

    deBug("进入完成");
    deBug("关闭弹窗");
    clearImgCache();
    var position = matchImg(0, "close.jpg", 0);
    // var position = findImg("close.jpg");
    while(position) {
      click(position.x, position.y);
      sleep(500);
      position = matchImg(0, "close.jpg", 0);
      // position = findImg("close.jpg");
    }

    // 再等等,怕他弹出直播界面
    sleep(2000);
    var position = matchImg(0, "close.jpg", 0);
    // var position = findImg("close.jpg");
    while(position) {
      click(position.x, position.y);
      sleep(500);
      position = matchImg(0, "close.jpg", 0);
      // position = findImg("close.jpg");
    }
    deBug("关闭完成");
}

function enterGame() {
    var targetPackage = "com.tencent.tmgp.sgame";
    deBug("启动 王者荣耀");
    app.launchPackage(targetPackage)   
    var position = matchImg(1, "startgame.jpg", 2000);
    deBug("启动成功");
    //while(!findImg("startgame.jpg")) {sleep(2000);}
    //var position = findImg("startgame.jpg");
    if(position) {
      deBug("点击 开始游戏");
      click(position.x, position.y);
      sleep(2000);
      matchImg(1, "startgame.jpg", 2000);
      //while(findImg("startgame.jpg")) {sleep(2000);}
      deBug("正在进入");
    }
}

// 点击开始闯关 -> 闯关完成
function startAction(circle) {
      // 闯关
      deBug("进入 闯关");
      var position = matchImg(0, "action.jpg", 0);
      // var position = findImg("action.jpg");
      click(position.x, position.y);
      sleep(500);

      while(1) {
            position = matchImg(0, "recovery.jpg", 0);
            if(position) {
                break;
            }

            // 有些场景一上来就是等待,且不会自动“跳过”
            position = matchImg(0, "skip.jpg", 0);
            if(position) {
                deBug("跳过");
                click(position.x, position.y);
                break;
            }
            sleep(1000);
      }

      // matchImg(1, "recovery.jpg", 2000);
      deBug("进入完成");

      position = matchImg(0, "autoenable.jpg", 0);
      if(position) {
            deBug("已经是 自动");
      }else{
            position = matchImg(0, "autodisable.jpg", 0);
            if(position) {
                deBug("点击 自动");
                click(position.x, position.y);
            }
      }

      while(1) {
            position = matchImg(0, "taptocontinue.jpg", 0);
            if(position) {
                break;
            }

            // 有些场景不会自动“跳过”
            position = matchImg(0, "skip.jpg", 0);
            if(position) {
                deBug("跳过");
                click(position.x, position.y);
            }

            position = matchImg(0, "recovery.jpg", 0);
            if(position) {
                deBug("加血");
                click(position.x, position.y);
            }

            sleep(1000);
      }
      // position = matchImg(1, "taptocontinue.jpg", 4000);
      deBug("闯关完成");
      click(position.x, position.y);
      sleep(500);

      if(circle == 1){
            position = matchImg(1, "reaction.jpg", 2000);
            deBug("再次挑战");
            click(position.x, position.y);
            sleep(500);
      }
}

// 进入万象天工 -> (闯关 -> 再次挑战)
function enterAdventure() {
    var position = matchImg(0, "wanxiang.jpg", 0);
    if(position) {
      deBug("进入 万象天工");
      click(position.x, position.y);
      // sleep(4000);
      position = matchImg(0, "adventure.jpg", 0);
      while(!position) {
            swipe(device.height/2, device.width/2, device.height/2-500, device.width/2, 500);
            sleep(500);
            position = matchImg(0, "adventure.jpg", 0);
      }
      deBug("进入 冒险模式");
      click(position.x, position.y);
      sleep(500);
      deBug("进入 挑战");
      click(device.height/2, device.width/2);
      sleep(500);

      // 下一步
      deBug("进入 下一步");
      position = matchImg(0, "nextstep.jpg", 0);
      click(position.x, position.y);
      sleep(500);

      while(1) {
            startAction(1);
            sleep(500);
      }
    }
}

function main() {
    // device.wakeUpIfNeeded();
    threads.start(function(){
      events.observeKey();
      events.on("key_up", function(keyCode, events){
            if(keyCode == keys.volume_up){ // 音量+键关闭脚本
                deBug("已停止运行");
                exit();
            }
      });
    });

    alert("用法:\n\
    第一次启动:\n\
      1. 先手动登录王者荣耀,进入“万象天工->冒险模式->挑战”,选一个关卡,选好上场英雄\n\
      2. 再关闭王者荣耀,运行脚本\n\
      3. 脚本会按照你选的英雄,重复刷你选的关卡\n\
      \n\
    非第一次启动:\n\
      直接运行脚本即可\n\
      \n\
    说明:\n\
      1. 截图权限一定要给\n\
      2. 要停止脚本,可按音量+键\n\
      3. 现在就按音量+键,也能停止运行");

    //请求截图
    if(!requestScreenCapture(true)){
      deBug("请求截图失败");
      exit();
    }

    enterGame();      // 进入游戏
    closeWidget();      // 关闭弹窗
    enterAdventure();   // 开始冒险模式
}

/*********************** 程序从这里开始 ***********************/
main();

青辞。 发表于 2020-10-17 20:08:43

啥也不说了,感谢楼主分享哇!
页: [1]
查看完整版本: Autojs王者荣耀冒险模式自动刷金币