From 564bdd5f02f6a9acbc4a00a8e3001fb8a1af242c Mon Sep 17 00:00:00 2001 From: veadex <65024689+veadex@users.noreply.github.com> Date: Thu, 2 May 2024 15:50:54 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=BD=91=E7=BB=9C=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E7=9A=84=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 修改网络问题的处理 2. 修改map_page识别的图片 --- autowsgr/__init__.py | 2 +- autowsgr/controller/emulator.py | 2 +- autowsgr/controller/run_timer.py | 31 +++++++++--------- .../data/images/error_image/network_retry.PNG | Bin 0 -> 2026 bytes autowsgr/fight/event/event_2024_0419.py | 7 ++-- autowsgr/utils/io.py | 5 ++- 6 files changed, 27 insertions(+), 20 deletions(-) create mode 100644 autowsgr/data/images/error_image/network_retry.PNG diff --git a/autowsgr/__init__.py b/autowsgr/__init__.py index 4a22f214..86f9d3bc 100644 --- a/autowsgr/__init__.py +++ b/autowsgr/__init__.py @@ -1 +1 @@ -__version__ = "0.2.2.29" +__version__ = "0.2.2.30" diff --git a/autowsgr/controller/emulator.py b/autowsgr/controller/emulator.py index 24c936d3..2457ab5b 100644 --- a/autowsgr/controller/emulator.py +++ b/autowsgr/controller/emulator.py @@ -315,7 +315,7 @@ def click_image(self, image, must_click=False, timeout=0, delay=0.5): """ pos = self.wait_images_position(image, gap=0.03, timeout=timeout) if pos is None: - if must_click == False: + if not must_click: return False else: raise ImageNotFoundErr(f"Target image not found:{str(image.filepath)}") diff --git a/autowsgr/controller/run_timer.py b/autowsgr/controller/run_timer.py index 8f8cf217..356fedc2 100644 --- a/autowsgr/controller/run_timer.py +++ b/autowsgr/controller/run_timer.py @@ -212,25 +212,26 @@ def process_bad_network(self, extra_info="", timeout=10): """ start_time = time.time() while self.is_bad_network(timeout): + self.logger.log_image(self.update_screen, name="bad_network", ignore_existed_image=True) self.logger.error(f"bad network: {extra_info}") - while True: - if time.time() - start_time >= 180: - raise TimeoutError("Process bad network timeout") - if self.Windows.check_network() != False: - break - - start_time2 = time.time() - while self.image_exist([IMG.symbol_image[10]] + [IMG.error_image["bad_network"]]): + + # 等待网络恢复 + + if not self.Windows.wait_network(): + raise NetworkErr("can't connect to www.moefantasy.com") + + # 处理网络问题 + while self.wait_images([IMG.symbol_image[10]] + [IMG.error_image["bad_network"]], timeout=3): time.sleep(0.5) - if time.time() - start_time2 >= 60: - break - if self.image_exist(IMG.error_image["bad_network"]): - self.Android.click(476, 298, delay=2) - if time.time() - start_time2 < 60: - self.logger.debug("ok network problem solved, at", time.time()) - return True + if self.image_exist(IMG.error_image["bad_network"]): + self.click_image(IMG.error_image["network_retry"]) + if not self.wait_images([IMG.symbol_image[10]] + [IMG.error_image["bad_network"]], timeout=5): + self.logger.debug("ok network problem solved") + return True + if time.time() - start_time > 1800: + raise TimeoutError("process bad network timeout") return False # ========================= 维护当前所在游戏界面 ========================= diff --git a/autowsgr/data/images/error_image/network_retry.PNG b/autowsgr/data/images/error_image/network_retry.PNG new file mode 100644 index 0000000000000000000000000000000000000000..af2bf787d16563a1c7c70e20b540de751086e7a3 GIT binary patch literal 2026 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGmbN~PnbOGLGA9w%&2Y*RKK~!i%?OAJV zTjd#kjvd>vW5;&Vv`JItUevWv+EIR*c4|f*{DIi#~*CGl8M)N~m#Rw@N6eFa-U^G3{S&WbZ zf(1fHQ3^(k#@}|xNA0j0fWu}%X^8;`rPM~@wY<~{zsrIOmt3vtT3Ker3m=T)qtD_< z=e@n?S-04QL)~#ilM~t1*>TSrAF9hs@FDed1QSZ{p&sg-&}R~(K{FxC7dr5hwSJV@ zEwHkpSuKV#s$BU8JHOaTOzu?(JJ1!y&t3^2l9*|9G4gkpd+=dz9FOiF!eAt=oNqR~ zc*jC4t8rlOsR-)*Hn<%Y{9;!CC;P{tixZkao~%!TkrbNe+0am7Q{L)#THqo%<)s!Z zt#;s|`F3;-Ch#_m_T1r7{Ndk&xNm1ao;)y&cuL5asV^{=QhGKlbK}?7SJLY(F!J`8 zBIF7Qf=)i8vC@Y7ulB>sXaBF?{J+KOTmRGF@RJs-X>?+d&xX<11lj@#oT6u*;Fdy=+38%`pTUo5hS({P)f?L~wHnvm$a^Ku{RNY-Clhw$KyRd6%v^08!rLq&+B zwX=MNIDn9T|Em{RS7M6zxrR}%k&vH%t5Ox|S@=+7tfQBg(6e`cI);&GI(ug(#!1xg z_XZU)xsU=asqfrK5+6L!q@MFd@q>T%VgKnUQW^@0QNO)S8zBokB`PJ|yS`F&P`S)h z^82N=PF3g+^+Z()%YV_w_60EoC!^$EnH3X{b ziDz3_H`j$ovF&wFbmKyJ+HeQ&Yl6=?9SLuI62|u3{oFfS3Q=-tsgrVgOf9g zM|DC(j-I`3W7tg+0whUvO5rwmtJ-75tt{XhSCmi5%@?~7jx*|b-^*D?2#+PwO41T3 zIeO<(EWG42U3$dC3Z{?S>9LzG^I`pBx2hk4Z!_g=WO|YH)r~Hd=1k=3*>P|Pe|jf~ z*Oc@?0wBZ9xY8^oXY z2l2|$Q6#fD{l&w>c$|io^*x`4k;<;;>**ayup`T~%$XgTJ)w9Sovah3?A&U~ZK?t2 z;oLFA6v^8vJ=#ffzCIno3@xv&TQa!3!HK(8`{})Y+`y#yB z$b3F=K8D}D6;Px|7JR!cj6d!Rpf8lJyH;di|@8a*xH70qA!jC z=Kmn4?GU>s`V2RKg+8q&dRaf!A7_+=SSv!z_pH2mx~4>s{Tyba(82m7$1I|AfO@)v z33PD)H9K4B>ZF#a9?jIDLA0l=6^lw~@DzGEn8^TWiWp73B+*Y#&b?>K6-{MoaLm`4 z3mNv-HkYaMF;kxc_YH)Tid6ZDbab-sfotcZ$}OGROr3KjR?ph4+Kx^Hx3Bc!wiP~n zt-6%Ple4Rg)YCv^_Dr#z=Pp6>yy<(U$nYqUV%8cHH!Um2QtB&X=XO<#8!gWPs74?e)$o@^2`PJE(%qEh~<{HMrZO7;SsX6#YgG(7Nw{sE* z0h?F()d}yDtw9wf`7bJS%fHwrn?+vWWZ{18M@?8lovJ>N(Z10nj`qf|h7l!miX2MX z_`F@mGmV2d#Bel?p=b(=s~ouN`Lk$kAJa3b*K9kcg%FvXe|%LHyflz_Z2s(4>$TzP zi!u}Tu45xK*5{8-CRjouoEvr=2&y_G4!v=u9}nNMP|Y=BPodHM=2lm zMseh9R88dbIb`nGT&IW>0%B~1uX(&(k*Fa+NXW1B5F!THckg0lq}d>yl(eIgvZQUz zje>k^c&Za;h7!tv%WIwZ$CgI42jckKe}XuCCaO}>_n3-KUWlW6a9kZGO3NFjULor# z60%OZH%86NM~1O&XP+WQ2S~`rS_qMU{B5isW^4Op@H$hEkS356x8Y(h+SrYCunr_r zlPbz8%StfHD4NaCQolB@s!;#&^~`(0srFb0jGA8_)%0l0I0*bQ5F_UrP`qB&zG%vk zD6HndXyJ$RqtmUh4j9!M2`S?9_-b6Vh_4JJL;|EJg&~vpFL}Z) None: self.timer.Android.click(*entrance_position[int(self.from_alpha)]) if not self.timer.click_image(self.event_image[1], timeout=10): - self.timer.logger.error("进入战斗准备页面失败") + self.timer.logger.error("进入战斗准备页面失败,重新尝试进入战斗准备页面") + self.timer.Android.click(*NODE_POSITION[self.map]) + self.timer.click_image(self.event_image[1], timeout=10) + try: self.timer.wait_pages("fight_prepare_page", after_wait=0.15) except Exception as e: @@ -96,6 +99,6 @@ class EventFightInfo20240419(Event, NormalFightInfo): def __init__(self, timer: Timer, chapter_id, map_id, event="20240419") -> None: NormalFightInfo.__init__(self, timer, chapter_id, map_id) Event.__init__(self, timer, event) - self.map_image = self.common_image["easy"] + self.common_image["hard"] + [self.event_image[1]] + self.map_image = self.common_image["easy"] + self.common_image["hard"] + [self.event_image[1]] + [self.event_image[2]] self.end_page = "unknown_page" self.state2image["map_page"] = [self.map_image, 5] diff --git a/autowsgr/utils/io.py b/autowsgr/utils/io.py index 3ba37a5c..110f5ed4 100644 --- a/autowsgr/utils/io.py +++ b/autowsgr/utils/io.py @@ -23,8 +23,11 @@ def all_in(elements, set): def yaml_to_dict(yaml_file): """将yaml文件转换为字典""" + # 处理yaml文件中的转义字符\ with open(yaml_file, "r", encoding="utf-8") as f: - return yaml.load(f, Loader=yaml.FullLoader) + content = f.read() + content = content.replace("\\", "\\\\") + return yaml.load(content, Loader=yaml.FullLoader) def dict_to_yaml(dict_data, yaml_file):