-
Автор темы
- #1
В програмировании не силен, в туториалах тоже, но нахлебником на форуме быть не хочу, поэтому я покажу на примерах как создать скрипт на AutoHotKey начиная с простых макросов и биндов заканчивая цветовым аимботом. Эти знания будут полезны для всех игр и программ.
На самом деле возможности у AHK огромны, но не нашлось еще такого задрота который бы сделал полноценный аимбот и звуковое есп по считыванию данных со звуковой карты.
Устанавливаем AHK, после кликаем правой кнопкой мыши > создать > AutoHotKey script. Набираем имя, сохраняем. Жмем правой кнопкой мыши по скрипту > «edit scrip» или «открыть с помощью»
Цветовой аимбот.
Хлопцы, не стоит вскрывать эту тему. Вы молодые, шутливые, вам все легко. Это не то. Это не полноценный аимбот и даже не тот который был в вермилионе. Сюда лучше не лезть. Серьезно, любой из вас будет жалеть. Лучше закройте тему и забудьте, что тут писалось. Я вполне понимаю, что данным сообщением вызову дополнительный интерес, но хочу сразу предостеречь пытливых - стоп. Остальные просто не найдут.
П.С Расписал основы, даже не все, не судите строго. В интернете полно туториалов и готовых скриптов на любую тему. Аимбот не мой, свой я потерял. Пишите вопросы если есть, отвечу.
На самом деле возможности у AHK огромны, но не нашлось еще такого задрота который бы сделал полноценный аимбот и звуковое есп по считыванию данных со звуковой карты.
Устанавливаем AHK, после кликаем правой кнопкой мыши > создать > AutoHotKey script. Набираем имя, сохраняем. Жмем правой кнопкой мыши по скрипту > «edit scrip» или «открыть с помощью»
Insert::PoshelNaXY() //Биндим функцию на клавишу Insert
PoshelNaXY() //Задаем функцию
{
SendInput y //Посылаем нажатие кнопки y
Sleep, 250 //Ждем 250 миллисикунд пока откроется окно с чатом
SendInput Poshel {enter} //посылаем набор букв и кнопку Enter
}
PoshelNaXY() //Задаем функцию
{
SendInput y //Посылаем нажатие кнопки y
Sleep, 250 //Ждем 250 миллисикунд пока откроется окно с чатом
SendInput Poshel {enter} //посылаем набор букв и кнопку Enter
}
Часто, что бы что-то было понятно и для общего комфорта иногда надо добавлять звуковые уведомления в скрипт. Сделать это можно 2 способами:
SoundBeep, 1000, 100 //Проигрывает «бииииип» с тональностю 1000, длительностью 100
SoundPlay, Media\shutdown.wav // проигрывает звук shutdown.waw из папки Media
SoundBeep, 1000, 100 //Проигрывает «бииииип» с тональностю 1000, длительностью 100
SoundPlay, Media\shutdown.wav // проигрывает звук shutdown.waw из папки Media
*space:: //Выполняет следующие команды если вы удерживаете пробел, *-удержание; # - клавиша виндовс; ! - alt; ^ - control; + - shift; ~ - стандартная функция клавеши не блокируеться, те виндовс воспрнимает нажатие клавиши и скрипт. Другие атрибуты смотрите на сайте AHK;
Sleep 20 //ждем
Loop // создаем цикл
{
GetKeyState,state,space,P //state — название переменной которая отвечает за статус клавиши, space – имя клавиши, P – режим, когда пользователь давит на клавишу, режим T – когда пользователь включает/ выключает нажатием на клавишу
if state = U //если клавиша был разжата (отпущена) то ...
break //завершаем цикл
Send,{space} //посылаем пробел
Sleep,17 //ждем перед повторением цикла
}
Sleep 20 //ждем
Loop // создаем цикл
{
GetKeyState,state,space,P //state — название переменной которая отвечает за статус клавиши, space – имя клавиши, P – режим, когда пользователь давит на клавишу, режим T – когда пользователь включает/ выключает нажатием на клавишу
if state = U //если клавиша был разжата (отпущена) то ...
break //завершаем цикл
Send,{space} //посылаем пробел
Sleep,17 //ждем перед повторением цикла
}
Home::Reload // перезагружает скрипт, особенно удобно так как не надо постоянно перезапускать скрипт, если вы что-то в нем меняете или если что-то пошло не так
End::ExitApp //закрывает скрипт, нужно обязательно, если что-то пойдет по ..., например ахк начнет хуярить мышкой в космос, клавиши перестанут нажиматься, ну или просто быстро закрыть скрипт.
Insert::suspend //ставит скрипт на паузу
4)Функциия работает когда активно окно csgo.exe
#If WinActive("ahk_exe csgo.exe")
4)Функциия работает когда активно окно csgo.exe
#If WinActive("ahk_exe csgo.exe")
End::ExitApp //закрывает скрипт, нужно обязательно, если что-то пойдет по ..., например ахк начнет хуярить мышкой в космос, клавиши перестанут нажиматься, ну или просто быстро закрыть скрипт.
Insert::suspend //ставит скрипт на паузу
4)Функциия работает когда активно окно csgo.exe
#If WinActive("ahk_exe csgo.exe")
4)Функциия работает когда активно окно csgo.exe
#If WinActive("ahk_exe csgo.exe")
ScriptActive = 0
F5::
If ScriptActive = 1 //переменная
{
ScriptActive = 0
SoundPlay, Media\deactivated.wav
}
else if ScriptActive = 0
{
ScriptActive = 1
SoundPlay, Media\activated.wav
}
return
далее в функцию суем
If ScriptActive = 1
{
F5::
If ScriptActive = 1 //переменная
{
ScriptActive = 0
SoundPlay, Media\deactivated.wav
}
else if ScriptActive = 0
{
ScriptActive = 1
SoundPlay, Media\activated.wav
}
return
далее в функцию суем
If ScriptActive = 1
{
Работает только в оконном режиме
Loop
{
PixelGetColor, Color, 18, 729 // cчитывает цвет пикселя по координатам 18,729 и записывает его в переменную Color
if Color = %Color1%
{
MouseClick, left, 100, 300 //посылаем клик левой кнопкой мыши по координатам 100, 300
}
Важно: координаты пикселей можно узнать с помощью AU3_Spy.exe в папке с AHK
Loop
{
PixelGetColor, Color, 18, 729 // cчитывает цвет пикселя по координатам 18,729 и записывает его в переменную Color
if Color = %Color1%
{
MouseClick, left, 100, 300 //посылаем клик левой кнопкой мыши по координатам 100, 300
}
Важно: координаты пикселей можно узнать с помощью AU3_Spy.exe в папке с AHK
Хорощо работает в кс 1.6, если использовать кастомные модели игроков, то будет работать и в csgo
TColor:=0xFFCC99 //цвета смотрим в AU3_spy.exe
HeadColor:=0x00ED00
CTcolor:=00009E
RButton:: //Если зажата правая кнопка мыши
Sleep 100
Loop
{
PixelGetColor, Color, 18, 729
if Color = %Color1%
{
Send {LButton down}
Send {LButton up}
}
GetKeyState,state,RButton,P
if state = U
break
MouseGetPos, mX, mY //записывает координаты мыши в переменные
PixelSearch, nX, nY, mX - 5, mY - 5, mX + 5, mY + 5, 0x00ED00, 100, Fast //nY, nX, mY, mX – углы квадрата на котором считываеются пиксели: 100 – возможное различие цвета, Fast — метод поиска (быстрый)
If ((nX != "") && (nY != ""))
{
Send, {Blind}{LButton}
}
}
TColor:=0xFFCC99 //цвета смотрим в AU3_spy.exe
HeadColor:=0x00ED00
CTcolor:=00009E
RButton:: //Если зажата правая кнопка мыши
Sleep 100
Loop
{
PixelGetColor, Color, 18, 729
if Color = %Color1%
{
Send {LButton down}
Send {LButton up}
}
GetKeyState,state,RButton,P
if state = U
break
MouseGetPos, mX, mY //записывает координаты мыши в переменные
PixelSearch, nX, nY, mX - 5, mY - 5, mX + 5, mY + 5, 0x00ED00, 100, Fast //nY, nX, mY, mX – углы квадрата на котором считываеются пиксели: 100 – возможное различие цвета, Fast — метод поиска (быстрый)
If ((nX != "") && (nY != ""))
{
Send, {Blind}{LButton}
}
}
Send {Space}
Sleep 330
Send {LButton down}
Send {LButton up}
return
Sleep 330
Send {LButton down}
Send {LButton up}
return
Опять же, только оконный режим. Рисует маленький квадратик по центру. Можно заменить картинкой используя SplashImage, pic.gif
Gui Destroy
Gui, +AlwaysOnTop
Gui, Color, fffffa
Winset, TransColor, ff0000
gui, -caption
gui, +border
gui, show, w2 h2, crosshair
Gui Destroy
Gui, +AlwaysOnTop
Gui, Color, fffffa
Winset, TransColor, ff0000
gui, -caption
gui, +border
gui, show, w2 h2, crosshair
С интерфейсом можно заморачиваться, на сайте ahk есть AutoGUI - визуальный редактор.
Цветовой аимбот.
Хлопцы, не стоит вскрывать эту тему. Вы молодые, шутливые, вам все легко. Это не то. Это не полноценный аимбот и даже не тот который был в вермилионе. Сюда лучше не лезть. Серьезно, любой из вас будет жалеть. Лучше закройте тему и забудьте, что тут писалось. Я вполне понимаю, что данным сообщением вызову дополнительный интерес, но хочу сразу предостеречь пытливых - стоп. Остальные просто не найдут.
#HotKeyInterval 1
#MaxHotkeysPerInterval 127
SetKeyDelay,-1, 8 //Установка задержки перед срабатыванием клавиши. -1 значит задержки нет. 8 - длительность нажатия
SetControlDelay, -1
SetMouseDelay, -1
SetWinDelay,-1
CoordMode, Pixel, Screen, RGB //режим поиска координат
CoordMode, Mouse, Screen
PID := DllCall("GetCurrentProcessId")
Process, Priority, %PID%, Normal
EMCol := 0x171111
ColVn := 1
ZeroX := 960 //Половинки разрешений (центр)
ZeroY := 540
CFovX := 10 //FoV
CFovY := 10
ScanL := ZeroX - CFovX //Сканирует на 10 пиклей влево
ScanR := ZeroX + CFovX //вправо
ScanT := ZeroY - CFovY
ScanB := ZeroY + CFovY
Loop, {
GetKeyState, Mouse2, LButton, P
PixelSearch, AimPixelX, AimPixelY, ScanL, ScanT, ScanR, ScanB, EMCol, ColVn, Fast RGB
GoSub GetAimOffset //Переход к метке GetAimOffset
GoSub GetAimMoves
GoSub MouseMoves
GoSub SleepF
}
GetAimOffset:
AimX := AimPixelX - ZeroX
AimY := AimPixelY - ZeroY
If ( AimX > 0 ) { //Поиск направления
DirX := 1
}
If ( AimX < 0 ) {
DirX := -1
}
If ( AimY > 0 ) {
DirY := 1
}
If ( AimY < 0 ) {
DirY := -1
}
AimOffsetX := AimX * DirX
AimOffsetY := AimY * DirY
Return
GetAimMoves: //Строит линию
RootX := Ceil(( AimOffsetX ** ( 1 / 2 )))
RootY := Ceil(( AimOffsetY ** ( 1 / 2 )))
MoveX := RootX * DirX
MoveY := RootY * DirY
Return
MouseMoves: //Двигает мышку
If ( Mouse2 == "D" ) {
DllCall("mouse_event", uint, 1, int, MoveX, int, MoveY, uint, 0, int, 0)
}
Return
Insert::ExitApp
#MaxHotkeysPerInterval 127
SetKeyDelay,-1, 8 //Установка задержки перед срабатыванием клавиши. -1 значит задержки нет. 8 - длительность нажатия
SetControlDelay, -1
SetMouseDelay, -1
SetWinDelay,-1
CoordMode, Pixel, Screen, RGB //режим поиска координат
CoordMode, Mouse, Screen
PID := DllCall("GetCurrentProcessId")
Process, Priority, %PID%, Normal
EMCol := 0x171111
ColVn := 1
ZeroX := 960 //Половинки разрешений (центр)
ZeroY := 540
CFovX := 10 //FoV
CFovY := 10
ScanL := ZeroX - CFovX //Сканирует на 10 пиклей влево
ScanR := ZeroX + CFovX //вправо
ScanT := ZeroY - CFovY
ScanB := ZeroY + CFovY
Loop, {
GetKeyState, Mouse2, LButton, P
PixelSearch, AimPixelX, AimPixelY, ScanL, ScanT, ScanR, ScanB, EMCol, ColVn, Fast RGB
GoSub GetAimOffset //Переход к метке GetAimOffset
GoSub GetAimMoves
GoSub MouseMoves
GoSub SleepF
}
GetAimOffset:
AimX := AimPixelX - ZeroX
AimY := AimPixelY - ZeroY
If ( AimX > 0 ) { //Поиск направления
DirX := 1
}
If ( AimX < 0 ) {
DirX := -1
}
If ( AimY > 0 ) {
DirY := 1
}
If ( AimY < 0 ) {
DirY := -1
}
AimOffsetX := AimX * DirX
AimOffsetY := AimY * DirY
Return
GetAimMoves: //Строит линию
RootX := Ceil(( AimOffsetX ** ( 1 / 2 )))
RootY := Ceil(( AimOffsetY ** ( 1 / 2 )))
MoveX := RootX * DirX
MoveY := RootY * DirY
Return
MouseMoves: //Двигает мышку
If ( Mouse2 == "D" ) {
DllCall("mouse_event", uint, 1, int, MoveX, int, MoveY, uint, 0, int, 0)
}
Return
Insert::ExitApp
П.С Расписал основы, даже не все, не судите строго. В интернете полно туториалов и готовых скриптов на любую тему. Аимбот не мой, свой я потерял. Пишите вопросы если есть, отвечу.
Последнее редактирование: