Загрузка данных
; ============================================================
; CS2 - TRIGGERBOT (Pixel Change Detection)
; Разработчик: ROCKET / Rocket Way
; Дата: 25.08.2026
; Версия: 2.4 (оптимизирована под CS2)
; ============================================================
#NoEnv
#SingleInstance, Force
#Persistent
#UseHook, On
SendMode, Input
SetBatchLines, -1
SetMouseDelay, -1
Process, Priority, , High
; ============================================================
; ПАРАМЕТРЫ ДЕТЕКЦИИ
; ============================================================
; Область сканирования (центр экрана + отступ)
SCAN_RADIUS := 3 ; Радиус в пикселях от центра
SENSITIVITY := 30 ; Порог изменения цвета (0-255)
CHECK_INTERVAL := 10 ; Интервал проверки (мс)
HOLD_TIME := 50 ; Время удержания ЛКМ после срабатывания (мс)
; Цвета для сравнения (автокалибровка)
global refColor := 0
global isCalibrated := false
global isActive := false
global shotCount := 0
global lastColor := 0
; ============================================================
; ГОРЯЧИЕ КЛАВИШИ
; ============================================================
F1::
isActive := !isActive
if (isActive) {
TrayTip, ROCKET, TRIGGERBOT АКТИВИРОВАН, 2
CalibrateColor()
SetTimer, TriggerCheck, %CHECK_INTERVAL%
} else {
TrayTip, ROCKET, TRIGGERBOT ОТКЛЮЧЁН, 2
SetTimer, TriggerCheck, Off
}
return
F2::Reload ; Перезагрузка скрипта
Esc::ExitApp
; ============================================================
; АВТОМАТИЧЕСКАЯ КАЛИБРОВКА (Ctrl+Alt+C)
; ============================================================
^!c::
CalibrateColor()
return
CalibrateColor() {
global refColor, isCalibrated
CoordMode, Mouse, Screen
MouseGetPos, mX, mY
; Получаем цвет в центре экрана
centerX := A_ScreenWidth // 2
centerY := A_ScreenHeight // 2
PixelGetColor, refColor, centerX, centerY, RGB
isCalibrated := true
TrayTip, ROCKET, Цвет откалиброван: %refColor%, 2
}
; ============================================================
; ОСНОВНАЯ ЛОГИКА ДЕТЕКЦИИ
; ============================================================
TriggerCheck:
if (!isActive || !WinActive("Counter-Strike 2") && !WinActive("CS2"))
return
centerX := A_ScreenWidth // 2
centerY := A_ScreenHeight // 2
; Сканируем область вокруг центра
changeDetected := false
Loop, % SCAN_RADIUS * 2 + 1 {
offsetX := A_Index - SCAN_RADIUS - 1
Loop, % SCAN_RADIUS * 2 + 1 {
offsetY := A_Index - SCAN_RADIUS - 1
PixelGetColor, currentColor, centerX + offsetX, centerY + offsetY, RGB
; Проверяем изменение по цветовым каналам
if (refColor && currentColor != refColor) {
; Вычисляем разницу цветов
diffR := Abs((refColor >> 16) & 0xFF - (currentColor >> 16) & 0xFF)
diffG := Abs((refColor >> 8) & 0xFF - (currentColor >> 8) & 0xFF)
diffB := Abs(refColor & 0xFF - currentColor & 0xFF)
if (diffR > SENSITIVITY || diffG > SENSITIVITY || diffB > SENSITIVITY) {
changeDetected := true
break
}
}
}
if (changeDetected)
break
}
; Если изменение обнаружено - клик
if (changeDetected) {
; Проверка, что курсор мыши находится в пределах экрана
CoordMode, Mouse, Screen
MouseGetPos, mouseX, mouseY
if (mouseX >= 0 && mouseX <= A_ScreenWidth && mouseY >= 0 && mouseY <= A_ScreenHeight) {
; Эмуляция нажатия ЛКМ
Click, %mouseX%, %mouseY%, Down
Sleep, %HOLD_TIME%
Click, %mouseX%, %mouseY%, Up
shotCount++
; Обновляем референсный цвет (адаптация к освещению)
if (Mod(shotCount, 5) == 0) {
PixelGetColor, refColor, centerX, centerY, RGB
}
}
}
; Обновление цветового порога (автоадаптация)
if (Mod(shotCount, 100) == 0 && shotCount > 0) {
PixelGetColor, newRef, centerX, centerY, RGB
refColor := newRef
}
return
; ============================================================
; РАСШИРЕННЫЕ ФУНКЦИИ
; ============================================================
; --- Ручная настройка чувствительности (Ctrl+Shift+S) ---
^+s::
InputBox, newSens, ROCKET Настройка, Введите новую чувствительность (1-255):, , 300, 150
if !ErrorLevel {
SENSITIVITY := newSens
TrayTip, ROCKET, Чувствительность: %SENSITIVITY%, 2
}
return
; --- Отображение цветов под курсором (Ctrl+Alt+P) ---
^!p::
CoordMode, Mouse, Screen
MouseGetPos, mX, mY
PixelGetColor, color, mX, mY, RGB
MsgBox, % "Цвет в точке (" mX ", " mY "): " color
return
; --- Логирование выстрелов (Ctrl+Alt+L) ---
^!l::
TrayTip, ROCKET, Выстрелов сделано: %shotCount%, 2
return
; ============================================================
; ЗАЩИТА ОТ ОБНАРУЖЕНИЯ (VAC)
; ============================================================
; Используются только стандартные API, без инжекта в память.
; Включите рандомизацию задержек:
SetTimer, RandomizeDelays, 1000
RandomizeDelays:
if (isActive) {
; Случайное изменение интервала проверки (8-12 мс)
randomDelay := CHECK_INTERVAL + RandomInt(-2, 2)
SetTimer, TriggerCheck, %randomDelay%
}
return
RandomInt(min, max) {
Random, r, min, max
return r
}
; ============================================================
; ПРОФИЛЬ ДЛЯ РАЗНЫХ РАЗРЕШЕНИЙ
; ============================================================
; Для 1920x1080: SCAN_RADIUS := 3
; Для 1280x720: SCAN_RADIUS := 5 (увеличить область)
; Для 4K: SCAN_RADIUS := 2 (сузить для точности)
; ============================================================
; АВТОЗАПУСК ПРИ СТАРТЕ CS2 (опционально)
; ============================================================
#IfWinActive, Counter-Strike 2
F1::TriggerToggle()
#IfWinActive
TriggerToggle() {
global isActive
isActive := !isActive
if (isActive) {
CalibrateColor()
SetTimer, TriggerCheck, %CHECK_INTERVAL%
SoundBeep, 1000, 100
} else {
SetTimer, TriggerCheck, Off
SoundBeep, 500, 100
}
}
; ============================================================
; GUI-ПАНЕЛЬ ДЛЯ НАСТРОЙКИ (Ctrl+Alt+M)
; ============================================================
^!m::
Gui, New, +AlwaysOnTop, ROCKET CS2 Triggerbot
Gui, Add, Text, , Чувствительность (1-255):
Gui, Add, Edit, vSensEdit w100, %SENSITIVITY%
Gui, Add, Text, , Радиус сканирования (пикс):
Gui, Add, Edit, vRadiusEdit w100, %SCAN_RADIUS%
Gui, Add, Button, gApplySettings, Применить
Gui, Add, Button, gCancelSettings, Отмена
Gui, Show, w200 h150
return
ApplySettings:
Gui, Submit
SENSITIVITY := SensEdit
SCAN_RADIUS := RadiusEdit
Gui, Destroy
TrayTip, ROCKET, Настройки обновлены, 2
return
CancelSettings:
Gui, Destroy
return
; ============================================================
; ПРОВЕРКА ПИКСЕЛЕЙ В РЕАЛЬНОМ ВРЕМЕНИ (отладка)
; ============================================================
#If, isActive
~LButton::
CoordMode, Mouse, Screen
MouseGetPos, mX, mY
PixelGetColor, clickColor, mX, mY, RGB
; Вывод в консоль (если запущено с Debug)
if (A_IsDebug) {
OutputDebug, % "Shot at " mX "," mY " Color: " clickColor
}
return
#If