import mss
import numpy as np
import time
import random
import interception
# ========== ИНИЦИАЛИЗАЦИЯ ДРАЙВЕРА ==========
interception.auto_capture_devices()
# Ищем мышь
mouse = None
for device in interception.devices:
if interception.is_mouse(device):
mouse = device
break
if mouse is None:
print("[ОШИБКА] Мышь не найдена. Проверь установку драйвера Interception.")
exit()
print(f"[OK] Драйвер готов. Мышь: {interception.get_hardware_id(mouse)}")
# ========== ФУНКЦИЯ КЛИКА ЧЕРЕЗ ДРАЙВЕР ==========
def hardware_click():
"""Клик левой кнопкой через драйвер (система видит как настоящий)"""
# Нажать левую кнопку (код 0x01)
stroke_down = interception.MouseStroke()
stroke_down.flags = interception.MouseFlag.LEFT_BUTTON_DOWN
stroke_down.rolling = 0
stroke_down.information = 0
# Отпустить левую кнопку
stroke_up = interception.MouseStroke()
stroke_up.flags = interception.MouseFlag.LEFT_BUTTON_UP
stroke_up.rolling = 0
stroke_up.information = 0
# Отправляем с микро-задержкой между нажатием и отпусканием
interception.send(mouse, stroke_down)
time.sleep(random.uniform(0.005, 0.015)) # Длительность клика (5-15мс)
interception.send(mouse, stroke_up)
def micro_move():
"""Сдвинуть мышь на 1-2 пикселя для анти-AFK"""
stroke = interception.MouseStroke()
stroke.flags = interception.MouseFlag.MOVE
stroke.x = random.randint(-2, 2)
stroke.y = random.randint(-2, 2)
stroke.rolling = 0
stroke.information = 0
interception.send(mouse, stroke)
# ========== НАСТРОЙКИ (ПОДСТРОЙ ПОД СЕБЯ) ==========
TRIGGER_ZONE = {
"left": 955, # Поменяй под своё разрешение!
"top": 535,
"width": 8,
"height": 8
}
# Цвет врага (красная обводка). Подстрой пипеткой из Paint!
R_MIN = 170
G_MAX = 100
B_MAX = 100
# Анти-робот
MIN_DELAY = 0.010 # Мин. задержка (сек)
MAX_DELAY = 0.035 # Макс. задержка
CHANCE = 0.87 # Шанс выстрела (87%)
# Анти-AFK
AFK_TIME = 55 # Секунд между микро-движениями
# ========== ГЛАВНЫЙ ЦИКЛ ==========
last_move = time.time()
print("[ПОИСК] Ожидаю врага в прицеле...")
with mss.mss() as sct:
while True:
img = np.array(sct.grab(TRIGGER_ZONE))
r = img[:, :, 2].mean()
g = img[:, :, 1].mean()
b = img[:, :, 0].mean()
# Проверка: красный (враг) есть, зелёного/синего (союзник) нет
if r > R_MIN and g < G_MAX and b < B_MAX:
if random.random() < CHANCE:
time.sleep(random.uniform(MIN_DELAY, MAX_DELAY))
hardware_click()
time.sleep(0.07) # Кулдаун от спама
# Анти-AFK дёрганье
if time.time() - last_move > AFK_TIME:
micro_move()
last_move = time.time()
time.sleep(0.001)