原神打卡

前几天写了个打卡脚本,今天又新建了原神每日签到和云·原神的签到活动

签到主要的问题是要确定点击的位置,如图

米游社会展示八天的奖励,要确定点击何处只要确定那一天要点就行了,发现可点击的那一天的左上角会出现领的标志,那么只要打开签到页面,去查找这种颜色就行了,如果没打卡的话就能查到,打卡后就查不到改颜色了(测试,该颜色页面唯一),查到这种颜色位置后就点击就行了,确认是否打上可以再去查找一遍,找不到证明打卡成功;下一步可改进的是想通过邮箱或则记事本统计结果以供查看

以下是代码,参考的话需要修改自行填写解锁密码,并修改对应分辨率下的坐标

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
//米游社打卡
var pwd = [x, x, x, x];//解锁密码
auto(); // 自动打开无障碍服务
unlock();
ScrPermission();//拿到截图权限
sleep(3e3);
closeApp();//清掉所有后台
app.launchApp("米游社");
sleep(8e3);
click(325,382);
sleep(5e3);
console.log("签到福利");

var img = captureScreen();
var point = findColorEquals(captureScreen(), "#ffffcb2a");
// #fff0e7de(白色已打)#ffffcb2a(可打)#fff2eadf(未打)
if(point){
console.log("x = " + point.x + ", y = " + point.y);
click(point.x,point.y);
}else{
console.log("没有找到");
}

//检测是否打卡成功
closeApp();//清掉后台
app.launchApp("米游社");
sleep(8e3);
click(325,382);
sleep(5e3);
var isDetected = findColorEquals(captureScreen(), "#ffffcb2a");
console.log("isDetected="+isDetected);
if(isDetected==null){
console.log(" 打卡成功");
}else{
console.log("打卡失败");
}

//云原神15分钟签到,大约耗时20s
closeApp();//清掉后台
app.launchApp("云·原神");
sleep(5000);
click(1371,715);
console.log("云原神已打卡");
sleep(5000);
closeApp();//清掉后台
lock();

function unlock() {
if (!device.isScreenOn()) {//息屏状态将屏幕唤醒
device.wakeUp();//唤醒设备
sleep(1000); // 等待屏幕亮起
//miui锁屏滑动不能唤出密码输入 通过下拉通知栏点击时间进入密码解锁
swipe(500, 30, 500, 1000, 300);
sleep(5e2);
//点击时间
click(100, 120);
//解锁
desc(pwd[0]).findOne().click();
desc(pwd[1]).findOne().click();
desc(pwd[2]).findOne().click();
desc(pwd[3]).findOne().click();
//等待解锁完成,返回并退出
back();
}
}

function closeApp() {
home();
sleep(1000);
swipe(500, 2230, 500, 300, 1000);//上滑
sleep(5e2);
click(540, 2072);
sleep(5e2);
}
function ScrPermission() {
//新建一个线程,同意截图权限
threads.start(function () {
toast("新建线程");
sleep(3e3);
click(785, 2119);
})
if (!requestScreenCapture()) {
toast("请求截图失败");
exit();
}
}

function lock(){
swipe(500, 10, 500, 1000, 500);
click(933,436);
}