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()