mirror of
https://gitee.com/sui-feng-cb/AzurLaneAutoScript1
synced 2026-03-23 05:08:01 +08:00
Fix: GameTooManyClickError in product_select
This commit is contained in:
@@ -2966,8 +2966,8 @@
|
|||||||
"2": "记事本",
|
"2": "记事本",
|
||||||
"3": "桌椅",
|
"3": "桌椅",
|
||||||
"4": "精选木桶",
|
"4": "精选木桶",
|
||||||
"5": "装饰画",
|
"5": "文件柜",
|
||||||
"6": "文件柜"
|
"6": "装饰画"
|
||||||
},
|
},
|
||||||
"Character1": {
|
"Character1": {
|
||||||
"name": "第 1 格使用角色",
|
"name": "第 1 格使用角色",
|
||||||
@@ -2998,8 +2998,8 @@
|
|||||||
"2": "记事本",
|
"2": "记事本",
|
||||||
"3": "桌椅",
|
"3": "桌椅",
|
||||||
"4": "精选木桶",
|
"4": "精选木桶",
|
||||||
"5": "装饰画",
|
"5": "文件柜",
|
||||||
"6": "文件柜"
|
"6": "装饰画"
|
||||||
},
|
},
|
||||||
"Character2": {
|
"Character2": {
|
||||||
"name": "第 2 格使用角色",
|
"name": "第 2 格使用角色",
|
||||||
|
|||||||
@@ -345,7 +345,7 @@ class IslandProjectRun(IslandUI):
|
|||||||
for button in TEMPLATE_PROJECT.match_multi(image_gray)])
|
for button in TEMPLATE_PROJECT.match_multi(image_gray)])
|
||||||
return projects.select(valid=True)
|
return projects.select(valid=True)
|
||||||
|
|
||||||
def project_receive(self, button, skip_first_screenshot=True):
|
def project_receive(self, button):
|
||||||
"""
|
"""
|
||||||
Receive a project and enter role select page.
|
Receive a project and enter role select page.
|
||||||
|
|
||||||
@@ -361,12 +361,7 @@ class IslandProjectRun(IslandUI):
|
|||||||
success = False
|
success = False
|
||||||
enter = True
|
enter = True
|
||||||
click_timer = Timer(5, count=10).start()
|
click_timer = Timer(5, count=10).start()
|
||||||
while 1:
|
for _ in self.loop():
|
||||||
if skip_first_screenshot:
|
|
||||||
skip_first_screenshot = False
|
|
||||||
else:
|
|
||||||
self.device.screenshot()
|
|
||||||
|
|
||||||
if self.island_in_management(interval=5):
|
if self.island_in_management(interval=5):
|
||||||
self.device.click(button)
|
self.device.click(button)
|
||||||
click_timer.reset()
|
click_timer.reset()
|
||||||
@@ -429,12 +424,7 @@ class IslandProjectRun(IslandUI):
|
|||||||
click_button (Button): character button to click
|
click_button (Button): character button to click
|
||||||
check_button (Button):
|
check_button (Button):
|
||||||
"""
|
"""
|
||||||
skip_first_screenshot=True
|
for _ in self.loop():
|
||||||
while 1:
|
|
||||||
if skip_first_screenshot:
|
|
||||||
skip_first_screenshot = False
|
|
||||||
else:
|
|
||||||
self.device.screenshot()
|
|
||||||
if self.appear(check_button, offset=(20, 20)):
|
if self.appear(check_button, offset=(20, 20)):
|
||||||
break
|
break
|
||||||
if self.appear(ROLE_SELECT_CONFIRM, offset=(20, 20), interval=2):
|
if self.appear(ROLE_SELECT_CONFIRM, offset=(20, 20), interval=2):
|
||||||
@@ -442,12 +432,8 @@ class IslandProjectRun(IslandUI):
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
self.interval_clear(ROLE_SELECT_CONFIRM)
|
self.interval_clear(ROLE_SELECT_CONFIRM)
|
||||||
skip_first_screenshot=True
|
|
||||||
while 1:
|
for _ in self.loop():
|
||||||
if skip_first_screenshot:
|
|
||||||
skip_first_screenshot = False
|
|
||||||
else:
|
|
||||||
self.device.screenshot()
|
|
||||||
# End
|
# End
|
||||||
if self.appear(ISLAND_AMOUNT_MAX, offset=(20, 20)):
|
if self.appear(ISLAND_AMOUNT_MAX, offset=(20, 20)):
|
||||||
return True
|
return True
|
||||||
@@ -459,13 +445,12 @@ class IslandProjectRun(IslandUI):
|
|||||||
self.interval_clear(ISLAND_MANAGEMENT_CHECK)
|
self.interval_clear(ISLAND_MANAGEMENT_CHECK)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
def project_character_select(self, character='manjuu', skip_first_screenshot=True):
|
def project_character_select(self, character='manjuu'):
|
||||||
"""
|
"""
|
||||||
Select a role to produce.
|
Select a role to produce.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
character (str): character name to select
|
character (str): character name to select
|
||||||
skip_first_screenshot (bool):
|
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: if selected
|
bool: if selected
|
||||||
@@ -474,12 +459,7 @@ class IslandProjectRun(IslandUI):
|
|||||||
ROLE_SORTING.set('Descending', main=self)
|
ROLE_SORTING.set('Descending', main=self)
|
||||||
timeout = Timer(5, count=3).start()
|
timeout = Timer(5, count=3).start()
|
||||||
count = 0
|
count = 0
|
||||||
while 1:
|
for _ in self.loop():
|
||||||
if skip_first_screenshot:
|
|
||||||
skip_first_screenshot = False
|
|
||||||
else:
|
|
||||||
self.device.screenshot()
|
|
||||||
|
|
||||||
if timeout.reached():
|
if timeout.reached():
|
||||||
self.ui_ensure_management_page()
|
self.ui_ensure_management_page()
|
||||||
return False
|
return False
|
||||||
@@ -531,28 +511,23 @@ class IslandProjectRun(IslandUI):
|
|||||||
peaks = np.array(peaks) + y_top
|
peaks = np.array(peaks) + y_top
|
||||||
return ProductItem(self.device.image, peaks, project_id)
|
return ProductItem(self.device.image, peaks, project_id)
|
||||||
|
|
||||||
def product_select(self, option, project_id, trial=2, skip_first_screenshot=True):
|
def product_select(self, option, project_id, trial=2):
|
||||||
"""
|
"""
|
||||||
Select a product in items list.
|
Select a product in items list.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
option (str): option to select
|
option (str): option to select
|
||||||
trail (int): retry times
|
trail (int): retry times
|
||||||
skip_first_screenshot (bool):
|
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: if selected
|
bool: if selected
|
||||||
"""
|
"""
|
||||||
logger.hr('Island Select Product')
|
logger.hr('Island Select Product')
|
||||||
last = None
|
last_item = None
|
||||||
|
bottom_item = None
|
||||||
retry = trial
|
retry = trial
|
||||||
click_interval = Timer(1)
|
click_interval = Timer(1)
|
||||||
while 1:
|
for _ in self.loop():
|
||||||
if skip_first_screenshot:
|
|
||||||
skip_first_screenshot = False
|
|
||||||
else:
|
|
||||||
self.device.screenshot()
|
|
||||||
|
|
||||||
current = self.get_current_product(project_id)
|
current = self.get_current_product(project_id)
|
||||||
if trial > 0 and not len(current.items):
|
if trial > 0 and not len(current.items):
|
||||||
trial -= 1
|
trial -= 1
|
||||||
@@ -574,7 +549,7 @@ class IslandProjectRun(IslandUI):
|
|||||||
click_interval.reset()
|
click_interval.reset()
|
||||||
drag = False
|
drag = False
|
||||||
|
|
||||||
if last == current.items[-1]:
|
if bottom_item == current.items[-1]:
|
||||||
if retry > 0:
|
if retry > 0:
|
||||||
retry -= 1
|
retry -= 1
|
||||||
continue
|
continue
|
||||||
@@ -582,18 +557,21 @@ class IslandProjectRun(IslandUI):
|
|||||||
self.ui_ensure_management_page()
|
self.ui_ensure_management_page()
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
# clear record if current product is different during 2 drags
|
||||||
|
if last_item is not None and last_item != current:
|
||||||
|
self.device.click_record.pop()
|
||||||
|
self.device.click_record.pop()
|
||||||
|
|
||||||
if drag:
|
if drag:
|
||||||
last = current.items[-1]
|
last_item = current
|
||||||
self.device.click(last.button)
|
bottom_item = current.items[-1]
|
||||||
|
self.device.click(bottom_item.button)
|
||||||
self.island_drag_next_page((0, -300), ISLAND_PRODUCT_ITEMS.area, 0.5)
|
self.island_drag_next_page((0, -300), ISLAND_PRODUCT_ITEMS.area, 0.5)
|
||||||
|
|
||||||
def product_select_confirm(self, skip_first_screenshot=True):
|
def product_select_confirm(self):
|
||||||
"""
|
"""
|
||||||
Start the product after product selected.
|
Start the product after product selected.
|
||||||
|
|
||||||
Args:
|
|
||||||
skip_first_screenshot (bool):
|
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: if success
|
bool: if success
|
||||||
"""
|
"""
|
||||||
@@ -601,12 +579,7 @@ class IslandProjectRun(IslandUI):
|
|||||||
last = None
|
last = None
|
||||||
success = False
|
success = False
|
||||||
timeout = Timer(1.5, count=3).start()
|
timeout = Timer(1.5, count=3).start()
|
||||||
while 1:
|
for _ in self.loop():
|
||||||
if skip_first_screenshot:
|
|
||||||
skip_first_screenshot = False
|
|
||||||
else:
|
|
||||||
self.device.screenshot()
|
|
||||||
|
|
||||||
if timeout.reached():
|
if timeout.reached():
|
||||||
break
|
break
|
||||||
|
|
||||||
@@ -743,14 +716,13 @@ class IslandProjectRun(IslandUI):
|
|||||||
slot_option.append(deep_get(items_data, [proj_id, option]))
|
slot_option.append(deep_get(items_data, [proj_id, option]))
|
||||||
return slot_option
|
return slot_option
|
||||||
|
|
||||||
def island_project_run(self, names, trial=2, skip_first_screenshot=True):
|
def island_project_run(self, names, trial=2):
|
||||||
"""
|
"""
|
||||||
Execute island run to receive and start project.
|
Execute island run to receive and start project.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
names (list[str]): a list of name for island receive
|
names (list[str]): a list of name for island receive
|
||||||
trial (int): retry times
|
trial (int): retry times
|
||||||
skip_first_screenshot (bool):
|
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
list[timedelta]: future finish timedelta
|
list[timedelta]: future finish timedelta
|
||||||
@@ -758,12 +730,7 @@ class IslandProjectRun(IslandUI):
|
|||||||
logger.hr('Island Project Run', level=1)
|
logger.hr('Island Project Run', level=1)
|
||||||
end = False
|
end = False
|
||||||
timeout = Timer(3, count=3).start()
|
timeout = Timer(3, count=3).start()
|
||||||
while 1:
|
for _ in self.loop():
|
||||||
if skip_first_screenshot:
|
|
||||||
skip_first_screenshot = False
|
|
||||||
else:
|
|
||||||
self.device.screenshot()
|
|
||||||
|
|
||||||
if timeout.reached():
|
if timeout.reached():
|
||||||
break
|
break
|
||||||
|
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ __items_data_cn = {
|
|||||||
5: '汉堡肉饭', 6: '柠檬虾', 7: '爆炒小龙虾', 8: '烤肉狂欢', 9: '能量双拼套餐',
|
5: '汉堡肉饭', 6: '柠檬虾', 7: '爆炒小龙虾', 8: '烤肉狂欢', 9: '能量双拼套餐',
|
||||||
},
|
},
|
||||||
12: {
|
12: {
|
||||||
1: '纸张', 2: '记事本', 3: '桌椅', 4: '精选木桶', 5: '装饰画', 6: '文件柜',
|
1: '纸张', 2: '记事本', 3: '桌椅', 4: '精选木桶', 5: '文件柜', 6: '装饰画',
|
||||||
},
|
},
|
||||||
13: {
|
13: {
|
||||||
1: '炭笔', 2: '电缆', 3: '铁钉', 4: '硫酸', 5: '火药', 6: '刀叉餐具',
|
1: '炭笔', 2: '电缆', 3: '铁钉', 4: '硫酸', 5: '火药', 6: '刀叉餐具',
|
||||||
|
|||||||
@@ -155,6 +155,7 @@ class IslandTransport:
|
|||||||
info = ', '.join([f'{k}: {v}' for k, v in info.items()])
|
info = ', '.join([f'{k}: {v}' for k, v in info.items()])
|
||||||
return info
|
return info
|
||||||
|
|
||||||
|
|
||||||
class TransportItem:
|
class TransportItem:
|
||||||
# If the item is enough to submit and not in blacklist
|
# If the item is enough to submit and not in blacklist
|
||||||
load: bool
|
load: bool
|
||||||
@@ -212,6 +213,7 @@ class TransportItem:
|
|||||||
info = ', '.join([f'{k}: {v}' for k, v in info.items()])
|
info = ', '.join([f'{k}: {v}' for k, v in info.items()])
|
||||||
return info
|
return info
|
||||||
|
|
||||||
|
|
||||||
class IslandTransportRun(IslandUI):
|
class IslandTransportRun(IslandUI):
|
||||||
@cached_property
|
@cached_property
|
||||||
def blacklist(self):
|
def blacklist(self):
|
||||||
@@ -272,13 +274,10 @@ class IslandTransportRun(IslandUI):
|
|||||||
logger.info('trials of transport commission detect exhausted, stop')
|
logger.info('trials of transport commission detect exhausted, stop')
|
||||||
return commissions.select(valid=True)
|
return commissions.select(valid=True)
|
||||||
|
|
||||||
def transport_receive(self, skip_first_screenshot=True):
|
def transport_receive(self):
|
||||||
"""
|
"""
|
||||||
Receive all transport missions from transport page.
|
Receive all transport missions from transport page.
|
||||||
|
|
||||||
Args:
|
|
||||||
skip_first_screenshot (bool):
|
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: if received
|
bool: if received
|
||||||
"""
|
"""
|
||||||
@@ -288,12 +287,7 @@ class IslandTransportRun(IslandUI):
|
|||||||
success = True
|
success = True
|
||||||
click_timer = Timer(5, count=10).start()
|
click_timer = Timer(5, count=10).start()
|
||||||
confirm_timer = Timer(1, count=2).start()
|
confirm_timer = Timer(1, count=2).start()
|
||||||
while 1:
|
for _ in self.loop():
|
||||||
if skip_first_screenshot:
|
|
||||||
skip_first_screenshot = False
|
|
||||||
else:
|
|
||||||
self.device.screenshot()
|
|
||||||
|
|
||||||
if self.handle_info_bar():
|
if self.handle_info_bar():
|
||||||
click_timer.reset()
|
click_timer.reset()
|
||||||
confirm_timer.reset()
|
confirm_timer.reset()
|
||||||
@@ -334,13 +328,12 @@ class IslandTransportRun(IslandUI):
|
|||||||
|
|
||||||
return success
|
return success
|
||||||
|
|
||||||
def transport_refresh(self, comm, skip_first_screenshot=True):
|
def transport_refresh(self, comm):
|
||||||
"""
|
"""
|
||||||
Refresh the specific transport mission from transport page.
|
Refresh the specific transport mission from transport page.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
comm (IslandTransport): the commission to refresh
|
comm (IslandTransport): the commission to refresh
|
||||||
skip_first_screenshot (bool):
|
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: if success
|
bool: if success
|
||||||
@@ -349,12 +342,7 @@ class IslandTransportRun(IslandUI):
|
|||||||
self.interval_clear([TRANSPORT_REFRESH, POPUP_CONFIRM_WHITE])
|
self.interval_clear([TRANSPORT_REFRESH, POPUP_CONFIRM_WHITE])
|
||||||
success = True
|
success = True
|
||||||
confirm_timer = Timer(1, count=2).start()
|
confirm_timer = Timer(1, count=2).start()
|
||||||
while 1:
|
for _ in self.loop():
|
||||||
if skip_first_screenshot:
|
|
||||||
skip_first_screenshot = False
|
|
||||||
else:
|
|
||||||
self.device.screenshot()
|
|
||||||
|
|
||||||
if self.appear_then_click(TRANSPORT_REFRESH, offset=comm.offset, interval=2):
|
if self.appear_then_click(TRANSPORT_REFRESH, offset=comm.offset, interval=2):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
@@ -370,13 +358,12 @@ class IslandTransportRun(IslandUI):
|
|||||||
confirm_timer.reset()
|
confirm_timer.reset()
|
||||||
return success
|
return success
|
||||||
|
|
||||||
def transport_start(self, comm, skip_first_screenshot=True):
|
def transport_start(self, comm):
|
||||||
"""
|
"""
|
||||||
Start the specific transport mission from transport page.
|
Start the specific transport mission from transport page.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
comm (IslandTransport): the commission to start
|
comm (IslandTransport): the commission to start
|
||||||
skip_first_screenshot (bool):
|
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
bool: if success
|
bool: if success
|
||||||
@@ -385,12 +372,7 @@ class IslandTransportRun(IslandUI):
|
|||||||
self.interval_clear([GET_ITEMS_ISLAND, TRANSPORT_START, POPUP_CANCEL_WHITE])
|
self.interval_clear([GET_ITEMS_ISLAND, TRANSPORT_START, POPUP_CANCEL_WHITE])
|
||||||
success = True
|
success = True
|
||||||
confirm_timer = Timer(1, count=2).start()
|
confirm_timer = Timer(1, count=2).start()
|
||||||
while 1:
|
for _ in self.loop():
|
||||||
if skip_first_screenshot:
|
|
||||||
skip_first_screenshot = False
|
|
||||||
else:
|
|
||||||
self.device.screenshot()
|
|
||||||
|
|
||||||
if self.appear_then_click(TRANSPORT_START, offset=comm.offset, interval=2):
|
if self.appear_then_click(TRANSPORT_START, offset=comm.offset, interval=2):
|
||||||
success = False
|
success = False
|
||||||
confirm_timer.reset()
|
confirm_timer.reset()
|
||||||
|
|||||||
Reference in New Issue
Block a user