add 包满回城
This commit is contained in:
@@ -295,6 +295,7 @@ class GameLoopWorker(QThread):
|
||||
"""游戏状态主循环:支持状态监控、巡逻打怪、自动打怪、任务跟随、飞行模式、巡逻点录制"""
|
||||
state_signal = pyqtSignal(str)
|
||||
log_signal = pyqtSignal(str)
|
||||
stop_signal = pyqtSignal() # 炉石回城后触发,等同于按下停止按钮
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
@@ -372,6 +373,7 @@ class GameLoopWorker(QThread):
|
||||
eat_max_wait_sec=self.eat_max_wait_sec,
|
||||
stop_check=lambda: not self.running,
|
||||
)
|
||||
self.bot_move._on_hearthstone_stop = self.stop_signal.emit
|
||||
except ImportError as e:
|
||||
self.log_signal.emit(f"❌ 巡逻打怪依赖加载失败: {e}")
|
||||
return
|
||||
@@ -433,6 +435,7 @@ class GameLoopWorker(QThread):
|
||||
mount_key=str(layout.get("mount_key", "x") or "x"),
|
||||
mount_hold_sec=float(layout.get("mount_hold_sec", 1.6)),
|
||||
mount_retry_after_sec=float(layout.get("mount_retry_after_sec", 2.0)),
|
||||
enable_mount=bool(layout.get("enable_mount", True)),
|
||||
)
|
||||
self.logistics_manager = LogisticsManager(route_file=self.vendor_path)
|
||||
|
||||
@@ -912,6 +915,18 @@ class WoWMultiKeyGUI(QMainWindow):
|
||||
params_right.addRow("吃面包血量阈值:", self.eat_hp_threshold_spin)
|
||||
params_right.addRow("吃面包最长等待:", self.eat_max_wait_spin)
|
||||
|
||||
self.gs_hearthstone_key = QLineEdit()
|
||||
self.gs_hearthstone_key.setPlaceholderText("如 b")
|
||||
self.gs_hearthstone_key.setMaxLength(16)
|
||||
self.gs_hearthstone_key.setText("b")
|
||||
self.gs_bag_full_hearthstone = QCheckBox("包满时用炉石回城并停止")
|
||||
self.gs_bag_full_hearthstone.setChecked(False)
|
||||
params_right.addRow("炉石按键 (hearthstone_key):", self.gs_hearthstone_key)
|
||||
params_right.addRow("包满是否炉石回城:", self.gs_bag_full_hearthstone)
|
||||
|
||||
self.gs_enable_mount = QCheckBox("启用上马")
|
||||
self.gs_enable_mount.setChecked(True)
|
||||
params_right.addRow("是否上马 (enable_mount):", self.gs_enable_mount)
|
||||
self.gs_mount_key = QLineEdit()
|
||||
self.gs_mount_key.setPlaceholderText("如 x")
|
||||
self.gs_mount_key.setMaxLength(16)
|
||||
@@ -965,7 +980,10 @@ class WoWMultiKeyGUI(QMainWindow):
|
||||
self.gs_offset_left.setValue(cfg.get('offset_left', 20))
|
||||
self.gs_offset_top.setValue(cfg.get('offset_top', 45))
|
||||
self.gs_mount_key.setText(str(cfg.get('mount_key', 'x') or 'x'))
|
||||
self.gs_enable_mount.setChecked(bool(cfg.get('enable_mount', True)))
|
||||
self.gs_mount_hold.setValue(float(cfg.get('mount_hold_sec', 1.6)))
|
||||
self.gs_hearthstone_key.setText(str(cfg.get('hearthstone_key', 'b') or 'b'))
|
||||
self.gs_bag_full_hearthstone.setChecked(bool(cfg.get('bag_full_hearthstone', False)))
|
||||
self.gs_mount_retry.setValue(float(cfg.get('mount_retry_after_sec', 2.0)))
|
||||
except Exception as e:
|
||||
self.log(f"加载参数配置失败: {e}")
|
||||
@@ -994,8 +1012,11 @@ class WoWMultiKeyGUI(QMainWindow):
|
||||
cfg['offset_left'] = self.gs_offset_left.value()
|
||||
cfg['offset_top'] = self.gs_offset_top.value()
|
||||
cfg['mount_key'] = (self.gs_mount_key.text().strip() or 'x')
|
||||
cfg['enable_mount'] = self.gs_enable_mount.isChecked()
|
||||
cfg['mount_hold_sec'] = float(self.gs_mount_hold.value())
|
||||
cfg['mount_retry_after_sec'] = float(self.gs_mount_retry.value())
|
||||
cfg['hearthstone_key'] = (self.gs_hearthstone_key.text().strip() or 'b')
|
||||
cfg['bag_full_hearthstone'] = self.gs_bag_full_hearthstone.isChecked()
|
||||
path = save_layout_config(cfg)
|
||||
# bot 参数写入主配置文件
|
||||
self.config = self.config or {}
|
||||
@@ -1444,6 +1465,7 @@ class WoWMultiKeyGUI(QMainWindow):
|
||||
)
|
||||
self.game_worker.state_signal.connect(self.state_label.setText)
|
||||
self.game_worker.log_signal.connect(self.log)
|
||||
self.game_worker.stop_signal.connect(self._stop_game_worker)
|
||||
self.game_worker.finished.connect(self._on_game_loop_finished)
|
||||
self.game_worker.start()
|
||||
self.game_start_btn.setEnabled(False)
|
||||
|
||||
Reference in New Issue
Block a user