Thread: HackBETA

Results 1 to 13 of 13
  1. #1
    Mr. Snuffalupagus's Avatar
    Join Date
    Dec 2011
    Gender
    male
    Location
    Too stoned to remember.
    Posts
    18
    Reputation
    10
    Thanks
    39
    My Mood
    Asleep

    Post HackBETA

    This isn't even a release.
    This is a cleaned and organized version of AHack v1.5.0 made by Atheon.
    To me, AHack is the only respectable hack out there.
    There are better hacks I know, but this one is my favourite as it is the easiest to control.
    It is also easier to configure so that spectators won't think you're hacking.

    Moved some modules around
    Added load checkers
    Removed the double slant comments
    Removed the localization to improve speed
    Set vars for propkilling

    Essentially, this will be easier to edit when I find the time to do something with it.

    If you actually want to use this, the command to open the menu in in the lua.
    If you can't find the it, you shouldn't be on a thread that says "Source Code."
    Especially if you don't know how to use this, you shouldn't be here.

    Since I get an error when trying to add the screenies, here are the image names.
    Hosted on imgur and they are both png files.

    PkYV6rt
    L93ap7W

    Code:
    local HackB = {}
    HackB.Active = CreateClientConVar("HackB_Active", 1, true, false)
    HackB.Version = "1.5.0"
    HackB.Ply = LocalPlayer()
    HackB.TTT = (GAMEMODE and GAMEMODE.Name and string.find(GAMEMODE.Name, "Terror") and true) or false
    if HackB.TTT then HackB.TTTCORPSE = CORPSE end
    HackB.DarkRP = (GAMEMODE and GAMEMODE.Name and string.find(GAMEMODE.Name, "DarkRP") and true) or false
    
    HackB.Message = function(...)
            chat.AddText(Color(50, 255, 100), "HackBETA ", ...)
    end
    
    local propkill = {}
    propkill.Message = function(...)
            chat.AddText(Color(50, 255, 100), "Propkill Help ", ...)
    end
    
    RunConsoleCommand("physgun_wheelspeed" , 999999)
    RunConsoleCommand("cl_interp" , 0)
    RunConsoleCommand("cl_interp_ratio" , 0)
    RunConsoleCommand("cl_cmdrate" , 200)
    RunConsoleCommand("cl_updaterate" , 200)
    RunConsoleCommand("rate" , 51200)
    
    propkill.Message("Loaded")
    
    HackB.GetColorFromString = function(words)
            if type(words) != "string" then return Color(255, 255, 255, 255) end
            words = "return "..words
            local func = CompileString(words, "GettingColors", true)
            local good, color = pcall(func)
            if good and type(color) == "table" and color.r and color.g and color.b and color.a then
                    return color
            else
                    return Color(255, 255, 255, 255)
            end
    end
    
    HackB.Chars = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"}
    HackB.RandomName = function(amount)
            local toReturn = ""
            local amount = amount or 10
            for i = 1, amount do
                    if math.random(0, 1) == 0 then
                            toReturn = toReturn..string.lower(table.Random(HackB.Chars))
                    else
                            toReturn = toReturn..table.Random(HackB.Chars)
                    end
            end
            return toReturn
    end
    
    surface.CreateFont("TitleFont", {font = "Arial", size = 20})
    surface.CreateFont("CatagoryHeader", {font = "CloseCaption_Normal", size = 34})
    surface.CreateFont("CatagoryText", {font = "CloseCaption_Normal", size = 28})
    surface.CreateFont("ESPFont", {font = "CloseCaption_Normal", weight = 1000, size = 15})
    
    local varc = {}
    varc.Message = function(...)
            chat.AddText(Color(50, 255, 100), "Variables ", ...)
    end
    
    
    HackB.Aimbot = {}
    HackB.Aimbot.CurTarget = nil
    HackB.Aimbot.Vars = {}
    HackB.Aimbot.Vars["Active"] = CreateClientConVar("HackB_Aimbot_Active", 0, true, false)
    HackB.Aimbot.Vars["RandomBones"] = CreateClientConVar("HackB_Aimbot_RandomBones", 0, true, false)
    HackB.Aimbot.Vars["AttackNPCs"] = CreateClientConVar("HackB_Aimbot_AttackNPCs", 0, true, false)
    HackB.Aimbot.Vars["AttackPlayers"] = CreateClientConVar("HackB_Aimbot_AttackPlayers", 0, true, false)
    HackB.Aimbot.Vars["Prediction"] = CreateClientConVar("HackB_Aimbot_Prediction", 0, true, false)
    HackB.Aimbot.Vars["AimOnKey"] = CreateClientConVar("HackB_Aimbot_AimOnKey", 0, true, false)
    HackB.Aimbot.Vars["AimOnKey_Key"] = CreateClientConVar("HackB_Aimbot_AimOnKey_Key", "MOUSE_LEFT", true, false)
    HackB.Aimbot.Vars["MaxAngle"] = CreateClientConVar("HackB_Aimbot_MaxAngle", 180, true, false)
    HackB.Aimbot.Vars["Preferance"] = CreateClientConVar("HackB_Aimbot_Preferance", "Distance", true, false)
    HackB.Aimbot.Vars["AntiSnap"] = CreateClientConVar("HackB_Aimbot_AntiSnap", 0, true, false)
    HackB.Aimbot.Vars["AntiSnapSpeed"] = CreateClientConVar("HackB_Aimbot_AntiSnapSpeed", 4, true, false)
    HackB.Aimbot.Vars["AutoShoot"] = CreateClientConVar("HackB_Aimbot_AutoShoot", 0, true, false)
    HackB.Aimbot.Vars["PanicMode"] = CreateClientConVar("HackB_Aimbot_PanicMode", 0, true, false)
    HackB.Aimbot.Vars["IgnoreTeam"] = CreateClientConVar("HackB_Aimbot_IgnoreTeam", 0, true, false)
    
    HackB.Friends = {}
    HackB.Friends.List = {} //The steamIDs of everyone on your friends list
    HackB.Friends.Vars = {}
    HackB.Friends.Vars["Active"] = CreateClientConVar("HackB_Friends_Active", 0, true, false)
    HackB.Friends.Vars["Reverse"] = CreateClientConVar("HackB_Friends_Reverse", 0, true, false)
    
    HackB.ESP = {}
    HackB.ESP.Vars = {}
    HackB.ESP.Vars["Active"] = CreateClientConVar("HackB_ESP_Active", 0, true, false)
    HackB.ESP.Vars["Players"] = CreateClientConVar("HackB_ESP_Players", 0, true, false)
    HackB.ESP.Vars["NPCs"] = CreateClientConVar("HackB_ESP_NPCs", 0, true, false)
    HackB.ESP.Vars["Name"] = CreateClientConVar("HackB_ESP_Name", "Off", true, false)
    HackB.ESP.Vars["Weapons"] = CreateClientConVar("HackB_ESP_Weapons", "Off", true, false)
    HackB.ESP.Vars["Distance"] = CreateClientConVar("HackB_ESP_Distance", "Off", true, false)
    HackB.ESP.Vars["Health"] = CreateClientConVar("HackB_ESP_Health", "Off", true, false)
    HackB.ESP.Vars["MaxDistance"] = CreateClientConVar("HackB_ESP_MaxDistance", 0, true, false)
    HackB.ESP.Vars["Box"] = CreateClientConVar("HackB_ESP_Box", 0, true, false)
    HackB.ESP.Vars["ShowTraitors"] = CreateClientConVar("HackB_ESP_ShowTraitors", "Off", true, false)
    HackB.ESP.Vars["Bodies"] = CreateClientConVar("HackB_ESP_Bodies", 0, true, false)
    HackB.ESP.Vars["Radar"] = CreateClientConVar("HackB_ESP_Radar", 0, true, false)
    HackB.ESP.Vars["RadarScale"] = CreateClientConVar("HackB_ESP_RadarScale", 20, true, false)
    HackB.ESP.Vars["TeamBased"] = CreateClientConVar("HackB_ESP_TeamBased", 0, true, false)
    
    HackB.Chams = {}
    HackB.Chams.Mat = CreateMaterial(HackB.RandomName(math.random(10,15)), "VertexLitGeneric", { ["$basetexture"] = "models/debug/debugwhite", ["$model"] = 1, ["$ignorez"] = 1 })
    HackB.Chams.Vars = {}
    HackB.Chams.Vars["Active"] = CreateClientConVar("HackB_Chams_Active", 0, true, false)
    HackB.Chams.Vars["Players"] = CreateClientConVar("HackB_Chams_Players", 0, true, false)
    HackB.Chams.Vars["NPCs"] = CreateClientConVar("HackB_Chams_NPCs", 0, true, false)
    HackB.Chams.Vars["Weapons"] = CreateClientConVar("HackB_Chams_Weapons", 0, true, false)
    HackB.Chams.Vars["MaxDistance"] = CreateClientConVar("HackB_Chams_MaxDistance", 0, true, false)
    HackB.Chams.Vars["Bodies"] = CreateClientConVar("HackB_Chams_Bodies", 0, true, false)
    HackB.Chams.Vars["TeamBased"] = CreateClientConVar("HackB_Chams_TeamBased", 0, true, false)
    
    HackB.Entities = {}
    HackB.Entities.List = {} //The class namse of all the entities
    HackB.Entities.Vars = {}
    HackB.Entities.Vars["Active"] = CreateClientConVar("HackB_Entities_Active", 0, true, false)
    
    HackB.Misc = {}
    HackB.Misc.Vars = {}
    HackB.Misc.Vars["ShowAdmins"] = CreateClientConVar("HackB_Misc_ShowAdmins", 0, true, false)
    HackB.Misc.Vars["Crosshair"] = CreateClientConVar("HackB_Misc_Cross", 0, true, false)
    HackB.Misc.Vars["CrosshairSize"] = CreateClientConVar("HackB_Misc_CrossSize", 50, true, false)
    HackB.Misc.Vars["NoRecoil"] = CreateClientConVar("HackB_Misc_NoRecoil", 0, true, false)
    HackB.Misc.Vars["ShowSpectators"] = CreateClientConVar("HackB_Misc_ShowSpectators", 0, true, false)
    HackB.Misc.Vars["BunnyHop"] = CreateClientConVar("HackB_Misc_BunnyHop", 0, true, false)
    HackB.Misc.Vars["BunnyHop_Key"] = CreateClientConVar("HackB_Misc_BunnyHop_Key", "KEY_SPACE", true, false)
    HackB.Misc.Vars["AutoReload"] = CreateClientConVar("HackB_Misc_AutoReload", 0, true, false)
    HackB.Misc.Vars["AutoPistol"] = CreateClientConVar("HackB_Misc_AutoPistol", 0, true, false)
    HackB.Misc.Vars["BuyHealth"] = CreateClientConVar("HackB_Misc_BuyHealth", 0, true, false)
    HackB.Misc.Vars["BuyHealth_Minimum"] = CreateClientConVar("HackB_Misc_BuyHealth_Minimum", 80, true, false)
    HackB.Misc.Vars["TraitorFinder"] = CreateClientConVar("HackB_Misc_TraitorFinder", 0, true, false)
    HackB.Misc.Vars["Deaths"] = CreateClientConVar("HackB_Misc_Deaths", 0, true, false)
    HackB.Misc.Vars["Sounds"] = CreateClientConVar("HackB_Misc_Sounds", 0, true, false)
    
    HackB.Style = {}
    HackB.Style.Vars = {}
    HackB.Style.Vars["BoundingBox"] = {}
    HackB.Style.Vars["BoundingBox"].var = CreateClientConVar("HackB_Style_BoundingBox", "Color(255, 0, 0, 255)", true, false)
    HackB.Style.Vars["BoundingBox"].color = HackB.GetColorFromString(HackB.Style.Vars["BoundingBox"].var:GetString())
    HackB.Style.Vars["ESPText"] = {}
    HackB.Style.Vars["ESPText"].var = CreateClientConVar("HackB_Style_ESPText", "Color(255, 255, 255, 255)", true, false)
    HackB.Style.Vars["ESPText"].color = HackB.GetColorFromString(HackB.Style.Vars["ESPText"].var:GetString())
    HackB.Style.Vars["Crosshair"] = {}
    HackB.Style.Vars["Crosshair"].var = CreateClientConVar("HackB_Style_Cross", "Color(255, 255, 255, 255)", true, false)
    HackB.Style.Vars["Crosshair"].color = HackB.GetColorFromString(HackB.Style.Vars["Crosshair"].var:GetString())
    HackB.Style.Vars["BodyText"] = {}
    HackB.Style.Vars["BodyText"].var = CreateClientConVar("HackB_Style_BodyText", "Color(255, 255, 255, 255)", true, false)
    HackB.Style.Vars["BodyText"].color = HackB.GetColorFromString(HackB.Style.Vars["BodyText"].var:GetString())
    HackB.Style.Vars["Chams"] = {}
    HackB.Style.Vars["Chams"].var = CreateClientConVar("HackB_Style_Chams", "Color(0, 255, 0, 255)", true, false)
    HackB.Style.Vars["Chams"].color = HackB.GetColorFromString(HackB.Style.Vars["Chams"].var:GetString())
    HackB.Style.Vars["BodyChams"] = {}
    HackB.Style.Vars["BodyChams"].var = CreateClientConVar("HackB_Style_BodyChams", "Color(0, 255, 0, 255)", true, false)
    HackB.Style.Vars["BodyChams"].color = HackB.GetColorFromString(HackB.Style.Vars["BodyChams"].var:GetString())
    
    varc.Message("Set")
    
    local save = {}
    save.Message = function(...)
            chat.AddText(Color(50, 255, 100), "Save ", ...)
    end
    
    HackB.SavedData = CreateClientConVar("HackB_SaveData", HackB.RandomName(math.random(10, 15)), true, false)
    local frnd = {}
    	frnd.Message = function(...)
            chat.AddText(Color(50, 255, 100), "Friends List ", ...)
    	end
    HackB.SaveData = function()
            file.Write(HackB.SavedData:GetString()..".txt", util.TableToJSON(HackB.Friends.List))
            file.Append(HackB.SavedData:GetString()..".txt", "\n")
            file.Append(HackB.SavedData:GetString()..".txt", util.TableToJSON(HackB.Entities.List))
    end
    if file.Exists(HackB.SavedData:GetString()..".txt", "DATA") then
            local info = string.Explode("\n", file.Read(HackB.SavedData:GetString()..".txt", "DATA"))
            if type(info) == "table" and info[1] and info[2] then
                    HackB.Friends.List = util.JSONToTable(info[1])
                    HackB.Entities.List = util.JSONToTable(info[2])
            end
    end
    
    save.Message("Added")
    
    HackB.BoolToInt = function(bool)
            if bool then
                    return 1
            else
                    return 0
            end
    end
    
    local keys = {}
    keys.Message = function(...)
            chat.AddText(Color(50, 255, 100), "Keys ", ...)
    end
    
    HackB.Keys = {
    [0] = "KEY_NONE",
    [1] = "KEY_0",
    [2] = "KEY_1",
    [3] = "KEY_2",
    [4] = "KEY_3",
    [5] = "KEY_4",
    [6] = "KEY_5",
    [7] = "KEY_6",
    [8] = "KEY_7",
    [9] = "KEY_8",
    [10] = "KEY_9",
    [11] = "KEY_A",
    [12] = "KEY_B",
    [13] = "KEY_C",
    [14] = "KEY_D",
    [15] = "KEY_E",
    [16] = "KEY_F",
    [17] = "KEY_G",
    [18] = "KEY_H",
    [19] = "KEY_I",
    [20] = "KEY_J",
    [21] = "KEY_K",
    [22] = "KEY_L",
    [23] = "KEY_M",
    [24] = "KEY_N",
    [25] = "KEY_O",
    [26] = "KEY_P",
    [27] = "KEY_Q",
    [28] = "KEY_R",
    [29] = "KEY_S",
    [30] = "KEY_T",
    [31] = "KEY_U",
    [32] = "KEY_V",
    [33] = "KEY_W",
    [34] = "KEY_X",
    [35] = "KEY_Y",
    [36] = "KEY_Z",
    [37] = "KEY_PAD_0",
    [38] = "KEY_PAD_1",
    [39] = "KEY_PAD_2",
    [40] = "KEY_PAD_3",
    [41] = "KEY_PAD_4",
    [42] = "KEY_PAD_5",
    [43] = "KEY_PAD_6",
    [44] = "KEY_PAD_7",
    [45] = "KEY_PAD_8",
    [46] = "KEY_PAD_9",
    [47] = "KEY_PAD_DIVIDE",
    [48] = "KEY_PAD_MULTIPLY",
    [49] = "KEY_PAD_MINUS",
    [50] = "KEY_PAD_PLUS",
    [51] = "KEY_PAD_ENTER",
    [52] = "KEY_PAD_DECIMAL",
    [53] = "KEY_LBRACKET",
    [54] = "KEY_RBRACKET",
    [55] = "KEY_SEMICOLON",
    [56] = "KEY_APOSTROPHE",
    [57] = "KEY_BACKQUOTE",
    [58] = "KEY_COMMA",
    [59] = "KEY_PERIOD",
    [60] = "KEY_SLASH",
    [61] = "KEY_BACKSLASH",
    [62] = "KEY_MINUS",
    [63] = "KEY_EQUAL",
    [64] = "KEY_ENTER",
    [65] = "KEY_SPACE",
    [66] = "KEY_BACKSPACE",
    [67] = "KEY_TAB",
    [68] = "KEY_CAPSLOCK",
    [69] = "KEY_NUMLOCK",
    [70] = "KEY_ESCAPE",
    [71] = "KEY_SCROLLLOCK",
    [72] = "KEY_INSERT",
    [73] = "KEY_DELETE",
    [74] = "KEY_HOME",
    [75] = "KEY_END",
    [76] = "KEY_PAGEUP",
    [77] = "KEY_PAGEDOWN",
    [78] = "KEY_BREAK",
    [79] = "KEY_LSHIFT",
    [80] = "KEY_RSHIFT",
    [81] = "KEY_LALT",
    [82] = "KEY_RALT",
    [83] = "KEY_LCONTROL",
    [84] = "KEY_RCONTROL",
    [85] = "KEY_LWIN",
    [86] = "KEY_RWIN",
    [87] = "KEY_APP",
    [88] = "KEY_UP",
    [89] = "KEY_LEFT",
    [90] = "KEY_DOWN",
    [91] = "KEY_RIGHT",
    [92] = "KEY_F1",
    [93] = "KEY_F2",
    [94] = "KEY_F3",
    [95] = "KEY_F4",
    [96] = "KEY_F5",
    [97] = "KEY_F6",
    [98] = "KEY_F7",
    [99] = "KEY_F8",
    [100] = "KEY_F9",
    [101] = "KEY_F10",
    [102] = "KEY_F11",
    [103] = "KEY_F12",
    [104] = "KEY_CAPSLOCKTOGGLE",
    [105] = "KEY_NUMLOCKTOGGLE",
    [106] = "KEY_SCROLLLOCKTOGGLE",
    [107] = "KEY_XBUTTON_UP",
    [108] = "KEY_XBUTTON_DOWN",
    [109] = "KEY_XBUTTON_LEFT",
    [110] = "KEY_XBUTTON_RIGHT",
    [111] = "KEY_XBUTTON_START",
    [112] = "KEY_XBUTTON_BACK",
    [113] = "KEY_XBUTTON_STICK1",
    [114] = "KEY_XBUTTON_STICK2",
    [115] = "KEY_XBUTTON_A",
    [116] = "KEY_XBUTTON_B",
    [117] = "KEY_XBUTTON_X",
    [118] = "KEY_XBUTTON_Y",
    [119] = "KEY_XBUTTON_BLACK",
    [120] = "KEY_XBUTTON_WHITE",
    [121] = "KEY_XBUTTON_LTRIGGER",
    [122] = "KEY_XBUTTON_RTRIGGER",
    [123] = "KEY_XSTICK1_UP",
    [124] = "KEY_XSTICK1_DOWN",
    [125] = "KEY_XSTICK1_LEFT",
    [126] = "KEY_XSTICK1_RIGHT",
    [127] = "KEY_XSTICK2_UP",
    [128] = "KEY_XSTICK2_DOWN",
    [129] = "KEY_XSTICK2_LEFT",
    [130] = "KEY_XSTICK2_RIGHT"
    }
    HackB.MouseKeys = {
    [107] = "MOUSE_LEFT",
    [108] = "MOUSE_RIGHT",
    [109] = "MOUSE_MIDDLE",
    [110] = "MOUSE_4",
    [111] = "MOUSE_5"
    }
    
    varc.Message("Found")
    
    local chatr = {}
    chatr.Message = function(...)
            chat.AddText(Color(50, 255, 100), "Chat Rules ", ...)
    end
    
    HackB.InChat = false
    hook.Add("StartChat", HackB.RandomName(math.random(10, 15)), function()
            HackB.InChat = true
    end)
    hook.Add("FinishChat", HackB.RandomName(math.random(10, 15)), function()
            HackB.InChat = false
    end)
    
    chatr.Message("Added")
    
    HackB.KeyPressed = function(key)
            if HackB.InChat then return false end
           
            for k = 107, 111 do
                    if key == HackB.MouseKeys[k] then
                            if input.IsMouseDown(k) then
                                    return true
                            else
                                    return false
                            end
                    end
            end
           
            for k = 0, 130 do
                    if key == HackB.Keys[k] then
                            if input.IsKeyDown(k) then
                                    return true
                            else
                                    return false
                            end
                    end
            end
           
            return false
    end
    
    local bones = {}
    bones.Message = function(...)
            chat.AddText(Color(50, 255, 100), "Bones ", ...)
    end
    
    HackB.Bones = {
    "ValveBiped.Bip01_Head1",
    "ValveBiped.Bip01_Neck1",
    "ValveBiped.Bip01_Spine4",
    "ValveBiped.Bip01_Spine2",
    "ValveBiped.Bip01_Spine1",
    "ValveBiped.Bip01_Spine",
    "ValveBiped.Bip01_R_UpperArm",
    "ValveBiped.Bip01_R_Forearm",
    "ValveBiped.Bip01_R_Hand",
    "ValveBiped.Bip01_L_UpperArm",
    "ValveBiped.Bip01_L_Forearm",
    "ValveBiped.Bip01_L_Hand",
    "ValveBiped.Bip01_R_Thigh",
    "ValveBiped.Bip01_R_Calf",
    "ValveBiped.Bip01_R_Foot",
    "ValveBiped.Bip01_R_Toe0",
    "ValveBiped.Bip01_L_Thigh",
    "ValveBiped.Bip01_L_Calf",
    "ValveBiped.Bip01_L_Foot",
    "ValveBiped.Bip01_L_Toe0"
    }
    HackB.RandomBones = {
    "ValveBiped.Bip01_Head1",
    "ValveBiped.Bip01_Neck1",
    "ValveBiped.Bip01_Spine4",
    "ValveBiped.Bip01_Spine2",
    "ValveBiped.Bip01_R_UpperArm",
    "ValveBiped.Bip01_L_UpperArm"
    }
    
    bones.Message("Found")
    
    HackB.GetRandomBones = function()
            local temp = {}
            local function GetBones() //Ahh recursion, i love you.
                    if #HackB.RandomBones > 0 then
                            local random = math.random(1, #HackB.RandomBones)
                            table.insert(temp, HackB.RandomBones[random])
                            table.remove(HackB.RandomBones, random)
                            GetBones()
                    else
                            table.insert(HackB.RandomBones, "ValveBiped.Bip01_Head1")
                            table.insert(HackB.RandomBones, "ValveBiped.Bip01_Neck1")
                            table.insert(HackB.RandomBones, "ValveBiped.Bip01_Spine4")
                            table.insert(HackB.RandomBones, "ValveBiped.Bip01_Spine2")
                            table.insert(HackB.RandomBones, "ValveBiped.Bip01_R_UpperArm")
                            table.insert(HackB.RandomBones, "ValveBiped.Bip01_L_UpperArm")
                    end
            end
            GetBones()
            return temp
    end
    
    HackB.SpotIsVisible = function(pos, ent)
            ent = ent or HackB.Aimbot.CurTarget
            local tracedata = {}
            tracedata.start = HackB.Ply:GetShootPos()
            tracedata.endpos = pos
            tracedata.filter = {HackB.Ply, ent}
           
            local trace = util.TraceLine(tracedata)
            if trace.HitPos:Distance(pos) < 0.005 then
                    return true
            else
                    return false
            end
    end
    HackB.CanSee = function(ent)
            for k = 1, #HackB.Bones do
                    local v = HackB.Bones[k]
                    local bone = ent:LookupBone(v)
                    if bone != nil then
                            local pos, ang = ent:GetBonePosition(bone)
                            if HackB.SpotIsVisible(pos, ent) then
                                    return true
                            end
                    end
            end
            return false
    end
    HackB.GetTarget = function()
            if HackB.Aimbot.Vars["AttackNPCs"]:GetBool() or HackB.Aimbot.Vars["AttackPlayers"]:GetBool() then
                    local targets = {}
                    local everything = ents.GetAll()
                    for k = 1, #everything do
                            local v = everything[k]
                            if HackB.Aimbot.Vars["AttackNPCs"]:GetBool() and v:IsNPC() then
                                    if HackB.CanSee(v) then
                                            table.insert(targets, {["Target"] = v, ["Pos"] = v:LocalToWorld(v:OBBCenter())})
                                    end
                            elseif HackB.Aimbot.Vars["AttackPlayers"]:GetBool() and v:IsPlayer() and v != HackB.Ply then
                                    if HackB.CanSee(v) then
                                            table.insert(targets, {["Target"] = v, ["Pos"] = v:LocalToWorld(v:OBBCenter())})
                                    end
                            end
                    end
                   
                    for k,v in SortedPairs(targets, true) do //It will already be sorted so this shouldn't be too resource heavy, the main point of this is to loop through the table backwards
                            local v = v["Target"]
                            local shouldremove = false
                            if HackB.Aimbot.Vars["IgnoreTeam"]:GetBool() and v:IsPlayer() then
                                    if HackB.TTT then
                                            if HackB.Ply:GetRole() == 1 and v:GetRole() == 1 then
                                                    shouldremove = true
                                            end
                                                   
                                            if HackB.Ply:GetRole() != 1 and not table.HasValue(HackB.Traitors, v) then
                                                    shouldremove = true
                                            end
                                    else
                                            if v:Team() == HackB.Ply:Team() then
                                                    shouldremove = true
                                            end
                                    end
                            end
                           
                            if HackB.Friends.Vars["Active"]:GetBool() then
                                    if HackB.Friends.Vars["Reverse"]:GetBool() then
                                            if not table.HasValue(HackB.Friends.List, v:SteamID()) then
                                                    shouldremove = true
                                            end
                                    else
                                            if table.HasValue(HackB.Friends.List, v:SteamID()) then
                                                    shouldremove = true            
                                            end
                                    end
                            end
                           
                            if shouldremove then
                                    table.remove(targets, k)
                            end
                    end
                   
                    if #targets == 0 then
                            return nil
                    elseif #targets == 1 then
                            targets[1]["Target"].BoneToAimAt = nil
                            return targets[1]["Target"]
                    end
                   
                    if HackB.Aimbot.Vars["Preferance"]:GetString() == "Distance" then
                            local min = {["Distance"] = HackB.Ply:GetPos():Distance(targets[1]["Pos"]), ["Target"] = targets[1]["Target"]}
                            for k = 1, #targets do
                                    local v = targets[k]
                                   
                                    local distance = HackB.Ply:GetPos():Distance(v["Pos"])
                                    if distance < min["Distance"] then
                                            min = {["Distance"] = distance, ["Target"] = v["Target"]}
                                    end
                            end
                            min["Target"].BoneToAimAt = nil
                            return min["Target"]
                    elseif HackB.Aimbot.Vars["Preferance"]:GetString() == "Angle" then             
                            local min = {["Angle"] = HackB.AngleTo(targets[1]["Pos"]), ["Target"] = targets[1]["Target"]}
                            for k = 1, #targets do
                                    local v = targets[k]
                                   
                                    local angle = HackB.AngleTo(v["Pos"])
                                    if angle < min["Angle"] then
                                            min = {["Angle"] = angle, ["Target"] = v["Target"]}
                                    end
                            end
                            min["Target"].BoneToAimAt = nil
                            return min["Target"]
                    end
            else
                    return nil
            end
    end
    HackB.AngleTo = function(pos)
            local myAngs = HackB.Ply:GetAngles()
            local needed = (pos - HackB.Ply:GetShootPos()):Angle()
           
            myAngs.p = math.NormalizeAngle(myAngs.p)
            needed.p = math.NormalizeAngle(needed.p)
           
            myAngs.y = math.NormalizeAngle(myAngs.y)
            needed.y = math.NormalizeAngle(needed.y)
           
            local p = math.NormalizeAngle(needed.p - myAngs.p)
            local y = math.NormalizeAngle(needed.y - myAngs.y)
           
            return math.abs(p) + math.abs(y), {p = p, y = y}
    end
    HackB.ValidTarget = function()
            if HackB.Aimbot.CurTarget == nil then return false end
            if not IsValid(HackB.Aimbot.CurTarget) then return false end
            if HackB.Aimbot.CurTarget:IsPlayer() and (not HackB.Aimbot.CurTarget:Alive() or HackB.Aimbot.CurTarget:Team() == TEAM_SPECTATOR or HackB.Aimbot.CurTarget:Health() < 1) then return false end
            if not HackB.Aimbot.Vars["AttackNPCs"]:GetBool() and HackB.Aimbot.CurTarget:IsNPC() then return false end
            if not HackB.Aimbot.Vars["AttackPlayers"]:GetBool() and HackB.Aimbot.CurTarget:IsPlayer() then return false end
            if not HackB.CanSee(HackB.Aimbot.CurTarget) then return false end
            if HackB.Aimbot.Vars["IgnoreTeam"]:GetBool() and HackB.Aimbot.CurTarget:IsPlayer() then
                    if HackB.TTT then
                            if HackB.Ply:GetRole() == 1 and HackB.Aimbot.CurTarget:GetRole() == 1 then return false end                            
                            if HackB.Ply:GetRole() != 1 and not table.HasValue(HackB.Traitors, HackB.Aimbot.CurTarget) then return false end
                    else
                            if HackB.Aimbot.CurTarget:Team() == HackB.Ply:Team() then return false end
                    end
            end
           
            return true
    end
    
    hook.Add("RenderScreenspaceEffects", HackB.RandomName(math.random(10, 15)), function()
            if HackB.Active:GetBool() then
                    local everything = ents.GetAll()
                    for k = 1, #everything do
                            local v = everything[k]
                           
                            if HackB.Chams.Vars["Active"]:GetBool() and v != HackB.Ply and (HackB.Chams.Vars["MaxDistance"]:GetInt() == 0 or v:GetPos():Distance(HackB.Ply:GetPos()) < HackB.Chams.Vars["MaxDistance"]:GetInt()) then
                                    cam.Start3D(EyePos(), EyeAngles())
                                            if (v:IsPlayer() and v:Alive() and v:Team() != TEAM_SPECTATOR and HackB.Chams.Vars["Players"]:GetBool()) or (v:IsNPC() and v:Health() > 0 and HackB.Chams.Vars["NPCs"]:GetBool()) then
                                                    local color = HackB.Style.Vars["Chams"].color
                                                    if HackB.Chams.Vars["TeamBased"]:GetBool() and v:IsPlayer() then
                                                            color = team.GetColor(v:Team())
                                                            if HackB.TTT then
                                                                    if v:GetRole() == 2 then
                                                                            color = Color(0, 0, 255, 255)
                                                                    elseif table.HasValue(HackB.Traitors, v) then
                                                                            color = Color(255, 0, 0, 255)
                                                                    else
                                                                            color = Color(0, 255, 0, 255)
                                                                    end
                                                            end
                                                    end
                                                    render.SuppressEngineLighting(true)
                                                    render.SetColorModulation(color.r/255, color.g/255, color.b/255, 1)
                                                    render.MaterialOverride(HackB.Chams.Mat)
                                                    v:DrawModel()
                                                   
                                                    render.SetColorModulation((color.r + 150)/250, (color.g + 150)/250, (color.b + 150)/255, 1)                                            
                                                    if IsValid(v:GetActiveWeapon()) and HackB.Chams.Vars["Weapons"]:GetBool() then
                                                            v:GetActiveWeapon():DrawModel()
                                                    end
                                                   
                                                    render.SetColorModulation(1, 1, 1, 1)
                                                    render.MaterialOverride()
                                                    render.SetModelLighting(4, color.r/255, color.g/255, color.b/255)
                                                    v:DrawModel()
                                                    render.SuppressEngineLighting(false)
                                            elseif HackB.TTT and HackB.Chams.Vars["Bodies"]:GetBool() and v:GetClass() == "prop_ragdoll" then
                                                    local color = HackB.Style.Vars["BodyChams"].color
                                                    render.SuppressEngineLighting(true)    
                                                    render.SetColorModulation(color.r/255, color.g/255, color.b/255, 1)
                                                    render.MaterialOverride(HackB.Chams.Mat)
                                                    v:DrawModel()  
                                                    render.SetColorModulation(1, 1, 1, 1)
                                                    render.MaterialOverride()
                                                    render.SetModelLighting(4, color.r/255, color.g/255, color.b/255)
                                                    v:DrawModel()
                                                    render.SuppressEngineLighting(false)
                                            elseif HackB.Entities.Vars["Active"]:GetBool() and table.HasValue(HackB.Entities.List, v:GetClass()) then
                                                    local color = HackB.Style.Vars["Chams"].color                                  
                                                    render.SuppressEngineLighting(true)    
                                                    render.SetColorModulation(color.r/255, color.g/255, color.b/255, 1)
                                                    render.MaterialOverride(HackB.Chams.Mat)
                                                    v:DrawModel()  
                                                    render.SetColorModulation(1, 1, 1, 1)
                                                    render.MaterialOverride()
                                                    render.SetModelLighting(4, color.r/255, color.g/255, color.b/255)
                                                    v:DrawModel()
                                                    render.SuppressEngineLighting(false)
                                            end
                                    cam.End3D()
                            end
                    end
            end
    end)
    
    local radi = {}
    radi.Message = function(...)
            chat.AddText(Color(50, 255, 100), "Radar ", ...)
    end
    
    HackB.DrawFilledCircle = function(x, y, radius, quality)
            local circle = {}
        local tmp = 0
        for i = 1, quality do
            tmp = math.rad(i * 360) / quality
            circle[i] = {x = x + math.cos(tmp) * radius, y = y + math.sin(tmp) * radius}
        end
            surface.DrawPoly(circle)
    end
    HackB.DrawArrow = function(x, y, myRotation)
            local arrow = {}       
            arrow[1] = {x = x, y = y}
            arrow[2] = {x = x + 4, y = y + 7.5}
            arrow[3] = {x = x, y = y + 5}
            arrow[4] = {x = x - 4, y = y + 7.5}
           
            //Now that i have the arrow determined, i have to rotate it to match the targets angle
            myRotation = myRotation * -1
            myRotation = math.rad(myRotation)
            for i = 1, 4 do
                    local theirX = arrow[i].x
                    local theirY = arrow[i].y
                   
                    theirX = theirX - x
                    theirY = theirY - y
                   
                    arrow[i].x = theirX * math.cos(myRotation) - theirY * math.sin(myRotation)
                    arrow[i].y = theirX * math.sin(myRotation) + theirY * math.cos(myRotation)
                   
                    arrow[i].x = arrow[i].x + x
                    arrow[i].y = arrow[i].y + y
            end
     
            surface.DrawPoly(arrow)
    end
    
    HackB.Traitors = {}
    HackB.SuperAdmins = {}
    HackB.Admins = {}
    HackB.Spectators = {}
    local radarX, radarY, radarWidth, radarHeight = 100, 200, 150, 150
    hook.Add("HUDPaint", HackB.RandomName(math.random(10, 15)), function()
            if HackB.Active:GetBool() then 
                    local everything = ents.GetAll()
                   
                    if HackB.ESP.Vars["Active"]:GetBool() and HackB.ESP.Vars["Radar"]:GetBool() then //Setting up the background here. And since the ESP doesnt draw you
                            draw****undedBox(0, radarX, radarY, radarWidth, radarHeight, Color(100, 100, 100, 255 ))
                            draw.NoTexture()
                            if HackB.ESP.Vars["TeamBased"]:GetBool() then
                                    local color = team.GetColor(HackB.Ply:Team())
                                    if HackB.TTT then
                                            if HackB.Ply:GetRole() == 2 then
                                                    color = Color(0, 0, 255, 255)
                                            elseif HackB.Ply:GetRole() == 1 then
                                                    color = Color(255, 0, 0, 255)
                                            else
                                                    color = Color(0, 255, 0, 255)
                                            end
                                    end
                                    surface.SetDrawColor(color)
                            else
                                    surface.SetDrawColor(HackB.Style.Vars["ESPText"].color)
                            end
                            HackB.DrawArrow(radarX + (radarWidth / 2), radarY + (radarHeight / 2), 0)
                    end
                   
                    for k = 1, #everything do
                            local v = everything[k]
                   
                            if HackB.ESP.Vars["Active"]:GetBool() and v != HackB.Ply and (HackB.ESP.Vars["MaxDistance"]:GetInt() == 0 or v:GetPos():Distance(HackB.Ply:GetPos()) < HackB.ESP.Vars["MaxDistance"]:GetInt()) then                                                                            
                                    if (v:IsPlayer() and v:Alive() and v:Team() != TEAM_SPECTATOR and HackB.ESP.Vars["Players"]:GetBool()) or (v:IsNPC() and v:Health() > 0 and HackB.ESP.Vars["NPCs"]:GetBool()) then
                                            local color = HackB.Style.Vars["ESPText"].color
                                            if HackB.ESP.Vars["TeamBased"]:GetBool() and v:IsPlayer() then
                                                    color = team.GetColor(v:Team())
                                                    if HackB.TTT then
                                                            if v:GetRole() == 2 then
                                                                    color = Color(0, 0, 255, 255)
                                                            elseif table.HasValue(HackB.Traitors, v) then
                                                                    color = Color(255, 0, 0, 255)
                                                            else
                                                                    color = Color(0, 255, 0, 255)
                                                            end
                                                    end
                                            end
                                           
                                            local Min, Max = v:GetCollisionBounds()
                                            if HackB.ESP.Vars["Box"]:GetBool() then
                                                    local one = v:LocalToWorld(Min):ToScreen()
                                                    local two = v:LocalToWorld(Vector(Min.x, Min.y, Max.z)):ToScreen()
                                                    local three = v:LocalToWorld(Vector(Min.x, Min.y + (Max.y * 2), Min.z)):ToScreen()
                                                    local four = v:LocalToWorld(Vector(Min.x + (Max.x * 2), Min.y, Min.z)):ToScreen()
                                                    local five = v:LocalToWorld(Max):ToScreen()
                                                    local six = v:LocalToWorld(Vector(Max.x, Max.y, Min.z)):ToScreen()
                                                    local seven = v:LocalToWorld(Vector(Max.x, Max.y + (Min.y * 2), Max.z)):ToScreen()
                                                    local eight = v:LocalToWorld(Vector(Max.x + (Min.x * 2), Max.y, Max.z)):ToScreen()                             
                                                   
                                                    if HackB.ESP.Vars["TeamBased"]:GetBool() then
                                                            surface.SetDrawColor(color)
                                                    else
                                                            surface.SetDrawColor(HackB.Style.Vars["BoundingBox"].color)
                                                    end
                                                    local function connect(tabone, tabtwo)
                                                            surface.DrawLine(tabone.x, tabone.y, tabtwo.x, tabtwo.y)
                                                    end
                                                   
                                                    connect(one, two)
                                                    connect(three, eight)
                                                    connect(four, seven)
                                                    connect(six, five)
                                                    connect(four, six)
                                                    connect(four, one)
                                                    connect(one, three)
                                                    connect(three, six)
                                                    connect(five, eight)
                                                    connect(eight, two)
                                                    connect(two, seven)
                                                    connect(seven, five)
                                            end
                                           
                                            surface.SetFont("ESPFont")
                                            local top = v:GetPos() + Vector(0, 0, Max.z + 10) // A little above their head so its not constantly covering their face.
                                            local topscreen = top:ToScreen()
                                            local topy = topscreen.y
                                           
                                            local bottom = v:GetPos()
                                            local bottomscreen = bottom:ToScreen()
                                            local bottomy = bottomscreen.y
                                           
                                            local function DrawAbove(text)
                                                    local W, H = surface.GetTextSize(text)
                                                    surface.SetTextPos(topscreen.x - W / 2, topy)
                                                    surface.DrawText(text)
                                                   
                                                    topy = topy + H
                                            end
                                           
                                            local function DrawBelow(text)
                                                    local W, H = surface.GetTextSize(text)
                                                    surface.SetTextPos(bottomscreen.x - W / 2, bottomy)
                                                    surface.DrawText(text)
                                                   
                                                    bottomy = bottomy + H
                                            end
                                           
                                            surface.SetTextColor(Color(255, 0, 0, 255))
                                            if HackB.ESP.Vars["ShowTraitors"]:GetString() != "Off" and table.HasValue(HackB.Traitors, v) then
                                                    if HackB.ESP.Vars["ShowTraitors"]:GetString() == "Above" then
                                                            DrawAbove("Traitor")
                                                    else
                                                            DrawBelow("Traitor")
                                                    end
                                            end
                                           
                                            surface.SetTextColor(color)
                                            if v:IsPlayer() then
                                                    if HackB.ESP.Vars["Name"]:GetString() == "Above" then
                                                            DrawAbove("Name: "..v:Nick())
                                                    elseif HackB.ESP.Vars["Name"]:GetString() == "Below" then
                                                            DrawBelow("Name: "..v:Nick())
                                                    end
                                            else
                                                    if HackB.ESP.Vars["Name"]:GetString() == "Above" then
                                                            DrawAbove("Name: "..v:GetClass())
                                                    elseif HackB.ESP.Vars["Name"]:GetString() == "Below" then
                                                            DrawBelow("Name: "..v:GetClass())
                                                    end
                                            end
                                           
                                            if HackB.ESP.Vars["Weapons"]:GetString() == "Above" and IsValid(v:GetActiveWeapon()) then
                                                    DrawAbove("Weapon: "..v:GetActiveWeapon():GetClass())
                                            elseif HackB.ESP.Vars["Weapons"]:GetString() == "Below" and IsValid(v:GetActiveWeapon()) then
                                                    DrawBelow("Weapon: "..v:GetActiveWeapon():GetClass())
                                            end            
                                           
                                            if HackB.ESP.Vars["Distance"]:GetString() == "Above" then
                                                    DrawAbove("Distance: "..bottom:Distance(HackB.Ply:GetPos()))
                                            elseif HackB.ESP.Vars["Distance"]:GetString() == "Below" then
                                                    DrawBelow("Distance: "..bottom:Distance(HackB.Ply:GetPos()))
                                            end    
                                           
                                            if HackB.ESP.Vars["Health"]:GetString() == "Above" then
                                                    DrawAbove("HP: "..v:Health())
                                            elseif HackB.ESP.Vars["Health"]:GetString() == "Below" then
                                                    DrawBelow("HP: "..v:Health())
                                            end
                                           
                                            if HackB.ESP.Vars["Radar"]:GetBool() then
                                                    surface.SetDrawColor(color)
                                                    local myPos = HackB.Ply:GetPos()
                                                    local theirPos = v:GetPos()
                                                    local myAngles = HackB.Ply:GetAngles()
                                                   
                                                    local theirX = (radarX + (radarWidth / 2)) + ((theirPos.x - myPos.x) / HackB.ESP.Vars["RadarScale"]:GetInt())
                                                    local theirY = (radarY + (radarHeight / 2)) + ((myPos.y - theirPos.y) / HackB.ESP.Vars["RadarScale"]:GetInt())
                                                   
                                                    local myRotation = myAngles.y - 90
                                                    myRotation = math.rad(myRotation)
                                                   
                                                    theirX = theirX - (radarX + (radarWidth / 2))
                                                    theirY = theirY - (radarY + (radarHeight / 2))
                                                    local newX = theirX * math.cos(myRotation) - theirY * math.sin(myRotation)
                                                    local newY = theirX * math.sin(myRotation) + theirY * math.cos(myRotation)
                                                    newX = newX + (radarX + (radarWidth / 2))
                                                    newY = newY + (radarY + (radarHeight / 2))
                                                   
                                                    if newX < (radarX + radarWidth) and newX > radarX and newY < (radarY + radarHeight) and newY > radarY then
                                                            HackB.DrawArrow(newX, newY, v:EyeAngles().y - myAngles.y)
                                                    end
                                            end
                                    elseif HackB.TTT and HackB.ESP.Vars["Bodies"]:GetBool() and v:GetClass() == "prop_ragdoll" then
                                            surface.SetFont("ESPFont")
                                           
                                            local pos = v:LocalToWorld(v:OBBCenter())
                                            local poscreen = pos:ToScreen()
                                            local W, H = surface.GetTextSize("Sample") //It doesnt have to be perfect but this will help center the text more.
                                            local y = poscreen.y - (H * 1.5)
                                           
                                            local function DrawText(text)
                                                    local W, H = surface.GetTextSize(text)
                                                    surface.SetTextPos(poscreen.x - W / 2, y)
                                                    surface.DrawText(text)
                                                   
                                                    y = y + H
                                            end
                                           
                                            surface.SetTextColor(HackB.Style.Vars["BodyText"].color)
                                            DrawText("Credits: "..HackB.TTTCORPSE.GetCredits(v, 0))
                                            DrawText("Name: "..HackB.TTTCORPSE.GetPlayerNick(v, "Unknown"))
                                            DrawText("Found: "..tostring(HackB.TTTCORPSE.GetFound(v, false)))
                                           
                                            if HackB.ESP.Vars["Radar"] then
                                                    surface.SetDrawColor(HackB.Style.Vars["BodyText"].color)
                                                    local myPos = HackB.Ply:GetPos()
                                                    local theirPos = v:GetPos()
                                                   
                                                    local theirX = (radarX + (radarWidth / 2)) + ((theirPos.x - myPos.x) / HackB.ESP.Vars["RadarScale"]:GetInt())
                                                    local theirY = (radarY + (radarHeight / 2)) + ((myPos.y - theirPos.y) / HackB.ESP.Vars["RadarScale"]:GetInt())
                                                   
                                                    local myRotation = HackB.Ply:GetAngles().y - 90
                                                    myRotation = math.rad(myRotation)
                                                   
                                                    theirX = theirX - (radarX + (radarWidth / 2))
                                                    theirY = theirY - (radarY + (radarHeight / 2))
                                                    local newX = theirX * math.cos(myRotation) - theirY * math.sin(myRotation)
                                                    local newY = theirX * math.sin(myRotation) + theirY * math.cos(myRotation)
                                                    newX = newX + (radarX + (radarWidth / 2))
                                                    newY = newY + (radarY + (radarHeight / 2))
                                                   
                                                    if newX < (radarX + radarWidth) and newX > radarX and newY < (radarY + radarHeight) and newY > radarY then
                                                            HackB.DrawFilledCircle(newX, newY, 2, 4)
                                                    end
                                            end
                                    elseif HackB.Entities.Vars["Active"]:GetBool() and table.HasValue(HackB.Entities.List, v:GetClass()) then
                                            surface.SetFont("ESPFont")
                                            surface.SetTextColor(HackB.Style.Vars["ESPText"].color)
                                           
                                            local text = v:GetClass()
                                            local W, H = surface.GetTextSize(text)
                                           
                                            local PosScreen = v:GetPos():ToScreen()
                                            surface.SetTextPos(PosScreen.x - W / 2, PosScreen.y)
                                            surface.DrawText(text)
                                    end
                            end
                           
                            surface.SetFont("default")
                            if v:IsPlayer() and v:IsSuperAdmin() then
                                    if not table.HasValue(HackB.SuperAdmins, v) then
                                            table.insert(HackB.SuperAdmins, v)
                                            HackB.Message("Super Admin "..v:Nick().." joined the game.")
                                            if HackB.Misc.Vars["Sounds"]:GetBool() then
                                                    surface.PlaySound("vo/npc/Alyx/watchout02.wav")
                                            end    
                                    end
                            end                    
                            if v:IsPlayer() and v:IsAdmin() and not v:IsSuperAdmin() then
                                    if not table.HasValue(HackB.Admins, v) then
                                            table.insert(HackB.Admins, v)
                                            HackB.Message("Admin "..v:Nick().." joined the game.")
                                            if HackB.Misc.Vars["Sounds"]:GetBool() then
                                                    surface.PlaySound("vo/npc/Alyx/watchout01.wav")
                                            end    
                                    end
                            end            
                            for k,v in SortedPairs(HackB.Admins, true) do
                                    if not IsValid(v) then
                                            table.remove(HackB.Admins, k)
                                    end
                            end
                            for k,v in SortedPairs(HackB.SuperAdmins, true) do
                                    if not IsValid(v) then
                                            table.remove(HackB.SuperAdmins, k)
                                    end
                            end
                                   
                            if v:IsPlayer() and v:GetObserverTarget() == HackB.Ply then
                                    if not table.HasValue(HackB.Spectators, v) then
                                            table.insert(HackB.Spectators, v)
                                            HackB.Message(v:Nick().." started spectating you.")
                                            if HackB.Misc.Vars["Sounds"]:GetBool() then
                                                    surface.PlaySound("vo/npc/female01/ohno.wav")
                                            end                            
                                    end
                            end
                            for k,v in SortedPairs(HackB.Spectators, true) do
                                    if IsValid(v) then
                                            if v:GetObserverTarget() != HackB.Ply then
                                                    table.remove(HackB.Spectators, k)
                                            end
                                    else
                                            table.remove(HackB.Spectators, k)
                                    end
                            end
                           
                            if HackB.TTT and HackB.Misc.Vars["TraitorFinder"]:GetBool() then
                                    if GetRoundState() == 3 and v:IsWeapon() and type(v:GetOwner()) == "Player" and v.Buyer == nil and v.CanBuy and table.HasValue(v.CanBuy, 1) then
                                            local owner = v:GetOwner()
                                            if owner:GetRole() == 2 then
                                                    v.Buyer = owner
                                            else
                                                    HackB.Message(owner:Nick().." bought a traitor weapon: "..v:GetClass())
                                                    v.Buyer = owner
                                                    table.insert(HackB.Traitors, owner)
                                                    if HackB.Misc.Vars["Sounds"]:GetBool() then
                                                            surface.PlaySound("weapons/shotgun/shotgun_cock.wav")
                                                    end    
                                            end
                                    elseif GetRoundState() != 3 then
                                            table.Empty(HackB.Traitors)
                                    end
                            end
                           
                            if HackB.Misc.Vars["Deaths"]:GetBool() and v:IsPlayer() then
                                    if v:Alive() then
                                            v.IsAlive = true
                                    elseif v.IsAlive then
                                            HackB.Message(3, v:Nick().." just died.")
                                            v.IsAlive = false
                                            if HackB.Misc.Vars["Sounds"]:GetBool() then
                                                    surface.PlaySound("npc/combine_soldier/vo/onedown.wav")
                                            end    
                                    end                            
                            end
                    end
                   
                    surface.SetFont("default")
                    surface.SetTextColor(Color(255, 255, 255, 255))
                    local AdminWidest = 0
                    local Admin******eight = 0
                    local AdminHeight = 20
                    if HackB.Misc.Vars["ShowAdmins"]:GetBool() then
                            for k,v in pairs(HackB.SuperAdmins) do
                                    local W, H = surface.GetTextSize(v:Nick().." - Super Admin")
                                    if W > AdminWidest then
                                            AdminWidest = W
                                    end
                                    Admin******eight = Admin******eight + H
                            end
                            for k,v in pairs(HackB.Admins) do
                                    local W, H = surface.GetTextSize(v:Nick().." - Admin")
                                    if W > AdminWidest then
                                            AdminWidest = W
                                    end
                                    Admin******eight = Admin******eight + H
                            end
                            draw****undedBox(8, ScrW() - AdminWidest - 30, 10, AdminWidest + 20, Admin******eight + 20, Color(0, 0, 0, 150 ))
                            for k,v in pairs(HackB.SuperAdmins) do
                                    local text = v:Nick().." - Super Admin"
                                    local W, H = surface.GetTextSize(text)
                                    surface.SetTextPos(ScrW() - 20 - AdminWidest, AdminHeight)
                                    surface.DrawText(text)
                                    AdminHeight = AdminHeight + H
                            end
                            for k,v in pairs(HackB.Admins) do
                                    local text = v:Nick().." - Admin"
                                    local W, H = surface.GetTextSize(text)
                                    surface.SetTextPos(ScrW() - 20 - AdminWidest, AdminHeight)
                                    surface.DrawText(text)
                                    AdminHeight = AdminHeight + H
                            end
                    end
                   
                    local SpecWidest = 0
                    local Spec******eight = 0
                    local SpecHeight = Admin******eight + 50
                    if HackB.Misc.Vars["ShowSpectators"]:GetBool() then
                            for k,v in pairs(HackB.Spectators) do
                                    local W, H = surface.GetTextSize(v:Nick())
                                    if W > SpecWidest then
                                            SpecWidest = W
                                    end
                                    Spec******eight = Spec******eight + H
                            end
                            draw****undedBox(8, ScrW() - SpecWidest - 30, 40 + Admin******eight, SpecWidest + 20, Spec******eight + 20, Color(0, 0, 0, 150 ))
                            for k,v in pairs(HackB.Spectators) do
                                    local text = v:Nick()
                                    local W, H = surface.GetTextSize(text)
                                    surface.SetTextPos(ScrW() - 20 - SpecWidest, SpecHeight)
                                    surface.DrawText(text)
                                    SpecHeight = SpecHeight + H
                            end
                    end
                   
                    if HackB.Misc.Vars["Crosshair"]:GetBool() then
                            local size = HackB.Misc.Vars["CrosshairSize"]:GetInt()
                            local MiddleScreen = {x = surface.ScreenWidth() / 2, y = surface.ScreenHeight() / 2}
                            surface.SetDrawColor(HackB.Style.Vars["Crosshair"].color)
                            surface.DrawLine(MiddleScreen.x, MiddleScreen.y, MiddleScreen.x - size, MiddleScreen.y)
                            surface.DrawLine(MiddleScreen.x, MiddleScreen.y, MiddleScreen.x, MiddleScreen.y - size)
                            surface.DrawLine(MiddleScreen.x, MiddleScreen.y, MiddleScreen.x + size, MiddleScreen.y)
                            surface.DrawLine(MiddleScreen.x, MiddleScreen.y, MiddleScreen.x, MiddleScreen.y + size)
                    end
            end
    end)
    
    radi.Message("Loaded")
    
    local ai = {}
    ai.Message = function(...)
            chat.AddText(Color(50, 255, 100), "AI ", ...)
    end
    
    hook.Add("Think", HackB.RandomName(math.random(10, 15)), function()
            if HackB.Active:GetBool() then 
                    if HackB.Aimbot.Vars["Active"]:GetBool() and not (HackB.Aimbot.Vars["PanicMode"]:GetBool() and #HackB.Spectators > 0) then
                            if not HackB.Aimbot.Vars["AimOnKey"]:GetBool() or (HackB.Aimbot.Vars["AimOnKey"]:GetBool() and HackB.KeyPressed(HackB.Aimbot.Vars["AimOnKey_Key"]:GetString())) then
                                    if HackB.ValidTarget() then
                                            local BoneOrder = {}
                                            if HackB.Aimbot.CurTarget.BoneToAimAt and HackB.Aimbot.Vars["RandomBones"]:GetBool() then
                                                    table.insert(BoneOrder, HackB.Aimbot.CurTarget.BoneToAimAt)
                                                    table.Add(BoneOrder, HackB.GetRandomBones())
                                                    table.Add(BoneOrder, HackB.Bones)
                                            else
                                                    if HackB.Aimbot.Vars["RandomBones"]:GetBool() then
                                                            table.Add(BoneOrder, HackB.GetRandomBones())
                                                            table.Add(BoneOrder, HackB.Bones)
                                                    else
                                                            table.Add(BoneOrder, HackB.Bones)
                                                    end
                                            end
                                            for k = 1, #BoneOrder do
                                                    local v = BoneOrder[k]
                                                    local bone = HackB.Aimbot.CurTarget:LookupBone(v)
                                                    if bone != nil then
                                                            local pos, ang = HackB.Aimbot.CurTarget:GetBonePosition(bone)
                                                            if v == "ValveBiped.Bip01_Head1" then
                                                                    pos = pos + Vector(0, 0, 3) //Aiming a little higher for the head
                                                            end
                                                            local total, needed = 300, {300, 300}
                                                           
                                                            if HackB.Aimbot.Vars["Prediction"]:GetBool() then
                                                                    local tarSpeed = HackB.Aimbot.CurTarget:GetVelocity() * 0.013
                                                                    local plySpeed = HackB.Ply:GetVelocity() * 0.013
                                                                    total, needed = HackB.AngleTo(pos - plySpeed + tarSpeed)
                                                            else
                                                                    total, needed = HackB.AngleTo(pos)
                                                            end
                                                                   
                                                            if HackB.SpotIsVisible(pos) and total < HackB.Aimbot.Vars["MaxAngle"]:GetInt() then
                                                                    local myAngles = HackB.Ply:GetAngles()                                                         
                                                                    local NewAngles = Angle(myAngles.p + needed.p, myAngles.y + needed.y, 0)
                                                                   
                                                                    if HackB.Aimbot.Vars["AntiSnap"]:GetBool() then
                                                                            local speed = HackB.Aimbot.Vars["AntiSnapSpeed"]:GetInt()
                                                                            NewAngles = (Angle(math.Approach(myAngles.p, NewAngles.p, speed), math.Approach(myAngles.y, NewAngles.y, speed), 0))
                                                                    end
                                                                   
                                                                    HackB.Ply:SetEyeAngles(NewAngles)
                                                                    HackB.Aimbot.CurTarget.BoneToAimAt = BoneOrder[k]
                                                                    break
                                                            end
                                                    end
                                            end
                                    else
                                            HackB.Aimbot.CurTarget = HackB.GetTarget()
                                    end
                            else
                                    HackB.Aimbot.CurTarget = nil
                            end
                    end
                   
                    if HackB.Misc.Vars["NoRecoil"]:GetBool() then
                            if IsValid(HackB.Ply:GetActiveWeapon()) then
                                    local weapon = HackB.Ply:GetActiveWeapon()
                                    if weapon.Primary then
                                            weapon.OldRecoil = weapon.OldRecoil or weapon.Primary.Recoil or weapon.Recoil
                                            weapon.Primary.Recoil = 0
                                            weapon.Recoil = 0
                                    else
                                            weapon.OldRecoil = weapon.OldRecoil or weapon.Recoil
                                            weapon.Recoil = 0
                                    end
                            end
                    elseif IsValid(HackB.Ply:GetActiveWeapon()) then
                            local weapon = HackB.Ply:GetActiveWeapon()
                            if weapon.Primary then
                                    weapon.Primary.Recoil = weapon.OldRecoil or weapon.Primary.Recoil or weapon.Recoil
                                    weapon.Recoil = weapon.OldRecoil or weapon.Recoil or weapon.Primary.Recoil
                            else
                                    weapon.Recoil = weapon.OldRecoil or weapon.Recoil
                            end
                    end
                   
                    if HackB.DarkRP and HackB.Misc.Vars["BuyHealth"]:GetBool() then
                            if HackB.Ply:Alive() and HackB.Ply:Health() < HackB.Misc.Vars["BuyHealth_Minimum"]:GetInt() then
                                    HackB.Ply:ConCommand("say /buyhealth")
                            end
                    end
            end
    end)
    
    HackB.Misc.NextReload = CurTime()
    HackB.Misc.ShootNext = true
    hook.Add("CreateMove", HackB.RandomName(math.random(10, 15)), function(cmd)
            if HackB.Active:GetBool() then         
                    local DontShoot = {"gmod_tool", "gmod_camera", "weapon_physgun", "weapon_physcannon"}
                    if HackB.Aimbot.Vars["AutoShoot"]:GetBool() and HackB.Aimbot.Vars["Active"]:GetBool() and HackB.Ply:GetEyeTrace().Entity == HackB.Aimbot.CurTarget and IsValid(HackB.Ply:GetActiveWeapon()) and not table.HasValue(DontShoot, HackB.Ply:GetActiveWeapon():GetClass()) then
                            cmd:SetButtons(cmd:GetButtons() + IN_ATTACK)
                    end
                   
                    if HackB.Misc.Vars["BunnyHop"]:GetBool() and cmd:KeyDown(IN_JUMP) and HackB.KeyPressed(HackB.Misc.Vars["BunnyHop_Key"]:GetString()) then
                            cmd:SetButtons(cmd:GetButtons() - IN_JUMP)
                    end
                    if HackB.Misc.Vars["BunnyHop"]:GetBool() and HackB.Ply:OnGround() and HackB.KeyPressed(HackB.Misc.Vars["BunnyHop_Key"]:GetString()) then
                            cmd:SetButtons(cmd:GetButtons() + IN_JUMP)
                    end
                   
                    local DontReload = {"gmod_tool", "gmod_camera", "weapon_physgun", "weapon_physcannon", "weapon_crowbar"}
                    if HackB.Misc.Vars["AutoReload"]:GetBool() and IsValid(HackB.Ply:GetActiveWeapon()) and HackB.Ply:GetActiveWeapon():Clip1() < 1 and not table.HasValue(DontReload, HackB.Ply:GetActiveWeapon():GetClass()) and HackB.Misc.NextReload < CurTime() then
                            cmd:SetButtons(cmd:GetButtons() + IN_RELOAD)
                    end
                   
                    if HackB.Misc.Vars["AutoPistol"]:GetBool() and IsValid(HackB.Ply:GetActiveWeapon()) then
                            local weapon = HackB.Ply:GetActiveWeapon()
                            if weapon.Primary and type(weapon.Primary.Automatic) == "boolean" and not weapon.Primary.Automatic then
                                    if cmd:KeyDown(IN_ATTACK) then
                                            if HackB.Misc.ShootNext then
                                                    HackB.Misc.ShootNext = false
                                            else
                                                    cmd:SetButtons(cmd:GetButtons() - IN_ATTACK)
                                                    HackB.Misc.ShootNext = true
                                            end
                                    end                                    
                            elseif type(weapon.Automatic) == "boolean" and not weapon.Automatic then
                                    if cmd:KeyDown(IN_ATTACK) then
                                            if HackB.Misc.ShootNext then
                                                    HackB.Misc.ShootNext = false
                                            else
                                                    cmd:SetButtons(cmd:GetButtons() - IN_ATTACK)
                                                    HackB.Misc.ShootNext = true
                                            end
                                    end
                            end
                    end
            end
    end)
    
    ai.Message("Initialized")
    
    local PANEL = {}
    AccessorFunc( PANEL, "ActiveButton", "ActiveButton" )
    function PANEL:Init()
            self.Navigation = vgui.Create( "DScrollPanel", self )
            self.Navigation:Dock( LEFT )
            self.Navigation:SetWidth( 100 )
            self.Navigation:DockMargin( 0, 0, 10, 0 )
     
            self.Content = vgui.Create( "Panel", self )
            self.Content:Dock( FILL )
     
            self.Items = {}
    end
    function PANEL:UseButtonOnlyStyle()
            self.ButtonOnly = true
    end
    function PANEL:AddSheet( label, panel, material )
            if ( !IsValid( panel ) ) then return end
     
            local Sheet = {}
     
            if ( self.ButtonOnly ) then
                    Sheet.Button = vgui.Create( "DImageButton", self.Navigation )
            else
                    Sheet.Button = vgui.Create( "DButton", self.Navigation )
            end
            Sheet.Button:SetImage( material )
            Sheet.Button.Target = panel
            Sheet.Button:Dock( TOP )
            Sheet.Button:SetText( label )
            Sheet.Button:DockMargin( 0, 0, 0, 5 )
     
            Sheet.Button.DoClick = function ()
                    self:SetActiveButton( Sheet.Button )
            end
     
            Sheet.Panel = panel
            Sheet.Panel:SetParent( self.Content )
            Sheet.Panel:SetVisible( false )
     
            if ( self.ButtonOnly ) then
                    Sheet.Button:SizeToContents()
                    Sheet.Button:SetColor( Color( 150, 150, 150, 255 ) )
            end
     
            table.insert( self.Items, Sheet )
     
            if ( !IsValid( self.ActiveButton ) ) then
                    self:SetActiveButton( Sheet.Button )
            end
    end
    function PANEL:SetActiveButton( active )
            if ( self.ActiveButton == active ) then return end
     
            if ( self.ActiveButton && self.ActiveButton.Target ) then      
                    self.ActiveButton.Target:SetVisible( false )
                    self.ActiveButton:SetSelected( false )
                    self.ActiveButton:SetColor( Color( 0, 0, 0, 255 ) )
            end
            self.ActiveButton = active
            active.Target:SetVisible( true )
            active:SetSelected( true )
            active:SetColor( Color( 150, 150, 150, 255 ) )
     
            self.Content:InvalidateLayout()
    end
    derma.DefineControl( "DColumnSheet", "", PANEL, "Panel" )
    
    concommand.Add("HackB_Menu", function()
            local main = vgui.Create("DFrame")
            main:SetSize(500,496)
            main:Center()
            main:SetTitle("")
            main:MakePopup()
            main:ShowCloseButton(false)
            main.Paint = function()
                    draw****undedBox( 0, 0, 0, main:GetWide(), main:GetTall(), Color( 0, 0, 0, 150 ) )
            end
           
            local PanicButton = vgui.Create("DButton", main)
            PanicButton:SetSize(50, 20)
            PanicButton:SetPos(415, 3)
            local function Enable()
                    PanicButton:SetText("Disable")
                    PanicButton.DoClick = function()
                            PanicButton:SetText("Enable")
                            PanicButton.DoClick = Enable
                            HackB.Ply:ConCommand("HackB_Active 0")
                    end
                    HackB.Ply:ConCommand("HackB_Active 1")
            end
            local function Disable()
                    PanicButton:SetText("Enable")
                    PanicButton.DoClick = function()
                            PanicButton:SetText("Disable")
                            PanicButton.DoClick = Disable
                            HackB.Ply:ConCommand("HackB_Active 1")
                    end
                    HackB.Ply:ConCommand("HackB_Active 0")
            end
            if HackB.Active:GetBool() then
                    PanicButton:SetText("Disable")
                    PanicButton.DoClick = Disable
            else
                    PanicButton:SetText("Enable")
                    PanicButton.DoClick = Enable
            end
           
            local CloseButton = vgui.Create("DButton", main)
            CloseButton:SetSize(30, 20)
            CloseButton:SetPos(465, 3)
            CloseButton:SetText("X")
            CloseButton.DoClick = function()
                    main:Close()
            end
           
            local title = vgui.Create("DLabel", main)
            title:SetColor(Color(255, 255, 255, 255))
            title:SetFont("TitleFont")
            title:SetText("HackBETA - "..HackB.Version)
            title:SizeToContents()
            title:SetPos(main:GetWide() / 2 - title:GetWide() / 2,3)       
           
            ColumnSheet = vgui.Create("DColumnSheet",main)
            ColumnSheet:SetPos(5, 25)
            ColumnSheet:SetSize(500 ,465)
           
            local y = 40
            local function ToggleOption(name, parent, var)
                    local Options = vgui.Create("DComboBox", parent)
                    Options:SetSize(100, 20)
                    Options:SetPos(parent:GetWide() * 0.75 - Options:GetWide() / 2, y)
                    Options:AddChoice("Off", 0)
                    Options:AddChoice("On", 1)
                    Options.OnSelect = function(panel,index,value,data)
                            HackB.Ply:ConCommand(var.." "..data)
                    end
                    Options:SetText(Options:GetOptionText(GetConVar(var):GetInt() + 1))
                   
                    local text = vgui.Create("DLabel", parent)
                    text:SetColor(Color(0, 0, 0, 255))
                    text:SetFont("CatagoryText")
                    text:SetText(name)
                    text:SizeToContents()
                    text:SetPos(parent:GetWide() / 4 - text:GetWide() / 2, y + Options:GetTall() / 2 - text:GetTall() / 2)
                   
                    y = y + Options:GetTall() + 20
            end
           
            local function SetKeyOption(name, parent, var)         
                    local Options = vgui.Create("DButton", parent)
                    Options:SetSize(100, 20)
                    Options:SetPos(parent:GetWide() * 0.75 - Options:GetWide() / 2, y)
                    Options:SetText(GetConVar(var):GetString())
                    Options.DoClick = function()
                            Options:SetText("Press a key...")
                            Options.Think = function()
                                    for k = 107, 111 do
                                            if input.IsMouseDown(k) then
                                                    HackB.Ply:ConCommand(var.." "..HackB.MouseKeys[k])
                                                    Options:SetText(HackB.MouseKeys[k])
                                                    Options.Think = nil
                                            end
                                    end
                                   
                                    for k = 0, 130 do
                                            if input.IsKeyDown(k) then
                                                    HackB.Ply:ConCommand(var.." "..HackB.Keys[k])
                                                    Options:SetText(HackB.Keys[k])
                                                    Options.Think = nil
                                            end
                                    end
                            end
                    end
                   
                    local text = vgui.Create("DLabel", parent)
                    text:SetColor(Color(0, 0, 0, 255))
                    text:SetFont("CatagoryText")
                    text:SetText(name)
                    text:SizeToContents()
                    text:SetPos(parent:GetWide() / 4 - text:GetWide() / 2, y + Options:GetTall() / 2 - text:GetTall() / 2)
                   
                    y = y + Options:GetTall() + 20
            end
           
            local function SetNumberOption(name, parent, var, min, max, decimals)          
                    local Options = vgui.Create("DNumberWang", parent)
                    Options:SetSize(100, 20)
                    Options:SetPos(parent:GetWide() * 0.75 - Options:GetWide() / 2, y)
                    Options:SetMin(min)
                    Options:SetMax(max)
                    Options:SetDecimals(decimals)
                    Options:SetConVar(var)
                   
                    local text = vgui.Create("DLabel", parent)
                    text:SetColor(Color(0, 0, 0, 255))
                    text:SetFont("CatagoryText")
                    text:SetText(name)
                    text:SizeToContents()
                    text:SetPos(parent:GetWide() / 4 - text:GetWide() / 2, y + Options:GetTall() / 2 - text:GetTall() / 2)
                   
                    y = y + Options:GetTall() + 20
            end
           
            local function MultiOption(name, parent, var, tab)             
                    local Options = vgui.Create("DComboBox", parent)
                    Options:SetSize(100, 20)
                    Options:SetPos(parent:GetWide() * 0.75 - Options:GetWide() / 2, y)
                    for i = 1, #tab do
                            Options:AddChoice(tab[i])
                    end
                    Options.OnSelect = function(panel,index,value,data)
                            HackB.Ply:ConCommand(var.." "..value)
                    end
                    Options:SetText(GetConVar(var):GetString())
                   
                    local text = vgui.Create("DLabel", parent)
                    text:SetColor(Color(0, 0, 0, 255))
                    text:SetFont("CatagoryText")
                    text:SetText(name)
                    text:SizeToContents()
                    text:SetPos(parent:GetWide() / 4 - text:GetWide() / 2, y + Options:GetTall() / 2 - text:GetTall() / 2)
                   
                    y = y + Options:GetTall() + 20
            end
           
            local Aimbot = vgui.Create("DPanel")
            Aimbot:SetSize(379, 465)
            Aimbot.Paint = function()
                    draw****undedBox( 0, 0, 0, Aimbot:GetWide(), Aimbot:GetTall(), Color( 240, 240, 240, 255 ) )
            end
           
            local title = vgui.Create("DLabel", Aimbot)
            title:SetColor(Color(0, 0, 0, 255))
            title:SetFont("CatagoryHeader")
            title:SetText("Aimbot")
            title:SizeToContents()
            title:SetPos(Aimbot:GetWide() / 2 - title:GetWide() / 2, 0)
           
            ToggleOption("Active", Aimbot, "HackB_Aimbot_Active")
            ToggleOption("Random Bones", Aimbot, "HackB_Aimbot_RandomBones")
            MultiOption("Preferance", Aimbot, "HackB_Aimbot_Preferance", {"Distance", "Angle"})    
            ToggleOption("Attack Players", Aimbot, "HackB_Aimbot_AttackPlayers")
            ToggleOption("Attack NPCs", Aimbot, "HackB_Aimbot_AttackNPCs")
            ToggleOption("Prediction", Aimbot, "HackB_Aimbot_Prediction")
            ToggleOption("Aim On Key", Aimbot, "HackB_Aimbot_AimOnKey")
            SetKeyOption("Key", Aimbot, "HackB_Aimbot_AimOnKey_Key")
            ToggleOption("Anti Snap", Aimbot, "HackB_Aimbot_AntiSnap")
            SetNumberOption("Anti Snap Speed", Aimbot, "HackB_Aimbot_AntiSnapSpeed", 1, 5, 2)
            SetNumberOption("Max Angle", Aimbot, "HackB_Aimbot_MaxAngle", 0, 270, 0)
            ToggleOption("Auto Shoot", Aimbot, "HackB_Aimbot_AutoShoot")
            ToggleOption("Panic Mode", Aimbot, "HackB_Aimbot_PanicMode")
            ToggleOption("Ignore Team", Aimbot, "HackB_Aimbot_IgnoreTeam")
           
            if y > 465 then
                    Aimbot:SetTall(y)
            end
           
            AimbotList = vgui.Create( "DPanelList" )
            AimbotList:SetSize(379, 465)
            AimbotList:SetSpacing(0)
            AimbotList:EnableHorizontal(false)
            AimbotList:EnableVerticalScrollbar(true)
            AimbotList:AddItem(Aimbot)
           
            ColumnSheet:AddSheet("Aimbot", AimbotList, "icon16/application_xp_terminal.png")
           
            local FriendsPanel = vgui.Create("DPanel")
            FriendsPanel:SetSize(379, 465)
            FriendsPanel.Paint = function()
                    draw****undedBox( 0, 0, 0, FriendsPanel:GetWide(), FriendsPanel:GetTall(), Color( 240, 240, 240, 255 ) )
            end
           
            local title = vgui.Create("DLabel", FriendsPanel)
            title:SetColor(Color(0, 0, 0, 255))
            title:SetFont("CatagoryHeader")
            title:SetText("Friends")
            title:SizeToContents()
            title:SetPos(FriendsPanel:GetWide() / 2 - title:GetWide() / 2, 3)
           
            local Friends = {}
            local Enemies = {}
           
            local players = player.GetAll()
            for k = 1, #players do
                    local v = players[k]
                    if v != HackB.Ply then
                            if table.HasValue(HackB.Friends.List, v:SteamID()) then
                                    table.insert(Friends, v)
                            else
                                    table.insert(Enemies, v)
                            end
                    end
            end
           
            y = 40
            local EnemiesList = vgui.Create("DListView", FriendsPanel) //Need this up here so FriendsList can reference it.
            local FriendsList = vgui.Create("DListView", FriendsPanel)
            FriendsList:SetSize(150, 200)
            FriendsList:SetPos(FriendsPanel:GetWide() * 0.25 - FriendsList:GetWide() / 2, y)
            FriendsList:SetMultiSelect(false)
            FriendsList:AddColumn("Friends")
            for k = 1, #Friends do
                    FriendsList:AddLine(Friends[k]:Nick())
            end
            FriendsList.DoDoubleClick = function(panel, index, line)
                    table.insert(Enemies, Friends[index])
                    table.remove(Friends, index)
                   
                    FriendsList:Clear()
                    EnemiesList:Clear()
                    for k = 1, #Friends do
                            FriendsList:AddLine(Friends[k]:Nick())
                    end
                    for k = 1, #Enemies do
                            EnemiesList:AddLine(Enemies[k]:Nick())
                    end
                   
                    HackB.Friends.List = {}
                    for k = 1, #Friends do
                            table.insert(HackB.Friends.List, Friends[k]:SteamID())
                    end
                    HackB.SaveData()
            end
           
            EnemiesList:SetSize(150, 200)
            EnemiesList:SetPos(FriendsPanel:GetWide() * 0.75 - EnemiesList:GetWide() / 2, y)
            EnemiesList:SetMultiSelect(false)
            EnemiesList:AddColumn("Enemies")
            for k = 1, #Enemies do
                    EnemiesList:AddLine(Enemies[k]:Nick())
            end
            EnemiesList.DoDoubleClick = function(panel, index, line)
                    table.insert(Friends, Enemies[index])
                    table.remove(Enemies, index)
                   
                    FriendsList:Clear()
                    EnemiesList:Clear()
                    for k = 1, #Friends do
                            FriendsList:AddLine(Friends[k]:Nick())
                    end
                    for k = 1, #Enemies do
                            EnemiesList:AddLine(Enemies[k]:Nick())
                    end
                   
                    HackB.Friends.List = {}
                    for k = 1, #Friends do
                            table.insert(HackB.Friends.List, Friends[k]:SteamID())
                    end
                    HackB.SaveData()
            end
           
            y = y + EnemiesList:GetTall() + 20
            ToggleOption("Use", FriendsPanel, "HackB_Friends_Active")
            ToggleOption("Reverse", FriendsPanel, "HackB_Friends_Reverse")
           
            if y > 465 then
                    FriendsPanel:SetTall(y)
            end
           
            local FriendsPanelList = vgui.Create( "DPanelList" )
            FriendsPanelList:SetSize(379, 465)
            FriendsPanelList:SetSpacing(0)
            FriendsPanelList:EnableHorizontal(false)
            FriendsPanelList:EnableVerticalScrollbar(true)
            FriendsPanelList:AddItem(FriendsPanel)
           
            ColumnSheet:AddSheet("Friends", FriendsPanelList, "icon16/group.png")
     
            local ESP = vgui.Create("DPanel")
            ESP:SetSize(379, 465)
            ESP.Paint = function()
                    draw****undedBox( 0, 0, 0, ESP:GetWide(), ESP:GetTall(), Color( 240, 240, 240, 255 ) )
            end
           
            local title = vgui.Create("DLabel", ESP)
            title:SetColor(Color(0, 0, 0, 255))
            title:SetFont("CatagoryHeader")
            title:SetText("ESP")
            title:SizeToContents()
            title:SetPos(ESP:GetWide() / 2 - title:GetWide() / 2, 3)
           
            y = 40
            ToggleOption("Active", ESP, "HackB_ESP_Active")
            ToggleOption("Player Info", ESP, "HackB_ESP_Players")
            ToggleOption("NPC Info", ESP, "HackB_ESP_NPCs")
            MultiOption("Name", ESP, "HackB_ESP_Name", {"Off", "Above", "Below"})  
            MultiOption("Weapon", ESP, "HackB_ESP_Weapons", {"Off", "Above", "Below"})     
            MultiOption("Health", ESP, "HackB_ESP_Health", {"Off", "Above", "Below"})      
            MultiOption("Distance", ESP, "HackB_ESP_Distance", {"Off", "Above", "Below"})
            MultiOption("Show Traitors", ESP, "HackB_ESP_ShowTraitors", {"Off", "Above", "Below"})
            ToggleOption("Bounding Box", ESP, "HackB_ESP_Box")
            ToggleOption("Body Info", ESP, "HackB_ESP_Bodies")
            ToggleOption("2D Radar", ESP, "HackB_ESP_Radar")
            SetNumberOption("Radar Scale", ESP, "HackB_ESP_RadarScale", 1, 100, 0)
            SetNumberOption("Max Distance", ESP, "HackB_ESP_MaxDistance", 0, 8000, 0)
            ToggleOption("Team Based", ESP, "HackB_ESP_TeamBased")
           
            if y > 465 then
                    ESP:SetTall(y)
            end
           
            ESPList = vgui.Create( "DPanelList" )
            ESPList:SetSize(379, 465)
            ESPList:SetSpacing(0)
            ESPList:EnableHorizontal(false)
            ESPList:EnableVerticalScrollbar(true)
            ESPList:AddItem(ESP)
           
            ColumnSheet:AddSheet("ESP", ESPList, "icon16/pencil.png")
           
            local Chams = vgui.Create("DPanel")
            Chams:SetSize(379, 465)
            Chams.Paint = function()
                    draw****undedBox( 0, 0, 0, Chams:GetWide(), Chams:GetTall(), Color( 240, 240, 240, 255 ) )
            end
           
            local title = vgui.Create("DLabel", Chams)
            title:SetColor(Color(0, 0, 0, 255))
            title:SetFont("CatagoryHeader")
            title:SetText("Chams")
            title:SizeToContents()
            title:SetPos(Chams:GetWide() / 2 - title:GetWide() / 2, 3)
           
            y = 40
            ToggleOption("Active", Chams, "HackB_Chams_Active")
            ToggleOption("Draw Players", Chams, "HackB_Chams_Players")
            ToggleOption("Draw NPCs", Chams, "HackB_Chams_NPCs")
            ToggleOption("Draw Weapons", Chams, "HackB_Chams_Weapons")
            ToggleOption("Draw Bodies", Chams, "HackB_Chams_Bodies")
            ToggleOption("Team Based", Chams, "HackB_Chams_TeamBased")
            SetNumberOption("Max Distance", Chams, "HackB_Chams_MaxDistance", 0, 8000, 0)
           
            if y > 465 then
                    Chams:SetTall(y)
            end
           
            ChamsList = vgui.Create( "DPanelList" )
            ChamsList:SetSize(379, 465)
            ChamsList:SetSpacing(0)
            ChamsList:EnableHorizontal(false)
            ChamsList:EnableVerticalScrollbar(true)
            ChamsList:AddItem(Chams)
           
            ColumnSheet:AddSheet("Chams", ChamsList, "icon16/eye.png")
           
            local Finder = vgui.Create("DPanel")
            Finder:SetSize(379, 465)
            Finder.Paint = function()
                    draw****undedBox( 0, 0, 0, Finder:GetWide(), Finder:GetTall(), Color( 240, 240, 240, 255 ) )
            end
           
            local title = vgui.Create("DLabel", Finder)
            title:SetColor(Color(0, 0, 0, 255))
            title:SetFont("CatagoryHeader")
            title:SetText("Entity Finder")
            title:SizeToContents()
            title:SetPos(Finder:GetWide() / 2 - title:GetWide() / 2, 3)
           
            local ToShow = {}
            local Others = {}
           
            local All = ents.GetAll()
            for k = 1, #All do
                    local v = All[k]
                    if table.HasValue(HackB.Entities.List, v:GetClass()) then
                            if not table.HasValue(ToShow, v:GetClass()) then
                                    table.insert(ToShow, v:GetClass())
                            end
                    elseif not table.HasValue(Others, v:GetClass()) then
                            table.insert(Others, v:GetClass())
                    end
            end
           
            y = 40
            local IgnoreList = vgui.Create("DListView", Finder) //Need this up here so ToShowList can reference it.
            local ToShowList = vgui.Create("DListView", Finder)
            ToShowList:SetSize(150, 200)
            ToShowList:SetPos(Finder:GetWide() * 0.25 - ToShowList:GetWide() / 2, y)
            ToShowList:SetMultiSelect(false)
            ToShowList:AddColumn("To Show")
            for k = 1, #ToShow do
                    ToShowList:AddLine(ToShow[k])
            end
            ToShowList.DoDoubleClick = function(panel, index, line)
                    table.insert(Others, ToShow[index])
                    table.remove(ToShow, index)
                   
                    ToShowList:Clear()
                    IgnoreList:Clear()
                    for k = 1, #ToShow do
                            ToShowList:AddLine(ToShow[k])
                    end
                    for k = 1, #Others do
                            IgnoreList:AddLine(Others[k])
                    end
                   
                    HackB.Entities.List = {}
                    for k = 1, #ToShow do
                            table.insert(HackB.Entities.List, ToShow[k])
                    end
                    HackB.SaveData()
            end
           
            IgnoreList:SetSize(150, 200)
            IgnoreList:SetPos(Finder:GetWide() * 0.75 - IgnoreList:GetWide() / 2, y)
            IgnoreList:SetMultiSelect(false)
            IgnoreList:AddColumn("Others")
            for k = 1, #Others do
                    IgnoreList:AddLine(Others[k])
            end
            IgnoreList.DoDoubleClick = function(panel, index, line)
                    table.insert(ToShow, Others[index])
                    table.remove(Others, index)
                   
                    ToShowList:Clear()
                    IgnoreList:Clear()
                    for k = 1, #ToShow do
                            ToShowList:AddLine(ToShow[k])
                    end
                    for k = 1, #Others do
                            IgnoreList:AddLine(Others[k])
                    end
                   
                    HackB.Entities.List = {}
                    for k = 1, #ToShow do
                            table.insert(HackB.Entities.List, ToShow[k])
                    end
                    HackB.SaveData()
            end
           
            y = y + IgnoreList:GetTall() + 20
            ToggleOption("Active", Finder, "HackB_Entities_Active")
           
            if y > 465 then
                    Finder:SetTall(y)
            end
           
            local FinderList = vgui.Create( "DPanelList" )
            FinderList:SetSize(379, 465)
            FinderList:SetSpacing(0)
            FinderList:EnableHorizontal(false)
            FinderList:EnableVerticalScrollbar(true)
            FinderList:AddItem(Finder)
           
            ColumnSheet:AddSheet("Finder", FinderList, "icon16/magnifier.png")
           
            local Misc = vgui.Create("DPanel")
            Misc:SetSize(379, 465)
            Misc.Paint = function()
                    draw****undedBox( 0, 0, 0, Misc:GetWide(), Misc:GetTall(), Color( 240, 240, 240, 255 ) )
            end
           
            local title = vgui.Create("DLabel", Misc)
            title:SetColor(Color(0, 0, 0, 255))
            title:SetFont("CatagoryHeader")
            title:SetText("Misc")
            title:SizeToContents()
            title:SetPos(Misc:GetWide() / 2 - title:GetWide() / 2, 3)
           
            y = 40
            ToggleOption("Show Admins", Misc, "HackB_Misc_ShowAdmins")
            ToggleOption("Crosshair", Misc, "HackB_Misc_Cross")
            SetNumberOption("Corsshair Size", Misc, "HackB_Misc_CrossSize", 0, 1000, 0)
            ToggleOption("No Recoil", Misc, "HackB_Misc_NoRecoil")
            ToggleOption("Spectators", Misc, "HackB_Misc_ShowSpectators")
            ToggleOption("Auto Reload", Misc, "HackB_Misc_AutoReload")
            ToggleOption("Bunny Hop", Misc, "HackB_Misc_BunnyHop")
            SetKeyOption("Key", Misc, "HackB_Misc_BunnyHop_Key")
            ToggleOption("Auto Pistol", Misc, "HackB_Misc_AutoPistol")
            ToggleOption("Buy Health", Misc, "HackB_Misc_BuyHealth")
            SetNumberOption("Minimum", Misc, "HackB_Misc_BuyHealth_Minimum", 0, 100, 0)
            ToggleOption("Traitor Finder", Misc, "HackB_Misc_TraitorFinder")
            ToggleOption("Show Deaths", Misc, "HackB_Misc_Deaths")
            ToggleOption("Sounds", Misc, "HackB_Misc_Sounds")
     
            if y > 465 then
                    Misc:SetTall(y)
            end
           
            MiscList = vgui.Create( "DPanelList" )
            MiscList:SetSize(379, 465)
            MiscList:SetSpacing(0)
            MiscList:EnableHorizontal(false)
            MiscList:EnableVerticalScrollbar(true)
            MiscList:AddItem(Misc)
     
            ColumnSheet:AddSheet("Misc", MiscList, "icon16/package.png")
           
            local function ColorOption(name, parent, tab)
                    local Options = vgui.Create("DColorMixer", parent)
                    Options:SetSize(150, 100)
                    Options:SetPos(parent:GetWide() * 0.75 - Options:GetWide() / 2, y)
                    Options:SetColor(tab.color)//HackB.GetColorFromString(GetConVar(var):GetString()))
                    Options:SetWangs(false)
                    Options:SetPalette(false)
                    Options.ValueChanged = function(panel, color)
                            HackB.Ply:ConCommand(tab.var:GetName().." ".."Color("..color.r..","..color.g..","..color.b..","..color.a..")")
                            tab.color = HackB.GetColorFromString(tab.var:GetString())
                    end
                   
                    local text = vgui.Create("DLabel", parent)
                    text:SetColor(Color(0, 0, 0, 255))
                    text:SetFont("CatagoryText")
                    text:SetText(name)
                    text:SizeToContents()
                    text:SetPos(parent:GetWide() / 4 - text:GetWide() / 2, y + Options:GetTall() / 2 - text:GetTall() / 2)
                   
                    y = y + Options:GetTall() + 10
            end
    
            local Style = vgui.Create("DPanel")
            Style:SetSize(379, 465)
            Style.Paint = function()
                    draw****undedBox( 0, 0, 0, Style:GetWide(), Style:GetTall(), Color( 240, 240, 240, 255 ) )
            end
           
            local title = vgui.Create("DLabel", Style)
            title:SetColor(Color(0, 0, 0, 255))
            title:SetFont("CatagoryHeader")
            title:SetText("Style")
            title:SizeToContents()
            title:SetPos(Style:GetWide() / 2 - title:GetWide() / 2, 3)
           
            y = 50
            ColorOption("Bounding Box", Style, HackB.Style.Vars["BoundingBox"])
            ColorOption("ESP Text", Style, HackB.Style.Vars["ESPText"])
            ColorOption("Crosshair", Style, HackB.Style.Vars["Crosshair"])
            ColorOption("TTT Body Text", Style, HackB.Style.Vars["BodyText"])
            ColorOption("Chams", Style, HackB.Style.Vars["Chams"])
            ColorOption("TTT Body Chams", Style, HackB.Style.Vars["BodyChams"])
           
            if y > 465 then
                    Style:SetTall(y)
            end
           
            StyleList = vgui.Create( "DPanelList" )
            StyleList:SetSize(379, 465)
            StyleList:SetSpacing(0)
            StyleList:EnableHorizontal(false)
            StyleList:EnableVerticalScrollbar(true)
            StyleList:AddItem(Style)
           
            ColumnSheet:AddSheet("Style", StyleList, "icon16/color_wheel.png")
    end)
    
    HackB.Message("Loaded")
    Heres the pastebin.
    WQ2RdNm0
    Last edited by Mr. Snuffalupagus; 01-09-2015 at 08:35 PM.

  2. The Following User Says Thank You to Mr. Snuffalupagus For This Useful Post:

    mono331 (01-09-2015)

  3. #2
    mono331's Avatar
    Join Date
    Nov 2013
    Gender
    male
    Posts
    21
    Reputation
    10
    Thanks
    0
    Nice edits of AHack, I might try it later. Also will be good if you could make TTT prop kill script that is just when you grab a prop with magnet and release then you realease it and then it flys straight into someone.
    Last edited by mono331; 01-09-2015 at 12:56 PM.

  4. #3
    David.'s Avatar
    Join Date
    Jul 2009
    Gender
    male
    Location
    ก็็็็็็็็็็็็็&#
    Posts
    2,881
    Reputation
    556
    Thanks
    2,514
    My Mood
    Amazed
    Thanks For This Code

  5. #4
    deathvoice5's Avatar
    Join Date
    Dec 2012
    Gender
    male
    Posts
    8
    Reputation
    10
    Thanks
    119
    Hey could you post a pastebin of this. Mpgh censored some of the code thanks.

  6. #5
    ExiledStyles's Avatar
    Join Date
    Jan 2014
    Gender
    male
    Posts
    104
    Reputation
    10
    Thanks
    66
    isn't there 400 trillion ahack relabels on this site already?

  7. #6
    Mr. Snuffalupagus's Avatar
    Join Date
    Dec 2011
    Gender
    male
    Location
    Too stoned to remember.
    Posts
    18
    Reputation
    10
    Thanks
    39
    My Mood
    Asleep
    Quote Originally Posted by mono331 View Post
    Nice edits of AHack, I might try it later. Also will be good if you could make TTT prop kill script that is just when you grab a prop with magnet and release then you realease it and then it flys straight into someone.
    The "propkill scripts" are just one concommand that allows you to propkill and five others that hep reduce prop lag.
    I don't see why it would be necessary seeing as how they set themselves each time you load the script.
    It would basically do the same thing if I changed it.

    Quote Originally Posted by deathvoice5 View Post
    Hey could you post a pastebin of this. Mpgh censored some of the code thanks.
    Put this at the end of the base pastebin address.
    WQ2RdNm0

    Quote Originally Posted by ExiledStyles View Post
    isn't there 400 trillion ahack relabels on this site already?
    There are 400 trillion AHack RELABELS.
    I gave the credit and said what I changed in the first post.
    If you read it and the code you would see the differences between this and a relabel.
    I do admit that there isn't anything fancy about this but I really just made it for my convenience and decided to actually post something here.

    --EDIT--

    Once I go through some testing and coding I will properly release this in the hack and cheats section even though this in near perfect already.
    Last edited by Mr. Snuffalupagus; 01-09-2015 at 09:18 PM.

  8. #7
    Kona-chan's Avatar
    Join Date
    Oct 2014
    Gender
    female
    Posts
    380
    Reputation
    22
    Thanks
    685
    you should've edited something else than A-trash seriously.
    or just make your own cheat

  9. #8
    ehex's Avatar
    Join Date
    Dec 2011
    Gender
    male
    Posts
    150
    Reputation
    22
    Thanks
    555
    You removed localization to make the cheat faster....
    Please rethink what you just said.

  10. #9
    N0t-KGB's Avatar
    Join Date
    Jan 2015
    Gender
    male
    Location
    computer
    Posts
    37
    Reputation
    10
    Thanks
    11
    Quote Originally Posted by ehex View Post
    You removed localization to make the cheat faster....
    Please rethink what you just said.
    this, also why do we need this when we already have sasha hack? its way better

  11. #10
    D3M0L1T10N's Avatar
    Join Date
    May 2012
    Gender
    male
    Posts
    1,364
    Reputation
    19
    Thanks
    656
    Quote Originally Posted by ehex View Post
    You removed localization to make the cheat faster....
    Please rethink what you just said.
    why woudl you tell him

  12. #11
    max1612's Avatar
    Join Date
    Feb 2013
    Gender
    male
    Location
    C:/Users
    Posts
    532
    Reputation
    18
    Thanks
    1,466
    Quote Originally Posted by D3M0L1T10N View Post
    why woudl you tell him
    cus now he knows the secrets of all our research in engine.dll
    Empty for now

  13. #12
    Mr. Snuffalupagus's Avatar
    Join Date
    Dec 2011
    Gender
    male
    Location
    Too stoned to remember.
    Posts
    18
    Reputation
    10
    Thanks
    39
    My Mood
    Asleep
    Please close this thread too since there is no point in reviving a dead thread.

    You're not the real Mr. Snuffleupagus!
    You smell like beef and cheese!

  14. #13
    Color's Avatar
    Join Date
    Aug 2012
    Gender
    male
    Posts
    19,896
    Reputation
    2588
    Thanks
    7,864
    My Mood
    Lurking
    //Closed...

    Member Since 8/05/2012
    Editor 4/04/13 - 4/21/13
    Middleman 7/14/13 - 11/4/13

    Battlefield Minion 6/13/14-3/20/15
    Steam Minion 7/16/14-3/20/15

    Minion+ 10/1/14-3/20/15
    M.A.T. Minion 10/19/14-3/20/15
    ROTMG Minion 1/14/15-3/20/15

    Donator Since 2/26/15 (Thanks @Cursed!)
    Steam Minion 5/9/15 - 11/5/15
    OSFPS Minion 9/15/15 - 11/5/15