LmeSzinc / AzurLaneAutoScript

Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本 | 无缝委托科研,全自动大世界
https://alas.azurlane.cloud
GNU General Public License v3.0
6.65k stars 785 forks source link

切换周回模式开关可能会导致自律模式开关识别错误 #3654

Open Air111 opened 4 months ago

Air111 commented 4 months ago

在提问之前...

描述你的问题

原始问题:在关闭周回的情况下,使用“困难图”打每日困难时出现如下错误

──────────────────────────────────────────────────────── 13-3 ─────────────────────────────────────────────────────────
2024-04-19 00:20:00.168 | INFO | 13-3                                                                                  
2024-04-19 00:20:00.169 | INFO | <<< ENTER MAP >>>                                                                     
2024-04-19 00:20:00.205 | INFO | Click ( 787,  299) @ 13-3                                                             
2024-04-19 00:20:00.662 | INFO | [Map_clear_percentage] 0.24127906976744187                                            
2024-04-19 00:20:00.957 | INFO | [Map_clear_percentage] 0.8488372093023255                                             
2024-04-19 00:20:01.260 | INFO | [Map_clear_percentage] 0.997093023255814                                              
2024-04-19 00:20:01.262 | INFO | [MAP_CLEAR_ALL_THIS_TIME] False                                                       
2024-04-19 00:20:01.263 | INFO | [Map_info] 99%, star_1, star_2, star_3, 100_percent_clear, 3_stars, threat_safe,      
clear_mode                                                                                                             
2024-04-19 00:20:01.265 | INFO | [StopCondition_MapAchievement] non_stop                                               
2024-04-19 00:20:01.265 | INFO | [Fast_Forward] off                                                                    
2024-04-19 00:20:01.268 | INFO | Click (1000,  595) @ FAST_FORWARD_OFF                                                 
2024-04-19 00:20:01.558 | INFO | [Fast_Forward] on                                                                     
2024-04-19 00:20:01.578 | INFO | No auto search option.                                                                
2024-04-19 00:20:01.580 | INFO | Click ( 913,  520) @ MAP_PREPARATION                                                  
2024-04-19 00:20:02.164 | INFO | Handling 2x book setting, mode=prep.                                                  
2024-04-19 00:20:03.372 | INFO | Map do not have 2x book setting                                                       
2024-04-19 00:20:03.374 | INFO | Using fleet: [1, 2, 0]                                                                
2024-04-19 00:20:03.429 | INFO | Hard satisfied: Fleet_1: True, Fleet_2: True, Submarine: None                         
2024-04-19 00:20:03.431 | INFO | Hard Campaign. No fleet preparation                                                   
2024-04-19 00:20:03.432 | INFO | Click (1113,  604) @ FLEET_PREPARATION                                                
2024-04-19 00:21:03.608 | INFO | Function calls:                                                                       
          <string>   L1 <module>                                                                                       
          spawn.py L105 spawn_main()                                                                                   
          spawn.py L118 _main()                                                                                        
        process.py L297 _bootstrap()                                                                                   
        process.py  L99 run()                                                                                          
process_manager.py L151 run_process()                                                                                  
           alas.py L521 loop()                                                                                         
           alas.py  L68 run()                                                                                          
           alas.py L248 hard()                                                                                         
           hard.py  L47 run()                                                                                          
  campaign_base.py L125 run()                                                                                          
  map_operation.py L126 enter_map()                                                                                    
         device.py L148 screenshot()                                                                                   
         device.py L196 stuck_record_check()                                                                           
         device.py  L34 show_function_call()                                                                           
2024-04-19 00:21:03.612 | WARNING | Wait too long                                                                      
2024-04-19 00:21:03.614 | WARNING | Waiting for {'DAILY_CHECK', 'IN_MAP', 'RETIRE_APPEAR_1', '13-3',                   
'IN_RETIREMENT_CHECK', 'GET_MISSION', 'AUTO_SEARCH_MENU_CONTINUE', 'BOOK_POPUP_CHECK', 'FLEET_PREPARATION',            
'MAP_PREPARATION'}                                                                                                     
2024-04-19 00:21:03.634 | INFO | [Package_name] com.bilibili.azurlane                                                  
2024-04-19 00:21:03.635 | ERROR | GameStuckError: Wait too long

正常出击的log

2024-04-19 00:24:40.805 | INFO | [StopCondition_MapAchievement] non_stop                                               
2024-04-19 00:24:40.806 | INFO | [Fast_Forward] on                                                                     
2024-04-19 00:24:40.812 | INFO | [Auto_Search] on                                                                      
2024-04-19 00:24:40.815 | INFO | Click ( 942,  514) @ MAP_PREPARATION                                                  
2024-04-19 00:24:41.403 | INFO | Handling 2x book setting, mode=prep.                                                  
2024-04-19 00:24:42.610 | INFO | Map do not have 2x book setting                                                       
2024-04-19 00:24:42.613 | INFO | Using fleet: [1, 2, 0]                                                                
2024-04-19 00:24:42.646 | INFO | Hard satisfied: Fleet_1: True, Fleet_2: True, Submarine: None                         
2024-04-19 00:24:42.650 | INFO | Hard Campaign. No fleet preparation                                                   
2024-04-19 00:24:42.652 | INFO | Auto search setting                                                                   
2024-04-19 00:24:42.666 | INFO | [_fleet_sidebar_offset] 0                                                             
2024-04-19 00:24:42.668 | INFO | [Fleet_sidebar] 1/3                                                                   
2024-04-19 00:24:42.670 | INFO | Click (1220,  417) @ FLEET_SIDEBAR_0_2                                                
2024-04-19 00:24:43.139 | INFO | [_fleet_sidebar_offset] 0                                                             
2024-04-19 00:24:43.142 | INFO | [Fleet_sidebar] 3/3                                                                   
2024-04-19 00:24:43.143 | INFO | [Auto_Search_Setting] fleet1_all_fleet2_standby                                       
2024-04-19 00:24:43.144 | INFO | Selected to the correct auto search setting                                           
2024-04-19 00:24:43.147 | INFO | Click (1109,  597) @ FLEET_PREPARATION                                                
2024-04-19 00:24:44.052 | INFO | is_auto_search_running appeared

可以发现map_is_auto_search被设为了False

观察游戏发现周回模式开关的切换速度要快于自律寻敌选项出现/消失的速度。示意:

Recording-2024-04-19 -big-original

我在一个足够快上的设备上进行测试,录制了一个60fps的视频,通过数帧得出大概耗时:

  1. 点击周回模式开关到周回模式开关切换约0.1s
  2. 周回模式开关切换到自律寻敌选择框出现在正确的位置上约0.3s

而在log中点击FAST_FORWARD_OFF到判断No auto search option仅过了0.31s

如何复现

  1. 手动关闭周回模式
  2. 以自律寻敌模式出击该地图
  3. 出现问题

预期行为

No response

相关 Logs

No response

截图

No response

还有别的吗?

可能的解决方案:

  1. fast_forward.set返回前sleep约0.3s
  2. FAST_FORWARD_ON改为自律寻敌左侧的问号图标
LmeSzinc commented 4 months ago

调整 offset 即可

auto_search = Switch('Auto_Search', offset=(20, 20))
auto_search.add_status('on', check_button=AUTO_SEARCH_ON)
auto_search.add_status('off', check_button=AUTO_SEARCH_OFF)
Air111 commented 4 months ago

调整 offset 即可

自律寻敌选择框是最后出来的(在最右侧),只能提早一帧识别出来,我觉得不太行

Air111 commented 4 months ago

https://github.com/LmeSzinc/AzurLaneAutoScript/blob/a59a3af2a8c8641b806a90621e7314ba17f61fd6/module/handler/fast_forward.py#L213-L230

我觉得这里可以用被注释掉的来判断。这个函数在 453b38f 加进去的时候就是这个样子,所以我也没法判断是什么原因弃用了被注释掉的判断方式。