Fix(storage):修复分解装备卡死

- 先糊一坨上去凑合用
- 后续更新记得回滚
This commit is contained in:
W1NDes 2025-05-20 19:57:26 +08:00
parent c24847fdd6
commit 73ed8645ec
7 changed files with 39 additions and 13 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.0 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -4,7 +4,11 @@ from module.base.template import Template
# This file was automatically generated by dev_tools/button_extract.py.
# Don't modify it manually.
BOX_USE = Button(area={'cn': (768, 486, 834, 522), 'en': (784, 497, 843, 523), 'jp': (827, 491, 918, 528), 'tw': (768, 486, 834, 522)}, color={'cn': (141, 173, 212), 'en': (156, 184, 220), 'jp': (128, 168, 219), 'tw': (141, 173, 212)}, button={'cn': (756, 480, 916, 528), 'en': (750, 483, 919, 535), 'jp': (755, 483, 919, 537), 'tw': (756, 480, 916, 528)}, file={'cn': './assets/cn/storage/BOX_USE.png', 'en': './assets/en/storage/BOX_USE.png', 'jp': './assets/jp/storage/BOX_USE.png', 'tw': './assets/cn/storage/BOX_USE.png'})
BOX_USE = Button(area={'cn': (747, 488, 826, 532), 'en': (784, 497, 843, 523), 'jp': (827, 491, 918, 528), 'tw': (747, 488, 826, 532)}, color={'cn': (127, 166, 214), 'en': (156, 184, 220), 'jp': (128, 168, 219), 'tw': (127, 166, 214)}, button={'cn': (756, 480, 916, 528), 'en': (750, 483, 919, 535), 'jp': (755, 483, 919, 537), 'tw': (756, 480, 916, 528)}, file={'cn': './assets/cn/storage/BOX_USE.png', 'en': './assets/en/storage/BOX_USE.png', 'jp': './assets/jp/storage/BOX_USE.png', 'tw': './assets/cn/storage/BOX_USE.png'})
BOX_USE_ENSURE = Button(area={'cn': (752, 600, 927, 660), 'en': (752, 600, 927, 660), 'jp': (752, 600, 927, 660), 'tw': (752, 600, 927, 660)}, color={'cn': (84, 130, 187), 'en': (84, 130, 187), 'jp': (84, 130, 187), 'tw': (84, 130, 187)}, button={'cn': (752, 600, 927, 660), 'en': (752, 600, 927, 660), 'jp': (752, 600, 927, 660), 'tw': (752, 600, 927, 660)}, file={'cn': './assets/cn/storage/BOX_USE_ENSURE.png', 'en': './assets/cn/storage/BOX_USE_ENSURE.png', 'jp': './assets/cn/storage/BOX_USE_ENSURE.png', 'tw': './assets/cn/storage/BOX_USE_ENSURE.png'})
BOX_USE_PAGE = Button(area={'cn': (587, 419, 694, 526), 'en': (587, 419, 694, 526), 'jp': (587, 419, 694, 526), 'tw': (587, 419, 694, 526)}, color={'cn': (131, 146, 178), 'en': (131, 146, 178), 'jp': (131, 146, 178), 'tw': (131, 146, 178)}, button={'cn': (587, 419, 694, 526), 'en': (587, 419, 694, 526), 'jp': (587, 419, 694, 526), 'tw': (587, 419, 694, 526)}, file={'cn': './assets/cn/storage/BOX_USE_PAGE.png', 'en': './assets/cn/storage/BOX_USE_PAGE.png', 'jp': './assets/cn/storage/BOX_USE_PAGE.png', 'tw': './assets/cn/storage/BOX_USE_PAGE.png'})
BOX_USE_QUIT = Button(area={'cn': (768, 576, 922, 628), 'en': (768, 576, 922, 628), 'jp': (768, 576, 922, 628), 'tw': (768, 576, 922, 628)}, color={'cn': (196, 118, 108), 'en': (196, 118, 108), 'jp': (196, 118, 108), 'tw': (196, 118, 108)}, button={'cn': (768, 576, 922, 628), 'en': (768, 576, 922, 628), 'jp': (768, 576, 922, 628), 'tw': (768, 576, 922, 628)}, file={'cn': './assets/cn/storage/BOX_USE_QUIT.png', 'en': './assets/cn/storage/BOX_USE_QUIT.png', 'jp': './assets/cn/storage/BOX_USE_QUIT.png', 'tw': './assets/cn/storage/BOX_USE_QUIT.png'})
BOX_USE_QUIT_ENSURE = Button(area={'cn': (703, 481, 878, 541), 'en': (703, 481, 878, 541), 'jp': (703, 481, 878, 541), 'tw': (703, 481, 878, 541)}, color={'cn': (101, 147, 203), 'en': (101, 147, 203), 'jp': (101, 147, 203), 'tw': (101, 147, 203)}, button={'cn': (703, 481, 878, 541), 'en': (703, 481, 878, 541), 'jp': (703, 481, 878, 541), 'tw': (703, 481, 878, 541)}, file={'cn': './assets/cn/storage/BOX_USE_QUIT_ENSURE.png', 'en': './assets/cn/storage/BOX_USE_QUIT_ENSURE.png', 'jp': './assets/cn/storage/BOX_USE_QUIT_ENSURE.png', 'tw': './assets/cn/storage/BOX_USE_QUIT_ENSURE.png'})
DISASSEMBLE = Button(area={'cn': (357, 666, 456, 690), 'en': (346, 668, 467, 684), 'jp': (357, 663, 456, 691), 'tw': (357, 666, 456, 690)}, color={'cn': (191, 192, 192), 'en': (193, 193, 194), 'jp': (169, 170, 170), 'tw': (191, 192, 192)}, button={'cn': (348, 661, 466, 696), 'en': (346, 659, 467, 698), 'jp': (349, 657, 468, 700), 'tw': (348, 661, 466, 696)}, file={'cn': './assets/cn/storage/DISASSEMBLE.png', 'en': './assets/en/storage/DISASSEMBLE.png', 'jp': './assets/jp/storage/DISASSEMBLE.png', 'tw': './assets/cn/storage/DISASSEMBLE.png'})
DISASSEMBLE_CANCEL = Button(area={'cn': (900, 659, 973, 690), 'en': (881, 659, 993, 684), 'jp': (899, 658, 971, 691), 'tw': (900, 659, 973, 690)}, color={'cn': (186, 186, 187), 'en': (192, 192, 193), 'jp': (167, 167, 168), 'tw': (186, 186, 187)}, button={'cn': (863, 649, 1015, 700), 'en': (854, 649, 1021, 699), 'jp': (860, 647, 1021, 704), 'tw': (863, 649, 1015, 700)}, file={'cn': './assets/cn/storage/DISASSEMBLE_CANCEL.png', 'en': './assets/en/storage/DISASSEMBLE_CANCEL.png', 'jp': './assets/jp/storage/DISASSEMBLE_CANCEL.png', 'tw': './assets/cn/storage/DISASSEMBLE_CANCEL.png'})
DISASSEMBLE_CONFIRM = Button(area={'cn': (1108, 657, 1183, 690), 'en': (1063, 658, 1230, 681), 'jp': (1108, 657, 1185, 691), 'tw': (1108, 657, 1183, 690)}, color={'cn': (202, 149, 143), 'en': (204, 152, 145), 'jp': (198, 134, 126), 'tw': (202, 149, 143)}, button={'cn': (1067, 650, 1225, 698), 'en': (1063, 651, 1230, 697), 'jp': (1070, 645, 1230, 704), 'tw': (1067, 650, 1225, 698)}, file={'cn': './assets/cn/storage/DISASSEMBLE_CONFIRM.png', 'en': './assets/en/storage/DISASSEMBLE_CONFIRM.png', 'jp': './assets/jp/storage/DISASSEMBLE_CONFIRM.png', 'tw': './assets/cn/storage/DISASSEMBLE_CONFIRM.png'})

View File

@ -1,3 +1,4 @@
import time
import numpy as np
from module.base.button import ButtonGrid
@ -67,8 +68,11 @@ class StorageHandler(StorageUI):
GET_ITEMS_2,
EQUIPMENT_FULL,
])
appearQUIT_ENSURE = False
used_button = Button(area=(712,308,716,312),color=(0,0,0),button=(712,308,716,312))
click_count=0
while 1:
logger.info("in _storage_use_one_box")
if skip_first_screenshot:
skip_first_screenshot = False
else:
@ -79,25 +83,43 @@ class StorageHandler(StorageUI):
continue
# 75 is a magic number to distinguish `use 1` and `use 10`
# See https://github.com/LmeSzinc/AzurLaneAutoScript/pull/1529#issuecomment-1221315455
if self.appear_then_click(BOX_USE, offset=(-75, -20, 10, 20), interval=5):
# if self.appear_then_click(BOX_USE, offset=(-75, -20, 10, 20), interval=5):
# used = 10
# self.interval_reset(MATERIAL_CHECK)
# continue
# if self.appear_then_click(BOX_USE, offset=(-330, -20, -75, 20), interval=5):
# used = 1
# self.interval_reset(MATERIAL_CHECK)
# continue
if self.appear_then_click(BOX_USE, offset=(5, 5), interval=5):
used = 10
self.interval_reset(MATERIAL_CHECK)
continue
if self.appear_then_click(BOX_USE, offset=(-330, -20, -75, 20), interval=5):
used = 1
self.interval_reset(MATERIAL_CHECK)
continue
if self.appear(GET_ITEMS_1, offset=(5, 5), interval=5):
self.device.click(MATERIAL_ENTER)
self.interval_reset(MATERIAL_CHECK)
success = True
# success = True
continue
if self.appear(GET_ITEMS_2, offset=(5, 5), interval=5):
self.device.click(MATERIAL_ENTER)
self.interval_reset(MATERIAL_CHECK)
success = True
# success = True
continue
if self.appear(BOX_USE_PAGE, offset=(5, 5), interval=5):
while click_count <= 10:
click_count += 1
self.device.click(used_button,control_check=False)
time.sleep(0.5)
if self.appear_then_click(BOX_USE_ENSURE, offset=(5, 5), interval=5):
continue
continue
if self.appear_then_click(BOX_USE_QUIT, offset=(5, 5), interval=5):
appearQUIT_ENSURE = True
continue
if appearQUIT_ENSURE:
if self.appear_then_click(BOX_USE_QUIT_ENSURE, offset=(5, 5), interval=5):
success = True
continue
# Storage full
if self.appear(EQUIPMENT_FULL, offset=(20, 20)):
logger.info('Storage full')
@ -180,14 +202,14 @@ class StorageHandler(StorageUI):
MATERIAL_SCROLL.set_top(main=self)
while amount > used:
logger.hr('Use boxes in page')
logger.hr('Use boxes in page1')
used += self._storage_use_box_in_page(rarity=rarity, amount=amount - used)
if MATERIAL_SCROLL.at_bottom(main=self):
logger.info('Scroll bar reached end, stop')
break
MATERIAL_SCROLL.next_page(main=self)
else:
logger.hr('Use boxes in page')
logger.hr('Use boxes in page2')
used += self._storage_use_box_in_page(rarity=rarity, amount=amount)
return used
@ -263,7 +285,7 @@ class StorageHandler(StorageUI):
# Probably because no item is selected,
# _storage_disassemble_equipment_execute() will retry selecting
logger.warning('Failed to confirm disassemble after 3 trial')
disassembled = 0
# disassembled = disassembled
break
if self.appear_then_click(DISASSEMBLE_CONFIRM, offset=(20, 20), interval=5):