From 3654d8645c369b45ddb296e75345d0724fd82402 Mon Sep 17 00:00:00 2001 From: sui-feng-cb <2518179942@qq.com> Date: Sun, 8 Feb 2026 22:10:07 +0800 Subject: [PATCH] Fix: wait until ui appear in project_receive --- assets/cn/island/ROLE_SELECT_TITLE_AREA.png | Bin 0 -> 9273 bytes module/island/assets.py | 1 + module/island/project.py | 17 ++++++++++++----- 3 files changed, 13 insertions(+), 5 deletions(-) create mode 100644 assets/cn/island/ROLE_SELECT_TITLE_AREA.png diff --git a/assets/cn/island/ROLE_SELECT_TITLE_AREA.png b/assets/cn/island/ROLE_SELECT_TITLE_AREA.png new file mode 100644 index 0000000000000000000000000000000000000000..e7faca218976698fe53fadc3829e1c11a9444298 GIT binary patch literal 9273 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 literal 0 HcmV?d00001 diff --git a/module/island/assets.py b/module/island/assets.py index 09ebb292d..49e6d2c51 100644 --- a/module/island/assets.py +++ b/module/island/assets.py @@ -41,6 +41,7 @@ PROJECT_WILLIAM_D_PORTER_CHECK = Button(area={'cn': (1152, 176, 1218, 220), 'en' PROJECT_YING_SWEI_CHECK = Button(area={'cn': (1161, 177, 1217, 210), 'en': (1161, 177, 1217, 210), 'jp': (1161, 177, 1217, 210), 'tw': (1161, 177, 1217, 210)}, color={'cn': (171, 157, 165), 'en': (171, 157, 165), 'jp': (171, 157, 165), 'tw': (171, 157, 165)}, button={'cn': (1161, 177, 1217, 210), 'en': (1161, 177, 1217, 210), 'jp': (1161, 177, 1217, 210), 'tw': (1161, 177, 1217, 210)}, file={'cn': './assets/cn/island/PROJECT_YING_SWEI_CHECK.png', 'en': './assets/cn/island/PROJECT_YING_SWEI_CHECK.png', 'jp': './assets/cn/island/PROJECT_YING_SWEI_CHECK.png', 'tw': './assets/cn/island/PROJECT_YING_SWEI_CHECK.png'}) ROLE_SELECT_CONFIRM = Button(area={'cn': (1068, 597, 1118, 621), 'en': (1068, 597, 1118, 621), 'jp': (1068, 597, 1118, 621), 'tw': (1068, 597, 1118, 621)}, color={'cn': (109, 206, 255), 'en': (125, 211, 255), 'jp': (109, 206, 255), 'tw': (109, 206, 255)}, button={'cn': (948, 585, 1239, 632), 'en': (1068, 597, 1118, 621), 'jp': (948, 585, 1239, 632), 'tw': (948, 585, 1239, 632)}, file={'cn': './assets/cn/island/ROLE_SELECT_CONFIRM.png', 'en': './assets/en/island/ROLE_SELECT_CONFIRM.png', 'jp': './assets/cn/island/ROLE_SELECT_CONFIRM.png', 'tw': './assets/cn/island/ROLE_SELECT_CONFIRM.png'}) ROLE_SELECT_ENTER = Button(area={'cn': (579, 314, 700, 350), 'en': (578, 313, 701, 351), 'jp': (579, 314, 700, 350), 'tw': (579, 314, 700, 350)}, color={'cn': (239, 238, 237), 'en': (237, 237, 236), 'jp': (239, 238, 237), 'tw': (239, 238, 237)}, button={'cn': (534, 206, 747, 483), 'en': (578, 313, 701, 351), 'jp': (534, 206, 747, 483), 'tw': (534, 206, 747, 483)}, file={'cn': './assets/cn/island/ROLE_SELECT_ENTER.png', 'en': './assets/en/island/ROLE_SELECT_ENTER.png', 'jp': './assets/cn/island/ROLE_SELECT_ENTER.png', 'tw': './assets/cn/island/ROLE_SELECT_ENTER.png'}) +ROLE_SELECT_TITLE_AREA = Button(area={'cn': (518, 147, 763, 200), 'en': (518, 147, 763, 200), 'jp': (518, 147, 763, 200), 'tw': (518, 147, 763, 200)}, color={'cn': (80, 197, 255), 'en': (80, 197, 255), 'jp': (80, 197, 255), 'tw': (80, 197, 255)}, button={'cn': (518, 147, 763, 200), 'en': (518, 147, 763, 200), 'jp': (518, 147, 763, 200), 'tw': (518, 147, 763, 200)}, file={'cn': './assets/cn/island/ROLE_SELECT_TITLE_AREA.png', 'en': './assets/cn/island/ROLE_SELECT_TITLE_AREA.png', 'jp': './assets/cn/island/ROLE_SELECT_TITLE_AREA.png', 'tw': './assets/cn/island/ROLE_SELECT_TITLE_AREA.png'}) ROLE_SORTING_CLICK = Button(area={'cn': (109, 606, 272, 644), 'en': (109, 606, 272, 644), 'jp': (109, 606, 272, 644), 'tw': (109, 606, 272, 644)}, color={'cn': (101, 102, 101), 'en': (101, 102, 101), 'jp': (101, 102, 101), 'tw': (101, 102, 101)}, button={'cn': (109, 606, 272, 644), 'en': (109, 606, 272, 644), 'jp': (109, 606, 272, 644), 'tw': (109, 606, 272, 644)}, file={'cn': './assets/cn/island/ROLE_SORTING_CLICK.png', 'en': './assets/cn/island/ROLE_SORTING_CLICK.png', 'jp': './assets/cn/island/ROLE_SORTING_CLICK.png', 'tw': './assets/cn/island/ROLE_SORTING_CLICK.png'}) ROLE_SORT_ASC = Button(area={'cn': (143, 619, 150, 623), 'en': (143, 619, 150, 623), 'jp': (143, 619, 150, 623), 'tw': (143, 619, 150, 623)}, color={'cn': (244, 244, 244), 'en': (244, 244, 244), 'jp': (244, 244, 244), 'tw': (244, 244, 244)}, button={'cn': (143, 619, 150, 623), 'en': (143, 619, 150, 623), 'jp': (143, 619, 150, 623), 'tw': (143, 619, 150, 623)}, file={'cn': './assets/cn/island/ROLE_SORT_ASC.png', 'en': './assets/cn/island/ROLE_SORT_ASC.png', 'jp': './assets/cn/island/ROLE_SORT_ASC.png', 'tw': './assets/cn/island/ROLE_SORT_ASC.png'}) ROLE_SORT_DESC = Button(area={'cn': (143, 627, 150, 631), 'en': (143, 627, 150, 631), 'jp': (143, 627, 150, 631), 'tw': (143, 627, 150, 631)}, color={'cn': (236, 236, 236), 'en': (236, 236, 236), 'jp': (236, 236, 236), 'tw': (236, 236, 236)}, button={'cn': (143, 627, 150, 631), 'en': (143, 627, 150, 631), 'jp': (143, 627, 150, 631), 'tw': (143, 627, 150, 631)}, file={'cn': './assets/cn/island/ROLE_SORT_DESC.png', 'en': './assets/cn/island/ROLE_SORT_DESC.png', 'jp': './assets/cn/island/ROLE_SORT_DESC.png', 'tw': './assets/cn/island/ROLE_SORT_DESC.png'}) diff --git a/module/island/project.py b/module/island/project.py index d6b16ced3..61d418094 100644 --- a/module/island/project.py +++ b/module/island/project.py @@ -345,6 +345,9 @@ class IslandProjectRun(IslandUI): for button in TEMPLATE_PROJECT.match_multi(image_gray)]) return projects.select(valid=True) + def is_in_enter_page(self): + return self.image_color_count(ROLE_SELECT_TITLE_AREA, color=(57, 189, 255), threshold=221, count=8000) + def project_receive(self, button): """ Receive a project and enter role select page. @@ -359,9 +362,9 @@ class IslandProjectRun(IslandUI): self.interval_clear([ISLAND_MANAGEMENT_CHECK, PROJECT_COMPLETE, GET_ITEMS_ISLAND, ROLE_SELECT_ENTER]) success = False - enter = True click_timer = Timer(5, count=10).start() for _ in self.loop(): + # UI additional if self.island_in_management(interval=5): self.device.click(button) click_timer.reset() @@ -375,33 +378,37 @@ class IslandProjectRun(IslandUI): click_timer.reset() continue - if enter and self.appear_then_click(ROLE_SELECT_ENTER, threshold=10, interval=2): + # Enter page + if self.is_in_enter_page() and \ + self.appear_then_click(ROLE_SELECT_ENTER, threshold=10, interval=2): success = True self.interval_clear(GET_ITEMS_ISLAND) click_timer.reset() continue if self.appear_then_click(PROJECT_COMPLETE, offset=(20, 20), interval=1): + self.device.sleep(0.1) success = True - enter = False + # enter = False self.interval_clear(GET_ITEMS_ISLAND) self.interval_reset(ROLE_SELECT_ENTER) click_timer.reset() continue if self.handle_get_items(): - enter = True + # enter = True self.interval_clear(ROLE_SELECT_ENTER) click_timer.reset() continue # handle island level up - if not enter and click_timer.reached(): + if click_timer.reached(): self.device.click(GET_ITEMS_ISLAND) self.device.sleep(0.3) click_timer.reset() continue + # End if self.appear(ROLE_SELECT_CONFIRM, offset=(20, 20)): break