Lua Duster hack best on mpgh

Posts 1–15 of 17 · Page 1 of 2
Lua Duster hack best on mpgh
Duster Fixed

Here you go peeps i fixeddetection for you!

Code:
// Loading Duster

local hook = hook
local derma = derma
local surface = surface
local vgui = vgui
local input = input
local util = util
local cam = cam
local render = render
local math = math
local draw = draw
local team = team
local no = false
local yes = true
 
local Duster = {}
Duster.Active = CreateClientConVar("Duster_Active", 1, true, false)
Duster.Version = "1.5.0"
Duster.Ply = LocalPlayer()
Duster.TTT = (GAMEMODE and GAMEMODE.Name and string.find(GAMEMODE.Name, "Terror") and true) or false
if Duster.TTT then Duster.TTTCORPSE = CORPSE end
Duster.DarkRP = (GAMEMODE and GAMEMODE.Name and string.find(GAMEMODE.Name, "DarkRP") and true) or false
 
//Converts a string of a color (ex. "Color(255, 255, 255, 255)") into an actual color, and returns the color.
Duster.GetColorFromString = function(words)
        //I probably shouldve just used string.explode...well.......
        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
 
Duster.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"}
Duster.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(Duster.Chars))
                else
                        toReturn = toReturn..table.Random(Duster.Chars)
                end
        end
        return toReturn
end
 
Duster.Message = function(...)
        chat.AddText(Color(50, 255, 100), "[Duster] ", ...)
end
 
Duster.Aimbot = {}
Duster.Aimbot.CurTarget = nil
Duster.Aimbot.Vars = {}
Duster.Aimbot.Vars["Active"] = CreateClientConVar("Duster_Aimbot_Active", 0, true, false)
Duster.Aimbot.Vars["RandomBones"] = CreateClientConVar("Duster_Aimbot_RandomBones", 0, true, false)
Duster.Aimbot.Vars["AttackNPCs"] = CreateClientConVar("Duster_Aimbot_AttackNPCs", 0, true, false)
Duster.Aimbot.Vars["AttackPlayers"] = CreateClientConVar("Duster_Aimbot_AttackPlayers", 0, true, false)
Duster.Aimbot.Vars["Prediction"] = CreateClientConVar("Duster_Aimbot_Prediction", 0, true, false)
Duster.Aimbot.Vars["AimOnKey"] = CreateClientConVar("Duster_Aimbot_AimOnKey", 0, true, false)
Duster.Aimbot.Vars["AimOnKey_Key"] = CreateClientConVar("Duster_Aimbot_AimOnKey_Key", "MOUSE_LEFT", true, false)
Duster.Aimbot.Vars["MaxAngle"] = CreateClientConVar("Duster_Aimbot_MaxAngle", 180, true, false)
Duster.Aimbot.Vars["Preferance"] = CreateClientConVar("Duster_Aimbot_Preferance", "Distance", true, false)
Duster.Aimbot.Vars["AntiSnap"] = CreateClientConVar("Duster_Aimbot_AntiSnap", 0, true, false)
Duster.Aimbot.Vars["AntiSnapSpeed"] = CreateClientConVar("Duster_Aimbot_AntiSnapSpeed", 4, true, false)
Duster.Aimbot.Vars["AutoShoot"] = CreateClientConVar("Duster_Aimbot_AutoShoot", 0, true, false)
Duster.Aimbot.Vars["PanicMode"] = CreateClientConVar("Duster_Aimbot_PanicMode", 0, true, false)
Duster.Aimbot.Vars["IgnoreTeam"] = CreateClientConVar("Duster_Aimbot_IgnoreTeam", 0, true, false)
 
Duster.Friends = {}
Duster.Friends.List = {} //The steamIDs of everyone on your friends list
Duster.Friends.Vars = {}
Duster.Friends.Vars["Active"] = CreateClientConVar("Duster_Friends_Active", 0, true, false)
Duster.Friends.Vars["Reverse"] = CreateClientConVar("Duster_Friends_Reverse", 0, true, false)
 
Duster.ESP = {}
Duster.ESP.Vars = {}
Duster.ESP.Vars["Active"] = CreateClientConVar("Duster_ESP_Active", 0, true, false)
Duster.ESP.Vars["Players"] = CreateClientConVar("Duster_ESP_Players", 0, true, false)
Duster.ESP.Vars["NPCs"] = CreateClientConVar("Duster_ESP_NPCs", 0, true, false)
Duster.ESP.Vars["Name"] = CreateClientConVar("Duster_ESP_Name", "Off", true, false)
Duster.ESP.Vars["Weapons"] = CreateClientConVar("Duster_ESP_Weapons", "Off", true, false)
Duster.ESP.Vars["Distance"] = CreateClientConVar("Duster_ESP_Distance", "Off", true, false)
Duster.ESP.Vars["Health"] = CreateClientConVar("Duster_ESP_Health", "Off", true, false)
Duster.ESP.Vars["MaxDistance"] = CreateClientConVar("Duster_ESP_MaxDistance", 0, true, false)
Duster.ESP.Vars["Box"] = CreateClientConVar("Duster_ESP_Box", 0, true, false)
Duster.ESP.Vars["ShowTraitors"] = CreateClientConVar("Duster_ESP_ShowTraitors", "Off", true, false)
Duster.ESP.Vars["Bodies"] = CreateClientConVar("Duster_ESP_Bodies", 0, true, false)
Duster.ESP.Vars["Radar"] = CreateClientConVar("Duster_ESP_Radar", 0, true, false)
Duster.ESP.Vars["RadarScale"] = CreateClientConVar("Duster_ESP_RadarScale", 20, true, false)
Duster.ESP.Vars["TeamBased"] = CreateClientConVar("Duster_ESP_TeamBased", 0, true, false)
 
Duster.Chams = {}
Duster.Chams.Mat = CreateMaterial(Duster.RandomName(math.random(10,15)), "VertexLitGeneric", { ["$basetexture"] = "models/debug/debugwhite", ["$model"] = 1, ["$ignorez"] = 1 })
Duster.Chams.Vars = {}
Duster.Chams.Vars["Active"] = CreateClientConVar("Duster_Chams_Active", 0, true, false)
Duster.Chams.Vars["Players"] = CreateClientConVar("Duster_Chams_Players", 0, true, false)
Duster.Chams.Vars["NPCs"] = CreateClientConVar("Duster_Chams_NPCs", 0, true, false)
Duster.Chams.Vars["Weapons"] = CreateClientConVar("Duster_Chams_Weapons", 0, true, false)
Duster.Chams.Vars["MaxDistance"] = CreateClientConVar("Duster_Chams_MaxDistance", 0, true, false)
Duster.Chams.Vars["Bodies"] = CreateClientConVar("Duster_Chams_Bodies", 0, true, false)
Duster.Chams.Vars["TeamBased"] = CreateClientConVar("Duster_Chams_TeamBased", 0, true, false)
 
Duster.Entities = {}
Duster.Entities.List = {} //The class namse of all the entities
Duster.Entities.Vars = {}
Duster.Entities.Vars["Active"] = CreateClientConVar("Duster_Entities_Active", 0, true, false)
 
Duster.Misc = {}
Duster.Misc.Vars = {}
Duster.Misc.Vars["ShowAdmins"] = CreateClientConVar("Duster_Misc_ShowAdmins", 0, true, false)
Duster.Misc.Vars["Crosshair"] = CreateClientConVar("Duster_Misc_Cross", 0, true, false)
Duster.Misc.Vars["CrosshairSize"] = CreateClientConVar("Duster_Misc_CrossSize", 50, true, false)
Duster.Misc.Vars["NoRecoil"] = CreateClientConVar("Duster_Misc_NoRecoil", 0, true, false)
Duster.Misc.Vars["NoSpread"] = CreateClientConVar("Duster_Misc_NoSpread", 0, true, false)
Duster.Misc.Vars["ShowSpectators"] = CreateClientConVar("Duster_Misc_ShowSpectators", 0, true, false)
Duster.Misc.Vars["BunnyHop"] = CreateClientConVar("Duster_Misc_BunnyHop", 0, true, false)
Duster.Misc.Vars["BunnyHop_Key"] = CreateClientConVar("Duster_Misc_BunnyHop_Key", "KEY_SPACE", true, false)
Duster.Misc.Vars["AutoReload"] = CreateClientConVar("Duster_Misc_AutoReload", 0, true, false)
Duster.Misc.Vars["AutoPistol"] = CreateClientConVar("Duster_Misc_AutoPistol", 0, true, false)
Duster.Misc.Vars["BuyHealth"] = CreateClientConVar("Duster_Misc_BuyHealth", 0, true, false)
Duster.Misc.Vars["BuyHealth_Minimum"] = CreateClientConVar("Duster_Misc_BuyHealth_Minimum", 80, true, false)
Duster.Misc.Vars["TraitorFinder"] = CreateClientConVar("Duster_Misc_TraitorFinder", 0, true, false)
Duster.Misc.Vars["Deaths"] = CreateClientConVar("Duster_Misc_Deaths", 0, true, false)
Duster.Misc.Vars["Sounds"] = CreateClientConVar("Duster_Misc_Sounds", 0, true, false)
 
Duster.Style = {}
Duster.Style.Vars = {}
Duster.Style.Vars["BoundingBox"] = {}
Duster.Style.Vars["BoundingBox"].var = CreateClientConVar("Duster_Style_BoundingBox", "Color(255, 0, 0, 255)", true, false)
Duster.Style.Vars["BoundingBox"].color = Duster.GetColorFromString(Duster.Style.Vars["BoundingBox"].var:GetString())
Duster.Style.Vars["ESPText"] = {}
Duster.Style.Vars["ESPText"].var = CreateClientConVar("Duster_Style_ESPText", "Color(255, 255, 255, 255)", true, false)
Duster.Style.Vars["ESPText"].color = Duster.GetColorFromString(Duster.Style.Vars["ESPText"].var:GetString())
Duster.Style.Vars["Crosshair"] = {}
Duster.Style.Vars["Crosshair"].var = CreateClientConVar("Duster_Style_Cross", "Color(255, 255, 255, 255)", true, false)
Duster.Style.Vars["Crosshair"].color = Duster.GetColorFromString(Duster.Style.Vars["Crosshair"].var:GetString())
Duster.Style.Vars["BodyText"] = {}
Duster.Style.Vars["BodyText"].var = CreateClientConVar("Duster_Style_BodyText", "Color(255, 255, 255, 255)", true, false)
Duster.Style.Vars["BodyText"].color = Duster.GetColorFromString(Duster.Style.Vars["BodyText"].var:GetString())
Duster.Style.Vars["Chams"] = {}
Duster.Style.Vars["Chams"].var = CreateClientConVar("Duster_Style_Chams", "Color(0, 255, 0, 255)", true, false)
Duster.Style.Vars["Chams"].color = Duster.GetColorFromString(Duster.Style.Vars["Chams"].var:GetString())
Duster.Style.Vars["BodyChams"] = {}
Duster.Style.Vars["BodyChams"].var = CreateClientConVar("Duster_Style_BodyChams", "Color(0, 255, 0, 255)", true, false)
Duster.Style.Vars["BodyChams"].color = Duster.GetColorFromString(Duster.Style.Vars["BodyChams"].var:GetString())
 
//This loads our friends list and custom entities list.
/*Duster.SavedData = CreateClientConVar("Duster_SaveData", Duster.RandomName(math.random(10, 15)), true, false)
if file.Exists(Duster.SavedData:GetString()..".txt", "DATA") then
        local info = string.Explode("\n", file.Read(Duster.SavedData:GetString()..".txt", "DATA"))
        if type(info) == "table" and info[1] and info[2] then
                Duster.Friends.List = util.JSONToTable(info[1])
                Duster.Entities.List = util.JSONToTable(info[2])
        end
end
 
Duster.SaveData = function()
        file.Write(Duster.SavedData:GetString()..".txt", util.TableToJSON(Duster.Friends.List))
        file.Append(Duster.SavedData:GetString()..".txt", "\n")
        file.Append(Duster.SavedData:GetString()..".txt", util.TableToJSON(Duster.Entities.List))
end*/
 
//This is all the bones i look for in the order im looking for them. Feel free to change the order if you want to attack the foot before the head or something like that.
Duster.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"
}
 
//If random bones is enabled this list is gone through, randomly, and if none of the bones on this list are found the entire list (above) is gone through.
//If you edit this be sure to edit the function below it.
Duster.RandomBones = {
"ValveBiped.Bip01_Head1",
"ValveBiped.Bip01_Neck1",
"ValveBiped.Bip01_Spine4",
"ValveBiped.Bip01_Spine2",
"ValveBiped.Bip01_R_UpperArm",
"ValveBiped.Bip01_L_UpperArm"
}
Duster.GetRandomBones = function()
        local temp = {}
        local function GetBones() //Ahh recursion, i love you.
                if #Duster.RandomBones > 0 then
                        local random = math.random(1, #Duster.RandomBones)
                        table.insert(temp, Duster.RandomBones[random])
                        table.remove(Duster.RandomBones, random)
                        GetBones()
                else
                        table.insert(Duster.RandomBones, "ValveBiped.Bip01_Head1")
                        table.insert(Duster.RandomBones, "ValveBiped.Bip01_Neck1")
                        table.insert(Duster.RandomBones, "ValveBiped.Bip01_Spine4")
                        table.insert(Duster.RandomBones, "ValveBiped.Bip01_Spine2")
                        table.insert(Duster.RandomBones, "ValveBiped.Bip01_R_UpperArm")
                        table.insert(Duster.RandomBones, "ValveBiped.Bip01_L_UpperArm")
                end
        end
        GetBones()
        return temp
end
[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",
[78] = "KEY_BREAK",
[79] = "KEY_LSHIFT",
[80] = "KEY_RSHIFT",
[81] = "KEY_LALT",
[82] = "KEY_RALT",
[83] = "KEY_LCONTROL",
[99] = "KEY_F8",
[100] = "KEY_F9",
[101] = "KEY_F10",
[102] = "KEY_F11",
[103] = "KEY_F12",
//[104] = "KEY_CAPSLOCKTOGGLE", //THESE
//[105] = "KEY_NUMLOCKTOGGLE", //MOFOS
//[106] = "KEY_SCROLLLOCKTOGGLE", //SHOULD DIE
[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",
[107] = "MOUSE_LEFT",
[108] = "MOUSE_RIGHT",
[109] = "MOUSE_MIDDLE",
[110] = "MOUSE_4",
[111] = "MOUSE_5"
}
//Tells me if a specific key is pressed. Loops through both tables.
Duster.KeyPressed = function(key)
        if Duster.InChat then return false end
       
        for k = 107, 111 do
                if key == Duster.MouseKeys[k] then
                        if input.IsMouseDown(k) then
                                return true
                        else
                                return false
                        end
                end
        end
       
        for k = 0, 130 do
                if key == Duster.Keys[k] then
                        if input.IsKeyDown(k) then
                                return true
                        else
                                return false
                        end
                end
        end
       
        return false
end
 
//Very simple. If the boolean is true it returns 1. If the boolean is false then it returns 0. I dont think i ended up using this anywhere, but whatever, ill leave it here.
Duster.BoolToInt = function(bool)
        if bool then
                return 1
        else
                return 0
        end
end
 
//Checking if a bone is visible, pos is the position of the bone and ent is the entity whos bone were looking for.
Duster.SpotIsVisible = function(pos, ent)
        ent = ent or Duster.Aimbot.CurTarget
        local tracedata = {}
        tracedata.start = Duster.Ply:GetShootPos()
        tracedata.endpos = pos
        tracedata.filter = {Duster.Ply, ent}
       
        local trace = util.TraceLine(tracedata)
        if trace.HitPos:Distance(pos) < 0.005 then
                return true
        else
                return false
        end
end
 
//Checks all of the entities bones to find if we can see this entity or not.
Duster.CanSee = function(ent)
        for k = 1, #Duster.Bones do
                local v = Duster.Bones[k]
                local bone = ent:LookupBone(v)
                if bone != nil then
                        local pos, ang = ent:GetBonePosition(bone)
                        if Duster.SpotIsVisible(pos, ent) then
                                return true
                        end
                end
        end
        return false
end
 
//This returns the next entity we should attack.
Duster.GetTarget = function()
        if Duster.Aimbot.Vars["AttackNPCs"]:GetBool() or Duster.Aimbot.Vars["AttackPlayers"]:GetBool() then
                local targets = {}
                local everything = ents.GetAll()
                for k = 1, #everything do
                        local v = everything[k]
                        if Duster.Aimbot.Vars["AttackNPCs"]:GetBool() and v:IsNPC() then
                                if Duster.CanSee(v) then
                                        table.insert(targets, {["Target"] = v, ["Pos"] = v:LocalToWorld(v:OBBCenter())})
                                end
                        elseif Duster.Aimbot.Vars["AttackPlayers"]:GetBool() and v:IsPlayer() and v != Duster.Ply then
                                if Duster.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 distance < min["Distance"] then
                                        min = {["Distance"] = distance, ["Target"] = v["Target"]}
                                end
                        end
                        min["Target"].BoneToAimAt = nil
                        return min["Target"]
                elseif Duster.Aimbot.Vars["Preferance"]:GetString() == "Angle" then             
                        local min = {["Angle"] = Duster.AngleTo(targets[1]["Pos"]), ["Target"] = targets[1]["Target"]}
                        for k = 1, #targets do
                                local v = targets[k]
                               
                                local angle = Duster.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
 
//This returns the total angle away from the target we are, and then the pitch and yaw seperately
Duster.AngleTo = function(pos)
        local myAngs = Duster.Ply:GetAngles()
        local needed = (pos - Duster.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
 
//Returns true if our target meets our preferances.
Duster.ValidTarget = function()
        if Duster.Aimbot.CurTarget == nil then return false end
        if not IsValid(Duster.Aimbot.CurTarget) then return false end
        if Duster.Aimbot.CurTarget:IsPlayer() and (not Duster.Aimbot.CurTarget:Alive() or Duster.Aimbot.CurTarget:Team() == TEAM_SPECTATOR or Duster.Aimbot.CurTarget:Health() < 1) then return false end
        if not Duster.Aimbot.Vars["AttackNPCs"]:GetBool() and Duster.Aimbot.CurTarget:IsNPC() then return false end
        if not Duster.Aimbot.Vars["AttackPlayers"]:GetBool() and Duster.Aimbot.CurTarget:IsPlayer() then return false end
        if not Duster.CanSee(Duster.Aimbot.CurTarget) then return false end
        if Duster.Aimbot.Vars["IgnoreTeam"]:GetBool() and Duster.Aimbot.CurTarget:IsPlayer() then
                if Duster.TTT then
                        if Duster.Ply:GetRole() == 1 and Duster.Aimbot.CurTarget:GetRole() == 1 then return false end                            
                        if Duster.Ply:GetRole() != 1 and not table.HasValue(Duster.Traitors, Duster.Aimbot.CurTarget) then return false end
                else
                        if Duster.Aimbot.CurTarget:Team() == Duster.Ply:Team() then return false end
                end
        end
       
        return true
end
 
hook.Add("RenderScreenspaceEffects", Duster.RandomName(math.random(10, 15)), function()
        if Duster.Active:GetBool() then
                local everything = ents.GetAll()
                for k = 1, #everything do
                        local v = everything[k]
                       
                        if Duster.Chams.Vars["Active"]:GetBool() and v != Duster.Ply and (Duster.Chams.Vars["MaxDistance"]:GetInt() == 0 or v:GetPos():Distance(Duster.Ply:GetPos()) < Duster.Chams.Vars["MaxDistance"]:GetInt()) then
                                cam.Start3D(EyePos(), EyeAngles())
                                        if (v:IsPlayer() and v:Alive() and v:Team() != TEAM_SPECTATOR and Duster.Chams.Vars["Players"]:GetBool()) or (v:IsNPC() and v:Health() > 0 and Duster.Chams.Vars["NPCs"]:GetBool()) then
                                                local color = Duster.Style.Vars["Chams"].color
                                                if Duster.Chams.Vars["TeamBased"]:GetBool() and v:IsPlayer() then
                                                        color = team.GetColor(v:Team())
                                                        if Duster.TTT then
                                                                if v:GetRole() == 2 then
                                                                        color = Color(0, 0, 255, 255)
                                                                elseif table.HasValue(Duster.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(Duster.Chams.Mat)
                                                v:DrawModel()
                                               
                                                render.SetColorModulation((color.r + 150)/250, (color.g + 150)/250, (color.b + 150)/255, 1)                                            
                                                if IsValid(v:GetActiveWeapon()) and Duster.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)
                                                 local color = Duster.Style.Vars["Chams"].color                                  
                                                render.SuppressEngineLighting(true)    
                                                render.SetColorModulation(color.r/255, color.g/255, color.b/255, 1)
                                                render.MaterialOverride(Duster.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)
 
//Helper function on radar. I just copied this one from the wiki.
Duster.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
 
//Another helper fuction on the radar.
Duster.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
 
Duster.Traitors = {}
Duster.SuperAdmins = {}
Duster.Admins = {}
Duster.Spectators = {}
local radarX, radarY, radarWidth, radarHeight = 100, 200, 150, 150
hook.Add("HUDPaint", Duster.RandomName(math.random(10, 15)), function()
        if Duster.Active:GetBool() then 
                local everything = ents.GetAll()
                      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 Duster.ESP.Vars["TeamBased"]:GetBool() then
                                                        surface.SetDrawColor(color)
                                                else
                                                        surface.SetDrawColor(Duster.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 Duster.ESP.Vars["ShowTraitors"]:GetString() != "Off" and table.HasValue(Duster.Traitors, v) then
                                                if Duster.ESP.Vars["ShowTraitors"]:GetString() == "Above" then
                                               d    
                                       
                                        if Duster.ESP.Vars["Health"]:GetString() == "Above" then
                                                DrawAbove("HP: "..v:Health())
                                        elseif Duster.ESP.Vars["Health"]:GetString() == "Below" then
                                                DrawBelow("HP: "..v:Health())
                                        end
                                       
                                        if Duster.ESP.Vars["Radar"]:GetBool() then
                                                surface.SetDrawColor(color)
                                                local myPos = Duster.Ply:GetPos()
                                                local theirPos = v:GetPos()
                                                local myAngles = Duster.Ply:GetAngles()
                                               
                                                local theirX = (radarX + (radarWidth / 2)) + ((theirPos.x - myPos.x) / Duster.ESP.Vars["RadarScale"]:GetInt())
                                                local theirY = (radarY + (radarHeight / 2)) + ((myPos.y - theirPos.y) / Duster.ESP.Vars["RadarScale"]:GetInt())
                                               
                                                //Now i have to rotate this
                                                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))
                                               
                                                //And now that its rotated i can check if its within our radars bounds and draw it
                                                if newX < (radarX + radarWidth) and newX > radarX and newY < (radarY + radarHeight) and newY > radarY then
                                                        Duster.DrawArrow(newX, newY, v:EyeAngles().y - myAngles.y)
                                                end
                                        end
                                elseif Duster.TTT and Duster.ESP.Vars["Bodies"]:GetBool() and v:GetClass() == "prop_ragdoll" then
                                        surface.SetFont("ESPFont")
                                       
                                        //Im just going to position this info at the center of the player, if i get any complaints ill change it
                                        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(Duster.Style.Vars["BodyText"].color)
                                        DrawText("Credits: "..Duster.TTTCORPSE.GetCredits(v, 0))
                                        DrawText("Name: "..Duster.TTTCORPSE.GetPlayerNick(v, "Unknown"))
                                        DrawText("Found: "..tostring(Duster.TTTCORPSE.GetFound(v, false)))
                                       
                                        if Duster.ESP.Vars["Radar"] then
                                                surface.SetDrawColor(Duster.Style.Vars["BodyText"].color)
                                                local myPos = Duster.Ply:GetPos()
                                                local theirPos = v:GetPos()
                                               
                                                local theirX = (radarX + (radarWidth / 2)) + ((theirPos.x - myPos.x) / Duster.ESP.Vars["RadarScale"]:GetInt())
                                                local theirY = (radarY + (radarHeight / 2)) + ((myPos.y - theirPos.y) / Duster.ESP.Vars["RadarScale"]:GetInt())
                                               
                                                //Now i have to rotate this
                                                local myRotation = Duster.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))
                                               
                                                //And now that its rotated i can check if its within our radars bounds and draw it
                                                if newX < (radarX + radarWidth) and newX > radarX and newY < (radarY + radarHeight) and newY > radarY then
                                                        Duster.DrawFilledCircle(newX, newY, 2, 4)
                                                end
                                        end
                                elseif Duster.Entities.Vars["Active"]:GetBool() and table.HasValue(Duster.Entities.List, v:GetClass()) then
                                        su  table.remove(Duster.SuperAdmins, k)
                                end
                        end
                               
                        if v:IsPlayer() and v:GetObserverTarget() == Duster.Ply then
                                if not table.HasValue(Duster.Spectators, v) then
                                        table.insert(Duster.Spectators, v)
                                        Duster.Message(v:Nick().." started spectating you.")
                                        if Duster.Misc.Vars["Sounds"]:GetBool() then
                                                surface.PlaySound("vo/npc/female01/ohno.wav")
                                        end                            
                                end
                        end
                        for k,v in SortedPairs(Duster.Spectators, true) do
                                if IsValid(v) then
                                        if v:GetObserverTarget() != Duster.Ply then
                                                table.remove(Duster.Spectators, k)
                                        end
                                else
                                        table.remove(Duster.Spectators, k)
                                end
                        end
                       
                        if Duster.TTT and Duster.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
                                                Duster.Message(owner:Nick().." bought a traitor weapon: "..v:GetClass())
                                                v.Buyer = owner
                                                table.insert(Duster.Traitors, owner)
                                                if Duster.Misc.Vars["Sounds"]:GetBool() then
                                                        surface.PlaySound("weapons/shotgun/shotgun_cock.wav")
                                                end    
                                        end
                                elseif GetRoundState() != 3 then
                                        table.Empty(Duster.Traitors)
                                end
                        end
                       
                        if Duster.Misc.Vars["Deaths"]:GetBool() and v:IsPlayer() then
                                if v:Alive() then
                                        v.Is
                        for k,v in pairs(Duster.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(Duster.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(Duster.Admins) do
                                local text = v:Nick().." - Admin"
                                local W, H = surface.GetTextSize(text)
                                surface.SetTextPos(ScrW() - 20 - AdminWidest, AdminHeight)
                                surface.DrawText(text)
                                AdminHeight = AdmAlive = true
                                elseif v.IsAlive then
                                        Duster.Message(3, v:Nick().." just died.")
                                        v.IsAlive = false
                                        if Duster.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 Duster.Misc.Vars["ShowAdmins"]:GetBool() then
                        for k,v in pairs(Duster.SuperAdmins) do
                                local W, H = surface.GetTextSize(v:Nick().." - Super Admin")
                                if W > AdminWidest then
                                        AdminWidest = W
                                end
                                Admin******eight = Admin******eight + H
                        endinHeight + H
                        end
                end
               
                local SpecWidest = 0
                local Spec******eight = 0
                local SpecHeight = Admin******eight + 50
                if Duster.Misc.Vars["ShowSpectators"]:GetBool() then
                        for k,v in pairs(Duster.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(Duster.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 Duster.Misc.Vars["Crosshair"]:GetBool() then
                        local size = Duster.Misc.Vars["CrosshairSize"]:GetInt()
                        local MiddleScreen = {x = surface.ScreenWidth() / 2, y = surface.ScreenHeight() / 2}
                        surface.SetDrawColor(Duster.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)
 
hook.Add("Think", Duster.RandomName(math.random(10, 15)), function()
        if Duster.Active:GetBool() then 
                if Duster.Aimbot.Vars["Active"]:GetBool() and not (Duster.Aimbot.Vars["PanicMode"]:GetBool() and #Duster.Spectators > 0) then
                        if not Duster.Aimbot.Vars["AimOnKey"]:GetBool() or (Duster.Aimbot.Vars["AimOnKey"]:GetBool() and Duster.KeyPressed(Duster.Aimbot.Vars["AimOnKey_Key"]:GetString())) then
                                if Duster.ValidTarget() then
                                        local BoneOrder = {}
                                        if Duster.Aimbot.CurTarget.BoneToAimAt and Duster.Aimbot.Vars["RandomBones"]:GetBool() then
                                                table.insert(BoneOrder, Duster.Aimbot.CurTarget.BoneToAimAt)
                                                table.Add(BoneOrder, Duster.GetRandomBones())
                                                table.Add(BoneOrder, Duster.Bones)
                                        else
                                                if Duster.Aimbot.Vars["RandomBones"]:GetBool() then
                                                        table.Add(BoneOrder, Duster.GetRandomBones())
                                                        table.Add(BoneOrder, Duster.Bones)
                                                else
                                                        table.Add(BoneOrder, Duster.Bones)
                                                end
                                        end
                                        for k = 1, #BoneOrder do
                                                local v = BoneOrder[k]
                                                local bone = Duster.Aimbot.CurTarget:LookupBone(v)
                                                if bone != nil then
                                                        local pos, ang = Duster.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 Duster.Aimbot.Vars["Prediction"]:GetBool() then
                                                                local tarSpeed = Duster.Aimbot.CurTarget:GetVelocity() * 0.013
                                                                local plySpeed = Duster.Ply:GetVelocity() * 0.013
                                                                total, needed = Duster.AngleTo(pos - plySpeed + tarSpeed)
                                                        else
                                                                total, needed = Duster.AngleTo(pos)
                                                        end
                                                               
                                                        if Duster.SpotIsVisible(pos) and total < Duster.Aimbot.Vars["MaxAngle"]:GetInt() then
                                                                local myAngles = Duster.Ply:GetAngles()                                                         
                                                                local NewAngles = Angle(myAngles.p + needed.p, myAngles.y + needed.y, 0)
                                                               
                                                                if Duster.Aimbot.Vars["AntiSnap"]:GetBool() then
                                                                        local speed = Duster.Aimbot.Vars["AntiSnapSpeed"]:GetInt()
                                                                        NewAngles = (Angle(math.Approach(myAngles.p, NewAngles.p, speed), math.Approach(myAngles.y, NewAngles.y, speed), 0))
                                                                end
                                                               
                                                                Duster.Ply:SetEyeAngles(NewAngles)
                                                               Duster.Aimbot.CurTarget.BoneToAimAt = BoneOrder[k]
                                                                
                                        weapon.OldRecoil = weapon.OldRecoil or weapon.Primary.Recoil or weapon.Recoil
                                        weapon.Primary.Recoil = 0
                                        weapon.Recoil =
                        else
                                Duster.Aimbot.CurTarget = nil
                        end
                end
               
                if Duster.Misc.Vars["NoRecoil"]:GetBool() then
                        if IsValid(Duster.Ply:GetActiveWeapon()) then
                                local weapon = Duster.Ply:GetActiveWeapon()
                                if weapon.Primary then
                end

                if Duster.Misc.Vars["NoSpread"]:GetBool() then
                        if IsValid(Duster.Ply:GetActiveWeapon()) then
                                local weapon = Duster.Ply:GetActiveWeapon()
                                if weapon.Primary then
                                        weapon.OldSpread = weapon.OldSpread or weapon.Primary.Spread or weapon.Spread
					weapon.OldCone = weapon.OldCone or  weapon.Primary.Cone or weapon.Cone
                                        weapon.Primary.Spread = 0
                                        weapon.Spread = 0
					weapon.Primary.Cone = 0
					weapon.Cone = 0
                                else
                                        weapon.OldSpread = weapon.OldSpread or weapon.Spread
					weapon.OldCone = weapon.OldCone or weapon.Cone
                                        weapon.Spread = 0
					weapon.Cone = 0
                                end
                        end
                elseif IsValid(Duster.Ply:GetActiveWeapon()) then
                        local weapon = Duster.Ply:GetActiveWeapon()
                        if weapon.Primary then
                                weapon.Primary.Spread = weapon.OldSpread or weapon.Primary.Spread or weapon.Spread
				weapon.Primary.Cone = weapon.OldCone or weapon.Primary.Cone or weapon.Cone
                                weapon.Spread = weapon.OldSpread or weapon.Spread or weapon.Primary.Spread
				weapon.Cone = weapon.OldCone or weapon.Cone or weapon.Primary.Cone
                        else
                                weapon.Spread = weapon.OldSpread or weapon.Spread
				weapon.Cone = weapon.OldCone or weapon.Cone
                        end
                end
               
                if Duster.DarkRP and Duster.Misc.Vars["BuyHealth"]:GetBool() then
                        if Duster.Ply:Alive() and Duster.Ply:Health() < Duster.Misc.Vars["BuyHealth_Minimum"]:GetInt() then
                                Duster.Ply:ConCommand("say /buyhealth")
                        end
                end
        end
end)
 
Duster.Misc.NextReload = CurTime()
Duster.Misc.ShootNext = true
hook.Add("CreateMove", Duster.RandomName(math.random(10, 15)), function(cmd)
        if Duster.Active:GetBool() then         
                local DontShoot = {"gmod_tool", "gmod_camera", "weapon_physgun", "weapon_physcannon"}
                if Duster.Aimbot.Vars["AutoShoot"]:GetBool() and Duster.Aimbot.Vars["Active"]:GetBool() and Duster.Ply:GetEyeTrace().Entity == Duster.Aimbot.CurTarget and IsValid(Duster.Ply:GetActiveWeapon()) and not table.HasValue(DontShoot, Duster.Ply:GetActiveWeapon():GetClass()) then
                        cmd:SetButtons(cmd:GetButtons() + IN_ATTACK)
                end
               
                if Duster.Misc.Vars["BunnyHop"]:GetBool() and cmd:KeyDown(IN_JUMP) and Duster.KeyPressed(Duster.Misc.Vars["BunnyHop_Key"]:GetString()) then
                        cmd:SetButtons(cmd:GetButtons() - IN_JUMP)
                end
                if Duster.Misc.Vars["BunnyHop"]:GetBool() and Duster.Ply:OnGround() and Duster.KeyPressed(Duster.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 Duster.Misc.Vars["AutoReload"]:GetBool() and IsValid(Duster.Ply:GetActiveWeapon()) and Duster.Ply:GetActiveWeapon():Clip1() < 1 and not table.HasValue(DontReload, Duster.Ply:GetActiveWeapon():GetClass()) and Duster.Misc.NextReload < CurTime() then
                        cmd:SetButtons(cmd:GetButtons() + IN_RELOAD)
                end
               
                if Duster.Misc.Vars["AutoPistol"]:GetBool() and IsValid(Duster.Ply:GetActiveWeapon()) then
                        local weapon = Duster.Ply:GetActiveWeapon()
                        if weapon.Primary and type(
        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
                        Duster.Ply:ConCommand("Duster_Active 0")
                end
                Duster.Ply:ConCommand("Duster_Active 1")
        end
        local function Disable()
                PanicButton:SetText("Enable")
                PanicButton.DoClick = function()
                        PanicButton:SetText("Disable")
                        PanicButton.DoClick = Disable
                        Duster.Ply:ConCommand("Duster_Active 1")
                end
                Duster.Ply:ConCommand("Duster_Active 0")
        end
        if Duster.Active:GetBool() then
                PanicButton:SetText("Disable")
                PanicButton.DoClick = Disable
        else
                PanicButton:SetText("Enable")
                PanicButton.DoClick = Enable
        end
       
        local CloseButton = vgui.Create("DBu
        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)
                        Duster.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
                                                Duster.Ply:ConCommand(var.." "..Duster.MouseKeys[k])
                                                Options:SetText(Duster.MouseKeys[k])
                                                Options.Think = nil
                                        end
                                end
                               
                                for k = 0, 130 do
                                        if input.IsKeyDown(k) then
                                                Duster.Ply:ConCommand(var.." "..Duster.Keys[k])
                                                Options:SetText(Duster.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)
                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
       
        //Starting the Aimbot panel
        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, "Duster_Aimbot_Active")
        ToggleOption("Random Bones", Aimbot, "Duster_Aimbot_RandomBones")
        MultiOption("Preferance", Aimbot, "Duster_Aimbot_Preferance", {"Distance", "Angle"})    
        ToggleOption("Attack Players", Aimbot, "Duster_Aimbot_AttackPlayers")
        ToggleOption("Attack NPCs", Aimbot, "Duster_Aimbot_AttackNPCs")
        ToggleOption("Prediction", Aimbot, "Duster_Aimbot_Prediction")
        ToggleOption("Aim On Key", Aimbot, "Duster_Aimbot_AimOnKey")
        SetKeyOption("Key", Aimbot, "Duster_Aimbot_AimOnKey_Key")
        ToggleOption("Anti Snap", Aimbot, "Duster_Aimbot_AntiSnap")
        SetNumberOption("Anti Snap Speed", Aimbot, "Duster_Aimbot_AntiSnapSpeed", 1, 5, 2)
        SetNumberOption("Max Angle", Aimbot, "Duster_Aimbot_MaxAngle", 0, 270, 0)
        ToggleOption("Auto Shoot", Aimbot, "Duster_Aimbot_AutoShoot")
        ToggleOption("Panic Mode", Aimbot, "Duster_Aimbot_PanicMode")
        ToggleOption("Ignore Team", Aimbot, "Duster_Aimbot_IgnoreTeam")
       
        if y > 465 then
                Aimbot:SetTall(y)
        end
       
        //This is the best way i can find to add a scrollbar to the menu...
        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")
       
        //Starting the Friends panel
        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")
        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
               
                Duster.Friends.List = {}
                for k = 1, #Friends do
                        table.insert(Duster.Friends.List, Friends[k]:SteamID())
                end
        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, "Duster_ESP_Active")
        ToggleOption("Player Info", ESP, "Duster_ESP_Players")
        ToggleOption("NPC Info", ESP, "Duster_ESP_NPCs")
        MultiOption("Name", ESP, "Duster_ESP_Name", {"Off", "Above", "Below"})  
        MultiOption("Weapon", ESP, "Duster_ESP_Weapons", {"Off", "Above", "Below"})     
        MultiOption("Health", ESP, "Duster_ESP_Health", {"Off", "Above", "Below"})      
        MultiOption("Distance", ESP, "Duster_ESP_Distance", {"Off", "Above", "Below"})
        MultiOption("Show Traitors", ESP, "Duster_ESP_ShowTraitors", {"Off", "Above", "Below"})
        ToggleOption("Bounding Box", ESP, "Duster_ESP_Box")
        ToggleOption("Body Info", ESP, "Duster_ESP_Bodies")
        ToggleOption("2D Radar", ESP, "Duster_ESP_Radar")
        SetNumberOption("Radar Scale", ESP, "Duster_ESP_RadarScale", 1, 100, 0)
        SetNumberOption("Max Distance", ESP, "Duster_ESP_MaxDistance", 0, 8000, 0)
        ToggleOption("Team Based", ESP, "Duster_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")
       
        //Starting the Chams panel
        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, "Duster_Chams_Active")
        ToggleOption("Draw Players", Chams, "Duster_Chams_Players")
        ToggleOption("Draw NPCs", Chams, "Duster_Chams_NPCs")
        ToggleOption("Draw Weapons", Chams, "Duster_Chams_Weapons")
        ToggleOption("Draw Bodies", Chams, "Duster_Chams_Bodies")
        ToggleOption("Team Based", Chams, "Duster_Chams_TeamBased")
        SetNumberOption("Max Distance", Chams, "Duster_Chams_MaxDistance", 0, 8000, 0)
       Scrollbar(true)
        ChamsList:AddItem(Chams)
                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
               
                Duster.Entities.List = {}
                for k = 1, #ToShow do
                        table.insert(Duster.Entities.List, ToShow[k])
                end
                //Duster.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
               
                Duster.Entities.List = {}
                for k = 1, #ToShow do
                        table.insert(Duster.Entities.List, ToShow[k])
                end
                //Duster.SaveData()
        end
       
        y = y + IgnoreList:GetTall() + 20
        ToggleOption("Active", Finder, "Duster_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")
       
        //Starting the Misc panel
        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, "Duster_Misc_ShowAdmins")
        ToggleOption("Crosshair", Misc, "Duster_Misc_Cross")
        SetNumberOption("Corsshair Size", Misc, "Duster_Misc_CrossSize", 0, 1000, 0)
        ToggleOption("No Recoil", Misc, "Duster_Misc_NoRecoil")
	ToggleOption("No Spread", Misc, "Duster_Misc_NoSpread")
        ToggleOption("Spectators", Misc, "Duster_Misc_ShowSpectators")
        ToggleOption("Auto Reload", Misc, "Duster_Misc_AutoReload")
        ToggleOption("Bunny Hop", Misc, "Duster_Misc_BunnyHop")
        SetKeyOption("Key", Misc, "Duster_Misc_BunnyHop_Key")
        ToggleOption("Auto Pistol", Misc, "Duster_Misc_AutoPistol")
        ToggleOption("Buy Health", Misc, "Duster_Misc_BuyHealth")
        SetNumberOption("Minimum", Misc, "Duster_Misc_BuyHealth_Minimum", 0, 100, 0)
        ToggleOption("Traitor Finder", Misc, "Duster_Misc_TraitorFinder")
        ToggleOption("Show Deaths", Misc, "Duster_Misc_Deaths")
        ToggleOption("Sounds", Misc, "Duster_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)//Duster.GetColorFromString(GetConVar(var):GetString()))
                Options:SetWangs(false)
                Options:SetPalette(false)
                Options.ValueChanged = function(panel, color)
                        Duster.Ply:ConCommand(tab.var:GetName().." ".."Color("..color.r..","..color.g..","..color.b..","..color.a..")")
                        tab.color = Duster.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
        //Starting the Style panel
        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, Duster.Style.Vars["BoundingBox"])
        ColorOption("ESP Text", Style, Duster.Style.Vars["ESPText"])
        ColorOption("Crosshair", Style, Duster.Style.Vars["Crosshair"])
        ColorOption("TTT Body Text", Style, Duster.Style.Vars["BodyText"])
        ColorOption("Chams", Style, Duster.Style.Vars["Chams"])
        ColorOption("TTT Body Chams", Style, Duster.Style.Vars["BodyChams"])
       
        if y > 465 then
AccessorFunc( PANEL, "ActiveButton", "ActiveButton" )
 
--[[---------------------------------------------------------
Name: Init
-----------------------------------------------------------]]
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
 
--[[---------------------------------------------------------
Name: AddSheet
-----------------------------------------------------------]]
function PANEL:AddSheet( label, panel, material )
        if ( !IsValid( panel ) ) then return end
 
        local Sheet = {}
 
 
        if ( self.ButtonOnly ) then
                Sheet.Button:SizeToContents()
                Sheet.Button:SetColor( Color( 150, 150, 150, 255 ) )
        end
 
        table.insert( self.Items, SheetColor( 150, 150, 150, 255 ) )
 
        self.Content:InvalidateLayout()
end
 
derma.DefineControl( "DColumnSheet", "", PANEL, "Panel" )
 
Duster.Message("Hack Loaded")
Hmm gg thanks i guess gonna test now
Quote Originally Posted by divian View Post
Hmm gg thanks i guess gonna test now
no problm. where is my thanks?
thanks this looks good
Korki i installed ur hack rly awsome good job!! but the aimbot doesnt work c++ aimbot could u PLEASE help me or can i add u on skype ik ben ook van belgie if i turn it on it spams the chat is there any way to fix it thanks for reading

- - - Updated - - -

btw i dont know ANYTHING about coding im just here for the hacks and i rly have to say the traffic hack looks great but the aimbot doesnt work ;(

- - - Updated - - -

PLEASE HOW DO I FIX THE AIMBOT!!!! ;((((((((((((((((((((((((((((((((((((((((((((((((( ((((((((((((((((((((((((((((((((((((((
Quote Originally Posted by Dexter2001d View Post
Korki i installed ur hack rly awsome good job!! but the aimbot doesnt work c++ aimbot could u PLEASE help me or can i add u on skype ik ben ook van belgie if i turn it on it spams the chat is there any way to fix it thanks for reading

- - - Updated - - -

btw i dont know ANYTHING about coding im just here for the hacks and i rly have to say the traffic hack looks great but the aimbot doesnt work ;(

- - - Updated - - -

PLEASE HOW DO I FIX THE AIMBOT!!!! ;((((((((((((((((((((((((((((((((((((((((((((((((( ((((((((((((((((((((((((((((((((((((((
you're safe now
//Ahh recursion, i love you. is every hack on this website just C+Ped ahack?
100% ahack c + p with changed name wow
How to install? 0.o
Check your garbage code before you post it
Quote Originally Posted by awoo View Post
Check your garbage code before you post it
Check your garbage albania before you post it
Posts 1–15 of 17 · Page 1 of 2
This thread is closed for replies.

Similar Threads

Tags for this Thread

None

Talk with us