吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 18368|回复: 245
收起左侧

[其他转载] [转载]某东某宝618的autojs代码!更新至-2022.06.15 (诈尸更新,最后一次)

    [复制链接]
xiaolmimzD 发表于 2022-5-23 10:51
本帖最后由 xiaolmimzD 于 2022-6-17 12:07 编辑

免责声明
本分享,只是分享代码,若原作者有联系方式等违背本版的问题,均与我无关!
原作者可能在代码中加入了自己的链接,请审慎鉴别原作者app,避免上当受骗

作者:
MonsterNone
链接:自己找


重要说明

请不要使用python等一切已做好exe的脚本做618活动。
AutoJS最多让你没有收益,你只要关闭AutoJS,还能继续活动,还能获得积分。
用脚本的话,大概率会提示“活动火爆”,直接导致你本次活动再也无法获得积分。
这也是我为何一直坚持(尽管Github有更方便好用的脚本)分享AutoJS的原因。

若提示一堆英文代码,请检查是否开启无障碍和悬浮球。
若在运行过程中发现bug,请等待更新。或想办法手动一部分任务继续。

→→→某宝似乎加强了检测,如果看到获得100金币、请关闭无障碍和AutoJS手动吧~
→→→避免违反版规,我注释掉了原作者的链接导致无法检测版本,应该不妨碍使用。吧?


更新

--------------
20220615-
京东:修复 紧急修复一个京东任务判断的问题
--------------
20220614-

京东:增加 自动完成首页浮层和组队任务,现在京东可以一次性做完所有非互动任务了、优化 可能出现的无法获取结束金币问题、优化 支持多轮抽奖
淘宝:修复 无法手动打开淘宝的问题
--------------20220605-之前一直忘记转发某东自动抽的代码,今天补上。不太好用~
京东:优化 特定类型的京东入会任务检测、新增 任务开始、结束时自动领取累积的金币
淘宝:优化 淘宝领取累计奖励
--------------
20220604-
淘宝:优化 直播任务完成标识的判断
京东:修复 识别不到抽奖次数的问题、修复 特殊情况下入会任务无法点击的问题
全局:优化 无障碍权限错误时的提示
--------------
20220531-
京东:修复 紧急修复V15部分机型无法打开任务列表的问题、优化 抽奖任务关闭弹窗、修复 京东可能出现的无法打开任务列表错误
淘宝:优化 淘宝浏览任务流程、优化 淘宝任务列表的判断
--------------
20220529-
京东:修复 品牌墙可能的出错、修复 加购任务检测加长时间、优化 京东抽奖任务中途错误不强制停止
淘宝:任务上线。目前是第一版还有些功能不完善,后续持续优化。
--------------
20220528-自动进行每日签到、增加 自动领取累计任务奖励、增加 计算任务获得的金币、优化 入会时自动移除遮挡(需要安卓7.0以上)、优化 打开任务列表的判定、修复 关闭签到弹窗的相关问题、优化 优化部分任务、提示细节、修复 品牌墙任务查找、优化 部分入会任务类型、优化 启动和结束时提示版本号、修复 关闭弹窗的错误、增加 热爱奇旅抽奖活动。
--------------
20220525-运行时关闭无障碍稳定模式;支持“解锁福利”入会任务;储存运行脚本时的选项;自动进行每日签到
--------------
20220524-修复模拟器和部分机型“无法找到任务列表控件”的问题、自动关闭店铺页的会员弹窗、试图修复“似乎未能打开任务列表”的问题。
--------------
20220523-更新一个先用着。
20220523-2-修复小米机型问题,但可能有了新的bug。
20220523-3-优化任务列表打开之后的判断,优化手动打开的逻辑,支持手动打开任务列表  【V2能用的可以不更新】

某东:
[Asm] 纯文本查看 复制代码
const VERSION = '2022618-21'

if (!auto.service) {
    toast('无障碍服务未启动!退出!')
    exit()
}

let showVersion = function () {
    console.log('当前版本:' + VERSION)
    console.log('ABC')
    toast('当前版本:' + VERSION)
}

console.show()
showVersion()

function getSetting() {
    let indices = []
    autoOpen && indices.push(0)
    autoMute && indices.push(1)
    autoJoin && indices.push(2)
    indices.push(3)

    let settings = dialogs.multiChoice('任务设置', ['自动打开京东进入活动。多开或任务列表无法自动打开时取消勾选', '自动调整媒体音量为0。以免直播任务发出声音,首次选择需要修改系统设置权限', '自动完成入会任务。京东将授权手机号给商家,日后可能会收到推广短信', '此选项用于保证选择的处理,勿动!'], indices)

    if (settings.length == 0) {
        toast('取消选择,任务停止')
        exit()
    }

    if (settings.indexOf(0) != -1) {
        storage.put('autoOpen', true)
        autoOpen = true
    } else {
        storage.put('autoOpen', false)
        autoOpen = false
    }
    if (settings.indexOf(1) != -1) {
        storage.put('autoMute', true)
        autoMute = true
    } else {
        storage.put('autoMute', false)
        autoMute = false
    }
    if (settings.indexOf(2) != -1) {
        storage.put('autoJoin', true)
        autoJoin = true
    } else {
        storage.put('autoJoin', false)
        autoJoin = false
    }
}

let storage = storages.create("jd_task");
let autoOpen = storage.get('autoOpen', true)
let autoMute = storage.get('autoMute', true)
let autoJoin = storage.get('autoJoin', true)
getSetting()

if (autoMute) {
    try {
        device.setMusicVolume(0)
        toast('成功设置媒体音量为0')
    } catch (err) {
        alert('首先需要开启权限,请开启后再次运行脚本')
        exit()
    }
}

console.log('开始完成京东任务...')
console.log('按音量下键停止')

device.keepScreenDim(30 * 60 * 1000) // 防止息屏30分钟

// 自定义取消亮屏的退出方法
function quit() {
    device.cancelKeepingAwake()
    exit()
}

// 监听音量下键
function registerKey() {
    try {
        events.observeKey()
    } catch (err) {
        console.log('监听音量键停止失败,应该是无障碍权限出错,请关闭软件后台任务重新运行。')
        console.log('如果还是不行可以重启手机尝试。')
        quit()
    }
    events.onKeyDown('volume_down', function (event) {
        console.log('京东任务脚本停止了')
        console.log('请手动切换回主页面')
        startCoin && console.log('本次任务开始时有' + startCoin + '金币')
        quit()
    })
}
threads.start(registerKey)

// 自定义一个findTextDescMatchesTimeout
function findTextDescMatchesTimeout(reg, timeout) {
    let c = 0
    while (c < timeout / 50) {
        let result = textMatches(reg).findOnce() || descMatches(reg).findOnce()
        if (result) return result
        sleep(50)
        c++
    }
    return null
}

// 打开京东进入活动
function openAndInto() {
    console.log('正在打开京东App...')
    if (!launch('com.jingdong.app.mall')) {
        console.log('可能未安装京东App')
    }

    sleep(2000)
    console.log('进入活动页面')

    app.startActivity({
        action: "VIEW",
        data: 'openApp.jdMobile://virtual?params={"category":"jump","action":"to","des":"m","sourceValue":"JSHOP_SOURCE_VALUE","sourceType":"JSHOP_SOURCE_TYPE","url":"https://u.jd.com/lCoOLUY","M_sourceFrom":"mxz","msf_type":"auto"}'
    })
}

// 获取金币数量
function getCoin() {
    let anchor = className('android.view.View').filter(function (w) {
        if ((w.desc() && w.desc().match(/分红:.*份/)) || (w.text() && w.text().match(/分红:.*份/))) {
            return true
        } else {
            return false
        }
    }).findOne(5000)
    if (!anchor) {
        console.log('找不到分红控件')
        return false
    }
    let coin = anchor.parent().child(2).text()
    if (coin) {
        return parseInt(coin)
    } else {
        coin = anchor.parent().child(3).text() // 有可能中间插了个控件
        if (coin) {
            return parseInt(coin)
        } else {
            return false
        }
    }
}

// 打开任务列表
function openTaskList() {
    console.log('打开任务列表')
    let taskListButtons = findTextDescMatchesTimeout(/分红\+卡牌/, 20000)
    if (!taskListButtons) {
        console.log('未能打开任务列表,请关闭京东重新运行!')
        quit()
    }
    if (taskListButtons.indexInParent() == 0) {
        taskListButtons = taskListButtons.parent().parent().children()
    } else {
        taskListButtons = taskListButtons.parent().children()
    }

    let taskListButton = null
    let flag = 0
    for (let i = 3; i < taskListButtons.length; i++) { // 从第4(4-1)个开始
        if (taskListButtons[i].clickable()) {
            if (flag) {
                taskListButton = taskListButtons[i]
                break
            } else {
                flag = 1
                continue
            }
        }
    }

    if (!taskListButton || !taskListButton.clickable()) {
        console.log('无法找到任务列表控件')
        quit()
    }
    taskListButton.click()
    console.log('等待任务列表')
    if (!findTextDescMatchesTimeout(/累计任务奖励/, 10000)) {
        console.log('似乎没能打开任务列表,退出!')
        console.log('如果已经打开而未检测到,请删除101版本及以上的webview或使用国内应用市场版京东尝试。')
        quit()
    }
}

// 关闭任务列表
function closeTaskList() {
    console.log('关闭任务列表')
    let jiangli = findTextDescMatchesTimeout(/累计任务奖励/, 5000)
    if (!jiangli) {
        console.log('无法找到任务奖励标识')
        return false
    }
    let closeBtn = jiangli.parent().child(1)
    return closeBtn.click()
}

// 重新打开任务列表
function reopenTaskList() {
    closeTaskList()
    sleep(3000)
    openTaskList()
    sleep(5000)
}

// 获取未完成任务,根据数字标识,返回任务按钮、任务介绍、任务数量(数组)
function getTaskByText() {
    let tButton = null,
        tText = null,
        tCount = 0,
        tTitle = null
    console.log('寻找未完成任务...')
    let taskButtons = textMatches(/.*浏览并关注.*|.*浏览.*s.*|.*累计浏览.*|.*浏览可得.*|.*逛晚会.*|.*品牌墙.*|.*打卡.*|.*点击首页.*|.*组队可得.*/).find()
    if (!taskButtons.empty()) { // 如果找不到任务,直接返回
        for (let i = 0; i < taskButtons.length; i++) {
            let item = taskButtons[i]
            tTitle = item.parent().child(1).text()
            let r = tTitle.match(/(\d*)\/(\d*)/)
            if (!r) continue

            tCount = (r[2] - r[1])

            console.log(tTitle, tCount)
            if (tCount) { // 如果数字相减不为0,证明没完成
                tText = item.text()
                if (!autoJoin && tText.match(/成功入会/)) continue
                if (tText.match(/下单/)) continue
                tButton = item.parent().child(3)
                break
            }
        }
    }
    return [tButton, tText, tCount, tTitle]
}

// 返回任务列表并检查是否成功,不成功重试一次,带有延时
function backToList() {
    sleep(500)
    back()
    for (let i = 0; i < 3; i++) { // 尝试返回3次
        if (!findTextDescMatchesTimeout(/累计任务奖励/, 5000)) {
            console.log('返回失败,重试返回')
            sleep(2000)
            back()
            continue
        } else {
            break
        }
    }
    sleep(3000)
}

// 浏览n秒的任务
function timeTask() {
    console.log('等待浏览任务完成...')
    let c = 0
    while (c < 40) { // 0.5 * 40 = 20 秒,防止死循环
        if ((textMatches(/获得.*?金币/).exists() || descMatches(/获得.*?金币/).exists())) // 等待已完成出现
            break
        if ((textMatches(/已浏览/).exists() || descMatches(/已浏览/).exists())) { // 失败
            console.log('上限,返回刷新任务列表')
            return false
        }

        // 弹窗处理
        let pop = text('升级开卡会员领好礼')
        if (pop.exists()) {
            pop.findOnce().parent().parent().child(2).click()
            console.log('关闭会员弹窗')
        }

        sleep(500)
        c++
    }
    if (c > 39) {
        console.log('未检测到任务完成标识。')
        return false
    }
    return true
}

// 入会任务
function joinTask() {
    let check = textMatches(/.*确认授权即同意.*|.*我的特权.*|.*立即开卡.*|.*解锁全部会员福利.*/).findOne(8000)
    if (!check) {
        console.log('无法找到入会按钮,判定为已经入会')
        return true
    } else if (check.text().match(/我的特权/)) {
        console.log('已经入会,返回')
        return true
    } else {
        sleep(2000)
        if (check.text().match(/.*立即开卡.*|.*解锁全部会员福利.*|授权解锁/)) {
            let btn = check.bounds()
            console.log('即将点击开卡/解锁福利,自动隐藏控制台')
            sleep(500)
            console.hide()
            sleep(500)
            click(btn.centerX(), btn.centerY())
            sleep(500)
            console.show()
            sleep(5000)
            check = textMatches(/.*确认授权即同意.*/).boundsInside(0, 0, device.width, device.height).findOne(8000)
        }

        if (!check) {
            console.log('无法找到入会按钮弹窗,加载失败')
            return false
        }

        // text("instruction_icon") 全局其实都只有一个, 保险起见, 使用两个parent来限定范围
        let checks = check.parent().parent().find(text("instruction_icon"));
        if (checks.size() > 0) {
            // 解决部分店铺(欧莱雅)开卡无法勾选 [确认授权] 的问题           
            check = checks.get(0);
        } else {
            if (check.indexInParent() == 6) {
                check = check.parent().child(5)
            } else if (check.text() == '确认授权即同意') {
                check = check.parent().child(0)
            } else {
                check = check.parent().parent().child(5)
            }
        }

        check = check.bounds()
        log("最终[确认授权]前面选项框坐标为:", check);
        let x = check.centerX()
        let y = check.centerY()

        console.log('检测是否有遮挡')
        let float = className('android.widget.ImageView')
            .filter(function (w) {
                let b = w.bounds()
                return b.left <= x && b.right >= x && b.top <= y && b.bottom >= y
            }).find()

        if (float.length > 1) {
            console.log('有浮窗遮挡,尝试移除')
            if (device.sdkInt >= 24) {
                gesture(1000, [x, y], [x, y + 300])
                console.log('已经进行移开操作,如果失败请反馈')
            } else {
                console.log('安卓版本低,无法自动移开浮窗,入会任务失败。至少需要安卓7.0。')
                return false
            }
        } else {
            console.log('未发现遮挡的浮窗,继续勾选')
        }

        console.log('即将勾选授权,自动隐藏控制台')
        sleep(500)
        console.hide()
        sleep(1000)
        click(x, y)
        sleep(500)
        console.show()

        console.log('准备点击入会按钮')
        let j = textMatches(/^确认授权(并加入店铺会员)*$/).findOne(5000)
        if (!j) {
            console.log('无法找到入会按钮,失败')
            return false
        }
        click(j.bounds().centerX(), j.bounds().centerY())
        sleep(1000)
        console.log('入会完成,返回')
        return true
    }
}

// 浏览商品和加购的任务,cart参数为是否加购的flag
function itemTask(cart) {
    console.log('等待进入商品列表...')
    if (!textContains('当前页').findOne(10000)) {
        console.log('未能进入商品列表。')
        return false
    }
    sleep(2000)
    let items = textContains('.jpg!q70').find()
    for (let i = 0; i < items.length; i++) {
        if (cart) {
            console.log('加购并浏览')
            let tmp = items[i].parent().parent()
            tmp.child(tmp.childCount() - 1).click()
        } else {
            console.log('浏览商品页')
            items[i].parent().parent().child(4).click()
        }
        sleep(5000)
        console.log('返回')
        back()
        sleep(5000)
        let r = textContains('.jpg!q70').findOnce()
        if (!r) {
            back()
            sleep(5000)
        }
        if (i >= 4 - 1) {
            break
        }
    }
    return true
}

// 逛店任务
function shopTask() {
    console.log('等待进入店铺列表...')
    let banner = textContains('喜欢').findOne(10000)
    if (!banner) {
        console.log('未能进入店铺列表。返回。')
        return false
    }
    let c = banner.text().match(/(\d)\/(\d*)/)
    if (!c) {
        c = 4 // 进行4次
    } else {
        c = c[2] - c[1]
    }
    sleep(2000)
    console.log('进行', c, '次')
    let like = textContains('喜欢').boundsInside(1, 0, device.width, device.height).findOnce()
    if (!like) {
        console.log('未能找到喜欢按钮。返回。')
        return false
    }
    let bound = [like.bounds().centerX(), like.bounds().centerY()]
    console.log('喜欢按钮位于', bound)
    for (let i = 0; i < c; i++) {
        click(bound[0], bound[1])
        console.log('浏览店铺页')
        sleep(8000)
        console.log('返回')
        back()
        sleep(5000)
        let r = textContains('喜欢').findOnce()
        if (!r) {
            back()
            sleep(5000)
        }
    }
    return true
}

// 参观任务
function viewTask() {
    console.log('进行参观任务')
    sleep(5000)
    console.log('参观任务直接返回')
    return true
}

// 品牌墙任务
function wallTask() {
    console.log('进行品牌墙任务')
    sleep(3000)
    for (let i of [2, 3, 4, 5, 6]) { // 选5个
        console.log('打开一个')
        textContains('!q70').boundsInside(0, 0, device.width, device.height).findOnce(i).click()
        sleep(5000)
        console.log('直接返回')
        back()
        let r = textContains('!q70').findOne(8000)
        if (!r) back()
        sleep(3000)
    }
    console.log('返回顶部')
    let root = textContains('到底了').findOnce().parent().parent()
    root.child(root.childCount() - 2).click()
    console.log('品牌墙完成后重新打开任务列表')
    sleep(3000)
    openTaskList()
    return true
}

// 单个任务的function,自动进入任务、自动返回任务列表,返回boolean
function doTask(tButton, tText, tTitle) {
    let clickFlag = tButton.click()
    let tFlag
    if (tText.match(/浏览并关注.*s|浏览.*s/)) {
        console.log('进行', tText)
        tFlag = timeTask()
    } else if (tText.match(/累计浏览/)) {
        console.log('进行累计浏览任务')
        if (tText.match(/加购/)) {
            tFlag = itemTask(true)
        } else {
            tFlag = itemTask(false)
        }
    } else if (tText.match(/入会/)) {
        console.log('进行入会任务')
        tFlag = joinTask()
    } else if (tText.match(/浏览可得|浏览并关注|晚会/)) {
        let tTitle = tButton.parent().child(1).text()
        if (tTitle.match(/种草城/)) {
            tFlag = shopTask()
        } else {
            tFlag = viewTask()
        }
    } else if (tText.match(/品牌墙/)) {
        tFlag = wallTask()
        return tFlag // 品牌墙无需backToList,提前返回
    } else if (tText.match(/打卡|首页/)) {
        tFlag = clickFlag // 打卡点击一次即可
        return tFlag
    } else if (tText.match(/组队/)) {
        console.log('等待组队任务')
        sleep(3000)
        if (findTextDescMatchesTimeout(/累计任务奖励/, 1000)) {
            console.log('当前仍在任务列表,说明已经完成任务且领取奖励,返回')
            return true
        } else {
            if (textContains('锦鲤').findOne(10000)) {
                console.log('进入到组队页面,返回')
                backToList()
                console.log('等待领取奖励')
                sleep(2000)
                tFlag = tButton.click()
                sleep(2000)
                return tFlag
            } else {
                console.log('未能进入组队')
                console.log('组队任务失败,避免卡死,退出')
                quit()
            }
        }
    } else {
        console.log('未知任务类型,默认为浏览任务', tText)
        tFlag = timeTask()
    }
    backToList()
    return tFlag
}

function signTask() {
    let anchor = className('android.view.View').filter(function (w) {
        return w.clickable() && (w.text() == '去使用奖励' || w.desc() == '去使用奖励')
    }).findOne(5000)

    if (!anchor) {
        console.log('未找到使用奖励按钮,签到失败')
        return false
    }

    let anchor_index = anchor.indexInParent()
    let sign = anchor.parent().child(anchor_index + 2) // 去使用的后两个
    sign.click()
    sleep(3000)

    sign = textMatches(/.*点我签到.*|.*明天再来.*/).findOne(5000)
    if (!sign) {
        console.log('未找到签到按钮')
        return false
    }

    if (sign.text().match(/明天再来/)) {
        console.log('已经签到')
    } else {
        click(sign.bounds().centerX(), sign.bounds().centerY())
        sleep(1000)
        console.log('签到完成')

        // let next = textContains('下一个红包').findOne(5000)
        // if (!next) {
        //     console.log('找不到下一个红包提示语,未能自动关闭弹窗')
        // } else {
        //     console.log('关闭签到弹窗')
        //     next.parent().child(0).click()
        //     sleep(1000)
        // }
    }

    // let title = text('每天签到领大额红包').findOne(5000)
    // if (!title) {
    //     console.log('未找到标题,未能自动关闭签到页。')
    //     return false
    // }
    // console.log('关闭签到页')
    // title.parent().child(0).click()
    // sleep(1000)

    console.log('检测是否有通知权限弹窗')
    if (textContains('通知权限').findOne(3000)) {
        console.log('出现弹窗,关闭')
        text('取消').click()
        sleep(1000)
        console.log('二次检测')
        if (textContains('通知权限').findOne(3000)) {
            console.log('出现弹窗,关闭')
            text('取消').click()
            sleep(1000)
            console.log('完成')
        } else {
            console.log('没有弹窗,继续。')
        }
    } else {
        console.log('没有弹窗,继续。')
    }

    return true
}

// 领取金币
function havestCoin() {
    console.log('准备领取自动积累的金币')
    let h = descMatches(/.*领取金币.*|.*后满.*/).findOne(5000)
    if (h) {
        h.click()
        console.log('领取成功')
    } else { console.log('未找到金币控件,领取失败') }
}

let startCoin = null // 音量键需要

// 全局try catch,应对无法显示报错
try {
    if (autoOpen) {
        openAndInto()
        console.log('等待活动页面加载')
        if (!findTextDescMatchesTimeout(/.*去使用奖励.*/, 8000)) {
            console.log('未能进入活动,请重新运行!')
            quit()
        }
        console.log('成功进入活动')
        sleep(2000)

        openTaskList();
    } else {
        alert('请关闭弹窗后立刻手动打开京东App进入活动页面,并打开任务列表', '限时30秒')
        console.log('请手动打开京东App进入活动页面,并打开任务列表')
        if (!findTextDescMatchesTimeout(/累计任务奖励/, 30000)) {
            console.log('未能进入活动,请重新运行!')
            quit()
        }
        console.log('成功进入活动')
    }

    sleep(5000)

    try {
        console.log('获取初始金币数量')
        startCoin = getCoin()
        console.log('当前共有' + startCoin + '金币')
    } catch (err) {
        console.log('获取金币失败,跳过', err)
    }

    sleep(1000)
    havestCoin()
    sleep(1000)

    // 完成所有任务的循环
    while (true) {
        let [taskButton, taskText, taskCount, taskTitle] = getTaskByText()

        if (!taskButton) {
            console.log('领取累计奖励')
            textContains('去领取').find().forEach(function (e, i) {
                console.log('领取第' + (i + 1) + '个累计奖励')
                e.click()
                sleep(2000)
            })

            sleep(1000)
            havestCoin()
            sleep(1000)

            console.log('最后进行签到任务')
            signTask()

            let endCoin = null
            try {
                console.log('获取结束金币数量')
                endCoin = getCoin()
                console.log('当前共有' + endCoin + '金币')
            } catch (err) {
                console.log('获取金币失败,跳过', err)
            }

            console.log('没有可自动完成的任务了,退出。')
            console.log('互动任务、下单任务需要手动完成。')
            if (startCoin && endCoin) {
                console.log('本次运行获得' + (endCoin - startCoin) + '金币')
            } else {
                console.log('本次运行获得金币无法计算,具体原因请翻阅日志。')
            }

            // alert('任务已完成', '别忘了在脚本主页领取年货节红包!')
            alert('任务已完成', '互动任务手动完成之后还会有新任务,建议做完互动二次运行脚本')
            quit()
        }

        if (taskText.match(/品牌墙/)) { // 品牌墙0/3只需要一次完成
            taskCount = 1
        }

        // 根据taskCount进行任务,一类任务一起完成,完成后刷新任务列表
        console.log('进行' + taskCount + '次“' + taskText + '”类任务')
        for (let i = 0; i < taskCount; i++) {
            console.log('第' + (i + 1) + '次')
            let taskFlag = doTask(taskButton, taskText, taskTitle)
            if (taskFlag) {
                console.log('完成,进行下一个任务')
            } else {
                console.log('任务失败,尝试重新打开任务列表获取任务')
                break // 直接退出,无需在此调用reopen
            }
        }
        console.log('重新打开任务列表获取任务')
        reopenTaskList()
    }
} catch (err) {
    device.cancelKeepingAwake()
    if (err.toString() != 'JavaException: com.stardust.autojs.runtime.exception.ScriptInterruptedException: null') {
        console.error(err)
        startCoin && console.log('本次任务开始时有' + startCoin + '金币')
    }
    showVersion()
}

某东的自动抽:
[Asm] 纯文本查看 复制代码
const VERSION = '2022618-21'

if (!auto.service) {
    toast('无障碍服务未启动!退出!')
    exit()
}

let showVersion = function () {
    console.log('当前版本:' + VERSION)
    console.log('ABC')
    toast('当前版本:' + VERSION)
}

console.show()
showVersion()

function getSetting() {
    let indices = []
    autoOpen && indices.push(0)
    autoMute && indices.push(1)
    autoJoin && indices.push(2)
    indices.push(3)

    let settings = dialogs.multiChoice('任务设置', ['自动打开京东进入活动。多开或任务列表无法自动打开时取消勾选', '自动调整媒体音量为0。以免直播任务发出声音,首次选择需要修改系统设置权限', '自动完成入会任务。京东将授权手机号给商家,日后可能会收到推广短信', '此选项用于保证选择的处理,勿动!'], indices)

    if (settings.length == 0) {
        toast('取消选择,任务停止')
        exit()
    }

    if (settings.indexOf(0) != -1) {
        storage.put('autoOpen', true)
        autoOpen = true
    } else {
        storage.put('autoOpen', false)
        autoOpen = false
    }
    if (settings.indexOf(1) != -1) {
        storage.put('autoMute', true)
        autoMute = true
    } else {
        storage.put('autoMute', false)
        autoMute = false
    }
    if (settings.indexOf(2) != -1) {
        storage.put('autoJoin', true)
        autoJoin = true
    } else {
        storage.put('autoJoin', false)
        autoJoin = false
    }
}

let storage = storages.create("jd_task");
let autoOpen = storage.get('autoOpen', true)
let autoMute = storage.get('autoMute', true)
let autoJoin = storage.get('autoJoin', true)
getSetting()

// 自定义取消亮屏的退出方法
function quit() {
    device.cancelKeepingAwake()
    exit()
}

// 监听音量下键
function registerKey() {
    try {
        events.observeKey()
    } catch (err) {
        console.log('监听音量键(用于停止脚本)失败,应该是无障碍权限出错,请关闭软件后台任务重新运行。')
        console.log('如果还是不行可以重启手机尝试。')
        quit()
    }
    events.onKeyDown('volume_down', function (event) {
        console.log('京东任务脚本停止了')
        console.log('请手动切换回主页面')
        quit()
    })
}
threads.start(registerKey)

// 自定义一个findTextDescMatchesTimeout
function findTextDescMatchesTimeout(reg, timeout) {
    let c = 0
    while (c < timeout / 50) {
        let result = textMatches(reg).findOnce() || descMatches(reg).findOnce()
        if (result) return result
        sleep(50)
        c++
    }
    return null
}

// 打开京东进入活动
function openAndInto() {
    console.log('正在打开京东App...')
    if (!launch('com.jingdong.app.mall')) {
        console.log('可能未安装京东App')
    }

    sleep(2000)
    console.log('进入活动页面')

    app.startActivity({
        action: "VIEW",
        data: 'openApp.jdMobile://virtual?params={"category":"jump","action":"to","des":"m","sourceValue":"JSHOP_SOURCE_VALUE","sourceType":"JSHOP_SOURCE_TYPE","url":"https://u.jd.com/JCTuenU","M_sourceFrom":"mxz","msf_type":"auto"}'
    })
}

// 获取金币数量
function getCoin() {
    let anchor = className('android.view.View').filter(function (w) {
        if ((w.desc() && w.desc().match(/分红:.*份/)) || (w.text() && w.text().match(/分红:.*份/))) {
            return true
        } else {
            return false
        }
    }).findOne(5000)
    if (!anchor) {
        console.log('找不到分红控件')
        return false
    }
    let coin = anchor.parent().child(2).text()
    if (coin) {
        return parseInt(coin)
    } else {
        coin = anchor.parent().child(3).text() // 有可能中间插了个控件
        if (coin) {
            return parseInt(coin)
        } else {
            // TODO
            let coins = anchor.parent().find(textMatches(/\d{3,}/).indexInParent(1)); // Android 8 适配
            if (coins.size() > 0) {
                coin = coins.get(0).text()
                if (coin) {
                    return parseInt(coin)
                } else {
                    return false
                }
            } else {
                return false
            }
        }
    }
}

// 打开抽奖页
function openPage() {
    let anchor = className('android.view.View').filter(function (w) {
        if (w.clickable() && ((w.text() && w.text().match(/去使用奖励/)) || (w.desc() && w.desc().match(/去使用奖励/)))) {
            return true
        } else {
            return false
        }
    }).findOne(5000)

    if (!anchor) {
        console.log('未找到使用奖励按钮,打开抽奖页失败')
        return false
    }

    let anchor_index = anchor.indexInParent()
    let sign = anchor.parent().child(anchor_index + 1) // 去使用的后1个, 定位[免费抽奖]    

    if (!sign.child(0).child(0).click()) {
        console.log('使用备用方式点击')
        console.log('首先检测弹窗')
        let btn = textMatches(/.*继续环游.*|.*立即抽奖.*/).findOne(2000)
        if (btn) {
            console.log('关闭弹窗')
            btn.parent().parent().parent().child(0).child(0).click()
        } else {
            console.log('无需关闭弹窗')
        }
        sleep(1000)
        click(sign.bounds().centerX(), sign.bounds().centerY());
    }

    return text('剩余抽奖次数').findOne(8000)
}

// 查找任务,返回所有任务
function findTasks() {
    let anchor = text('剩余抽奖次数').findOnce()
    if (!anchor) {
        console.log('无法找到抽奖次数控件')
        return false
    }
    console.log('打开任务列表')
    anchor = anchor.parent().parent().parent().parent()

    if (anchor.childCount() == 8) { // 关闭弹窗
        if (anchor.child(7).childCount() > 0) {
            console.log('关闭弹窗')
            anchor.child(7).child(0).child(0).child(0).child(3).click()
            sleep(1000)
        }
    } else {
        console.log('无需关闭弹窗')
    }

    // 点击 [做任务 得抽奖机会]
    if (anchor.child(1).clickable()) {
        anchor.child(1).click()
    } else {
        anchor.child(2).click() // 京东11.0.4 Android 8 适配
    }
    sleep(5000)
    let go = text('去完成').findOnce()
    if (!go) {
        console.log('似乎未能打开任务列表')
        return false
    }
    console.log('任务列表已打开')
    let tasks = []
    let taskList = go.parent().children()
    let task = []
    for (let i = 0; i < taskList.length; i++) {
        let e = taskList[i]
        if (e.text()) {
            task.push(e.text())
            if (e.text() == '去完成') {
                if (!task[0].match(/邀/)) { // 如果有邀请好友就不完成
                    tasks.push([task[0], e])
                }
                task = []
            } else if (e.text() == '已完成') {
                task = []
            }
        }
    }
    console.log('任务寻找结束')
    return tasks
}

function backToPage() {
    back()
    if (!text('剩余抽奖次数').findOne(8000)) {
        console.log('返回失败,重试')
        back()
        if (!text('剩余抽奖次数').findOne(8000)) {
            console.log('似乎未能返回')
            return false
        }
    }
    return true
}

// 入会任务
function joinTask() {
    let check = textMatches(/.*确认授权即同意.*|.*我的特权.*|.*立即开卡.*|.*解锁全部会员福利.*/).findOne(8000)
    if (!check) {
        console.log('无法找到入会按钮,判定为已经入会')
        return true
    } else if (check.text().match(/我的特权/)) {
        console.log('已经入会,返回')
        return true
    } else {
        sleep(2000)
        if (check.text().match(/.*立即开卡.*|.*解锁全部会员福利.*|授权解锁/)) {
            let btn = check.bounds()
            console.log('即将点击开卡/解锁福利,自动隐藏控制台')
            sleep(500)
            console.hide()
            sleep(500)
            click(btn.centerX(), btn.centerY())
            sleep(500)
            console.show()
            sleep(5000)
            check = textMatches(/.*确认授权即同意.*/).boundsInside(0, 0, device.width, device.height).findOne(8000)
        }

        if (!check) {
            console.log('无法找到入会按钮弹窗,加载失败')
            return false
        }

        // text("instruction_icon") 全局其实都只有一个, 保险起见, 使用两个parent来限定范围
        let checks = check.parent().parent().find(text("instruction_icon"));
        if (checks.size() > 0) {
            // 解决部分店铺(欧莱雅)开卡无法勾选 [确认授权] 的问题           
            check = checks.get(0);
        } else {
            if (check.indexInParent() == 6) {
                check = check.parent().child(5)
            } else if (check.text() == '确认授权即同意') {
                check = check.parent().child(0)
            } else {
                check = check.parent().parent().child(5)
            }
        }

        check = check.bounds()
        log("最终[确认授权]前面选项框坐标为:", check);
        let x = check.centerX()
        let y = check.centerY()

        console.log('检测是否有遮挡')
        let float = className('android.widget.ImageView')
            .filter(function (w) {
                let b = w.bounds()
                return b.left <= x && b.right >= x && b.top <= y && b.bottom >= y
            }).find()

        if (float.length > 1) {
            console.log('有浮窗遮挡,尝试移除')
            if (device.sdkInt >= 24) {
                gesture(1000, [x, y], [x, y + 300])
                console.log('已经进行移开操作,如果失败请反馈')
            } else {
                console.log('安卓版本低,无法自动移开浮窗,入会任务失败。至少需要安卓7.0。')
                return false
            }
        } else {
            console.log('未发现遮挡的浮窗,继续勾选')
        }

        console.log('即将勾选授权,自动隐藏控制台')
        sleep(500)
        console.hide()
        sleep(1000)
        click(x, y)
        sleep(500)
        console.show()

        console.log('准备点击入会按钮')
        let j = textMatches(/^确认授权(并加入店铺会员)*$/).findOne(5000)
        if (!j) {
            console.log('无法找到入会按钮,失败')
            return false
        }
        click(j.bounds().centerX(), j.bounds().centerY())
        sleep(1000)
        console.log('入会完成,返回')
        return true
    }
}

// 加购任务
function cartTask() {
    console.log('查找商品')
    let anchor = textMatches(/\(\d\/2\)/).findOne(10000)
    if (!anchor) {
        console.log('未能找到加购提示')
        return false
    }

    let items = anchor.parent().parent().children().find(textContains('q70'))
    if (items.empty() || items.length < 2) {
        console.log('查找商品失败')
        return false
    }
    for (let i = 0; i < 2; i++) {
        console.log('加购第' + (i + 1) + '个商品')
        try {
            items[i].parent().parent().parent().child(1).child(2).click()
        } catch (e) {
            console.error(e);
            console.log('加购失败')
            return false
        }
        sleep(2000)
    }
    console.log('加购完成')
    let t = items[0].parent().parent().parent().parent().parent()
    t.child(t.childCount() - 2).click() // 关闭
    return true
}

// 进行抽奖活动
function doTask(task) {
    let tTitle = task[0]
    let tButton = task[1]
    console.log('进行', tTitle)
    tButton.click()
    if (tTitle.match(/签到/)) {
        console.log('签到完成')
        return true
    } else if (tTitle.match(/加购/)) {
        return cartTask()
    } else if (tTitle.match(/会员|品牌页/)) {
        console.log('进行入会任务')
        return joinTask() && backToPage()
    } else {
        console.log('浏览任务,稍后返回')
        sleep(3000)
        return true && backToPage()
    }
}

// 抽奖
function openBox() {
    console.log('关闭任务列表')
    textContains('签到').findOne(5000).parent().parent().child(1).click()
    let anchor = text('剩余抽奖次数').findOne(8000)
    if (!anchor) {
        console.log('未能找到抽奖提示')
        return false
    }
    let count = parseInt(anchor.parent().child(1).text())
    if (!count) {
        console.log('没有抽奖次数,返回')
        return true
    }
    console.log('进行抽奖,由于无法判断是否已经开盒,所以每个盒子都点一遍')
    let box = anchor.parent().parent().children()
    for (let loop = 0; loop < Math.ceil(count / 6); loop++) {
        console.log('进行第' + (loop + 1) + '轮抽奖')
        for (let i = 0; i < 6; i++) {
            console.log('打开第' + (i + 1) + '个盒子')
            box[i].click()
            sleep(3000)
            console.log('检测弹窗')
            let title = textContains('恭喜').findOne(5000)
            if (title) {
                console.log('关闭弹窗')
                title = title.parent()
                title.child(title.childCount() - 2).click()
                sleep(3000)
            } else {
                console.log('没有弹窗')
            }
        }
    }
    return true
}

// 领取金币
function havestCoin() {
    console.log('准备领取自动积累的金币')
    let h = descMatches(/.*领取金币.*|.*后满.*/).findOne(5000)
    if (h) {
        h.click()
        console.log('领取成功')
    } else { console.log('未找到金币控件,领取失败') }
}


let startCoin = null
let endCoin = null

// 全局try catch,应对无法显示报错
try {
    if (autoOpen) {
        openAndInto()
        console.log('等待活动页面加载')
        if (!findTextDescMatchesTimeout(/.*去使用奖励.*/, 8000)) {
            console.log('未能进入活动,请重新运行!')
            quit()
        }
    } else {
        alert('请关闭弹窗后立刻手动打开京东App进入活动页面', '限时30秒')
        console.log('请手动打开京东App进入活动')
        if (!findTextDescMatchesTimeout(/.*去使用奖励.*/, 30000)) {
            console.log('未能进入活动,请重新运行!')
            quit()
        }
    }

    console.log('成功进入活动,准备进行任务')
    sleep(5000)

    try {
        console.log('获取初始金币数量')
        startCoin = getCoin()
        console.log('当前共有' + startCoin + '金币')
    } catch (err) {
        console.log('获取金币失败,跳过', err)
    }

    sleep(1000)
    havestCoin()
    sleep(1000)

    // 完成所有任务的循环
    while (true) {
        try {
            console.log('获取当前金币数量')
            endCoin = getCoin()
            console.log('当前共有' + endCoin + '金币')
        } catch (err) {
            console.log('获取金币失败,跳过', err)
        }

        console.log('打开抽奖页面')
        if (openPage()) {
            let tasks = findTasks()
            if (!tasks) {
                console.log('无法找到任务,可能是已经完成。退出。')
                console.log('有时候可能抽奖失败,自己点进抽奖页再看一看。')
                startCoin && endCoin && console.log('本次任务共获得' + (endCoin - startCoin) + '金币')
                quit()
            }
            for (let i = 0; i < tasks.length; i++) {
                if (!autoJoin && tasks[i][0].match(/会员|品牌页/)) {
                    continue
                }
                if (!doTask(tasks[i])) {
                    // console.log('任务失败,退出')
                    // quit()
                    console.log('任务出现失败,换一个抽奖进行')
                    break
                }
                sleep(5000)
            }
        } else {
            console.log('打开抽奖页失败,退出')
            quit()
        }
        console.log('准备抽奖')
        if (!openBox()) {
            console.log('抽奖失败,退出')
            quit()
        }
        console.log('准备重新打开获取任务')
        sleep(2000)
        back()
        console.log('返回上一级')
        if (!findTextDescMatchesTimeout(/.*去使用奖励.*/, 8000)) {
            console.log('未能返回到活动主页,重试')
            back()
            if (!findTextDescMatchesTimeout(/.*去使用奖励.*/, 8000)) {
                console.log('未能返回到活动主页,退出')
                quit()
            }
        }
        console.log('任务完成,准备抽奖')
        console.log('准备进行下一次任务')
        sleep(2000)
    }
} catch (err) {
    device.cancelKeepingAwake()
    if (err.toString() != 'JavaException: com.stardust.autojs.runtime.exception.ScriptInterruptedException: null') {
        console.error(new Error().stack, err)
        startCoin && console.log('本次任务开始时有' + startCoin + '金币')
    }
    showVersion()
}

某宝:
[Asm] 纯文本查看 复制代码
const VERSION = '2022618-21'

if (!auto.service) {
    toast('无障碍服务未启动!退出!')
    exit()
}

let showVersion = function () {
    console.log('当前版本:' + VERSION)
    console.log('abx')
    toast('当前版本:' + VERSION)
}

// alert('请把手机放稳,不要摇晃!', '不然有时候会跳出合伙赢喵币,导致任务阻塞')

function getSetting() {
    let indices = []
    autoOpen && indices.push(0)
    autoMute && indices.push(1)
    indices.push(2)

    let settings = dialogs.multiChoice('任务设置', ['自动打开淘宝进入活动。多开或任务列表无法自动打开时取消勾选(注意,分身运行淘宝大概率导致任务收益变为100)', '自动调整媒体音量为0。以免直播任务发出声音,首次选择需要修改系统设置权限', '此选项用于保证选择的处理,勿动!'], indices)

    if (settings.length == 0) {
        toast('取消选择,任务停止')
        exit()
    }

    if (settings.indexOf(0) != -1) {
        storage.put('autoOpen', true)
        autoOpen = true
    } else {
        storage.put('autoOpen', false)
        autoOpen = false
    }
    if (settings.indexOf(1) != -1) {
        storage.put('autoMute', true)
        autoMute = true
    } else {
        storage.put('autoMute', false)
        autoMute = false
    }
}

let storage = storages.create("tb_task");
let autoOpen = storage.get('autoOpen', true)
let autoMute = storage.get('autoMute', true)
getSetting()

if (autoMute) {
    try {
        device.setMusicVolume(0)
        toast('成功设置媒体音量为0')
    } catch (err) {
        alert('首先需要开启权限,请开启后再次运行脚本')
        exit()
    }
}

console.show()
showVersion()
console.log('开始完成喵糖任务...')
console.log('按音量下键停止')

device.keepScreenDim(60 * 60 * 1000)

function registerKey() {
    try {
        events.observeKey()
    } catch (err) {
        console.log('监听音量键停止失败,应该是无障碍权限出错,请关闭软件后台任务重新运行。')
        console.log('如果还是不行可以重启手机尝试。')
        quit()
    }
    events.onKeyDown('volume_down', function (event) {
        console.log('喵币任务脚本停止了')
        console.log('请手动切换回主页面')
        device.cancelKeepingAwake()
        exit()
    })
}
threads.start(registerKey)

// 全局try catch,应对无法显示报错
try {

    // 自定义去取消亮屏的退出方法
    function quit() {
        device.cancelKeepingAwake()
        exit()
    }

    // 自定义一个findTimeout,find_f是原本的查询器 text('sss').find()
    function findTimeout(findF, timeout) {
        let c = 0
        while (c < timeout / 50) {
            let result = findF.find()
            if (result.nonEmpty()) return result
            sleep(50)
            c++
        }
        return null
    }

    // 自定义一个findTextDescMatchesTimeout
    function findTextDescMatchesTimeout(reg, timeout) {
        let c = 0
        while (c < timeout / 50) {
            let result = textMatches(reg).findOnce() || descMatches(reg).findOnce()
            if (result) return result
            sleep(50)
            c++
        }
        return null
    }

    // 查找任务按钮
    function findTask() {
        var jumpButtonFind = textMatches(/去浏览|去搜索|去完成|去签到|逛一逛|去逛逛|去观看|去参赛/) // 找进入任务的按钮,10秒
        var jumpButtons = findTimeout(jumpButtonFind, 10000)

        if (!jumpButtons) {
            return null
        }

        for (var i = 0; i < jumpButtons.length; i++) {
            var taskName, content
            try {
                taskName = jumpButtons[i].parent().child(0).child(0).text()
                content = jumpButtons[i].parent().child(0).child(1).child(0).text()
            } catch (err) {
                console.log(err)
                continue
            }
            if (taskName) {
                if (taskName.match(/签到领/)) {
                    console.log('进行签到任务')
                    sleep(1000)
                    jumpButtons[i].click()
                    sleep(8000)
                    return findTask()
                }
                if (!(taskName.match(/淘金币|提醒|话费|斗地主|消消乐|流浪猫|开88|扔喵糖|占领|邀请|登录|组队|参与|施肥|浇水|特价版|小鸡|消除|穿搭|森林|点淘|人生|我的淘宝|庄园/) || content.match(/小互动/))) {
                    return [taskName, jumpButtons[i]]
                }
            }
        }
        return null
    }

    function liulan() {
        // if (textMatches(/.*浏览.*/).findOne(10000)) { // 等待浏览出现
        //     let v = className('android.support.v7.widget.RecyclerView').findOnce() // 滑动
        //     if (v) {
        //         sleep(1000)
        //         v.scrollForward()
        //     }
        // }

        // textMatches(/.*浏览得奖励.*/).findOne(15000) // 等待开始
        sleep(5000)
        let finish_c = 0
        while (finish_c < 50) { // 0.5 * 50 = 25 秒,防止死循环
            let finish_reg = /.*任务已完成[\s\S]*|.*失败.*|.*上限.*|.*开小差.*|.*喵币已发放[\s\S]*/
            if (textMatches(finish_reg).exists() || descMatches(finish_reg).exists()) { // 等待已完成出现,有可能失败
                break
            }
            if (textMatches(/.*休息会呗.*/).exists()) {
                alert('触发淘宝验证', '请手动验证后返回淘宝首页,重新执行任务')
                console.log('异常退出。')
                quit()
            }
            if (textContains('互动奖励').exists() ||
                descContains('互动奖励').exists()) {
                console.log('跳过互动任务')
                break
            }
            sleep(500)
            finish_c++
        }

        if (finish_c > 49) {
            console.log('未检测到任务完成标识。返回。')
            // console.log('如果你认为这是一个bug请截图反馈。')
            // console.log('一般情况下,二次运行脚本即可。')
            // console.log('请手动切换回主页面')
            // device.cancelKeepingAwake()
            // quit()
            back()
            sleep(1000)
            // TODO: 返回检测
            if (!textContains('当前进度').findOne(5000)) {
                console.log('似乎没有返回,二次尝试')
                back()
            }
            return
        }

        console.log('任务完成,返回')

        back()
        sleep(1000)
        if (!textContains('当前进度').findOne(5000)) {
            if (currentActivity() == 'com.taobao.tao.TBMainActivity') {
                console.log('返回到了主页,尝试重新进入任务')
                id('com.taobao.taobao:id/rv_main_container').findOnce().child(3).child(0).click()
            } else {
                console.log('似乎没有返回,二次尝试')
                back()
            }
        }
    }

    try {
        if (autoOpen) {
            // 打开淘宝活动页面
            console.log('正在打开淘宝...')
            var url = 'pages.tmall.com/wow/z/hdwk/20220618/gamehome?disableNav=YES'

            app.startActivity({
                action: "VIEW",
                data: "taobao://" + url
            })
            sleep(2000)

            console.log('等待页面加载...')
            textMatches(/领喵币/).findOne(20000)
            console.log('准备打开任务列表')
            sleep(2000)

            let c = findTextDescMatchesTimeout(/领喵币/, 1000)
            if (c) {
                console.log('使用默认方法尝试打开任务列表')
                c.click()
            } else {
                throw '无法找到任务列表入口'
            }
            if (!textContains('当前进度').findOne(8000)) {
                console.log('默认方式打开失败,二次尝试')
                console.log('首先检测弹窗')
                for (let i = 0; i < 2 && text('关闭').findOne(2000); i++) { // 关闭弹窗
                    console.log('检测到弹窗,关闭')
                    click('关闭')
                    sleep(2000)
                }
                console.log('出现未能自动关闭的弹窗请手动关闭')
                sleep(2000)
                // let right = c.bounds().right
                // let left = c.bounds().left
                // let top = c.bounds().top
                // let bottom = c.bounds().bottom
                // click(random(right,left), random(top, bottom))
                click(c.bounds().centerX(), c.bounds().centerY())
                console.log('已点击,等待任务列表出现')
                if (!textContains('当前进度').findOne(8000)) {
                    throw '无法打开任务列表'
                }
            }
        } else {
            console.log('请在30秒内打开淘宝活动页,并打开任务列表')
            if (textContains('当前进度').findOne(30000)) {
                console.log('已打开,继续任务')
            } else {
                console.log('未能检测到任务列表,退出')
                quit()
            }
        }
        console.log('准备搜索任务')
        sleep(2000)
    } catch (err) {
        console.log(err)
        console.log('无法进入任务列表,如果你认为这是bug,请截图反馈')
        quit()
    }

    while (true) {
        console.log('寻找任务入口...')
        var jumpButton = findTask()

        if (jumpButton == null) {
            // 没有任务之后领取奖励
            var awardButtonFind = textMatches(/立即领取|领取奖励/)
            var awardButtons = findTimeout(awardButtonFind, 10000)

            if (awardButtons) {
                for (var i = 0; i < awardButtons.length; i++) {
                    console.log('领取累计任务奖励')
                    awardButtons[i].click()
                    console.log('等待5秒再次领取...')
                    sleep(5000)
                }
            }

            console.log('没找到合适的任务。也许任务已经全部做完了。退出。互动任务不会自动完成。')
            console.log('请手动切换回主页面')
            alert('任务已完成', '别忘了在脚本主页领取618红包!互动任务需要手动完成。')
            quit()
        }

        if (jumpButton[0].match('去浏览店铺领能量')) {
            console.log('进行浏览店铺任务')
            jumpButton[1].click()
            while (!textContains('任务完成').exists()) {
                console.log('进入店铺浏览')
                text('逛店最多').findOne(15000).parent().click()
                liulan()
                sleep(2000)
            }
            back()
        } else if (jumpButton[0].match(/.*玩游戏.*|.*浏览餐饮卡券.*|.*加油赛.*|.*赚星星.*/)) {
            console.log('进行' + jumpButton[0] + '任务,10秒后返回')
            jumpButton[1].click()
            sleep(10000)
            back()
        } else if (jumpButton[0].match(/领现金/)) {
            console.log('进行' + jumpButton[0] + '任务')
            jumpButton[1].click()
            let into = text('打开链接').findOne(10000)
            if (!into) {
                console.log('无法找到进入领现金的按钮!')
                quit()
            }
            into.click()
            liulan()
        } else {
            console.log('进行' + jumpButton[0] + '任务')
            jumpButton[1].click()
            liulan()
        }

        console.log('等待页面刷新...')
        sleep(2000)
    }
} catch (err) {
    device.cancelKeepingAwake()
    if (err.toString() != 'JavaException: com.stardust.autojs.runtime.exception.ScriptInterruptedException: null') {
        console.error(err)
    }
    showVersion()
}

免费评分

参与人数 71吾爱币 +66 热心值 +67 收起 理由
cc990219146 + 1 + 1 热心回复!
scswzb + 1 + 1 谢谢@Thanks!
ZhaoXS666 + 2 + 1 热心回复!
yh13100157396 + 1 + 1 我很赞同!
jeef3287958 + 1 + 1 谢谢@Thanks!
流浪星空 + 1 + 1 感谢分享!
SD2F115ASFLI1 + 1 + 1 谢谢@Thanks!
Donder + 1 + 1 谢谢@Thanks!
事与愿违灬 + 1 + 1 热心回复!
Weson + 1 + 1 谢谢@Thanks!
seeyoubug + 1 + 1 热心回复!
fkueyakgym + 1 + 1 我很赞同!
chinguy + 1 + 1 用心讨论,共获提升!
momo_good + 1 + 1 谢谢@Thanks!
liaoliutao + 1 + 1 热心回复!
东风快递l + 1 + 1 谢谢 用上了
一枚宝藏壳儿 + 1 + 1 热心回复!
貂蝉爱黑客 + 1 + 1 楼楼,淘宝用了代码后,只给100金币。。
bigawe3 + 1 + 1 太棒了,好用,大赞
pingkong + 1 + 1 谢谢@Thanks!
james8 + 1 + 1 用心讨论,共获提升!
bbnpt1 + 1 鼓励转贴优秀软件安全工具和文档!
dylcyxy + 1 + 1 一直提示版本更新失败,不过还是可以用,感谢哈!
上进才是好船长 + 1 谢谢@Thanks!
sunshine丶 + 1 谢谢@Thanks!
停止tt + 1 + 1 我很赞同!
ni213255 + 1 + 1 我很赞同!
zhu0574 + 1 + 1 谢谢@Thanks!
ZZ3001 + 1 + 1 谢谢@Thanks!
bushimingzi + 1 我很赞同!
eCAN + 1 + 1 热心回复!
古桥月下 + 1 + 1 谢谢@Thanks!
makent + 1 谢谢@Thanks!
东门拉风 + 1 + 1 谢谢@Thanks!
ouerheixiu + 1 + 1 我很赞同!
奥斯特 + 1 + 1 谢谢@Thanks!
llomin + 1 + 1 谢谢@Thanks!
ac8010 + 1 + 1 我很赞同!
时光/荏苒 + 1 + 1 谢谢@Thanks!
Ricard路先生 + 1 + 1 谢谢@Thanks!
HARRY24 + 1 + 1 我很赞同!
我不该爱你的 + 1 + 1 谢谢@Thanks!
小不点的小脚丫 + 1 这个脚本我是从一天发就开始用,我一直没有问题
少一点的兔子 + 1 + 1 谢谢@Thanks!
rejoice_wcx + 1 + 1 谢谢@Thanks!
YoungCui + 1 + 1 我很赞同!
yjdh3344 + 1 用心讨论,共获提升!
taozhenlin + 1 + 1 用心讨论,共获提升!
wnec0669 + 1 + 1 谢谢@Thanks!
yangwujx + 1 + 1 谢谢@Thanks!
瞌瞌睡 + 1 + 1 谢谢@Thanks!
TeslaLee + 1 谢谢@Thanks!
zxyfy + 1 谢谢@Thanks!
长得帅活得久 + 1 + 1 谢谢@Thanks!
bbszhu + 1 + 1 谢谢@Thanks!
huoqilinxx + 1 + 1 鼓励转贴优秀软件安全工具和文档!
coke2016 + 1 + 1 我很赞同!
diaoa1900 + 1 + 1 谢谢@Thanks!
feitop + 1 + 1 谢谢@Thanks!
GOAIL + 1 + 1 谢谢@Thanks!
bing98 + 1 + 1 谢谢@Thanks!
dyt0801 + 1 + 1 感谢分享!那个说每次1.8的,你参加了几天分1.8?
musou_liky + 1 谢谢@Thanks!
Zombies + 1 + 1 谢谢@Thanks!
xie792 + 1 + 1 谢谢@Thanks!
q9339 + 1 + 1 每次玩这个,最后才1.8元。 有意思么 ???
yky3533 + 1 + 1 谢谢@Thanks!
boryou + 1 + 1 谢谢@Thanks!
713578790 + 1 + 1 已经使用了 没有问题
小天使xx + 1 + 1 我很赞同!
winfigh + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

zmwln 发表于 2022-5-24 01:02
奇怪,明明“无障碍”启动了,一开始还是提示未启动,无法运行
详情听说 发表于 2022-5-23 12:01
https://github.com/MonsterNone/tmall-miao/releases/tag/2022618-2

免费评分

参与人数 2热心值 +2 收起 理由
极地企鹅 + 1 热心回复!
xyztwwoo + 1 鼓励转贴优秀软件安全工具和文档!

查看全部评分

头像被屏蔽
samg9500 发表于 2022-5-24 23:30
ainkate 发表于 2022-5-31 16:00
无法加载version.js,获取版本失败
优安晓雷 发表于 2022-5-30 07:36
本帖最后由 优安晓雷 于 2022-5-30 07:38 编辑
jz283409119 发表于 2022-5-30 05:37
请问老哥怎么注释啊



//if (!auto.service) {
//    toast('无障碍服务未启动!退出!')
//    exit()
//}


使用反斜杠注释 “//”
正确注释后文字会变成灰色
xiudle 发表于 2022-5-23 12:35
马上使用!!!!
likezyj 发表于 2022-5-23 11:50
这 个怎么使用
liyj136 发表于 2022-5-23 11:52
这个怎么用
小不点的小脚丫 发表于 2022-5-23 12:07
大佬牛逼
xiaoxiao63 发表于 2022-5-23 12:29
这个太可以了
SDU123 发表于 2022-5-23 12:44
感谢楼主分享
godivu2019 发表于 2022-5-23 13:09
感谢 马上使用
pemconrv 发表于 2022-5-23 13:18

这...怎么用呢,vs下好了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-27 21:19

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表