|
3 | 3 | # Permission is hereby granted, free of charge, to use and distribute this software |
4 | 4 | # provided that this notice remains in all copies. |
5 | 5 |
|
6 | | -#AUTOPICK VERSION 2.1 - MapleSyrupLover |
| 6 | +#AUTOPICK VERSION 2.3.0 - MapleSyrupLover |
7 | 7 |
|
8 | 8 | import time |
9 | 9 | import ctypes |
|
22 | 22 | NEAR_WHITE_THRESHOLD = 245 |
23 | 23 |
|
24 | 24 | # coordinates |
25 | | -SAFE_3_COORDS = [(825, 552), (960, 551), (1095, 552)] |
26 | | -SAFE_2_COORDS = [(890, 552), (1025, 551)] |
27 | | -SAFE_1_COORDS = [(960, 552)] |
| 25 | +SAFE_3_COORDS = [(825, 553), (960, 561), (1095, 553)] |
| 26 | +SAFE_2_COORDS = [(890, 553), (1025, 561)] |
| 27 | +SAFE_1_COORDS = [(960, 553)] |
28 | 28 |
|
29 | 29 | # keybinds |
30 | 30 | KEY_3SAFE = 'q' |
31 | 31 | KEY_2SAFE = 'v' |
32 | 32 | KEY_1SAFE = 'b' |
33 | 33 |
|
34 | 34 | # sampling region size (even number). Smaller = faster, less robust. |
35 | | -SAMPLE_SIZE = 2 |
| 35 | +SAMPLE_SIZE = 2 |
36 | 36 |
|
37 | 37 | # performance tuning |
38 | 38 | POLL_INTERVAL = 0.008 |
39 | | -WAIT_TIMEOUT = 0.45 # seconds to wait for next lock to appear |
| 39 | +WAIT_TIMEOUT = 0.40 # seconds to wait for next lock to appear |
40 | 40 |
|
41 | 41 | # pyautogui tweaks |
42 | 42 | pyautogui.PAUSE = 0 |
@@ -130,26 +130,49 @@ def do_click_if_region(x: int, y: int) -> bool: |
130 | 130 | return True |
131 | 131 | return False |
132 | 132 |
|
| 133 | +_3safe_state = 0 |
| 134 | +_3safe_start_time = 0 |
| 135 | + |
133 | 136 | def run_3safe(): |
134 | | - |
135 | | - if do_click_if_region(*SAFE_3_COORDS[0]): |
136 | | - print("3-Safe: Lock 1 done") |
| 137 | + global _3safe_state, _3safe_start_time |
| 138 | + |
| 139 | + # Reset if timeout exceeded (safety net - 1 second) |
| 140 | + if _3safe_state > 0 and time.time() - _3safe_start_time > 1.0: |
| 141 | + _3safe_state = 0 |
| 142 | + |
| 143 | + if _3safe_state == 0: |
| 144 | + # Looking for Lock 1 |
| 145 | + if do_click_if_region(*SAFE_3_COORDS[0]): |
| 146 | + print("3-Safe: Lock 1 done") |
| 147 | + _3safe_state = 1 |
| 148 | + _3safe_start_time = time.time() |
| 149 | + |
| 150 | + elif _3safe_state == 1: |
| 151 | + # Looking for Lock 2 |
137 | 152 | if wait_for_region(*SAFE_3_COORDS[1]): |
138 | 153 | if is_key_down(KEY_3SAFE): |
139 | 154 | pyautogui.click() |
140 | 155 | print("3-Safe: Lock 2 done") |
141 | | - if wait_for_region(*SAFE_3_COORDS[2]): |
142 | | - if is_key_down(KEY_3SAFE): |
143 | | - pyautogui.click() |
144 | | - print("3-Safe: Lock 3 done") |
145 | | - return |
146 | | - start = time.time() |
147 | | - while is_key_down(KEY_3SAFE) and time.time() - start < 0.16: |
148 | | - if region_has_target(*SAFE_3_COORDS[2]): |
149 | | - pyautogui.click() |
150 | | - print("3-Safe: Lock 3 done (fallback)") |
151 | | - return |
152 | | - time.sleep(POLL_INTERVAL) |
| 156 | + _3safe_state = 2 |
| 157 | + _3safe_start_time = time.time() |
| 158 | + |
| 159 | + elif _3safe_state == 2: |
| 160 | + # Looking for Lock 3 |
| 161 | + if wait_for_region(*SAFE_3_COORDS[2]): |
| 162 | + if is_key_down(KEY_3SAFE): |
| 163 | + pyautogui.click() |
| 164 | + print("3-Safe: Lock 3 done") |
| 165 | + _3safe_state = 0 |
| 166 | + return |
| 167 | + # fallback |
| 168 | + start = time.time() |
| 169 | + while is_key_down(KEY_3SAFE) and time.time() - start < 0.16: |
| 170 | + if region_has_target(*SAFE_3_COORDS[2]): |
| 171 | + pyautogui.click() |
| 172 | + print("3-Safe: Lock 3 done (fallback)") |
| 173 | + _3safe_state = 0 |
| 174 | + return |
| 175 | + time.sleep(POLL_INTERVAL) |
153 | 176 |
|
154 | 177 | def run_2safe(): |
155 | 178 | if do_click_if_region(*SAFE_2_COORDS[0]): |
|
0 commit comments