Как писать на АХК

В програмировании шарю очень мало, в туторах тоже, но нахлебником на брокенкоре не буду, поэтому я покажу на примере, как написать скрипт на ахк начиная с дефолт макросов и биндов - заканчивая аимботом по пикселю. Эти знания полезны для всех игр и не только.
В целом способности у AHK огромные, но никак не нашлось еще подобного задрота что б произвел хороший аимбот также голосовое есп согласно считыванию сведений с звуковой карты.

Ставим AHK, уже после кликаем левой клавишей мыши > создать > AutoHotKey script. Набираем название, сохраняем. Нажимаем левой клавишей мыши по скрипту > «edit script» либо «открыть с помощью»

Insert:: PoshelNaXY() //Биндим функцию на клавишу Insert
PoshelNaXY() // Задаем функцию
{
SendInput t//Посылаем нажатие клавиш t
Sleep, 250 //Ожидаем 250 миллисикунд пока откроется окно с чатом
SendInput Poshel {enter} //посылаем набор букв и клавишу Enter
}


Зачастую, что бы что-то было понятно и для общего комфорта иногда надо добавлять звуковые уведомления в скрипт.
Сделать это можно 2 способами:

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 //ждем перед повторением цикла
}

Home::Reload // перезагружает скрипт, особенно удобно так как не надо постоянно перезапускать скрипт, если вы что-то в нем меняете или если что-то пошло не так
End::ExitApp //закрывает скрипт, нужно обязательно, если что-то пойдет по пизде, например ахк начнет хуярить мышкой в космос, клавиши перестанут нажиматься, ну или просто быстро закрыть скрипт.
Insert::suspend //ставит скрипт на паузу
Функциия работает когда активно окно 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
{

Работает только в оконном режиме
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}
}
}

Send {Space}
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

С интерфейсом можно и не заморачиваться, на сайте 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


Прилагаю список клавиш для ахк, еще понадобится.
LButton - левая кнопка
RButton - правая кнопка
MButton - средняя кнопка
WheelDown - колесико вниз
WheelUp - колесико вверх
XButton1 - боковая четвертая кнопка мышки
XButton2 - боковая пятая кнопка мышки
Space - пробел
Tab - таб
Enter/return - энтер
Escape/Esc - ескейп
Backspace/bs - та штука чтобы стирать символы
Delete/del - Delete
Insert/ins - Insert
Home
End
PgUp - Думаю понятно
PgDn
Up - Стрелочка вверх
Down -Стрелочка вниз
Left - Стрелочка влево
Right - Стрелочка вправо
ScrollLock
CapsLock - также думаю понятно
NumLock
NumpadDiv - "/"
NumpadMult - "*"
NumpadAdd - "+"
NumpadSub - "-"
NumpadEnter - энтер на нампаде
Клавиши когда Numlock выключен:
NumpadDel
NumpadIns
NumpadClear - как Numpad5
NumpadUp
NumpadDown
NumpadLeft
NumpadRight
NumpadHome
NumpadEnd
NumpadPgUp
NumpadPgDn
Клавиши когда NumLock включен:
Numpad0
Numpad1
Numpad2
Numpad3
Numpad4
Numpad5
Numpad6
Numpad7
Numpad8
Numpad9
NumpadDot - "Numpad . "
С F1 по F24
AppsKey - клавиша, вызывающая контекстное меню
LWin - левая клавиша "Windows"
RWin - правая клавиша "Windows"
Control/ctrl
Alt
Shift

g:: // Клавиша на которую работает скрипт
loop, 1 // Повторение цикла
{
send {f} // Нажатие клавиши на которую редактируется постройка
sleep 10
send {Lbutton}
sleep 10
send {f}
}
return

g:: // Клавиша на которую работает скрипт
loop, 1 // Повторение цикла
{
send {f} // Нажатие клавиши на которую редактируется постройка
sleep 10
send {Lbutton}
}
return
 
Последнее редактирование:
эта тема пренадлежит Kleskby, которую он написал в далеком 17 году на ***** форуме, все что ты сделал, так это просто добавлял свои комментарии
Я собираюсь дополнять эту тему, тут будет все что нужно для новичков
 
Сверху Снизу