最近研究各种产品,发现了autojs,瞎折腾的心又按捺不住了。然后,发现奖券世界最近推的很火,于是用autojs试试牛刀,就有了今天这份文章。
相关源码见:https://download.csdn.net/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.csdn.net/zy0412326/article/details/121099001 的方案,感谢大神。
代码比较简单,欢迎拍砖。