1
+ ( async function ( ) {
2
+
3
+ async function RequestToVisitSereniteaPot ( ) {
4
+ setGameMetrics ( 3840 , 2160 , 1.5 ) ;
5
+ await sleep ( 2000 ) ;
6
+ keyPress ( "VK_ESCAPE" ) ;
7
+ await sleep ( 2000 ) ;
8
+ click ( 1020 , 840 ) ;
9
+ await sleep ( 2000 ) ;
10
+
11
+ let y_avatar = 355 ; //好友头像按钮起始Y坐标
12
+ let y_request = 489 ; //申请造访按钮起始Y坐标
13
+ const x_avatar = 415 ;
14
+ const x_request = 920 ;
15
+ const avatar_increment = 250 ; //两按钮相隔坐标
16
+ const request_increment = 249 ; //两按钮相隔坐标
17
+ const request_fixed_value = 1118 ; //第四~七位好友申请造访按钮Y坐标
18
+ const total_clicks = 14 ;
19
+ let request_count = 0 ;
20
+
21
+ // 先申请造访首位好友的尘歌壶
22
+ log . info ( "正在申请造访第 1 位好友尘歌壶" ) ;
23
+ click ( x_avatar , y_avatar ) ;
24
+ await sleep ( 1000 ) ;
25
+ click ( x_request , y_request ) ;
26
+ await sleep ( 1000 ) ;
27
+
28
+ // 依次申请造访第二~七位好友的尘歌壶
29
+ for ( let i = 2 ; i < total_clicks ; i ++ ) {
30
+ if ( i % 2 === 0 ) {
31
+ // 偶数索引,递增 y_avatar
32
+ y_avatar += avatar_increment ;
33
+ log . info ( `正在申请造访第 ${ i / 2 + 1 } 位好友尘歌壶` ) ;
34
+ click ( x_avatar , y_avatar ) ;
35
+ await sleep ( 1000 ) ;
36
+ } else {
37
+ // 奇数索引,递增 y_request
38
+ if ( request_count < 3 ) {
39
+ // 前 3 次递增 249
40
+ y_request += request_increment ;
41
+ } else {
42
+ // 第四次及以后设为 1118
43
+ y_request = request_fixed_value ;
44
+ }
45
+ request_count ++ ;
46
+ click ( x_request , y_request ) ;
47
+ await sleep ( 1000 ) ;
48
+ }
49
+ }
50
+ log . info ( "等待界面响应" ) ;
51
+ await sleep ( 10000 ) ;
52
+ }
53
+
54
+ async function pageDown ( ) {
55
+ //暂无计划,还是联系一下好友开放尘歌壶吧
56
+ }
57
+
58
+ async function claimEncounterPointsRewards ( ) {
59
+ setGameMetrics ( 3840 , 2160 , 1.5 ) ;
60
+ log . info ( "正在打开冒险之证领取历练点奖励" ) ;
61
+ await sleep ( 2000 ) ;
62
+ keyPress ( "VK_ESCAPE" ) ;
63
+ await sleep ( 2000 ) ;
64
+ click ( 400 , 1650 ) ;
65
+ await sleep ( 2000 ) ;
66
+
67
+ setGameMetrics ( 3840 , 2160 , 2 ) ; //领历练点这小节是抄来的
68
+ click ( 580 , 680 ) ;
69
+ await sleep ( 1000 ) ;
70
+ click ( 3110 , 1508 ) ;
71
+ await sleep ( 1000 ) ;
72
+ click ( 3110 , 1508 ) ;
73
+ await sleep ( 1500 ) ;
74
+ keyPress ( "Escape" ) ;
75
+ log . info ( "已领取历练点奖励" ) ;
76
+ }
77
+
78
+ async function ReturnToBigWorld ( ) {
79
+ setGameMetrics ( 3840 , 2160 , 1.5 ) ;
80
+ log . info ( "正在返回大世界" ) ;
81
+ await sleep ( 2000 ) ;
82
+ keyPress ( "VK_ESCAPE" ) ;
83
+ await sleep ( 2000 ) ;
84
+ click ( 1330 , 1660 ) ;
85
+ await sleep ( 2000 ) ;
86
+ click ( 3300 , 2030 ) ;
87
+ await sleep ( 20000 ) ;
88
+ }
89
+
90
+ log . warn ( "注意:队伍中小于等于两人时,才会触发双倍奖励" ) ;
91
+ await sleep ( 1500 ) ;
92
+ log . warn ( "注意:队伍中小于等于两人时,才会触发双倍奖励" ) ;
93
+ await sleep ( 1500 ) ;
94
+ log . warn ( "注意:队伍中小于等于两人时,才会触发双倍奖励" ) ;
95
+ await sleep ( 1500 ) ;
96
+
97
+ if ( ! ! settings . partyName ) {
98
+ try {
99
+ log . info ( "正在传送回七天神像切换队伍" ) ;
100
+ await genshin . tp ( 2297.60 , - 824.45 ) ;
101
+ log . info ( "正在尝试切换至" + settings . partyName ) ;
102
+ await genshin . switchParty ( settings . partyName ) ;
103
+ } catch {
104
+ log . warn ( "队伍切换失败,可能处于联机模式或其他不可切换状态" ) ;
105
+ await genshin . returnMainUi ( ) ;
106
+ }
107
+ } else {
108
+ await genshin . returnMainUi ( ) ;
109
+ }
110
+ await RequestToVisitSereniteaPot ( ) ;
111
+ await claimEncounterPointsRewards ( ) ;
112
+ await sleep ( 1500 ) ;
113
+ await genshin . returnMainUi ( ) ;
114
+ await ReturnToBigWorld ( ) ;
115
+ } ) ( ) ;
0 commit comments