mirror of
https://github.com/sui-feng-cb/AzurLaneAutoScript1.git
synced 2026-08-15 19:43:28 +08:00
Add: [CN, JP] island freebie receive
This commit is contained in:
@@ -5,4 +5,12 @@ from module.base.template import Template
|
||||
# Don't modify it manually.
|
||||
|
||||
ISLAND_CLICK_SAFE_AREA = Button(area={'cn': (596, 687, 680, 720), 'en': (596, 687, 680, 720), 'jp': (596, 687, 680, 720), 'tw': (596, 687, 680, 720)}, color={'cn': (255, 255, 255), 'en': (255, 255, 255), 'jp': (255, 255, 255), 'tw': (255, 255, 255)}, button={'cn': (596, 687, 680, 720), 'en': (596, 687, 680, 720), 'jp': (596, 687, 680, 720), 'tw': (596, 687, 680, 720)}, file={'cn': './assets/cn/island/ISLAND_CLICK_SAFE_AREA.png', 'en': './assets/cn/island/ISLAND_CLICK_SAFE_AREA.png', 'jp': './assets/cn/island/ISLAND_CLICK_SAFE_AREA.png', 'tw': './assets/cn/island/ISLAND_CLICK_SAFE_AREA.png'})
|
||||
ISLAND_FREEBIE_AVAILABLE = Button(area={'cn': (23, 608, 102, 688), 'en': (23, 608, 102, 688), 'jp': (23, 608, 102, 688), 'tw': (23, 608, 102, 688)}, color={'cn': (129, 124, 97), 'en': (129, 124, 97), 'jp': (129, 124, 97), 'tw': (129, 124, 97)}, button={'cn': (37, 622, 87, 672), 'en': (37, 622, 87, 672), 'jp': (37, 622, 87, 672), 'tw': (37, 622, 87, 672)}, file={'cn': './assets/cn/island/ISLAND_FREEBIE_AVAILABLE.gif', 'en': './assets/cn/island/ISLAND_FREEBIE_AVAILABLE.gif', 'jp': './assets/cn/island/ISLAND_FREEBIE_AVAILABLE.gif', 'tw': './assets/cn/island/ISLAND_FREEBIE_AVAILABLE.gif'})
|
||||
ISLAND_FREEBIE_CLAIM = Button(area={'cn': (894, 381, 980, 406), 'en': (894, 381, 980, 406), 'jp': (890, 381, 984, 405), 'tw': (894, 381, 980, 406)}, color={'cn': (211, 211, 209), 'en': (211, 211, 209), 'jp': (194, 195, 196), 'tw': (211, 211, 209)}, button={'cn': (894, 381, 980, 406), 'en': (894, 381, 980, 406), 'jp': (890, 381, 984, 405), 'tw': (894, 381, 980, 406)}, file={'cn': './assets/cn/island/ISLAND_FREEBIE_CLAIM.png', 'en': './assets/cn/island/ISLAND_FREEBIE_CLAIM.png', 'jp': './assets/jp/island/ISLAND_FREEBIE_CLAIM.png', 'tw': './assets/cn/island/ISLAND_FREEBIE_CLAIM.png'})
|
||||
ISLAND_FREEBIE_COOLDOWN = Button(area={'cn': (871, 381, 1001, 406), 'en': (871, 381, 1001, 406), 'jp': (870, 380, 1003, 406), 'tw': (871, 381, 1001, 406)}, color={'cn': (215, 214, 213), 'en': (215, 214, 213), 'jp': (200, 202, 201), 'tw': (215, 214, 213)}, button={'cn': (871, 381, 1001, 406), 'en': (871, 381, 1001, 406), 'jp': (870, 380, 1003, 406), 'tw': (871, 381, 1001, 406)}, file={'cn': './assets/cn/island/ISLAND_FREEBIE_COOLDOWN.png', 'en': './assets/cn/island/ISLAND_FREEBIE_COOLDOWN.png', 'jp': './assets/jp/island/ISLAND_FREEBIE_COOLDOWN.png', 'tw': './assets/cn/island/ISLAND_FREEBIE_COOLDOWN.png'})
|
||||
ISLAND_FREEBIE_RECEIVE = Button(area={'cn': (893, 380, 980, 406), 'en': (893, 380, 980, 406), 'jp': (859, 380, 1012, 406), 'tw': (893, 380, 980, 406)}, color={'cn': (208, 207, 206), 'en': (208, 207, 206), 'jp': (205, 207, 206), 'tw': (208, 207, 206)}, button={'cn': (893, 380, 980, 406), 'en': (893, 380, 980, 406), 'jp': (859, 380, 1012, 406), 'tw': (893, 380, 980, 406)}, file={'cn': './assets/cn/island/ISLAND_FREEBIE_RECEIVE.png', 'en': './assets/cn/island/ISLAND_FREEBIE_RECEIVE.png', 'jp': './assets/jp/island/ISLAND_FREEBIE_RECEIVE.png', 'tw': './assets/cn/island/ISLAND_FREEBIE_RECEIVE.png'})
|
||||
ISLAND_FREEBIE_SHARE = Button(area={'cn': (871, 381, 1002, 406), 'en': (871, 381, 1002, 406), 'jp': (849, 380, 1024, 406), 'tw': (871, 381, 1002, 406)}, color={'cn': (208, 208, 207), 'en': (208, 208, 207), 'jp': (210, 214, 214), 'tw': (208, 208, 207)}, button={'cn': (871, 381, 1002, 406), 'en': (871, 381, 1002, 406), 'jp': (849, 380, 1024, 406), 'tw': (871, 381, 1002, 406)}, file={'cn': './assets/cn/island/ISLAND_FREEBIE_SHARE.png', 'en': './assets/cn/island/ISLAND_FREEBIE_SHARE.png', 'jp': './assets/jp/island/ISLAND_FREEBIE_SHARE.png', 'tw': './assets/cn/island/ISLAND_FREEBIE_SHARE.png'})
|
||||
ISLAND_FREEBIE_SHARE_ALL = Button(area={'cn': (728, 588, 810, 611), 'en': (728, 588, 810, 611), 'jp': (724, 587, 814, 613), 'tw': (728, 588, 810, 611)}, color={'cn': (93, 121, 142), 'en': (93, 121, 142), 'jp': (73, 104, 128), 'tw': (93, 121, 142)}, button={'cn': (728, 588, 810, 611), 'en': (728, 588, 810, 611), 'jp': (724, 587, 814, 613), 'tw': (728, 588, 810, 611)}, file={'cn': './assets/cn/island/ISLAND_FREEBIE_SHARE_ALL.png', 'en': './assets/cn/island/ISLAND_FREEBIE_SHARE_ALL.png', 'jp': './assets/jp/island/ISLAND_FREEBIE_SHARE_ALL.png', 'tw': './assets/cn/island/ISLAND_FREEBIE_SHARE_ALL.png'})
|
||||
ISLAND_FREEBIE_SHARE_BACK = Button(area={'cn': (844, 101, 878, 135), 'en': (844, 101, 878, 135), 'jp': (844, 101, 878, 135), 'tw': (844, 101, 878, 135)}, color={'cn': (170, 213, 232), 'en': (170, 213, 232), 'jp': (170, 213, 232), 'tw': (170, 213, 232)}, button={'cn': (844, 101, 878, 135), 'en': (844, 101, 878, 135), 'jp': (844, 101, 878, 135), 'tw': (844, 101, 878, 135)}, file={'cn': './assets/cn/island/ISLAND_FREEBIE_SHARE_BACK.png', 'en': './assets/cn/island/ISLAND_FREEBIE_SHARE_BACK.png', 'jp': './assets/cn/island/ISLAND_FREEBIE_SHARE_BACK.png', 'tw': './assets/cn/island/ISLAND_FREEBIE_SHARE_BACK.png'})
|
||||
ISLAND_FREEBIE_UNAVAILABLE = Button(area={'cn': (36, 631, 88, 683), 'en': (36, 631, 88, 683), 'jp': (36, 631, 88, 683), 'tw': (36, 631, 88, 683)}, color={'cn': (122, 122, 122), 'en': (122, 122, 122), 'jp': (122, 122, 122), 'tw': (122, 122, 122)}, button={'cn': (36, 631, 88, 683), 'en': (36, 631, 88, 683), 'jp': (36, 631, 88, 683), 'tw': (36, 631, 88, 683)}, file={'cn': './assets/cn/island/ISLAND_FREEBIE_UNAVAILABLE.png', 'en': './assets/cn/island/ISLAND_FREEBIE_UNAVAILABLE.png', 'jp': './assets/cn/island/ISLAND_FREEBIE_UNAVAILABLE.png', 'tw': './assets/cn/island/ISLAND_FREEBIE_UNAVAILABLE.png'})
|
||||
ISLAND_LEVEL_UP = Button(area={'cn': (616, 339, 662, 377), 'en': (616, 339, 662, 377), 'jp': (616, 339, 662, 377), 'tw': (616, 339, 662, 377)}, color={'cn': (186, 213, 226), 'en': (186, 213, 226), 'jp': (186, 213, 226), 'tw': (186, 213, 226)}, button={'cn': (616, 339, 662, 377), 'en': (616, 339, 662, 377), 'jp': (616, 339, 662, 377), 'tw': (616, 339, 662, 377)}, file={'cn': './assets/cn/island/ISLAND_LEVEL_UP.png', 'en': './assets/cn/island/ISLAND_LEVEL_UP.png', 'jp': './assets/cn/island/ISLAND_LEVEL_UP.png', 'tw': './assets/cn/island/ISLAND_LEVEL_UP.png'})
|
||||
|
||||
130
module/island/freebie.py
Normal file
130
module/island/freebie.py
Normal file
@@ -0,0 +1,130 @@
|
||||
from module.base.timer import Timer
|
||||
from module.exception import GameStuckError
|
||||
from module.handler.assets import STORY_SKIP
|
||||
from module.island.ui import IslandUI
|
||||
from module.island.assets import *
|
||||
from module.logger import logger
|
||||
from module.ui.page import page_island, page_island_manage, page_island_phone
|
||||
|
||||
|
||||
class IslandFreebie(IslandUI):
|
||||
def island_freebie_notice_appear(self):
|
||||
"""
|
||||
Returns:
|
||||
bool: If appear.
|
||||
|
||||
Page:
|
||||
in: page_island_manage
|
||||
"""
|
||||
for _ in self.loop(timeout=5):
|
||||
if self.match_template_color(ISLAND_FREEBIE_AVAILABLE, offset=(20, 20)):
|
||||
return True
|
||||
if self.match_template_color(ISLAND_FREEBIE_UNAVAILABLE, offset=(20, 20)):
|
||||
return False
|
||||
return False
|
||||
|
||||
def freebie_move_to(self):
|
||||
"""
|
||||
Page:
|
||||
in: page_island_manage
|
||||
out: page_island
|
||||
"""
|
||||
for _ in self.loop(timeout=30):
|
||||
if self.appear_then_click(ISLAND_FREEBIE_AVAILABLE, offset=(20, 20), interval=3):
|
||||
continue
|
||||
|
||||
if self.ui_page_appear(page_island_phone):
|
||||
logger.info('Moved to location of freebie')
|
||||
self.ui_goto(page_island)
|
||||
break
|
||||
else:
|
||||
logger.warning('Failed to move to location of freebie after 30 seconds')
|
||||
raise GameStuckError(f'Failed to move to location of freebie after 30 seconds')
|
||||
|
||||
def freebie_claim(self):
|
||||
if not self.appear(ISLAND_FREEBIE_CLAIM, offset=(20, 20)):
|
||||
logger.warning('No freebie claim button')
|
||||
return False
|
||||
retry_wait = Timer(3, count=5).reset()
|
||||
for _ in self.loop(timeout=30):
|
||||
if self.appear_then_click(ISLAND_FREEBIE_CLAIM, offset=(20, 20), interval=3):
|
||||
continue
|
||||
|
||||
if self.appear(ISLAND_FREEBIE_COOLDOWN, offset=(20, 20)):
|
||||
logger.info('Claimed freebie')
|
||||
return True
|
||||
elif self.ui_page_appear(page_island_phone):
|
||||
logger.info('Misclicked into page_island_phone, go back')
|
||||
self.ui_goto(page_island)
|
||||
continue
|
||||
elif retry_wait.reached_and_reset():
|
||||
self.device.click(STORY_SKIP)
|
||||
continue
|
||||
else:
|
||||
logger.warning('Failed to claim freebie after 30 seconds')
|
||||
return False
|
||||
|
||||
def freebie_receive(self):
|
||||
p1 = (217, 507)
|
||||
p2 = (217 - 8, 507 + 36)
|
||||
self.device.drag(p1, p2, point_random=(0, 0, 0, 0), shake_random=(0, 0, 0, 0), hold_duration=1.05)
|
||||
self.device.screenshot()
|
||||
if not self.appear(ISLAND_FREEBIE_RECEIVE, offset=(20, 20)):
|
||||
logger.warning('Failed to receive freebie')
|
||||
return False
|
||||
confirm_timer = Timer(3, count=5).reset()
|
||||
for _ in self.loop(timeout=30, skip_first=False):
|
||||
if self.appear_then_click(ISLAND_FREEBIE_RECEIVE, offset=(20, 20), interval=3):
|
||||
confirm_timer.reset()
|
||||
continue
|
||||
|
||||
if self.handle_island_additional():
|
||||
confirm_timer.reset()
|
||||
continue
|
||||
|
||||
# End
|
||||
if self.appear(ISLAND_FREEBIE_SHARE, offset=(20, 20)):
|
||||
if confirm_timer.reached():
|
||||
logger.info('Received freebie')
|
||||
return True
|
||||
else:
|
||||
logger.warning('Failed to receive freebie after 30 seconds')
|
||||
return False
|
||||
|
||||
def freebie_share(self):
|
||||
if not self.appear(ISLAND_FREEBIE_SHARE, offset=(20, 20)):
|
||||
logger.warning('No freebie share button')
|
||||
return False
|
||||
|
||||
for _ in self.loop(timeout=30, skip_first=False):
|
||||
if self.appear_then_click(ISLAND_FREEBIE_SHARE, offset=(20, 20), interval=3):
|
||||
continue
|
||||
if self.appear_then_click(ISLAND_FREEBIE_SHARE_ALL, offset=(20, 20), interval=3):
|
||||
break
|
||||
else:
|
||||
logger.warning('Failed to open freebie share page after 30 seconds')
|
||||
return False
|
||||
|
||||
for _ in self.loop(timeout=30, skip_first=False):
|
||||
if self.appear_then_click(ISLAND_FREEBIE_SHARE_BACK, offset=(20, 20), interval=3):
|
||||
continue
|
||||
if self.ui_page_appear(page_island):
|
||||
logger.info('Shared freebie')
|
||||
return True
|
||||
else:
|
||||
logger.warning('Failed to leave freebie share page after 30 seconds')
|
||||
return False
|
||||
|
||||
def run(self):
|
||||
self.ui_ensure(page_island_manage)
|
||||
|
||||
if self.island_freebie_notice_appear():
|
||||
self.freebie_move_to()
|
||||
self.freebie_claim()
|
||||
self.freebie_receive()
|
||||
if self.config.IslandFreebie_Share:
|
||||
self.freebie_share()
|
||||
else:
|
||||
logger.info('No freebie notice')
|
||||
|
||||
self.config.task_delay(server_update=True)
|
||||
Reference in New Issue
Block a user