0
0
mirror of https://github.com/ok-oldking/ok-wuthering-waves.git synced 2025-06-03 09:25:19 +00:00

优化弃置声骸 滚动

This commit is contained in:
firedcto@gmail.com 2024-09-30 23:39:24 +08:00
parent cf0aff63a0
commit 3d80b8792e

View File

@ -72,7 +72,9 @@ class DiscardEchoTask(BaseCombatTask):
self.row_count = 4
self.echo_x_distance = (0.58 - 0.15) / (self.col_count - 1)
self.echo_y_distance = (0.76 - 0.19) / (self.row_count - 1)
self.scroll_distance = 0
self.set_names = []
for i in range(len(self.sets)):
self.set_names.append(f'set_name_{i}')
def run(self):
self.check_main()
@ -86,7 +88,6 @@ class DiscardEchoTask(BaseCombatTask):
self.click_relative(0.21, 0.29, after_sleep=1)
self.click_relative(0.80, 0.83, after_sleep=1)
self.check_level_sort()
while True:
if col >= self.col_count:
col = 0
@ -131,41 +132,37 @@ class DiscardEchoTask(BaseCombatTask):
return main_stat
def scroll_down_a_page(self):
if self.scroll_distance == 0:
source_box = self.box_of_screen(0.37, 0.69, 0.53, 0.84)
source_template = Feature(source_box.crop_frame(self.frame), source_box.x, source_box.y)
target_box = self.box_of_screen(0.36, 0.59, 0.54, 0.84)
self.click_relative(0.5, 0.5)
self.sleep(0.1)
self.scroll_relative(0.5, 0.5, -1)
self.sleep(1)
target = self.find_one('target_box', box=target_box, template=source_template, threshold=0.7)
if not target or source_box.y - target.y <= 0:
raise Exception("Can't find scroll distance!")
self.scroll_distance = source_box.y - target.y
offset = -1
else:
offset = 0
to_scroll = round(self.height_of_screen(0.86 - 0.11) / self.scroll_distance) + offset
self.log_info(f'to_scroll {to_scroll} self.scroll_distance {self.scroll_distance}')
i = 0
while i < to_scroll:
self.click_relative(0.5, 0.5)
self.sleep(0.1)
i += 1
offset = -1
self.scroll_relative(0.5, 0.5, offset)
self.sleep(0.1)
set_icon = self.find_best_match_in_box(self.box_of_screen(0.36, 0.67, 0.39, 0.86), self.set_names, 0.3)
# last_box.x -= self.height_of_screen(0.04)
# last_box.width += self.width_of_screen(0.03)
# last_box.y -= self.height_of_screen(0.05)
# last_box.height += self.width_of_screen(0.04)
source_template = Feature(set_icon.crop_frame(self.frame), set_icon.x, set_icon.y)
steps = 0.08
target_box = set_icon.copy(y_offset=-self.height_of_screen(steps), height_offset=self.height_of_screen(steps))
while True:
self.click_relative(0.7, 0.5)
self.sleep(0.05)
self.scroll_relative(0.7, 0.5, -2)
self.sleep(0.2)
target = self.find_one('target_box', box=target_box, template=source_template, threshold=0.9)
if not target:
self.sleep(1)
return
self.log_info(f'found target box {target}, continue scrolling')
target_box = target.copy(y_offset=-self.height_of_screen(steps),
height_offset=self.height_of_screen(steps))
if target_box.y < 0:
target_box.y = 0
def find_set_by_template(self):
box = self.get_box_by_name('box_set_name')
set_names = []
for i in range(len(self.sets)):
set_names.append(f'set_name_{i}')
set_name = self.find_best_match_in_box(box, set_names, 0.3)
set_name = self.find_best_match_in_box(box, self.set_names, 0.3)
if not set_name:
raise Exception("Can't find set name")
index = find_index_in_list(set_names, set_name.name)
index = find_index_in_list(self.set_names, set_name.name)
if index == -1:
raise Exception("Can't find set name")
max_name = self.sets[index]