PostHackBETA

Posts 1–13 of 13 · Page 1 of 1
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
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.
Thanks For This Code
Hey could you post a pastebin of this. Mpgh censored some of the code thanks.
isn't there 400 trillion ahack relabels on this site already?
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.
you should've edited something else than A-trash seriously.
or just make your own cheat
You removed localization to make the cheat faster....
Please rethink what you just said.
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
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
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
Please close this thread too since there is no point in reviving a dead thread.
//Closed...
Posts 1–13 of 13 · Page 1 of 1
This thread is closed for replies.

Tags for this Thread

None

Talk with us