OnmyojiAutoScript icon indicating copy to clipboard operation
OnmyojiAutoScript copied to clipboard

斗技开始战斗后脚本立刻报错,多次重试必现

Open beginner-wgc opened this issue 2 months ago • 1 comments

在提问之前...

  • [x] 我已经搜索了现有的 issues
  • [x] 我在提问题之前至少花费了 5 分钟来思考和准备
  • [x] 我已经阅读了文档中的 常见问题(FAQ)
  • [x] 这个问题出现了至少三次,不是偶发的
  • [x] 我使用 OAS 的 dev 分支

描述你的问题

斗技开始战斗后脚本立刻报错,多次重试必现

如何复现

  1. 前往 '...'
  2. 点击 '....'
  3. 滑动到 '....'
  4. 出现问题

预期行为

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

还有别的吗?

Image

beginner-wgc avatar Oct 18 '25 06:10 beginner-wgc

更新脚本,已经修复

ohspecial avatar Oct 18 '25 09:10 ohspecial