├── README.md ├── taojinbi.js └── taojinbi1.js /README.md: -------------------------------------------------------------------------------- 1 | # taojinbi-js 2 | 淘宝 淘金币Autojs自动刷取脚本,自动执行脚本,包含蚂蚁森林收取能量,芭芭农场全任务,解放你的双手 3 | 4 | ## 两个都可以使用 5 | -------------------------------------------------------------------------------- /taojinbi.js: -------------------------------------------------------------------------------- 1 | "ui"; 2 | auto() //开启无障碍服务 v1.6.7 3 | /* 4 | 1.淘宝人生加载过慢 5 | 2.收藏店铺关键字更新为‘订阅+10’ 6 | */ 7 | 8 | if (floaty && floaty.hasOwnProperty("checkPermission") && !floaty.checkPermission()) { 9 | floaty.requestPermission(); toast("请先开启悬浮窗权限再运行,否则无法显示提示"); exit() 10 | } 11 | 12 | //===================用户可编辑参数=================== 13 | //所有任务重复次数,解决新增任务问题 14 | var MAX_ALL_TASK_EPOCH = 2 15 | //浏览任务最大执行次数 16 | var MAX_EPOCH = 101 17 | //任务执行默认等待的时长 考虑到网络卡顿问题 默认15秒 18 | var wait_sec = 15 19 | //序列化数据到本地 20 | var storage = storages.create("javis486"); 21 | //线程执行其任务 22 | var thread = null 23 | 24 | //===================通用函数========================= 25 | //点击控件 26 | function btn_click(x) { if (x) return x.click() } 27 | 28 | //点击控件所在坐标 29 | function btn_position_click(x) { if (x) click(x.bounds().centerX(), x.bounds().centerY()) } 30 | 31 | //不断查找元素x的父元素,指定满足要求(解决模拟器和手机不查找元素不一致问题) 32 | function btn_assure_click(x) { 33 | if (x && x.clickable()) return x.click() 34 | for (let ii = 0; ii < 6; ii++) { 35 | if (!x) break 36 | x = x.parent() 37 | if (x && x.clickable()) return x.click() 38 | let list_x = x.children() 39 | for (let i = 0; i < list_x.length; i++) { 40 | if (list_x[i] && list_x[i].clickable()) { 41 | return list_x[i].click() 42 | } 43 | } 44 | } 45 | return false 46 | } 47 | 48 | //消息提示 49 | function toast_console(msg, tshow) { 50 | console.log(msg); 51 | if (tshow) toast(msg); 52 | } 53 | 54 | // 截屏查找图片颜色并单击对应的点 55 | function cs_click(num, rgb, xr, yr, wr, hr, flipup) { 56 | while (num--) { 57 | let img = captureScreen() 58 | if (flipup != undefined) img = images.rotate(img, 180) 59 | let point = findColor(img, rgb, { region: [img.getWidth() * xr, img.getHeight() * yr, img.getWidth() * wr, img.getHeight() * hr], threshold: 8 }) 60 | if (point) { 61 | if (flipup != undefined) { 62 | point.x = img.getWidth() - point.x; point.y = img.getHeight() - point.y 63 | } 64 | return click(point.x, point.y); 65 | } 66 | if (num) sleep(1000) 67 | } 68 | return false 69 | } 70 | 71 | //===================业务逻辑函数========================= 72 | //获取[浏览以下商品]的所在组控件数 73 | function get_group_count() { 74 | let x = textContains('浏览以下商品').findOne(5) 75 | if (x) return x.parent().childCount() 76 | return 0 77 | } 78 | 79 | //等待sec秒,有完成提示后立即返回 80 | function wait(sec) { 81 | let t_sec = sec 82 | let pre_num = 0 //[浏览以下商品]的所在组控件数有时会变化 83 | while (sec--) { 84 | let a1 = textMatches('点我领取奖励|任务已完成快去领奖吧|任务完成|任务已完成|任务已经|任务已经全部完成啦').findOne(10) 85 | let cur_num = get_group_count() 86 | let a10 = pre_num > 0 && cur_num != pre_num; pre_num = cur_num 87 | let a = descMatches('任务完成|快去领奖吧').findOne(1000) 88 | if (a1 || a10 || a) { 89 | toast_console('到时立即返回') 90 | return true 91 | } 92 | } 93 | toast_console('等待' + t_sec + 's返回'); 94 | return true 95 | } 96 | 97 | //根据正则表达式获取任务 98 | function get_task(key_reg_str, skip_reg) { 99 | sleep(500); textMatches('每日来访领能量.+|累计任务奖励|x500').findOne(2000); 100 | let list_x = textMatches(input_value(ui.txt_btn_reg_str)).find() 101 | let reg = new RegExp(key_reg_str) 102 | for (let i = 0; i < list_x.length; i++) { 103 | let btn_topic = list_x[i].parent().child(0).child(0) //主题 104 | let btn_desc = list_x[i].parent().child(0).child(1).child(0) //描述 105 | if (!btn_desc) continue 106 | let txt_desc = btn_desc.text() 107 | let txt_topic = btn_topic.text() 108 | if (skip_reg != undefined && skip_reg.test(txt_topic)) continue 109 | if (reg.test(txt_desc) || reg.test(txt_topic)) { 110 | toast_console(txt_topic) 111 | let obj = new Object(); obj.x = list_x[i]; obj.txt = txt_topic; 112 | return obj 113 | } 114 | } 115 | return null 116 | } 117 | 118 | //淘金币获取奖励 119 | function get_rewards(reward) { 120 | if (reward) { 121 | sleep(500); btn_click(text('领取奖励').findOne(1000)); sleep(3000) //等待调整布局 122 | } 123 | } 124 | 125 | //确保任务按钮被单击,解决单击时布局发生改变的问题 126 | function assure_click_task(name) { 127 | let obj = null 128 | for (let i = 0; i < 3; i++) { 129 | obj = get_task(name) 130 | if (!obj) return false 131 | if (obj.x) break 132 | } 133 | if (!obj.x) { 134 | toast_console('无法找到[' + name + '任务],请确保其在未完成任务列表中'); return false 135 | } 136 | obj.x.click(); 137 | return true 138 | } 139 | 140 | //保证返回到任务界面 141 | function assure_back(tag) { 142 | let num = 8 143 | while (num-- && !text(tag).findOne(1000)) { 144 | back() 145 | btn_click(textMatches("残忍离开|立即领取").findOne(200)) 146 | } 147 | } 148 | 149 | //淘宝人生套装任务 150 | function suit_task() { 151 | toast_console('查看-淘宝人生套装任务') 152 | if (!assure_click_task('套装')) return 153 | sleep(5000); cs_click(6, '#fed362', 0.2, 0.05, 0.7, 0.4, true) //领取套装 154 | sleep(5000); assure_back('x500') 155 | } 156 | 157 | function do_baba_farm(all_task) { 158 | //金色获取肥料按钮 159 | btn_click(text('继续努力').findOne(1000)) 160 | if (btn_click(text('立即领取').findOne(1000))) { 161 | btn_assure_click(text('肥料礼包').findOne(1000)) 162 | btn_click(text('开心收下').findOne(1000)) 163 | btn_click(text('去施肥').findOne(1000)) 164 | } 165 | cs_click(6, '#fed362', 0.5, 0.45, 0.45, 0.25) //领取肥料 166 | sleep(500); btn_position_click(text('去施肥,赚更多肥料').findOne(1000)); sleep(500) 167 | //签到列表领肥料 168 | if (cs_click(3, '#9dbe77', 0.66, 0.66, 0.25, 0.25)) { 169 | console.log('打开签到列表领肥料'); sleep(1000) 170 | btn_click(text('去签到').findOne(1000)); btn_click(text('去领取').findOne(1000)); sleep(2000) 171 | if (all_task) { 172 | do_simple_task(16, 16, '浏览', 'x500', false) 173 | if (ui.ck_baba_suit_task.checked) { 174 | suit_task() 175 | } 176 | if (ui.ck_baba_xxl_task.checked) { 177 | xiaoxiaole_task() 178 | } 179 | if (ui.ck_baba_zhifubao_task.checked) { 180 | zhifubao_baba_farm_task() 181 | } 182 | } 183 | btn_click(text('去领取').findOne(1000)) 184 | btn_click(text('关闭').findOne(1000)); sleep(1000) 185 | if (all_task && ui.ck_baba_friend_forest_task.checked) { 186 | friend_forest_task() 187 | } 188 | } 189 | } 190 | 191 | //芭芭农场任务 192 | function baba_farm_task() { 193 | toast_console('查看-芭芭农场任务') 194 | if (!assure_click_task(input_value(ui.txt_baba_farm_task_reg_str))) return 195 | sleep(6000) 196 | do_baba_farm() 197 | cs_click(3, '#fff39f', 0.45, 0.6, 0.25, 0.35) //金色施肥按钮 198 | sleep(500); assure_back(input_value(ui.txt_task_list_ui_reg)); get_rewards(true) 199 | } 200 | 201 | //淘宝成就签到 202 | function achievement_signin_task() { 203 | toast_console('查看-淘宝成就签到任务') 204 | if (!assure_click_task(input_value(ui.txt_achievement_task_reg_str))) return 205 | btn_click(text("成就礼包").findOne(3000)) 206 | btn_click(text("我收下了").findOne(1000)) 207 | let btn_x = text('成就签到').findOne(2000) 208 | if (btn_x) { 209 | btn_x.parent().child(3).click() 210 | } 211 | btn_click(text("我收下了").findOne(1000)) 212 | sleep(1000); assure_back(input_value(ui.txt_task_list_ui_reg)); get_rewards(true) 213 | } 214 | 215 | //淘宝成就月账单任务 216 | function achievement_month_task() { 217 | toast_console('查看-淘宝成就月账单任务') 218 | if (!assure_click_task(input_value(ui.txt_achievement_month_reg_str))) return 219 | btn_assure_click(text('月度账单').findOne(3000)); sleep(2000) 220 | assure_back(input_value(ui.txt_task_list_ui_reg)); get_rewards(true) 221 | 222 | } 223 | 224 | //喂小鸡任务,可以直接返回 225 | function feed_chick_task() { 226 | toast_console('查看-蚂蚁庄园喂小鸡任务') 227 | if (!assure_click_task(input_value(ui.txt_feedchick_task_reg_str))) return 228 | sleep(1000); btn_click(text('取消').findOne(2000)); 229 | assure_back(input_value(ui.txt_task_list_ui_reg)); get_rewards(true) 230 | } 231 | 232 | //蚂蚁森林偷取能量 233 | function steal_energy(num_find) { 234 | let num = 5 235 | while (num-- && !textMatches('.+动态').findOne(1000)) sleep(500); 236 | if (textMatches('.+动态').findOne(500)) { 237 | let point = null; num = 5 238 | while (num--) { 239 | let img = captureScreen(); 240 | point = findColor(img, '#ff6e01', { region: [img.getWidth() * 0.7, img.getHeight() * 0.6, img.getWidth() * 0.25, img.getHeight() * 0.25], threshold: 8 }) 241 | if (point) break 242 | sleep(1000) 243 | } 244 | if (!point) { 245 | toast('找能量按钮去哪了?'); exit() 246 | } 247 | for (let i = 1; i <= num_find; i++) { 248 | for (let j = 0; j < 12; j++) { 249 | if (!cs_click(1, '#b6ff00', 0.1, 0.2, 0.8, 0.4)) break 250 | sleep(400) 251 | } 252 | if (num_find == 1) return 253 | click(point.x, point.y); sleep(1500) 254 | if (!textMatches('.+动态').findOne(1000)) break 255 | toast('找能量/' + i) 256 | } 257 | } 258 | toast('找能量执行完毕') 259 | } 260 | 261 | //蚂蚁森林任务 262 | function ant_forest_task(num, back_reg) { 263 | toast_console('查看-蚂蚁森林任务') 264 | if (!assure_click_task(input_value(ui.txt_antforest_reg_str))) return 265 | btn_click(text('打开').findOne(1000)) 266 | sleep(2000); console.hide(); steal_energy(num); console.show() 267 | assure_back(back_reg); get_rewards(true) 268 | } 269 | 270 | //逛好店领10金币 271 | function browse_goodshop_task(not_key_reg_str) { 272 | toast_console('查看-逛好店并领10金币任务') 273 | if (!assure_click_task(input_value(ui.txt_browse_goog_shop_reg_str))) return 274 | for (let i = 0; i < 11 && ui.ck_earn_10coin.checked; i++) { 275 | let btn_x = desc('逛10秒+10').findOne(2000) 276 | toast_console('逛10秒+10金币/' + (i + 1)) 277 | if (!btn_x) break 278 | btn_x.parent().click(); sleep(13000); 279 | if (ui.ck_pat_shop.checked) { 280 | btn_x = textContains('+10').findOne(800) 281 | if (btn_x) { 282 | btn_click(btn_x.parent()); sleep(800) 283 | } 284 | } 285 | back(); sleep(800); 286 | } 287 | wait(wait_sec); assure_back(input_value(ui.txt_task_list_ui_reg)); get_rewards(true) 288 | } 289 | 290 | //去天猫红包任务 291 | function tianmao_task() { 292 | toast_console('查看-去天猫APP领红包任务') 293 | if (!assure_click_task(input_value(ui.txt_tianmao_task_reg_str))) return 294 | sleep(4000) 295 | if (text('攻略').findOne(4000)) { 296 | btn_click(textContains('继续逛逛').findOne(1000)) 297 | wait(wait_sec) 298 | } 299 | assure_back(input_value(ui.txt_task_list_ui_reg)); get_rewards(true) 300 | } 301 | 302 | //掷骰子任务 303 | function dice_task() { 304 | toast_console('查看-淘宝人生掷骰子任务') 305 | if (!assure_click_task(input_value(ui.txt_dice_task_reg_str))) return 306 | console.hide(); sleep(15000); 307 | //去他大爷的神秘礼物 308 | toast_console('掷骰子任务-查看是否有神秘礼物(QTM的神秘)', true) 309 | cs_click(5, '#ffffff', 0.3, 0.1, 0.7, 0.5, true); 310 | //单击礼包 311 | toast_console('掷骰子任务-查看是否有礼包(QTM的礼包)', true) 312 | cs_click(3, '#fee998', 0.2, 0.2, 0.7, 0.8); 313 | //橙色收下奖励按钮按钮 314 | toast_console('掷骰子任务-点击5次开心收下按钮(一点都不开心- -)', true) 315 | for (let i = 0; i < 5; i++) { 316 | cs_click(1, '#ff7d44', 0.1, 0.15, 0.2, 0.5, true); sleep(500) 317 | } 318 | sleep(1000) 319 | //金色前进按钮 320 | toast_console('掷骰子任务-尝试点击色子前进', true) 321 | cs_click(4, '#fff89d', 0.2, 0.5, 0.45, 0.3); sleep(3000) 322 | //橙色收下奖励按钮按钮 323 | cs_click(2, '#ff7d44', 0.1, 0.15, 0.2, 0.5, true); 324 | back(); sleep(1000) 325 | //橙色返回淘宝按钮 326 | cs_click(3, '#ff7d44', 0.1, 0.15, 0.2, 0.5, true) 327 | btn_click(text('立刻离开').findOne(1000)); get_rewards(true); console.show() 328 | } 329 | 330 | 331 | //消消乐任务 332 | function xiaoxiaole_task() { 333 | toast_console('查看-消消乐任务') 334 | if (!assure_click_task(input_value(ui.txt_xiaoxiaole_task_reg_str))) return 335 | console.hide(); sleep(10000) 336 | cs_click(3, '#11c6bf', 0.2, 0.6, 0.3, 0.3); //开心收下奖励 337 | cs_click(3, '#ffffff', 0.8, 0.05, 0.2, 0.2) //跳过 338 | sleep(2000) 339 | //回到主页 340 | for (let i = 0; i < 6; i++) { 341 | cs_click(1, '#8d5546', 0, 0, 0.1, 0.1); sleep(1000) //back(); 342 | if (cs_click(1, '#ffbd29', 0.2, 0.5, 0.45, 0.45)) break //橙色返回 343 | if (cs_click(1, '#965417', 0.2, 0.2, 0.6, 0.6, true)) break //咖啡色暂时返回 344 | } 345 | toast("回到主页了么,您?"); 346 | sleep(3000) //过渡动画 347 | //邮件领取 pass 348 | cs_click(3, '#ffffff', 0.65, 0.15, 0.3, 0.5); sleep(500) 349 | //滑到屏幕下方 350 | for (let i = 0; i < 8; i++)swipe(device.width / 2, device.height / 2, device.width / 2, device.height / 5, 500) 351 | //点击第一关 绿色圆圈 352 | sleep(1000); cs_click(3, '#63cbc4', 0.5, 0.3, 0.4, 0.4, true); sleep(2000) 353 | //开始 绿色方块 354 | cs_click(2, '#11c6bf', 0.3, 0.5, 0.3, 0.3); sleep(2000) 355 | cs_click(3, '#ffffff', 0.8, 0.05, 0.2, 0.2) //跳过 356 | sleep(2000) 357 | //消除方块,兼容不同机型 358 | let rgb = '#fff0e0' 359 | img = captureScreen() 360 | let point1 = findColor(img, rgb, { region: [img.getWidth() * 0.2, img.getHeight() * 0.3, img.getWidth() * 0.4, img.getHeight() * 0.4], threshold: 4 }) 361 | img = images.rotate(img, 180) 362 | let point2 = findColor(img, rgb, { region: [img.getWidth() * 0.2, img.getHeight() * 0.3, img.getWidth() * 0.4, img.getHeight() * 0.4], threshold: 4 }) 363 | if (point1 && point2) { 364 | let box_x = (img.getWidth() - point2.x - point1.x) / 5 365 | let box_y = (img.getHeight() - point2.y - point1.y) / 6 366 | list_xy = [[0, 1, 0, 2], [0, 5, 0, 4], [2, 2, 3, 2]] 367 | list_xy.forEach(xy => { 368 | x1 = (xy[0] + 0.5) * box_x + point1.x; x2 = (xy[2] + 0.5) * box_x + point1.x 369 | y1 = (xy[1] + 0.5) * box_y + point1.y; y2 = (xy[3] + 0.5) * box_y + point1.y 370 | swipe(x1, y1, x2, y2, 600); sleep(800) 371 | }); 372 | } 373 | cs_click(2, '#8d5546', 0, 0, 0.1, 0.1); //back() 374 | sleep(1000); 375 | //回到主页1 灰色的暂时离开 376 | cs_click(2, '#9d6031', 0.2, 0.2, 0.4, 0.5, true) 377 | //回到主页2 金色的回到主页 378 | cs_click(2, '#ffbd29', 0.2, 0.5, 0.45, 0.45); sleep(2000); 379 | //再挑战? 380 | cs_click(5, '#ffffff', 0.6, 0.15, 0.35, 0.5); sleep(800) 381 | //返回淘宝按钮 382 | back(); sleep(1000); 383 | cs_click(3, '#ff6e09', 0.2, 0.2, 0.4, 0.4, true); 384 | console.show(); get_rewards(true) 385 | } 386 | 387 | //淘金币夺宝任务,需花费100淘金币 388 | function duobao_task(back_reg) { 389 | toast_console('查看-100淘金币夺宝任务') 390 | if (!assure_click_task(input_value(ui.txt_doubao_task_reg_str))) return 391 | if (btn_assure_click(text('去“我的奖品”查看').findOne(3000))) { 392 | swipe(device.width / 2, device.height * 0.8, device.width / 2, device.height * 0.2, 500) 393 | } 394 | btn_assure_click(textMatches('立即参与|立即夺宝').findOne(3000)) 395 | btn_click(text('参与兑换抽奖号').findOne(3000)) 396 | let num = 5 397 | while (num--) btn_click(text('-').findOne(1000)) 398 | btn_click(text('确定兑换').findOne(1000)); sleep(200) 399 | btn_click(text('确认兑换').findOne(1000)); sleep(200) 400 | btn_click(text('我知道了').findOne(1000)); sleep(1000) 401 | back(); sleep(800); back(); sleep(800); back(); sleep(800); cs_click(4, '#ff7d44', 0.1, 0.2, 0.5, 0.5, true) 402 | get_rewards(true) 403 | } 404 | 405 | //执行简单的浏览任务 406 | function do_simple_task(epoch, sec, reg_str, back_reg, reward) { 407 | toast_console('查看-可执行的简单浏览任务') 408 | skip_reg = new RegExp(input_value(ui.txt_simple_skip_reg_str)) 409 | for (let i = 0; i < epoch; i++) { 410 | let obj = get_task(reg_str, skip_reg) 411 | if (!obj) { 412 | console.log('简单浏览任务执行完毕'); break 413 | } 414 | if (!obj.x) { 415 | console.log('继续执行简单浏览任务'); continue 416 | } 417 | obj.x.click(); 418 | wait(sec) 419 | let num = 8 420 | while (num-- && !text(back_reg).findOne(1000)) { 421 | if (obj.txt.indexOf('充值金') > -1) { 422 | btn_click(text('O1CN01NN8T8d1tBlBM5R7qG_!!6000000005864-1-tps-100-100').findOne(1000)) 423 | sleep(500); btn_click(text('立即领取').findOne(1000)); sleep(500); 424 | } 425 | back(); btn_position_click(desc('继续退出').findOne(400)) 426 | btn_click(textMatches('残忍离开|回到淘宝').findOne(400)) 427 | if (obj.txt.indexOf('淘宝吃货') > -1) cs_click(1, '#ff4c55', 0.2, 0.2, 0.4, 0.4, true) 428 | } 429 | get_rewards(reward) 430 | } 431 | } 432 | 433 | 434 | //进入到淘金币列表界面 435 | function get_into_taojinbi_task_list() { 436 | let task_list_ui_reg = input_value(ui.txt_task_list_ui_reg) 437 | toast_console('启动淘宝app') 438 | app.launch('com.taobao.taobao'); sleep(1500) 439 | if (!text(task_list_ui_reg).findOne(2000)) { 440 | let num = 8 441 | while (num-- && !desc('领淘金币').findOne(1000)) back(); 442 | let btn_x = desc('领淘金币').findOne(500) 443 | if (!btn_x) { 444 | toast_console('无法返回到淘宝主界面,请手动回到淘宝主界面后重新运行'); exit() 445 | } 446 | btn_x.click(); toast_console('进入到淘金币主界面..'); sleep(2000) 447 | for (let i = 0; i < 6; i++) { 448 | btn_click(text('签到领金币').findOne(1000)); btn_click(text('领取奖励').findOne(1000)) 449 | btn_x = text('赚金币').findOne(1000) 450 | if (btn_x) break 451 | } 452 | if (!btn_x) { 453 | toast_console('无法找到[赚金币]按钮,请重新运行程序'); exit() 454 | } 455 | btn_x.click() 456 | } 457 | toast_console('进入到淘金币列表界面..'); textMatches('每日来访领能量.+').findOne(6000); 458 | } 459 | 460 | 461 | function taojinbi_task() { 462 | let simple_task_reg_str = input_value(ui.txt_simple_task_reg_str) 463 | let task_list_ui_reg = input_value(ui.txt_task_list_ui_reg) 464 | for (let i = 0; i < MAX_ALL_TASK_EPOCH; i++) { 465 | toast_console("#第" + (i + 1) + "次执行全任务") 466 | get_into_taojinbi_task_list() 467 | if (ui.ck_simple_task.checked) { 468 | do_simple_task(MAX_EPOCH, wait_sec, simple_task_reg_str, task_list_ui_reg, true) 469 | } 470 | if (ui.ck_feedchick_task.checked) { 471 | feed_chick_task() 472 | } 473 | if (ui.ck_dice_task.checked) { 474 | dice_task() 475 | } 476 | if (ui.ck_baba_farm_task.checked) { 477 | baba_farm_task() 478 | } 479 | if (ui.ck_antforest.checked) { 480 | ant_forest_task(8, input_value(ui.txt_task_list_ui_reg)) 481 | } 482 | if (ui.ck_browse_goog_shop.checked) { 483 | browse_goodshop_task(); 484 | } 485 | if (ui.ck_achievement_month_task) { 486 | achievement_month_task() 487 | } 488 | if (ui.ck_achievement_task.checked) { 489 | achievement_signin_task() 490 | } 491 | if (ui.ck_doubao_task.checked) { 492 | duobao_task(task_list_ui_reg) 493 | } 494 | if (ui.ck_tianmao_task.checked) { 495 | tianmao_task() 496 | } 497 | if (ui.ck_xiaoxiaole_task.checked) { 498 | xiaoxiaole_task() 499 | } 500 | get_rewards(true) 501 | } 502 | toast_console('*****淘金任务执行完毕*****') 503 | } 504 | 505 | function main() { 506 | requestScreenCapture(false); 507 | console.show(); 508 | console.log("淘金币" + storage.get('taojinbi_version', '') + " 本APP完全免费,作者:Javis486,github下载地址:https://github.com/JavisPeng/taojinbi") 509 | taojinbi_task(); 510 | toast_console('###***全部任务执行完毕***###') 511 | } 512 | 513 | 514 | //获取选择框列表 515 | function get_check_box_list() { 516 | return [ui.ck_simple_task, ui.ck_dice_task, ui.ck_baba_farm_task, ui.ck_antforest, ui.ck_tianmao_task, 517 | ui.ck_achievement_task, ui.ck_browse_goog_shop, ui.ck_earn_10coin, ui.ck_pat_shop, 518 | ui.ck_feedchick_task, ui.ck_doubao_task, ui.ck_xiaoxiaole_task, ui.ck_achievement_month_task, 519 | ui.ck_baba_suit_task, ui.ck_baba_xxl_task, ui.ck_baba_zhifubao_task, ui.ck_baba_friend_forest_task 520 | ]; 521 | } 522 | 523 | //获取输入框列表 524 | function get_input_list() { 525 | return [ui.txt_btn_reg_str, ui.txt_task_list_ui_reg, ui.txt_simple_task_reg_str, ui.txt_feedchick_task_reg_str, ui.txt_browse_goog_shop_reg_str, 526 | ui.txt_baba_farm_task_reg_str, ui.txt_dice_task_reg_str, ui.txt_doubao_task_reg_str, ui.txt_achievement_task_reg_str, 527 | ui.txt_antforest_reg_str, ui.txt_tianmao_task_reg_str, ui.txt_xiaoxiaole_task_reg_str, ui.txt_achievement_month_reg_str, ui.txt_simple_skip_reg_str 528 | ]; 529 | } 530 | 531 | 532 | function input_value(x) { 533 | return String(x.getText()) 534 | } 535 | 536 | //保存选项 537 | function save_opt() { 538 | let list_ck = get_check_box_list().map(x => x.checked) 539 | let list_txt = get_input_list().map(x => input_value(x)) 540 | storage.put("list_ck", list_ck) 541 | storage.put("list_txt", list_txt) 542 | toast_console('选项保存成功', true); 543 | } 544 | 545 | //加载选择项状态 546 | function load_opt() { 547 | let list_ck_v = storage.get("list_ck", null) 548 | let list_txt_v = storage.get("list_txt", null) 549 | if (list_ck_v) { 550 | let list_ck = get_check_box_list(); 551 | for (let i = 0; i < list_ck_v.length; i++) { 552 | list_ck[i].checked = list_ck_v[i]; 553 | } 554 | } 555 | if (list_txt_v) { 556 | let list_txt = get_input_list(); 557 | for (let i = 0; i < list_txt_v.length; i++) { 558 | list_txt[i].setText(list_txt_v[i]); 559 | } 560 | } 561 | } 562 | 563 | //选择项开关 564 | function task_toggle() { 565 | list_ck = get_check_box_list(); 566 | list_ck.forEach(x => { 567 | x.checked = !x.checked; 568 | }) 569 | } 570 | 571 | //直接启动支付宝蚂蚁森林偷取好友能量,需添加蚂蚁森林到首页 572 | function zfb_antforest() { 573 | if (thread && thread.isAlive()) { 574 | toast_console('当前程序正在执行其他任务,请结束后再运行', true); return 575 | } 576 | thread = threads.start(function () { 577 | requestScreenCapture(false); 578 | app.launch('com.eg.android.AlipayGphone'); sleep(2000) 579 | let btn_ant = textContains('蚂蚁森林').findOne(5000) 580 | if (!btn_ant) { 581 | toast_console('无法找到蚂蚁森林,请先添加到支付宝首页', true); return 582 | } 583 | btn_position_click(btn_ant) 584 | steal_energy(64); 585 | }); 586 | } 587 | 588 | //单独执行芭芭农场全任务 589 | function solo_baba_farm() { 590 | if (thread && thread.isAlive()) { 591 | toast_console('当前程序正在执行其他任务,请结束后再运行', true); return 592 | } 593 | thread = threads.start(function () { 594 | requestScreenCapture(false); 595 | app.launch('com.taobao.taobao'); 596 | if (!text('亲密度').findOne(1000)) { 597 | //btn_assure_click(desc('我的淘宝').findOne(3000)) 598 | let btn_x = desc('芭芭农场').findOne(3000) 599 | if (!btn_x) { 600 | toast_console('无法进入芭芭农场主界面,请手动回到淘宝主界面后重新运行'); exit() 601 | } 602 | btn_x.click(); toast_console('进入芭芭农场主界面..'); 603 | sleep(6000) 604 | btn_click(text('立即去收').findOne(2000)) 605 | if (text('兑换').findOne(3000)) { 606 | cs_click(2, '#984f2e', 0.05, 0.2, 0.1, 0.3); sleep(6000) 607 | } 608 | } 609 | console.show() 610 | do_baba_farm(true) 611 | toast_console('**芭芭农场任务完成**'); 612 | }); 613 | } 614 | 615 | //支付宝芭芭农场 616 | function zhifubao_baba_farm_task() { 617 | toast_console('查看-支付宝芭芭农场任务') 618 | //if (!assure_click_task('支付宝芭芭农场')) return 619 | btn_position_click(textContains('支付宝芭芭农场').findOne(1000)) 620 | toast_console('等待农场主界面出现'); 621 | btn_click(text('继续赚肥料').findOne(7000)); sleep(2000) 622 | toast_console('领取肥料'); 623 | cs_click(4, '#fed362', 0.55, 0.65, 0.45, 0.15); sleep(1500); //领取肥料 624 | btn_click(text('去施肥').findOne(1000)); sleep(500) 625 | if (cs_click(2, '#fed362', 0.1, 0.2, 0.1, 0.2, true)) { //打开列表 626 | toast_console('开始领取'); sleep(1500) 627 | for (let i = 0; i < 4; i++) { 628 | btn_click(text('领取').findOne(500)); sleep(500) 629 | } 630 | let btn_water = textContains('浇水').findOne(1000)//蚂蚁森林任务 631 | if (btn_water) { 632 | click(btn_water.bounds().right + 10, btn_water.bounds().top) 633 | console.hide(); steal_energy(1, true); assure_back('队伍设置'); console.show() 634 | sleep(1000); btn_click(text('领取').findOne(1000)); 635 | } 636 | if (btn_click(text('去逛逛').findOne(1000))) { 637 | sleep(4000); btn_click(textContains('继续赚').findOne(5000)); return 638 | } 639 | } 640 | assure_back('x500') 641 | } 642 | 643 | //芭芭农场中的好友林 644 | function friend_forest_task() { 645 | toast_console('前往芭芭农场中的好友林'); sleep(3000) 646 | btn_click(textContains('我知道啦').findOne(3500)) 647 | console.hide() 648 | cs_click(3, '#fed362', 0.01, 0.5, 0.2, 0.3); sleep(2000)// 打开好友林 649 | if (cs_click(3, '#b63223', 0.4, 0.1, 0.2, 0.3)) { //中心领取 650 | btn_click(textMatches('继续加油|开心收下').findOne(1000)) 651 | } 652 | //收取肥料 653 | let fu = images.fromBase64('/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wAARCAAOABEDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAMCBQb/xAAcEAACAwEBAQEAAAAAAAAAAAABAgADERITIQT/xAAXAQADAQAAAAAAAAAAAAAAAAAAAwQF/8QAGBEBAQADAAAAAAAAAAAAAAAAAAECERL/2gAMAwEAAhEDEQA/ALHn1f8AQQzau59khWE8LFZtY/RsQz2e1qVkAEndjK1ue2hWZeUOiZ8TY3dabmEX0YQP5f/Z') 654 | for (let i = 0; i < 8; i++) { 655 | let img = captureScreen() 656 | var point = findImage(img, fu, { region: [0.1 * device.width, 0.3 * device.height], threshold: 0.9 }); 657 | if (point) { 658 | click(point.x, point.y); sleep(1000) 659 | } 660 | } 661 | if (btn_click(text('点我领肥料').findOne(1000))) { 662 | btn_click(text('立即去浇灌').findOne(1000)); console.show(); sleep(4000); return 663 | } 664 | if (btn_click(text('立即领取').findOne(1000))) { 665 | btn_click(text('开心收下').findOne(1000)) 666 | } 667 | console.show(); back() 668 | } 669 | 670 | //取消关注的店铺 671 | function cancel_pat_shop() { 672 | if (thread && thread.isAlive()) { 673 | toast_console('当前程序正在执行其他任务,请结束后再运行', true); return 674 | } 675 | thread = threads.start(function () { 676 | app.launch('com.taobao.taobao'); 677 | toast('单击我的淘宝'); btn_assure_click(desc('我的淘宝').findOne(6000)) 678 | toast('点击关注店铺'); btn_assure_click(desc('订阅店铺').findOne(2000)); sleep(1000) 679 | btn_assure_click(desc('全部').findOne(2000)); 680 | for (let i = 0; i < MAX_EPOCH; i++) { 681 | let list_x = className("ImageView").find() 682 | for (let i = 0; i < list_x.length; i++) { 683 | let btn_x = list_x[i] 684 | let h = btn_x.bounds().bottom - btn_x.bounds().top 685 | if (h < 10) { //hight较小的控件 686 | if (btn_x && btn_x.parent()) { 687 | btn_x.parent().click(); sleep(500) 688 | let bnt_cancel = desc('取消订阅').findOne(1000) 689 | if (bnt_cancel) { 690 | btn_click(bnt_cancel.parent()); sleep(500) 691 | } 692 | } 693 | } 694 | } 695 | } 696 | }) 697 | } 698 | 699 | ui.layout( 700 | 701 | 702 | 703 | 704 | 705 | 706 | 707 | 708 | 709 | 710 | 711 | 712 | 713 | 714 | 715 | 716 | 717 | 718 | 719 | 720 | 721 | 722 | 723 | 724 | 725 |