-
Notifications
You must be signed in to change notification settings - Fork 19
/
Copy pathtyqh.js
1996 lines (1893 loc) · 59.5 KB
/
tyqh.js
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
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
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
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/**
作者:临渊
Modified by treasunew
Tgchannel:https://t.me/PorterTree
日期:8-11
小程序:统一快乐星球
入口:活动->种番茄
功能:除了助力都能完成
抓包:api.xiaoyisz.com/qiehuang/ga/public/api/login 这个登录包里 body 部分的 全部
变量:tybody='body@xxxx ' 多个账号用 @ 或者 换行 分割
定时一天三次,八个小时一次收取冒险奖励
cron: 10 12,18 * * *
[task_local]
#统一茄皇
10 12,18 * * * https://raw.githubusercontent.com/treasunew/SillyLib/main/scripts/TYQH/tyqh.js, tag=统一茄皇, enabled=true
[rewrite_local]
http://api.xiaoyisz.com/qiehuang/ga/public/api/login url script-request-header https://raw.githubusercontent.com/treasunew/SillyLib/main/scripts/TYQH/tyqh.js
[MITM]
hostname = api.xiaoyisz.com
6-14 更新了AU获取方式,理论上不会过期了
6-18 更新了收取植物、种新的植物和推送加上昵称,方便辨认(可能)
6-22 修复了上报挑战失败、洒阳光失败,更新了种植进度(免得老有人说脚本坏了)
6-24 优化日志,更新了随机UA,可以自己抓 user-agent 填到变量 UA 里面,也可以不填直接改脚本里 uaNum 的数字
6-26 移除了开始冒险,加到助力脚本,现在四个号可以两个小时冒险一次
6-28 新增偷取好友阳光(出自jujuju大佬)
8-11 修复了参数校验的问题,sign
*/
const $ = new Env("统一茄皇");
const crypto = require('crypto-js');
const notify = $.isNode() ? require("./sendNotify") : "";
const { log } = console;
const Notify = 1; //0为关闭通知,1为打开通知,默认为1
const debug = 0; //0为关闭调试,1为打开调试,默认为0
const uaNum = 1; //随机UA,从0-20随便选一个填上去
//////////////////////
let scriptVersion = "1.6.2";
let scriptVersionLatest = '';
let tyau = "";
let tybody = ($.isNode() ? process.env.tybody : $.getdata("tybody")) || "";
let UA = ($.isNode() ? process.env.UA : $.getdata("UA")) || "";
let UAArr = [];
let tybodyArr = [];
let newAuArr = [];
let tyPlantId = "";
let plantIdArr = [];
let auback = 0;
let data = "";
let msg = "";
let taskType = 0;
let taskBack = [];
let taskTypeArr = [];
let taskId = "";
let taskIdArr = [];
let challengeId = "";
let adventureId = "";
let adventureBack = 0;
let name = "";
let id = "";
let idArr = [];
let progress = 0.0;
let plantStage = 0;
let plantStatus = "";
let helpTaskId = "";
let helpTaskIdArr = [];
let giveSunshineBack = 0;
let stealFull = false;
const User_Agents = [
"Mozilla/5.0 (Linux; Android 10; ONEPLUS A5010 Build/QKQ1.191014.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36",
"Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",
"Mozilla/5.0 (Linux; Android 9; Mi Note 3 Build/PKQ1.181007.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045131 Mobile Safari/537.36",
"Mozilla/5.0 (Linux; Android 10; GM1910 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36",
"Mozilla/5.0 (Linux; Android 9; 16T Build/PKQ1.190616.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36",
"Mozilla/5.0 (iPhone; CPU iPhone OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",
"Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",
"Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/532.0 (KHTML, like Gecko) CriOS/43.0.823.0 Mobile/65M532 Safari/532.0",
"Mozilla/5.0 (iPod; U; CPU iPhone OS 3_1 like Mac OS X; rw-RW) AppleWebKit/531.9.3 (KHTML, like Gecko) Version/4.0.5 Mobile/8B118 Safari/6531.9.3",
"Mozilla/5.0 (Linux; Android 9; MI 6 Build/PKQ1.190118.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36",
"Mozilla/5.0 (Linux; Android 11; Redmi K30 5G Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045511 Mobile Safari/537.36",
"Mozilla/5.0 (Linux; Android 10; ONEPLUS A6000 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045224 Mobile Safari/537.36",
"Mozilla/5.0 (Linux; Android 9; MHA-AL00 Build/HUAWEIMHA-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36",
"Mozilla/5.0 (Linux; Android 8.0.0; HTC U-3w Build/OPR6.170623.013; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36",
"Mozilla/5.0 (Linux; Android 10; LYA-AL00 Build/HUAWEILYA-AL00L; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36",
"Mozilla/5.0 (Linux; Android 8.1.0; MI 8 Build/OPM1.171019.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045131 Mobile Safari/537.36",
"Mozilla/5.0 (Linux; Android 10; Redmi K20 Pro Premium Edition Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045227 Mobile Safari/537.36",
"Mozilla/5.0 (Linux; Android 8.1.0; 16 X Build/OPM1.171019.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/044942 Mobile Safari/537.36",
"Mozilla/5.0 (Linux; Android 10; M2006J10C Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36",
"Mozilla/5.0 (iPhone; CPU iPhone OS 13_7 like Mac OS X) AppleWebKit/532.0 (KHTML, like Gecko) FxiOS/18.2n0520.0 Mobile/50C216 Safari/532.0",
"Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",
"Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",
];
let ua = User_Agents[uaNum];
!(async () => {
if (typeof $request !== "undefined") {
await GetRewrite();
} else {
if (!(await Envs())) return;
else {
log(
`\n\n============================================= \n脚本执行 - 北京时间(UTC+8):${new Date(
new Date().getTime() +
new Date().getTimezoneOffset() * 60 * 1000 +
8 * 60 * 60 * 1000
).toLocaleString()} \n=============================================\n`
);
await poem();
await getVersion();
log(`\n============ 当前版本:${scriptVersion} 最新版本:${scriptVersionLatest} ============`)
log(
`\n=================== 共找到 ${tybodyArr.length} 个账号 ===================`
);
if (debug) {
log(`【debug】 这是你的全部账号数组:\n ${tybodyArr}`);
}
for (let index = 0; index < tybodyArr.length; index++) {
ua = User_Agents[uaNum + index];
if (UA) {
if (index >= UAArr.length) {
let i = UAArr.length + randomInt(0, 2);
ua = User_Agents[uaNum + i];
} else ua = UAArr[index];
}
tybody = tybodyArr[index];
let num = index + 1;
log(`\n========= 开始【第 ${num} 个账号】=========\n`);
if (debug) {
log(`【debug】 这是你的第 ${num} 个账号数组:\n ${tybody}`);
}
msg += `\n第${num}个账号运行结果:`;
log("【开始获取AU】");
await refreshAu();
await $.wait(2 * 1000);
newAuArr[index] = tyau;
log("【开始查询任务】");
await getTask();
await $.wait(2 * 1000);
helpTaskIdArr[index] = helpTaskId;
if (auback != 1) {
for (let i = 0; i < 10; i++) {
if (taskBack[i]) {
if (i == 0) {
log(`\n助力任务还未完成,建议执行互助\n`);
} else
log(`【第${i + 1}个任务未完成,开始执行第${i + 1}个任务】`);
await report(i);
if (i == 2) {
await report(i);
await report(i);
await report(i);
await report(i);
}
await $.wait(2 * 1000);
await getDrawPriz(i);
await $.wait(2 * 1000);
}
}
log("【开始收取阳光】");
await getSunshine();
await $.wait(2 * 1000);
log("【开始进行挑战】");
await startCallenge();
await $.wait(2 * 1000);
log("【开始查询冒险奖励】");
await queryAdventure();
await $.wait(2 * 1000);
log("【开始获取植物详情】");
await getPlant(index);
await $.wait(2 * 1000);
plantIdArr[index] = tyPlantId;
log("【开始洒阳光】");
do {
await giveSunshine();
await $.wait(2 * 1000);
} while (giveSunshineBack == 1);
log("【开始获取植物详情】");
await getPlant(index);
await $.wait(2 * 1000);
plantIdArr[index] = tyPlantId;
log("【开始偷好友阳光】");
const stealAll = await stealFriendSunshine();
msg += `\n共偷取好友阳光${stealAll}g`;
log("【开始查询信息】");
await getUserInfo();
await $.wait(2 * 1000);
idArr[index] = id;
}
}
await SendMsg(msg);
}
}
})()
.catch((e) => log(e))
.finally(() => $.done());
/**
* 获取AU
*/
function refreshAu(timeout = 2 * 1000) {
let url = {
url: `https://api.xiaoyisz.com/qiehuang/ga/public/api/login`,
headers: {
Host: "api.xiaoyisz.com",
"user-agent": `${ua}`,
"Content-Type": "application/json",
},
body: `${tybody}`,
};
return new Promise((resolve) => {
if (debug) {
log(`\n【debug】=============== 这是 获取AU 请求 url ===============`);
log(JSON.stringify(url));
}
$.post(
url,
async (error, response, data) => {
try {
if (debug) {
log(
`\n\n【debug】===============这是 获取AU 返回data==============`
);
log(data);
}
let result = JSON.parse(data);
if (result.code == 0) {
log(`获取AU成功`);
tyau = result.data;
} else if (result.code == 500) {
log(
`获取AU失败,请检查你的变量是否正确,如正确更换到环境变量或者配置文件重试`
);
auback = 1;
} else {
log(`获取AU失败,原因是:${result.message}`);
}
} catch (e) {
log(e);
} finally {
resolve();
}
},
timeout
);
});
}
/**
* 偷朋友阳光
*/
async function stealFriendSunshine(timeout = 2 * 1000) {
//--0 先获取好友列表
let url = {
url: `https://api.xiaoyisz.com/qiehuang/ga/user/friend/list?page=1&size=50&${getBody()}`,
headers: {
Host: "api.xiaoyisz.com",
authorization: `${tyau}`,
"user-agent": `${ua}`,
"Content-Type": "application/json",
},
};
return new Promise(async (resolve) => {
if (debug) {
log(`\n【debug】=============== 这是 朋友列表 请求 url ===============`);
log(JSON.stringify(url));
}
$.get(
url,
async (error, response, data) => {
try {
if (debug) {
log(
`\n\n【debug】===============这是 朋友列表 返回data==============`
);
log(data);
}
let result = JSON.parse(data);
if (result.code == 904) {
refreshAu();
} else if (result.code === 0) {
const {
data: { content },
} = result;
if (content.length > 0) {
//--1 过滤可偷好友列表
const stealList = content.filter((it) => it.stealAble);
log("可偷好友列表为", stealList.length);
if (stealList.length > 0) {
//--2 偷 然后汇总偷取的阳光
const stealNums = await stealList.reduce(async (pre, curt) => {
// 这里是关键,需要 await 前一个 task 执行的结果
// 实际上每个 reduce 每个循环执行都相当于 new Promise
// 但第二次执行可以拿到上一次执行的结果,也就是上一个 Promise
// 每次执行只要 await 上一个 Promise,即可实现依次执行
const prev = await pre;
if (stealFull) {
console.log("最多偷取10人,不再偷取");
return prev;
} else {
const next = await stealSunshine(curt.userId);
await $.wait(2 * 1000);
return prev + next;
}
}, 0);
console.log("偷取的数据", stealNums);
resolve(stealNums);
} else resolve(0);
} else {
log(`没有好友,退出`);
resolve(0);
}
} else {
log(`遇到错误,原因是:${result.message}`);
resolve(0);
}
} catch (e) {
log(e);
} finally {
resolve(0);
}
},
timeout
);
});
}
/**
* 偷好友阳光
*/
function stealSunshine(userId, timeout = 2 * 1000) {
return new Promise((resolve) => {
let url = {
url: `https://api.xiaoyisz.com/qiehuang/ga/user/daily/steal?friendUserId=${userId}&${getBody()}`,
headers: {
Host: "api.xiaoyisz.com",
authorization: `${tyau}`,
"user-agent": `${ua}`,
"Content-Type": "application/json",
},
};
if (debug) {
log(
`\n【debug】=============== 这是 偷好友阳光 请求 url ===============`
);
log(JSON.stringify(url));
}
$.get(
url,
async (error, response, data) => {
try {
if (debug) {
log(
`\n\n【debug】===============这是 偷好友阳光 返回data==============`
);
log(data);
}
let result = JSON.parse(data);
if (result.code == 904) {
refreshAu();
} else if (result.code === 0) {
const { data: stealData } = result;
if (stealData > 0) {
log(`偷到好友阳光 ${stealData}g`);
return resolve(stealData);
} else return resolve(0);
} else {
log(`遇到错误,原因是:${JSON.stringify(result)}`);
stealFull = true;
resolve(0);
}
} catch (e) {
log(e);
stealFull = true;
resolve(0);
}
},
timeout
);
});
}
/**
* 上报任务
*/
function report(num) {
let url = {
url: `https://api.xiaoyisz.com/qiehuang/ga/user/task/report?taskType=${taskTypeArr[num]
}&attachId=${timestampMs()}&taskId=${taskIdArr[num]}&${getBody()}`,
headers: {
Host: "api.xiaoyisz.com",
authorization: `${tyau}`,
"user-agent": `${ua}`,
"content-type": "application/json",
},
};
return new Promise((resolve) => {
if (debug) {
log(`\n【debug】=============== 这是 上报任务 请求 url ===============`);
log(JSON.stringify(url));
}
$.get(url, async (error, response, data) => {
try {
if (debug) {
log(
`\n\n【debug】===============这是 上报任务 返回data==============`
);
log(data);
}
let result = JSON.parse(data);
if (result.code == 904) {
refreshAu();
}
if (result.code == 902) {
auback = 1;
log(`AU失效,请重抓`);
msg += `\nAU失效,请重抓`;
} else if (result.data.status === 1) {
log(`上报任务成功`);
} else if (result.data.status == -2 || result.data.status == 2) {
log(`上报任务失败,可能是已经完成`);
} else {
log(`上报任务失败,原因是:${result.message}`);
}
} catch (e) {
log(e);
} finally {
resolve();
}
});
});
}
/**
* 领取奖励
*/
function getDrawPriz(num) {
let url = {
url: `https://api.xiaoyisz.com/qiehuang/ga/user/task/drawPrize?taskId=${taskIdArr[num]}&${getBody()}`,
headers: {
Host: "api.xiaoyisz.com",
authorization: `${tyau}`,
"user-agent": `${ua}`,
"content-type": "application/json",
},
};
return new Promise((resolve) => {
if (debug) {
log(`\n【debug】=============== 这是 领取奖励 请求 url ===============`);
log(JSON.stringify(url));
}
$.get(url, async (error, response, data) => {
try {
if (debug) {
log(
`\n\n【debug】===============这是 领取奖励 返回data==============`
);
log(data);
}
let result = JSON.parse(data);
if (result.code == 904) {
refreshAu();
}
if (result.code == 902) {
auback = 1;
log(`AU失效,请重抓`);
msg += `\nAU失效,请重抓`;
} else if (result.code === 1000) {
log(`任务不是待领取状态`);
} else if (result.code == 0) {
let back = eval(result.data);
log(`[${back.name}]任务领取奖励成功`);
} else {
log(`任务领取奖励失败,原因是:${result.message}`);
}
} catch (e) {
log(e);
} finally {
resolve();
}
});
});
}
/**
* 获取任务
*/
function getTask(timeout = 2 * 1000) {
let url = {
url: `https://api.xiaoyisz.com/qiehuang/ga/user/task/list?${getBody()}`,
headers: {
Host: "api.xiaoyisz.com",
authorization: `${tyau}`,
"user-agent": `${ua}`,
"content-type": "application/json",
},
};
return new Promise((resolve) => {
if (debug) {
log(`\n【debug】=============== 这是 获取任务 请求 url ===============`);
log(JSON.stringify(url));
}
$.get(
url,
async (error, response, data) => {
try {
if (debug) {
log(
`\n\n【debug】===============这是 获取任务 返回data==============`
);
log(data);
}
let result = JSON.parse(data);
let back = eval(result);
if (result.code == 901 || result.code == 902 || result.code == 903) {
auback = 1;
log(`AU错误,可能是获取失败,请更换到环境变量或配置文件重试`);
msg += `\nAU错误,可能是获取失败,请更换到环境变量或配置文件重试`;
}
if (auback != 1 && result.code == 0) {
log(`获取任务列表成功`);
for (let i = 0; i < 10; i++) {
if (i == 0) {
helpTaskId = back.data[i].taskId;
}
taskType = back.data[i].taskType;
taskTypeArr[i] = taskType;
taskId = back.data[i].taskId;
taskIdArr[i] = taskId;
if (back.data[i].completeTimes != back.data[i].retryTimes) {
taskBack[i] = 1;
}
}
}
} catch (e) {
log(e);
} finally {
resolve();
}
},
timeout
);
});
}
/**
* 获取植物详情
*/
function getPlant(num) {
let url = {
url: `https://api.xiaoyisz.com/qiehuang/ga/plant/info?userId=-1&${getBody()}`,
headers: {
Host: "api.xiaoyisz.com",
authorization: `${tyau}`,
"user-agent": `${ua}`,
"content-type": "application/json",
},
};
return new Promise((resolve) => {
if (debug) {
log(
`\n【debug】=============== 这是 获取植物详情 请求 url ===============`
);
log(JSON.stringify(url));
}
$.get(url, async (error, response, data) => {
try {
if (debug) {
log(
`\n\n【debug】===============这是 获取植物详情 返回data==============`
);
log(data);
}
let result = JSON.parse(data);
let back = eval(result);
if (result.code == 904) {
refreshAu();
}
if (result.data.stage == -1) {
await $.wait(2 * 1000);
getNewPlant();
}
if (result.code == 0) {
log(`获取植物详情成功`);
tyPlantId = result.data.plantId;
progress =
+result.data.currentSunshineNum / result.data.needSunshineNum;
progress = progress * 100;
progress = progress.toFixed(2);
plantStage = +result.data.stage;
} else log(`获取植物详情失败`);
} catch (e) {
log(e);
} finally {
resolve();
}
});
});
}
/**
* 开始挑战
*/
function startCallenge(timeout = 2 * 1000) {
let url = {
url: `https://api.xiaoyisz.com/qiehuang/ga/challenge/start?${getBody()}`,
headers: {
Host: "api.xiaoyisz.com",
authorization: `${tyau}`,
"user-agent": `${ua}`,
"content-type": "application/json",
},
};
return new Promise((resolve) => {
if (debug) {
log(`\n【debug】=============== 这是 开始挑战 请求 url ===============`);
log(JSON.stringify(url));
}
$.get(
url,
async (error, response, data) => {
try {
if (debug) {
log(
`\n\n【debug】===============这是 开始挑战 返回data==============`
);
log(data);
}
let result = JSON.parse(data);
if (result.code == 904) {
refreshAu();
}
if (auback != 1 && result.code == 0) {
challengeId = result.data;
reportCallenge();
$.wait(2 * 1000);
} else if (result.code == 1000) {
log(`开始挑战失败,次数不足`);
}
} catch (e) {
log(e);
} finally {
resolve();
}
},
timeout
);
});
}
/**
* 上报挑战
*/
function reportCallenge(timeout = 2 * 1000) {
let url = {
url: `https://api.xiaoyisz.com/qiehuang/ga/challenge/report`,
headers: {
Host: "api.xiaoyisz.com",
authorization: `${tyau}`,
"user-agent": `${ua}`,
"Content-Type": "application/json",
},
body: `{"battleId":${challengeId},"result":1,"costMillisecond":${randomInt(
6500,
12000
)}}`,
};
return new Promise((resolve) => {
if (debug) {
log(`\n【debug】=============== 这是 上报挑战 请求 url ===============`);
log(JSON.stringify(url));
}
$.post(
url,
async (error, response, data) => {
try {
if (debug) {
log(
`\n\n【debug】===============这是 上报挑战 返回data==============`
);
log(data);
}
let result = JSON.parse(data);
let back = eval(result.data);
if (result.code == 904) {
refreshAu();
}
if (auback != 1 && result.code == 0) {
log(`挑战成功`);
startCallenge();
} else log("挑战次数不足");
} catch (e) {
log(e);
} finally {
resolve();
}
},
timeout
);
});
}
/**
* 开始冒险
*/
function startAdventure(timeout = 2 * 1000) {
let url = {
url: `https://api.xiaoyisz.com/qiehuang/ga/user/adventure/start?${getBody()}`,
headers: {
Host: "api.xiaoyisz.com",
authorization: `${tyau}`,
"user-agent": `${ua}`,
"content-type": "application/json",
},
};
return new Promise((resolve) => {
if (debug) {
log(`\n【debug】=============== 这是 开始冒险 请求 url ===============`);
log(JSON.stringify(url));
}
$.get(
url,
async (error, response, data) => {
try {
if (debug) {
log(
`\n\n【debug】===============这是 开始冒险 返回data==============`
);
log(data);
}
let result = JSON.parse(data);
if (result.code == 904) {
refreshAu();
}
if (result.code == 0) {
log("冒险开始成功");
} else if (result.code == 1000) {
log(`冒险开始失败,可能是上报异常或者当前已有冒险`);
} else log(`${result.message}`);
} catch (e) {
log(e);
} finally {
resolve();
}
},
timeout
);
});
}
/**
* 查询冒险
*/
function queryAdventure(timeout = 2 * 1000) {
let url = {
url: `https://api.xiaoyisz.com/qiehuang/ga/user/adventure/info?userId=-1&type=2&${getBody()}`,
headers: {
Host: "api.xiaoyisz.com",
authorization: `${tyau}`,
"user-agent": `${ua}`,
"content-type": "application/json",
},
};
return new Promise((resolve) => {
if (debug) {
log(`\n【debug】=============== 这是 查询冒险 请求 url ===============`);
log(JSON.stringify(url));
}
$.get(
url,
async (error, response, data) => {
try {
if (debug) {
log(
`\n\n【debug】===============这是 查询冒险 返回data==============`
);
log(data);
}
let result = JSON.parse(data);
if (result.code == 904) {
refreshAu();
}
if (result.code == 0) {
adventureId = result.data.adventureId;
if (timestampS() >= result.data.endTime) {
reportAdventure();
} else {
let sleepTime = +result.data.endTime - timestampS();
if (sleepTime <= 60) {
log(`距离冒险结束小于一分钟,等待${sleepTime}秒后收取冒险奖励`);
await sleep(sleepTime * 1000);
reportAdventure();
} else
log(
`距离冒险结束还有:${parseInt(
sleepTime / 3600
)}小时${parseInt((sleepTime % 3600) / 60)}分钟${parseInt(
sleepTime % 60
)}秒,大于一分钟,不进行等待`
);
}
} else log("查询上一次冒险失败,可能是未进行");
} catch (e) {
log(e);
} finally {
resolve();
}
},
timeout
);
});
}
/**
* 上报冒险
*/
function reportAdventure(timeout = 2 * 1000) {
let url = {
url: `https://api.xiaoyisz.com/qiehuang/ga/user/adventure/drawPrize?adventureId=${adventureId}&${getBody()}`,
headers: {
Host: "api.xiaoyisz.com",
authorization: `${tyau}`,
"user-agent": `${ua}`,
"Content-Type": "application/json",
},
};
return new Promise((resolve) => {
if (debug) {
log(`\n【debug】=============== 这是 上报冒险 请求 url ===============`);
log(JSON.stringify(url));
}
$.get(
url,
async (error, response, data) => {
try {
if (debug) {
log(
`\n\n【debug】===============这是 上报冒险 返回data==============`
);
log(data);
}
let result = JSON.parse(data);
let back = eval(result.data);
if (result.code == 904) {
refreshAu();
}
if (result.code == 0) {
log(`冒险收取成功`);
} else if (result.code == 500) {
log(`当前无可收取的冒险`);
} else if (result.code == 1000) {
log(`冒险已收取`);
} else log("冒险未到时间");
} catch (e) {
log(e);
} finally {
resolve();
}
},
timeout
);
});
}
/**
* 洒阳光
*/
function giveSunshine(timeout = 2 * 1000) {
let url = {
url: `https://api.xiaoyisz.com/qiehuang/ga/plant/batchgiveSunshine?plantId=${tyPlantId}&${getBody()}`,
headers: {
Host: "api.xiaoyisz.com",
authorization: `${tyau}`,
"user-agent": `${ua}`,
"content-type": "application/json",
},
};
return new Promise((resolve) => {
if (debug) {
log(`\n【debug】=============== 这是 洒阳光 请求 url ===============`);
log(JSON.stringify(url));
}
$.get(
url,
async (error, response, data) => {
try {
if (debug) {
log(
`\n\n【debug】===============这是 洒阳光 返回data==============`
);
log(data);
}
let result = JSON.parse(data);
let back = eval(result.data);
if (result.code == 904) {
refreshAu();
}
if (result.message == "已达到收获阶段") {
log("【开始收取植物】");
$.wait(2 * 1000);
getHarvest();
} else if (result.message == "plantId错误") {
log(`plantId错误,可能是运行的bug,不用管`);
} else if (result.message == "只能给自己批量洒阳光") {
log("只能给自己批量洒阳光");
} else if (result.message == "阳光不足") {
log("阳光不足");
giveSunshineBack = 0;
} else if (result.message != "阳光不足") {
log("洒阳光成功");
if (back.currentSunshineNum == back.needSunshineNum) {
$.wait(3 * 1000);
upgrade();
}
giveSunshineBack = 1;
}
} catch (e) {
log(e);
} finally {
resolve();
}
},
timeout
);
});
}
/**
* 浇水
*/
function upgrade(timeout = 2 * 1000) {
let url = {
url: `https://api.xiaoyisz.com/qiehuang/ga/plant/upgrade?plantId=${tyPlantId}&${getBody()}`,
headers: {
Host: "api.xiaoyisz.com",
authorization: `${tyau}`,
"user-agent": `${ua}`,
"content-type": "application/json",
},
};
return new Promise((resolve) => {
if (debug) {
log(`\n【debug】=============== 这是 浇水 请求 url ===============`);
log(JSON.stringify(url));
}
$.get(
url,
async (error, response, data) => {
try {
if (debug) {
log(`\n\n【debug】===============这是 浇水 返回data==============`);
log(data);