Refine combat approach timing and always run mouse loot

This commit is contained in:
王鹏
2026-04-21 22:50:25 +08:00
parent 68dafeea77
commit f2eaedbc7e
3 changed files with 87 additions and 8 deletions

View File

@@ -326,6 +326,7 @@ class GameLoopWorker(QThread):
use_hardware_input=True,
turn_error_key=None,
turn_error_hold_sec=None,
distance_interact_pause_sec=None,
):
super().__init__()
self.mode = mode # 'monitor' | 'patrol' | 'combat' | 'quest_follow' | 'flight' | 'record'
@@ -371,6 +372,10 @@ class GameLoopWorker(QThread):
self.turn_error_hold_sec = float(turn_error_hold_sec)
except (TypeError, ValueError):
self.turn_error_hold_sec = 0.8
try:
self.distance_interact_pause_sec = float(distance_interact_pause_sec)
except (TypeError, ValueError):
self.distance_interact_pause_sec = 1.0
def run(self):
try:
@@ -407,6 +412,7 @@ class GameLoopWorker(QThread):
enable_mouse_loot=self.enable_mouse_loot,
turn_error_key=self.turn_error_key,
turn_error_hold_sec=self.turn_error_hold_sec,
distance_interact_pause_sec=self.distance_interact_pause_sec,
)
self.bot_move._on_hearthstone_stop = self.stop_signal.emit
except ImportError as e:
@@ -422,6 +428,7 @@ class GameLoopWorker(QThread):
enable_mouse_loot=self.enable_mouse_loot,
turn_error_key=self.turn_error_key,
turn_error_hold_sec=self.turn_error_hold_sec,
distance_interact_pause_sec=self.distance_interact_pause_sec,
)
except ImportError as e:
self.log_signal.emit(f"❌ 自动打怪依赖加载失败: {e}")
@@ -1076,6 +1083,11 @@ class WoWMultiKeyGUI(QMainWindow):
self.turn_error_hold_spin.setSingleStep(0.1)
self.turn_error_hold_spin.setValue(0.8)
self.turn_error_hold_spin.setSuffix("")
self.distance_interact_pause_spin = QDoubleSpinBox()
self.distance_interact_pause_spin.setRange(0.1, 10.0)
self.distance_interact_pause_spin.setSingleStep(0.1)
self.distance_interact_pause_spin.setValue(1.0)
self.distance_interact_pause_spin.setSuffix("")
self.gs_hearthstone_key = QLineEdit()
self.gs_hearthstone_key.setPlaceholderText("如 b")
self.gs_hearthstone_key.setMaxLength(16)
@@ -1141,11 +1153,13 @@ class WoWMultiKeyGUI(QMainWindow):
game_grid.addWidget(self.turn_error_key_edit, 5, 1)
game_grid.addWidget(QLabel("需转身按住时长:"), 6, 0)
game_grid.addWidget(self.turn_error_hold_spin, 6, 1)
game_grid.addWidget(QLabel("距离远暂停技能时长:"), 7, 0)
game_grid.addWidget(self.distance_interact_pause_spin, 7, 1)
game_grid.addWidget(self.gs_use_hardware_input, 7, 0, 1, 2)
game_grid.addWidget(self.gs_use_hardware_input, 8, 0, 1, 2)
game_grid.addWidget(QLabel("复活按键:"), 6, 2)
game_grid.addWidget(self.gs_resurrect_key, 6, 3)
game_grid.addWidget(self.gs_bag_full_hearthstone, 8, 1)
game_grid.addWidget(self.gs_bag_full_hearthstone, 9, 1)
params_layout.addWidget(game_group)
@@ -1199,6 +1213,7 @@ class WoWMultiKeyGUI(QMainWindow):
self.eat_max_wait_spin.setValue(float(bot_cfg.get('eat_max_wait_sec', 30.0)))
self.turn_error_key_edit.setText(str(bot_cfg.get('turn_error_key', 's')).strip() or 's')
self.turn_error_hold_spin.setValue(float(bot_cfg.get('turn_error_hold_sec', 0.8)))
self.distance_interact_pause_spin.setValue(float(bot_cfg.get('distance_interact_pause_sec', 1.0)))
self.gs_enable_mouse_loot.setChecked(bool(bot_cfg.get('enable_mouse_loot', True)))
self.gs_use_hardware_input.setChecked(bool(bot_cfg.get('use_hardware_input', True)))
except Exception:
@@ -1208,6 +1223,7 @@ class WoWMultiKeyGUI(QMainWindow):
self.eat_max_wait_spin.setValue(30.0)
self.turn_error_key_edit.setText('s')
self.turn_error_hold_spin.setValue(0.8)
self.distance_interact_pause_spin.setValue(1.0)
self.gs_enable_mouse_loot.setChecked(True)
self.gs_use_hardware_input.setChecked(True)
@@ -1239,6 +1255,7 @@ class WoWMultiKeyGUI(QMainWindow):
self.config['bot']['eat_max_wait_sec'] = float(self.eat_max_wait_spin.value())
self.config['bot']['turn_error_key'] = self.turn_error_key_edit.text().strip() or 's'
self.config['bot']['turn_error_hold_sec'] = float(self.turn_error_hold_spin.value())
self.config['bot']['distance_interact_pause_sec'] = float(self.distance_interact_pause_spin.value())
self.config['bot']['enable_mouse_loot'] = self.gs_enable_mouse_loot.isChecked()
self.config['bot']['use_hardware_input'] = self.gs_use_hardware_input.isChecked()
self._save_main_config()
@@ -1681,6 +1698,7 @@ class WoWMultiKeyGUI(QMainWindow):
eat_max_wait_sec = 30.0
turn_error_key = self.turn_error_key_edit.text().strip() or 's'
turn_error_hold_sec = float(self.turn_error_hold_spin.value())
distance_interact_pause_sec = float(self.distance_interact_pause_spin.value())
# 从 layout_config 读取死亡/复活按键
try:
@@ -1717,6 +1735,7 @@ class WoWMultiKeyGUI(QMainWindow):
use_hardware_input=use_hardware_input,
turn_error_key=turn_error_key,
turn_error_hold_sec=turn_error_hold_sec,
distance_interact_pause_sec=distance_interact_pause_sec,
)
self.game_worker.state_signal.connect(self.state_label.setText)
self.game_worker.log_signal.connect(self.log)