The Ultimate CS:GO Multi-Script

Posts 1–3 of 3 · Page 1 of 1
The Ultimate CS:GO Multi-Script
Hi all!

This is my latest script for CSGO.

If you liked this tool and would like to support the developer (me) you can private message me using the forum messaging and you can donate something to me. Since I need to work, donating will help me lessen my work load and make more scripts! Please post if you wanna suggest a script idea!

Note: this is NOT a hack!!! It is just a script that simulates mouse movements and clicks!
For more human-like behavior, the script has random sleep times.

Features:
  • Auto-buy: bind to one of the three numpad keys
  • Burst, 2x tap, 1x tap fire modes
  • Auto fire (make your pistol or shotgun full auto!)
  • recoil reducer (moves mouse down) yeah!
  • For the recoil reducer, I use 3 for most primary weapons (ak 47, m4a1, etc.) and 2 for deagle and 1 for other pistols (assuming that for the pistols that auto fire is on) THIS DEPENDS ON UR SENSITIVITY! test out the values!
  • NEW FEATURE: slow down auto fire for DEAGLES!

Controls:
  • Numpad 1-3 to choose preset (buy)
  • Numpad 4 to make your semi-auto weapon fully auto!
  • Numpad 5 = knife mode, best knifing combos!
  • Numpad 6 = tap once is burst, but when u hold down mouse its fully auto
  • Numpad 7-9 to choose fire mode
  • RCtrl to change fire mode to default
  • RAlt to toggle recoil reducer

Requirements:
  • run csgo in windowed mode
  • DOWNLOAD AUTOHOTKEY at autohotkey.com


Script Code:
Currently, the only way to get the source is at the official AutoHotKey forums.
Link:
autohotkey.com/board/topic/121057-the-ultimate-csgo-multi-script/
Here's the script
;CS:GO Auto Buy and CS:GO Tools
;By: EpicnessCoding
;There is random sleep times for more human-like inputs
;Have Fun!

#singleInstance, force ;one instance is easier to handle
SendMode Input ;for the fast sending keys

;0 = default
;1 = tap once
;2 = tap twice
;3 = burst
;4 = fully auto for semi auto
fireMode = 0

;0 = off
;1 = on
noRecoil = 0

canAuto = 0

firstShotRecoilTimeMax = 15
firstShotRecoilTime = 0

firstShotRestTimeMax = 5
firstShotRestTime = 0

;FileRead, tempWepText, %A_WorkingDir%\buy_info.txt
tempWepText := "nova|xm1014|sawedoff|m249|negev|mac10|mp7|ump45|p 90|bizon|famas|m4a1|ssg08|aug|awp|scar20`nelite|p2 50|tec9|deagle`nvest|vesthelm|Taser|defuser`nmolot ov|decoy|flashbang|hegrenade|smokegrenade`nNova|XM 1014|Sawed-Off/MAG-7|M249|Negev|MAC-10/MP9|MP7|UMP-45|P90|PP-Bizon|Galil AR/FAMAS|AK47/M4A4/M4A1-S|SSG 08|SG 553/AUG|AWP|G3SG1/SCAR-20`nDual Berettas|P250|Tec-9/Five-SeveN/CZ75-Auto|Desert Eagle`nKevlar Vest|Kevlar + Helmet|Zeus x27|Defuse/Rescue Kit`nMolotov/Incendiary Grenade|Decoy Grenade|Flashbang|High Explosive Grenade|Smoke Grenade"

;remove all of the \r for simplicity
StringReplace, tempWepText, tempWepText, `r, ,
;arrays 1-4 is console name
;arrays 5-8 is label (alias)
StringSplit, wepArray, tempWepText, `n,
;the split string array is for the sake of simplicity
StringSplit, wepArraySplit1, wepArray1, |,
StringSplit, wepArraySplit2, wepArray2, |,
StringSplit, wepArraySplit3, wepArray3, |,
StringSplit, wepArraySplit4, wepArray4, |,

;read the saved presets file
FileRead, tempSaveText, %A_WorkingDir%\buy_save.txt
If ErrorLevel = 1
{
FileAppend, None#None#None#None^None#None#None#None^None#None# None#None, %A_WorkingDir%\buy_save.txt
FileRead, tempSaveText, %A_WorkingDir%\buy_save.txt
}
StringReplace, tempSaveText, tempSaveText, `r, ,
StringSplit, tempSaveArray, tempSaveText, ^,
StringSplit, tempSaveArraySplit1, tempSaveArray1, #,
StringSplit, tempSaveArraySplit2, tempSaveArray2, #,
StringSplit, tempSaveArraySplit3, tempSaveArray3, #,
;this is were the saved presets are stored
primary1 := tempSaveArraySplit11
secondary1 := tempSaveArraySplit12
gear1 := tempSaveArraySplit13
grenade1 := tempSaveArraySplit14

primary2 := tempSaveArraySplit21
secondary2 := tempSaveArraySplit22
gear2 := tempSaveArraySplit23
grenade2 := tempSaveArraySplit24

primary3 := tempSaveArraySplit31
secondary3 := tempSaveArraySplit32
gear3 := tempSaveArraySplit33
grenade3 := tempSaveArraySplit34

;show GUI
Gui, Show, w320 h500, CS:GO Tools
Gui, Add, Text, x10 y10, Primary:
Gui, Add, DropDownList, x10 y30 w150 vPrimaryWep Choose1 AltSubmit, None|%wepArray5%
Gui, Add, Text, x10 y60, Secondary:
Gui, Add, DropDownList, x10 y80 w150 vSecondaryWep Choose1 AltSubmit, None|%wepArray6%
Gui, Add, Text, x10 y110, Gear:
Gui, Add, ListBox, x10 y130 w150 h120 vGearWep Multi Choose1 AltSubmit, None|%wepArray7%
Gui, Add, Text, x10 y250, Grenade:
Gui, Add, ListBox, x10 y270 w150 h120 vGrenadeWep Multi Choose1 AltSubmit, None|%wepArray8%

Gui, Add, GroupBox, x170 y100 w135 h150, Other:
Gui, Add, Text, x180 y120 w200 vFIREMODE cBlue, Fire Mode: Default
Gui, Add, Text, x180 y140 vNORECOIL cBlue, No Recoil: Off
Gui, Add, Text, x180 y160 cBlue, No Recoil Amount:
Gui, Add, Edit
Gui, Add, UpDown, vNORECOILAMT Range1-8, 1
Gui, Add, CheckBox, x180 y210 vFireStop, Stop On Fire
Gui, Add, CheckBox, x180 y230 vSlowAuto, Slow Down Auto Fire

Gui, Add, Text, x10 y390, Set As Key:
Gui, Add, Button, x10 y410 w60 h60 vPRESET1BUTTON gPRESET1, Numpad 1
Gui, Add, Button, x80 y410 w60 h60 vPRESET2BUTTON gPRESET2, Numpad 2
Gui, Add, Button, x150 y410 w60 h60 vPRESET3BUTTON gPRESET3, Numpad 3

Gui, Add, GroupBox, x-5 y470 w325 h500,
Gui, Add, Text, x5 y480, The Ultimate CS:GO Tools!
Gui, Add, Text, x220 y480, By: EpicnessCoding

OnExit, GuiClose

return ;return so that the program does not run the code below on start-up

;handle the preset button clicks
PRESET1:

GuiControlGet, PrimaryWep
GuiControlGet, SecondaryWep
GuiControlGet, GearWep
GuiControlGet, GrenadeWep
PrimaryWep -= 1
SecondaryWep -= 1

if(PrimaryWep != 0)
primary1 := wepArraySplit1%PrimaryWep%
else
primary1 := "None"
if(SecondaryWep != 0)
secondary1 := wepArraySplit2%SecondaryWep%
else
secondary1 := "None"

Loop, parse, GearWep, |
{
tempVar := A_LoopField - 1
if(tempVar != 0){
if(A_Index == 1)
gear1 := wepArraySplit3%tempVar%
else
gear1 := gear1 . "|" . wepArraySplit3%tempVar%
}else{
gear1 := "None"
}
}

Loop, parse, GrenadeWep, |
{
tempVar := A_LoopField - 1
if(tempVar != 0){
if(A_Index == 1)
grenade1 := wepArraySplit4%tempVar%
else
grenade1 := grenade1 . "|" . wepArraySplit4%tempVar%
}else{
grenade1 := "None"
break
}
}

return

PRESET2:

GuiControlGet, PrimaryWep
GuiControlGet, SecondaryWep
GuiControlGet, GearWep
GuiControlGet, GrenadeWep
PrimaryWep -= 1
SecondaryWep -= 1

if(PrimaryWep != 0)
primary2 := wepArraySplit1%PrimaryWep%
else
primary2 := "None"
if(SecondaryWep != 0)
secondary2 := wepArraySplit2%SecondaryWep%
else
secondary2 := "None"

Loop, parse, GearWep, |
{
tempVar := A_LoopField - 1
if(tempVar != 0){
if(A_Index == 1)
gear2 := wepArraySplit3%tempVar%
else
gear2 := gear2 . "|" . wepArraySplit3%tempVar%
}else{
gear2 := "None"
}
}

Loop, parse, GrenadeWep, |
{
tempVar := A_LoopField - 1
if(tempVar != 0){
if(A_Index == 1)
grenade2 := wepArraySplit4%tempVar%
else
grenade2 := grenade2 . "|" . wepArraySplit4%tempVar%
}else{
grenade2 := "None"
break
}
}

return

PRESET3:

GuiControlGet, PrimaryWep
GuiControlGet, SecondaryWep
GuiControlGet, GearWep
GuiControlGet, GrenadeWep
PrimaryWep -= 1
SecondaryWep -= 1

if(PrimaryWep != 0)
primary3 := wepArraySplit1%PrimaryWep%
else
primary3 := "None"
if(SecondaryWep != 0)
secondary3 := wepArraySplit2%SecondaryWep%
else
secondary3 := "None"

Loop, parse, GearWep, |
{
tempVar := A_LoopField - 1
if(tempVar != 0){
if(A_Index == 1)
gear3 := wepArraySplit3%tempVar%
else
gear3 := gear3 . "|" . wepArraySplit3%tempVar%
}else{
gear3 := "None"
}
}

Loop, parse, GrenadeWep, |
{
tempVar := A_LoopField - 1
if(tempVar != 0){
if(A_Index == 1)
grenade3 := wepArraySplit4%tempVar%
else
grenade3 := grenade3 . "|" . wepArraySplit4%tempVar%
}else{
grenade3 := "None"
break
}
}

return

GuiClose:

FileDelete, %A_WorkingDir%\buy_save.txt
saveText := primary1 . "#" . secondary1 . "#" . gear1 . "#" . grenade1 . "^" . primary2 . "#" . secondary2 . "#" . gear2 . "#" . grenade2 . "^" . primary3 . "#" . secondary3 . "#" . gear3 . "#" . grenade3
FileAppend, %saveText%, %A_WorkingDir%\buy_save.txt

ExitApp

SetTitleMatchMode, 3
#IfWinActive Counter-Strike: Global Offensive

*RAlt::

noRecoil += 1
if(noRecoil > 1){
noRecoil = 0
}
if(noRecoil == 0)
GuiControl, , NORECOIL, No Recoil: Off
else
GuiControl, , NORECOIL, No Recoil: On

return

;toggles the fireMode using right ctrl
*RCtrl::

fireMode = 0 ;default
KeyWait, RCtrl
GuiControl, , FIREMODE, Fire Mode: Default

return

*Numpad7::

fireMode = 1 ;tap once
KeyWait, Numpad7
GuiControl, , FIREMODE, Fire Mode: 1x Tap Fire

return

*Numpad8::

fireMode = 2 ;tap twice
KeyWait, Numpad8
GuiControl, , FIREMODE, Fire Mode: 2x Tap Fire

return

*Numpad9::

fireMode = 3 ;burst
KeyWait, Numpad9
GuiControl, , FIREMODE, Fire Mode: Burst Fire

return

*Numpad4::

fireMode = 4 ;full auto for semi auto
KeyWait, Numpad4
GuiControl, , FIREMODE, Fire Mode: Auto Fire

return

*Numpad5::

fireMode = 5 ;full auto for semi auto
KeyWait, Numpad5
GuiControl, , FIREMODE, Fire Mode: Knife

return

*Numpad6::

fireMode = 6 ;tap = burst, click and hold = regular fire
KeyWait, Numpad6
GuiControl, , FIREMODE, Fire Mode: TapBurstHoldRegular

return

;handles the numpad events (use preset)
*Numpad1::

Send ``

Random, tempRand, 140, 160
Sleep %tempRand%

if(primary1 != "None"){
Send buy%A_Space%%primary1%
Random, tempRand, 140, 160
Sleep %tempRand%
Send {Enter down}
Sleep 50
Send {Enter up}
Sleep 50
}
if(secondary1 != "None"){
Send buy%A_Space%%secondary1%
Random, tempRand, 140, 160
Sleep %tempRand%
Send {Enter down}
Sleep 50
Send {Enter up}
Sleep 50
}
if(gear1 != "None"){
Loop, parse, gear1, |
{
Send buy%A_Space%%A_LoopField%
Random, tempRand, 140, 160
Sleep %tempRand%
Send {Enter down}
Sleep 50
Send {Enter up}
Sleep 50
}
}
if(grenade1 != "None"){
Loop, parse, grenade1, |
{
Send buy%A_Space%%A_LoopField%
Random, tempRand, 140, 160
Sleep %tempRand%
Send {Enter down}
Sleep 50
Send {Enter up}
Sleep 50
}
}

Random, tempRand, 140, 160
Sleep %tempRand%
Send {ESC}

return

*Numpad2::

Send ``

Random, tempRand, 140, 160
Sleep %tempRand%

if(primary2 != "None"){
Send buy%A_Space%%primary2%
Random, tempRand, 140, 160
Sleep %tempRand%
Send {Enter down}
Sleep 50
Send {Enter up}
Sleep 50
}
if(secondary2 != "None"){
Send buy%A_Space%%secondary2%
Random, tempRand, 140, 160
Sleep %tempRand%
Send {Enter down}
Sleep 50
Send {Enter up}
Sleep 50
}
if(gear2 != "None"){
Loop, parse, gear2, |
{
Send buy%A_Space%%A_LoopField%
Random, tempRand, 140, 160
Sleep %tempRand%
Send {Enter down}
Sleep 50
Send {Enter up}
Sleep 50
}
}
if(grenade2 != "None"){
Loop, parse, grenade2, |
{
Send buy%A_Space%%A_LoopField%
Random, tempRand, 140, 160
Sleep %tempRand%
Send {Enter down}
Sleep 50
Send {Enter up}
Sleep 50
}
}

Random, tempRand, 140, 160
Sleep %tempRand%
Send {ESC}

return

*Numpad3::

Send ``

Random, tempRand, 140, 160
Sleep %tempRand%

if(primary3 != "None"){
Send buy%A_Space%%primary3%
Random, tempRand, 140, 160
Sleep %tempRand%
Send {Enter down}
Sleep 50
Send {Enter up}
Sleep 50
}
if(secondary3 != "None"){
Send buy%A_Space%%secondary3%
Random, tempRand, 140, 160
Sleep %tempRand%
Send {Enter down}
Sleep 50
Send {Enter up}
Sleep 50
}
if(gear3 != "None"){
Loop, parse, gear3, |
{
Send buy%A_Space%%A_LoopField%
Random, tempRand, 140, 160
Sleep %tempRand%
Send {Enter down}
Sleep 50
Send {Enter up}
Sleep 50
}
}
if(grenade3 != "None"){
Loop, parse, grenade3, |
{
Send buy%A_Space%%A_LoopField%
Random, tempRand, 140, 160
Sleep %tempRand%
Send {Enter down}
Sleep 50
Send {Enter up}
Sleep 50
}
}

Random, tempRand, 140, 160
Sleep %tempRand%
Send {ESC}

return

;handles left click for the burst and tap fire
$*LButton::

GuiControlGet, FireStop
GuiControlGet, SlowAuto
if(FireStop == 1){
if(GetKeyState("a", "P") && !GetKeyState("d", "P")){
Hotkey, *a, dummyLabel, On
Send {a down}
Sleep 20
Send {a up}
}else if(GetKeyState("d", "P") && !GetKeyState("a", "P")){
Hotkey, *d, dummyLabel, On
Send {d down}
Sleep 20
Send {d up}
}

if(GetKeyState("w", "P") && !GetKeyState("s", "P")){
Hotkey, *w, dummyLabel, On
Send {w down}
Sleep 20
Send {w up}
}else if(GetKeyState("s", "P") && !GetKeyState("w", "P")){
Hotkey, *s, dummyLabel, On
Send {s down}
Sleep 20
Send {s up}
}
}

GuiControlGet, NORECOILAMT
if(fireMode == 0){ ;default
Click down
While GetKeyState("LButton", "P"){
if(noRecoil == 1){
if(firstShotRestTime > firstShotRestTimeMax){
if(firstShotRecoilTime > firstShotRecoilTimeMax){
mouseXY(0, NORECOILAMT)
Random, tempRand, 200, 220
Sleep %tempRand%
}else{
firstShotRecoilTime += 1
mouseXY(0, NORECOILAMT * 2)
Random, tempRand, 20, 40
Sleep %tempRand%
}
}else{
firstShotRestTime += 1
Random, tempRand, 20, 40
Sleep %tempRand%
}
}
}
Click up
}else if(fireMode == 1){ ;tap once
Click down
Random, tempRand, 40, 60
Sleep %tempRand%
Click up
}else if(fireMode == 2){ ;tap twice
Click down
Random, tempRand, 40, 60
Sleep %tempRand%
Click up
Random, tempRand, 50, 70
Sleep %tempRand%
Click down
Random, tempRand, 40, 60
Sleep %tempRand%
Click up
}else if(fireMode == 3){ ;burst
Click down
Random, tempRand, 175, 250
Sleep %tempRand%
Click up
}else if(fireMode == 4){ ;auto for semi-autos
While GetKeyState("LButton", "P"){
Click down
Random, tempRand, 15, 25
Sleep %tempRand%
Click up
Sleep 20
if(noRecoil == 1){
mouseXY(0, NORECOILAMT)
}
if(SlowAuto == 1){
Random, tempRand, 450, 550
Sleep %tempRand%
}else{
Random, tempRand, 15, 25
Sleep %tempRand%
}
}
}else if(fireMode == 5){
While GetKeyState("LButton", "P"){
Random, tempRand, 0, 2
if(tempRand <= 1){
Click down
Random, tempRand, 20, 30
Sleep %tempRand%
Click up
Random, tempRand, 500, 600
Sleep %tempRand%
Click down
Random, tempRand, 20, 30
Sleep %tempRand%
Click up
Random, tempRand, 500, 600
Sleep %tempRand%
Click down right
Random, tempRand, 20, 30
Sleep %tempRand%
Click up right
Random, tempRand, 1000, 1200
Sleep %tempRand%
}else{
Click down
Random, tempRand, 20, 30
Sleep %tempRand%
Click up
Random, tempRand, 500, 600
Sleep %tempRand%
Click down right
Random, tempRand, 20, 30
Sleep %tempRand%
Click up right
Random, tempRand, 1000, 1200
Sleep %tempRand%
}
}
}else if(fireMode == 6){
Click down
canAuto = 0
SetTimer, LButtonHeld, 200
While GetKeyState("LButton", "P"){
if(noRecoil == 1){
if(firstShotRestTime > firstShotRestTimeMax){
if(firstShotRecoilTime > firstShotRecoilTimeMax){
mouseXY(0, NORECOILAMT)
Random, tempRand, 200, 220
Sleep %tempRand%
}else{
firstShotRecoilTime += 1
mouseXY(0, NORECOILAMT * 2)
Random, tempRand, 20, 40
Sleep %tempRand%
}
}else{
firstShotRestTime += 1
Random, tempRand, 20, 40
Sleep %tempRand%
}
}
}
if(canAuto == 0){
Click up
Random, tempRand, 50, 100
Sleep %tempRand%
Click down
Random, tempRand, 30, 40
Sleep %tempRand%
Click up
Random, tempRand, 50, 100
Sleep %tempRand%
Click down
Random, tempRand, 30, 40
Sleep %tempRand%
Click up
SetTimer, LButtonHeld, Off
}else{
Click up
}
}
firstShotRecoilTime = 0
firstShotRestTime = 0
if(FireStop == 1){
Hotkey, *a, dummyLabel, Off
Hotkey, *d, dummyLabel, Off
Hotkey, *w, dummyLabel, Off
Hotkey, *s, dummyLabel, Off
if(GetKeyState("a", "P") && !GetKeyState("d", "P")){
Sleep 20
Send {a down}
Sleep 20
Send {a up}
}else if(GetKeyState("d", "P") && !GetKeyState("a", "P")){
Sleep 20
Send {d down}
Sleep 20
Send {d up}
}

if(GetKeyState("w", "P") && !GetKeyState("s", "P")){
Sleep 20
Send {w down}
Sleep 20
Send {w up}
}else if(GetKeyState("s", "P") && !GetKeyState("w", "P")){
Sleep 20
Send {s down}
Sleep 20
Send {s up}
}
}

return

LButtonHeld:

canAuto = 1

return

mouseXY(x, y) ;moves the mouse (relative movements)
{
DllCall("mouse_event",uint,1,int,x,int,y,uint,0,in t,0)
}

dummyLabel: ;does nothing (to disable a key)
return
Posts 1–3 of 3 · Page 1 of 1

Post a Reply

Similar Threads

Tags for this Thread

None

Need help?