mirror of
https://gitee.com/sui-feng-cb/AzurLaneAutoScript1
synced 2026-03-09 12:49:03 +08:00
Compare commits
2 Commits
bff45100fd
...
6684d2ddd1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6684d2ddd1 | ||
|
|
3654d8645c |
BIN
assets/cn/island/ISLAND_INFO_EXIT.png
Normal file
BIN
assets/cn/island/ISLAND_INFO_EXIT.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.6 KiB |
BIN
assets/cn/island/ROLE_SELECT_TITLE_AREA.png
Normal file
BIN
assets/cn/island/ROLE_SELECT_TITLE_AREA.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.1 KiB |
@ -7,6 +7,7 @@ from module.base.template import Template
|
||||
GET_ITEMS_ISLAND = Button(area={'cn': (588, 260, 692, 289), 'en': (588, 260, 692, 289), 'jp': (588, 260, 692, 289), 'tw': (588, 260, 692, 289)}, color={'cn': (178, 180, 180), 'en': (149, 151, 152), 'jp': (178, 180, 180), 'tw': (178, 180, 180)}, button={'cn': (0, 263, 129, 555), 'en': (588, 260, 692, 289), 'jp': (0, 263, 129, 555), 'tw': (0, 263, 129, 555)}, file={'cn': './assets/cn/island/GET_ITEMS_ISLAND.png', 'en': './assets/en/island/GET_ITEMS_ISLAND.png', 'jp': './assets/cn/island/GET_ITEMS_ISLAND.png', 'tw': './assets/cn/island/GET_ITEMS_ISLAND.png'})
|
||||
ISLAND_AMOUNT_MAX = Button(area={'cn': (960, 382, 988, 405), 'en': (960, 382, 988, 405), 'jp': (960, 382, 988, 405), 'tw': (960, 382, 988, 405)}, color={'cn': (72, 72, 78), 'en': (78, 78, 84), 'jp': (72, 72, 78), 'tw': (72, 72, 78)}, button={'cn': (960, 382, 988, 405), 'en': (960, 382, 988, 405), 'jp': (960, 382, 988, 405), 'tw': (960, 382, 988, 405)}, file={'cn': './assets/cn/island/ISLAND_AMOUNT_MAX.png', 'en': './assets/en/island/ISLAND_AMOUNT_MAX.png', 'jp': './assets/cn/island/ISLAND_AMOUNT_MAX.png', 'tw': './assets/cn/island/ISLAND_AMOUNT_MAX.png'})
|
||||
ISLAND_CLICK_SAFE_AREA = Button(area={'cn': (0, 263, 129, 555), 'en': (0, 263, 129, 555), 'jp': (0, 263, 129, 555), 'tw': (0, 263, 129, 555)}, color={'cn': (50, 52, 56), 'en': (50, 52, 56), 'jp': (50, 52, 56), 'tw': (50, 52, 56)}, button={'cn': (0, 263, 129, 555), 'en': (0, 263, 129, 555), 'jp': (0, 263, 129, 555), 'tw': (0, 263, 129, 555)}, 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_INFO_EXIT = Button(area={'cn': (907, 160, 933, 187), 'en': (907, 160, 933, 187), 'jp': (907, 160, 933, 187), 'tw': (907, 160, 933, 187)}, color={'cn': (96, 96, 96), 'en': (96, 96, 96), 'jp': (96, 96, 96), 'tw': (96, 96, 96)}, button={'cn': (907, 160, 933, 187), 'en': (907, 160, 933, 187), 'jp': (907, 160, 933, 187), 'tw': (907, 160, 933, 187)}, file={'cn': './assets/cn/island/ISLAND_INFO_EXIT.png', 'en': './assets/cn/island/ISLAND_INFO_EXIT.png', 'jp': './assets/cn/island/ISLAND_INFO_EXIT.png', 'tw': './assets/cn/island/ISLAND_INFO_EXIT.png'})
|
||||
ISLAND_MANAGEMENT = Button(area={'cn': (1077, 493, 1119, 533), 'en': (1077, 493, 1119, 533), 'jp': (1077, 493, 1119, 533), 'tw': (1077, 493, 1119, 533)}, color={'cn': (187, 224, 135), 'en': (187, 224, 135), 'jp': (187, 224, 135), 'tw': (187, 224, 135)}, button={'cn': (1077, 493, 1119, 533), 'en': (1077, 493, 1119, 533), 'jp': (1077, 493, 1119, 533), 'tw': (1077, 493, 1119, 533)}, file={'cn': './assets/cn/island/ISLAND_MANAGEMENT.png', 'en': './assets/cn/island/ISLAND_MANAGEMENT.png', 'jp': './assets/cn/island/ISLAND_MANAGEMENT.png', 'tw': './assets/cn/island/ISLAND_MANAGEMENT.png'})
|
||||
ISLAND_MANAGEMENT_CHECK = Button(area={'cn': (123, 21, 304, 47), 'en': (123, 21, 304, 47), 'jp': (123, 21, 304, 47), 'tw': (123, 21, 304, 47)}, color={'cn': (77, 83, 96), 'en': (90, 96, 108), 'jp': (77, 83, 96), 'tw': (77, 83, 96)}, button={'cn': (123, 21, 304, 47), 'en': (123, 21, 304, 47), 'jp': (123, 21, 304, 47), 'tw': (123, 21, 304, 47)}, file={'cn': './assets/cn/island/ISLAND_MANAGEMENT_CHECK.png', 'en': './assets/en/island/ISLAND_MANAGEMENT_CHECK.png', 'jp': './assets/cn/island/ISLAND_MANAGEMENT_CHECK.png', 'tw': './assets/cn/island/ISLAND_MANAGEMENT_CHECK.png'})
|
||||
ISLAND_MANAGEMENT_LOCKED = Button(area={'cn': (1092, 504, 1105, 520), 'en': (1092, 504, 1105, 520), 'jp': (1092, 504, 1105, 520), 'tw': (1092, 504, 1105, 520)}, color={'cn': (197, 206, 195), 'en': (197, 206, 195), 'jp': (197, 206, 195), 'tw': (197, 206, 195)}, button={'cn': (1092, 504, 1105, 520), 'en': (1092, 504, 1105, 520), 'jp': (1092, 504, 1105, 520), 'tw': (1092, 504, 1105, 520)}, file={'cn': './assets/cn/island/ISLAND_MANAGEMENT_LOCKED.png', 'en': './assets/cn/island/ISLAND_MANAGEMENT_LOCKED.png', 'jp': './assets/cn/island/ISLAND_MANAGEMENT_LOCKED.png', 'tw': './assets/cn/island/ISLAND_MANAGEMENT_LOCKED.png'})
|
||||
@ -41,6 +42,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'})
|
||||
|
||||
@ -63,7 +63,6 @@ class Island(IslandProjectRun, IslandTransportRun):
|
||||
project = any(project_config)
|
||||
names = self.island_config_to_names(project_config)
|
||||
if transport or project:
|
||||
self.ui_goto_island()
|
||||
self.ui_ensure(page_island_phone)
|
||||
self.island_run(transport=transport, project=project, names=names)
|
||||
self.ui_goto(page_main, get_ship=False)
|
||||
|
||||
@ -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,11 +362,12 @@ 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)
|
||||
self.device.sleep(0.1)
|
||||
click_timer.reset()
|
||||
continue
|
||||
|
||||
@ -375,7 +379,9 @@ 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()
|
||||
@ -383,25 +389,24 @@ class IslandProjectRun(IslandUI):
|
||||
|
||||
if self.appear_then_click(PROJECT_COMPLETE, offset=(20, 20), interval=1):
|
||||
success = True
|
||||
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
|
||||
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
|
||||
|
||||
|
||||
@ -2,8 +2,8 @@ from module.base.timer import Timer
|
||||
from module.handler.assets import MAINTENANCE_ANNOUNCE, USE_DATA_KEY_NOTIFIED
|
||||
from module.island.assets import *
|
||||
from module.logger import logger
|
||||
from module.ui.assets import DORMMENU_GOTO_ISLAND, SHOP_BACK_ARROW
|
||||
from module.ui.page import page_dormmenu, page_island, page_island_phone
|
||||
from module.ui.assets import SHOP_BACK_ARROW
|
||||
from module.ui.page import page_island_phone
|
||||
from module.ui.ui import UI
|
||||
|
||||
|
||||
@ -88,7 +88,7 @@ class IslandUI(UI):
|
||||
skip_first_screenshot=True
|
||||
)
|
||||
|
||||
def ui_ensure_management_page(self, skip_first_screenshot=True):
|
||||
def ui_ensure_management_page(self):
|
||||
"""
|
||||
Pages:
|
||||
in: page_island_phone or product page
|
||||
@ -97,12 +97,7 @@ class IslandUI(UI):
|
||||
logger.info('UI ensure management page')
|
||||
self.interval_clear(ISLAND_MANAGEMENT_CHECK)
|
||||
confirm_timer = Timer(1, count=2).start()
|
||||
while 1:
|
||||
if skip_first_screenshot:
|
||||
skip_first_screenshot = False
|
||||
else:
|
||||
self.device.screenshot()
|
||||
|
||||
for _ in self.loop():
|
||||
if self.island_in_management():
|
||||
if confirm_timer.reached():
|
||||
break
|
||||
@ -121,38 +116,25 @@ class IslandUI(UI):
|
||||
return True
|
||||
return False
|
||||
|
||||
def handle_island_ui_additional(self, skip_first_screenshot=True):
|
||||
if not self.appear(MAINTENANCE_ANNOUNCE, offset=(100, 50)):
|
||||
return False
|
||||
def ui_additional(self, get_ship=True):
|
||||
# notify in page_dormmenu
|
||||
if self.appear(MAINTENANCE_ANNOUNCE, offset=(100, 50)):
|
||||
for _ in self.loop():
|
||||
enabled = self.image_color_count(
|
||||
USE_DATA_KEY_NOTIFIED, color=(140, 207, 66), threshold=180, count=10)
|
||||
if enabled:
|
||||
break
|
||||
|
||||
while 1:
|
||||
if skip_first_screenshot:
|
||||
skip_first_screenshot = False
|
||||
else:
|
||||
self.device.screenshot()
|
||||
if self.appear(MAINTENANCE_ANNOUNCE, offset=(100, 50), interval=5):
|
||||
self.device.click(USE_DATA_KEY_NOTIFIED)
|
||||
continue
|
||||
|
||||
enabled = self.image_color_count(
|
||||
USE_DATA_KEY_NOTIFIED, color=(140, 207, 66), threshold=180, count=10)
|
||||
if enabled:
|
||||
break
|
||||
|
||||
if self.appear(MAINTENANCE_ANNOUNCE, offset=(100, 50), interval=5):
|
||||
self.device.click(USE_DATA_KEY_NOTIFIED)
|
||||
continue
|
||||
|
||||
self.interval_clear(MAINTENANCE_ANNOUNCE)
|
||||
self.appear_then_click(MAINTENANCE_ANNOUNCE, offset=(100, 50), interval=2)
|
||||
return True
|
||||
|
||||
def ui_goto_island(self):
|
||||
if self.ui_get_current_page() in [page_island, page_island_phone]:
|
||||
logger.info(f'Already at {self.ui_current}')
|
||||
self.interval_clear(MAINTENANCE_ANNOUNCE)
|
||||
self.appear_then_click(MAINTENANCE_ANNOUNCE, offset=(100, 50), interval=2)
|
||||
return True
|
||||
|
||||
# info in page_island
|
||||
if self.appear_then_click(ISLAND_INFO_EXIT, offset=(30, 30), interval=3):
|
||||
return True
|
||||
|
||||
self.ui_ensure(page_dormmenu)
|
||||
self.ui_click(click_button=DORMMENU_GOTO_ISLAND,
|
||||
check_button=page_island.check_button,
|
||||
additional=self.handle_island_ui_additional,
|
||||
offset=(30, 30),
|
||||
retry_wait=2,
|
||||
skip_first_screenshot=True)
|
||||
return super().ui_additional(get_ship=False)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user