═════════════════════════════════════════════════════════════════════════════════════════════════════════
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`
在提问之前...
描述你的问题
环境信息
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
截图
log.txt
还有别的吗?
。