═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════ TACTICAL ═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════ 2026-07-03 09:43:15.622 | INFO | <<< UI ENSURE >>> 2026-07-03 09:43:15.627 | INFO | UI get current page 2026-07-03 09:43:15.684 | INFO | [UI] page_commission 2026-07-03 09:43:15.687 | INFO | Goto page_reward 2026-07-03 09:43:15.691 | INFO | <<< UI GOTO PAGE_REWARD >>> 2026-07-03 09:43:15.732 | INFO | Page switch: page_commission -> page_reward 2026-07-03 09:43:15.735 | INFO | Click ( 68, 66) @ BACK_ARROW 2026-07-03 09:43:16.238 | INFO | Page arrive: page_reward ═══════════════════════════════════════════════ TACTICAL CLASS RECEIVE ════════════════════════════════════════════════ 2026-07-03 09:43:16.246 | INFO | TACTICAL CLASS RECEIVE 2026-07-03 09:43:16.305 | INFO | Click ( 453, 439) @ REWARD_2_WHITE 2026-07-03 09:43:17.146 | INFO | Click ( 814, 520) @ POPUP_CONFIRM_TACTICAL 2026-07-03 09:43:17.493 | INFO | <<< TACTICAL GET FINISH >>> 2026-07-03 09:43:17.502 | INFO | Tactical status: ['running', 'running', 'running', 'empty'] 2026-07-03 09:43:17.781 | INFO | [TACTICAL_REMAIN 0.270s] ['07:49:03', '07:53:39', '03:53:41'] 2026-07-03 09:43:17.785 | INFO | Tactical finish: ['2026-07-03 17:32:20', '2026-07-03 17:36:56', '2026-07-03 13:36:58'] 2026-07-03 09:43:17.787 | INFO | Click ( 61, 47) @ BACK_ARROW 2026-07-03 09:43:17.942 | INFO | <<< TACTICAL SKILL CHOOSE >>> 2026-07-03 09:43:17.973 | INFO | Loading OCR model: ./bin/cnocr_models/cnocr 2026-07-03 09:43:18.137 | INFO | [SKILL_LEVEL 0.190s] ['MAX', '0/1D', 'MAX'] 2026-07-03 09:43:18.141 | INFO | [LEVEL] 0/1D 2026-07-03 09:43:18.144 | INFO | Tactical skill select 2026-07-03 09:43:18.148 | INFO | Click ( 736, 343) @ SKILL_0_1 2026-07-03 09:43:18.652 | INFO | Click ( 768, 318) @ SKILL_0_1 2026-07-03 09:43:19.188 | INFO | Click ( 580, 316) @ SKILL_0_1 2026-07-03 09:43:19.691 | INFO | Click ( 748, 318) @ SKILL_0_1 2026-07-03 09:43:20.213 | INFO | Click ( 514, 322) @ SKILL_0_1 2026-07-03 09:43:20.741 | INFO | Click ( 720, 316) @ SKILL_0_1 2026-07-03 09:43:21.222 | INFO | Click ( 499, 327) @ SKILL_0_1 2026-07-03 09:43:21.757 | INFO | Click ( 707, 307) @ SKILL_0_1 2026-07-03 09:43:22.278 | INFO | Click ( 493, 314) @ SKILL_0_1 2026-07-03 09:43:22.772 | INFO | Click ( 748, 309) @ SKILL_0_1 2026-07-03 09:43:23.243 | INFO | Click ( 701, 300) @ SKILL_0_1 2026-07-03 09:43:23.740 | INFO | Function calls: threading.py L890 _bootstrap() threading.py L926 _bootstrap_inner() threading.py L870 run() threadbased.py L254 run() output.py L801 click_callback() app.py L457 process_manager.py L51 start() process.py L112 start() context.py L223 _Popen() context.py L277 _Popen() popen_fork.py L20 __init__() popen_fork.py L74 _launch() process.py L297 _bootstrap() process.py L99 run() process_manager.py L166 run_process() alas.py L570 loop() alas.py L70 run() alas.py L209 tactical() tactical_class.py L742 run() tactical_class.py L536 tactical_class_receive() tactical_class.py L621 _tactical_skill_choose() tactical_class.py L588 _tactical_skill_select() control.py L37 click() device.py L263 handle_control_check() device.py L299 click_record_check() device.py L43 show_function_call() 2026-07-03 09:43:23.756 | WARNING | Too many click for a button: SKILL_0_1 2026-07-03 09:43:23.759 | WARNING | History click: ['REWARD_2_WHITE', 'POPUP_CONFIRM_TACTICAL', 'BACK_ARROW', 'SKILL_0_1', 'SKILL_0_1', 'SKILL_0_1', 'SKILL_0_1', 'SKILL_0_1', 'SKILL_0_1', 'SKILL_0_1', 'SKILL_0_1', 'SKILL_0_1', 'SKILL_0_1', 'SKILL_0_1', 'SKILL_0_1'] 2026-07-03 09:43:23.763 | ERROR | GameTooManyClickError: Too many click for a button: SKILL_0_1 2026-07-03 09:43:23.767 | WARNING | Saving error: ./log/error/1783043003767