showcase source code import tkinter as tk import threading import time import os import sys import numpy as np import mss from pynput import mouse, keyboard import ctypes try: import win32api, win32gui, win32con except ImportError: print("библиотека pywin32 не установлена") sys.exit(1) KEY_TOGGLE_MODE = keyboard.Key.insert # кнопка переключения режима 1 режим типо одиночный и бурст KEY_HOLD = mouse.Button.x2 # кнопка удержания TAP_TIME = 0.040 # время между выстрелами BURST_COUNT = 3 # количество выстрелов BURST_COOLDOWN = 0.150 # время между очередями PIXEL_BOX = 3 # размер области поиска PIXEL_SENS = 60 # чувствительность поиска PIXEL_COLOR = np.array([254, 254, 64], dtype=np.uint8) class AppState: def __init__(self): self.is_active = False self.is_held = False self.running = True self.last_shot_time = 0 self.lock = threading.Lock() user32 = ctypes.windll.user32 self.screen_width = user32.GetSystemMetrics(0) self.screen_height = user32.GetSystemMetrics(1) center_x, center_y = self.screen_width // 2, self.screen_height // 2 self.search_area = {"top": center_y - PIXEL_BOX, "left": center_x - PIXEL_BOX, "width": (PIXEL_BOX * 2) + 1, "height": (PIXEL_BOX * 2) + 1} class OSD(tk.Tk): def __init__(self, state: AppState): super().__init__() self.state = state self.status_text = tk.StringVar() self.overrideredirect(True) self.geometry("+10+10") self.attributes("-topmost", True); self.attributes("-alpha", 0.8); self.configure(bg="black") self.label = tk.Label(self, textvariable=self.status_text, font=("Segoe UI", 10, "bold"), fg="white", bg="black", padx=10, pady=5) self.label.pack() self.label.bind("<ButtonPress-1>", self.start_move); self.label.bind("<ButtonRelease-1>", self.stop_move); self.label.bind("<B1-Motion>", self.do_move) self.update_osd() def start_move(self, event): self.x, self.y = event.x, event.y def stop_move(self, event): self.x, self.y = None, None def do_move(self, event): self.geometry(f"+{self.winfo_x() + event.x - self.x}+{self.winfo_y() + event.y - self.y}") def update_osd(self): with self.state.lock: if not self.state.running: return if self.state.is_active: status_string = "BURST" else: status_string = "ON" if self.state.is_held else "OFF" self.status_text.set(f"STATUS: {status_string}") self.after(100, self.update_osd) def fire_loop(state: AppState): target_color_bgr = PIXEL_COLOR[::-1] def simulate_click(hwnd, delay): win32gui.PostMessage(hwnd, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, 0) time.sleep(delay) win32gui.PostMessage(hwnd, win32con.WM_LBUTTONUP, 0, 0) with mss.mss() as sct: while state.running: if not state.is_held: time.sleep(0.01) continue img = sct.grab(state.search_area) frame = np.array(img, dtype=np.uint8)[:,:,:3] diff = np.abs(frame.astype(np.int16) - target_color_bgr) found = np.any(np.all(diff <= PIXEL_SENS, axis=2)) if not found: continue hwnd = win32gui.GetForegroundWindow() current_time = time.monotonic() if state.is_active: if (current_time - state.last_shot_time) > BURST_COOLDOWN: with state.lock: if not state.is_held: continue state.last_shot_time = current_time for _ in range(BURST_COUNT): if not state.is_held: break simulate_click(hwnd, TAP_TIME) else: simulate_click(hwnd, 0.060) time.sleep(0.150) def setup_listeners(state: AppState): def on_click(x, y, button, pressed): if button == KEY_HOLD: with state.lock: state.is_held = pressed if not pressed: state.last_shot_time = 0 def on_press(key): if key == KEY_TOGGLE_MODE: with state.lock: state.is_active = not state.is_active; state.last_shot_time = 0 print(f"Режим изменен: {'BURST' if state.is_active else 'ON/OFF'}") print("Скрипт запущен. Закройте окно для выхода."); mouse_listener = mouse.Listener(on_click=on_click) keyboard_listener = keyboard.Listener(on_press=on_press) mouse_listener.start(); keyboard_listener.start() mouse_listener.join(); keyboard_listener.join() if __name__ == "__main__": app_state = AppState() osd = OSD(app_state) logic_thread = threading.Thread(target=fire_loop, args=(app_state,), daemon=True) listener_thread = threading.Thread(target=setup_listeners, args=(app_state,), daemon=True) logic_thread.start(); listener_thread.start() osd.mainloop() print("Окно закрыто. Завершение работы...") with app_state.lock: app_state.running = False os._exit(0) Python import tkinter as tk import threading import time import os import sys import numpy as np import mss from pynput import mouse, keyboard import ctypes try: import win32api, win32gui, win32con except ImportError: print("библиотека pywin32 не установлена") sys.exit(1) KEY_TOGGLE_MODE = keyboard.Key.insert # кнопка переключения режима 1 режим типо одиночный и бурст KEY_HOLD = mouse.Button.x2 # кнопка удержания TAP_TIME = 0.040 # время между выстрелами BURST_COUNT = 3 # количество выстрелов BURST_COOLDOWN = 0.150 # время между очередями PIXEL_BOX = 3 # размер области поиска PIXEL_SENS = 60 # чувствительность поиска PIXEL_COLOR = np.array([254, 254, 64], dtype=np.uint8) class AppState: def __init__(self): self.is_active = False self.is_held = False self.running = True self.last_shot_time = 0 self.lock = threading.Lock() user32 = ctypes.windll.user32 self.screen_width = user32.GetSystemMetrics(0) self.screen_height = user32.GetSystemMetrics(1) center_x, center_y = self.screen_width // 2, self.screen_height // 2 self.search_area = {"top": center_y - PIXEL_BOX, "left": center_x - PIXEL_BOX, "width": (PIXEL_BOX * 2) + 1, "height": (PIXEL_BOX * 2) + 1} class OSD(tk.Tk): def __init__(self, state: AppState): super().__init__() self.state = state self.status_text = tk.StringVar() self.overrideredirect(True) self.geometry("+10+10") self.attributes("-topmost", True); self.attributes("-alpha", 0.8); self.configure(bg="black") self.label = tk.Label(self, textvariable=self.status_text, font=("Segoe UI", 10, "bold"), fg="white", bg="black", padx=10, pady=5) self.label.pack() self.label.bind("<ButtonPress-1>", self.start_move); self.label.bind("<ButtonRelease-1>", self.stop_move); self.label.bind("<B1-Motion>", self.do_move) self.update_osd() def start_move(self, event): self.x, self.y = event.x, event.y def stop_move(self, event): self.x, self.y = None, None def do_move(self, event): self.geometry(f"+{self.winfo_x() + event.x - self.x}+{self.winfo_y() + event.y - self.y}") def update_osd(self): with self.state.lock: if not self.state.running: return if self.state.is_active: status_string = "BURST" else: status_string = "ON" if self.state.is_held else "OFF" self.status_text.set(f"STATUS: {status_string}") self.after(100, self.update_osd) def fire_loop(state: AppState): target_color_bgr = PIXEL_COLOR[::-1] def simulate_click(hwnd, delay): win32gui.PostMessage(hwnd, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, 0) time.sleep(delay) win32gui.PostMessage(hwnd, win32con.WM_LBUTTONUP, 0, 0) with mss.mss() as sct: while state.running: if not state.is_held: time.sleep(0.01) continue img = sct.grab(state.search_area) frame = np.array(img, dtype=np.uint8)[:,:,:3] diff = np.abs(frame.astype(np.int16) - target_color_bgr) found = np.any(np.all(diff <= PIXEL_SENS, axis=2)) if not found: continue hwnd = win32gui.GetForegroundWindow() current_time = time.monotonic() if state.is_active: if (current_time - state.last_shot_time) > BURST_COOLDOWN: with state.lock: if not state.is_held: continue state.last_shot_time = current_time for _ in range(BURST_COUNT): if not state.is_held: break simulate_click(hwnd, TAP_TIME) else: simulate_click(hwnd, 0.060) time.sleep(0.150) def setup_listeners(state: AppState): def on_click(x, y, button, pressed): if button == KEY_HOLD: with state.lock: state.is_held = pressed if not pressed: state.last_shot_time = 0 def on_press(key): if key == KEY_TOGGLE_MODE: with state.lock: state.is_active = not state.is_active; state.last_shot_time = 0 print(f"Режим изменен: {'BURST' if state.is_active else 'ON/OFF'}") print("Скрипт запущен. Закройте окно для выхода."); mouse_listener = mouse.Listener(on_click=on_click) keyboard_listener = keyboard.Listener(on_press=on_press) mouse_listener.start(); keyboard_listener.start() mouse_listener.join(); keyboard_listener.join() if __name__ == "__main__": app_state = AppState() osd = OSD(app_state) logic_thread = threading.Thread(target=fire_loop, args=(app_state,), daemon=True) listener_thread = threading.Thread(target=setup_listeners, args=(app_state,), daemon=True) logic_thread.start(); listener_thread.start() osd.mainloop() print("Окно закрыто. Завершение работы...") with app_state.lock: app_state.running = False os._exit(0) requirements pip install pynput mss numpy keyboard pywin32 How to setup, you need to set color yellow (Deuteranopia) 1. bind you can switch a bind in main.py 2. bind insert - swap modes tap mode - burst mode 3. the software have a menu Thanks for watching Goodluck in matches :D