diff --git a/src/heist_path/HeistPathB.py b/src/heist_path/HeistPathB.py index b5d4a52..5aaa9be 100644 --- a/src/heist_path/HeistPathB.py +++ b/src/heist_path/HeistPathB.py @@ -6,7 +6,16 @@ class HeistPathB(HeistPathA): # 全新大厅到LG1办公层线路,办公层避战部分优化 def run_path(self): - self.goto_lg1_skip() + idx = self.avoider_strategy_index() + if idx == -1: + self.log_round_info("没有配置避战角色,全程使用原始线路(路线A)") + self.goto_lg1() + elif idx == 0: + self.log_round_info("配置避战角色狗哥,使用早雾避战(路线B)") + self.goto_lg1_skip_Sakiri() + elif idx == 1: + self.log_round_info("配置避战角色浔,使用浔避战(路线B)") + self.goto_lg1_skip_Hotori() self.wait_team_ui_settle() # if not self.check_current_floor_str("办公"): # self.check_current_floor(1) @@ -14,8 +23,15 @@ def run_path(self): self.lg1_wp1_safer() self.lg1_wp2() self.lg1_wp3() - self.lg1_wp4_buster() - self.lg1_wp5_buster() + if idx == -1: + self.lg1_wp4() + self.lg1_wp5_avoid_combat_01() + elif idx == 0: + self.lg1_wp4_buster() + self.lg1_wp5_buster() + elif idx == 1: + self.lg1_wp4() + self.lg1_wp5_avoid_combat_03() self.wait_team_ui_settle() # if not self.check_current_floor_str("藏品"): # self.check_current_floor(2) @@ -32,8 +48,8 @@ def run_path(self): else: self.lg2_wp4_to_exit3() - # 全新大厅到LG1办公层线路,早雾控怪避战,理论最快11分00到办公层 - def goto_lg1_skip(self): + # 全新大厅到LG1办公层线路,早雾控怪避战,理论正常11分00到办公层(实际耗时60s) + def goto_lg1_skip_Sakiri(self): self.log_round_info("大厅前往LG1") self.sleep(0.30) self.switch_to_runner(check_switched=True) @@ -142,41 +158,180 @@ def goto_lg1_skip(self): self.send_key_up("d") self.send_key_up("w") self.switch_to_fighter(check_switched=True, mode=1) # 切到早雾控怪 - self.sleep(0.42) + self.sleep(0.24) self.send_key("s", down_time=0.10) - self.sleep(0.72) + self.sleep(1.14) self.send_key("e", down_time=2.60) self.sleep(0.10) self.send_key_down("w") + self.sleep(0.14) + self.send_key_down("d") + self.wait_and_interact(direction="d", is_lock=True, time_out=7.64) self.sleep(0.10) - self.wait_and_interact(direction="w", is_lock=True, time_out=7.64) + self.send_key_up("w") if self.wait_ocr(x=0.60, y=0.52, to_x=0.70, to_y=0.57, match=re.compile("开门"), time_out=1.14): self.sleep(0.10) self.send_key("f", down_time=0.10) self.sleep(0.10) elif self.find_interac(): + self.sleep(0.20) self.clear_current_combat() self.sleep(0.10) - isOpenDoor = False - isOpenLoop =0 - while isOpenDoor == False and isOpenLoop <3: - if not self.wait_ocr(x=0.60, y=0.52, to_x=0.70, to_y=0.57, match=re.compile("开门"), time_out=1.14): - self.send_key("f", down_time=0.10) - self.sleep(0.32) - isOpenLoop += 1 - isOpenDoor = False - else: - isOpenDoor = True - self.send_key_down("w") - self.sleep(0.10) - self.wait_and_interact(direction="w", is_lock=False, time_out=3.65) + self.send_key("w", down_time=0.32) self.sleep(0.10) + self.send_key_down('d') + self.sleep(0.05) + self.wait_and_interact(direction="d", is_lock=False, time_out=3.65) + if self.find_interac(): + is_open_door = self.lobby_open_door_check() + if not is_open_door: + raise AbortException("timeout for wait_and_interact") # 考虑之后加复位或其他 + else: + self.sleep(0.10) + self.send_key("f", down_time=0.10) + self.sleep(0.10) self.send_key_down("w") self.sleep(0.24) self.send_key("a", down_time=0.36) self.wait_and_interact(direction="w", is_lock=False, time_out=3.65) self.sleep(0.30) + # 全新大厅到LG1办公层线路,浔时停避战,理论正常11分12到办公层(实际耗时65s) + def goto_lg1_skip_Hotori(self): + self.log_round_info("大厅前往LG1") + self.sleep(0.30) + self.switch_to_avoider(check_switched=True) + self.sleep(0.10) + self.send_key_down('w') + self.sleep(0.64) + self.send_key('lshift', down_time=0.24) + self.sleep(0.64) + self.send_key('lshift', down_time=0.24) + self.sleep(0.64) + self.send_key('lshift', down_time=0.24) + self.sleep(0.64) + self.send_key_up('w') + self.sleep(0.10) + self.send_key_down('d') + self.sleep(0.64) + self.send_key('lshift', down_time=0.24) + self.sleep(0.64) + self.send_key_up('d') + self.sleep(0.10) + self.send_key_down('w') + self.sleep(0.24) + self.send_key("lshift", down_time=0.24) + self.sleep(0.60) + self.wait_and_interact(direction="w", is_lock=True, time_out=5.2) + self.sleep(0.10) + self.click(down_time=0.64) + self.sleep(0.10) + self.send_key_down("d") + self.sleep(0.32) + self.send_key_down("w") + self.sleep(0.24) + self.send_key_up("d") + self.sleep(0.24) + self.send_key('space', down_time=0.24) + self.sleep(0.64) + self.send_key('space', down_time=0.24) + self.sleep(0.64) + self.send_key('space', down_time=0.24) + self.sleep(0.64) + self.send_key('space', down_time=0.24) + self.sleep(0.64) + self.send_key('space', down_time=0.24) + self.sleep(0.64) + self.send_key('space', down_time=0.24) + self.sleep(0.64) + self.send_key('space', down_time=0.24) + self.sleep(0.64) + self.send_key('space', down_time=0.24) + self.sleep(0.64) + self.send_key('space', down_time=0.24) + self.sleep(0.64) + self.send_key('space', down_time=0.24) + self.sleep(0.64) + self.send_key_up("w") + self.sleep(0.10) + self.click(down_time=0.64) + self.send_key_down("w") + self.wait_and_interact(direction="w", is_lock=True, time_out=6.4) + self.sleep(0.10) + self.send_key_down("w") + self.sleep(0.32) + self.send_key("a", down_time=0.32) + self.sleep(0.32) + self.send_key("a", down_time=0.42) + self.sleep(0.76) + self.send_key_up("w") + self.sleep(0.10) + self.send_key_down("a") + self.sleep(0.20) + self.send_key('lshift', down_time=0.20) + self.sleep(0.20) + self.send_key('lshift', down_time=0.20) + self.sleep(0.20) + self.send_key('lshift', down_time=0.20) + self.sleep(1.20) + self.send_key_up("a") + self.sleep(0.10) + self.send_key("a", down_time=0.10) + self.sleep(0.10) + self.send_key("w", down_time=0.20) + self.sleep(0.10) + self.send_key("w", down_time=0.10) + self.sleep(0.10) + self.send_key("d", down_time=0.15) + self.sleep(0.10) + self.send_key("d", down_time=0.15) + self.sleep(0.10) + self.send_key("s", down_time=0.10) + self.sleep(0.10) + self.send_key("s", down_time=1.16) + self.sleep(0.10) + self.send_key("d", down_time=0.10) + self.sleep(0.10) + self.send_key("d", down_time=1.82) + self.sleep(0.10) + self.send_key("s", down_time=0.10) + self.sleep(0.10) + self.send_key("s", down_time=0.10) + self.sleep(0.20) + self.click(0.50, 0.50, key="middle", down_time=0.15) + self.sleep(0.10) + self.click(down_time=0.64) + self.sleep(0.10) + self.send_key_down('w') + self.sleep(5.14) + self.send_key_down("d") + self.sleep(0.36) + self.send_key_up('d') + self.sleep(3.60) + self.send_key_up('w') + self.sleep(0.10) + self.click(down_time=0.64) + self.wait_and_interact(direction="w", is_lock=True, time_out=7.64) + self.sleep(0.10) + self.send_key_down("w") + self.sleep(0.24) + self.send_key("a", down_time=0.36) + self.wait_and_interact(direction="w", is_lock=False, time_out=3.65) + self.sleep(0.30) + + def lobby_open_door_check(self, check_time = 3): + open_door = False + open_loop =0 + while not open_door and open_loop < check_time: + if self.wait_ocr(x=0.60, y=0.52, to_x=0.70, to_y=0.57, match=re.compile("开门"), time_out=1.14): + open_door = True + else: + self.sleep(0.10) + self.send_key("f", down_time=0.10) + self.sleep(0.20) + open_loop += 1 + return open_door + # LG1部分优化 def lg1_wp1_safer(self): self.log_round_info("LG1 WP1 Safer") diff --git a/src/tasks/AutoHeistTask.py b/src/tasks/AutoHeistTask.py index 8855fd3..49724b6 100644 --- a/src/tasks/AutoHeistTask.py +++ b/src/tasks/AutoHeistTask.py @@ -53,7 +53,7 @@ def _inst_gap(): [ _inst_line("📍 步骤起点:站在可互动小吱的位置开始", "#FF5555", bold=True), _inst_line("⚙️ 镜头设置:控制 ➔ 移动镜头修正 ➔ 禁用", "#FF5555", bold=True), - _inst_line("⚠️ 必備條件:至少有一個復活道具", "#FF5555", bold=True), + _inst_line("⚠️ 必备条件:至少有一个复活道具", "#FF5555", bold=True), _inst_line("🥷 避战方式:翳【长按 Shift】/ 浔【长按攻击】", "#FF5555", bold=True), _inst_gap(), _inst_line("路径1推荐设置", bold=True), @@ -63,9 +63,15 @@ def _inst_gap(): _inst_line("避战角色(可选): 翳 / 浔", indent=1), _inst_gap(), _inst_line("路径2推荐设置", bold=True), - _inst_line("战斗角色: 早雾(必须,战斗角色中最前) / 主角 / 哈尼娅", indent=1), + _inst_line("画质:性能 | 分辨率:1080P | FPS:60", indent=1), _inst_line("跑图角色: 薄荷", indent=1), - _inst_line("避战角色: 翳", indent=1), + _inst_line("早雾避战:" , indent=1), + _inst_line(" 战斗角色: 早雾(必须,战斗角色中最前,其他战斗角色随意,可塞安魂曲) / 主角 / 哈尼娅", indent=1), + _inst_line(" 避战角色: 翳(必须,设置为shift避战)", indent=1), + _inst_line("浔避战:" , indent=1), + _inst_line(" 战斗角色: 随意(战斗角色随意,可塞安魂曲) / 主角 / 哈尼娅", indent=1), + _inst_line(" 避战角色: 浔(必须,设置为长按攻击避战)", indent=1), + ] )