Skip to content

宿舍计划中:购买玫瑰时点击“max”按钮后虽然成功点击但是未识别成功,导致反复点击触发保护 #585

Description

@jxing7036

在提问之前...

  • 我已经搜索了现有的 issues
  • 我在提问题之前至少花费了 5 分钟来思考和准备
  • 我已经阅读了 Wiki 中的 常见问题(FAQ)
  • 我正在使用最新版的 AzurPilot

描述你的问题

环境信息
Alas 版本:最新

游戏服务器:CN(奥林匹克行动)

模拟器:redroid(分辨率 1280×720,DPI 240)

任务配置:PrivateQuarters 中 Buy_Roses=True,其余默认

问题现象
在执行宿舍(Private Quarters)每周商店购买任务时,脚本成功进入商店,识别到物品 GiftRoses_x1_Coins_x1000 并点击选中,随后尝试点击 PRIVATE_QUARTERS_SHOP_AMOUNT_MAX(最大购买数量)按钮,但界面未按预期变化(例如未弹出数量选择框或购买确认框)。脚本误以为点击无效,于是连续重复点击该按钮约 15 次,最终触发 GameTooManyClickError 并导致任务失败,随后自动重启游戏。

如何复现

复现步骤
启用 PrivateQuarters 任务,开启 Buy_Roses=True。

确保角色已达到宿舍开放条件,且有足够金币(日志显示金币 72776,足够购买)。

运行脚本,等待进入宿舍商店界面。

观察脚本点击物品后,反复点击屏幕中下位置(约 870, 512)的“最大数量”按钮。

预期行为

点击“最大数量”按钮后,应正确设置购买数量为当前可购买的最大值,然后脚本继续执行购买确认,完成一次购买。

相关 Logs

═════════════════════════════════════════════════════════════════════════════════════════════════════════
                                                  START                                                  
═════════════════════════════════════════════════════════════════════════════════════════════════════════
INFO     00:27:57.735 │ [Alas] 启动调度器循环: alas                                                      
INFO     00:27:57.745 │ [Server] cn                                                                      
INFO     00:28:00.819 │ 网络时间已校准: ntp.aliyun.com, offset=0.051s                                    
INFO     00:28:00.824 │ Bind task ['General', 'Alas']                                                    
INFO     00:28:00.918 │ Server "奥林匹克行动" is available.                                              
INFO     00:28:00.936 │ Pending tasks: ['PrivateQuarters', 'Minigame', 'Awaken', 'OpsiAshBeacon',        
         'OpsiDaily', 'OpsiAbyssal', 'OpsiStronghold', 'OpsiObscure', 'Daily', 'Hard', 'OpsiAshAssist',  
         'Main', 'OpsiScheduling', 'OpsiMeowfficerFarming', 'OpsiHazard1Leveling', 'ThreeOilLowCost']    
INFO     00:28:00.942 │ [Task] PrivateQuarters (Enable, 2026-07-20 00:00:00)                             
INFO     00:28:00.946 │ Bind task ['General', 'Alas', 'PrivateQuarters']                                 
════════════════════════════════════════════════ DEVICE ═════════════════════════════════════════════════
INFO     00:28:05.771 │ DEVICE                                                                           
INFO     00:28:05.777 │ [IS_ON_PHONE_CLOUD] False                                                        
INFO     00:28:05.780 │ [AdbBinary] /app/AzurLaneAutoScript/.venv/bin/adb                                
INFO     00:28:05.783 │ [AdbClient] AdbClient(127.0.0.1, 5037)                                           
INFO     00:28:05.788 │ <<< DETECT DEVICE >>>                                                            
INFO     00:28:05.792 │ Here are the available devices, copy to Alas.Emulator.Serial to use it or set    
         Alas.Emulator.Serial="auto"                                                                     
INFO     00:28:05.798 │ emulator-5554                                                                    
INFO     00:28:05.802 │ Current serial 127.0.0.1:5555 not found but paired device emulator-5554 found.   
         Using serial: emulator-5554                                                                     
INFO     00:28:05.809 │ "emulator-5554" is a `emulator-*` serial, skip adb connect                       
INFO     00:28:05.812 │ [AdbDevice] AdbDevice(serial=emulator-5554)                                      
INFO     00:28:05.835 │ [PackageName] com.bilibili.azurlane                                              
INFO     00:28:05.838 │ [Server] cn                                                                      
INFO     00:28:05.844 │ Screenshot interval set to 0.3s                                                  
INFO     00:28:05.848 │ [Alas] 调度器: 开始任务 `PrivateQuarters`                                        
═════════════════════════════════════════════════════════════════════════════════════════════════════════
                                             PRIVATEQUARTERS                                             
═════════════════════════════════════════════════════════════════════════════════════════════════════════
INFO     00:28:06.951 │ [Screen_size] 1280x720                                                           
INFO     00:28:09.989 │ <<< UI ENSURE >>>                                                                
INFO     00:28:09.994 │ UI get current page                                                              
INFO     00:28:10.078 │ [UI] page_main                                                                   
INFO     00:28:10.082 │ Goto page_dormmenu                                                               
INFO     00:28:10.088 │ <<< UI GOTO PAGE_DORMMENU >>>                                                    
INFO     00:28:10.117 │ Page switch: page_main -> page_dormmenu                                          
INFO     00:28:10.121 │ Click ( 576,  699) @ MAIN_GOTO_DORMMENU                                          
INFO     00:28:13.619 │ Page arrive: page_dormmenu                                                       
INFO     00:28:13.623 │ <<< UI GOTO PAGE_PRIVATE_QUARTERS >>>                                            
INFO     00:28:13.662 │ Page switch: page_dormmenu -> page_private_quarters                              
INFO     00:28:13.666 │ Click (1063,  522) @ DORMMENU_GOTO_PRIVATE_QUARTERS                              
INFO     00:28:15.024 │ Page switch: page_main -> page_dormmenu                                          
INFO     00:28:15.027 │ Click ( 574,  687) @ MAIN_GOTO_DORMMENU                                          
INFO     00:28:16.194 │ Page arrive: page_private_quarters                                               
═════════════════════════════════════════ PRIVATE QUARTERS RUN ══════════════════════════════════════════
INFO     00:28:16.199 │ PRIVATE QUARTERS RUN                                                             
INFO     00:28:16.205 │ Task configured for Buy_Roses=True, Buy_Cake=False, Interact_ShipGirl=True,      
         Target_ShipGirl=Aegir                                                                           
─────────────────────────────────────────── GET WEEKLY ITEMS ────────────────────────────────────────────
INFO     00:28:16.212 │ GET WEEKLY ITEMS                                                                 
INFO     00:28:16.215 │ <<< UI CLICK >>>                                                                 
INFO     00:28:16.231 │ Click (1036,  662) @ PRIVATE_QUARTERS_SHOP_ENTER                                 
INFO     00:28:18.024 │ PRIVATE_QUARTERS_LEFT_NAVBAR set to left=2 upper=2                               
INFO     00:28:18.027 │ Nav item active: 0 from range (0, 4)                                             
INFO     00:28:18.029 │ Click ( 157,  269) @ PRIVATE_QUARTERS_LEFT_BUTTON_GRID_0_1                       
INFO     00:28:19.127 │ Nav item active: 1 from range (0, 4)                                             
INFO     00:28:19.133 │ PRIVATE_QUARTERS_BOTTOM_NAVBAR set to left=2                                     
INFO     00:28:19.137 │ Nav item active: 0 from range (0, 3)                                             
INFO     00:28:19.139 │ Click ( 674,  613) @ PRIVATE_QUARTERS_BOTTOM_BUTTON_GRID_1_0                     
INFO     00:28:20.224 │ Nav item active: 1 from range (0, 3)                                             
─────────────────────────────────────────────── SHOP BUY ────────────────────────────────────────────────
INFO     00:28:20.228 │ SHOP BUY                                                                         
INFO     00:28:20.231 │ Loading template folder: ./assets/shop/private_quarters                          
INFO     00:28:20.241 │ [next_template_index] 4                                                          
INFO     00:28:20.248 │ New template: 5                                                                  
INFO     00:28:20.638 │ Connecting to OCR server 127.0.0.1:22268                                         
INFO     00:28:20.649 │ Successfully connected to OCR server                                             
INFO     00:28:21.167 │ [OCR_SHOP_PRICE 0.914s] [280, 280, 280, 1000]                                    
INFO     00:28:21.174 │ [Item detected] 4                                                                
INFO     00:28:22.206 │ [OCR_SHOP_PRICE 0.510s] [280, 280, 280, 1000]                                    
INFO     00:28:22.211 │ [Item detected] 4                                                                
INFO     00:28:22.216 │ Shop row 1: ['5_x1_Gems_x280', 'GiftSirius1_x1_Gems_x280',                       
         'GiftSirius2_x1_Gems_x280', 'GiftRoses_x1_Coins_x1000']                                         
INFO     00:28:22.225 │ Shop row 2: []                                                                   
INFO     00:28:22.371 │ [PRIVATE_QUARTERS_SHOP_GOLD_COINS 0.143s] 72776                                  
INFO     00:28:22.504 │ [PRIVATE_QUARTERS_SHOP_GEMS 0.125s] 5686                                         
INFO     00:28:22.511 │ Gold coins: 72776, Gems: 5686                                                    
INFO     00:28:22.517 │ [Item_sort] GiftRoses_x1_Coins_x1000                                             
INFO     00:28:22.545 │ Click (1022,  268) @ GiftRoses_x1_Coins_x1000                                    
INFO     00:28:23.844 │ Click ( 870,  512) @ PRIVATE_QUARTERS_SHOP_AMOUNT_MAX                            
INFO     00:28:25.076 │ Click ( 865,  514) @ PRIVATE_QUARTERS_SHOP_AMOUNT_MAX                            
INFO     00:28:26.294 │ Click ( 869,  511) @ PRIVATE_QUARTERS_SHOP_AMOUNT_MAX                            
INFO     00:28:27.570 │ Click ( 861,  515) @ PRIVATE_QUARTERS_SHOP_AMOUNT_MAX                            
INFO     00:28:28.766 │ Click ( 874,  512) @ PRIVATE_QUARTERS_SHOP_AMOUNT_MAX                            
INFO     00:28:29.957 │ Click ( 871,  511) @ PRIVATE_QUARTERS_SHOP_AMOUNT_MAX                            
INFO     00:28:31.171 │ Click ( 878,  508) @ PRIVATE_QUARTERS_SHOP_AMOUNT_MAX                            
INFO     00:28:32.368 │ Click ( 875,  518) @ PRIVATE_QUARTERS_SHOP_AMOUNT_MAX                            
INFO     00:28:33.583 │ Click ( 878,  509) @ PRIVATE_QUARTERS_SHOP_AMOUNT_MAX                            
INFO     00:28:34.728 │ Click ( 871,  512) @ PRIVATE_QUARTERS_SHOP_AMOUNT_MAX                            
INFO     00:28:35.904 │ Click ( 869,  509) @ PRIVATE_QUARTERS_SHOP_AMOUNT_MAX                            
INFO     00:28:37.075 │ Function calls:                                                                  
                    <string>    L1 <module>                                                              
                    spawn.py  L122 spawn_main()                                                          
                    spawn.py  L135 _main()                                                               
                  process.py  L320 _bootstrap()                                                          
                  process.py  L108 run()                                                                 
          process_manager.py  L272 run_process()                                                         
                     alas.py L1232 loop()                                                                
                     alas.py  L250 run()                                                                 
                     alas.py  L622 private_quarters()                                                    
         private_quarters.py  L202 run()                                                                 
         private_quarters.py  L168 pq_run()                                                              
         private_quarters.py  L111 pq_shop_weekly_items()                                                
                    clerk.py  L101 shop_buy()                                                            
                    clerk.py   L58 shop_buy_execute()                                                    
                     base.py  L279 appear_then_click()                                                   
                  control.py   L37 click()                                                               
                   device.py  L387 handle_control_check()                                                
                   device.py  L425 click_record_check()                                                  
                   device.py   L49 show_function_call()                                                  
WARNING  00:28:37.081 │ Too many click for a button: PRIVATE_QUARTERS_SHOP_AMOUNT_MAX                    
WARNING  00:28:37.083 │ History click: ['PRIVATE_QUARTERS_LEFT_BUTTON_GRID_0_1',                         
         'PRIVATE_QUARTERS_BOTTOM_BUTTON_GRID_1_0', 'GiftRoses_x1_Coins_x1000',                          
         'PRIVATE_QUARTERS_SHOP_AMOUNT_MAX', 'PRIVATE_QUARTERS_SHOP_AMOUNT_MAX',                         
         'PRIVATE_QUARTERS_SHOP_AMOUNT_MAX', 'PRIVATE_QUARTERS_SHOP_AMOUNT_MAX',                         
         'PRIVATE_QUARTERS_SHOP_AMOUNT_MAX', 'PRIVATE_QUARTERS_SHOP_AMOUNT_MAX',                         
         'PRIVATE_QUARTERS_SHOP_AMOUNT_MAX', 'PRIVATE_QUARTERS_SHOP_AMOUNT_MAX',                         
         'PRIVATE_QUARTERS_SHOP_AMOUNT_MAX', 'PRIVATE_QUARTERS_SHOP_AMOUNT_MAX',                         
         'PRIVATE_QUARTERS_SHOP_AMOUNT_MAX', 'PRIVATE_QUARTERS_SHOP_AMOUNT_MAX']                         
ERROR    00:28:37.085 │ GameTooManyClickError: Too many click for a button:                              
         PRIVATE_QUARTERS_SHOP_AMOUNT_MAX                                                                
WARNING  00:28:37.089 │ [Alas] 保存错误日志: log/error/alas/1784478517088                                
WARNING  00:28:37.830 │ GameStuckError: 1/3                                                              
WARNING  00:28:37.836 │ [Alas] 游戏卡住,com.bilibili.azurlane 将在10秒后重启                            
WARNING  00:28:37.841 │ [Alas] 如果您正在手动操作,请停止 AzurPilot                                      
INFO     00:28:37.885 │ No provider specified, skip sending                                              
INFO     00:28:37.895 │ Task call: Restart                                                               
INFO     00:28:37.915 │ Bind task ['General', 'Alas', 'PrivateQuarters']                                 
INFO     00:28:37.919 │ Save config ./config/alas.json, Restart.Scheduler.NextRun=datetime.datetime(2026,
         7, 20, 0, 28, 37), Restart.Scheduler.Enable=True                                                
INFO     00:28:47.936 │ [Alas] 调度器: 结束任务 `PrivateQuarters`                                        
INFO     00:28:47.939 │ [Alas] 任务 `PrivateQuarters` 遇到可恢复错误,不计入失败限制                     
INFO     00:28:48.038 │ Server "奥林匹克行动" is available.                                              
INFO     00:28:48.042 │ [Server] cn                                                                      
INFO     00:28:48.056 │ Bind task ['General', 'Alas']                                                    
INFO     00:28:48.077 │ Pending tasks: ['Restart', 'PrivateQuarters', 'Minigame', 'Awaken',              
         'OpsiAshBeacon', 'OpsiDaily', 'OpsiAbyssal', 'OpsiStronghold', 'OpsiObscure', 'Daily', 'Hard',  
         'OpsiAshAssist', 'Main', 'OpsiScheduling', 'OpsiMeowfficerFarming', 'OpsiHazard1Leveling',      
         'ThreeOilLowCost']                                                                              
INFO     00:28:48.086 │ [Task] Restart (Enable, 2026-07-20 00:28:37)                                     
INFO     00:28:48.089 │ Bind task ['General', 'Alas', 'Restart']                                         
INFO     00:28:48.104 │ [Alas] 调度器: 开始任务 `Restart`

截图

Image

log.txt

还有别的吗?

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions