- 在网上看了一些自动收能量的脚本
- 写了一个脚本
- 使用AutoJs运行
- AutoJS下载地址 :here
运行步骤如下:
- 1.解锁(点亮屏幕,切换到输入密码界面,输入密码)
- 2.打开支付宝
- 3.找到蚂蚁森林
- 4.收取自己的能量
- 5.偷取他人能量
参考资料:
源码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
var morningTime = "07:22";//自己运动能量生成时间
var startTime = "07:00";
var endTime = "7:35";
var screen_width = 1080; //设置屏幕的宽度,像素值
var screen_height = 2340; //设置屏幕的高度,像素值
sleep(2000);
unlock();
sleep(2000);
threads.start(function(){
//在子线程中调用observeKey()从而使按键事件处理在子线程执行
events.observeKey();
events.on("key_down", function(keyCode, events){
//音量键关闭脚本
if(keyCode == keys.volume_down){
toast("您选择退出脚本!")
sleep(2000);
exit();
}
});
});
mainEntrence();
//程序主入口
function mainEntrence(){
do{
//尝试打开支付宝
if (!openAlipay()) {
toastLog("打开支付宝失败,退出程序");
exit();
}
// 尝试进入自己的蚂蚁森林,若失败跳过
if(!enterMyMainPage()){
toastLog("尝试进入自己的蚂蚁森林,若失败退出程序");
exit();
}
if(!collectEnergy("收取自己能量中")){
toastLog("如果不在蚂蚁森林,退出程序");
exit();
}
// 找能量
while(findOthers()){
back();
sleep(300);
}
// 执行返回 4 次
whenComplete(4);
// 睡眠 1 秒,等待下一次收集
sleep(1000);
}while(checkTime());
exit();
}
/*
* 收其他人能量
* return 是否有能量可收
*/
function findOthers(){
if(textEndsWith("种树").exists()){
// 到了自己能量时间
if(myEnergyTime()){
collectEnergy("收取自己能量");
}
// 点击按钮寻找能量,不同手机需要更改位置参数
click(960,1570);
sleep(500);
return collectEnergy("收其他人能量中");
}
toastLog("没有能量了");
return false;
}
/**
* 解锁函数
*/
function unlock(){
if(!device.isScreenOn()){
//点亮屏幕
device.wakeUp();
//由于MIUI的解锁有变速检测,因此要点开时间以进入密码界面
sleep(1000);
swipe(500, 0, 500, 1900, 2000);
click(100,150);
//输入屏幕解锁密码,其他密码请自行修改
sleep(2000);
click(250,1440);
sleep(500);
click(550,1640);
sleep(500);
click(250,1440);
sleep(500);
click(840,1640);
sleep(500);
}
}
/**
* 收能量函数
* return 是否收取成功
*/
function collectEnergy(info) {
// 判断是否在蚂蚁森林
if(!textContains("最新动态").exists()){
return false;
}
for(var row=screen_height*0.256;row<screen_height*0.376;row+=80){
for(var col=screen_width*0.185;col<screen_width*0.815;col+=80){
sleep(100);
click(col,row);
}
}
toastLog(info);
sleep(100);
return true;
}
/**
* 从支付宝主页进入蚂蚁森林我的主页
* return 是否进入
*/
function enterMyMainPage(){
//五次尝试蚂蚁森林入
var i=0;
// 拉至顶端
swipe(screen_width*0.5,screen_height*0.5,screen_width*0.5,screen_height*0.25,500);
sleep(500);
swipe(screen_width*0.5,screen_height*0.25,screen_width*0.5,screen_height*0.5,500);
while (!textEndsWith("蚂蚁森林").exists() && !descEndsWith("蚂蚁森林").exists() && i<=5){
sleep(1000);
i++;
}
if(i>=5){
toastLog("没有找到蚂蚁森林入口,尝试中");
clickByTextDesc("全部",0);
sleep(2000);
swipe(screen_width*0.5,screen_height*0.3,screen_width*0.5,screen_height*0.7,1000);
sleep(2000);
swipe(screen_width*0.5,screen_height*0.3,screen_width*0.5,screen_height*0.7,1000);
sleep(2000);
}
clickByTextDesc("蚂蚁森林",0);
//等待进入自己的主页,10次尝试
sleep(3000);
i=0;
while (!textEndsWith("种树").exists() && !descEndsWith("种树").exists() && i<=10){
sleep(1000);
i++;
}
toastLog("第"+i+"次尝试进入自己主页");
if(i>=10){
toastLog("进入自己能量主页失败");
return false;
}
return true;
}
/**
* 自定义的点击函数
* @param {*} energyType
* @param {*} paddingY
*/
function clickByTextDesc(energyType,paddingY){
var clicked = false;
if(descEndsWith(energyType).exists()){
descEndsWith(energyType).find().forEach(function(pos){
var posb=pos.bounds();
if(posb.centerX()<0 || posb.centerY()-paddingY<0){
return false;
}
//toastLog(pos.id());
var str = pos.id();
if(str != null){
if(str.search("search") == -1){
click(posb.centerX(),posb.centerY()-paddingY);
//toastLog("get it 1");
clicked = true;
}
}else{
click(posb.centerX(),posb.centerY()-paddingY);
//toastLog("get it 2");
clicked = true;
}
sleep(100);
});
}
if(textEndsWith(energyType).exists() && clicked == false){
textEndsWith(energyType).find().forEach(function(pos){
var posb=pos.bounds();
if(posb.centerX()<0 || posb.centerY()-paddingY<0){
return false;
}
//toastLog(pos.id());
var str = pos.id();
if(str != null){
if(str.search("search") == -1){
click(posb.centerX(),posb.centerY()-paddingY);
//toastLog("get it 3");
clicked = true;
}
}else{
click(posb.centerX(),posb.centerY()-paddingY);
//toastLog("get it 4");
clicked = true;
}
sleep(100);
});
}
return clicked;
}
/**
* 结束后返回主页面
* @param value : 返回次数
*/
function whenComplete(value) {
toastLog("结束");
while(value>0){
back();
sleep(1500);
value--;
}
}
/**
* 检测当前时间是否在指定范围内
* return 是:否
*/
function checkTime(){
var now =new Date();
var hour=now.getHours();
var minu=now.getMinutes();
var time_a=startTime.split(":");
var time_b=endTime.split(":");
var timea = 60*Number(time_a[0])+Number(time_a[1]);
var timeb = 60*Number(time_b[0])+Number(time_b[1]);
var time = 60*hour + minu;
if(time>=timea && time<=timeb){
//sleep(2000);
return true;
}else{
return false;
}
}
/**
* 是否到了收自己能量的时间
*/
function myEnergyTime(){
var now =new Date();
var hour=now.getHours();
var minu=now.getMinutes();
var mytime=morningTime.split(":");
if(mytime[0]==hour && (mytime[1]==minu || mytime[1]==minu-1) ){
return true;
}else{
return false;
}
}
/**
* 唤醒支付宝
* return 是否成功
*/
function openAlipay(){
launchApp("支付宝");
toastLog("等待支付宝启动");
// sleep(3000);
var i=0;
while (!textEndsWith("扫一扫").exists() && !descEndsWith("扫一扫").exists() && i<=5){
sleep(2000);
// 点击首页,防止进入后在其他菜单
clickByTextDesc("首页",0);
i++;
}
toastLog("第"+i+"次尝试进入支付宝主页");
if(i>=5){
toastLog("没有找到支付宝首页");
sleep(1000);
return false;
}
return true;
}