local SB = {
Filenames = {
"cstrike\\lua\\SBot.log", -- Log file
"cstrike\\lua\\SBot.cfg" -- Config file
},
Information = {
Name = "SteveBot",
Version = "5.0",
PrintColor = { 255, 0, 0, 255 },
PrintColor2 = { 0, 255, 255, 255 },
Log = true,
PrintLogInfo = true
},
-- If you have a weapon from this list, the aimbot and triggerbot wont shoot/aim (if weapon checking is enabled).
BannedWeapons = {
"weapon_flashbang",
"weapon_smokegrenade",
"weapon_c4",
"weapon_hegrenade",
"weapon_knife"
},
DefaultSettings = {
-- Aimbot
["Aimbot"] = true,
["AimbotDelay"] = 5,
["AimbotHold"] = 25,
["AimbotAutoShoot"] = false,
["AimbotAutoShootDelay"] = 15,
["AimbotMode"] = 1,
["AimbotFovX"] = 100,
["AimbotFovY"] = 100,
["AimbotAimOnce"] = 1,
["AimbotFriendlyFire"] = false,
["AimbotKey"] = 1,
["AimbotMousefix"] = 1,
["AimbotMousefixSleep"] = 15,
["AimbotHitboxPos"] = 12,
-- Triggerbot
["Triggerbot"] = true,
["TriggerbotAim"] = false,
["TriggerbotMousefix"] = false,
["TriggerbotMousefixSleep"] = 15,
["TriggerbotHold"] = 25,
["TriggerbotDelay"] = 0,
["TriggerbotKey"] = 5,
["TriggerbotFriendlyFire"] = false,
["TriggerbotMode"] = 0,
["TriggerbotFovX"] = 7,
["TriggerbotFovY"] = 27,
["TriggerbotHitboxPos"] = 12,
-- Autopistol
["Autopistol"] = true,
["AutopistolKey"] = 1,
["AutopistolHold"] = 20,
-- AntiRecoil
["AntiRecoil"] = true,
["AntiRecoilKey"] = 1,
["AntiRecoilExtraAimDown"] = 0.0,
-- Bunnyhop
["Bunnyhop"] = true,
["BunnyhopKey"] = 32,
-- EnemyDown
["EnemyDown"] = false,
["EnemyDownDelay"] = 30,
-- Knifebot
["Knifebot"] = true,
["KnifebotKey"] = 6,
-- AntiAim
["AntiAim"] = false,
["AntiAimDelay"] = 20,
-- Speedhack
["Speedhack"] = true,
["SpeedhackKey"] = 69,
["SpeedhackSpeed"] = 20,
-- Misc
["WeaponCheck"] = false,
--["WeaponCheckDelay"] = 0,
["AntiSmoke"] = true,
["AntiFlash"] = true,
["NoHands"] = true,
["PlayerChams"] = true
},
SettingsPrefix = "sbot_"
}
-- We want to speed up things.
local pairs = pairs
local ipairs = ipairs
local setmetatable = setmetatable
local getmetatable = getmetatable
local tonumber = tonumber
local tostring = tostring
local error = error
local pcall = pcall
local xpcall = xpcall
local collectgarbage = collectgarbage
local unpack = unpack
local type = type
local print = print
local math = math
local string = string
local table = table
local coroutine = coroutine
local getCVar = getCVar
local setCVar = setCVar
local existsCVar = existsCVar
local renameCVar = renameCVar
local removeFlags = removeFlags
local setMinValue = setMinValue
local setMaxValue = setMaxValue
local wait = wait
local getMyIndex = getMyIndex
local isCrouched = isCrouched
local onGround = onGround
local inWater = inWater
local getPos = getPos
local getAng = getAng
local getEyePos = getEyePos
local getHitboxPos = getHitboxPos
local getTeam = getTeam
local isEnemy = isEnemy
local isAlive = isAlive
local getName = getName
local getDistance = getDistance
local isVisible = isVisible
local aimTarget = aimTarget
local isPlayer = isPlayer
local isBot = isBot
local isConnected = isConnected
local getBindForKey = getBindForKey
local getKeyForBind = getKeyForBind
local getWeaponID = getWeaponID
local getAppID = getAppID
local getGameDir = getGameDir
-- ###################################
-- ####### PRINTING #######
-- ###################################
local oldprint = print
function print(str)
oldprint("[" .. SB.Information.Name .. " v" .. SB.Information.Version .. "]: ", SB.Information.PrintColor[1], SB.Information.PrintColor[2], SB.Information.PrintColor[3], SB.Information.PrintColor[4])
oldprint(str, SB.Information.PrintColor2[1], SB.Information.PrintColor2[2], SB.Information.PrintColor2[3], SB.Information.PrintColor2[4])
end
-- ###################################
-- ####### ANTI-LEAK #######
-- ###################################
do
local RegisteredUsers = { "stenox123456789" }
local GameDir = getGameDir()
local CanUse = false
for k, v in pairs(RegisteredUsers) do
if GameDir:find(v) then
CanUse = true
end
end
if not CanUse then
print("Logged that someone wanted to leak my cheat, no more cheats will come.\n")
os.remove("cstrike\\lua\\" .. arg[2] .. ".lua")
return
end
end
-- ###################################
-- ####### CHECKS #######
-- ###################################
if existsCVar("_menuopen") then
if getCVar("_menuopen") == "1" then
print("Script has been loaded already!\n")
return
end
else
createCVar("_menuopen", 0)
end
-- ###################################
-- ####### MENU #######
-- ###################################
Menu = {
defaultMenuColor = { 255, 255, 255 }, -- color to draw all the submenus that are not selected with
selectedMenuColor = { 100, 255, 255 }, -- color to draw currently selected menu with
defaultOpenState = false, -- whenever submenu is created, should it's open state be false or true if no open parameter was given
firstDrawLine = 20, -- line to start drawing menu from
subMenus = {},
open = true
}
function Menu:new(label, action, open)
local inst = {
parent = self,
label = label,
action = action,
open = open or self.defaultOpenState,
selected = false
}
if not self.metatable then
self.metatable = { __index = self }
end
setmetatable( inst, self.metatable )
if rawget( self, "subMenus" ) then
table.insert( self.subMenus, inst )
else
self.subMenus = { inst }
end
return inst
end
function Menu:setSettings(settings)
for k, v in pairs(settings) do
self[k] = v
end
end
function Menu:hasAvailableSubMenus()
if rawget( self, "subMenus" ) and rawget( self, "open" ) then
return true
else
return false
end
end
function Menu:getSelectedMenu()
if self.selected then
return self
elseif self:hasAvailableSubMenus() then
for k, v in ipairs( self.subMenus ) do
local result = v:getSelectedMenu()
if result then
return result
end
end
end
end
function Menu:getChildIndex()
for k, v in ipairs( self.parent.subMenus ) do
if v == self then
return k
end
end
end
function Menu:getNextSibling()
if self:getChildIndex() < #self.parent.subMenus then
return self.parent.subMenus[ self:getChildIndex() + 1 ]
else
return self
end
end
function Menu:getPreviousSibling()
if self:getChildIndex() > 1 then
return self.parent.subMenus[ self:getChildIndex() - 1 ]
else
return self
end
end
function Menu:getLastMenuInDescendingOrder()
if self:hasAvailableSubMenus() then
return self.subMenus[ #self.subMenus ]:getLastMenuInDescendingOrder()
else
return self
end
end
function Menu:getFirstMenuWithYoungerSiblingsInAscendingOrder()
if self.parent.open then
if self:getChildIndex() < #self.parent.subMenus then
return self
elseif self.parent == Menu then
return Menu.subMenus[ 1 ]
else
return self.parent:getFirstMenuWithYoungerSiblingsInAscendingOrder()
end
else
return self
end
end
function Menu:getPreviousMenu()
if self:getChildIndex() == 1 then
if self.parent.open then
if self.parent == Menu then
return Menu:getLastMenuInDescendingOrder()
else
return self.parent
end
else
return self:getLastMenuInDescendingOrder()
end
else
if self.parent.open then
return self:getPreviousSibling():getLastMenuInDescendingOrder()
else
return self:getLastMenuInDescendingOrder()
end
end
end
function Menu:getNextMenu()
if self:hasAvailableSubMenus() then
return self.subMenus[ 1 ]
elseif self:getChildIndex() < #self.parent.subMenus then
return self:getNextSibling()
else -- if it's last child
return self:getFirstMenuWithYoungerSiblingsInAscendingOrder()
end
end
function Menu:getDrawColor()
if rawget( self, "selected" ) then
return self.selectedMenuColor[ 1 ], self.selectedMenuColor[ 2 ], self.selectedMenuColor[ 3 ]
else
return self.defaultMenuColor[ 1 ], self.defaultMenuColor[ 2 ], self.defaultMenuColor[ 3 ]
end
end
function Menu:getDirectoryMark()
if rawget( self, "subMenus" ) then
if self.open then
return "[-]"
else
return "[+]"
end
else
return ""
end
end
function Menu:draw(indent, firstDrawLine)
local line = firstDrawLine or { 20 }
local indent = indent or 0
if self.label then
con_nxprintf( line[ 1 ], self.label .. self:getDirectoryMark() .. string.rep( " ", indent ), 999999, self:getDrawColor() )
line[ 1 ] = line[ 1 ] + 1
end
if self:hasAvailableSubMenus() then
for k, v in ipairs( self.subMenus ) do
v:draw( indent + 1, line )
end
end
end
function Menu.clear()
for i = 0, 200 do
con_nxprintf( i, "", 0 )
end
end
function Menu:execAction(action)
if action == "select" then
if self.action then
self.action()
else
self.open = not self.open
end
elseif action == "up" then
self.selected = false
self:getPreviousMenu().selected = true
elseif action == "down" then
self.selected = false
self:getNextMenu().selected = true
elseif action == "close" then
setCVar( "_menuopen", "0" )
end
end
function Menu.initCVars()
if not existsCVar( "menu" ) then
createCVar( "menu", "", "Control Mahi's LSS menu template with values: up, down, select" )
else
setCVar( "menu", "" )
end
if not existsCVar( "_menuopen" ) then
createCVar( "_menuopen", "1" )
elseif getCVar( "_menuopen" ) ~= "0" then
error( "Menu error: Menu is already open!\n", 255, 100, 100 )
else
setCVar( "_menuopen", "1" )
end
end
function Menu:exec()
Menu.initCVars()
if not self:getSelectedMenu() then
if self == Menu then
self.subMenus[ 1 ].selected = true
else
self.selected = true
end
end
if self.parent then self.parent.open = false end
while getCVar("_menuopen") ~= "0" do
self:draw((self == Menu) and -1 or 0, { self.firstDrawLine })
while getCVar("menu") == "" do
SB:UpdateLoops()
wait(0.1)
end
self:getSelectedMenu():execAction(getCVar("menu"))
setCVar("menu", "")
Menu:clear()
end
end
-- ###################################
-- ####### FILE-RELATED #######
-- ###################################
do
local function IsDir(self, path)
return lfs.attributes(path, "mode") == "directory"
end
local function IsFile(self, file)
return lfs.attributes(file, "mode") == "file"
end
local function Read(self, file, mode)
if not self:IsFile(file) then return "" end
local mode = mode or "*all"
local str = ""
local f = io.open(file, "w")
if not f then return "" end
str = f:read(mode)
f:close()
return str
end
local function Write(self, file, str)
local str = str or ""
file = io.open(file, "w")
if not file then return end
file:write(str)
file:close()
end
local function Append(self, file, str)
local content = self:ReadFile(file)
if not self:IsFile(file) then self:WriteFile(file) end
local f = io.open(file, "w")
f:write(content .. str)
f:close()
end
local function MakeDir(self, path)
lfs.mkdir(path)
end
local function Log(self, log, ...)
log = string.format(log, ...)
if self.Information.PrintLogInfo then
if string.len(log) >= 1 then
print(log .. "\n")
else
oldprint("\n")
end
end
if self.Information.Log then
local file = self.Filenames[1]
if lfs.attributes(file, "mode") ~= "file" then
io.output(file)
io.write(log)
io.close()
return
end
local f = io.open(file, "rb")
local str = f:read("*all")
f:close()
f2 = io.open(file, "w")
f2:write(str .."\n" .. log)
f2:close()
end
end
SB.Log = Log
SB.MakeDir = MakeDir
SB.AppendFile = Append
SB.WriteFile = Write
SB.ReadFile = Read
SB.IsFile = IsFile
SB.IsDir = IsDir
end
-- ###################################
-- ####### LOOPS #######
-- ###################################
do
local Registered = {}
local Created = {}
local End = false
local HandleCommand = "Handle"
local function Prefix(self)
return string.lower(self.SettingsPrefix or "")
end
local function AddLoop(self, name, func)
local name = string.lower(name)
if not Created[name] then
Created[name] = true
table.insert(Registered, func)
self:Log("Created loop \"" .. name .. "\" with " .. tostring(func))
end
end
local function UpdateLoops(self)
for key, value in pairs(Registered) do
ok, err = pcall(value)
if not ok then
error(err)
elseif err then
err()
end
end
wait(0.1)
collectgarbage()
end
local function StartLoop(self)
Menu:exec()
setCVar(Prefix(self) .. HandleCommand, "")
setCVar(Prefix(self) .. "framerate", "0")
self:AntiAim("off", false)
self:AntiSmoke("off", false)
self:AntiFlash("off", false)
self:PlayerChams("off", false)
self:NoHands("off", false)
self:AFKBot("off", false)
self:SaveSettings()
self:Log("")
self:Log("")
self:Log("%s Version %s unloaded @ %s - %s", self.Information.Name, self.Information.Version, os.date("%x"), os.date("%X"))
self:Log("")
self:Log("")
if not self.Information.PrintLogInfo then print("Successfully Unloaded!\n\n\n") end
end
-- States
--[[local State_HasBannedWeapon = 0
local State_GetWeaponID = 0
local State_GetWeaponSlot = 0
-- Enable(s)
local HasBannedWeapon_Enable = true
local GetWeaponID_Enable = true
local GetWeaponSlot_Enable = true
-- Extra Functions
local function GetAlives()
local Count = 0
for i = 1, 64 do
if isPlayer(i) and isAlive(i) then
Count = Count + 1
end
end
return Count - 1
end
-- Updates
local function HasBannedWeapon_Update()
if State_HasBannedWeapon == 0 then
if GetAlives() < 1 then
HasBannedWeapon_Enable = false
State_HasBannedWeapon = 1
end
else
if GetAlives() > 1 then
SB.Time = os.time()
HasBannedWeapon_Enable = true
State_HasBannedWeapon = 0
end
end
end
local function GetWeaponID_Update()
if State_GetWeaponID == 0 then
if GetAlives() < 1 then
HasBannedWeapon_Enable = false
HasBannedWeapon_State = 1
end
else
if GetAlives() > 1 then
SB.WeapTime = os.time()
GetWeaponID_Enable = true
HasBannedWeapon_State = 0
end
end
end
local function GetWeaponSlot_Update()
if State_GetWeaponSlot == 0 then
if GetAlives() < 1 then
GetWeaponSlot_Enable = false
GetWeaponSlot_State = 1
end
else
if GetAlives() > 1 then
SB.SlotTime = os.time()
GetWeaponSlot_Enable = true
GetWeaponSlot_State = 0
end
end
end]]
-- Functions
--[[local function GetWeaponSlot(self)
if not self:Setting("weapon_check") then return 1337 end
local del = self:Setting("weapon_check_delay")
if not self.WeaponSlot then
self.WeaponSlot = self:LocalPlayer():WeaponSlot()
self.SlotTime = os.time()
else
if os.time() - del > self.SlotTime then
self.WeaponSlot = self:LocalPlayer():WeaponSlot()
self.SlotTime = os.time()
end
end
return self.WeaponSlot
end
local function GetWeaponID(self)
if not self:Setting("weapon_check") then return 73 end
local del = self:Setting("weapon_check_delay")
if not self.WeaponID then
self.WeaponID = self:LocalPlayer():WeaponID()
self.WeapTime = os.time()
else
if os.time() - del > self.WeapTime then
self.WeaponID = self:LocalPlayer():WeaponID()
self.WeapTime = os.time()
end
end
return self.WeaponID
end
local function HasBannedWeapon(self)
if not self:Setting("weapon_check") then return false end
local del = self:Setting("weapon_check_delay")
if not self.WeaponName then
self.WeaponName = self:LocalPlayer():WeaponName()
self.Time = os.time()
else
if os.time() - del > self.Time then
self.WeaponName = self:LocalPlayer():WeaponName()
self.Time = os.time()
end
end
for k, v in pairs(self.BannedWeapons) do
if v == self.WeaponName then
return true
end
end
return false
end]]
local function HasBannedWeapon(self)
if not self:Setting("weapon_check") then return false end
local WeaponName = self:LocalPlayer():WeaponName()
for k, v in pairs(self.BannedWeapons) do
if v == WeaponName then
return true
end
end
return false
end
local function GetWeaponID(self)
if not self:Setting("weapon_check") then return 1337 end
return self:LocalPlayer():WeaponID() or 1337
end
local function GetWeaponSlot(self)
if not self:Setting("weapon_check") then return 1337 end
return self:LocalPlayer():WeaponSlot() or 1337
end
local function EndLoop(self)
rawcmd("menu close\n")
end
SB.Prefix = Prefix
SB.EndLoop = EndLoop
SB.StartLoop = StartLoop
SB.AddLoop = AddLoop
SB.HasBannedWeapon = HasBannedWeapon
SB.GetWeaponSlot = GetWeaponSlot
SB.GetWeaponID = GetWeaponID
SB.UpdateLoops = UpdateLoops
--[[SB:AddLoop("Weapon Update", function()
HasBannedWeapon_Update()
GetWeaponID_Update()
GetWeaponSlot_Update()
end)]]
end
-- ###################################
-- ####### COMMANDS #######
-- ###################################
do
local Registered = {}
local RegisteredCommands = {}
local Commands = {}
local HandleCommand = "Handle"
local function Prefix(self)
return string.lower(self.SettingsPrefix or "")
end
local function AddCVar(command, set)
local command = string.lower(command)
if not existsCVar(command) then
--createCVar(command, set)
rawcmd("setinfo \"" .. command .. "\" \"" .. set .. "\"\n")
wait(10)
else
if getCVar(command) ~= set then
setCVar(command, set)
end
end
end
local function AddConCommand(self, command, func)
if not command or not func then return end
local command = string.lower(command)
if not Commands[command] then
Commands[command] = true
local Pre = Prefix(self)
local Name = (not command:find("+") and Pre or "") .. command
AddCVar(Name, "")
rawcmd("alias \"" .. Name .. "\" \"" .. Pre .. HandleCommand .. " " .. command .. "\"\n")
table.insert(RegisteredCommands, { command, func })
end
end
local function AddChangeCallback(self, convar, callback)
if not existsCVar(convar) or not callback then return end
convar = string.lower(convar)
if not Registered[convar] then
Registered[convar] = {}
end
table.insert(Registered[convar], callback)
if not Registered[convar].oldvar then
Registered[convar].oldvar = getCVar(convar)
end
if not Registered[convar].name then
Registered[convar].name = convar
end
end
local function GetConVarCallbacks(self, convar)
local t = {}
for _, value in pairs(Registered[convar]) do
if type(value) == "function" then
table.insert(t, value)
end
end
return t
end
local function Update(self)
local ok, err
for k, v in pairs(Registered) do
if v.oldvar ~= getCVar(v.name) then
local old = v.oldvar
v.oldvar = getCVar(v.name)
for key, value in pairs(v) do
if type(value) == "function" then
ok, err = pcall(value, v.oldvar, old)
if not ok then
print(err .. "\n", 200, 50, 50, 255)
elseif not err then
value(v.oldvar, old)
end
end
end
end
end
if getCVar(Prefix(self) .. HandleCommand) ~= "" then
local Command = string.lower(getCVar(Prefix(self) .. HandleCommand))
setCVar(Prefix(self) .. HandleCommand, "")
for _, value in pairs(RegisteredCommands) do
if value[1] == Command then
ok, err = pcall(value[2])
if not ok then
error(err)
elseif err then
err()
end
end
end
end
end
local function HideCmd(self, cmd, name, value, added)
if not cmd then return self:Log("HideCmd error: No command argument given") end
if not existsCVar(cmd) then return self:Log("HideCmd error: Command '%s' does not exist", cmd) end
if not name then return self:Log("HideCmd error: No name argument given") end
name = ((not added) and self:Prefix() or "") .. name
value = value or getCVar(cmd)
if not existsCVar(name) then
hideCVar(cmd, name)
rawcmd(name .. " " .. value .. "\n")
self:Log("Hided Console-Command '%s' with command '%s' and value '%s'", cmd, name, value)
else
self:Log("Could not hide command '%s' with value '%s' (Hidden command already exists)", cmd, value)
end
end
local function CreateCmd(self, cmd, value, added, pr)
if not cmd then return self:Log("CreateCmd error: No command argument given") end
cmd = ((not added) and self:Prefix() or "") .. cmd
value = value or getCVar(cmd)
AddCVar(cmd, value)
end
SB.CreateCmd = CreateCmd
SB.HideCmd = HideCmd
SB:CreateCmd(HandleCommand, "")
SB.AddChangeCallback = AddChangeCallback
SB.GetConVarCallbacks = GetConVarCallbacks
SB.AddClientConVar = AddConCommand
SB:AddLoop("Global Update", function() Update(SB) end)
end
-- ###################################
-- ####### FILE-RELATED #######
-- ###################################
do
local function StringExplode(seperator, str)
if seperator == "" then return string.ToTable(str) end
local tble = {}
local ll = 0
while true do
l = string.find(str, seperator, ll, true)
if l ~= nil then
table.insert(tble, string.sub(str, ll, l - 1))
ll = l + 1
else
table.insert(tble, string.sub(str, ll))
break
end
end
return tble
end
local function GetSettingsFromFile(self)
filename = self.Filenames[2]
if not self:IsFile(filename) then con = true else con = false end
local Table = {}
if not con then
for x in io.lines(filename) do
if x:find("=") then
local StringTable = StringExplode("=", x)
Table[string.lower(string.gsub(StringTable[1], " ", ""))] = string.lower(string.gsub(StringTable[#StringTable], '"', ""))
end
end
end
for k, v in pairs(self.DefaultSettings) do
if Table[string.lower(tostring(k))] == nil then Table[string.lower(tostring(k))] = string.lower(tostring(v)) end
end
return Table
end
local function W(w)
if type(w) == "string" then
return "\"" .. w .. "\""
end
return tostring(w)
end
local function tobool(val)
if val == nil or val == false or val == 0 or val == "0" or val == "false" then return "false" end
return "true"
end
local function SaveFile(self)
self:WriteFile(self.Filenames[2], "" ..
"[Aimbot]" ..
"\nAimbot = " .. tobool(W(self:Setting("aimbot_enabled"))) ..
"\nAimbotDelay = " .. W(self:Setting("aimbot_delay")) ..
"\nAimbotHold = " .. W(self:Setting("aimbot_hold")) ..
"\nAimbotAutoShoot = " .. tobool(W(self:Setting("aimbot_autoshoot"))) ..
"\nAimbotAutoShootDelay = " .. W(self:Setting("aimbot_autoshoot_delay")) ..
"\nAimbotMode = " .. W(self:Setting("aimbot_mode")) ..
"\nAimbotFovX = " .. W(self:Setting("aimbot_fovX")) ..
"\nAimbotFovY = " .. W(self:Setting("aimbot_fovY")) ..
"\nAimbotAimOnce = " .. tobool(W(self:Setting("aimbot_aimonce"))) ..
"\nAimbotFriendlyFire = " .. tobool(W(self:Setting("aimbot_friendlyfire"))) ..
"\nAimbotHitboxPos = " .. W(self:Setting("aimbot_hitbox_pos")) ..
"\nAimbotKey = " .. W(self:Setting("aimbot_key")) ..
"\nAimbotMousefix = " .. tobool(W(self:Setting("aimbot_mousefix"))) ..
"\nAimbotMousefixSleep = " .. W(self:Setting("aimbot_mousefix_sleep")) .. "\n\n" ..
"[Triggerbot]" ..
"\nTriggerbot = " .. tobool(W(self:Setting("triggerbot_enabled"))) ..
"\nTriggerbotAim = " .. tobool(W(self:Setting("triggerbot_aim"))) ..
"\nTriggerbotMousefix = " .. tobool(W(self:Setting("triggerbot_mousefix"))) ..
"\nTriggerbotMousefixSleep = " .. W(self:Setting("triggerbot_mousefix_sleep")) ..
"\nTriggerbotHold = " .. W(self:Setting("triggerbot_hold")) ..
"\nTriggerbotDelay = " .. W(self:Setting("triggerbot_delay")) ..
"\nTriggerbotKey = " .. W(self:Setting("triggerbot_key")) ..
"\nTriggerbotFriendlyFire = " .. tobool(W(self:Setting("triggerbot_friendlyfire"))) ..
"\nTriggerbotMode = " .. W(self:Setting("triggerbot_mode")) ..
"\nTriggerbotFovX = " .. W(self:Setting("triggerbot_fovX")) ..
"\nTriggerbotFovY = " .. W(self:Setting("triggerbot_fovY")) ..
"\nTriggerbotHitboxPos = " .. W(self:Setting("triggerbot_hitbox_pos")) .. "\n\n" ..
"[Autopistol]" ..
"\nAutopistol = " .. tobool(W(self:Setting("autopistol_enabled"))) ..
"\nAutopistolKey = " .. W(self:Setting("autopistol_key")) ..
"\nAutopistolHold = " .. W(self:Setting("autopistol_hold")) .. "\n\n" ..
"[AntiRecoil]" ..
"\nAntiRecoil = " .. tobool(W(self:Setting("antirecoil_enabled"))) ..
"\nAntiRecoilKey = " .. W(self:Setting("antirecoil_key")) ..
"\nAntiRecoilExtraAimDown = " .. W(self:Setting("antirecoil_add")) .. "\n\n" ..
"[Bunnyhop]" ..
"\nBunnyhop = " .. tobool(W(self:Setting("bunnyhop_enabled"))) ..
"\nBunnyhopKey = " .. W(self:Setting("bunnyhop_key")) .. "\n\n" ..
"[Knifebot]" ..
"\nKnifebot = " .. tobool(W(self:Setting("knifebot_enabled"))) ..
"\nKnifebotKey = " .. W(self:Setting("knifebot_key")) .. "\n\n" ..
"[AntiAim]" ..
"\nAntiAim = " .. tobool(W(self:Setting("anti_aim"))) ..
"\nAntiAimDelay = " .. W(self:Setting("anti_aim_delay")) .. "\n\n" ..
"[Speedhack]" ..
"\nSpeedhack = " .. tobool(W(self:Setting("speedhack_enabled"))) ..
"\nSpeedhackKey = " .. W(self:Setting("speedhack_key")) ..
"\nSpeedhackSpeed = " .. W(self:Setting("speedhack_speed")) .. "\n\n" ..
"[EnemyDown]" ..
"\nEnemyDown = " .. tobool(W(self:Setting("enemy_down"))) ..
"\nEnemyDownDelay = " .. W(self:Setting("enemy_down_delay")) .. "\n\n" ..
"[Misc]" ..
"\nWeaponCheck = " .. tobool(W(self:Setting("weapon_check"))) ..
--"\nWeaponCheckDelay = " .. W(self:Setting("weapon_check_delay")) ..
"\nPlayerChams = " .. tobool(W(self:Setting("player_chams"))) ..
"\nAntiSmoke = " .. tobool(W(self:Setting("anti_smoke"))) ..
"\nAntiFlash = " .. tobool(W(self:Setting("anti_flash"))) ..
"\nNoHands = " .. tobool(W(self:Setting("no_hands"))))
end
SB.GetSettingsFromFile = GetSettingsFromFile
SB.SaveSettings = SaveFile
SB.FileSettings = SB:GetSettingsFromFile()
local function PrintTable(tab, indent, done)
done = done or {}
indent = indent or 0
for key, value in pairs(tab) do
print(string.rep("\t", indent))
if type(value) == "table" and not done[value] then
done[value] = true
print(tostring(key) .. ":" .. "\n")
PrintTable(value, indent + 2, done)
else
print(tostring(key) .. "\t=\t")
print(tostring(value) .. " (Type: " .. type(value) .. ")\n")
end
end
end
local function GetSetting(self, stri)
local var = self.FileSettings[string.lower(stri)]
if var:find("true") or var:find("false") then
return var:find("true") and true or false
end
if type(tonumber(var)) == "number" then return tonumber(var) end
return var
end
SB.GetSetting = GetSetting
end
-- ###################################
-- ####### SETTINGS #######
-- ###################################
do
local Settings = {}
local function SettingVar(self, name)
--if not Settings[name] then return end
return string.lower((self.SettingsPrefix or "") .. name)
end
local function SetSetting(name, new)
if not Settings[name] then return end
local Info = Settings[name]
if Info.Type == "number" then
new = tonumber(new)
elseif Info.Type == "boolean" then
new = (tonumber(new) or 0) > 0
end
Info.Value = new
end
local function CreateSetting(self, name, desc, default, misc)
if not name then error("CreateSetting Error: No name given") end
local cvar = SettingVar(self, name)
if type(tonumber(default)) == "number" then default = tonumber(default) end
local info = { Name = name, Desc = desc, CVar = cvar, Type = type(default), Value = default }
for key, value in pairs(misc or {}) do
if not info[key] then info[key] = value end
end
if info.Type == "boolean" then default = default and 1 or 0 end
self:CreateCmd(cvar, default, true, true)
Settings[cvar] = info
SetSetting(cvar, tostring(getCVar(cvar)))
self:AddChangeCallback(cvar, function(new, old)
SetSetting(cvar, tostring(new))
if type(info["Func"]) == "function" then
info["Func"]()
end
end)
print("Created setting \"" .. cvar .. "\" with value \"" .. default .. "\"\n")
end
local function SetAngle(self, pitch, yaw)
if pitch and yaw then
setAng(pitch, yaw, 0)
end
end
local function GetSetting(self, name)
local cvar = SettingVar(self, name)
if not Settings[cvar] then return end
return Settings[cvar].Value
end
local Strings = {}
local function CalculateString(self, len)
local ret = ""
for i = 1 , len do
ret = ret .. string.char(math.random(65, 116))
end
if not Strings[ret] then
Strings[ret] = true
return ret
else
return self:CalculateString(len)
end
end
SB.CalculateString = CalculateString
--[[
-- ###################################
-- ####### Menu #######
-- ###################################
local SubMenus = {}
local function BuildMenu(self)
local c = 0
for key, info in pairs(Settings) do
if info.AddToMenu then
if not SubMenus[info.SubMenu] then
local SubMenuName = info.SubMenu or self:CalculateString(12)
loadstring(self:CalculateString(11) .. ' = Menu:new("' .. SubMenuName .. '")')
SubMenus[SubMenuName] = true
info.SubMenu = SubMenuName
else
loadstring(self:CalculateString(10) .. ' = Menu:new("' .. (info.Name or self:CalculateString(13)) .. '", ' .. info.SubMenu .. ', function() Settings[' .. key .. '].Function() end)')
end
c = c + 1
end
end
if c > 1 then
Menu:exec()
else
print("No items added to the menu yet!\n")
end
end
SB.BuildMenu = BuildMenu]]
SB.Setting = GetSetting
SB.CreateSetting = CreateSetting
SB.SetAngle = SetAngle
end
--SB:CreateSetting("weapon_check_delay", "Defines the weapon-check delay (in seconds).", SB:GetSetting("WeaponCheckDelay"))
SB:CreateSetting("weapon_check", "If set to 1, SBot searches for WeaponIDs. If not, then not.", SB:GetSetting("WeaponCheck"))
-- #######################################
-- ####### ADDRESS-RELATED #######
-- #######################################
do
local VGuiAddr = 0x11A314
local ChatAddr = 0x7435BC
local ChatAddrOffset = 0x17C
local AmmoAddr = 0x38C0C4
local AmmoAddrOffset = 0x1534
local EngineBase = getBaseAddr("engine.dll")
local ClientBase = getBaseAddr("client.dll")
local VGuiBase = getBaseAddr("vguimatsurface.dll")
local function Address(addr)
return "0x" .. string.upper(string.format("%x", addr))
end
local function ConsoleVisible()
return (readmem(readmem(ClientBase + ChatAddr, 4) + ChatAddrOffset, 4) == 1 or readmem(VGuiBase + VGuiAddr, 4) == 1)
end
local function GetAmmo()
return readmem(readmem(EngineBase + AmmoAddr, 4) + AmmoAddrOffset, 4)
end
local function InGame(self)
return inGame() and not ConsoleVisible() and GetAmmo() > 0
--return inGame() and not ConsoleVisible()
end
SB.InGame = InGame
SB:Log("")
SB:Log("-------------------------------------------------")
SB:Log("VGui Address: " .. Address(VGuiAddr))
SB:Log("Chat Address: " .. Address(ChatAddr))
SB:Log("Chat Offset: " .. Address(ChatAddrOffset))
SB:Log("Ammo Address: " .. Address(AmmoAddr))
SB:Log("Ammo Offset: " .. Address(AmmoAddrOffset))
SB:Log("Engine Base: " .. Address(EngineBase))
SB:Log("Client Base: " .. Address(ClientBase))
SB:Log("VGui Base: " .. Address(VGuiBase))
SB:Log("-------------------------------------------------")
SB:Log("")
SB:Log("")
end
-- #######################################
-- ####### PLAYER-RELATED #######
-- #######################################
do
local player = {}
function SetMeta(id)
local metatable = { Index = id }
setmetatable(metatable, { __index = player })
return metatable
end
function player:Enemy() return isEnemy(self.Index) end
function player:Crouched() return isCrouched(self.Index) end
function player:GetPos() return getPos(self.Index) end
function player:GetAng() return getAng(self.Index) end
function player:GetEyePos() return getEyePos(self.Index) end
function player:AimTarget() return SetMeta(aimTarget(self.Index)) end
function player:Team() return getTeam(self.Index) end
function player:IsPlayer() return isPlayer(self.Index) end
function player:IsBot() return isBot(self.Index) end
function player:Name() return getName(self.Index) end
function player:Alive() return isAlive(self.Index) end
function player:OnGround() return onGround(self.Index) end
function player:InWater() return inWater(self.Index) end
function player:WeaponSlot() return getWeaponSlot(self.Index) or 1337 end
function player:WeaponID() return getWeaponID(self.Index) or 1337 end
function player:Distance() return getDistance(self.Index) end
function player:GetHitboxPos(pos) return getHitboxPos(self.Index, pos) end
function player:Visible() return isVisible(self.Index) end
function player:WeaponName()
local weapon = self:WeaponID()
-- Knife
if weapon == 73 then
return "weapon_knife"
-- Grenades
elseif weapon == 68 then
return "weapon_hegrenade"
elseif weapon == 52 then
return "weapon_flashbang"
elseif weapon == 101 then
return "weapon_smokegrenade"
-- Pistols
elseif weapon == 176 then
return "weapon_glock"
elseif weapon == 189 then
return "weapon_usp"
elseif weapon == 182 then
return "weapon_p228"
elseif weapon == 32 then
return "weapon_deagle"
elseif weapon == 171 then
return "weapon_elite"
elseif weapon == 173 then
return "weapon_fiveseven"
-- Shotguns
elseif weapon == 178 then
return "weapon_m3"
elseif weapon == 190 then
return "weapon_xm1014"
-- SMGs
elseif weapon == 180 then
return "weapon_mac10"
elseif weapon == 181 then
return "weapon_mp5"
elseif weapon == 188 then
return "weapon_ump45"
elseif weapon == 183 then
return "weapon_p90"
-- Rifles
elseif weapon == 175 then
return "weapon_galil"
elseif weapon == 1 then
return "weapon_ak47"
elseif weapon == 184 then
return "weapon_scout"
elseif weapon == 186 then
return "weapon_sg552"
elseif weapon == 167 then
return "weapon_awp"
elseif weapon == 174 then
return "weapon_g3sg1"
elseif weapon == 179 then
return "weapon_m4a1"
elseif weapon == 172 then
return "weapon_famas"
-- Machine guns
elseif weapon == 177 then
return "weapon_m249"
-- C4
elseif weapon == 23 then
return "weapon_c4"
end
-- Unknown
return "weapon_unknown";
end
local function GetEnts(self)
local players = {}
for i = 1, 64 do
if isPlayer(i) and i ~= self:LocalPlayer().Index then
players[i] = SetMeta(i)
end
end
return players
end
local function LocalPlayer(self)
return self.LP
end
SB.LP = SetMeta(getMyIndex())
SB.LocalPlayer = LocalPlayer
SB.GetEnts = GetEnts
SB:AddLoop("LocalPlayer Update", function()
if SB.LP.Index ~= getMyIndex() then
SB.LP.Index = getMyIndex()
end
end)
local STATE_INGAME = 1
local STATE_INMENU = 2
local INGAME_STATE = inGame() and STATE_INGAME or STATE_INMENU
SB:AddLoop("Material Check", function()
if INGAME_STATE == STATE_INMENU and inGame() then
INGAME_STATE = STATE_INGAME
local sv_pure = GetPure()
if sv_pure == "0" then
if SB:Setting("no_hands") then SB:NoHands("on", false) end
if SB:Setting("player_chams") then SB:PlayerChams("on", false) end
if SB:Setting("anti_flash") then SB:AntiFlash("on", false) end
else
print("sv_pure is set to " .. pure .. ", can't use materials!\n")
end
elseif INGAME_STATE == STATE_INGAME and not inGame() then
INGAME_STATE = STATE_INMENU
end
end)
end
-- ###################################
-- ####### Others #######
-- ###################################
function GetPure()
--[[if lfs.attributes("cstrike\\condump000.txt", "mode") == "file" then
os.remove("cstrike\\condump000.txt")
end
rawcmd("sv_pure\n")
wait(50)
rawcmd("condump\n")
wait(50)
for line in io.lines("cstrike\\condump000.txt") do
if line:find("sv_pure = 1") then
return "1"
elseif line:find("sv_pure = 2") then
return "2"
elseif line:find("sv_pure = 0") then
return "0"
end
end]]
return "0"
end
SB:HideCmd("mp_playerid", "playerid", "0")
SB:HideCmd("sv_cheats", "cheats", "1")
SB:HideCmd("sv_consistency", "consistency", "0")
SB:HideCmd("cl_pitchup", "pitchup", (SB:Setting("anti_aim") and "-180" or "89"))
SB:HideCmd("cl_pitchspeed", "pitchspeed", "0")
-- ###################################
-- ####### TARGETING - Targets #######
-- ###################################
SB.AimbotTarget = nil
function SB:SetAimbotTarget(target)
if type(target) == "table" then -- It's a table (metatable), set the target to it's metatable!
SB.AimbotTarget = target
elseif type(target) == "number" then -- It's just a player ID, convert the ID to an metatable and set the target to it's metatable!
SB.AimbotTarget = SetMeta(target)
end
SB.AimbotTarget = nil
end
function SB:GetAimbotTarget()
if not self.AimbotTarget then return nil end
if type(self.AimbotTarget) == "table" then -- It's a table (metatable), return the metatable!
if self.AimbotTarget:IsPlayer() then
return self.AimbotTarget
end
elseif type(self.AimbotTarget) == "number" then -- It's just a player ID, convert the ID to an metatable and return it!
if isPlayer(self.AimbotTarget) then
return SetMeta(self.AimbotTarget)
end
end
return nil
end
function SB:GetFov()
local dist, fovX, fovY, fovT
local target, me = {}, {}
target.currentfov = 9999
target.id = SetMeta(0)
me.index = self:LocalPlayer()
me.pos = { me.index:GetPos() }
me.ang = { me.index:GetAng() }
me.x = me.pos[1]
me.y = me.pos[2]
me.z = me.pos[3]
me.yaw = me.ang[2]
me.pitch = me.ang[1]
for _, e in pairs(self:GetEnts()) do
if e:IsPlayer() then
if e:Alive() and e:Visible() and (not self:Setting("aimbot_friendlyfire") and e:Enemy() or true) then
target.pos = { e:GetPos() }
target.x = target.pos[1]
target.y = target.pos[2]
target.z = target.pos[3] - (e:Crouched() and 18 or 0) + (me.index:Crouched() and 18 or 0) - 20
dist = math.sqrt(((target.x - me.x) ^ 2) + ((target.y - me.y) ^ 2) + ((target.z - me.z) ^ 2))
pitch = math.deg(math.acos((me.z - target.z) / dist)) - 90
yaw = math.deg(math.atan(math.abs(target.y - me.y) / math.abs(target.x - me.x)))
if target.x < me.x then yaw = yaw + 180 end
if (target.x > me.x and me.y > target.y) or (target.x < me.x and me.y < target.y) then yaw = 360 - yaw end
angX = math.abs(yaw - me.yaw)
angX = angX > 180 and 360 - angX or angX
angX = math.abs(angX)
angY = math.abs(pitch + me.pitch)
fovX = math.tan(math.rad(angX)) * dist
fovY = math.tan(math.rad(angY)) * dist
fovT = math.abs(fovX + fovY)
if fovT < target.currentfov then
target.id = e
target.currentfov = fovT
target.fovX = fovX
target.fovY = fovY
end
end
end
end
return (target.fovX or 9999), (target.fovY or 9999), target.id
end
do
local M_PI = 180 / math.pi
local function CalculateAngle(self, Src, Dest)
local Delta = { (Src[1] - Dest[1]), (Src[2] - Dest[2]), (Src[3] - Dest[3]) }
local Dist = math.sqrt(Delta[1] ^ 2 + Delta[2] ^ 2)
local Angle = { (math.atan(Delta[3] / Dist) * M_PI), (math.atan(Delta[2] / Delta[1]) * M_PI), 0 }
Angle[2] = (Delta[1] >= 0) and Angle[2] - 180 or Angle[2]
return Angle
end
SB.CalculateAngle = CalculateAngle
end
function CopyPaste(file1, file2)
--[[if not io.open(file1) then
io.output(file1)
io.write("")
io.close()
end]]
io.output(file2)
io.write("")
io.close()
local input = io.open(file1, "rb")
if input == nil then error("File " .. file1 .. " doesnt exist") end
local output = io.open(file2, "wb")
local str = input:read("*all")
output:write(str)
output:close()
input:close()
end
-- ###################################
-- ####### Player-Chams #######
-- ###################################
function OnPlayerChamsChange()
SB:PlayerChams(not SB:Setting("player_chams") and "off" or "on", true)
end
SB:CreateSetting("player_chams", "Player chams on/off", SB:GetSetting("PlayerChams"), { ["Func"] = OnPlayerChamsChange })
function SB:PlayerChams(str, con)
str = string.lower(str)
local Config = {
-- T-Arctic
DefaultTArticVmt = "materials\\models\\player\\t_arctic\\t_artic.vmt",
DefaultTArticVtf = "materials\\models\\player\\t_arctic\\t_artic.vtf",
ModifiedTArticVmt = "lua\\SBot\\materials\\models\\player\\t_arctic\\t_arctic.vmt",
ModifiedTArticVtf = "lua\\SBot\\materials\\models\\player\\t_arctic\\t_arctic.vtf",
-- T-Guerilla
DefaultTGuerillaVmt = "materials\\models\\player\\t_guerilla\\t_guerilla.vmt",
DefaultTGuerillaVtf = "materials\\models\\player\\t_guerilla\\t_guerilla.vtf",
ModifiedTGuerillaVmt = "lua\\SBot\\materials\\models\\player\\t_guerilla\\t_guerilla.vmt",
ModifiedTGuerillaVtf = "lua\\SBot\\materials\\models\\player\\t_guerilla\\t_guerilla.vtf",
-- T-Leet
DefaultTLeetVmt = "materials\\models\\player\\t_leet\\t_leet.vmt",
DefaultTLeetVtf = "materials\\models\\player\\t_leet\\t_leet.vtf",
ModifiedTLeetVmt = "lua\\SBot\\materials\\models\\player\\t_leet\\t_leet.vmt",
ModifiedTLeetVtf = "lua\\SBot\\materials\\models\\player\\t_leet\\t_leet.vtf",
-- T-Phoenix
DefaultTPhoenixVmt = "materials\\models\\player\\t_phoenix\\t_phoenix.vmt",
DefaultTPhoenixVtf = "materials\\models\\player\\t_phoenix\\t_phoenix.vtf",
ModifiedTPhoenixVmt = "lua\\SBot\\materials\\models\\player\\t_phoenix\\t_phoenix.vmt",
ModifiedTPhoenixVtf = "lua\\SBot\\materials\\models\\player\\t_phoenix\\t_phoenix.vtf",
-- CT-Gign
DefaultCTGignVmt = "materials\\models\\player\\ct_gign\\ct_gign.vmt",
DefaultCTGignVtf = "materials\\models\\player\\ct_gign\\ct_gign.vtf",
ModifiedCTGignVmt = "lua\\SBot\\materials\\models\\player\\ct_gign\\ct_gign.vmt",
ModifiedCTGignVtf = "lua\\SBot\\materials\\models\\player\\ct_gign\\ct_gign.vtf",
-- CT-GSG9
DefaultCTGSG9Vmt = "materials\\models\\player\\ct_gsg9\\ct_gsg9.vmt",
DefaultCTGSG9Vtf = "materials\\models\\player\\ct_gsg9\\ct_gsg9.vtf",
ModifiedCTGSG9Vmt = "lua\\SBot\\materials\\models\\player\\ct_gsg9\\ct_gsg9.vmt",
ModifiedCTGSG9Vtf = "lua\\SBot\\materials\\models\\player\\ct_gsg9\\ct_gsg9.vtf",
-- CT-Sas
DefaultCTSasVmt = "materials\\models\\player\\ct_sas\\ct_sas.vmt",
DefaultCTSasVtf = "materials\\models\\player\\ct_sas\\ct_sas.vtf",
ModifiedCTSasVmt = "lua\\SBot\\materials\\models\\player\\ct_sas\\ct_sas.vmt",
ModifiedCTSasVtf = "lua\\SBot\\materials\\models\\player\\ct_sas\\ct_sas.vtf",
-- CT-Urban
DefaultCTUrbanVmt = "materials\\models\\player\\ct_urban\\ct_urban.vmt",
DefaultCTUrbanVtf = "materials\\models\\player\\ct_urban\\ct_urban.vtf",
ModifiedCTUrbanVmt = "lua\\SBot\\materials\\models\\player\\ct_urban\\ct_urban.vmt",
ModifiedCTUrbanVtf = "lua\\SBot\\materials\\models\\player\\ct_urban\\ct_urban.vtf"
}
if lfs.attributes("cstrike\\materials\\models", "mode") ~= "directory" then lfs.mkdir("cstrike\\materials\\models") end
if lfs.attributes("cstrike\\materials\\models\\player", "mode") ~= "directory" then lfs.mkdir("cstrike\\materials\\models\\player") end
--[[ Terrorists ]]
--[[ T-Arctic ]] if lfs.attributes("cstrike\\materials\\models\\player\\t_arctic", "mode") ~= "directory" then lfs.mkdir("cstrike\\materials\\models\\player\\t_arctic") end
--[[ T-Guerilla ]] if lfs.attributes("cstrike\\materials\\models\\player\\t_guerilla", "mode") ~= "directory" then lfs.mkdir("cstrike\\materials\\models\\player\\t_guerilla") end
--[[ T-Leet ]] if lfs.attributes("cstrike\\materials\\models\\player\\t_leet", "mode") ~= "directory" then lfs.mkdir("cstrike\\materials\\models\\player\\t_leet") end
--[[ T-Phoenix ]] if lfs.attributes("cstrike\\materials\\models\\player\\t_phoenix", "mode") ~= "directory" then lfs.mkdir("cstrike\\materials\\models\\player\\t_phoenix") end
--[[ Counter-Terrorists ]]
--[[ CT-Gign ]] if lfs.attributes("cstrike\\materials\\models\\player\\ct_gign", "mode") ~= "directory" then lfs.mkdir("cstrike\\materials\\models\\player\\ct_gign") end
--[[ CT-GSG9 ]] if lfs.attributes("cstrike\\materials\\models\\player\\ct_gsg9", "mode") ~= "directory" then lfs.mkdir("cstrike\\materials\\models\\player\\ct_gsg9") end
--[[ CT-Sas ]] if lfs.attributes("cstrike\\materials\\models\\player\\ct_sas", "mode") ~= "directory" then lfs.mkdir("cstrike\\materials\\models\\player\\ct_sas") end
--[[ CT-Urban ]] if lfs.attributes("cstrike\\materials\\models\\player\\ct_urban", "mode") ~= "directory" then lfs.mkdir("cstrike\\materials\\models\\player\\ct_urban") end
local LocalPlayer = self:LocalPlayer()
if self:Setting("player_chams") or con then
if str == "on" then
-- T-Artic
CopyPaste("cstrike\\" .. Config.ModifiedTArticVmt, "cstrike\\" .. Config.DefaultTArticVmt)
CopyPaste("cstrike\\" .. Config.ModifiedTArticVtf, "cstrike\\" .. Config.DefaultTArticVtf)
-- T-Guerilla
CopyPaste("cstrike\\" .. Config.ModifiedTGuerillaVmt, "cstrike\\" .. Config.DefaultTGuerillaVmt)
CopyPaste("cstrike\\" .. Config.ModifiedTGuerillaVtf, "cstrike\\" .. Config.DefaultTGuerillaVtf)
-- T-Leet
CopyPaste("cstrike\\" .. Config.ModifiedTLeetVmt, "cstrike\\" .. Config.DefaultTLeetVmt)
CopyPaste("cstrike\\" .. Config.ModifiedTLeetVtf, "cstrike\\" .. Config.DefaultTLeetVtf)
-- T-Phoenix
CopyPaste("cstrike\\" .. Config.ModifiedTPhoenixVmt, "cstrike\\" .. Config.DefaultTPhoenixVmt)
CopyPaste("cstrike\\" .. Config.ModifiedTPhoenixVtf, "cstrike\\" .. Config.DefaultTPhoenixVtf)
-- CT-Gign
CopyPaste("cstrike\\" .. Config.ModifiedCTGignVmt, "cstrike\\" .. Config.DefaultCTGignVmt)
CopyPaste("cstrike\\" .. Config.ModifiedCTGignVtf, "cstrike\\" .. Config.DefaultCTGignVtf)
-- CT-GSG9
CopyPaste("cstrike\\" .. Config.ModifiedCTGSG9Vmt, "cstrike\\" .. Config.DefaultCTGSG9Vmt)
CopyPaste("cstrike\\" .. Config.ModifiedCTGSG9Vtf, "cstrike\\" .. Config.DefaultCTGSG9Vtf)
-- CT-Sas
CopyPaste("cstrike\\" .. Config.ModifiedCTSasVmt, "cstrike\\" .. Config.DefaultCTSasVmt)
CopyPaste("cstrike\\" .. Config.ModifiedCTSasVtf, "cstrike\\" .. Config.DefaultCTSasVtf)
-- CT-Urban
CopyPaste("cstrike\\" .. Config.ModifiedCTUrbanVmt, "cstrike\\" .. Config.DefaultCTUrbanVmt)
CopyPaste("cstrike\\" .. Config.ModifiedCTUrbanVtf, "cstrike\\" .. Config.DefaultCTUrbanVtf)
end
-- T-Arctic
rawcmd("mat_reloadmaterial models/player/t_arctic/t_artic\n")
-- T-Leet
rawcmd("mat_reloadmaterial models/player/t_leet/t_leet\n")
-- T-Phoenix
rawcmd("mat_reloadmaterial models/player/t_phoenix/t_phoenix\n")
-- T-Guerilla
rawcmd("mat_reloadmaterial models/player/t_guerilla/t_guerilla\n")
-- CT-Gign
rawcmd("mat_reloadmaterial models/player/ct_gign/ct_gign\n")
-- CT-GSG9
rawcmd("mat_reloadmaterial models/player/ct_gsg9/ct_gsg9\n")
-- CT-Sas
rawcmd("mat_reloadmaterial models/player/ct_sas/ct_sas\n")
-- CT-Urban
rawcmd("mat_reloadmaterial models/player/ct_urban/ct_urban\n")
if str == "on" then
wait(100)
-- T-Artic
os.remove("cstrike\\" .. Config.DefaultTArticVmt)
os.remove("cstrike\\" .. Config.DefaultTArticVtf)
-- T-Guerilla
os.remove("cstrike\\" .. Config.DefaultTGuerillaVmt)
os.remove("cstrike\\" .. Config.DefaultTGuerillaVtf)
-- T-Leet
os.remove("cstrike\\" .. Config.DefaultTLeetVmt)
os.remove("cstrike\\" .. Config.DefaultTLeetVtf)
-- T-Phoenix
os.remove("cstrike\\" .. Config.DefaultTPhoenixVmt)
os.remove("cstrike\\" .. Config.DefaultTPhoenixVtf)
-- CT-Gign
os.remove("cstrike\\" .. Config.DefaultCTGignVmt)
os.remove("cstrike\\" .. Config.DefaultCTGignVtf)
-- CT-GSG9
os.remove("cstrike\\" .. Config.DefaultCTGSG9Vmt)
os.remove("cstrike\\" .. Config.DefaultCTGSG9Vtf)
-- CT-Sas
os.remove("cstrike\\" .. Config.DefaultCTSasVmt)
os.remove("cstrike\\" .. Config.DefaultCTSasVtf)
-- CT-Urban
os.remove("cstrike\\" .. Config.DefaultCTUrbanVmt)
os.remove("cstrike\\" .. Config.DefaultCTUrbanVtf)
end
end
end
-- ###################################
-- ####### No-Hands #######
-- ###################################
function OnNoHandsChange()
SB:NoHands(not SB:Setting("no_hands") and "off" or "on", true)
end
SB:CreateSetting("no_hands", "No hands on/off", SB:GetSetting("NoHands"), { ["Func"] = OnNoHandsChange })
function SB:NoHands(str, con, var)
str = string.lower(str)
local Config = {
NoHandsModifiedVmt = "lua\\SBot\\materials\\models\\weapons\\v_models\\hands\\v_hands.vmt",
NoHandsModifiedVtf = "lua\\SBot\\materials\\models\\weapons\\v_models\\hands\\v_hands.vtf",
NoHandsDefaultVmt = "materials\\models\\weapons\\v_models\\hands\\v_hands.vmt",
NoHandsDefaultVtf = "materials\\models\\weapons\\v_models\\hands\\v_hands.vtf"
}
if lfs.attributes("cstrike\\materials\\models", "mode") ~= "directory" then lfs.mkdir("cstrike\\materials\\models") end
if lfs.attributes("cstrike\\materials\\models\\weapons", "mode") ~= "directory" then lfs.mkdir("cstrike\\materials\\models\\weapons") end
if lfs.attributes("cstrike\\materials\\models\\weapons\\v_models", "mode") ~= "directory" then lfs.mkdir("cstrike\\materials\\models\\weapons\\v_models") end
if lfs.attributes("cstrike\\materials\\models\\weapons\\v_models\\hands", "mode") ~= "directory" then lfs.mkdir("cstrike\\materials\\models\\weapons\\v_models\\hands") end
local LocalPlayer = self:LocalPlayer()
if self:Setting("no_hands") or con then
if str == "on" then
CopyPaste("cstrike\\" .. Config.NoHandsModifiedVmt, "cstrike\\" .. Config.NoHandsDefaultVmt)
CopyPaste("cstrike\\" .. Config.NoHandsModifiedVtf, "cstrike\\" .. Config.NoHandsDefaultVtf)
end
rawcmd("mat_reloadmaterial models/weapons/v_models/hands/v_hands\n")
if str == "on" then
wait(100)
os.remove("cstrike\\" .. Config.NoHandsDefaultVmt)
os.remove("cstrike\\" .. Config.NoHandsDefaultVtf)
end
end
end
-- ###################################
-- ####### Anti-Flash #######
-- ###################################
function OnAntiFlashChange()
SB:AntiFlash(not SB:Setting("anti_flash") and "off" or "on", true)
end
SB:CreateSetting("anti_flash", "Anti flash on/off", SB:GetSetting("AntiFlash"), { ["Func"] = OnAntiFlashChange })
function SB:AntiFlash(str, con)
str = string.lower(str)
local Config = {
NoFlashMofifiedVmt = "lua\\SBot\\materials\\effects\\flashbang.vmt",
NoFlashModifiedOtherVmt = "lua\\SBot\\materials\\effects\\flashbang_white.vmt",
NoFlashDefaultVmt = "materials\\effects\\flashbang.vmt",
NoFlashDefaultOtherVmt = "materials\\effects\\flashbang_white.vmt",
}
if lfs.attributes("cstrike\\materials\\effects", "mode") ~= "directory" then lfs.mkdir("cstrike\\materials\\effects") end
local LocalPlayer = self:LocalPlayer()
if self:Setting("anti_flash") or con then
if str == "on" then
CopyPaste("cstrike\\" .. Config.NoFlashMofifiedVmt, "cstrike\\" .. Config.NoFlashDefaultVmt)
CopyPaste("cstrike\\" .. Config.NoFlashModifiedOtherVmt, "cstrike\\" .. Config.NoFlashDefaultOtherVmt)
end
rawcmd("mat_reloadmaterial effects/flashbang;mat_reloadmaterial effects/flashbang_white\n")
if str == "on" then
wait(100)
os.remove("cstrike\\" .. Config.NoFlashDefaultVmt)
os.remove("cstrike\\" .. Config.NoFlashDefaultOtherVmt)
end
end
end
-- ###################################
-- ####### Anti-Smoke #######
-- ###################################
function OnAntiSmokeChange()
SB:AntiSmoke(not SB:Setting("anti_smoke") and "off" or "on", true)
end
SB:CreateSetting("anti_smoke", "Anti smoke on/off", SB:GetSetting("AntiSmoke"), { ["Func"] = OnAntiSmokeChange })
SB:HideCmd("r_drawparticles", "drawparticles", (SB:Setting("anti_smoke") and "0" or "1"))
function SB:AntiSmoke(str, con)
str = string.lower(str)
local LocalPlayer = self:LocalPlayer()
if self:Setting("anti_smoke") or con then
if str == "on" then
if getCVar(self:Prefix() .. "drawparticles") ~= "0" then
rawcmd(self:Prefix() .. "drawparticles 0\n")
end
else
if getCVar(self:Prefix() .. "drawparticles") ~= "1" then
rawcmd(self:Prefix() .. "drawparticles 1\n")
end
end
end
end
-- ###################################
-- ####### Anti-Aim #######
-- ###################################
function OnAntiAimChange()
SB:AntiAim(not SB:Setting("anti_aim") and "off" or "on", true)
end
SB:CreateSetting("anti_aim", "Anti aim on/off", SB:GetSetting("AntiAim"), { ["Func"] = OnAntiAimChange })
SB:CreateSetting("anti_aim_delay", "Delay of the anti-aim", SB:GetSetting("AntiAimDelay"))
function SB:AntiAim(str, con)
str = string.lower(str)
local LocalPlayer = self:LocalPlayer()
if self:Setting("anti_aim") or con then
if getCVar("sensitivity") ~= "0.000100" then
rawcmd("sensitivity 0.000100;cl_yawspeed 0\n")
end
if str == "on" then
if getCVar(self.SettingsPrefix .. "pitchup") == "89" then
LocalPlayer.Ang = { self:LocalPlayer():GetAng() }
wait(self:Setting("anti_aim_delay") / 2)
rawcmd(self.SettingsPrefix .. "pitchup -180\n")
wait(self:Setting("anti_aim_delay") / 2)
local NewAngle = { self:LocalPlayer():GetAng() }
self:SetAngle(LocalPlayer.Ang[1], (LocalPlayer.Ang[2] == NewAngle and LocalPlayer.Ang[2] - 180 or LocalPlayer.Ang[2]), 0)
end
else
if getCVar(self.SettingsPrefix .. "pitchup") == "-180" then
LocalPlayer.Ang = { self:LocalPlayer():GetAng() }
wait(self:Setting("anti_aim_delay") / 2)
rawcmd(self.SettingsPrefix .. "pitchup 89\n")
wait(self:Setting("anti_aim_delay") / 2)
local NewAngle = { self:LocalPlayer():GetAng() }
self:SetAngle(LocalPlayer.Ang[1], (LocalPlayer.Ang[2] == NewAngle and LocalPlayer.Ang[2] - 180 or LocalPlayer.Ang[2]), 0)
end
end
if getCVar("sensitivity") ~= self.Mouse[1] then
wait(self:Setting("aimbot_mousefix_sleep"))
rawcmd("sensitivity " .. self.Mouse[1] .. ";cl_yawspeed " .. self.Mouse[2] .. "\n")
end
end
end
-- ###################################
-- ####### Aimbot #######
-- ###################################
SB:CreateSetting("aimbot_enabled", "If set to 1, the Aimbot is enabled.", SB:GetSetting("Aimbot"))
SB:CreateSetting("aimbot_hold", "Defines the aimbot hold.", SB:GetSetting("AimbotDelay"))
SB:CreateSetting("aimbot_mode", "Sets the aimbot mode, 0 = Aim Target, 1 = FOV, 2 = FOV and Aim Target.", SB:GetSetting("AimbotMode"))
SB:CreateSetting("aimbot_fovX", "Defines the X - Field Of View of the aimbot.", SB:GetSetting("AimbotFovX"))
SB:CreateSetting("aimbot_fovY", "Defines the Y - Field Of View of the aimbot.", SB:GetSetting("AimbotFovY"))
SB:CreateSetting("aimbot_aimonce", "If set to 1, the Aimbot will only shoot once if you hold down the Aimbot-Key.", SB:GetSetting("AimbotAimOnce"))
SB:CreateSetting("aimbot_delay", "Defines the delay-time in miliseconds of the Aimbot.", SB:GetSetting("AimbotDelay"))
SB:CreateSetting("aimbot_friendlyfire", "If set to 1, the Aimbot will shoot at friends.", SB:GetSetting("AimbotFriendlyFire"))
SB:CreateSetting("aimbot_key", "Defines the Aimbot key.", SB:GetSetting("AimbotKey"))
SB:CreateSetting("aimbot_autoshoot", "Defines if the aimbot auto-shoots.", SB:GetSetting("AimbotAutoShoot"))
SB:CreateSetting("aimbot_autoshoot_delay", "Defines the delay of the auto-shoot.", SB:GetSetting("AimbotAutoShootDelay"))
SB:CreateSetting("aimbot_mousefix", "Defines if the Aimbot-Mousefix is enabled or not.", SB:GetSetting("AimbotMousefix"))
SB:CreateSetting("aimbot_mousefix_sleep", "Defines the sleep time of the mousefix.", SB:GetSetting("AimbotMousefixSleep"))
SB:CreateSetting("aimbot_hitbox_pos", "Defines at what hitbox the aimbot should aim at.", SB:GetSetting("AimbotHitboxPos"))
SB:CreateSetting("enemy_down", "If set to 1, there will be a \"Enemy Down\" radio message every time you kill someone.", SB:GetSetting("EnemyDown"))
SB:CreateSetting("enemy_down_delay", "Sets the \"Enemy Down\"-Delay.", SB:GetSetting("EnemyDownDelay"))
--[[SB.HitboxInfo = {
["Pelvis"] = 0,
["Left Thigh"] = 1,
["Left Calf"] = 2,
["Left Foot"] = 3,
["Left Toe"] = 4,
["Right Thigh"] = 5,
["Right Calf"] = 6,
["Right Foot"] = 7,
["Right Toe"] = 8,
["Body"] = 9,
["Torax"] = 10,
["Neck"] = 11,
["Head"] = 12,
["Left Upper Arm"] = 13,
["Left Forearm"] = 14,
["Left Hand"] = 15,
["Right Upper Arm"] = 16,
["Right Forearm"] = 17,
["Right Hand"] = 18
}]]
--[[SB.HitboxInfo = {
["Pelvis"],
["Left Thigh"],
["Left Calf"],
["Left Foot"],
["Left Toe"],
["Right Thigh"],
["Right Calf"],
["Right Foot"],
["Right Toe"],
["Body"],
["Torax"],
["Neck"],
["Head"],
["Left Upper Arm"],
["Left Forearm"],
["Left Hand"],
["Right Upper Arm"],
["Right Forearm"],
["Right Hand"]
}]]
SB.HitboxInfo = { "Pelvis", "Left Thigh", "Left Calf", "Left Foot", "Left Toe", "Right Thigh", "Right Calf", "Right Foot", "Right Toe", "Body", "Torax", "Neck", "Head", "Left Upper Arm", "Left Forearm", "Left Hand", "Right Upper Arm", "Right Forearm", "Right Hand" }
SB.Aimed = false
SB.Mouse = { getCVar("sensitivity"), getCVar("cl_yawspeed") }
function SB:FindAimbotTarget()
local Target = nil
if self:LocalPlayer():Alive() and SB:Setting("aimbot_enabled") and self:InGame() and not isConVis() then
if not self:HasBannedWeapon() then
if keyDown(self:Setting("aimbot_key")) ~= 0 or self:Setting("aimbot_autoshoot") then
local AimbotMode = self:Setting("aimbot_mode")
if AimbotMode == 0 then
local AT = self:LocalPlayer():AimTarget()
if AT.Index >= 1 and AT.Index <= 64 then
if not self:Setting("aimbot_friendlyfire") then
if AT:Enemy() then
Target = AT
end
else
Target = AT
end
else
Target = nil
end
elseif AimbotMode == 1 then
local X, Y, FT = self:GetFov()
local SX, SY = self:Setting("aimbot_fovX"), self:Setting("aimbot_fovY")
if X < SX and Y < SY and X > -SX and Y > -SY and FT.Index > 0 and FT:Visible() then
if not self:Setting("aimbot_friendlyfire") then
if FT:Enemy() then
Target = FT
end
else
Target = FT
end
else
Target = nil
end
elseif AimbotMode == 2 then
local X, Y, FT = self:GetFov()
local SX, SY = self:Setting("aimbot_fovX"), self:Setting("aimbot_fovY")
local AT = self:LocalPlayer():AimTarget()
if X < SX and Y < SY and X > -SX and Y > -SY and AT.Index >= 1 and AT.Index <= 64 and FT.Index == AT.Index then
if not self:Setting("aimbot_friendlyfire") then
if AT:Enemy() then
Target = AT
end
else
Target = AT
end
else
Target = nil
end
end
if self:Setting("aimbot_aimonce") and not self:Setting("aimbot_autoshoot") then
if not self.Aimed then
self.AimbotTarget = Target
self.Aimed = true
else
Target = nil
end
else
if Target ~= nil then
self.AimbotTarget = Target
end
end
else
if self:Setting("aimbot_aimonce") then
if self.Aimed then
self.Aimed = false
end
end
end
if not Target then self.AimbotTarget = nil end
if self:Setting("anti_aim") then
if getCVar(self.SettingsPrefix .. "pitchup") == "89" then
local Ang = { self:LocalPlayer():GetAng() }
wait(self:Setting("anti_aim_delay"))
rawcmd(self.SettingsPrefix .. "pitchup -180\n")
self:SetAngle(Ang[1], Ang[2] - 180, 0)
end
end
else
self.AimbotTarget = nil
if self:Setting("anti_aim") then
if getCVar(self.SettingsPrefix .. "pitchup") == "-180" then
local Ang = { self:LocalPlayer():GetAng() }
wait(self:Setting("anti_aim_delay"))
rawcmd(self.SettingsPrefix .. "pitchup 89\n")
self:SetAngle(0, Ang[2] - 180, 0)
end
end
end
else
self.AimbotTarget = nil
end
end
function SB:CheckAngle(ang)
if self:Setting("aimbot_mode") == 0 then return true end
if not self:Setting("anti_aim") then
if self:Setting("aimbot_fovX") < 360 and self:Setting("aimbot_fovY") < 360 then
if ang < 90 and ang > -90 then
return true
end
else
return true
end
else
if not (ang > -90 and ang < 90) then
return true
end
end
return false
end
function SB:AimbotMain()
local Target = self.AimbotTarget
local LocalPlayer = self:LocalPlayer()
if Target then
LocalPlayer.Pos = { LocalPlayer:GetEyePos() }
LocalPlayer.Ang = { LocalPlayer:GetAng() }
Target.EyePos = { Target:GetHitboxPos(SB:Setting("aimbot_hitbox_pos")) }
Target.Ang = self:CalculateAngle(LocalPlayer.Pos, Target.EyePos)
Target.Delta = { Target.Ang[1] - LocalPlayer.Ang[1], Target.Ang[2] - LocalPlayer.Ang[2] }
Target.Delta[2] = Target.Delta[2] < -180 and 360 + Target.Delta[2] or Target.Delta[2] > 180 and -360 + Target.Delta[2] or Target.Delta[2]
local Angle = { LocalPlayer.Ang[1] + Target.Delta[1], LocalPlayer.Ang[2] + Target.Delta[2] }
Angle[3] = Angle[2] - LocalPlayer.Ang[2]
if self:CheckAngle(Angle[3]) then
if self:Setting("aimbot_autoshoot") then
rawcmd("+attack\n")
end
if self:Setting("anti_aim") then
rawcmd(self.SettingsPrefix .. "pitchup 89\n")
end
if self:Setting("afk_bot") and self.Spinning then
rawcmd("-lookdown;-lookup;-left;-right\n")
end
if self:Setting("aimbot_mousefix") then
if getCVar("sensitivity") ~= "0.000100" then
rawcmd("sensitivity 0.000100;cl_yawspeed 0\n")
end
end
wait(self:Setting("aimbot_delay") >= 0 and self:Setting("aimbot_delay") or 0)
self:SetAngle(Angle[1], Angle[2])
if self:Setting("aimbot_autoshoot") then
wait(self:Setting("aimbot_autoshoot_delay"))
rawcmd("-attack\n")
end
if self:Setting("aimbot_mousefix") then
if getCVar("sensitivity") ~= self.Mouse[1] then
wait(self:Setting("aimbot_mousefix_sleep"))
rawcmd("sensitivity " .. self.Mouse[1] .. ";cl_yawspeed " .. self.Mouse[2] .. "\n")
end
end
if self:Setting("anti_aim") and LocalPlayer:AimTarget().Index < 1 then
SB:AntiAim("on")
end
if self:Setting("afk_bot") and self.Spinning then
wait(self:Setting("afk_bot_delay"))
local A = { self:LocalPlayer():GetAng() }
self:SetAngle(5, A[2])
end
if self:Setting("enemy_down") then
wait(self:Setting("enemy_down_delay"))
if not Target:Alive() then
rawcmd("radio3;slot9\n")
end
end
end
end
if self:Setting("aimbot_mousefix") then
if getCVar("sensitivity") ~= SB.Mouse[1] then
wait(self:Setting("aimbot_mousefix_sleep"))
rawcmd("sensitivity " .. SB.Mouse[1] .. ";cl_yawspeed " .. SB.Mouse[2] .. "\n")
end
end
end
SB:AddLoop("Find Aimbot Target", function() SB:FindAimbotTarget() end)
SB:AddLoop("Aimbot - Main", function() SB:AimbotMain() end)
-- ###################################
-- ######## AFK-Bot #######
-- ###################################
function OnAfkBotChange()
SB:AFKBot(not SB:Setting("afk_bot") and "off" or "on", true)
end
SB:CreateSetting("afk_bot", "If set to 1, AFK-Bot is enabled.", false, { ["Func"] = OnAfkBotChange })
SB:CreateSetting("afk_bot_yawspeed", "Defines the yawspeed.", 1000)
SB:CreateSetting("afk_bot_advanced", "If set to 1, it will aim up and down too, to get more targets.", false)
SB:CreateSetting("afk_bot_delay", "Defines the afk-bot delay.", 20)
SB.PitchDelay = 0.500
SB.Spinning = false
SB.UpDownMode = "up"
SB.LastUpdated = os.clock()
function SB:UpdateAFKAngles()
if self.Spinning then rawcmd("+right\n") end
if self.Spinning and (os.clock() + self.PitchDelay) > self.LastUpdated and self:Setting("afk_bot_advanced") then
local A = { self:LocalPlayer():GetAng() }
self:SetAngle(5, A[2])
if self.UpDownMode == "up" then
rawcmd("+lookup;-lookdown\n")
self.UpDownMode = "down"
else
rawcmd("-lookup;+lookdown\n")
self.UpDownMode = "up"
end
--[[math.randomseed(tonumber(tostring(os.clock()):sub(1, 4):reverse()))
self:SetAngle(math.random(-89, 89), A[2])]]
self.LastUpdated = os.clock()
end
end
do
local CVar = function(cvar)
return getCVar(SB.SettingsPrefix .. cvar)
end
SB.AimbotSettings = {
["Aimbot"] = CVar("aimbot_enabled"),
["AimbotDelay"] = CVar("aimbot_delay"),
["AimbotMode"] = CVar("aimbot_mode"),
["AimbotAutoShoot"] = CVar("aimbot_autoshoot"),
["AimbotMousefix"] = CVar("aimbot_mousefix")
}
SB.OldMouse = { SB.Mouse[1], SB.Mouse[2] }
end
function SB:AFKBot(str, con)
if self:Setting("afk_bot") or con then
rawcmd("-lookup;-lookdown\n")
local CVar = function(cvar)
return getCVar(self.SettingsPrefix .. cvar)
end
local Set = function(cvar, var)
setCVar(self.SettingsPrefix .. cvar, tostring(var or 1))
end
if str == "on" and not self.Spinning then
local A = { self:LocalPlayer():GetAng() }
self:SetAngle(5, A[2])
if self:Setting("afk_bot_advanced") then rawcmd(self:Prefix() .. "pitchspeed " .. self:Setting("afk_bot_yawspeed") .. "\n") end
rawcmd("+right\n")
rawcmd("sensitivity 0\n")
rawcmd("cl_yawspeed " .. self:Setting("afk_bot_yawspeed") * 2 .. "\n")
self.Mouse[2] = self:Setting("afk_bot_yawspeed") * 2
self.Mouse[1] = 0
self.Spinning = true
Set("aimbot_enabled", 1)
Set("aimbot_delay", 15)
Set("aimbot_mode", 0)
Set("aimbot_autoshoot", 1)
Set("aimbot_mousefix", 1)
elseif str == "off" and self.Spinning then
self.Mouse[2] = self.OldMouse[2]
self.Mouse[1] = self.OldMouse[1]
rawcmd("-right\n")
rawcmd("sensitivity " .. self.Mouse[1] .. "\n")
rawcmd("cl_yawspeed " .. self.Mouse[2] .. "\n")
self.Spinning = false
Set("aimbot_enabled", self.AimbotSettings["Aimbot"])
Set("aimbot_delay", self.AimbotSettings["AimbotDelay"])
Set("aimbot_mode", self.AimbotSettings["AimbotMode"])
Set("aimbot_autoshoot", self.AimbotSettings["AimbotAuoShoot"])
Set("aimbot_mousefix", self.AimbotSettings["AimbotMousefix"])
end
end
end
SB:AddLoop("AFK-Bot", function() SB:UpdateAFKAngles() end)
-- ###################################
-- ####### Triggerbot #######
-- ###################################
SB:CreateSetting("triggerbot_enabled", "If set to 1, the Triggerbot is enabled.", SB:GetSetting("Triggerbot"))
SB:CreateSetting("triggerbot_aim", "If set to 1, Triggerbot-Aim is enabled.", SB:GetSetting("TriggerbotAim"))
SB:CreateSetting("triggerbot_mousefix", "If set to 1, Triggerbot-Mousefix is enabled.", SB:GetSetting("TriggerbotMousefix"))
SB:CreateSetting("triggerbot_mousefix_sleep", "Defines the sleep time of the mousefix.", SB:GetSetting("TriggerbotMousefixSleep"))
SB:CreateSetting("triggerbot_hold", "Defines the Triggerbot-Hold in miliseconds.", SB:GetSetting("TriggerbotHold"))
SB:CreateSetting("triggerbot_delay", "Defines the Triggerbot-Delay in miliseconds before shooting.", SB:GetSetting("TriggerbotDelay"))
SB:CreateSetting("triggerbot_key", "Defines the Triggerbot-Key.", SB:GetSetting("TriggerbotKey"))
SB:CreateSetting("triggerbot_friendlyfire", "If set to 1, the Triggerbot will attack friends.", SB:GetSetting("TriggerbotFriendlyFire"))
SB:CreateSetting("triggerbot_mode", "Defines the Triggerbot Mode. 0 = Aim Target, 1 = FOV, 2 = Aim Target and FOV.", SB:GetSetting("TriggerbotMode"))
SB:CreateSetting("triggerbot_fovX", "Defines the Triggerbot Field Of View-X position.", SB:GetSetting("TriggerbotFovX"))
SB:CreateSetting("triggerbot_fovY", "Defines the Triggerbot Field Of View-Y position.", SB:GetSetting("TriggerbotFovY"))
SB:CreateSetting("triggerbot_hitbox_pos", "Sets the hitbox position for the triggerbot-aim.", SB:GetSetting("TriggerbotHitboxPos"))
function SB:FindTriggerbotTarget()
local Target = nil
if self:Setting("triggerbot_enabled") and self:LocalPlayer():Alive() and self:InGame() and keyDown(self:Setting("triggerbot_key")) ~= 0 and not isConVis() and not self:HasBannedWeapon() then
local TriggerbotMode = self:Setting("triggerbot_mode")
if TriggerbotMode == 0 then
local AT = self:LocalPlayer():AimTarget()
if AT.Index >= 1 and AT.Index <= 64 then
if self:Setting("triggerbot_friendlyfire") then
Target = AT
else
if AT:Enemy() then
Target = AT
end
end
end
elseif TriggerbotMode == 1 then
local X, Y, FT = self:GetFov()
local SX, SY = self:Setting("triggerbot_fovX"), self:Setting("triggerbot_fovY")
if X < SX and Y < SY and X > -SX and Y > -SY and FT.Index > 0 and FT:Visible() then
if self:Setting("triggerbot_friendlyfire") then
Target = FT
else
if FT:Enemy() then
Target = FT
end
end
end
elseif TriggerbotMode == 2 then
local X, Y, FT = self:GetFov()
local SX, SY = self:Setting("triggerbot_fovX"), self:Setting("triggerbot_fovY")
local AT = self:LocalPlayer():AimTarget()
if X < SX and Y < SY and X > -SX and Y > -SY and FT.Index == AT.Index then
if self:Setting("triggerbot_friendlyfire") then
Target = AT
else
if AT:Enemy() then
Target = AT
end
end
end
end
end
self.TriggerbotTarget = Target
end
function SB:TriggerbotMain()
local Target = self.TriggerbotTarget
local LocalPlayer = self:LocalPlayer()
if Target then
LocalPlayer.Pos = { LocalPlayer:GetEyePos() }
LocalPlayer.Ang = { LocalPlayer:GetAng() }
Target.EyePos = { Target:GetHitboxPos(self:Setting("triggerbot_hitbox_pos")) }
Target.Ang = self:CalculateAngle(LocalPlayer.Pos, Target.EyePos)
Target.Delta = { Target.Ang[1] - LocalPlayer.Ang[1], Target.Ang[2] - LocalPlayer.Ang[2] }
Target.Delta[2] = Target.Delta[2] < -180 and 360 + Target.Delta[2] or Target.Delta[2] > 180 and -360 + Target.Delta[2] or Target.Delta[2]
local Angle = { LocalPlayer.Ang[1] + Target.Delta[1], LocalPlayer.Ang[2] + Target.Delta[2] }
Angle[3] = Angle[2] - LocalPlayer.Ang[2]
if Angle[3] < 90 and Angle[3] > -90 then
if self:Setting("triggerbot_mousefix") and self:Setting("triggerbot_aim") then
if getCVar("sensitivity") ~= "0.000100" then
rawcmd("sensitivity 0.000100;cl_yawspeed 0\n")
end
end
wait(self:Setting("triggerbot_delay") >= 0 and self:Setting("triggerbot_delay") or 0)
if self:Setting("triggerbot_aim") then
self:SetAngle(Angle[1], Angle[2])
end
rawcmd("+attack\n")
if self:Setting("triggerbot_mousefix") and self:Setting("triggerbot_aim") then
if getCVar("sensitivity") ~= SB.Mouse[1] then
wait(self:Setting("triggerbot_mousefix_sleep"))
rawcmd("sensitivity " .. SB.Mouse[1] .. ";cl_yawspeed " .. SB.Mouse[2] .. "\n")
end
end
wait(self:Setting("triggerbot_hold"))
rawcmd("-attack\n")
wait(self:Setting("triggerbot_hold"))
end
end
if self:Setting("triggerbot_mousefix") then
if getCVar("sensitivity") ~= SB.Mouse[1] then
wait(self:Setting("triggerbot_mousefix_sleep"))
rawcmd("sensitivity " .. SB.Mouse[1] .. ";cl_yawspeed " .. SB.Mouse[2] .. "\n")
end
end
end
SB:AddLoop("Find Triggerbot Target", function() SB:FindTriggerbotTarget() end)
SB:AddLoop("Triggerbot - Main", function() SB:TriggerbotMain() end)
-- ###################################
-- ####### Bunnyhop #######
-- ###################################
SB:CreateSetting("bunnyhop_enabled", "If set to 1, Bunnyhop is enabled.", SB:GetSetting("Bunnyhop"))
SB:CreateSetting("bunnyhop_key", "Sets the Bunnyhop-Key to it's value.", SB:GetSetting("BunnyhopKey"))
SB.BunnyhopTick = 0
SB.Jumped = false
function SB:Bunnyhop()
if self:Setting("bunnyhop_enabled") and self:InGame() and self:LocalPlayer():Alive() then
if keyDown(self:Setting("bunnyhop_key")) ~= 0 then
if self.BunnyhopTick >= 10 then
if not self.Jumped then self.Jumped = true end
rawcmd(((self:LocalPlayer():OnGround() or self:LocalPlayer():InWater()) and "+" or "-") .. "jump\n")
self.BunnyhopTick = 0
else
self.BunnyhopTick = self.BunnyhopTick + 1
end
else
if self.Jumped then
rawcmd("-jump\n")
self.Jumped = false
self.BunnyhopTick = 0
end
end
else
if self.Jumped then
rawcmd("-jump\n")
self.Jumped = false
self.BunnyhopTick = 0
end
end
end
SB:AddLoop("Bunnyhop", function() SB:Bunnyhop() end)
-- ###################################
-- ####### Anti-Recoil #######
-- ###################################
SB:CreateSetting("antirecoil_enabled", "Anti-Recoil enabled.", SB:GetSetting("AntiRecoil"))
SB:CreateSetting("antirecoil_key", "Anti-Recoil key.", SB:GetSetting("AntiRecoilKey"))
SB:CreateSetting("antirecoil_add", "Extra Anti-Recoil Aim-Down", SB:GetSetting("AntiRecoilExtraAimDown"))
SB.AntiRecoilPerformed = false
function SB:GetAntiRecoilPitch(weaponID)
local ExtraSpeed = self:Setting("antirecoil_add")
if weaponID == 1 then
return 4.5 + ExtraSpeed
elseif weaponID == 181 or weaponID == 187 or weaponID == 188 then
return 1.2 + ExtraSpeed
elseif weaponID == 183 or weaponID == 179 then
return 2.5 + ExtraSpeed
elseif weaponID == 171 then
return 4.0 + ExtraSpeed
elseif weaponID == 177 then
return 1.0 + ExtraSpeed
elseif weaponID == 189 then
return 3.0 + ExtraSpeed
elseif weaponID == 185 or weaponID == 174 then
return 0.1 + ExtraSpeed
else
return 0.0
end
end
if SB:Setting("antirecoil_enabled") then
if getCVar("cl_mouselook") == "0" then
setCVar("cl_mouselook", "1")
end
if not existsCVar(SB:Prefix() .. "mouselook") then
hideCVar("cl_mouselook", SB:Prefix() .. "mouselook")
end
setCVar(SB:Prefix() .. "mouselook", "0")
end
function SB:AntiRecoil()
if self:Setting("antirecoil_enabled") and self:LocalPlayer():Alive() and self:InGame() and not isConVis() then
if (keyDown(self:Setting("antirecoil_key")) ~= 0 or (self:Setting("triggerbot_enabled") and keyDown(self:Setting("triggerbot_key")) ~= 0 and self.TriggerbotTarget)) and not self.AntiRecoilPerformed and not self:HasBannedWeapon() then
self.AntiRecoilPerformed = true
local PitchSpeed = self:GetAntiRecoilPitch(self:GetWeaponID())
if getCVar(self:Prefix() .. "pitchspeed") ~= PitchSpeed then
setCVar(self:Prefix() .. "pitchspeed", PitchSpeed)
end
rawcmd("+lookdown\n")
elseif keyDown(self:Setting("antirecoil_key")) == 0 and (self:Setting("triggerbot_enabled") and keyDown(self:Setting("triggerbot_key") == 0 and not self.TriggerbotTarget)) then
if self.AntiRecoilPerformed then
rawcmd("-lookdown\n")
self.AntiRecoilPerformed = false
end
end
else
if self.AntiRecoilPerformed then
rawcmd("-lookdown\n")
self.AntiRecoilPerformed = false
end
end
end
SB:AddLoop("Anti-Recoil Update", function() SB:AntiRecoil() end)
-- ###################################
-- ####### Autopistol #######
-- ###################################
--[[SB:CreateSetting("autopistol_enabled", "If set to 1, Autopistol is enabled.", true)
SB:CreateSetting("autopistol_key", "The key you want to use to enable Autopistol.", 1)
SB:CreateSetting("autopistol_hold", "Defines the hold time of the autopistol-cheat.", 25)
function SB:Autopistol()
if self:Setting("autopistol_enabled") and self:InGame() and self:LocalPlayer():Alive() and not isConVis() then
if self:GetWeaponSlot() == 2 and keyDown(self:Setting("autopistol_key")) ~= 0 then
rawcmd("+attack\n")
wait(25)
rawcmd("-attack\n")
wait(25)
end
end
end
SB:AddLoop("Autopistol", function() SB:Autopistol() end)]]
-- ###################################
-- ######## Knifebot #######
-- ###################################
SB:CreateSetting("knifebot_enabled", "If set to 1, the Knifebot is enabled.", SB:GetSetting("Knifebot"))
SB:CreateSetting("knifebot_key", "Knifebot-Key, set to nil to set it always on.", SB:GetSetting("KnifebotKey"))
function SB:Knifebot()
if self:Setting("knifebot_enabled") and self:InGame() and self:LocalPlayer():Alive() and not isConVis() then
local Target = self:LocalPlayer():AimTarget()
if Target.Index > 0 and Target.Index <= 64 and Target:Enemy() and keyDown(self:Setting("knifebot_key")) ~= 0 then
if Target:Distance() <= 60 and self:GetWeaponID() == 73 then
rawcmd("+attack2\n")
wait(25)
rawcmd("-attack2\n")
wait(25)
end
end
end
end
SB:AddLoop("Knifebot", function() SB:Knifebot() end)
-- ###################################
-- ######## Speedhack #######
-- ###################################
SB:CreateSetting("speedhack_enabled", "If set to 1, Speedhack will enable if you press the Speedhack-Key.", SB:GetSetting("Speedhack"))
SB:CreateSetting("speedhack_key", "Defines the Speedhack-Key.", SB:GetSetting("SpeedhackKey"))
SB:CreateSetting("speedhack_speed", "Defines the Speedhack-Key.", SB:GetSetting("SpeedhackSpeed"))
SB:HideCmd("host_framerate", "framerate", "0")
function SB:Speedhack()
if self:Setting("speedhack_enabled") and self:LocalPlayer():Alive() and self:InGame() and not isConVis() then
if keyDown(self:Setting("speedhack_key")) ~= 0 then
if tonumber(getCVar(self:Prefix() .. "framerate")) ~= tonumber(self:Setting("speedhack_speed")) then
setCVar(self:Prefix() .. "framerate", self:Setting("speedhack_speed"))
end
else
if tonumber(getCVar(self:Prefix() .. "framerate")) ~= 0 then
setCVar(self:Prefix() .. "framerate", 0)
end
end
else
if tonumber(getCVar(self:Prefix() .. "framerate")) ~= 0 then
setCVar(self:Prefix() .. "framerate", 0)
end
end
end
SB:AddLoop("Speedhack", function() SB:Speedhack() end)
-- ###################################
-- ####### Menu Items #######
-- ###################################
do
local function GetMenuVar(var)
local re = getCVar((SB.SettingsPrefix or "") .. var)
if type(tonumber(re)) == "number" then return tonumber(re) end
return re
end
local function SetMenuVar(var, set)
setCVar((SB.SettingsPrefix or "") .. var, set)
end
local function GetStringForKey(key)
if key == 1 then return "mouse1"
elseif key == 2 then return "mouse2"
elseif key == 3 then return "mouse3"
elseif key == 5 then return "mouse4"
elseif key == 6 then return "mouse5"
elseif key == 32 then return "space"
elseif key == 70 then return "F"
elseif key == 69 then return "E" end
end
local function GetKeyForString(key)
if key == "mouse1" then return 1
elseif key == "mouse2" then return 2
elseif key == "mouse3" then return 3
elseif key == "mouse4" then return 5
elseif key == "mouse5" then return 6
elseif key == "space" then return 32
elseif key == "F" then return 70
elseif key == "E" then return 69 end
end
-- [[Aimbot]]
Aimbot = Menu:new("Aimbot")
AimbotEnabled = Aimbot:new("Enabled [" .. GetMenuVar("aimbot_enabled") .. "]", function()
if tostring(GetMenuVar("aimbot_enabled")) == "1" then
SetMenuVar("aimbot_enabled", "0")
else
SetMenuVar("aimbot_enabled", "1")
end
AimbotEnabled.label = "Enabled [" .. GetMenuVar("aimbot_enabled") .. "]"
end)
AimbotAimOnce = Aimbot:new("Aim Once [" .. GetMenuVar("aimbot_aimonce") .. "]", function()
if tonumber(GetMenuVar("aimbot_aimonce")) == 1 then
SetMenuVar("aimbot_aimonce", "0")
else
SetMenuVar("aimbot_aimonce", "1")
end
AimbotAimOnce.label = "Aim Once [" .. GetMenuVar("aimbot_aimonce") .. "]"
end)
AimbotFriendlyFire = Aimbot:new("Friendly Fire [" .. GetMenuVar("aimbot_friendlyfire") .. "]", function()
if tonumber(GetMenuVar("aimbot_friendlyfire")) == 0 then
SetMenuVar("aimbot_friendlyfire", "1")
else
SetMenuVar("aimbot_friendlyfire", "0")
end
end)
AimbotDelay = Aimbot:new("Delay [" .. GetMenuVar("aimbot_delay") .. "]")
AimbotDelay:new("+1", function()
SetMenuVar("aimbot_delay", GetMenuVar("aimbot_delay") + 1)
AimbotDelay.label = "Delay [" .. GetMenuVar("aimbot_delay") .. "]"
end)
AimbotDelay:new("+10", function()
SetMenuVar("aimbot_delay", GetMenuVar("aimbot_delay") + 10)
AimbotDelay.label = "Delay [" .. GetMenuVar("aimbot_delay") .. "]"
end)
AimbotDelay:new("-1", function()
if GetMenuVar("aimbot_delay") - 1 >= 1 then
SetMenuVar("aimbot_delay", GetMenuVar("aimbot_delay") - 1)
AimbotDelay.label = "Delay [" .. GetMenuVar("aimbot_delay") .. "]"
end
end)
AimbotDelay:new("-10", function()
if GetMenuVar("aimbot_delay") - 10 >= 1 then
SetMenuVar("aimbot_delay", GetMenuVar("aimbot_delay") - 10)
AimbotDelay.label = "Delay [" .. GetMenuVar("aimbot_delay") .. "]"
end
end)
AimbotKey = Aimbot:new("Key [" .. GetStringForKey(GetMenuVar("aimbot_key")) .. "]")
AimbotKey:new("Mouse1", function()
SetMenuVar("aimbot_key", GetKeyForString("mouse1"))
AimbotKey.label = "Key [" .. GetStringForKey(GetMenuVar("aimbot_key")) .. "]"
end)
AimbotKey:new("Mouse2", function()
SetMenuVar("aimbot_key", GetKeyForString("mouse2"))
AimbotKey.label = "Key [" .. GetStringForKey(GetMenuVar("aimbot_key")) .. "]"
end)
AimbotKey:new("Mouse3", function()
SetMenuVar("aimbot_key", GetKeyForString("mouse3"))
AimbotKey.label = "Key [" .. GetStringForKey(GetMenuVar("aimbot_key")) .. "]"
end)
AimbotKey:new("Mouse4", function()
SetMenuVar("aimbot_key", GetKeyForString("mouse4"))
AimbotKey.label = "Key [" .. GetStringForKey(GetMenuVar("aimbot_key")) .. "]"
end)
AimbotKey:new("Mouse5", function()
SetMenuVar("aimbot_key", GetKeyForString("mouse5"))
AimbotKey.label = "Key [" .. GetStringForKey(GetMenuVar("aimbot_key")) .. "]"
end)
AimbotMouseFix = Aimbot:new("Mouse Fix")
AimbotMouseFixEnabled = AimbotMouseFix:new("Enabled [" .. GetMenuVar("aimbot_mousefix") .. "]", function()
if tonumber(GetMenuVar("aimbot_mousefix")) == 1 then
SetMenuVar("aimbot_mousefix", "0")
else
SetMenuVar("aimbot_mousefix", "1")
end
AimbotMouseFixEnabled.label = "Enabled [" .. GetMenuVar("aimbot_mousefix") .. "]"
end)
AimbotMouseFixSleep = AimbotMouseFix:new("Sleep [" .. GetMenuVar("aimbot_mousefix_sleep") .. "]")
AimbotMouseFixSleep_Plus1 = AimbotMouseFixSleep:new("+1", function()
SetMenuVar("aimbot_mousefix_sleep", GetMenuVar("aimbot_mousefix_sleep") + 1)
AimbotMouseFixSleep.label = "Sleep [" .. GetMenuVar("aimbot_mousefix_sleep") .. "]"
end)
AimbotMouseFixSleep_Plus10 = AimbotMouseFixSleep:new("+10", function()
SetMenuVar("aimbot_mousefix_sleep", GetMenuVar("aimbot_mousefix_sleep") + 10)
AimbotMouseFixSleep.label = "Sleep [" .. GetMenuVar("aimbot_mousefix_sleep") .. "]"
end)
AimbotMouseFixSleep_Minus1 = AimbotMouseFixSleep:new("-1", function()
if GetMenuVar("aimbot_mousefix_sleep") - 1 >= 1 then
SetMenuVar("aimbot_mousefix_sleep", GetMenuVar("aimbot_mousefix_sleep") - 1)
AimbotMouseFixSleep.label = "Sleep [" .. GetMenuVar("aimbot_mousefix_sleep") .. "]"
end
end)
AimbotMouseFixSleep_Minus10 = AimbotMouseFixSleep:new("-10", function()
if GetMenuVar("aimbot_mousefix_sleep") - 10 >= 1 then
SetMenuVar("aimbot_mousefix_sleep", GetMenuVar("aimbot_mousefix_sleep") - 10)
AimbotMouseFixSleep.label = "Sleep [" .. GetMenuVar("aimbot_mousefix_sleep") .. "]"
end
end)
AimbotMode = Aimbot:new("Mode [" .. GetMenuVar("aimbot_mode") .. "]")
AimbotMode0 = AimbotMode:new("0", function()
SetMenuVar("aimbot_mode", "0")
AimbotMode.label = "Mode [" .. GetMenuVar("aimbot_mode") .. "]"
end)
AimbotMode1 = AimbotMode:new("1", function()
SetMenuVar("aimbot_mode", "1")
AimbotMode.label = "Mode [" .. GetMenuVar("aimbot_mode") .. "]"
end)
AimbotMode2 = AimbotMode:new("2", function()
SetMenuVar("aimbot_mode", "2")
AimbotMode.label = "Mode [" .. GetMenuVar("aimbot_mode") .. "]"
end)
AimbotMode3 = AimbotMode:new("3", function()
SetMenuVar("aimbot_mode", "3")
AimbotMode.label = "Mode [" .. GetMenuVar("aimbot_mode") .. "]"
end)
AimbotMode4 = AimbotMode:new("4", function()
SetMenuVar("aimbot_mode", "4")
AimbotMode.label = "Mode [" .. GetMenuVar("aimbot_mode") .. "]"
end)
AimbotHold = Aimbot:new("Hold [" .. GetMenuVar("aimbot_hold") .. "]")
AimbotHold_Plus1 = AimbotHold:new("+1", function()
SetMenuVar("aimbot_hold", GetMenuVar("aimbot_hold") + 1)
AimbotHold.label = "Hold [" .. GetMenuVar("aimbot_hold") .. "]"
end)
AimbotHold_Plus10 = AimbotHold:new("+10", function()
SetMenuVar("aimbot_hold", GetMenuVar("aimbot_hold") + 10)
AimbotHold.label = "Hold [" .. GetMenuVar("aimbot_hold") .. "]"
end)
AimbotHold_Minus1 = AimbotHold:new("-1", function()
if GetMenuVar("aimbot_hold") - 1 >= 1 then
SetMenuVar("aimbot_hold", GetMenuVar("aimbot_hold") - 1)
AimbotHold.label = "Hold [" .. GetMenuVar("aimbot_hold") .. "]"
end
end)
AimbotHold_Minus10 = AimbotHold:new("-10", function()
if GetMenuVar("aimbot_hold") - 10 >= 1 then
SetMenuVar("aimbot_hold", GetMenuVar("aimbot_hold") - 10)
AimbotHold.label = "Hold [" .. GetMenuVar("aimbot_hold") .. "]"
end
end)
AimbotAutoShoot = Aimbot:new("Auto-Shoot")
AimbotAutoShootEnabled = AimbotAutoShoot:new("Enabled [" .. GetMenuVar("aimbot_autoshoot") .. "]", function()
if tostring(GetMenuVar("aimbot_autoshoot")) == "0" then
SetMenuVar("aimbot_autoshoot", "1")
else
SetMenuVar("aimbot_autoshoot", "0")
end
AimbotAutoShootEnabled.label = "Enabled [" .. GetMenuVar("aimbot_autoshoot") .. "]"
end)
AimbotAutoShootDelay = AimbotAutoShoot:new("Delay [" .. GetMenuVar("aimbot_autoshoot_delay") .. "ms]")
AimbotAutoShootDelay_Plus1 = AimbotAutoShootDelay:new("+1", function()
SetMenuVar("aimbot_autoshoot_delay", GetMenuVar("aimbot_autoshoot_delay") + 1)
AimbotAutoShootDelay.label = "Delay [" .. GetMenuVar("aimbot_autoshoot_delay") .. "ms]"
end)
AimbotAutoShootDelay_Plus10 = AimbotAutoShootDelay:new("+10", function()
SetMenuVar("aimbot_autoshoot_delay", GetMenuVar("aimbot_autoshoot_delay") + 10)
AimbotAutoShootDelay.label = "Delay [" .. GetMenuVar("aimbot_autoshoot_delay") .. "ms]"
end)
AimbotAutoShootDelay_Minus1 = AimbotAutoShootDelay:new("-1", function()
if GetMenuVar("aimbot_autoshoot_delay") - 1 >= 1 then
SetMenuVar("aimbot_autoshoot_delay", GetMenuVar("aimbot_autoshoot_delay") - 1)
AimbotAutoShootDelay.label = "Delay [" .. GetMenuVar("aimbot_autoshoot_delay") .. "ms]"
end
end)
AimbotAutoShootDelay_Minus10 = AimbotAutoShootDelay:new("-10", function()
if GetMenuVar("aimbot_autoshoot_delay") - 10 >= 1 then
SetMenuVar("aimbot_autoshoot_delay", GetMenuVar("aimbot_autoshoot_delay") - 10)
AimbotAutoShootDelay.label = "Delay [" .. GetMenuVar("aimbot_autoshoot_delay") .. "ms]"
end
end)
AimbotFov = Aimbot:new("Aimbot Fov [" .. GetMenuVar("aimbot_fovX") .. ", " .. GetMenuVar("aimbot_fovY") .. "]")
AimbotFovX = AimbotFov:new("X")
AimbotFovX_Plus1 = AimbotFovX:new("+1", function()
SetMenuVar("aimbot_fovX", GetMenuVar("aimbot_fovX") + 1)
AimbotFov.label = "Aimbot Fov [" .. GetMenuVar("aimbot_fovX") .. ", " .. GetMenuVar("aimbot_fovY") .. "]"
end)
AimbotFovX_Plus10 = AimbotFovX:new("+10", function()
SetMenuVar("aimbot_fovX", GetMenuVar("aimbot_fovX") + 10)
AimbotFov.label = "Aimbot Fov [" .. GetMenuVar("aimbot_fovX") .. ", " .. GetMenuVar("aimbot_fovY") .. "]"
end)
AimbotFovX_Minus1 = AimbotFovX:new("-1", function()
SetMenuVar("aimbot_fovX", GetMenuVar("aimbot_fovX") - 1)
AimbotFov.label = "Aimbot Fov [" .. GetMenuVar("aimbot_fovX") .. ", " .. GetMenuVar("aimbot_fovY") .. "]"
end)
AimbotFovX_Minus10 = AimbotFovX:new("-10", function()
SetMenuVar("aimbot_fovX", GetMenuVar("aimbot_fovX") - 10)
AimbotFov.label = "Aimbot Fov [" .. GetMenuVar("aimbot_fovX") .. ", " .. GetMenuVar("aimbot_fovY") .. "]"
end)
AimbotFovY = AimbotFov:new("Y")
AimbotFovY_Plus1 = AimbotFovY:new("+1", function()
SetMenuVar("aimbot_fovY", GetMenuVar("aimbot_fovY") + 1)
AimbotFov.label = "Aimbot Fov [" .. GetMenuVar("aimbot_fovX") .. ", " .. GetMenuVar("aimbot_fovY") .. "]"
end)
AimbotFovY_Plus10 = AimbotFovY:new("+10", function()
SetMenuVar("aimbot_fovY", GetMenuVar("aimbot_fovY") + 10)
AimbotFov.label = "Aimbot Fov [" .. GetMenuVar("aimbot_fovX") .. ", " .. GetMenuVar("aimbot_fovY") .. "]"
end)
AimbotFovY_Minus1 = AimbotFovY:new("-1", function()
SetMenuVar("aimbot_fovY", GetMenuVar("aimbot_fovY") - 1)
AimbotFov.label = "Aimbot Fov [" .. GetMenuVar("aimbot_fovX") .. ", " .. GetMenuVar("aimbot_fovY") .. "]"
end)
AimbotFovY_Minus10 = AimbotFovY:new("-10", function()
SetMenuVar("aimbot_fovY", GetMenuVar("aimbot_fovY") - 10)
AimbotFov.label = "Aimbot Fov [" .. GetMenuVar("aimbot_fovX") .. ", " .. GetMenuVar("aimbot_fovY") .. "]"
end)
-- Aimbot Hitbox Pos
AimbotHitboxPos = Aimbot:new("Hitbox Position [" .. SB.HitboxInfo[SB:Setting("aimbot_hitbox_pos")] .. "]")
SB.MenuHitboxTable = {}
for k, v in pairs(SB.HitboxInfo) do
SB.MenuHitboxTable[k] = AimbotHitboxPos:new(v, function()
SetMenuVar("aimbot_hitbox_pos", k)
AimbotHitboxPos.label = "Hitbox Position [" .. SB.HitboxInfo[k] .. "]"
end)
end
-- [[Triggerbot]]
Triggerbot = Menu:new("Triggerbot")
TriggerbotEnabled = Triggerbot:new("Enabled [" .. GetMenuVar("triggerbot_enabled") .. "]", function()
if tonumber(GetMenuVar("triggerbot_enabled")) == 1 then
SetMenuVar("triggerbot_enabled", "0")
else
SetMenuVar("triggerbot_enabled", "1")
end
TriggerbotEnabled.label = "Enabled [" .. GetMenuVar("triggerbot_enabled") .. "]"
end)
TriggerbotFriendlyFire = Triggerbot:new("Friendly Fire [" .. GetMenuVar("triggerbot_friendlyfire") .. "]", function()
if tonumber(GetMenuVar("triggerbot_friendlyfire")) == 1 then
SetMenuVar("triggerbot_friendlyfire", "0")
else
SetMenuVar("triggerbot_friendlyfire", "1")
end
TriggerbotFriendlyFire.label = "Friendly Fire [" .. GetMenuVar("triggerbot_friendlyfire") .. "]"
end)
TriggerbotAim = Triggerbot:new("Aim [" .. GetMenuVar("triggerbot_aim") .. "]", function()
if tonumber(GetMenuVar("triggerbot_aim")) == 1 then
SetMenuVar("triggerbot_aim", "0")
else
SetMenuVar("triggerbot_aim", "1")
end
TriggerbotAim.label = "Aim [" .. GetMenuVar("triggerbot_aim") .. "]"
end)
TriggerbotMouseFix = Triggerbot:new("Mouse Fix")
TriggerbotMouseFixEnabled = TriggerbotMouseFix:new("Enabled [" .. GetMenuVar("triggerbot_enabled") .. "]", function()
if tonumber(GetMenuVar("triggerbot_mousefix")) == 1 then
SetMenuVar("triggerbot_mousefix", "0")
else
SetMenuVar("triggerbot_mousefix", "1")
end
TriggerbotMouseFixEnabled.label = "Enabled [" .. GetMenuVar("triggerbot_enabled") .. "]"
end)
TriggerbotMouseFixSleep = TriggerbotMouseFix:new("Sleep [" .. GetMenuVar("triggerbot_mousefix_sleep") .. "]")
TriggerbotMouseFixSleep_Plus1 = TriggerbotMouseFixSleep:new("+1", function()
SetMenuVar("triggerbot_mousefix_sleep", GetMenuVar("triggerbot_mousefix_sleep") + 1)
TriggerbotMouseFixSleep.label = "Sleep [" .. GetMenuVar("triggerbot_mousefix_sleep") .. "]"
end)
TriggerbotMouseFixSleep_Plus10 = TriggerbotMouseFixSleep:new("+10", function()
SetMenuVar("triggerbot_mousefix_sleep", GetMenuVar("triggerbot_mousefix_sleep") + 10)
TriggerbotMouseFixSleep.label = "Sleep [" .. GetMenuVar("triggerbot_mousefix_sleep") .. "]"
end)
TriggerbotMouseFixSleep_Minus1 = TriggerbotMouseFixSleep:new("-1", function()
if GetMenuVar("triggerbot_mousefix_sleep") - 1 >= 1 then
SetMenuVar("triggerbot_mousefix_sleep", GetMenuVar("triggerbot_mousefix_sleep") - 1)
TriggerbotMouseFixSleep.label = "Sleep [" .. GetMenuVar("triggerbot_mousefix_sleep") .. "]"
end
end)
TriggerbotMouseFixSleep_Minus10 = TriggerbotMouseFixSleep:new("-10", function()
if GetMenuVar("triggerbot_mousefix_sleep") - 10 >= 1 then
SetMenuVar("triggerbot_mousefix_sleep", GetMenuVar("triggerbot_mousefix_sleep") - 10)
TriggerbotMouseFixSleep.label = "Sleep [" .. GetMenuVar("triggerbot_mousefix_sleep") .. "]"
end
end)
TriggerbotHold = Triggerbot:new("Hold [" .. GetMenuVar("triggerbot_hold") .. "]")
TriggerHold_Plus1 = TriggerbotHold:new("+1", function()
SetMenuVar("triggerbot_hold", GetMenuVar("triggerbot_hold") + 1)
TriggerbotHold.label = "Hold [" .. GetMenuVar("triggerbot_hold") .. "]"
end)
TriggerbotHold_Plus10 = TriggerbotHold:new("+10", function()
SetMenuVar("triggerbot_hold", GetMenuVar("triggerbot_hold") + 10)
TriggerbotHold.label = "Hold [" .. GetMenuVar("triggerbot_hold") .. "]"
end)
TriggerbotHold_Minus1 = TriggerbotHold:new("-1", function()
if GetMenuVar("triggerbot_hold") - 1 >= 1 then
SetMenuVar("triggerbot_hold", GetMenuVar("triggerbot_hold") - 1)
TriggerbotHold.label = "Hold [" .. GetMenuVar("triggerbot_hold") .. "]"
end
end)
TriggerbotHold_Minus10 = TriggerbotHold:new("-10", function()
if GetMenuVar("triggerbot_hold") - 10 >= 1 then
SetMenuVar("triggerbot_hold", GetMenuVar("triggerbot_hold") - 10)
TriggerbotHold.label = "Hold [" .. GetMenuVar("triggerbot_hold") .. "]"
end
end)
TriggerbotDelay = Triggerbot:new("Delay [" .. GetMenuVar("triggerbot_delay") .. "]")
TriggerbotDelay_Plus1 = TriggerbotDelay:new("+1", function()
SetMenuVar("triggerbot_delay", GetMenuVar("triggerbot_hold") + 1)
TriggerbotDelay.label = "Delay [" .. GetMenuVar("triggerbot_delay") .. "]"
end)
TriggerbotDelay_Plus10 = TriggerbotDelay:new("+10", function()
SetMenuVar("triggerbot_delay", GetMenuVar("triggerbot_delay") + 10)
TriggerbotDelay.label = "Delay [" .. GetMenuVar("triggerbot_delay") .. "]"
end)
TriggerbotDelay_Minus1 = TriggerbotDelay:new("-1", function()
if GetMenuVar("triggerbot_delay") - 1 >= 1 then
SetMenuVar("triggerbot_delay", GetMenuVar("triggerbot_delay") - 1)
TriggerbotDelay.label = "Delay [" .. GetMenuVar("triggerbot_delay") .. "]"
end
end)
TriggerbotDelay_Minus10 = TriggerbotDelay:new("-10", function()
if GetMenuVar("triggerbot_delay") - 10 >= 1 then
SetMenuVar("triggerbot_delay", GetMenuVar("triggerbot_delay") - 10)
TriggerbotDelay.label = "Delay [" .. GetMenuVar("triggerbot_delay") .. "]"
end
end)
TriggerbotMode = Triggerbot:new("Mode [" .. GetMenuVar("triggerbot_mode") .. "]")
TriggerbotMode0 = TriggerbotMode:new("0", function()
SetMenuVar("triggerbot_mode", "0")
TriggerbotMode.label = "Mode [" .. GetMenuVar("triggerbot_mode") .. "]"
end)
TriggerbotMode1 = TriggerbotMode:new("1", function()
SetMenuVar("triggerbot_mode", "1")
TriggerbotMode.label = "Mode [" .. GetMenuVar("triggerbot_mode") .. "]"
end)
TriggerbotMode2 = TriggerbotMode:new("2", function()
SetMenuVar("triggerbot_mode", "2")
TriggerbotMode.label = "Mode [" .. GetMenuVar("triggerbot_mode") .. "]"
end)
TriggerbotMode3 = TriggerbotMode:new("3", function()
SetMenuVar("triggerbot_mode", "3")
TriggerbotMode.label = "Mode [" .. GetMenuVar("triggerbot_mode") .. "]"
end)
TriggerbotMode4 = TriggerbotMode:new("4", function()
SetMenuVar("triggerbot_mode", "4")
TriggerbotMode.label = "Mode [" .. GetMenuVar("triggerbot_mode") .. "]"
end)
TriggerbotMouseFix = Triggerbot:new("Mouse Fix")
TriggerbotMouseFixEnabled = TriggerbotMouseFix:new("Enabled [" .. GetMenuVar("triggerbot_mousefix") .. "]", function()
if tonumber(GetMenuVar("triggerbot_mousefix")) == 1 then
SetMenuVar("triggerbot_mousefix", "0")
else
SetMenuVar("triggerbot_mousefix", "1")
end
TriggerbotMouseFixEnabled.label = "Enabled [" .. GetMenuVar("triggerbot_mousefix") .. "]"
end)
TriggerbotMouseFixSleep = TriggerbotMouseFix:new("Sleep [" .. GetMenuVar("triggerbot_mousefix_sleep") .. "]")
TriggerbotMouseFixSleep_Plus1 = TriggerbotMouseFixSleep:new("+1", function()
SetMenuVar("triggerbot_mousefix_sleep", GetMenuVar("triggerbot_mousefix_sleep") + 1)
TriggerbotMouseFixSleep.label = "Sleep [" .. GetMenuVar("triggerbot_mousefix_sleep") .. "]"
end)
TriggerbotMouseFixSleep_Plus10 = TriggerbotMouseFixSleep:new("+10", function()
SetMenuVar("triggerbot_mousefix_sleep", GetMenuVar("triggerbot_mousefix_sleep") + 10)
TriggerbotMouseFixSleep.label = "Sleep [" .. GetMenuVar("triggerbot_mousefix_sleep") .. "]"
end)
TriggerbotMouseFixSleep_Minus1 = TriggerbotMouseFixSleep:new("-1", function()
if GetMenuVar("triggerbot_mousefix_sleep") - 1 >= 1 then
SetMenuVar("triggerbot_mousefix_sleep", GetMenuVar("triggerbot_mousefix_sleep") - 1)
TriggerbotMouseFixSleep.label = "Sleep [" .. GetMenuVar("triggerbot_mousefix_sleep") .. "]"
end
end)
TriggerbotMouseFixSleep_Minus10 = TriggerbotMouseFixSleep:new("-10", function()
if GetMenuVar("triggerbot_mousefix_sleep") - 10 >= 1 then
SetMenuVar("triggerbot_mousefix_sleep", GetMenuVar("triggerbot_mousefix_sleep") - 10)
TriggerbotMouseFixSleep.label = "Sleep [" .. GetMenuVar("triggerbot_mousefix_sleep") .. "]"
end
end)
TriggerbotFov = Triggerbot:new("Triggerbot Fov [" .. GetMenuVar("triggerbot_fovX") .. ", " .. GetMenuVar("triggerbot_fovY") .. "]")
TriggerbotFovX = TriggerbotFov:new("X")
TriggerbotFovX_Plus1 = TriggerbotFovX:new("+1", function()
SetMenuVar("triggerbot_fovX", GetMenuVar("triggerbot_fovX") + 1)
TriggerbotFov.label = "Triggerbot Fov [" .. GetMenuVar("triggerbot_fovX") .. ", " .. GetMenuVar("triggerbot_fovY") .. "]"
end)
TriggerbotFovX_Plus10 = TriggerbotFovX:new("+10", function()
SetMenuVar("triggerbot_fovX", GetMenuVar("triggerbot_fovX") + 10)
TriggerbotFov.label = "Triggerbot Fov [" .. GetMenuVar("triggerbot_fovX") .. ", " .. GetMenuVar("triggerbot_fovY") .. "]"
end)
TriggerbotFovX_Minus1 = TriggerbotFovX:new("-1", function()
if GetMenuVar("triggerbot_fovX") - 1 >= 1 then
SetMenuVar("triggerbot_fovX", GetMenuVar("triggerbot_fovX") - 1)
TriggerbotFov.label = "Triggerbot Fov [" .. GetMenuVar("triggerbot_fovX") .. ", " .. GetMenuVar("triggerbot_fovY") .. "]"
end
end)
TriggerbotFovX_Minus10 = TriggerbotFovX:new("-10", function()
if GetMenuVar("triggerbot_fovX") - 10 >= 1 then
SetMenuVar("triggerboT_fovX", GetMenuVar("triggerbot_fovX") - 1)
TriggerbotFov.label = "Triggerbot Fov [" .. GetMenuVar("triggerbot_fovX") .. ", " .. GetMenuVar("triggerbot_fovY") .. "]"
end
end)
TriggerbotFovY = TriggerbotFov:new("Y")
TriggerbotFovY_Plus1 = TriggerbotFovY:new("+1", function()
SetMenuVar("triggerbot_fovY", GetMenuVar("triggerbot_fovY") + 1)
TriggerbotFov.label = "Triggerbot Fov [" .. GetMenuVar("triggerbot_fovX") .. ", " .. GetMenuVar("triggerbot_fovY") .. "]"
end)
TriggerbotFovY_Plus10 = TriggerbotFovY:new("+10", function()
SetMenuVar("triggerbot_fovY", GetMenuVar("triggerbot_fovY") + 10)
TriggerbotFov.label = "Triggerbot Fov [" .. GetMenuVar("triggerbot_fovX") .. ", " .. GetMenuVar("triggerbot_fovY") .. "]"
end)
TriggerbotFovY_Minus1 = TriggerbotFovY:new("-1", function()
if GetMenuVar("triggerbot_fovY") - 1 >= 1 then
SetMenuVar("triggerbot_fovY", GetMenuVar("triggerbot_fovY") - 1)
TriggerbotFov.label = "Triggerbot Fov [" .. GetMenuVar("triggerbot_fovX") .. ", " .. GetMenuVar("triggerbot_fovY") .. "]"
end
end)
TriggerbotFovY_Minus10 = TriggerbotFovY:new("-10", function()
if GetMenuVar("triggerbot_fovY") - 10 >= 1 then
SetMenuVar("triggerboT_fovY", GetMenuVar("triggerbot_fovY") - 1)
TriggerbotFov.label = "Triggerbot Fov [" .. GetMenuVar("triggerbot_fovX") .. ", " .. GetMenuVar("triggerbot_fovY") .. "]"
end
end)
TriggerbotKey = Triggerbot:new("Key [" .. GetStringForKey(GetMenuVar("triggerbot_key")) .. "]")
TriggerbotKey:new("Mouse1", function()
SetMenuVar("triggerbot_key", GetKeyForString("mouse1"))
TriggerbotKey.label = "Key [" .. GetStringForKey(GetMenuVar("triggerbot_key")) .. "]"
end)
TriggerbotKey:new("Mouse2", function()
SetMenuVar("triggerbot_key", GetKeyForString("mouse2"))
AimbotKey.label = "Key [" .. GetStringForKey(GetMenuVar("triggerbot_key")) .. "]"
end)
TriggerbotKey:new("Mouse3", function()
SetMenuVar("triggerbot_key", GetKeyForString("mouse3"))
TriggerbotKey.label = "Key [" .. GetStringForKey(GetMenuVar("triggerbot_key")) .. "]"
end)
TriggerbotKey:new("Mouse4", function()
SetMenuVar("triggerbot_key", GetKeyForString("mouse4"))
TriggerbotKey.label = "Key [" .. GetStringForKey(GetMenuVar("triggerbot_key")) .. "]"
end)
TriggerbotKey:new("Mouse5", function()
SetMenuVar("triggerbot_key", GetKeyForString("mouse5"))
TriggerbotKey.label = "Key [" .. GetStringForKey(GetMenuVar("triggerbot_key")) .. "]"
end)
TriggerbotKey:new("F", function()
SetMenuVar("triggerbot_key", GetKeyForString("F"))
TriggerbotKey.label = "Key [" .. GetStringForKey(GetMenuVar("triggerbot_key")) .. "]"
end)
TriggerbotKey:new("E", function()
SetMenuVar("triggerbot_key", GetKeyForString("E"))
TriggerbotKey.label = "Key [" .. GetStringForKey(GetMenuVar("triggerbot_key")) .. "]"
end)
-- Triggerbot Hitbox Pos
TriggerbotHitboxPos = Triggerbot:new("Hitbox Position [" .. SB.HitboxInfo[SB:Setting("triggerbot_hitbox_pos")] .. "]")
SB.MenuHitboxTable2 = {}
for k, v in pairs(SB.HitboxInfo) do
SB.MenuHitboxTable2[k] = TriggerbotHitboxPos:new(v, function()
SetMenuVar("triggerbot_hitbox_pos", k)
TriggerbotHitboxPos.label = "Hitbox Position [" .. SB.HitboxInfo[k] .. "]"
end)
end
-- [[Anti-Recoil]
AntiRecoil = Menu:new("Anti-Recoil")
AntiRecoilEnabled = AntiRecoil:new("Enabled [" .. GetMenuVar("antirecoil_enabled") .. "]", function()
if tonumber(GetMenuVar("antirecoil_enabled")) == 1 then
SetMenuVar("antirecoil_enabled", "0")
else
SetMenuVar("antirecoil_enabled", "1")
end
AntiRecoilEnabled.label = "Enabled [" .. GetMenuVar("antirecoil_enabled") .. "]"
end)
AntiRecoilAdd = AntiRecoil:new("Extra Add [" .. GetMenuVar("antirecoil_add") .. "]")
AntiRecoilAdd:new("+1", function()
SetMenuVar("antirecoil_add", GetMenuVar("antirecoil_add") + 1)
AntiRecoilAdd.label = "Extra Add [" .. GetMenuVar("antirecoil_add") .. "]"
end)
AntiRecoilAdd:new("+10", function()
SetMenuVar("antirecoil_add", GetMenuVar("antirecoil_add") + 10)
AntiRecoilAdd.label = "Extra Add [" .. GetMenuVar("antirecoil_add") .. "]"
end)
AntiRecoilAdd:new("-1", function()
if GetMenuVar("antirecoil_add") - 1 >= 0 then
SetMenuVar("antirecoil_add", GetMenuVar("antirecoil_add") - 1)
AntiRecoilAdd.label = "Extra Add [" .. GetMenuVar("antirecoil_add") .. "]"
end
end)
AntiRecoilAdd:new("-10", function()
if GetMenuVar("antirecoil_add") - 10 >= 0 then
SetMenuVar("antirecoil_add", GetMenuVar("antirecoil_add") - 10)
AntiRecoilAdd.label = "Extra Add [" .. GetMenuVar("antirecoil_add") .. "]"
end
end)
AntiRecoilKey = AntiRecoil:new("Key [" .. GetStringForKey(GetMenuVar("antirecoil_key")) .. "]")
AntiRecoilKey:new("Mouse1", function()
SetMenuVar("antirecoil_key", GetKeyForString("mouse1"))
AntiRecoilKey.label = "Key [" .. GetStringForKey(GetMenuVar("antirecoil_key")) .. "]"
end)
AntiRecoilKey:new("Mouse2", function()
SetMenuVar("antirecoil_key", GetKeyForString("mouse2"))
AntiRecoilKey.label = "Key [" .. GetStringForKey(GetMenuVar("antirecoil_key")) .. "]"
end)
AntiRecoilKey:new("Mouse3", function()
SetMenuVar("antirecoil_key", GetKeyForString("mouse3"))
AntiRecoilKey.label = "Key [" .. GetStringForKey(GetMenuVar("antirecoil_key")) .. "]"
end)
AntiRecoilKey:new("Mouse4", function()
SetMenuVar("antirecoil_key", GetKeyForString("mouse4"))
AntiRecoilKey.label = "Key [" .. GetStringForKey(GetMenuVar("antirecoil_key")) .. "]"
end)
AntiRecoilKey:new("Mouse5", function()
SetMenuVar("antirecoil_key", GetKeyForString("mouse5"))
AntiRecoilKey.label = "Key [" .. GetStringForKey(GetMenuVar("antirecoil_key")) .. "]"
end)
AntiRecoilKey:new("F", function()
SetMenuVar("antirecoil_key", GetKeyForString("F"))
AntiRecoilKey.label = "Key [" .. GetStringForKey(GetMenuVar("antirecoil_key")) .. "]"
end)
AntiRecoilKey:new("E", function()
SetMenuVar("antirecoil_key", GetKeyForString("E"))
AntiRecoilKey.label = "Key [" .. GetStringForKey(GetMenuVar("antirecoil_key")) .. "]"
end)
-- [Bunnyhop]
Bunnyhop = Menu:new("Bunnyhop")
BunnyhopEnabled = Bunnyhop:new("Enabled [" .. GetMenuVar("bunnyhop_enabled") .. "]", function()
if tonumber(GetMenuVar("bunnyhop_enabled")) == 1 then
SetMenuVar("bunnyhop_enabled", "0")
else
SetMenuVar("bunnyhop_enabled", "1")
end
BunnyhopEnabled.label = "Enabled [" .. GetMenuVar("bunnyhop_enabled") .. "]"
end)
BunnyhopKey = Bunnyhop:new("Key [" .. GetStringForKey(GetMenuVar("bunnyhop_key")) .. "]")
BunnyhopKey:new("Mouse1", function()
SetMenuVar("bunnyhop_key", GetKeyForString("mouse1"))
BunnyhopKey.label = "Key [" .. GetStringForKey(GetMenuVar("bunnyhop_key")) .. "]"
end)
BunnyhopKey:new("Mouse2", function()
SetMenuVar("bunnyhop_key", GetKeyForString("mouse2"))
BunnyhopKey.label = "Key [" .. GetStringForKey(GetMenuVar("bunnyhop_key")) .. "]"
end)
BunnyhopKey:new("Mouse3", function()
SetMenuVar("bunnyhop_key", GetKeyForString("mouse3"))
BunnyhopKey.label = "Key [" .. GetStringForKey(GetMenuVar("bunnyhop_key")) .. "]"
end)
BunnyhopKey:new("Mouse4", function()
SetMenuVar("bunnyhop_key", GetKeyForString("mouse4"))
BunnyhopKey.label = "Key [" .. GetStringForKey(GetMenuVar("bunnyhop_key")) .. "]"
end)
BunnyhopKey:new("Mouse5", function()
SetMenuVar("bunnyhop_key", GetKeyForString("mouse5"))
BunnyhopKey.label = "Key [" .. GetStringForKey(GetMenuVar("bunnyhop_key")) .. "]"
end)
BunnyhopKey:new("F", function()
SetMenuVar("bunnyhop_key", GetKeyForString("F"))
BunnyhopKey.label = "Key [" .. GetStringForKey(GetMenuVar("bunnyhop_key")) .. "]"
end)
BunnyhopKey:new("E", function()
SetMenuVar("bunnyhop_key", GetKeyForString("E"))
BunnyhopKey.label = "Key [" .. GetStringForKey(GetMenuVar("bunnyhop_key")) .. "]"
end)
-- [Speedhack]
Speedhack = Menu:new("Speedhack")
SpeedhackEnabled = Speedhack:new("Enabled [" .. GetMenuVar("speedhack_enabled") .. "]", function()
if tonumber(GetMenuVar("speedhack_enabled")) == 1 then
SetMenuVar("speedhack_enabled", "0")
else
SetMenuVar("speedhack_enabled", "1")
end
SpeedhackEnabled.label = "Enabled [" .. GetMenuVar("speedhack_enabled") .. "]"
end)
SpeedhackSpeed = Speedhack:new("Speed [" .. GetMenuVar("speedhack_speed") .. "]")
SpeedhackSpeed_Plus1 = SpeedhackSpeed:new("+1", function()
SetMenuVar("speedhack_speed", GetMenuVar("speedhack_speed") + 1)
SpeedhackSpeed.label = "Speed [" .. GetMenuVar("speedhack_speed") .. "]"
end)
SpeedhackSpeed_Plus10 = SpeedhackSpeed:new("+10", function()
SetMenuVar("speedhack_speed", GetMenuVar("speedhack_speed") + 10)
SpeedhackSpeed.label = "Speed [" .. GetMenuVar("speedhack_speed") .. "]"
end)
SpeedhackSpeed_Minus1 = SpeedhackSpeed:new("-1", function()
if GetMenuVar("speedhack_speed") - 1 >= 1 then
SetMenuVar("speedhack_speed", GetMenuVar("speedhack_speed") - 1)
SpeedhackSpeed.label = "Speed [" .. GetMenuVar("speedhack_speed") .. "]"
end
end)
SpeedhackSpeed_Minus10 = SpeedhackSpeed:new("-10", function()
if GetMenuVar("speedhack_speed") - 10 >= 1 then
SetMenuVar("speedhack_speed", GetMenuVar("speedhack_speed") - 10)
SpeedhackSpeed.label = "Speed [" .. GetMenuVar("speedhack_speed") .. "]"
end
end)
SpeedhackKey = Speedhack:new("Key [" .. GetStringForKey(GetMenuVar("speedhack_key")) .. "]")
SpeedhackKey:new("Mouse1", function()
SetMenuVar("speedhack_key", GetKeyForString("mouse1"))
SpeedhackKey.label = "Key [" .. GetStringForKey(GetMenuVar("speedhack_key")) .. "]"
end)
SpeedhackKey:new("Mouse2", function()
SetMenuVar("speedhack_key", GetKeyForString("mouse2"))
SpeedhackKey.label = "Key [" .. GetStringForKey(GetMenuVar("speedhack_key")) .. "]"
end)
SpeedhackKey:new("Mouse3", function()
SetMenuVar("speedhack_key", GetKeyForString("mouse3"))
SpeedhackKey.label = "Key [" .. GetStringForKey(GetMenuVar("speedhack_key")) .. "]"
end)
SpeedhackKey:new("Mouse4", function()
SetMenuVar("speedhack_key", GetKeyForString("mouse4"))
SpeedhackKey.label = "Key [" .. GetStringForKey(GetMenuVar("speedhack_key")) .. "]"
end)
SpeedhackKey:new("Mouse5", function()
SetMenuVar("speedhack_key", GetKeyForString("mouse5"))
SpeedhackKey.label = "Key [" .. GetStringForKey(GetMenuVar("speedhack_key")) .. "]"
end)
SpeedhackKey:new("F", function()
SetMenuVar("speedhack_key", GetKeyForString("F"))
SpeedhackKey.label = "Key [" .. GetStringForKey(GetMenuVar("speedhack_key")) .. "]"
end)
SpeedhackKey:new("E", function()
SetMenuVar("speedhack_key", GetKeyForString("E"))
SpeedhackKey.label = "Key [" .. GetStringForKey(GetMenuVar("speedhack_key")) .. "]"
end)
-- [Miscellaneous]
Misc = Menu:new("Miscellaneous")
AntiSmoke = Misc:new("Anti-Smoke [" .. GetMenuVar("anti_smoke") .. "]", function()
if tonumber(GetMenuVar("anti_smoke")) == 1 then
SetMenuVar("anti_smoke", "0")
else
SetMenuVar("anti_smoke", "1")
end
AntiSmoke.label = "Anti-Smoke [" .. GetMenuVar("anti_smoke") .. "]"
end)
AntiFlash = Misc:new("Anti-Flash [" .. GetMenuVar("anti_flash") .. "]", function()
if tonumber(GetMenuVar("anti_flash")) == 1 then
SetMenuVar("anti_flash", "0")
else
SetMenuVar("anti_flash", "1")
end
AntiFlash.label = "Anti-Flash [" .. GetMenuVar("anti_flash") .. "]"
end)
NoHands = Misc:new("No-Hands [" .. GetMenuVar("no_hands") .. "]", function()
if tonumber(GetMenuVar("no_hands")) == 1 then
SetMenuVar("no_hands", "0")
else
SetMenuVar("no_hands", "1")
end
NoHands.label = "No-Hands [" .. GetMenuVar("no_hands") .. "]"
end)
Chams = Misc:new("Player-Chams [" .. GetMenuVar("player_chams") .. "]", function()
if tonumber(GetMenuVar("player_chams")) == 1 then
SetMenuVar("player_chams", "0")
else
SetMenuVar("player_chams", "1")
end
Chams.label = "Player-Chams [" .. GetMenuVar("player_chams") .. "]"
end)
EnemyDown = Misc:new("Enemy-Down [" .. GetMenuVar("enemy_down") .. "]", function()
if tonumber(GetMenuVar("enemy_down")) == 1 then
SetMenuVar("enemy_down", "0")
else
SetMenuVar("enemy_down", "1")
end
EnemyDown.label = "Enemy-Down [" .. GetMenuVar("enemy_down") .. "]"
end)
Exit = Menu:new("Exit", function() rawcmd("menu close\n") end)
end
-- ###################################
-- ####### End #######
-- ###################################
do
local sv_pure = GetPure()
if sv_pure == "0" then
if SB:Setting("no_hands") then SB:NoHands("on", false) end
if SB:Setting("player_chams") then SB:PlayerChams("on", false) end
if SB:Setting("anti_flash") then SB:AntiFlash("on", false) end
else
print("sv_pure is set to " .. sv_pure .. ", can't use materials!\n")
end
end
rawcmd("cl_minmodels 1\n")
rawcmd("bind downarrow \"menu down\"\n")
rawcmd("bind uparrow \"menu up\"\n")
rawcmd("bind enter \"menu select\"\n")
if getCVar("con_nprint_bgalpha") ~= "0" then setCVar("con_nprint_bgalpha", "0") end
SB:AddClientConVar("close", function() SB:EndLoop() end)
SB:Log("")
SB:Log("")
SB:Log("%s Version %s loaded @ %s - %s", SB.Information.Name, SB.Information.Version, os.date("%x"), os.date("%X"))
SB:Log("")
SB:Log("")
if not SB.Information.PrintLogInfo then print("Successfully Loaded!\n") end
SB:Log("Logging: " .. (SB.Information.Log and "Enabled" or "Disabled") .. "\n")
SB:Log("Print Login Info: " .. (SB.Information.PrintLogInfo and "Yes" or "No") .. "\n")
SB:Log("")
SB:StartLoop()