@@ -60,9 +60,15 @@ def snow_launch(self):
6060 if name == "snow_launcher.exe" :
6161 env .soft .set_path (_path )
6262 env .soft .set_hwnd_find (1 , "wailsWindow" , "尘白禁区启动器" )
63+ _value = env .soft .run (fls = False )
64+ _laucher = 1
65+ env .soft .compile_resolution = (1280 , 748 )
6366 elif name == "SeasunGame.exe" :
6467 env .soft .set_path (_path )
6568 env .soft .set_hwnd_find (1 , "Qt5159QWindowIcon" , "西山居启动器-尘白禁区" )
69+ _value = env .soft .run (fls = False )
70+ _laucher = 2
71+ env .soft .compile_resolution = (1280 , 768 )
6672 else :
6773 self .indicate ("尘白禁区,无效启动路径" )
6874 raise ValueError ("尘白禁区:无效启动路径" )
@@ -71,8 +77,6 @@ def snow_launch(self):
7177 raise ValueError ("尘白禁区:无效启动路径" )
7278 # 启动游戏
7379 for u in range (2 ):
74- _value = env .soft .run (fls = False )
75- env .soft .compile_resolution = (1280 , 749 )
7680 # env.soft.get_window_information(False)
7781 env .mode (3 )
7882 if _value == 1 :
@@ -88,7 +92,7 @@ def snow_launch(self):
8892 env .soft .foreground ()
8993 wait (1000 )
9094
91- if self .task ["预下载" ]:
95+ if self .task ["预下载" ] and _laucher == 1 :
9296 _value = ocr ((781 , 585 , 950 , 734 ))
9397 if "下" in _value :
9498 click_change ((879 , 668 ), (559 , 317 , 713 , 391 ))
@@ -98,7 +102,7 @@ def snow_launch(self):
98102 wait (500 )
99103 else :
100104 self .indicate ("暂无预下载" )
101- if self .lauch_prepare ():
105+ if self .lauch_prepare (_laucher ):
102106 for p in range (10 ): # 0, "UnrealWindow", "尘白禁区"
103107 _h = find_hwnd ((0 , "UnrealWindow" , "尘白禁区" ))
104108 if _h :
@@ -120,43 +124,95 @@ def snow_launch(self):
120124 # wait(500)
121125 # click_text("开始游戏", (1004, 646, 1151, 701))
122126 # wait(500)
123- raise RuntimeError ("尘白禁区:启动超时" )
127+ env .soft .kill ()
128+ env .soft .run (fls = False )
129+ # raise RuntimeError("尘白禁区:启动超时")
124130 raise RuntimeError ("尘白禁区:启动异常" )
125131
126- def lauch_prepare (self ):
127- for i in range (120 ):
128- if find_hwnd ((0 , "UnrealWindow" , "尘白禁区" )):
129- return True
130- _value = ocr ((1004 , 646 , 1151 , 701 ))
131- if "开始游戏" in _value :
132- click_change ((1073 , 673 ), (1004 , 646 , 1151 , 701 ))
133- wait (5000 )
134- return True
135- elif "获取更新" in _value :
136- if self .task ["更新" ]:
137- click_change ((1073 , 673 ), (718 , 476 , 821 , 536 ))
138- click_change ((750 , 499 ), (718 , 476 , 821 , 536 ))
132+ def lauch_prepare (self , _laucher ):
133+ if _laucher == 1 :
134+ error = 0
135+ for i in range (120 ):
136+ if find_hwnd ((0 , "UnrealWindow" , "尘白禁区" )):
137+ return True
138+ _value = ocr ((1004 , 646 , 1151 , 701 ))[0 ]
139+ if "开始游戏" in _value :
140+ click_change ((1073 , 673 ), (1004 , 646 , 1151 , 701 ))
141+ wait (5000 )
142+ return True
143+ elif "获取更新" in _value :
144+ if self .task ["更新" ]:
145+ click_change ((1073 , 673 ), (718 , 476 , 821 , 536 ))
146+ click_change ((750 , 499 ), (718 , 476 , 821 , 536 ))
147+ error = 0
148+ else :
149+ self .indicate ("尘白禁区:需要更新,当前未勾选自动更新,终止任务" )
150+ raise RuntimeError ("尘白禁区:需要更新,当前未勾选自动更新,终止任务" )
151+ elif "检查更新" in _value :
152+ for t in range (180 ):
153+ _v = ocr ((1004 , 646 , 1151 , 701 ))
154+ if "检查更新" in _v :
155+ wait (2000 )
156+ else :
157+ break
158+ # _value1 = ocr((578, 465, 749, 549), sc)
159+ # _value2 = ocr((1004, 646, 1151, 701), sc)
160+ # del sc
161+ # if "确定" in _value1:
162+ # click_change((639, 499), (578, 465, 749, 549))
163+ else :
164+ raise RuntimeError ("尘白禁区:更新超时" )
165+ elif "更新中" in _value :
166+ pos = wait_text ("开始游戏" , (1004 , 646 , 1151 , 701 ), (2000 , 100 ))
167+ click_change (pos , (1004 , 646 , 1151 , 701 ))
168+ wait (5000 )
169+ return True
139170 else :
140- self .indicate ("尘白禁区:需要更新,当前未勾选自动更新,终止任务" )
141- raise RuntimeError ("尘白禁区:需要更新,当前未勾选自动更新,终止任务" )
142- elif "检查更新" in _value :
143- for t in range (180 ):
144- _value = ocr ((578 , 465 , 749 , 549 ))
145- if "确定" in _value :
146- click_change ((639 , 499 ), (578 , 465 , 749 , 549 ))
147- return False
171+ error += 1
172+ if error >= 5 :
173+ print (_value )
174+ print (env .soft .frame , env .soft .zoom )
175+ print (screenshot ((1004 , 646 , 1151 , 701 )))
176+ raise RuntimeError ("尘白禁区:未知错误" )
177+ wait (2000 )
178+ return False
179+ elif _laucher == 2 :
180+ error = 0
181+ for i in range (120 ):
182+ if find_hwnd ((0 , "UnrealWindow" , "尘白禁区" )):
183+ return True
184+ _value = ocr ((966 , 693 , 1200 , 750 ))[0 ]
185+ if "开始游戏" in _value :
186+ click_change ((1087 , 720 ), (966 , 693 , 1200 , 750 ))
187+ wait (5000 )
188+ return True
189+ elif "更新" in _value :
190+ if self .task ["更新" ]:
191+ click_change ((1087 , 720 ), (966 , 693 , 1200 , 750 ))
192+ for t in range (180 ):
193+ _v = ocr ((966 , 693 , 1200 , 750 ))
194+ if "正在更新" in _v :
195+ wait (2000 )
196+ else :
197+ break
198+ # _value1 = ocr((578, 465, 749, 549), sc)
199+ # _value2 = ocr((1004, 646, 1151, 701), sc)
200+ # del sc
201+ # if "确定" in _value1:
202+ # click_change((639, 499), (578, 465, 749, 549))
203+ else :
204+ raise RuntimeError ("尘白禁区:更新超时" )
205+
206+ else :
207+ self .indicate ("尘白禁区:需要更新,当前未勾选自动更新,终止任务" )
208+ raise RuntimeError ("尘白禁区:需要更新,当前未勾选自动更新,终止任务" )
209+ else :
210+ error += 1
211+ if error >= 5 :
212+ print (env .soft .frame , env .soft .zoom )
213+ print (screenshot ((1004 , 646 , 1151 , 701 )))
214+ raise RuntimeError ("尘白禁区:未知错误" )
148215 wait (2000 )
149- raise RuntimeError ("尘白禁区:更新超时" )
150- elif "更新中" in _value :
151- pos = wait_text ("开始游戏" , (1004 , 646 , 1151 , 701 ), (2000 , 100 ))
152- click_change (pos , (1004 , 646 , 1151 , 701 ))
153- wait (5000 )
154- return True
155- else :
156- print (env .soft .frame , env .soft .zoom )
157- print (screenshot ((1004 , 646 , 1151 , 701 )))
158- raise RuntimeError ("尘白禁区:未知错误" )
159- return False
160216
161217 def snow_log (self , second : int ):
162218 # 登录&进入游戏
0 commit comments