Skip to content

Commit

Permalink
Merge pull request #719 from LmeSzinc/master
Browse files Browse the repository at this point in the history
[pull] master from LmeSzinc:master
  • Loading branch information
pull[bot] authored Feb 20, 2025
2 parents 81fe004 + 477244f commit 7d15f87
Show file tree
Hide file tree
Showing 7 changed files with 82 additions and 30 deletions.
Binary file added assets/cn/meta_reward/SYNC_ENTER.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/cn/meta_reward/SYNC_REWARD_NOTICE.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/cn/meta_reward/SYNC_TAP.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion module/base/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -714,7 +714,7 @@ def get_bbox(image, threshold=0):
return x[0], y[0], x[-1] + 1, y[-1] + 1


def get_bbox_reversed(image, threshold=0):
def get_bbox_reversed(image, threshold=255):
"""
Similar to `get_bbox` but for black contents on white background.
Expand Down
3 changes: 2 additions & 1 deletion module/handler/info_handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,8 @@ def handle_urgent_commission(self, drop=None):
if not self.device.app_is_running():
logger.error('Detected hot fixes from game server, game died')
raise GameNotRunningError
if self.match_template_color(LOGIN_CHECK, offset=(30, 30)):
# Use template match without color match due to maintenance popup
if self.appear(LOGIN_CHECK, offset=(30, 30)):
logger.error('Account logged out, '
'probably because account kicked by server maintenance or another log in')
# Kill game, because game patches after maintenance can only be downloaded at game startup
Expand Down
3 changes: 3 additions & 0 deletions module/meta_reward/assets.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,6 @@
REWARD_CHECK = Button(area={'cn': (31, 486, 64, 543), 'en': (35, 487, 62, 541), 'jp': (31, 486, 64, 543), 'tw': (31, 486, 64, 543)}, color={'cn': (199, 164, 165), 'en': (203, 169, 170), 'jp': (206, 172, 174), 'tw': (199, 164, 165)}, button={'cn': (31, 486, 64, 543), 'en': (35, 487, 62, 541), 'jp': (31, 486, 64, 543), 'tw': (31, 486, 64, 543)}, file={'cn': './assets/cn/meta_reward/REWARD_CHECK.png', 'en': './assets/en/meta_reward/REWARD_CHECK.png', 'jp': './assets/jp/meta_reward/REWARD_CHECK.png', 'tw': './assets/cn/meta_reward/REWARD_CHECK.png'})
REWARD_ENTER = Button(area={'cn': (1109, 535, 1187, 554), 'en': (1106, 532, 1199, 544), 'jp': (1108, 535, 1188, 554), 'tw': (1109, 535, 1187, 554)}, color={'cn': (199, 195, 201), 'en': (213, 212, 217), 'jp': (215, 207, 214), 'tw': (199, 195, 201)}, button={'cn': (1109, 535, 1187, 554), 'en': (1106, 532, 1199, 544), 'jp': (1108, 535, 1188, 554), 'tw': (1109, 535, 1187, 554)}, file={'cn': './assets/cn/meta_reward/REWARD_ENTER.png', 'en': './assets/en/meta_reward/REWARD_ENTER.png', 'jp': './assets/jp/meta_reward/REWARD_ENTER.png', 'tw': './assets/cn/meta_reward/REWARD_ENTER.png'})
REWARD_RECEIVE = Button(area={'cn': (1031, 601, 1215, 638), 'en': (1067, 608, 1182, 633), 'jp': (1043, 604, 1203, 635), 'tw': (1031, 601, 1215, 638)}, color={'cn': (149, 62, 62), 'en': (164, 92, 93), 'jp': (150, 64, 64), 'tw': (149, 62, 62)}, button={'cn': (1031, 601, 1215, 638), 'en': (1067, 608, 1182, 633), 'jp': (1043, 604, 1203, 635), 'tw': (1031, 601, 1215, 638)}, file={'cn': './assets/cn/meta_reward/REWARD_RECEIVE.png', 'en': './assets/en/meta_reward/REWARD_RECEIVE.png', 'jp': './assets/jp/meta_reward/REWARD_RECEIVE.png', 'tw': './assets/cn/meta_reward/REWARD_RECEIVE.png'})
SYNC_ENTER = Button(area={'cn': (866, 351, 943, 370), 'en': (866, 351, 943, 370), 'jp': (866, 351, 943, 370), 'tw': (866, 351, 943, 370)}, color={'cn': (183, 175, 177), 'en': (183, 175, 177), 'jp': (183, 175, 177), 'tw': (183, 175, 177)}, button={'cn': (866, 351, 943, 370), 'en': (866, 351, 943, 370), 'jp': (866, 351, 943, 370), 'tw': (866, 351, 943, 370)}, file={'cn': './assets/cn/meta_reward/SYNC_ENTER.png', 'en': './assets/cn/meta_reward/SYNC_ENTER.png', 'jp': './assets/cn/meta_reward/SYNC_ENTER.png', 'tw': './assets/cn/meta_reward/SYNC_ENTER.png'})
SYNC_REWARD_NOTICE = Button(area={'cn': (977, 337, 981, 352), 'en': (977, 337, 981, 352), 'jp': (977, 337, 981, 352), 'tw': (977, 337, 981, 352)}, color={'cn': (250, 182, 57), 'en': (250, 182, 57), 'jp': (250, 182, 57), 'tw': (250, 182, 57)}, button={'cn': (977, 337, 981, 352), 'en': (977, 337, 981, 352), 'jp': (977, 337, 981, 352), 'tw': (977, 337, 981, 352)}, file={'cn': './assets/cn/meta_reward/SYNC_REWARD_NOTICE.png', 'en': './assets/cn/meta_reward/SYNC_REWARD_NOTICE.png', 'jp': './assets/cn/meta_reward/SYNC_REWARD_NOTICE.png', 'tw': './assets/cn/meta_reward/SYNC_REWARD_NOTICE.png'})
SYNC_TAP = Button(area={'cn': (581, 339, 707, 377), 'en': (581, 339, 707, 377), 'jp': (581, 339, 707, 377), 'tw': (581, 339, 707, 377)}, color={'cn': (168, 112, 111), 'en': (168, 112, 111), 'jp': (168, 112, 111), 'tw': (168, 112, 111)}, button={'cn': (581, 339, 707, 377), 'en': (581, 339, 707, 377), 'jp': (581, 339, 707, 377), 'tw': (581, 339, 707, 377)}, file={'cn': './assets/cn/meta_reward/SYNC_TAP.png', 'en': './assets/cn/meta_reward/SYNC_TAP.png', 'jp': './assets/cn/meta_reward/SYNC_TAP.png', 'tw': './assets/cn/meta_reward/SYNC_TAP.png'})
104 changes: 76 additions & 28 deletions module/meta_reward/meta_reward.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,26 +23,6 @@ def meta_reward_notice_appear(self):
logger.info('No meta reward red dot')
return False

def meta_reward_enter(self, skip_first_screenshot=True):
"""
Pages:
in: page_meta
out: REWARD_CHECK
"""
logger.info('Meta reward enter')
while 1:
if skip_first_screenshot:
skip_first_screenshot = False
else:
self.device.screenshot()

if self.appear_then_click(REWARD_ENTER, offset=(20, 20), interval=3):
continue

# End
if self.appear(REWARD_CHECK, offset=(20, 20)):
break

def meta_reward_receive(self, skip_first_screenshot=True):
"""
Args:
Expand All @@ -52,7 +32,7 @@ def meta_reward_receive(self, skip_first_screenshot=True):
bool: If received.
Pages:
in: REWARD_CHECK
in: page_meta or REWARD_CHECK
out: REWARD_CHECK
"""
logger.hr('Meta reward receive', level=1)
Expand All @@ -64,6 +44,14 @@ def meta_reward_receive(self, skip_first_screenshot=True):
else:
self.device.screenshot()

# End
# REWARD_CHECK appears and REWARD_RECEIVE gets gray
if self.appear(REWARD_CHECK, offset=(20, 20)) and \
self.image_color_count(REWARD_RECEIVE, color=(49, 52, 49), threshold=221, count=400):
break

if self.appear_then_click(REWARD_ENTER, offset=(20, 20), interval=3):
continue
if self.match_template_color(REWARD_RECEIVE, offset=(20, 20), interval=3):
self.device.click(REWARD_RECEIVE)
confirm_timer.reset()
Expand All @@ -81,15 +69,72 @@ def meta_reward_receive(self, skip_first_screenshot=True):
confirm_timer.reset()
continue

logger.info(f'Meta reward receive finished, received={received}')
return received

def meta_sync_notice_appear(self):
"""
"sync" is the period that you gather meta points to 100% and get a meta ship
Returns:
bool: If appear.
Page:
in: page_meta
"""
if self.appear(SYNC_REWARD_NOTICE, threshold=30):
logger.info('Found meta sync red dot')
return True
else:
logger.info('No meta sync red dot')
return False

def meta_sync_receive(self, skip_first_screenshot=True):
"""
Args:
skip_first_screenshot:
Returns:
bool: If received.
Pages:
in: SYNC_ENTER
out: SYNC_ENTER if meta ship synced < 100%
REWARD_ENTER if meta ship synced >= 100%
"""
logger.hr('Meta sync receive', level=1)
received = False
while 1:
if skip_first_screenshot:
skip_first_screenshot = False
else:
self.device.screenshot()

# End
if self.appear(REWARD_CHECK, offset=(20, 20)) and \
self.image_color_count(REWARD_RECEIVE, color=(49, 52, 49), threshold=221, count=400):
if confirm_timer.reached():
# Sync progress >= 100%
if self.appear(REWARD_ENTER, offset=(20, 20)):
logger.info('meta_sync_receive ends at REWARD_ENTER')
break
if self.appear(SYNC_ENTER, offset=(20, 20)):
if not self.meta_sync_notice_appear():
logger.info('meta_sync_receive ends at SYNC_ENTER')
break
else:
confirm_timer.reset()

logger.info(f'Meta reward receive finished, received={received}')
# Click
if self.handle_popup_confirm('META_REWARD'):
# Lock new META ships
continue
if self.handle_get_items():
received = True
continue
if self.handle_get_ship():
received = True
continue
if self.appear_then_click(SYNC_TAP, offset=(20, 20), interval=3):
received = True
continue

logger.info(f'Meta sync receive finished, received={received}')
return received

def run(self):
Expand All @@ -101,8 +146,11 @@ def run(self):

self.ui_ensure(page_meta)

if self.config.SERVER in ['cn']:
if self.meta_sync_notice_appear():
self.meta_sync_receive()

if self.meta_reward_notice_appear():
self.meta_reward_enter()
self.meta_reward_receive()


Expand Down

0 comments on commit 7d15f87

Please sign in to comment.