AHEK - AHack Speed-Up!

Posts 1–10 of 10 · Page 1 of 1
AHEK - AHack Speed-Up!
AHEK v1.5.5

Features:
all shit from AHack v1.5.0
faster (localized all of garry's shitty libraries, cmd:SetViewAngles instead of player:SetEyeAngles)
less detected ("ESPFont", wtf atheon?)

Code:
--[[
AHEK v1.5.5

Changes from AHack v1.5.0:
	Localized all libraries
	Removed useless stuff
	Aimbot now uses cmd:SetViewAngles instead of player:SetEyeAngles (GOTTA GO FASTER!1!11!)
	NOT AS DETECTED! ("espfont", wtf atheon?)
	
Credits:
	Atheon - Main hack
	cdriza - Speeding shit up
--]]
local debug = debug
local chat = chat
local surface = surface
local cam = cam
local draw = draw
local render = render
local util = util
local table = table
local math = math
local concommand = concommand
local input = input
local team = team
local hook = hook
local ents = ents
local vgui = vgui
local player = player
local net = net
local notification = notification
local Angle = Angle
local Color = Color
local require = require 
local Entity = Entity
local IsValid = IsValid
local GetConVar = GetConVar
local FindMetaTable = FindMetaTable
local tobool = tobool
local LocalPlayer = LocalPlayer
local RunConsoleCommand = RunConsoleCommand
local CreateClientConVar = CreateClientConVar
local GetConVarNumber = GetConVarNumber
local pairs = pairs
local Material = Material
local unpack = unpack
local tonumber = tonumber
local tostring = tostring
local type = type
local Vector = Vector
local RunString = RunString
local ScrW = ScrW
local ScrH = ScrH
local MsgC = MsgC
local __eq = __eq
local __tostring = __tostring
local __gc = __mul 
local __index = __index
local __concat = __concat
local __newindex = __newindex 
local __add = __add
local __sub = __sub 
local __div  = __div 
local __call = __call 
local __pow = __pow 
local __unm = __unm 
local __lt = __lt 
local __le = __le 
local __mode = __mode 
local __metatable = __metatable
local _R = debug.getregistry();
local _G = _G;
local AHack = {}
AHack.Active = CreateClientConVar("AHEK_Active", 1, true, false)
AHack.Version = "1.5.5"
AHack.Ply = LocalPlayer()
AHack.TTT = (GAMEMODE and GAMEMODE.Name and string.find(GAMEMODE.Name, "Terror") and true) or false
if AHack.TTT then AHack.TTTCORPSE = CORPSE end
AHack.DarkRP = (GAMEMODE and GAMEMODE.Name and string.find(GAMEMODE.Name, "DarkRP") and true) or false
AHack.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
AHack.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"}
AHack.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(AHack.Chars))
		else
			toReturn = toReturn..table.Random(AHack.Chars)
		end
	end
	return toReturn
end
AHack.Message = function(...)
	chat.AddText(Color(50, 255, 100), "[AHack] ", ...)
end
AHack.Aimbot = {}
AHack.Aimbot.CurTarget = nil
AHack.Aimbot.Vars = {}
AHack.Aimbot.Vars["Active"] = CreateClientConVar("AHEK_Aimbert_Active", 0, true, false)
AHack.Aimbot.Vars["RandomBones"] = CreateClientConVar("AHEK_Aimbert_RandomBones", 0, true, false)
AHack.Aimbot.Vars["AttackNPCs"] = CreateClientConVar("AHEK_Aimbert_AttackNPCs", 0, true, false)
AHack.Aimbot.Vars["AttackPlayers"] = CreateClientConVar("AHEK_Aimbert_AttackPlayers", 0, true, false)
AHack.Aimbot.Vars["Prediction"] = CreateClientConVar("AHEK_Aimbert_Prediction", 0, true, false)
AHack.Aimbot.Vars["AimOnKey"] = CreateClientConVar("AHEK_Aimbert_AimOnKey", 0, true, false)
AHack.Aimbot.Vars["AimOnKey_Key"] = CreateClientConVar("AHEK_Aimbert_AimOnKey_Key", "MOUSE_LEFT", true, false)
AHack.Aimbot.Vars["MaxAngle"] = CreateClientConVar("AHEK_Aimbert_MaxAngle", 180, true, false)
AHack.Aimbot.Vars["Preferance"] = CreateClientConVar("AHEK_Aimbert_Preferance", "Distance", true, false)
AHack.Aimbot.Vars["AntiSnap"] = CreateClientConVar("AHEK_Aimbert_AntiSnap", 0, true, false)
AHack.Aimbot.Vars["AntiSnapSpeed"] = CreateClientConVar("AHEK_Aimbert_AntiSnapSpeed", 4, true, false)
AHack.Aimbot.Vars["AutoShoot"] = CreateClientConVar("AHEK_Aimbert_AutoShoot", 0, true, false)
AHack.Aimbot.Vars["PanicMode"] = CreateClientConVar("AHEK_Aimbert_PanicMode", 0, true, false)
AHack.Aimbot.Vars["IgnoreTeam"] = CreateClientConVar("AHEK_Aimbert_IgnoreTeam", 0, true, false)
AHack.Friends = {}
AHack.Friends.List = {}
AHack.Friends.Vars = {}
AHack.Friends.Vars["Active"] = CreateClientConVar("AHEK_Friends_Active", 0, true, false)
AHack.Friends.Vars["Reverse"] = CreateClientConVar("AHEK_Friends_Reverse", 0, true, false)
AHack.ESP = {}
AHack.ESP.Vars = {}
AHack.ESP.Vars["Active"] = CreateClientConVar("AHEK_WALLHEK_Active", 0, true, false)
AHack.ESP.Vars["Players"] = CreateClientConVar("AHEK_WALLHEK_Players", 0, true, false)
AHack.ESP.Vars["NPCs"] = CreateClientConVar("AHEK_WALLHEK_NPCs", 0, true, false)
AHack.ESP.Vars["Name"] = CreateClientConVar("AHEK_WALLHEK_Name", "Off", true, false)
AHack.ESP.Vars["Weapons"] = CreateClientConVar("AHEK_WALLHEK_Weapons", "Off", true, false)
AHack.ESP.Vars["Distance"] = CreateClientConVar("AHEK_WALLHEK_Distance", "Off", true, false)
AHack.ESP.Vars["Health"] = CreateClientConVar("AHEK_WALLHEK_Health", "Off", true, false)
AHack.ESP.Vars["MaxDistance"] = CreateClientConVar("AHEK_WALLHEK_MaxDistance", 0, true, false)
AHack.ESP.Vars["Box"] = CreateClientConVar("AHEK_WALLHEK_Box", 0, true, false)
AHack.ESP.Vars["ShowTraitors"] = CreateClientConVar("AHEK_WALLHEK_ShowTraitors", "Off", true, false)
AHack.ESP.Vars["Bodies"] = CreateClientConVar("AHEK_WALLHEK_Bodies", 0, true, false)
AHack.ESP.Vars["Radar"] = CreateClientConVar("AHEK_WALLHEK_Radar", 0, true, false)
AHack.ESP.Vars["RadarScale"] = CreateClientConVar("AHEK_WALLHEK_RadarScale", 20, true, false)
AHack.ESP.Vars["TeamBased"] = CreateClientConVar("AHEK_WALLHEK_TeamBased", 0, true, false)
AHack.Chams = {}
AHack.Chams.Mat = CreateMaterial(AHack.RandomName(math.random(10,15)), "VertexLitGeneric", { ["$basetexture"] = "models/debug/debugwhite", ["$model"] = 1, ["$ignorez"] = 1 })
AHack.Chams.Vars = {}
AHack.Chams.Vars["Active"] = CreateClientConVar("AHEK_SWAGCAMOS_Active", 0, true, false)
AHack.Chams.Vars["Players"] = CreateClientConVar("AHEK_SWAGCAMOS_Players", 0, true, false)
AHack.Chams.Vars["NPCs"] = CreateClientConVar("AHEK_SWAGCAMOS_NPCs", 0, true, false)
AHack.Chams.Vars["Weapons"] = CreateClientConVar("AHEK_SWAGCAMOS_Weapons", 0, true, false)
AHack.Chams.Vars["MaxDistance"] = CreateClientConVar("AHEK_SWAGCAMOS_MaxDistance", 0, true, false)
AHack.Chams.Vars["Bodies"] = CreateClientConVar("AHEK_SWAGCAMOS_Bodies", 0, true, false)
AHack.Chams.Vars["TeamBased"] = CreateClientConVar("AHEK_SWAGCAMOS_TeamBased", 0, true, false)
AHack.Entities = {}
AHack.Entities.List = {}
AHack.Entities.Vars = {}
AHack.Entities.Vars["Active"] = CreateClientConVar("AHEK_Entities_Active", 0, true, false)
AHack.Misc = {}
AHack.Misc.Vars = {}
AHack.Misc.Vars["ShowAdmins"] = CreateClientConVar("AHEK_PASTA_ShowAdmins", 0, true, false)
AHack.Misc.Vars["Crosshair"] = CreateClientConVar("AHEK_PASTA_Cross", 0, true, false)
AHack.Misc.Vars["CrosshairSize"] = CreateClientConVar("AHEK_PASTA_CrossSize", 50, true, false)
AHack.Misc.Vars["NoRecoil"] = CreateClientConVar("AHEK_PASTA_NoRecoil", 0, true, false)
AHack.Misc.Vars["ShowSpectators"] = CreateClientConVar("AHEK_PASTA_ShowSpectators", 0, true, false)
AHack.Misc.Vars["BunnyHop"] = CreateClientConVar("AHEK_PASTA_BunnyHop", 0, true, false)
AHack.Misc.Vars["BunnyHop_Key"] = CreateClientConVar("AHEK_PASTA_BunnyHop_Key", "KEY_SPACE", true, false)
AHack.Misc.Vars["AutoReload"] = CreateClientConVar("AHEK_PASTA_AutoReload", 0, true, false)
AHack.Misc.Vars["AutoPistol"] = CreateClientConVar("AHEK_PASTA_AutoPistol", 0, true, false)
AHack.Misc.Vars["BuyHealth"] = CreateClientConVar("AHEK_PASTA_BuyHealth", 0, true, false)
AHack.Misc.Vars["BuyHealth_Minimum"] = CreateClientConVar("AHEK_PASTA_BuyHealth_Minimum", 80, true, false)
AHack.Misc.Vars["TraitorFinder"] = CreateClientConVar("AHEK_PASTA_TraitorFinder", 0, true, false)
AHack.Misc.Vars["Deaths"] = CreateClientConVar("AHEK_PASTA_Deaths", 0, true, false)
AHack.Misc.Vars["Sounds"] = CreateClientConVar("AHEK_PASTA_Sounds", 0, true, false)
AHack.Style = {}
AHack.Style.Vars = {}
AHack.Style.Vars["BoundingBox"] = {}
AHack.Style.Vars["BoundingBox"].var = CreateClientConVar("AHEK_Style_BoundingBox", "Color(255, 0, 0, 255)", true, false)
AHack.Style.Vars["BoundingBox"].color = AHack.GetColorFromString(AHack.Style.Vars["BoundingBox"].var:GetString())
AHack.Style.Vars["ESPText"] = {}
AHack.Style.Vars["ESPText"].var = CreateClientConVar("AHEK_Style_ESPText", "Color(255, 255, 255, 255)", true, false)
AHack.Style.Vars["ESPText"].color = AHack.GetColorFromString(AHack.Style.Vars["ESPText"].var:GetString())
AHack.Style.Vars["Crosshair"] = {}
AHack.Style.Vars["Crosshair"].var = CreateClientConVar("AHEK_Style_Cross", "Color(255, 255, 255, 255)", true, false)
AHack.Style.Vars["Crosshair"].color = AHack.GetColorFromString(AHack.Style.Vars["Crosshair"].var:GetString())
AHack.Style.Vars["BodyText"] = {}
AHack.Style.Vars["BodyText"].var = CreateClientConVar("AHEK_Style_BodyText", "Color(255, 255, 255, 255)", true, false)
AHack.Style.Vars["BodyText"].color = AHack.GetColorFromString(AHack.Style.Vars["BodyText"].var:GetString())
AHack.Style.Vars["Chams"] = {}
AHack.Style.Vars["Chams"].var = CreateClientConVar("AHEK_Style_Chams", "Color(0, 255, 0, 255)", true, false)
AHack.Style.Vars["Chams"].color = AHack.GetColorFromString(AHack.Style.Vars["Chams"].var:GetString())
AHack.Style.Vars["BodyChams"] = {}
AHack.Style.Vars["BodyChams"].var = CreateClientConVar("AHEK_Style_BodyChams", "Color(0, 255, 0, 255)", true, false)
AHack.Style.Vars["BodyChams"].color = AHack.GetColorFromString(AHack.Style.Vars["BodyChams"].var:GetString())
AHack.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"
}
AHack.RandomBones = {
"ValveBiped.Bip01_Head1",
"ValveBiped.Bip01_Neck1",
"ValveBiped.Bip01_Spine4",
"ValveBiped.Bip01_Spine2",
"ValveBiped.Bip01_R_UpperArm",
"ValveBiped.Bip01_L_UpperArm"
}
AHack.GetRandomBones = function()
	local temp = {}
	local function GetBones()
		if #AHack.RandomBones > 0 then
			local random = math.random(1, #AHack.RandomBones)
			table.insert(temp, AHack.RandomBones[random])
			table.remove(AHack.RandomBones, random)
			GetBones()
		else
			table.insert(AHack.RandomBones, "ValveBiped.Bip01_Head1")
			table.insert(AHack.RandomBones, "ValveBiped.Bip01_Neck1")
			table.insert(AHack.RandomBones, "ValveBiped.Bip01_Spine4")
			table.insert(AHack.RandomBones, "ValveBiped.Bip01_Spine2")
			table.insert(AHack.RandomBones, "ValveBiped.Bip01_R_UpperArm")
			table.insert(AHack.RandomBones, "ValveBiped.Bip01_L_UpperArm")
		end
	end
	GetBones()
	return temp
end
AHack.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",
[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"
}
AHack.MouseKeys = {
[107] = "MOUSE_LEFT",
[108] = "MOUSE_RIGHT",
[109] = "MOUSE_MIDDLE",
[110] = "MOUSE_4",
[111] = "MOUSE_5"
}
AHack.KeyPressed = function(key)
	if AHack.InChat then return false end
	
	for k = 107, 111 do
		if key == AHack.MouseKeys[k] then
			if input.IsMouseDown(k) then
				return true
			else
				return false
			end
		end
	end
	for k = 0, 130 do
		if key == AHack.Keys[k] then
			if input.IsKeyDown(k) then
				return true
			else
				return false
			end
		end
	end
	return false
end
AHack.BoolToInt = function(bool)
	if bool then 
		return 1
	else
		return 0
	end
end
 
AHack.SpotIsVisible = function(pos, ent)
	ent = ent or AHack.Aimbot.CurTarget
	local tracedata = {}
	tracedata.start = AHack.Ply:GetShootPos()
	tracedata.endpos = pos
	tracedata.filter = {AHack.Ply, ent}
	
	local trace = util.TraceLine(tracedata)
	if trace.HitPos:Distance(pos) < 0.005 then
		return true
	else
		return false
	end
end

AHack.CanSee = function(ent)
	for k = 1, #AHack.Bones do 
		local v = AHack.Bones[k]
		local bone = ent:LookupBone(v)
		if bone != nil then
			local pos, ang = ent:GetBonePosition(bone)
			if AHack.SpotIsVisible(pos, ent) then
				return true
			end
		end
	end
	return false
end

AHack.GetTarget = function()
	if AHack.Aimbot.Vars["AttackNPCs"]:GetBool() or AHack.Aimbot.Vars["AttackPlayers"]:GetBool() then
		local targets = {}
		local everything = ents.GetAll()
		for k = 1, #everything do 
			local v = everything[k]
			if AHack.Aimbot.Vars["AttackNPCs"]:GetBool() and v:IsNPC() then
				if AHack.CanSee(v) then
					table.insert(targets, {["Target"] = v, ["Pos"] = v:LocalToWorld(v:OBBCenter())})
				end
			elseif AHack.Aimbot.Vars["AttackPlayers"]:GetBool() and v:IsPlayer() and v != AHack.Ply then
				if AHack.CanSee(v) then
					table.insert(targets, {["Target"] = v, ["Pos"] = v:LocalToWorld(v:OBBCenter())})
				end
			end
		end
		
		for k,v in SortedPairs(targets, true) do
			local v = v["Target"]
			local shouldremove = false
			if AHack.Aimbot.Vars["IgnoreTeam"]:GetBool() and v:IsPlayer() then
				if AHack.TTT then
					if AHack.Ply:GetRole() == 1 and v:GetRole() == 1 then
						shouldremove = true
					end
						
					if AHack.Ply:GetRole() != 1 and not table.HasValue(AHack.Traitors, v) then
						shouldremove = true
					end
				else
					if v:Team() == AHack.Ply:Team() then
						shouldremove = true
					end
				end
			end
			
			if AHack.Friends.Vars["Active"]:GetBool() then
				if AHack.Friends.Vars["Reverse"]:GetBool() then
					if not table.HasValue(AHack.Friends.List, v:SteamID()) then
						shouldremove = true
					end
				else
					if table.HasValue(AHack.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 AHack.Aimbot.Vars["Preferance"]:GetString() == "Distance" then
			local min = {["Distance"] = AHack.Ply:GetPos():Distance(targets[1]["Pos"]), ["Target"] = targets[1]["Target"]}
			for k = 1, #targets do 
				local v = targets[k]
				
				local distance = AHack.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 AHack.Aimbot.Vars["Preferance"]:GetString() == "Angle" then		
			local min = {["Angle"] = AHack.AngleTo(targets[1]["Pos"]), ["Target"] = targets[1]["Target"]}
			for k = 1, #targets do 
				local v = targets[k]
				
				local angle = AHack.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

AHack.AngleTo = function(pos)
	local myAngs = AHack.Ply:GetAngles()
	local needed = (pos - AHack.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

AHack.ValidTarget = function()
	if AHack.Aimbot.CurTarget == nil then return false end
	if not IsValid(AHack.Aimbot.CurTarget) then return false end
	if AHack.Aimbot.CurTarget:IsPlayer() and (not AHack.Aimbot.CurTarget:Alive() or AHack.Aimbot.CurTarget:Team() == TEAM_SPECTATOR or AHack.Aimbot.CurTarget:Health() < 1) then return false end
	if not AHack.Aimbot.Vars["AttackNPCs"]:GetBool() and AHack.Aimbot.CurTarget:IsNPC() then return false end
	if not AHack.Aimbot.Vars["AttackPlayers"]:GetBool() and AHack.Aimbot.CurTarget:IsPlayer() then return false end
	if not AHack.CanSee(AHack.Aimbot.CurTarget) then return false end
	if AHack.Aimbot.Vars["IgnoreTeam"]:GetBool() and AHack.Aimbot.CurTarget:IsPlayer() then
		if AHack.TTT then
			if AHack.Ply:GetRole() == 1 and AHack.Aimbot.CurTarget:GetRole() == 1 then return false end				
			if AHack.Ply:GetRole() != 1 and not table.HasValue(AHack.Traitors, AHack.Aimbot.CurTarget) then return false end
		else
			if AHack.Aimbot.CurTarget:Team() == AHack.Ply:Team() then return false end
		end
	end
	
	return true
end

hook.Add("RenderScreenspaceEffects", AHack.RandomName(math.random(10, 15)), function()
	if AHack.Active:GetBool() then
		local everything = ents.GetAll()
		for k = 1, #everything do
			local v = everything[k]
			
			if AHack.Chams.Vars["Active"]:GetBool() and v != AHack.Ply and (AHack.Chams.Vars["MaxDistance"]:GetInt() == 0 or v:GetPos():Distance(AHack.Ply:GetPos()) < AHack.Chams.Vars["MaxDistance"]:GetInt()) then
				cam.Start3D(EyePos(), EyeAngles())
					if (v:IsPlayer() and v:Alive() and v:Team() != TEAM_SPECTATOR and AHack.Chams.Vars["Players"]:GetBool()) or (v:IsNPC() and v:Health() > 0 and AHack.Chams.Vars["NPCs"]:GetBool()) then
						local color = AHack.Style.Vars["Chams"].color
						if AHack.Chams.Vars["TeamBased"]:GetBool() and v:IsPlayer() then
							color = team.GetColor(v:Team())
							if AHack.TTT then
								if v:GetRole() == 2 then
									color = Color(0, 0, 255, 255)
								elseif table.HasValue(AHack.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(AHack.Chams.Mat)
						v:DrawModel()
						
						render.SetColorModulation((color.r + 150)/250, (color.g + 150)/250, (color.b + 150)/255, 1)						
						if IsValid(v:GetActiveWeapon()) and AHack.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 AHack.TTT and AHack.Chams.Vars["Bodies"]:GetBool() and v:GetClass() == "prop_ragdoll" then
						local color = AHack.Style.Vars["BodyChams"].color
						render.SuppressEngineLighting(true)	
						render.SetColorModulation(color.r/255, color.g/255, color.b/255, 1)
						render.MaterialOverride(AHack.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 AHack.Entities.Vars["Active"]:GetBool() and table.HasValue(AHack.Entities.List, v:GetClass()) then
						local color = AHack.Style.Vars["Chams"].color					
						render.SuppressEngineLighting(true)	
						render.SetColorModulation(color.r/255, color.g/255, color.b/255, 1)
						render.MaterialOverride(AHack.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)

AHack.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

AHack.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}
	
	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

AHack.Traitors = {}
AHack.SuperAdmins = {}
AHack.Admins = {}
AHack.Spectators = {}
local radarX, radarY, radarWidth, radarHeight = 100, 200, 150, 150
hook.Add("HUDPaint", AHack.RandomName(math.random(10, 15)), function()
	if AHack.Active:GetBool() then	
		local everything = ents.GetAll()
		
		if AHack.ESP.Vars["Active"]:GetBool() and AHack.ESP.Vars["Radar"]:GetBool() then
			draw****undedBox(0, radarX, radarY, radarWidth, radarHeight, Color(100, 100, 100, 255 ))
			draw.NoTexture()
			if AHack.ESP.Vars["TeamBased"]:GetBool() then
				local color = team.GetColor(AHack.Ply:Team())
				if AHack.TTT then
					if AHack.Ply:GetRole() == 2 then
						color = Color(0, 0, 255, 255)
					elseif AHack.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(AHack.Style.Vars["ESPText"].color)
			end
			AHack.DrawArrow(radarX + (radarWidth / 2), radarY + (radarHeight / 2), 0)
		end
		
		for k = 1, #everything do
			local v = everything[k]
		
			if AHack.ESP.Vars["Active"]:GetBool() and v != AHack.Ply and (AHack.ESP.Vars["MaxDistance"]:GetInt() == 0 or v:GetPos():Distance(AHack.Ply:GetPos()) < AHack.ESP.Vars["MaxDistance"]:GetInt()) then										
				if (v:IsPlayer() and v:Alive() and v:Team() != TEAM_SPECTATOR and AHack.ESP.Vars["Players"]:GetBool()) or (v:IsNPC() and v:Health() > 0 and AHack.ESP.Vars["NPCs"]:GetBool()) then
					local color = AHack.Style.Vars["ESPText"].color
					if AHack.ESP.Vars["TeamBased"]:GetBool() and v:IsPlayer() then
						color = team.GetColor(v:Team())
						if AHack.TTT then
							if v:GetRole() == 2 then
								color = Color(0, 0, 255, 255)
							elseif table.HasValue(AHack.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 AHack.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 AHack.ESP.Vars["TeamBased"]:GetBool() then
							surface.SetDrawColor(color)
						else
							surface.SetDrawColor(AHack.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("AHEK_EXTRA_SEXUAL_PREFERENCES")
					local top = v:GetPos() + Vector(0, 0, Max.z + 10)
					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 AHack.ESP.Vars["ShowTraitors"]:GetString() != "Off" and table.HasValue(AHack.Traitors, v) then
						if AHack.ESP.Vars["ShowTraitors"]:GetString() == "Above" then
							DrawAbove("Traitor")
						else
							DrawBelow("Traitor")
						end
					end
					
					surface.SetTextColor(color)
					if v:IsPlayer() then
						if AHack.ESP.Vars["Name"]:GetString() == "Above" then
							DrawAbove("Name: "..v:Nick())
						elseif AHack.ESP.Vars["Name"]:GetString() == "Below" then
							DrawBelow("Name: "..v:Nick())
						end
					else
						if AHack.ESP.Vars["Name"]:GetString() == "Above" then
							DrawAbove("Name: "..v:GetClass())
						elseif AHack.ESP.Vars["Name"]:GetString() == "Below" then
							DrawBelow("Name: "..v:GetClass())
						end
					end
					
					if AHack.ESP.Vars["Weapons"]:GetString() == "Above" and IsValid(v:GetActiveWeapon()) then
						DrawAbove("Weapon: "..v:GetActiveWeapon():GetClass()) 
					elseif AHack.ESP.Vars["Weapons"]:GetString() == "Below" and IsValid(v:GetActiveWeapon()) then
						DrawBelow("Weapon: "..v:GetActiveWeapon():GetClass()) 
					end		
					
					if AHack.ESP.Vars["Distance"]:GetString() == "Above" then 
						DrawAbove("Distance: "..bottom:Distance(AHack.Ply:GetPos())) 
					elseif AHack.ESP.Vars["Distance"]:GetString() == "Below" then
						DrawBelow("Distance: "..bottom:Distance(AHack.Ply:GetPos())) 
					end	
					
					if AHack.ESP.Vars["Health"]:GetString() == "Above" then 
						DrawAbove("HP: "..v:Health()) 
					elseif AHack.ESP.Vars["Health"]:GetString() == "Below" then
						DrawBelow("HP: "..v:Health()) 
					end
					
					if AHack.ESP.Vars["Radar"]:GetBool() then
						surface.SetDrawColor(color)
						local myPos = AHack.Ply:GetPos()
						local theirPos = v:GetPos()
						local myAngles = AHack.Ply:GetAngles()
						
						local theirX = (radarX + (radarWidth / 2)) + ((theirPos.x - myPos.x) / AHack.ESP.Vars["RadarScale"]:GetInt())
						local theirY = (radarY + (radarHeight / 2)) + ((myPos.y - theirPos.y) / AHack.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
							AHack.DrawArrow(newX, newY, v:EyeAngles().y - myAngles.y)
						end
					end
				elseif AHack.TTT and AHack.ESP.Vars["Bodies"]:GetBool() and v:GetClass() == "prop_ragdoll" then
					surface.SetFont("AHEK_EXTRA_SEXUAL_PREFERENCES")
					
					local pos = v:LocalToWorld(v:OBBCenter())
					local poscreen = pos:ToScreen()
					local W, H = surface.GetTextSize("Sample")
					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(AHack.Style.Vars["BodyText"].color)
					DrawText("Credits: "..AHack.TTTCORPSE.GetCredits(v, 0))
					DrawText("Name: "..AHack.TTTCORPSE.GetPlayerNick(v, "Unknown"))
					DrawText("Found: "..tostring(AHack.TTTCORPSE.GetFound(v, false)))
					
					if AHack.ESP.Vars["Radar"] then
						surface.SetDrawColor(AHack.Style.Vars["BodyText"].color)
						local myPos = AHack.Ply:GetPos()
						local theirPos = v:GetPos()
						
						local theirX = (radarX + (radarWidth / 2)) + ((theirPos.x - myPos.x) / AHack.ESP.Vars["RadarScale"]:GetInt())
						local theirY = (radarY + (radarHeight / 2)) + ((myPos.y - theirPos.y) / AHack.ESP.Vars["RadarScale"]:GetInt())
						
						local myRotation = AHack.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
							AHack.DrawFilledCircle(newX, newY, 2, 4)
						end
					end
				elseif AHack.Entities.Vars["Active"]:GetBool() and table.HasValue(AHack.Entities.List, v:GetClass()) then
					surface.SetFont("AHEK_EXTRA_SEXUAL_PREFERENCES")
					surface.SetTextColor(AHack.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(AHack.SuperAdmins, v) then
					table.insert(AHack.SuperAdmins, v) 
					AHack.Message("Super Admin "..v:Nick().." joined the game.")
					if AHack.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(AHack.Admins, v) then
					table.insert(AHack.Admins, v)
					AHack.Message("Admin "..v:Nick().." joined the game.")
					if AHack.Misc.Vars["Sounds"]:GetBool() then
						surface.PlaySound("vo/npc/Alyx/watchout01.wav")
					end	
				end
			end		
			for k,v in SortedPairs(AHack.Admins, true) do
				if not IsValid(v) then
					table.remove(AHack.Admins, k)
				end
			end
			for k,v in SortedPairs(AHack.SuperAdmins, true) do
				if not IsValid(v) then
					table.remove(AHack.SuperAdmins, k)
				end
			end
				
			if v:IsPlayer() and v:GetObserverTarget() == AHack.Ply then
				if not table.HasValue(AHack.Spectators, v) then
					table.insert(AHack.Spectators, v)
					AHack.Message(v:Nick().." started spectating you.")
					if AHack.Misc.Vars["Sounds"]:GetBool() then
						surface.PlaySound("vo/npc/female01/ohno.wav")
					end				
				end
			end
			for k,v in SortedPairs(AHack.Spectators, true) do
				if IsValid(v) then
					if v:GetObserverTarget() != AHack.Ply then
						table.remove(AHack.Spectators, k)
					end
				else
					table.remove(AHack.Spectators, k)
				end
			end
			
			if AHack.TTT and AHack.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
						AHack.Message(owner:Nick().." bought a traitor weapon: "..v:GetClass())
						v.Buyer = owner
						table.insert(AHack.Traitors, owner)
						if AHack.Misc.Vars["Sounds"]:GetBool() then
							surface.PlaySound("weapons/shotgun/shotgun_cock.wav")
						end	
					end
				elseif GetRoundState() != 3 then
					table.Empty(AHack.Traitors)
				end
			end
			
			if AHack.Misc.Vars["Deaths"]:GetBool() and v:IsPlayer() then
				if v:Alive() then
					v.IsAlive = true
				elseif v.IsAlive then
					AHack.Message(3, v:Nick().." just died.")
					v.IsAlive = false
					if AHack.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 AHack.Misc.Vars["ShowAdmins"]:GetBool() then 
			for k,v in pairs(AHack.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(AHack.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(AHack.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(AHack.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 AHack.Misc.Vars["ShowSpectators"]:GetBool() then
			for k,v in pairs(AHack.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(AHack.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 AHack.Misc.Vars["Crosshair"]:GetBool() then
			local size = AHack.Misc.Vars["CrosshairSize"]:GetInt()
			local MiddleScreen = {x = surface.ScreenWidth() / 2, y = surface.ScreenHeight() / 2}
			surface.SetDrawColor(AHack.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("CreateMove", AHack.RandomName(math.random(10, 15)), function(cmd)
	if AHack.Active:GetBool() then	
		if AHack.Aimbot.Vars["Active"]:GetBool() and not (AHack.Aimbot.Vars["PanicMode"]:GetBool() and #AHack.Spectators > 0) then
			if not AHack.Aimbot.Vars["AimOnKey"]:GetBool() or (AHack.Aimbot.Vars["AimOnKey"]:GetBool() and AHack.KeyPressed(AHack.Aimbot.Vars["AimOnKey_Key"]:GetString())) then
				if AHack.ValidTarget() then
					local BoneOrder = {}
					if AHack.Aimbot.CurTarget.BoneToAimAt and AHack.Aimbot.Vars["RandomBones"]:GetBool() then
						table.insert(BoneOrder, AHack.Aimbot.CurTarget.BoneToAimAt)
						table.Add(BoneOrder, AHack.GetRandomBones())
						table.Add(BoneOrder, AHack.Bones)
					else
						if AHack.Aimbot.Vars["RandomBones"]:GetBool() then
							table.Add(BoneOrder, AHack.GetRandomBones())
							table.Add(BoneOrder, AHack.Bones)
						else
							table.Add(BoneOrder, AHack.Bones)
						end
					end
					for k = 1, #BoneOrder do 
						local v = BoneOrder[k]
						local bone = AHack.Aimbot.CurTarget:LookupBone(v)
						if bone != nil then
							local pos, ang = AHack.Aimbot.CurTarget:GetBonePosition(bone)
							if v == "ValveBiped.Bip01_Head1" then
								pos = pos + Vector(0, 0, 3)
							end
							local total, needed = 300, {300, 300}
							
							if AHack.Aimbot.Vars["Prediction"]:GetBool() then
								local tarSpeed = AHack.Aimbot.CurTarget:GetVelocity() * 0.013
								local plySpeed = AHack.Ply:GetVelocity() * 0.013
								total, needed = AHack.AngleTo(pos - plySpeed + tarSpeed)
							else
								total, needed = AHack.AngleTo(pos)
							end
								
							if AHack.SpotIsVisible(pos) and total < AHack.Aimbot.Vars["MaxAngle"]:GetInt() then
								local myAngles = AHack.Ply:GetAngles()								
								local NewAngles = Angle(myAngles.p + needed.p, myAngles.y + needed.y, 0)
								
								if AHack.Aimbot.Vars["AntiSnap"]:GetBool() then
									local speed = AHack.Aimbot.Vars["AntiSnapSpeed"]:GetInt()
									NewAngles = (Angle(math.Approach(myAngles.p, NewAngles.p, speed), math.Approach(myAngles.y, NewAngles.y, speed), 0))
								end
								
								cmd:SetViewAngles(NewAngles)
								AHack.Aimbot.CurTarget.BoneToAimAt = BoneOrder[k]
								break
							end
						end
					end
				else
					AHack.Aimbot.CurTarget = AHack.GetTarget()
				end
			else
				AHack.Aimbot.CurTarget = nil
			end
		end
		
		if AHack.Misc.Vars["NoRecoil"]:GetBool() then
			if IsValid(AHack.Ply:GetActiveWeapon()) then
				local weapon = AHack.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(AHack.Ply:GetActiveWeapon()) then
			local weapon = AHack.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 AHack.DarkRP and AHack.Misc.Vars["BuyHealth"]:GetBool() then
			if AHack.Ply:Alive() and AHack.Ply:Health() < AHack.Misc.Vars["BuyHealth_Minimum"]:GetInt() then
				AHack.Ply:ConCommand("say /buyhealth")
			end
		end
	end
end)

AHack.Misc.NextReload = CurTime()
AHack.Misc.ShootNext = true
hook.Add("CreateMove", AHack.RandomName(math.random(10, 15)), function(cmd)
	if AHack.Active:GetBool() then		
		local DontShoot = {"gmod_tool", "gmod_camera", "weapon_physgun", "weapon_physcannon"}
		if AHack.Aimbot.Vars["AutoShoot"]:GetBool() and AHack.Aimbot.Vars["Active"]:GetBool() and AHack.Ply:GetEyeTrace().Entity == AHack.Aimbot.CurTarget and IsValid(AHack.Ply:GetActiveWeapon()) and not table.HasValue(DontShoot, AHack.Ply:GetActiveWeapon():GetClass()) then
			cmd:SetButtons(cmd:GetButtons() + IN_ATTACK)
		end
		
		if AHack.Misc.Vars["BunnyHop"]:GetBool() and cmd:KeyDown(IN_JUMP) and AHack.KeyPressed(AHack.Misc.Vars["BunnyHop_Key"]:GetString()) then
			cmd:SetButtons(cmd:GetButtons() - IN_JUMP)
		end
		if AHack.Misc.Vars["BunnyHop"]:GetBool() and AHack.Ply:OnGround() and AHack.KeyPressed(AHack.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 AHack.Misc.Vars["AutoReload"]:GetBool() and IsValid(AHack.Ply:GetActiveWeapon()) and AHack.Ply:GetActiveWeapon():Clip1() < 1 and not table.HasValue(DontReload, AHack.Ply:GetActiveWeapon():GetClass()) and AHack.Misc.NextReload < CurTime() then
			cmd:SetButtons(cmd:GetButtons() + IN_RELOAD)
		end
		
		if AHack.Misc.Vars["AutoPistol"]:GetBool() and IsValid(AHack.Ply:GetActiveWeapon()) then
			local weapon = AHack.Ply:GetActiveWeapon()
			if weapon.Primary and type(weapon.Primary.Automatic) == "boolean" and not weapon.Primary.Automatic then
				if cmd:KeyDown(IN_ATTACK) then
					if AHack.Misc.ShootNext then
						AHack.Misc.ShootNext = false
					else
						cmd:SetButtons(cmd:GetButtons() - IN_ATTACK)
						AHack.Misc.ShootNext = true
					end
				end					
			elseif type(weapon.Automatic) == "boolean" and not weapon.Automatic then
				if cmd:KeyDown(IN_ATTACK) then
					if AHack.Misc.ShootNext then
						AHack.Misc.ShootNext = false
					else
						cmd:SetButtons(cmd:GetButtons() - IN_ATTACK)
						AHack.Misc.ShootNext = true
					end
				end
			end
		end
	end
end)

AHack.InChat = false
hook.Add("StartChat", AHack.RandomName(math.random(10, 15)), function()
	AHack.InChat = true
end)
hook.Add("FinishChat", AHack.RandomName(math.random(10, 15)), function()
	AHack.InChat = false
end) 

concommand.Add("AHEK_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
			AHack.Ply:ConCommand("AHEK_Active 0")
		end
		AHack.Ply:ConCommand("AHEK_Active 1")
	end
	local function Disable()
		PanicButton:SetText("Enable")
		PanicButton.DoClick = function()
			PanicButton:SetText("Disable")
			PanicButton.DoClick = Disable
			AHack.Ply:ConCommand("AHEK_Active 1")
		end
		AHack.Ply:ConCommand("AHEK_Active 0")
	end
	if AHack.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("AHEK_TETELFONT")
	title:SetText("AHack - "..AHack.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)
			AHack.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("AHEK_CATTEXTING")
		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
						AHack.Ply:ConCommand(var.." "..AHack.MouseKeys[k])
						Options:SetText(AHack.MouseKeys[k])
						Options.Think = nil
					end
				end
				
				for k = 0, 130 do
					if input.IsKeyDown(k) then
						AHack.Ply:ConCommand(var.." "..AHack.Keys[k])
						Options:SetText(AHack.Keys[k])
						Options.Think = nil
					end
				end 
			end
		end
		
		local text = vgui.Create("DLabel", parent)
		text:SetColor(Color(0, 0, 0, 255))
		text:SetFont("AHEK_CATTEXTING")
		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("AHEK_CATTEXTING")
		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)
			AHack.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("AHEK_CATTEXTING")
		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("AHEK_CATHITTER")
	title:SetText("Aimbot")
	title:SizeToContents()
	title:SetPos(Aimbot:GetWide() / 2 - title:GetWide() / 2, 0)
	
	ToggleOption("Active", Aimbot, "AHEK_Aimbert_Active")
	ToggleOption("Random Bones", Aimbot, "AHEK_Aimbert_RandomBones")
	MultiOption("Preferance", Aimbot, "AHEK_Aimbert_Preferance", {"Distance", "Angle"})	
	ToggleOption("Attack Players", Aimbot, "AHEK_Aimbert_AttackPlayers")
	ToggleOption("Attack NPCs", Aimbot, "AHEK_Aimbert_AttackNPCs")
	ToggleOption("Prediction", Aimbot, "AHEK_Aimbert_Prediction")
	ToggleOption("Aim On Key", Aimbot, "AHEK_Aimbert_AimOnKey")
	SetKeyOption("Key", Aimbot, "AHEK_Aimbert_AimOnKey_Key")
	ToggleOption("Anti Snap", Aimbot, "AHEK_Aimbert_AntiSnap")
	SetNumberOption("Anti Snap Speed", Aimbot, "AHEK_Aimbert_AntiSnapSpeed", 1, 5, 2)
	SetNumberOption("Max Angle", Aimbot, "AHEK_Aimbert_MaxAngle", 0, 270, 0)
	ToggleOption("Auto Shoot", Aimbot, "AHEK_Aimbert_AutoShoot")
	ToggleOption("Panic Mode", Aimbot, "AHEK_Aimbert_PanicMode")
	ToggleOption("Ignore Team", Aimbot, "AHEK_Aimbert_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("AHEK_CATHITTER")
	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 != AHack.Ply then
			if table.HasValue(AHack.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
		
		AHack.Friends.List = {}
		for k = 1, #Friends do
			table.insert(AHack.Friends.List, Friends[k]:SteamID())
		end
		//AHack.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
		
		AHack.Friends.List = {}
		for k = 1, #Friends do
			table.insert(AHack.Friends.List, Friends[k]:SteamID())
		end
		//AHack.SaveData()
	end
	
	y = y + EnemiesList:GetTall() + 20
	ToggleOption("Use", FriendsPanel, "AHEK_Friends_Active")
	ToggleOption("Reverse", FriendsPanel, "AHEK_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")

	//Starting the ESP panel
	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("AHEK_CATHITTER")
	title:SetText("ESP")
	title:SizeToContents()
	title:SetPos(ESP:GetWide() / 2 - title:GetWide() / 2, 3)
	
	y = 40
	ToggleOption("Active", ESP, "AHEK_WALLHEK_Active")
	ToggleOption("Player Info", ESP, "AHEK_WALLHEK_Players")
	ToggleOption("NPC Info", ESP, "AHEK_WALLHEK_NPCs")
	MultiOption("Name", ESP, "AHEK_WALLHEK_Name", {"Off", "Above", "Below"})	
	MultiOption("Weapon", ESP, "AHEK_WALLHEK_Weapons", {"Off", "Above", "Below"})	
	MultiOption("Health", ESP, "AHEK_WALLHEK_Health", {"Off", "Above", "Below"})	
	MultiOption("Distance", ESP, "AHEK_WALLHEK_Distance", {"Off", "Above", "Below"})
	MultiOption("Show Traitors", ESP, "AHEK_WALLHEK_ShowTraitors", {"Off", "Above", "Below"})
	ToggleOption("Bounding Box", ESP, "AHEK_WALLHEK_Box")
	ToggleOption("Body Info", ESP, "AHEK_WALLHEK_Bodies")
	ToggleOption("2D Radar", ESP, "AHEK_WALLHEK_Radar")
	SetNumberOption("Radar Scale", ESP, "AHEK_WALLHEK_RadarScale", 1, 100, 0)
	SetNumberOption("Max Distance", ESP, "AHEK_WALLHEK_MaxDistance", 0, 8000, 0)
	ToggleOption("Team Based", ESP, "AHEK_WALLHEK_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("AHEK_CATHITTER")
	title:SetText("Chams")
	title:SizeToContents()
	title:SetPos(Chams:GetWide() / 2 - title:GetWide() / 2, 3)
	
	y = 40
	ToggleOption("Active", Chams, "AHEK_SWAGCAMOS_Active")
	ToggleOption("Draw Players", Chams, "AHEK_SWAGCAMOS_Players")
	ToggleOption("Draw NPCs", Chams, "AHEK_SWAGCAMOS_NPCs")
	ToggleOption("Draw Weapons", Chams, "AHEK_SWAGCAMOS_Weapons")
	ToggleOption("Draw Bodies", Chams, "AHEK_SWAGCAMOS_Bodies")
	ToggleOption("Team Based", Chams, "AHEK_SWAGCAMOS_TeamBased")
	SetNumberOption("Max Distance", Chams, "AHEK_SWAGCAMOS_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")
	
	//Starting the Finder panel
	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("AHEK_CATHITTER")
	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(AHack.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
		
		AHack.Entities.List = {}
		for k = 1, #ToShow do
			table.insert(AHack.Entities.List, ToShow[k])
		end
		//AHack.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
		
		AHack.Entities.List = {}
		for k = 1, #ToShow do
			table.insert(AHack.Entities.List, ToShow[k])
		end
	end
	
	y = y + IgnoreList:GetTall() + 20
	ToggleOption("Active", Finder, "AHEK_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("AHEK_CATHITTER")
	title:SetText("Misc")
	title:SizeToContents()
	title:SetPos(Misc:GetWide() / 2 - title:GetWide() / 2, 3)
	
	y = 40
	ToggleOption("Show Admins", Misc, "AHEK_PASTA_ShowAdmins")
	ToggleOption("Crosshair", Misc, "AHEK_PASTA_Cross")
	SetNumberOption("Corsshair Size", Misc, "AHEK_PASTA_CrossSize", 0, 1000, 0)
	ToggleOption("No Recoil", Misc, "AHEK_PASTA_NoRecoil")
	ToggleOption("Spectators", Misc, "AHEK_PASTA_ShowSpectators")
	ToggleOption("Auto Reload", Misc, "AHEK_PASTA_AutoReload")
	ToggleOption("Bunny Hop", Misc, "AHEK_PASTA_BunnyHop")
	SetKeyOption("Key", Misc, "AHEK_PASTA_BunnyHop_Key")
	ToggleOption("Auto Pistol", Misc, "AHEK_PASTA_AutoPistol")
	ToggleOption("Buy Health", Misc, "AHEK_PASTA_BuyHealth")
	SetNumberOption("Minimum", Misc, "AHEK_PASTA_BuyHealth_Minimum", 0, 100, 0)
	ToggleOption("Traitor Finder", Misc, "AHEK_PASTA_TraitorFinder")
	ToggleOption("Show Deaths", Misc, "AHEK_PASTA_Deaths")
	ToggleOption("Sounds", Misc, "AHEK_PASTA_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)//AHack.GetColorFromString(GetConVar(var):GetString()))
		Options:SetWangs(false)
		Options:SetPalette(false)
		Options.ValueChanged = function(panel, color) 
			AHack.Ply:ConCommand(tab.var:GetName().." ".."Color("..color.r..","..color.g..","..color.b..","..color.a..")")
			tab.color = AHack.GetColorFromString(tab.var:GetString())
		end
		
		local text = vgui.Create("DLabel", parent)
		text:SetColor(Color(0, 0, 0, 255))
		text:SetFont("AHEK_CATTEXTING")
		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("AHEK_CATHITTER")
	title:SetText("Style")
	title:SizeToContents()
	title:SetPos(Style:GetWide() / 2 - title:GetWide() / 2, 3)
	
	y = 50
	ColorOption("Bounding Box", Style, AHack.Style.Vars["BoundingBox"])
	ColorOption("ESP Text", Style, AHack.Style.Vars["ESPText"])
	ColorOption("Crosshair", Style, AHack.Style.Vars["Crosshair"])
	ColorOption("TTT Body Text", Style, AHack.Style.Vars["BodyText"])
	ColorOption("Chams", Style, AHack.Style.Vars["Chams"])
	ColorOption("TTT Body Chams", Style, AHack.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)
surface.CreateFont("AHEK_TETELFONT", {font = "Arial", size = 20})
surface.CreateFont("AHEK_CATHITTER", {font = "CloseCaption_Normal", size = 34})
surface.CreateFont("AHEK_CATTEXTING", {font = "CloseCaption_Normal", size = 28})
surface.CreateFont("AHEK_EXTRA_SEXUAL_PREFERENCES", {font = "CloseCaption_Normal", weight = 1000, size = 15})
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

--[[---------------------------------------------------------
Name: SetActiveTab
-----------------------------------------------------------]]
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" )

AHack.Message("Loaded v1.5.5!")
thanks now i can paste again
NOT AS DETECTED! ("espfont", wtf atheon?)

cause it matters when you are going to get detected anyway
Quote Originally Posted by D3M0L1T10N View Post
NOT AS DETECTED! ("espfont", wtf atheon?)

cause it matters when you are going to get detected anyway
what if i got a sticky note and placed it on my monitor?
Quote Originally Posted by RabidRunner View Post
what if i got a sticky note and placed it on my monitor?
cac detected
Quote Originally Posted by D3M0L1T10N View Post
NOT AS DETECTED! ("espfont", wtf atheon?)

cause it matters when you are going to get detected anyway
The added .5 second delay is better than nothing amirite?
Quote Originally Posted by elysiumpiers View Post
The added .5 second delay is better than nothing amirite?
where did you get the number 0.5 from lol
Quote Originally Posted by D3M0L1T10N View Post
where did you get the number 0.5 from lol
Used a stopwatch to calculate excellent precision, derp.
MPGH blocks out some words with *'s. Maybe post it on pastebin? C:
Quote Originally Posted by B0BG00D View Post
MPGH blocks out some words with *'s. Maybe post it on pastebin? C:
pastebin .com/ignhTkdp
Posts 1–10 of 10 · Page 1 of 1
This thread is closed for replies.

Similar Threads

Tags for this Thread

None

Need help?