From 9d82c8cc68a90d20a9f09af66254ee95899f16aa Mon Sep 17 00:00:00 2001 From: W1NDes Date: Mon, 16 Feb 2026 04:06:05 +0800 Subject: [PATCH] =?UTF-8?q?Fix(os):=20=E6=B7=BB=E5=8A=A0=E5=A4=A7=E4=B8=96?= =?UTF-8?q?=E7=95=8C=E8=87=AA=E5=8A=A8=E5=AF=BB=E6=95=8C=E8=B6=85=E6=97=B6?= =?UTF-8?q?=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 普通区域12分钟超时,特殊区域30分钟超时 - 战斗/事件/按钮点击时重置计时器 - 超时后抛出ScriptError,人工介入 --- module/os/map.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/module/os/map.py b/module/os/map.py index 1d7e3ad23..6d5cb1a4e 100644 --- a/module/os/map.py +++ b/module/os/map.py @@ -484,9 +484,17 @@ class OSMap(OSFleet, Map, GlobeCamera, StrategicSearchHandler): success = True finished_combat = 0 died_timer = Timer(1.5, count=3) + if self.is_in_special_zone(): + auto_search_timeout = 1800 + else: + auto_search_timeout = 720 + auto_search_timer = Timer(auto_search_timeout, count=auto_search_timeout).start() self.hp_reset() for _ in self.loop(): # End + if auto_search_timer.reached(): + logger.warning(f'Stuck OS auto search progress for {auto_search_timeout}s') + raise ScriptError('OS auto search stuck, probably a game bug that requires human takeover') if not unlock_checked and unlock_check_timer.reached(): logger.critical('Unable to use auto search in current zone') logger.critical('Please finish the story mode of OpSi to unlock auto search ' @@ -520,13 +528,16 @@ class OSMap(OSFleet, Map, GlobeCamera, StrategicSearchHandler): enable=success ): unlock_checked = True + auto_search_timer.reset() continue if self.handle_retirement(): # Retire will interrupt auto search, need a retry self.ash_popup_canceled = True + auto_search_timer.reset() continue if self.combat_appear(): self.on_auto_search_battle_count_add() + auto_search_timer.reset() if strategic and self.config.task_switched(): self.interrupt_auto_search() result = self.auto_search_combat(drop=drop) @@ -540,6 +551,7 @@ class OSMap(OSFleet, Map, GlobeCamera, StrategicSearchHandler): continue if self.handle_map_event(): # Auto search can not handle siren searching device. + auto_search_timer.reset() continue return finished_combat