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