diff --git a/auto_bot_move.py b/auto_bot_move.py index ce885bc..fa25dd2 100644 --- a/auto_bot_move.py +++ b/auto_bot_move.py @@ -259,6 +259,7 @@ class AutoBotMove: turn_error_hold_sec=None, distance_interact_pause_sec=None, mailbox_route_path=None, + skip_prepare_route=False, ): self.last_tab_time = 0 self.last_interaction_time = 0 # 记录上一次按互动键的时间 @@ -289,6 +290,7 @@ class AutoBotMove: self.distance_interact_brake_sec = 0.08 self._last_mouse_path_scale_signature = None self.logistics_resume_cooldown_until = 0.0 + self.skip_prepare_route = bool(skip_prepare_route) # stop_check: 返回 True 表示需要立即停止(用于中断阻塞中的后勤/路线导航) self._stop_check = stop_check if callable(stop_check) else (lambda: False) @@ -328,6 +330,10 @@ class AutoBotMove: except Exception: self.prepare_route_waypoints = [] print(f">>> [准备路线] 加载失败,忽略配置: {prepare_route_path}") + if self.skip_prepare_route: + if self.prepare_route_waypoints: + print(">>> [准备路线] 已勾选跳过准备路线,直接开始巡逻。") + self.prepare_route_waypoints = [] self.prepare_route_index = 0 self.prepare_route_completed = not bool(self.prepare_route_waypoints) self.is_running_prepare_route = bool(self.prepare_route_waypoints) diff --git a/wow_multikey_gui.py b/wow_multikey_gui.py index 80dcf6d..e97761f 100644 --- a/wow_multikey_gui.py +++ b/wow_multikey_gui.py @@ -391,6 +391,7 @@ class GameLoopWorker(QThread): turn_error_key=None, turn_error_hold_sec=None, distance_interact_pause_sec=None, + skip_prepare_route=False, ): super().__init__() self.mode = mode # 'monitor' | 'patrol' | 'combat' | 'quest_follow' | 'flight' | 'record' @@ -405,6 +406,7 @@ class GameLoopWorker(QThread): self.prepare_route_path = prepare_route_path self.vendor_path = vendor_path self.mailbox_route_path = mailbox_route_path + self.skip_prepare_route = bool(skip_prepare_route) self.record_filename = record_filename or 'waypoints' self.record_min_distance = record_min_distance self.attack_loop_path = attack_loop_path or None @@ -496,6 +498,7 @@ class GameLoopWorker(QThread): turn_error_hold_sec=self.turn_error_hold_sec, distance_interact_pause_sec=self.distance_interact_pause_sec, mailbox_route_path=self.mailbox_route_path, + skip_prepare_route=self.skip_prepare_route, ) self.bot_move._on_hearthstone_stop = self.stop_signal.emit except ImportError as e: @@ -805,10 +808,13 @@ class WoWMultiKeyGUI(QMainWindow): self.route_profile_combo.setMinimumWidth(240) self.patrol_attack_loop_combo = QComboBox() self.patrol_attack_loop_combo.setMinimumWidth(200) + self.skip_prepare_route_check = QCheckBox("跳过准备路线") + self.skip_prepare_route_check.setChecked(False) self._refresh_recorder_combos() refresh_btn = QPushButton("🔄 刷新列表") refresh_btn.clicked.connect(self._refresh_recorder_combos) patrol_layout.addRow("路线方案 JSON:", self.route_profile_combo) + patrol_layout.addRow("", self.skip_prepare_route_check) patrol_layout.addRow("攻击循环:", self.patrol_attack_loop_combo) patrol_layout.addRow("", refresh_btn) self.patrol_group.setVisible(False) @@ -1807,6 +1813,7 @@ class WoWMultiKeyGUI(QMainWindow): flight_json_path = None resurrection_route_a_path = None resurrection_route_b_path = None + skip_prepare_route = False if mode == 'patrol': profile_path = self.route_profile_combo.currentData() or "" if not profile_path: @@ -1827,6 +1834,7 @@ class WoWMultiKeyGUI(QMainWindow): QMessageBox.warning(self, "提示", "已启用包满邮寄,路线方案需包含 mailbox_route 邮箱路线") return route_profile_path = profile_path + skip_prepare_route = self.skip_prepare_route_check.isChecked() attack_loop_path = None if mode == 'patrol': attack_loop_path = self.patrol_attack_loop_combo.currentData() or None @@ -1936,6 +1944,7 @@ class WoWMultiKeyGUI(QMainWindow): turn_error_key=turn_error_key, turn_error_hold_sec=turn_error_hold_sec, distance_interact_pause_sec=distance_interact_pause_sec, + skip_prepare_route=skip_prepare_route, ) self.game_worker.state_signal.connect(self.state_label.setText) self.game_worker.log_signal.connect(self.log)