OnmyojiAutoScript
OnmyojiAutoScript copied to clipboard
斗技开始战斗后脚本立刻报错,多次重试必现
在提问之前...
- [x] 我已经搜索了现有的 issues
- [x] 我在提问题之前至少花费了 5 分钟来思考和准备
- [x] 我已经阅读了文档中的 常见问题(FAQ)
- [x] 这个问题出现了至少三次,不是偶发的
- [x] 我使用 OAS 的 dev 分支
描述你的问题
斗技开始战斗后脚本立刻报错,多次重试必现
如何复现
- 前往 '...'
- 点击 '....'
- 滑动到 '....'
- 出现问题
预期行为
No response
相关 Logs
════════════════════════════════════════════════════════════════════════════════
───────────────────────────────────── DUEL ─────────────────────────────────────
════════════════════════════════════════════════════════════════════════════════
2025-10-18 14:05:27.628 | config_model.py:0169 | INFO | auto save config
2025-10-18 14:05:27.637 | 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 14:05:27.656 | logger.py:0320 | INFO | [Screen_size] 1280x720
2025-10-18 14:05:27.659 | script.py:0375 | INFO | module_path:
D:\yys_script\oas\OnmyojiAutoScript-easy-install\OnmyojiAutoScript-easy-install\tasks\Duel\script_task.py, module_name: script_task
2025-10-18 14:05:27.925 | game_ui.py:0138 | INFO | UI get current page
2025-10-18 14:05:27.932 | logger.py:0320 | INFO | [UI] page_main
2025-10-18 14:05:27.939 | logger.py:0312 | INFO | <<< UI GOTO PAGE_MAIN >>>
2025-10-18 14:05:28.640 | game_ui.py:0254 | INFO | Page arrive: page_main
2025-10-18 14:05:28.660 | control.py:0074 | INFO | Click (1041, 639) @ SCREENSHOTS_YINYANGSHU
2025-10-18 14:05:28.663 | logger.py:0312 | INFO | <<< MINITOUCH INIT >>>
2025-10-18 14:05:28.673 | logger.py:0320 | INFO | [Device Orientation] 1 (HOME key on the right)
2025-10-18 14:05:28.676 | connection.py:0440 | INFO | Reuse forward: ForwardItem(serial='127.0.0.1:16416', local='tcp:20316',
remote='localabstract:minitouch')
2025-10-18 14:05:28.678 | minitouch.py:0448 | INFO | v 1
2025-10-18 14:05:28.682 | minitouch.py:0452 | INFO | ^ 10 720 1280 0
2025-10-18 14:05:28.684 | minitouch.py:0475 | INFO | $ 2666
2025-10-18 14:05:28.925 | minitouch.py:0479 | INFO | minitouch running on port: 20316, pid: 2666
2025-10-18 14:05:28.928 | minitouch.py:0482 | INFO | max_contact: 10; max_x: 720; max_y: 1280; max_pressure: 0
2025-10-18 14:05:30.502 | control.py:0074 | INFO | Click ( 56, 405) @ SCREENSHOTS_JIAOTI
2025-10-18 14:05:31.397 | game_ui.py:0138 | INFO | UI get current page
2025-10-18 14:05:31.610 | logger.py:0320 | INFO | [BATTLE_AUTO 0.172s] []
2025-10-18 14:05:31.613 | sub_ocr.py:0082 | INFO | [BATTLE_AUTO] Try to detect vertically
2025-10-18 14:05:31.693 | logger.py:0320 | INFO | [BATTLE_AUTO 0.079s] []
2025-10-18 14:05:31.697 | sub_ocr.py:0085 | INFO | [BATTLE_AUTO]: No text detected in ROI
2025-10-18 14:05:31.702 | logger.py:0320 | INFO | [BATTLE_HAND 0.003s] []
2025-10-18 14:05:31.713 | sub_ocr.py:0082 | INFO | [BATTLE_HAND] Try to detect vertically
2025-10-18 14:05:31.798 | logger.py:0320 | INFO | [BATTLE_HAND 0.080s] []
2025-10-18 14:05:31.804 | sub_ocr.py:0085 | INFO | [BATTLE_HAND]: No text detected in ROI
2025-10-18 14:05:31.876 | control.py:0074 | INFO | Click ( 55, 35) @ UI_UI_BACK_BLUE
2025-10-18 14:05:31.929 | game_ui.py:0178 | INFO | Trying to switch to supported page
2025-10-18 14:05:31.941 | logger.py:0320 | INFO | [u2.Device] Device(atx_agent_url=http://127.0.0.1:63901)
2025-10-18 14:05:31.980 | logger.py:0320 | INFO | [Package_name] com.netease.onmyoji.wyzymnqsd_cps
2025-10-18 14:05:31.989 | logger.py:0320 | INFO | [Device Orientation] 1 (HOME key on the right)
2025-10-18 14:05:32.034 | logger.py:0320 | INFO | [BATTLE_AUTO 0.002s] []
2025-10-18 14:05:32.039 | sub_ocr.py:0082 | INFO | [BATTLE_AUTO] Try to detect vertically
2025-10-18 14:05:32.124 | logger.py:0320 | INFO | [BATTLE_AUTO 0.082s] []
2025-10-18 14:05:32.128 | sub_ocr.py:0085 | INFO | [BATTLE_AUTO]: No text detected in ROI
2025-10-18 14:05:32.133 | logger.py:0320 | INFO | [BATTLE_HAND 0.003s] []
2025-10-18 14:05:32.144 | sub_ocr.py:0082 | INFO | [BATTLE_HAND] Try to detect vertically
2025-10-18 14:05:32.229 | logger.py:0320 | INFO | [BATTLE_HAND 0.078s] []
2025-10-18 14:05:32.234 | sub_ocr.py:0085 | INFO | [BATTLE_HAND]: No text detected in ROI
2025-10-18 14:05:32.319 | logger.py:0320 | INFO | [UI] page_onmyodo
2025-10-18 14:05:32.322 | logger.py:0312 | INFO | <<< UI GOTO PAGE_MAIN >>>
2025-10-18 14:05:33.254 | game_ui.py:0270 | INFO | Current page: page_onmyodo. Following shortest path:
2025-10-18 14:05:33.256 | game_ui.py:0272 | INFO | page_onmyodo -> page_main
2025-10-18 14:05:33.258 | game_ui.py:0299 | INFO | Page switch: page_onmyodo -> page_main
2025-10-18 14:05:34.034 | control.py:0074 | INFO | Click ( 53, 22) @ PAGE_BACK_Y
2025-10-18 14:05:34.088 | game_ui.py:0105 | INFO | Waiting for page_main
2025-10-18 14:05:34.795 | game_ui.py:0325 | INFO | [0.7s]Page arrived page_main
2025-10-18 14:05:34.798 | game_ui.py:0138 | INFO | UI get current page
2025-10-18 14:05:34.804 | logger.py:0320 | INFO | [UI] page_main
2025-10-18 14:05:34.808 | logger.py:0312 | INFO | <<< UI GOTO PAGE_DUEL >>>
2025-10-18 14:05:35.507 | game_ui.py:0270 | INFO | Current page: page_main. Following shortest path:
2025-10-18 14:05:35.509 | game_ui.py:0272 | INFO | page_main -> page_town -> page_duel
2025-10-18 14:05:36.553 | game_ui.py:0299 | INFO | Page switch: page_main -> page_town
2025-10-18 14:05:37.345 | control.py:0074 | INFO | Click ( 709, 272) @ PAGE_MAIN_GOTO_TOWN
2025-10-18 14:05:37.398 | game_ui.py:0105 | INFO | Waiting for page_town
2025-10-18 14:05:38.115 | game_ui.py:0325 | INFO | [0.7s]Page arrived page_town
2025-10-18 14:05:38.119 | game_ui.py:0299 | INFO | Page switch: page_town -> page_duel
2025-10-18 14:05:38.906 | control.py:0074 | INFO | Click ( 797, 177) @ PAGE_TOWN_GOTO_DUEL
2025-10-18 14:05:38.959 | game_ui.py:0105 | INFO | Waiting for page_duel
2025-10-18 14:05:39.664 | game_ui.py:0325 | INFO | [0.7s]Page arrived page_duel
2025-10-18 14:05:40.282 | logger.py:0320 | INFO | [D_SCORE 0.002s] [1600]
2025-10-18 14:05:40.285 | script_task.py:0272 | INFO | battle score: 1600
2025-10-18 14:05:40.315 | logger.py:0320 | INFO | [D_HONOR 0.003s] [0/3200]
───────────────────────────────── DUEL BATTLE ──────────────────────────────────
2025-10-18 14:05:40.327 | logger.py:0310 | INFO | DUEL BATTLE
2025-10-18 14:05:40.593 | control.py:0074 | INFO | Click (1179, 593) @ DUEL_D_BATTLE
2025-10-18 14:05:43.575 | logger.py:0312 | INFO | <<< DUEL START MATCH >>>
2025-10-18 14:05:44.176 | control.py:0074 | INFO | Click (1143, 595) @ DUEL_D_PREPARE
2025-10-18 14:05:45.380 | control.py:0074 | INFO | Click (1205, 629) @ DUEL_D_PREPARE
2025-10-18 14:05:45.680 | logger.py:0354 | ERROR | AttributeError: 'ScriptTask' object has no attribute 'I_D_PREPARE_DONE'
╭───────────────────────────────────────────────────────────── 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 = 'Duel' │ │
│ │ e = AttributeError("'ScriptTask' object has no attribute 'I_D_PREPARE_DONE'") │ │
│ │ module_name = 'script_task' │ │
│ │ module_path = 'D:\\yys_script\\oas\\OnmyojiAutoScript-easy-install\\OnmyojiAutoScript-easy-install\\'+25 │ │
│ │ self = <script.Script object at 0x0000023DD0A540D0> │ │
│ │ task_module = <module 'script_task' from │ │
│ │ 'D:\\yys_script\\oas\\OnmyojiAutoScript-easy-install\\OnmyojiAutoScript-easy-install\\tasks\\Duel\\script_task.py'> │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ D:\yys_script\oas\OnmyojiAutoScript-easy-install\OnmyojiAutoScript-easy-install\tasks\Duel\script_task.py:132 in run │
│ │
│ 129 │ │ │ │ break │
│ 130 │ │ │ │
│ 131 │ │ │ # 进行一次斗技 │
│ ❱ 132 │ │ │ self.duel_one(current_score, con.green_enable, con.green_mark, │
│ celeb_con.ban_name) │
│ 133 │ │ │
│ 134 │ │ logger.info('Duel battle end') │
│ 135 │ │ # 记得退回去到町中 │
│ │
│ ╭─────────────────────────────────────── locals ────────────────────────────────────────╮ │
│ │ celeb_con = DuelCelebConfig(celeb_battle=False, ban_name='', initial_score=1000) │ │
│ │ con = DuelConfig( │ │
│ │ │ switch_enabled=True, │ │
│ │ │ switch_onmyoji=<Onmyoji.Sl: '神乐'>, │ │
│ │ │ switch_all_soul=False, │ │
│ │ │ limit_time=datetime.time(1, 30), │ │
│ │ │ target_score=3000, │ │
│ │ │ honor_full_exit=True, │ │
│ │ │ green_enable=True, │ │
│ │ │ green_mark=<GreenMarkType.GREEN_LEFT4: 'green_left4'> │ │
│ │ ) │ │
│ │ current_score = 1600 │ │
│ │ current_time = datetime.time(14, 5, 27, 925065) │ │
│ │ duel_week_over = False │ │
│ │ limit_time = datetime.time(1, 30) │ │
│ │ self = <script_task.ScriptTask object at 0x0000023DF2C1C850> │ │
│ ╰───────────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ D:\yys_script\oas\OnmyojiAutoScript-easy-install\OnmyojiAutoScript-easy-install\tasks\Duel\script_task.py:367 in duel_one │
│ │
│ 364 │ │ │ if self.appear(self.I_D_PREPARE): │
│ 365 │ │ │ │ # 低段位有的准备 │
│ 366 │ │ │ │ self.ui_click_until_disappear(self.I_D_PREPARE) │
│ ❱ 367 │ │ │ │ self.wait_until_disappear(self.I_D_PREPARE_DONE) │
│ 368 │ │ │ │ logger.info('Duel prepare') │
│ 369 │ │ │ │ break │
│ 370 │ │ │ # 如果对方直接秒退,那自己就是赢的 │
│ │
│ ╭─────────────────────────────── locals ────────────────────────────────╮ │
│ │ ban_name = '' │ │
│ │ celeb_status = False │ │
│ │ current_score = 1600 │ │
│ │ enable = True │ │
│ │ mark_mode = <GreenMarkType.GREEN_LEFT4: 'green_left4'> │ │
│ │ self = <script_task.ScriptTask object at 0x0000023DF2C1C850> │ │
│ ╰───────────────────────────────────────────────────────────────────────╯ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
AttributeError: 'ScriptTask' object has no attribute 'I_D_PREPARE_DONE'
2025-10-18 14:05:45.974 | script.py:0104 | WARNING | Saving error: ./log/error/1760767545974
截图
No response
还有别的吗?
更新脚本,已经修复