百鬼夜行邀请好友失败,重试必现
在提问之前...
- [x] 我已经搜索了现有的 issues
- [x] 我在提问题之前至少花费了 5 分钟来思考和准备
- [x] 我已经阅读了文档中的 常见问题(FAQ)
- [x] 这个问题出现了至少三次,不是偶发的
- [x] 我使用 OAS 的 dev 分支
描述你的问题
百鬼夜行邀请好友失败,重试必现
如何复现
- 前往 '...'
- 点击 '....'
- 滑动到 '....'
- 出现问题
预期行为
No response
相关 Logs
════════════════════════════════════════════════════════════════════════════════
───────────────────────────────── HYAKKIYAKOU ──────────────────────────────────
════════════════════════════════════════════════════════════════════════════════
2025-10-18 20:49:52.123 | config_model.py:0169 | INFO | auto save config
2025-10-18 20:49:52.132 | nemu_ipc.py:0235 | INFO | NemuIpcImpl init, nemu_folder=D:\MuMu12\MuMu Player 12, ipc_dll=D:\MuMu12\MuMu Player
12\nx_device\12.0\shell\sdk\external_renderer_ipc.dll, instance_id=1, display_id=0
2025-10-18 20:49:52.145 | logger.py:0320 | INFO | [Screen_size] 1280x720
2025-10-18 20:49:52.147 | script.py:0375 | INFO | module_path:
D:\yys_script\oas\OnmyojiAutoScript-easy-install\OnmyojiAutoScript-easy-install\tasks\Hyakkiyakou\script_task.py, module_name: script_task
2025-10-18 20:49:52.414 | game_ui.py:0138 | INFO | UI get current page
2025-10-18 20:49:52.639 | logger.py:0320 | INFO | [BATTLE_AUTO 0.182s] []
2025-10-18 20:49:52.641 | sub_ocr.py:0082 | INFO | [BATTLE_AUTO] Try to detect vertically
2025-10-18 20:49:52.742 | logger.py:0320 | INFO | [BATTLE_AUTO 0.098s] []
2025-10-18 20:49:52.745 | sub_ocr.py:0085 | INFO | [BATTLE_AUTO]: No text detected in ROI
2025-10-18 20:49:52.750 | logger.py:0320 | INFO | [BATTLE_HAND 0.003s] []
2025-10-18 20:49:52.754 | sub_ocr.py:0082 | INFO | [BATTLE_HAND] Try to detect vertically
2025-10-18 20:49:52.842 | logger.py:0320 | INFO | [BATTLE_HAND 0.084s] []
2025-10-18 20:49:52.845 | sub_ocr.py:0085 | INFO | [BATTLE_HAND]: No text detected in ROI
2025-10-18 20:49:52.922 | control.py:0074 | INFO | Click (1078, 213) @ UI_UI_BACK_RED
2025-10-18 20:49:52.925 | logger.py:0312 | INFO | <<< MINITOUCH INIT >>>
2025-10-18 20:49:52.936 | logger.py:0320 | INFO | [Device Orientation] 1 (HOME key on the right)
2025-10-18 20:49:52.938 | connection.py:0440 | INFO | Reuse forward: ForwardItem(serial='127.0.0.1:16416', local='tcp:20597',
remote='localabstract:minitouch')
2025-10-18 20:49:52.940 | minitouch.py:0448 | INFO | v 1
2025-10-18 20:49:52.944 | minitouch.py:0452 | INFO | ^ 10 720 1280 0
2025-10-18 20:49:52.946 | minitouch.py:0475 | INFO | $ 23158
2025-10-18 20:49:52.948 | minitouch.py:0479 | INFO | minitouch running on port: 20597, pid: 23158
2025-10-18 20:49:52.949 | minitouch.py:0482 | INFO | max_contact: 10; max_x: 720; max_y: 1280; max_pressure: 0
2025-10-18 20:49:53.001 | game_ui.py:0178 | INFO | Trying to switch to supported page
2025-10-18 20:49:53.009 | control.py:0074 | INFO | Click (1077, 194) @ AS_RED_EXIT_2
2025-10-18 20:49:53.063 | game_ui.py:0178 | INFO | Trying to switch to supported page
2025-10-18 20:49:53.072 | logger.py:0320 | INFO | [u2.Device] Device(atx_agent_url=http://127.0.0.1:62293)
2025-10-18 20:49:53.131 | logger.py:0320 | INFO | [Package_name] com.netease.onmyoji.wyzymnqsd_cps
2025-10-18 20:49:53.139 | logger.py:0320 | INFO | [Device Orientation] 1 (HOME key on the right)
2025-10-18 20:49:53.155 | logger.py:0320 | INFO | [UI] page_town
2025-10-18 20:49:53.157 | logger.py:0312 | INFO | <<< UI GOTO PAGE_HYAKKIYAKOU >>>
2025-10-18 20:49:53.818 | game_ui.py:0270 | INFO | Current page: page_town. Following shortest path:
2025-10-18 20:49:53.820 | game_ui.py:0272 | INFO | page_town -> page_hyakkiyakou
2025-10-18 20:49:53.821 | game_ui.py:0299 | INFO | Page switch: page_town -> page_hyakkiyakou
2025-10-18 20:49:54.599 | control.py:0074 | INFO | Click ( 931, 215) @ PAGE_TOWN_GOTO_HYAKKIYAKOU
2025-10-18 20:49:54.653 | game_ui.py:0105 | INFO | Waiting for page_hyakkiyakou
2025-10-18 20:49:55.318 | game_ui.py:0325 | INFO | [0.7s]Page arrived page_hyakkiyakou
──────────────────────────────── INVITE FRIEND ─────────────────────────────────
2025-10-18 20:49:55.322 | logger.py:0310 | INFO | INVITE FRIEND
2025-10-18 20:49:55.619 | logger.py:0354 | ERROR | FileNotFoundError: [Errno 2] No such file or directory:
'./tasks/Hyakkiyakou/hya/hya_check_invitation.png'
╭───────────────────────────────────────────────────────────── Traceback (most recent call last) ──────────────────────────────────────────────────────────────╮
│ D:\yys_script\oas\OnmyojiAutoScript-easy-install\OnmyojiAutoScript-easy-install\script.py:377 in run │
│ │
│ 374 │ │ │ module_path = str(Path.cwd() / 'tasks' / command / (module_name+'.py')) │
│ 375 │ │ │ logger.info(f'module_path: {module_path}, module_name: {module_name}') │
│ 376 │ │ │ task_module = load_module(module_name, module_path) │
│ ❱ 377 │ │ │ task_module.ScriptTask(config=self.config, device=self.device).run() │
│ 378 │ │ except TaskEnd: │
│ 379 │ │ │ return True │
│ 380 │ │ except GameNotRunningError as e: │
│ │
│ ╭───────────────────────────────────────────────────────────────────────── locals ─────────────────────────────────────────────────────────────────────────╮ │
│ │ command = 'Hyakkiyakou' │ │
│ │ e = FileNotFoundError(2, 'No such file or directory') │ │
│ │ module_name = 'script_task' │ │
│ │ module_path = 'D:\\yys_script\\oas\\OnmyojiAutoScript-easy-install\\OnmyojiAutoScript-easy-install\\'+32 │ │
│ │ self = <script.Script object at 0x000001B2E77040D0> │ │
│ │ task_module = <module 'script_task' from │ │
│ │ 'D:\\yys_script\\oas\\OnmyojiAutoScript-easy-install\\OnmyojiAutoScript-easy-install\\tasks\\Hyakkiyakou\\script_task.py'> │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ D:\yys_script\oas\OnmyojiAutoScript-easy-install\OnmyojiAutoScript-easy-install\tasks\Hyakkiyakou\script_task.py:139 in run │
│ │
│ 136 │ │ │ │ logger.info('Hyakkiyakou time limit out') │
│ 137 │ │ │ │ break │
│ 138 │ │ │ │
│ ❱ 139 │ │ │ self.one() │
│ 140 │ │ │ hya_count += 1 │
│ 141 │ │ │
│ 142 │ │ while 1: │
│ │
│ ╭────────────────────────────── locals ──────────────────────────────╮ │
│ │ hya_count = 0 │ │
│ │ limit_time = datetime.time(0, 20) │ │
│ │ self = <script_task.ScriptTask object at 0x000001B28B0EDEA0> │ │
│ ╰────────────────────────────────────────────────────────────────────╯ │
│ │
│ D:\yys_script\oas\OnmyojiAutoScript-easy-install\OnmyojiAutoScript-easy-install\tasks\Hyakkiyakou\script_task.py:158 in one │
│ │
│ 155 │ │ if not self.appear(self.I_HACCESS): │
│ 156 │ │ │ logger.warning('Page Error') │
│ 157 │ │ if self._config.hyakkiyakou_config.hya_invite_friend: │
│ ❱ 158 │ │ │ self.invite_friend() │
│ 159 │ │ # start │
│ 160 │ │ self.ui_click(self.I_HACCESS, self.I_HSTART, interval=2) │
│ 161 │ │ self.wait_until_appear(self.I_HTITLE) │
│ │
│ ╭─────────────────────────── locals ───────────────────────────╮ │
│ │ self = <script_task.ScriptTask object at 0x000001B28B0EDEA0> │ │
│ ╰──────────────────────────────────────────────────────────────╯ │
│ │
│ D:\yys_script\oas\OnmyojiAutoScript-easy-install\OnmyojiAutoScript-easy-install\tasks\Hyakkiyakou\slave\hya_slave.py:219 in invite_friend │
│ │
│ 216 │ │
│ 217 │ def invite_friend(self): │
│ 218 │ │ logger.hr('Invite friend', 2) │
│ ❱ 219 │ │ self.ui_click(self.I_HINVITE, self.I_CHECK_INVITATION, interval=4) │
│ 220 │ │ logger.info('Entry check invitation') │
│ 221 │ │ │
│ 222 │ │ # 是否有召回活动(星重聚阴阳师) │
│ │
│ ╭─────────────────────────── locals ───────────────────────────╮ │
│ │ self = <script_task.ScriptTask object at 0x000001B28B0EDEA0> │ │
│ ╰──────────────────────────────────────────────────────────────╯ │
│ │
│ D:\yys_script\oas\OnmyojiAutoScript-easy-install\OnmyojiAutoScript-easy-install\tasks\base_task.py:601 in ui_click │
│ │
│ 598 │ │ """ │
│ 599 │ │ while 1: │
│ 600 │ │ │ self.screenshot() │
│ ❱ 601 │ │ │ if self.appear(stop): │
│ 602 │ │ │ │ break │
│ 603 │ │ │ if isinstance(click, RuleImage) and self.appear_then_click(click, │
│ interval=interval): │
│ 604 │ │ │ │ continue │
│ │
│ ╭───────────────────────────── locals ─────────────────────────────╮ │
│ │ click = HYA_HINVITE │ │
│ │ interval = 4 │ │
│ │ self = <script_task.ScriptTask object at 0x000001B28B0EDEA0> │ │
│ │ stop = HYA_CHECK_INVITATION │ │
│ ╰──────────────────────────────────────────────────────────────────╯ │
│ │
│ D:\yys_script\oas\OnmyojiAutoScript-easy-install\OnmyojiAutoScript-easy-install\tasks\base_task.py:161 in appear │
│ │
│ 158 │ │ if isinstance(target, RuleOcr): │
│ 159 │ │ │ appear = self.ocr_appear(target, interval) │
│ 160 │ │ else: │
│ ❱ 161 │ │ │ appear = target.match(self.device.image, threshold=threshold) │
│ 162 │ │ │
│ 163 │ │ if appear and interval: │
│ 164 │ │ │ self.interval_timer[target.name].reset() │
│ │
│ ╭───────────────────────────── locals ──────────────────────────────╮ │
│ │ interval = None │ │
│ │ self = <script_task.ScriptTask object at 0x000001B28B0EDEA0> │ │
│ │ target = HYA_CHECK_INVITATION │ │
│ │ threshold = None │ │
│ ╰───────────────────────────────────────────────────────────────────╯ │
│ │
│ D:\yys_script\oas\OnmyojiAutoScript-easy-install\OnmyojiAutoScript-easy-install\module\atom\image.py:153 in match │
│ │
│ 150 │ │ │ # raise Exception(f"unknown method {self.method}") ╭───────────────────── locals ─────────────────────╮ │
│ 151 │ │ │ image = array([[[10, 10, 14], │ │
│ 152 │ │ source = self.corp(image) │ │ │ [10, 10, 14], │ │
│ ❱ 153 │ │ mat = self.image │ │ │ [10, 11, 14], │ │
│ 154 │ │ │ │ │ ..., │ │
│ 155 │ │ if mat is None or mat.shape[0] == 0 or mat.shape[1] == 0: │ │ │ [ 5, 9, 11], │ │
│ 156 │ │ │ logger.error(f"Template image is invalid: {mat.shape}") │ │ │ [ 5, 9, 11], │ │
│ #检测模板尺寸,不合法则不进行匹配,避免两次截图画面完全相同造成模板不合法 │ │ │ [ 5, 9, 11]], │ │
│ │ │ │ │
│ │ │ [[14, 13, 16], │ │
│ │ │ │ [14, 14, 16], │ │
│ │ │ │ [15, 14, 17], │ │
│ │ │ │ ..., │ │
│ │ │ │ [ 5, 10, 11], │ │
│ │ │ │ [ 5, 10, 11], │ │
│ │ │ │ [ 5, 10, 11]], │ │
│ │ │ │ │
│ │ │ [[24, 22, 23], │ │
│ │ │ │ [24, 22, 23], │ │
│ │ │ │ [25, 22, 23], │ │
│ │ │ │ ..., │ │
│ │ │ │ [ 5, 10, 11], │ │
│ │ │ │ [ 5, 10, 11], │ │
│ │ │ │ [ 5, 10, 11]], │ │
│ │ │ │ │
│ │ │ ..., │ │
│ │ │ │ │
│ │ │ [[ 5, 7, 8], │ │
│ │ │ │ [ 5, 7, 8], │ │
│ │ │ │ [ 5, 7, 8], │ │
│ │ │ │ ..., │ │
│ │ │ │ [ 1, 1, 1], │ │
│ │ │ │ [ 1, 1, 1], │ │
│ │ │ │ [ 1, 1, 1]], │ │
│ │ │ │ │
│ │ │ [[ 5, 7, 8], │ │
│ │ │ │ [ 5, 7, 8], │ │
│ │ │ │ [ 5, 7, 8], │ │
│ │ │ │ ..., │ │
│ │ │ │ [ 1, 1, 1], │ │
│ │ │ │ [ 1, 1, 1], │ │
│ │ │ │ [ 1, 1, 1]], │ │
│ │ │ │ │
│ │ │ [[ 4, 5, 7], │ │
│ │ │ │ [ 4, 5, 7], │ │
│ │ │ │ [ 4, 5, 7], │ │
│ │ │ │ ..., │ │
│ │ │ │ [ 1, 1, 1], │ │
│ │ │ │ [ 1, 1, 1], │ │
│ │ │ │ [ 1, 1, 1]]], dtype=uint8) │ │
│ │ self = HYA_CHECK_INVITATION │ │
│ │ source = array([[[58, 43, 37], │ │
│ │ │ │ [57, 42, 36], │ │
│ │ │ │ [56, 42, 35], │ │
│ │ │ │ ..., │ │
│ │ │ │ [ 5, 6, 7], │ │
│ │ │ │ [ 5, 6, 7], │ │
│ │ │ │ [ 5, 6, 7]], │ │
│ │ │ │ │
│ │ │ [[58, 43, 37], │ │
│ │ │ │ [56, 42, 36], │ │
│ │ │ │ [54, 40, 34], │ │
│ │ │ │ ..., │ │
│ │ │ │ [ 5, 6, 7], │ │
│ │ │ │ [ 5, 6, 7], │ │
│ │ │ │ [ 5, 6, 7]], │ │
│ │ │ │ │
│ │ │ [[56, 42, 35], │ │
│ │ │ │ [54, 40, 34], │ │
│ │ │ │ [51, 38, 33], │ │
│ │ │ │ ..., │ │
│ │ │ │ [ 5, 6, 7], │ │
│ │ │ │ [ 5, 6, 7], │ │
│ │ │ │ [ 5, 6, 7]], │ │
│ │ │ │ │
│ │ │ ..., │ │
│ │ │ │ │
│ │ │ [[51, 50, 50], │ │
│ │ │ │ [49, 43, 44], │ │
│ │ │ │ [50, 43, 44], │ │
│ │ │ │ ..., │ │
│ │ │ │ [26, 17, 31], │ │
│ │ │ │ [22, 17, 29], │ │
│ │ │ │ [18, 17, 27]], │ │
│ │ │ │ │
│ │ │ [[56, 55, 55], │ │
│ │ │ │ [57, 54, 55], │ │
│ │ │ │ [61, 53, 56], │ │
│ │ │ │ ..., │ │
│ │ │ │ [26, 17, 32], │ │
│ │ │ │ [22, 17, 29], │ │
│ │ │ │ [18, 17, 27]], │ │
│ │ │ │ │
│ │ │ [[62, 56, 59], │ │
│ │ │ │ [57, 47, 49], │ │
│ │ │ │ [55, 40, 40], │ │
│ │ │ │ ..., │ │
│ │ │ │ [26, 17, 32], │ │
│ │ │ │ [22, 17, 29], │ │
│ │ │ │ [18, 16, 26]]], dtype=uint8) │ │
│ │ threshold = 0.8 │ │
│ ╰──────────────────────────────────────────────────╯ │
│ │
│ D:\yys_script\oas\OnmyojiAutoScript-easy-install\OnmyojiAutoScript-easy-install\module\atom\image.py:94 in image │
│ │
│ 91 │ │ :return: ╭────────── locals ───────────╮ │
│ 92 │ │ """ │ self = HYA_CHECK_INVITATION │ │
│ 93 │ │ if self._image is None: ╰─────────────────────────────╯ │
│ ❱ 94 │ │ │ self.load_image() │
│ 95 │ │ return self._image │
│ 96 │ │
│ 97 │ @cached_property │
│ │
│ D:\yys_script\oas\OnmyojiAutoScript-easy-install\OnmyojiAutoScript-easy-install\module\atom\image.py:71 in load_image │
│ │
│ 68 │ │ """ ╭────────── locals ───────────╮ │
│ 69 │ │ if self._image is not None: │ self = HYA_CHECK_INVITATION │ │
│ 70 │ │ │ return ╰─────────────────────────────╯ │
│ ❱ 71 │ │ img = cv2.imdecode(fromfile(self.file, dtype=uint8), -1) │
│ 72 │ │ img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) │
│ 73 │ │ self._image = img │
│ 74 │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
FileNotFoundError: [Errno 2] No such file or directory: './tasks/Hyakkiyakou/hya/hya_check_invitation.png'
2025-10-18 20:50:00.222 | script.py:0104 | WARNING | Saving error: ./log/error/1760791800222
截图
还有别的吗?
No response
──────────────────────────────── INVITE FRIEND ───────────────────────────────── INFO 2025-10-25 15:24:44.040 │ INVITE FRIEND ERROR 2025-10-25 15:24:44.328 │ FileNotFoundError: [Errno 2] No such file or directory: './tasks/Hyakkiyakou/hya/hya_check_invitation.png' ┌───────────────────────────────────── Traceback (most recent call last) ─────────────────────────────────────┐ │ C:\Users\ADMINI~1\DOWNLO~1\ONMYOJ~2\ONMYOJ~1\script.py:369 in run │ │ │ │ 366 │ │ │ module_path = str(Path.cwd() / 'tasks' / command / (module_name+'.py')) │ │ 367 │ │ │ logger.info(f'module_path: {module_path}, module_name: {module_name}') │ │ 368 │ │ │ task_module = load_module(module_name, module_path) │ │ > 369 │ │ │ task_module.ScriptTask(config=self.config, device=self.device).run() │ │ 370 │ │ except TaskEnd: │ │ 371 │ │ │ return True │ │ 372 │ │ except GameNotRunningError as e: │ │ │ │ ┌──────────────────────────────────────────────── locals ─────────────────────────────────────────────────┐ │ │ │ command = 'Hyakkiyakou' │ │ │ │ e = FileNotFoundError(2, 'No such file or directory') │ │ │ │ module_name = 'script_task' │ │ │ │ module_path = 'C:\Users\ADMINI~1\DOWNLO~1\ONMYOJ~2\ONMYOJ~1\tasks\Hyakkiyakou\script_task.py' │ │ │ │ self = <script.Script object at 0x00000202C1DA4160> │ │ │ │ task_module = <module 'script_task' from │ │ │ │ 'C:\Users\ADMINI~1\DOWNLO~1\ONMYOJ~2\ONMYOJ~1\tasks\Hyakkiyakou\script_task.py'> │ │ │ └─────────────────────────────────────────────────────────────────────────────────────────────────────────┘ │ │ │ │ C:\Users\ADMINI~1\DOWNLO~1\ONMYOJ~2\ONMYOJ~1\tasks\Hyakkiyakou\script_task.py:139 in run │ │ │ │ 136 │ │ │ │ logger.info('Hyakkiyakou time limit out') │ │ 137 │ │ │ │ break │ │ 138 │ │ │ │ │ > 139 │ │ │ self.one() │ │ 140 │ │ │ hya_count += 1 │ │ 141 │ │ │ │ 142 │ │ while 1: │ │ │ │ ┌────────────────────────────── locals ──────────────────────────────┐ │ │ │ hya_count = 0 │ │ │ │ limit_time = datetime.time(0, 29, 18) │ │ │ │ self = <script_task.ScriptTask object at 0x00000202EDA8ACB0> │ │ │ └────────────────────────────────────────────────────────────────────┘ │ │ │ │ C:\Users\ADMINI~1\DOWNLO~1\ONMYOJ~2\ONMYOJ~1\tasks\Hyakkiyakou\script_task.py:158 in one │ │ │ │ 155 │ │ if not self.appear(self.I_HACCESS): │ │ 156 │ │ │ logger.warning('Page Error') │ │ 157 │ │ if self._config.hyakkiyakou_config.hya_invite_friend: │ │ > 158 │ │ │ self.invite_friend() │ │ 159 │ │ # start │ │ 160 │ │ self.ui_click(self.I_HACCESS, self.I_HSTART, interval=2) │ │ 161 │ │ self.wait_until_appear(self.I_HTITLE) │ │ │ │ ┌─────────────────────────── locals ───────────────────────────┐ │ │ │ self = <script_task.ScriptTask object at 0x00000202EDA8ACB0> │ │ │ └──────────────────────────────────────────────────────────────┘ │ │ │ │ C:\Users\ADMINI~1\DOWNLO~1\ONMYOJ~2\ONMYOJ~1\tasks\Hyakkiyakou\slave\hya_slave.py:219 in invite_friend │ │ │ │ 216 │ │ │ 217 │ def invite_friend(self): │ │ 218 │ │ logger.hr('Invite friend', 2) │ │ > 219 │ │ self.ui_click(self.I_HINVITE, self.I_CHECK_INVITATION, interval=4) │ │ 220 │ │ logger.info('Entry check invitation') │ │ 221 │ │ │ │ 222 │ │ # 是否有召回活动(星重聚阴阳师) │ │ │ │ ┌─────────────────────────── locals ───────────────────────────┐ │ │ │ self = <script_task.ScriptTask object at 0x00000202EDA8ACB0> │ │ │ └──────────────────────────────────────────────────────────────┘ │ │ │ │ C:\Users\ADMINI~1\DOWNLO~1\ONMYOJ~2\ONMYOJ~1\tasks\base_task.py:601 in ui_click │ │ │ │ 598 │ │ """ │ │ 599 │ │ while 1: │ │ 600 │ │ │ self.screenshot() │ │ > 601 │ │ │ if self.appear(stop): │ │ 602 │ │ │ │ break │ │ 603 │ │ │ if isinstance(click, RuleImage) and self.appear_then_click(click, │ │ interval=interval): │ │ 604 │ │ │ │ continue │ │ │ │ ┌───────────────────────────── locals ─────────────────────────────┐ │ │ │ click = HYA_HINVITE │ │ │ │ interval = 4 │ │ │ │ self = <script_task.ScriptTask object at 0x00000202EDA8ACB0> │ │ │ │ stop = HYA_CHECK_INVITATION │ │ │ └──────────────────────────────────────────────────────────────────┘ │ │ │ │ C:\Users\ADMINI~1\DOWNLO~1\ONMYOJ~2\ONMYOJ~1\tasks\base_task.py:160 in appear │ │ │ │ 157 │ │ if isinstance(target, RuleOcr): │ │ 158 │ │ │ appear = self.ocr_appear(target, interval) │ │ 159 │ │ else: │ │ > 160 │ │ │ appear = target.match(self.device.image, threshold=threshold) │ │ 161 │ │ │ │ 162 │ │ if appear and interval: │ │ 163 │ │ │ self.interval_timer[target.name].reset() │ │ │ │ ┌───────────────────────────── locals ──────────────────────────────┐ │ │ │ interval = None │ │ │ │ self = <script_task.ScriptTask object at 0x00000202EDA8ACB0> │ │ │ │ target = HYA_CHECK_INVITATION │ │ │ │ threshold = None │ │ │ └───────────────────────────────────────────────────────────────────┘ │ │ │ │ C:\Users\ADMINI~1\DOWNLO~1\ONMYOJ~2\ONMYOJ~1\module\atom\image.py:153 in match │ │ │ │ 150 │ │ │ # raise Exception(f"unknown method {self.method}") │ │ 151 │ │ │ │ 152 │ │ source = self.corp(image) │ │ > 153 │ │ mat = self.image │ │ 154 │ │ │ │ 155 │ │ if mat is None or mat.shape[0] == 0 or mat.shape[1] == 0: │ │ 156 │ │ │ logger.error(f"Template image is invalid: {mat.shape}") │ │ #检测模板尺寸,不合法则不进行匹配,避免两次截图画面完全相同造成模板不合法 │ │ │ │ ┌───────────────────── locals ─────────────────────┐ │ │ │ image = array([[[10, 10, 14], │ │ │ │ │ │ [10, 10, 14], │ │ │ │ │ │ [10, 11, 14], │ │ │ │ │ │ ..., │ │ │ │ │ │ [ 5, 9, 11], │ │ │ │ │ │ [ 5, 9, 11], │ │ │ │ │ │ [ 5, 9, 11]], │ │ │ │ │ │ │ │ │ │ [[13, 13, 16], │ │ │ │ │ │ [14, 13, 16], │ │ │ │ │ │ [14, 14, 17], │ │ │ │ │ │ ..., │ │ │ │ │ │ [ 5, 10, 11], │ │ │ │ │ │ [ 5, 10, 11], │ │ │ │ │ │ [ 5, 10, 11]], │ │ │ │ │ │ │ │ │ │ [[24, 21, 23], │ │ │ │ │ │ [24, 21, 23], │ │ │ │ │ │ [24, 21, 23], │ │ │ │ │ │ ..., │ │ │ │ │ │ [ 5, 10, 11], │ │ │ │ │ │ [ 5, 10, 11], │ │ │ │ │ │ [ 5, 10, 11]], │ │ │ │ │ │ │ │ │ │ ..., │ │ │ │ │ │ │ │ │ │ [[ 5, 7, 8], │ │ │ │ │ │ [ 5, 7, 8], │ │ │ │ │ │ [ 5, 7, 8], │ │ │ │ │ │ ..., │ │ │ │ │ │ [ 1, 1, 1], │ │ │ │ │ │ [ 1, 1, 1], │ │ │ │ │ │ [ 1, 1, 1]], │ │ │ │ │ │ │ │ │ │ [[ 5, 7, 8], │ │ │ │ │ │ [ 5, 7, 8], │ │ │ │ │ │ [ 5, 7, 8], │ │ │ │ │ │ ..., │ │ │ │ │ │ [ 1, 1, 1], │ │ │ │ │ │ [ 1, 1, 1], │ │ │ │ │ │ [ 1, 1, 1]], │ │ │ │ │ │ │ │ │ │ [[ 4, 5, 7], │ │ │ │ │ │ [ 4, 5, 7], │ │ │ │ │ │ [ 4, 5, 7], │ │ │ │ │ │ ..., │ │ │ │ │ │ [ 1, 1, 1], │ │ │ │ │ │ [ 1, 1, 1], │ │ │ │ │ │ [ 1, 1, 1]]], dtype=uint8) │ │ │ │ self = HYA_CHECK_INVITATION │ │ │ │ source = array([[[58, 43, 37], │ │ │ │ │ │ [57, 42, 36], │ │ │ │ │ │ [56, 42, 35], │ │ │ │ │ │ ..., │ │ │ │ │ │ [ 5, 6, 7], │ │ │ │ │ │ [ 5, 6, 7], │ │ │ │ │ │ [ 5, 6, 7]], │ │ │ │ │ │ │ │ │ │ [[58, 43, 37], │ │ │ │ │ │ [56, 42, 36], │ │ │ │ │ │ [54, 40, 34], │ │ │ │ │ │ ..., │ │ │ │ │ │ [ 5, 6, 7], │ │ │ │ │ │ [ 5, 6, 7], │ │ │ │ │ │ [ 5, 6, 7]], │ │ │ │ │ │ │ │ │ │ [[56, 42, 35], │ │ │ │ │ │ [54, 40, 34], │ │ │ │ │ │ [51, 38, 33], │ │ │ │ │ │ ..., │ │ │ │ │ │ [ 5, 6, 7], │ │ │ │ │ │ [ 5, 6, 7], │ │ │ │ │ │ [ 5, 6, 7]], │ │ │ │ │ │ │ │ │ │ ..., │ │ │ │ │ │ │ │ │ │ [[63, 61, 61], │ │ │ │ │ │ [59, 53, 52], │ │ │ │ │ │ [59, 51, 51], │ │ │ │ │ │ ..., │ │ │ │ │ │ [26, 17, 31], │ │ │ │ │ │ [23, 17, 30], │ │ │ │ │ │ [18, 17, 27]], │ │ │ │ │ │ │ │ │ │ [[67, 65, 66], │ │ │ │ │ │ [68, 64, 65], │ │ │ │ │ │ [69, 62, 64], │ │ │ │ │ │ ..., │ │ │ │ │ │ [26, 17, 32], │ │ │ │ │ │ [23, 17, 30], │ │ │ │ │ │ [18, 17, 27]], │ │ │ │ │ │ │ │ │ │ [[72, 67, 70], │ │ │ │ │ │ [66, 54, 56], │ │ │ │ │ │ [61, 44, 44], │ │ │ │ │ │ ..., │ │ │ │ │ │ [26, 17, 32], │ │ │ │ │ │ [23, 17, 30], │ │ │ │ │ │ [18, 16, 26]]], dtype=uint8) │ │ │ │ threshold = 0.8 │ │ │ └──────────────────────────────────────────────────┘ │ │ │ │ C:\Users\ADMINI~1\DOWNLO~1\ONMYOJ~2\ONMYOJ~1\module\atom\image.py:94 in image │ │ │ │ 91 │ │ :return: │ │ 92 │ │ """ │ │ 93 │ │ if self._image is None: │ │ > 94 │ │ │ self.load_image() │ │ 95 │ │ return self._image │ │ 96 │ │ │ 97 │ @cached_property │ │ │ │ ┌────────── locals ───────────┐ │ │ │ self = HYA_CHECK_INVITATION │ │ │ └─────────────────────────────┘ │ │ │ │ C:\Users\ADMINI~1\DOWNLO~1\ONMYOJ~2\ONMYOJ~1\module\atom\image.py:71 in load_image │ │ │ │ 68 │ │ """ │ │ 69 │ │ if self._image is not None: │ │ 70 │ │ │ return │ │ > 71 │ │ img = cv2.imdecode(fromfile(self.file, dtype=uint8), -1) │ │ 72 │ │ img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) │ │ 73 │ │ self._image = img │ │ 74 │ │ │ │ ┌────────── locals ───────────┐ │ │ │ self = HYA_CHECK_INVITATION │ │ │ └─────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ FileNotFoundError: [Errno 2] No such file or directory: './tasks/Hyakkiyakou/hya/hya_check_invitation.png' WARNING 2025-10-25 15:24:49.674 │ Saving error: ./log/error/1761377089674 INFO 2025-10-25 15:24:51.641 │ Notifier: OAS1 INFO 2025-10-25 15:24:51.650 │ Script oas1 process exit ERROR 2025-10-25 15:24:51.652 │ Error: 1
我也出现了