mirror of
https://github.com/sui-feng-cb/AzurLaneAutoScript1.git
synced 2026-08-15 03:40:37 +08:00
Add: [CN, JP] island exchange for fish meat
This commit is contained in:
BIN
assets/cn/island_handler/ISLAND_EXCHANGE_CONFIRM.png
Normal file
BIN
assets/cn/island_handler/ISLAND_EXCHANGE_CONFIRM.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 10 KiB |
BIN
assets/cn/island_handler/ISLAND_EXCHANGE_SELECT_ALL.png
Normal file
BIN
assets/cn/island_handler/ISLAND_EXCHANGE_SELECT_ALL.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.3 KiB |
BIN
assets/cn/island_handler/ISLAND_EXCHANGE_TOTAL_AMOUNT.png
Normal file
BIN
assets/cn/island_handler/ISLAND_EXCHANGE_TOTAL_AMOUNT.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
@@ -9,6 +9,9 @@ ISLAND_DOCK_CHECK = Button(area={'cn': (126, 20, 220, 46), 'en': (126, 20, 220,
|
|||||||
ISLAND_DOCK_SORTING_CLICK = Button(area={'cn': (115, 608, 266, 641), 'en': (115, 608, 266, 641), 'jp': (115, 608, 266, 641), 'tw': (115, 608, 266, 641)}, color={'cn': (104, 104, 103), 'en': (104, 104, 103), 'jp': (104, 104, 103), 'tw': (104, 104, 103)}, button={'cn': (115, 608, 266, 641), 'en': (115, 608, 266, 641), 'jp': (115, 608, 266, 641), 'tw': (115, 608, 266, 641)}, file={'cn': './assets/cn/island_handler/ISLAND_DOCK_SORTING_CLICK.png', 'en': './assets/cn/island_handler/ISLAND_DOCK_SORTING_CLICK.png', 'jp': './assets/cn/island_handler/ISLAND_DOCK_SORTING_CLICK.png', 'tw': './assets/cn/island_handler/ISLAND_DOCK_SORTING_CLICK.png'})
|
ISLAND_DOCK_SORTING_CLICK = Button(area={'cn': (115, 608, 266, 641), 'en': (115, 608, 266, 641), 'jp': (115, 608, 266, 641), 'tw': (115, 608, 266, 641)}, color={'cn': (104, 104, 103), 'en': (104, 104, 103), 'jp': (104, 104, 103), 'tw': (104, 104, 103)}, button={'cn': (115, 608, 266, 641), 'en': (115, 608, 266, 641), 'jp': (115, 608, 266, 641), 'tw': (115, 608, 266, 641)}, file={'cn': './assets/cn/island_handler/ISLAND_DOCK_SORTING_CLICK.png', 'en': './assets/cn/island_handler/ISLAND_DOCK_SORTING_CLICK.png', 'jp': './assets/cn/island_handler/ISLAND_DOCK_SORTING_CLICK.png', 'tw': './assets/cn/island_handler/ISLAND_DOCK_SORTING_CLICK.png'})
|
||||||
ISLAND_DOCK_SORT_ASC = Button(area={'cn': (140, 614, 153, 634), 'en': (140, 614, 153, 634), 'jp': (140, 614, 153, 634), 'tw': (140, 614, 153, 634)}, color={'cn': (140, 140, 137), 'en': (140, 140, 137), 'jp': (140, 140, 137), 'tw': (140, 140, 137)}, button={'cn': (140, 614, 153, 634), 'en': (140, 614, 153, 634), 'jp': (140, 614, 153, 634), 'tw': (140, 614, 153, 634)}, file={'cn': './assets/cn/island_handler/ISLAND_DOCK_SORT_ASC.png', 'en': './assets/cn/island_handler/ISLAND_DOCK_SORT_ASC.png', 'jp': './assets/cn/island_handler/ISLAND_DOCK_SORT_ASC.png', 'tw': './assets/cn/island_handler/ISLAND_DOCK_SORT_ASC.png'})
|
ISLAND_DOCK_SORT_ASC = Button(area={'cn': (140, 614, 153, 634), 'en': (140, 614, 153, 634), 'jp': (140, 614, 153, 634), 'tw': (140, 614, 153, 634)}, color={'cn': (140, 140, 137), 'en': (140, 140, 137), 'jp': (140, 140, 137), 'tw': (140, 140, 137)}, button={'cn': (140, 614, 153, 634), 'en': (140, 614, 153, 634), 'jp': (140, 614, 153, 634), 'tw': (140, 614, 153, 634)}, file={'cn': './assets/cn/island_handler/ISLAND_DOCK_SORT_ASC.png', 'en': './assets/cn/island_handler/ISLAND_DOCK_SORT_ASC.png', 'jp': './assets/cn/island_handler/ISLAND_DOCK_SORT_ASC.png', 'tw': './assets/cn/island_handler/ISLAND_DOCK_SORT_ASC.png'})
|
||||||
ISLAND_DOCK_SORT_DESC = Button(area={'cn': (141, 616, 152, 634), 'en': (141, 616, 152, 634), 'jp': (141, 616, 152, 634), 'tw': (141, 616, 152, 634)}, color={'cn': (154, 153, 151), 'en': (154, 153, 151), 'jp': (154, 153, 151), 'tw': (154, 153, 151)}, button={'cn': (141, 616, 152, 634), 'en': (141, 616, 152, 634), 'jp': (141, 616, 152, 634), 'tw': (141, 616, 152, 634)}, file={'cn': './assets/cn/island_handler/ISLAND_DOCK_SORT_DESC.png', 'en': './assets/cn/island_handler/ISLAND_DOCK_SORT_DESC.png', 'jp': './assets/cn/island_handler/ISLAND_DOCK_SORT_DESC.png', 'tw': './assets/cn/island_handler/ISLAND_DOCK_SORT_DESC.png'})
|
ISLAND_DOCK_SORT_DESC = Button(area={'cn': (141, 616, 152, 634), 'en': (141, 616, 152, 634), 'jp': (141, 616, 152, 634), 'tw': (141, 616, 152, 634)}, color={'cn': (154, 153, 151), 'en': (154, 153, 151), 'jp': (154, 153, 151), 'tw': (154, 153, 151)}, button={'cn': (141, 616, 152, 634), 'en': (141, 616, 152, 634), 'jp': (141, 616, 152, 634), 'tw': (141, 616, 152, 634)}, file={'cn': './assets/cn/island_handler/ISLAND_DOCK_SORT_DESC.png', 'en': './assets/cn/island_handler/ISLAND_DOCK_SORT_DESC.png', 'jp': './assets/cn/island_handler/ISLAND_DOCK_SORT_DESC.png', 'tw': './assets/cn/island_handler/ISLAND_DOCK_SORT_DESC.png'})
|
||||||
|
ISLAND_EXCHANGE_CONFIRM = Button(area={'cn': (989, 639, 1046, 668), 'en': (989, 639, 1046, 668), 'jp': (989, 639, 1046, 668), 'tw': (989, 639, 1046, 668)}, color={'cn': (100, 203, 255), 'en': (100, 203, 255), 'jp': (100, 203, 255), 'tw': (100, 203, 255)}, button={'cn': (989, 639, 1046, 668), 'en': (989, 639, 1046, 668), 'jp': (989, 639, 1046, 668), 'tw': (989, 639, 1046, 668)}, file={'cn': './assets/cn/island_handler/ISLAND_EXCHANGE_CONFIRM.png', 'en': './assets/cn/island_handler/ISLAND_EXCHANGE_CONFIRM.png', 'jp': './assets/cn/island_handler/ISLAND_EXCHANGE_CONFIRM.png', 'tw': './assets/cn/island_handler/ISLAND_EXCHANGE_CONFIRM.png'})
|
||||||
|
ISLAND_EXCHANGE_SELECT_ALL = Button(area={'cn': (227, 640, 254, 667), 'en': (227, 640, 254, 667), 'jp': (227, 640, 254, 667), 'tw': (227, 640, 254, 667)}, color={'cn': (65, 66, 66), 'en': (65, 66, 66), 'jp': (65, 66, 66), 'tw': (65, 66, 66)}, button={'cn': (227, 640, 254, 667), 'en': (227, 640, 254, 667), 'jp': (227, 640, 254, 667), 'tw': (227, 640, 254, 667)}, file={'cn': './assets/cn/island_handler/ISLAND_EXCHANGE_SELECT_ALL.png', 'en': './assets/cn/island_handler/ISLAND_EXCHANGE_SELECT_ALL.png', 'jp': './assets/cn/island_handler/ISLAND_EXCHANGE_SELECT_ALL.png', 'tw': './assets/cn/island_handler/ISLAND_EXCHANGE_SELECT_ALL.png'})
|
||||||
|
ISLAND_EXCHANGE_TOTAL_AMOUNT = Button(area={'cn': (967, 530, 1171, 560), 'en': (967, 530, 1171, 560), 'jp': (967, 530, 1171, 560), 'tw': (967, 530, 1171, 560)}, color={'cn': (228, 236, 234), 'en': (228, 236, 234), 'jp': (228, 236, 234), 'tw': (228, 236, 234)}, button={'cn': (967, 530, 1171, 560), 'en': (967, 530, 1171, 560), 'jp': (967, 530, 1171, 560), 'tw': (967, 530, 1171, 560)}, file={'cn': './assets/cn/island_handler/ISLAND_EXCHANGE_TOTAL_AMOUNT.png', 'en': './assets/cn/island_handler/ISLAND_EXCHANGE_TOTAL_AMOUNT.png', 'jp': './assets/cn/island_handler/ISLAND_EXCHANGE_TOTAL_AMOUNT.png', 'tw': './assets/cn/island_handler/ISLAND_EXCHANGE_TOTAL_AMOUNT.png'})
|
||||||
ISLAND_RESTAURANT_CHECK = Button(area={'cn': (122, 18, 219, 46), 'en': (122, 18, 219, 46), 'jp': (122, 20, 219, 47), 'tw': (122, 18, 219, 46)}, color={'cn': (107, 110, 120), 'en': (107, 110, 120), 'jp': (99, 103, 114), 'tw': (107, 110, 120)}, button={'cn': (122, 18, 219, 46), 'en': (122, 18, 219, 46), 'jp': (122, 20, 219, 47), 'tw': (122, 18, 219, 46)}, file={'cn': './assets/cn/island_handler/ISLAND_RESTAURANT_CHECK.png', 'en': './assets/cn/island_handler/ISLAND_RESTAURANT_CHECK.png', 'jp': './assets/jp/island_handler/ISLAND_RESTAURANT_CHECK.png', 'tw': './assets/cn/island_handler/ISLAND_RESTAURANT_CHECK.png'})
|
ISLAND_RESTAURANT_CHECK = Button(area={'cn': (122, 18, 219, 46), 'en': (122, 18, 219, 46), 'jp': (122, 20, 219, 47), 'tw': (122, 18, 219, 46)}, color={'cn': (107, 110, 120), 'en': (107, 110, 120), 'jp': (99, 103, 114), 'tw': (107, 110, 120)}, button={'cn': (122, 18, 219, 46), 'en': (122, 18, 219, 46), 'jp': (122, 20, 219, 47), 'tw': (122, 18, 219, 46)}, file={'cn': './assets/cn/island_handler/ISLAND_RESTAURANT_CHECK.png', 'en': './assets/cn/island_handler/ISLAND_RESTAURANT_CHECK.png', 'jp': './assets/jp/island_handler/ISLAND_RESTAURANT_CHECK.png', 'tw': './assets/cn/island_handler/ISLAND_RESTAURANT_CHECK.png'})
|
||||||
ISLAND_RESTAURANT_EVENT_BUFF = Button(area={'cn': (223, 451, 289, 475), 'en': (223, 451, 289, 475), 'jp': (223, 451, 289, 475), 'tw': (223, 451, 289, 475)}, color={'cn': (147, 165, 144), 'en': (147, 165, 144), 'jp': (147, 165, 144), 'tw': (147, 165, 144)}, button={'cn': (223, 451, 289, 475), 'en': (223, 451, 289, 475), 'jp': (223, 451, 289, 475), 'tw': (223, 451, 289, 475)}, file={'cn': './assets/cn/island_handler/ISLAND_RESTAURANT_EVENT_BUFF.png', 'en': './assets/cn/island_handler/ISLAND_RESTAURANT_EVENT_BUFF.png', 'jp': './assets/cn/island_handler/ISLAND_RESTAURANT_EVENT_BUFF.png', 'tw': './assets/cn/island_handler/ISLAND_RESTAURANT_EVENT_BUFF.png'})
|
ISLAND_RESTAURANT_EVENT_BUFF = Button(area={'cn': (223, 451, 289, 475), 'en': (223, 451, 289, 475), 'jp': (223, 451, 289, 475), 'tw': (223, 451, 289, 475)}, color={'cn': (147, 165, 144), 'en': (147, 165, 144), 'jp': (147, 165, 144), 'tw': (147, 165, 144)}, button={'cn': (223, 451, 289, 475), 'en': (223, 451, 289, 475), 'jp': (223, 451, 289, 475), 'tw': (223, 451, 289, 475)}, file={'cn': './assets/cn/island_handler/ISLAND_RESTAURANT_EVENT_BUFF.png', 'en': './assets/cn/island_handler/ISLAND_RESTAURANT_EVENT_BUFF.png', 'jp': './assets/cn/island_handler/ISLAND_RESTAURANT_EVENT_BUFF.png', 'tw': './assets/cn/island_handler/ISLAND_RESTAURANT_EVENT_BUFF.png'})
|
||||||
ISLAND_RESTAURANT_EVENT_CHECK = Button(area={'cn': (60, 116, 166, 162), 'en': (60, 116, 166, 162), 'jp': (60, 116, 166, 162), 'tw': (60, 116, 166, 162)}, color={'cn': (192, 191, 191), 'en': (192, 191, 191), 'jp': (192, 191, 191), 'tw': (192, 191, 191)}, button={'cn': (60, 116, 166, 162), 'en': (60, 116, 166, 162), 'jp': (60, 116, 166, 162), 'tw': (60, 116, 166, 162)}, file={'cn': './assets/cn/island_handler/ISLAND_RESTAURANT_EVENT_CHECK.png', 'en': './assets/cn/island_handler/ISLAND_RESTAURANT_EVENT_CHECK.png', 'jp': './assets/cn/island_handler/ISLAND_RESTAURANT_EVENT_CHECK.png', 'tw': './assets/cn/island_handler/ISLAND_RESTAURANT_EVENT_CHECK.png'})
|
ISLAND_RESTAURANT_EVENT_CHECK = Button(area={'cn': (60, 116, 166, 162), 'en': (60, 116, 166, 162), 'jp': (60, 116, 166, 162), 'tw': (60, 116, 166, 162)}, color={'cn': (192, 191, 191), 'en': (192, 191, 191), 'jp': (192, 191, 191), 'tw': (192, 191, 191)}, button={'cn': (60, 116, 166, 162), 'en': (60, 116, 166, 162), 'jp': (60, 116, 166, 162), 'tw': (60, 116, 166, 162)}, file={'cn': './assets/cn/island_handler/ISLAND_RESTAURANT_EVENT_CHECK.png', 'en': './assets/cn/island_handler/ISLAND_RESTAURANT_EVENT_CHECK.png', 'jp': './assets/cn/island_handler/ISLAND_RESTAURANT_EVENT_CHECK.png', 'tw': './assets/cn/island_handler/ISLAND_RESTAURANT_EVENT_CHECK.png'})
|
||||||
|
|||||||
69
module/island_handler/exchange.py
Normal file
69
module/island_handler/exchange.py
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
from module.island_handler.shop_ui import IslandShopUI
|
||||||
|
from module.island_handler.assets import *
|
||||||
|
from module.logger import logger
|
||||||
|
from module.ocr.ocr import Digit
|
||||||
|
|
||||||
|
|
||||||
|
class IslandExchange(IslandShopUI):
|
||||||
|
def exchange_fish_meat(self, delta_count):
|
||||||
|
ocr = Digit(ISLAND_EXCHANGE_TOTAL_AMOUNT, lang='cnocr', letter=(60, 60, 60), threshold=160)
|
||||||
|
before_amount = None
|
||||||
|
for _ in self.loop(timeout=3):
|
||||||
|
before_amount = ocr.ocr(self.device.image)
|
||||||
|
if before_amount is not None:
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
logger.warning('Unable to read fish amount before exchange')
|
||||||
|
return False
|
||||||
|
for _ in self.loop(timeout=3):
|
||||||
|
if self.handle_island_additional():
|
||||||
|
continue
|
||||||
|
if self.image_color_count(ISLAND_EXCHANGE_SELECT_ALL, color=(255, 255, 255), count=25):
|
||||||
|
break
|
||||||
|
if self.appear_then_click(ISLAND_EXCHANGE_SELECT_ALL, offset=(20, 20), interval=1):
|
||||||
|
continue
|
||||||
|
else:
|
||||||
|
logger.warning('No fish available for exchange')
|
||||||
|
return False
|
||||||
|
for _ in self.loop():
|
||||||
|
if self.handle_island_additional():
|
||||||
|
continue
|
||||||
|
if self.handle_island_popup_confirm('EXCHANGE'):
|
||||||
|
continue
|
||||||
|
if self.appear(ISLAND_EXCHANGE_SELECT_ALL, offset=(20, 20)):
|
||||||
|
break
|
||||||
|
if self.appear_then_click(ISLAND_EXCHANGE_CONFIRM, offset=(20, 20), interval=1):
|
||||||
|
continue
|
||||||
|
after_amount = before_amount
|
||||||
|
exchanged_amount = 0
|
||||||
|
for _ in self.loop(timeout=3):
|
||||||
|
if self.handle_island_additional():
|
||||||
|
continue
|
||||||
|
after_amount = ocr.ocr(self.device.image)
|
||||||
|
if after_amount is None:
|
||||||
|
continue
|
||||||
|
exchanged_amount = after_amount - before_amount
|
||||||
|
if exchanged_amount >= delta_count:
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
logger.warning(
|
||||||
|
f'Exchange failed, expected {delta_count}, '
|
||||||
|
f'but got {exchanged_amount} ({before_amount} -> {after_amount})'
|
||||||
|
)
|
||||||
|
return False
|
||||||
|
|
||||||
|
def island_shop_exchange(self, require_dict={}):
|
||||||
|
success = True
|
||||||
|
if 2521 in require_dict.keys():
|
||||||
|
# 2521 means Freshwater Fish Meat
|
||||||
|
self.island_shop_side_navbar_ensure(main_index=6, sub_index=0)
|
||||||
|
success = self.exchange_fish_meat(delta_count=require_dict[2521]) and success
|
||||||
|
if 2522 in require_dict.keys():
|
||||||
|
# 2522 means Saltwater Fish Meat
|
||||||
|
self.island_shop_side_navbar_ensure(main_index=6, sub_index=1)
|
||||||
|
success = self.exchange_fish_meat(delta_count=require_dict[2522]) and success
|
||||||
|
return success
|
||||||
|
|
||||||
|
def island_shop_exchange_all_fish_meat(self):
|
||||||
|
"""Exchange all available freshwater and saltwater fish in one visit."""
|
||||||
|
return self.island_shop_exchange({2521: 0, 2522: 0})
|
||||||
Reference in New Issue
Block a user