Vindicate Gmod hack Razors new hack :) (LEAKED)

Posts 1–15 of 30 · Page 1 of 2
Vindicate Gmod hack Razors new hack :) (LEAKED)
This is razors new rHook its called Vindicate
Includes darkrp dance script,aimbot,esp,moneyhack,bailexploit,hitmanexpl oit,antiaim,thirdeperson,and more!
So heres the code! you need the dlls for this too work!
Code:
--[[

VVVVVVVV           VVVVVVVV  iiii                                d::::::d   iiii                                                  tttt
V::::::V           V::::::V i::::i                               d::::::d  i::::i                                               ttt:::t
V::::::V           V::::::V  iiii                                d::::::d   iiii                                                t:::::t
V::::::V           V::::::V                                     d:::::d                                                         t:::::t
 V:::::V           V:::::V iiiiiii nnnn  nnnnnnnn         ddddddddd:::::d  iiiiiii      cccccccccccccccc   aaaaaaaaaaaaa   ttttttt:::::ttttttt         eeeeeeeeeeee
  V:::::V         V:::::V  i:::::i n:::nn::::::::nn     dd::::::::::::::d  i:::::i    cc:::::::::::::::c   a::::::::::::a  t:::::::::::::::::t       ee::::::::::::ee
   V:::::V       V:::::V    i::::i n::::::::::::::nn   d::::::::::::::::d   i::::i   c:::::::::::::::::c   aaaaaaaaa:::::a t:::::::::::::::::t      e::::::eeeee:::::ee
    V:::::V     V:::::V     i::::i nn:::::::::::::::n d:::::::ddddd:::::d   i::::i  c:::::::cccccc:::::c            a::::a tttttt:::::::tttttt     e::::::e     e:::::e
     V:::::V   V:::::V      i::::i   n:::::nnnn:::::n d::::::d    d:::::d   i::::i  c::::::c     ccccccc     aaaaaaa:::::a       t:::::t           e:::::::eeeee::::::e
      V:::::V V:::::V       i::::i   n::::n    n::::n d:::::d     d:::::d   i::::i  c:::::c                aa::::::::::::a       t:::::t           e:::::::::::::::::e
       V:::::V:::::V        i::::i   n::::n    n::::n d:::::d     d:::::d   i::::i  c:::::c               a::::aaaa::::::a       t:::::t           e::::::eeeeeeeeeee
        V:::::::::V         i::::i   n::::n    n::::n d:::::d     d:::::d   i::::i  c::::::c     ccccccc a::::a    a:::::a       t:::::t    tttttt e:::::::e
         V:::::::V         i::::::i  n::::n    n::::n d::::::ddddd::::::dd i::::::i c:::::::cccccc:::::c a::::a    a:::::a       t::::::tttt:::::t e::::::::e
          V:::::V          i::::::i  n::::n    n::::n  d:::::::::::::::::d i::::::i  c:::::::::::::::::c a:::::aaaa::::::a       tt::::::::::::::t e::::::::eeeeeeee
           V:::V           i::::::i  n::::n    n::::n   d:::::::::ddd::::d i::::::i   cc:::::::::::::::c a::::::::::aa:::a        tt:::::::::::tt   ee:::::::::::::e
            VVV            iiiiiiii  nnnnnn    nnnnnn    ddddddddd   ddddd iiiiiiii     cccccccccccccccc  aaaaaaaaaa  aaaa          ttttttttttt       eeeeeeeeeeeeee

			                              __
			   ____ _____ ___  ____  ____/ /
			  / __ `/ __ `__ \/ __ \/ __  /
			 / /_/ / / / / / / /_/ / /_/ /
			 \__, /_/ /_/ /_/\____/\__,_/
			/____/

Vindicate for Garry's Mod

]]

-- Clearing 'h'

if h then rawset(_G, "h", nil) end

-- Creating Table

local h = {}
local validplayer = {}

-- Copying Global Table, Copy function, Metatables, etc.

h.g = table.Copy(_G)


local keydown
local switch
local ins

function h.Copy(t)
	if h.g.type(t) != "table" then return t end
	local copy = {}
	for k,v in h.g.pairs(t) do
		copy[k] = v
	end
	return copy
end

h.me = h.g.LocalPlayer()
h.g.require("dickwrap")
h.g.require("fhook")
--h.g.require("_nyx")
h.ChangeName = _fhook_changename
h.g.file.CreateDir("vindicate")
h.g.file.CreateDir("vindicate/logs")
h.g.file.CreateDir("vindicate/configs")
h.dickwrap = h.Copy(dickwrap)
--h.nyx = h.Copy(_nyx)

h.cm = h.Copy(h.g.FindMetaTable("CUserCmd"))
h.am = h.Copy(h.g.FindMetaTable("Angle"))
h.vm = h.Copy(h.g.FindMetaTable("Vector"))
h.em = h.Copy(h.g.FindMetaTable("Entity"))
h.pm = h.Copy(h.g.FindMetaTable("Player"))
h.r = h.Copy(h.g.debug.getregistry())

-- Var Table

h.v = {}

-- Aimbot Vars

h.v["aimbot"] = {}
h.v["aimbot"]["key"] = 81 -- Left Alt
h.v["aimbot"]["targetfriends"] = false
h.v["aimbot"]["silentaim"] = true
h.v["aimbot"]["target"] = nil
h.v["aimbot"]["autofire"] = false
h.v["aimbot"]["fakeangles"] = h.g.Angle()
h.v["aimbot"]["enabled"] = false

-- ESP Vars

h.v["esp"] = {}
h.v["esp"]["2dbox"] = false
h.v["esp"]["3dbox"] = true
h.v["esp"]["text"] = true
h.v["esp"]["distance"] = true
h.v["esp"]["name"] = true
h.v["esp"]["health"] = true
h.v["esp"]["weapon"] = true
h.v["esp"]["isdormant"] = false
h.v["esp"]["healthbar"] = true
h.v["esp"]["chams"] = false
h.v["esp"]["chamsweapon"] = false
h.v["esp"]["green"] = h.g.Color(0,255,0)
h.v["esp"]["black"] = h.g.Color(0,0,0)
h.v["esp"]["xray"] = true
h.v["esp"]["tracers"] = true
h.v["esp"]["xray_color"] = h.g.Color(0,0,255, 150)

-- HvH Vars

h.v["hvh"] = {}
h.v["hvh"]["antiaimmethods"] = {
	{"Static Down", 1},
	{"Static Up", 2},
	{"Jitter Down", 4},
	{"Jitter Up", 3},
	{"Jitter Up/Down", 5},
}
h.v["hvh"]["enabled"] = false
h.v["hvh"]["antiaim"] = false
h.v["hvh"]["method"] = 3
h.v["hvh"]["spinbot"] = false
h.v["hvh"]["spinbotspeed"] = 4

-- Triggerbot Vars

local triggering

h.v["triggerbot"] = {}
h.v["triggerbot"]["enabled"] = false

-- Misc Vars

h.v["misc"] = {}
h.v["misc"]["nospread"] = false
h.v["misc"]["norecoil"] = false
h.v["misc"]["thirdperson"] = false
h.v["misc"]["namesteal"] = false
h.v["misc"]["rpnamesteal"] = false
h.v["misc"]["chatspam"] = false
h.v["misc"]["chatspammsg"] = "Vindicate"
h.v["misc"]["bunnyhop"] = false
h.v["misc"]["bhopautostrafe"] = false
h.v["misc"]["crosshair"] = false
h.v["misc"]["tttpkill"] = 12
h.v["misc"]["crosshair_ir"] = 255
h.v["misc"]["crosshair_ig"] = 255
h.v["misc"]["crosshair_ib"] = 255
h.v["misc"]["crosshair_ia"] = 255
h.v["misc"]["crosshair_or"] = 0
h.v["misc"]["crosshair_og"] = 0
h.v["misc"]["crosshair_ob"] = 0
h.v["misc"]["crosshair_oa"] = 255
h.v["misc"]["animspam"] = false

-- Menu Vars

h.v["menu"] = {}
h.v["menu"]["r"] = 0
h.v["menu"]["g"] = 0
h.v["menu"]["b"] = 0
h.v["menu"]["a"] = 200
h.v["menu"]["key"] = 72 -- Insert
h.v["menu"]["isopen"] = false

-- Notify

h.Chat1 = h.g.Color(0,255,255)
h.Chat2 = h.g.Color(255,93,0)

h.LogFile = h.g.os.date()
h.LogFile = h.g.string.Replace(h.LogFile, "/", "-")
h.LogFile = h.g.string.Explode(" ", h.LogFile)[1]

function h.Notify(t)
	h.g.file.Append("vindicate/logs/"..h.LogFile..".txt", h.g.os.date()..": "..t.."\n")
	h.g.MsgC(h.Chat1, "[VINDICATE]: ", h.Chat2, t, "\n")
end

h.Notify("Loading...")

-- Hook functions

h.Hooks = {}

function h.AddHook(t, n, f)
	if !n or !t or !f then return end
	h.g.hook.Add(t, n, f)
	h.Notify("Added a "..t.." hook with the name "..n..".")
end

-- Player Get function, more effective than looping through player.GetAll in 10 different loops

local function getvalidplayer()
	validplayer = {}
	local allplys = h.g.player.GetAll()
	for i = 1, #allplys do
		local v = allplys[i]
		if !h.em.IsValid(v) then continue end
		validplayer[i] = v
	end
	h.g.timer.Simple(2, getvalidplayer)
end

getvalidplayer()

-- Number to bool, bool to number

function h.NumberToBool(n)
	if n == 0 then
		return false
	end
	return true
end

function h.BoolToNumber(b)
	if b then
		return 1
	end
	return 0
end

-- BHop

function h.BHop(ucmd)
	--[[if !h.v["misc"]["bunnyhop"] then
		return
	end
	h.nyx.Bunnyhop(ucmd, h.em.IsOnGround(h.me))
	if h.v["misc"]["bhopautostrafe"] and !h.em.IsOnGround(h.me) and h.g.input.IsKeyDown(65) then
		if h.cm.GetMouseX(ucmd) < 0 then
			h.cm.SetSideMove(ucmd, -1000)
		elseif h.cm.GetMouseX(ucmd) > 0 then
			h.cm.SetSideMove(ucmd, 1000)
		end
	end]]
end

-- Movement Fix

function h.FixMovement(ucmd, aa)
	local side = h.g.Vector(h.cm.GetForwardMove(ucmd), h.cm.GetSideMove(ucmd), 0)
	local side = h.am.Forward((h.vm.Angle(h.vm.GetNormal(side)) + (h.cm.GetViewAngles(ucmd) - h.g.Angle(0, h.v["aimbot"]["fakeangles"].y, 0)))) * h.vm.Length(side)
	if aa then
		h.cm.SetForwardMove(ucmd, side.x)
		h.cm.SetSideMove(ucmd, side.y * -1)
		return
	end
	if aa then
		h.cm.SetForwardMove(ucmd, side.y)
		h.cm.SetSideMove(ucmd, side.x)
		return
	end
	h.cm.SetForwardMove(ucmd, side.x)
	h.cm.SetSideMove(ucmd, side.y)
end

-- Aimbot

function h.Valid(v)
	if !v then return false end
	if !h.em.IsValid(v) then return false end
	if v == h.me then return false end
	if h.em.Health(v) < 1 then return false end
	if h.pm.Team(v) == 1002 then return false end
	local pos = h.em.GetAttachment(v, h.em.LookupAttachment(v, "eyes"))
	local pos = pos and pos.Pos or h.em.LocalToWorld(v, h.em.OBBCenter(v))
	local tr = {start = h.em.EyePos(h.me), endpos = pos, mask = 1174421507, filter = {h.me, v}}
	local trace = h.g.util.TraceLine(tr)
	return trace.Fraction == 1
end

function h.GetTarget()
	if h.Valid(h.v["aimbot"]["target"]) then return end
	local allplys = validplayer
	for i = 1, #allplys do
		local v = allplys[i]
		if !h.Valid(v) then continue end
		h.v["aimbot"]["target"] = v
		return
	end
end

h.Cones = {
	[ "weapon_smg1" ] = h.g.Vector( -0.04362, -0.04362, -0.04362 ),
}

h.ofb = h.r.Entity.FireBullets

h.r.Entity.FireBullets = function(p, d)
	local spread = d.Spread * -1
	local wep = h.pm.GetActiveWeapon(h.me)
	if !wep or !h.em.IsValid(wep) then return h.ofb(p, d) end
	local class = h.em.GetClass(wep)
	if !h.Cones[class] then
		h.Cones[class] = spread
	end
	return h.ofb(p, d)
end


function h.Aimbot(ucmd)
	h.GetTarget()
	h.v["aimbot"]["fakeangles"] = h.v["aimbot"]["fakeangles"] + h.g.Angle(h.cm.GetMouseY(ucmd) * 0.023, h.cm.GetMouseX(ucmd) * -0.023, 0)
	h.v["aimbot"]["fakeangles"].y = h.g.math.NormalizeAngle(h.v["aimbot"]["fakeangles"].y)
	h.v["aimbot"]["fakeangles"].p = h.g.math.Clamp(h.v["aimbot"]["fakeangles"].p, -89, 89)
	if h.v["aimbot"]["isdown"] then
		if h.Valid(h.v["aimbot"]["target"]) then
			h.v["aimbot"]["enabled"] = true
			local v = h.v["aimbot"]["target"]
			local pos = h.em.GetAttachment(v, h.em.LookupAttachment(v, "eyes"))
			local pos = pos and pos.Pos or h.em.LocalToWorld(v, h.em.OBBCenter(v))
			local pos = pos - h.em.EyePos(h.me)
			if h.v["misc"]["nospread"] then
				local wep = h.pm.GetActiveWeapon(h.me)
				if wep and h.em.IsValid(wep) then
					local class = h.em.GetClass(wep)
					if h.Cones[class] then
						pos = h.dickwrap.Predict(ucmd, h.am.Forward(h.vm.Angle(pos)), h.Cones[class])
					end
				end
			end
			h.cm.SetViewAngles(ucmd, h.vm.Angle(pos))
			if h.v["aimbot"]["autofire"] then
				h.cm.SetButtons(ucmd, h.g.bit.bor(h.cm.GetButtons(ucmd), 1))
			end
			if h.v["aimbot"]["silentaim"] then
				h.FixMovement(ucmd)
			end
			return
		end
	end
	h.v["aimbot"]["enabled"] = false
	if h.v["hvh"]["enabled"] or ins or triggering then return end
	local ang2 = h.v["aimbot"]["fakeangles"]
	if h.v["misc"]["nospread"] and h.g.input.IsMouseDown(107) then
		local wep = h.pm.GetActiveWeapon(h.me)
		if wep and h.em.IsValid(wep) then
			local class = h.em.GetClass(wep)
			if h.Cones[class] then
				ang2 = h.vm.Angle(h.dickwrap.Predict(ucmd, h.am.Forward(ang2), h.Cones[class]))
			end
		end
	end
	h.cm.SetViewAngles(ucmd, ang2)
end

-- CalcViewModelView

function h.CalcViewModelView(_,_, opos, oang, pos, ang)
	if h.v["aimbot"]["enabled"] and h.v["aimbot"]["silentaim"] then
		return pos, h.v["aimbot"]["fakeangles"]
	end
	return pos, ang
end



-- ESP

function h.TwoDBox(v, drawbox, drawtext)
	local min, max = h.em.OBBMins(v), h.em.OBBMaxs(v)
	local corners = {
		h.g.Vector( min.x, min.y, min.z ),
		h.g.Vector( min.x, min.y, max.z ),
		h.g.Vector( min.x, max.y, min.z ),
		h.g.Vector( min.x, max.y, max.z ),
		h.g.Vector( max.x, min.y, min.z ),
		h.g.Vector( max.x, min.y, max.z ),
		h.g.Vector( max.x, max.y, min.z ),
		h.g.Vector( max.x, max.y, max.z )
	}
	local x1, y1, x2, y2 = h.g.ScrW() * 2, h.g.ScrH() * 2, 0, 0
	for i = 1, #corners do
		local c = corners[i]
		local onScreen = h.vm.ToScreen(h.em.LocalToWorld(v, c))
		x1, y1 = h.g.math.min(x1, onScreen.x), h.g.math.min(y1, onScreen.y)
		x2, y2 = h.g.math.max(x2, onScreen.x), h.g.math.max(y2, onScreen.y)
	end
	local col = h.g.team.GetColor(h.pm.Team(v))
	if drawbox then
		h.g.surface.SetDrawColor(col)
		h.g.surface.DrawLine(x1, y1, h.g.math.min(x1 + 2000, x2), y1)
		h.g.surface.DrawLine(x1, y1, x1, h.g.math.min( y1 + 2000, y2))
		h.g.surface.DrawLine(x2, y1, h.g.math.max(x2 - 2000, x1), y1)
		h.g.surface.DrawLine(x2, y1, x2, h.g.math.min( y1 + 2000, y2))
		h.g.surface.DrawLine(x1, y2, h.g.math.min(x1 + 2000, x2), y2)
		h.g.surface.DrawLine(x1, y2, x1, h.g.math.max( y2 - 2000, y1))
		h.g.surface.DrawLine(x2, y2, h.g.math.max(x2 - 2000, x1), y2)
		h.g.surface.DrawLine(x2, y2, x2, h.g.math.max( y2 - 2000, y1))
	end
	local hg = h.v["esp"]["healthbar"] and 8 or 0
	if h.v["esp"]["healthbar"] then
		local m = x2 + 3
		local mh = 50
		local hm = h.em.Health(v) / 2
		local dx = {}
		dx.x = m
		dx.y = y1
		h.g.surface.SetDrawColor(h.v["esp"]["black"])
		h.g.surface.DrawRect(dx.x, dx.y, mh, 3)
		h.g.surface.SetDrawColor(h.v["esp"]["green"])
		h.g.surface.DrawRect(dx.x, dx.y, hm, 3)
	end
	if drawtext then
		if h.v["esp"]["name"] then
			h.g.draw.SimpleText(h.pm.Name(v), "BudgetLabel", x2 + 3, y1 + hg, col, 0, 1)
			hg = hg + 10
		end
		if h.v["esp"]["health"] then
			h.g.draw.SimpleText("[H]:"..h.em.Health(v), "BudgetLabel", x2 + 1, y1 + hg, col, 0, 1)
			hg = hg + 10
		end
		if h.v["esp"]["distance"] then
			h.g.draw.SimpleText("[D]:"..h.g.math****und(h.vm.Distance(h.em.GetPos(h.me), h.em.GetPos(v))), "BudgetLabel", x2 + 1, y1 + hg, col, 0, 1)
			hg = hg + 10
		end
		if h.v["esp"]["weapon"] then
			local w = h.pm.GetActiveWeapon(v)
			if h.em.IsValid(w) then
				local class = h.em.GetClass(w)
				h.g.draw.SimpleText("[W]:"..class, "BudgetLabel", x2 + 1, y1 + hg, col, 0, 1)
				hg = hg + 10
			end
		end
		if h.v["esp"]["dormant"] then
			if h.em.IsDormant(v) then
				h.g.draw.SimpleText("[DORMANT]", "BudgetLabel", x2 + 1, y1 + hg, col, 0, 1)
				hg = hg + 10
			end
		end
		if h.v["esp"]["rank"] then
			h.g.draw.SimpleText("[R]:"..h.pm.GetUserGroup(v), "BudgetLabel", x2 + 1, y1 + hg, col, 0, 1)
			hg = hg + 10
		end
	end
end

function h.ThreeDBox(v)
	local min,max = h.em.WorldSpaceAABB(v)
	local diff = max-min
	local pos2 = h.g.Vector(0,0,0)
	local pos1 = h.g.Vector(0,0,0)
	local pos3 = h.g.Vector(0,0,0)
	local pos4 = h.g.Vector(0,0,0)
	local pos5 = h.g.Vector(0,0,diff.z)
	local pos6 = h.g.Vector(0,0,diff.z)
	local pos7 = h.g.Vector(0,0,diff.z)
	local pos8 = h.g.Vector(0,0,diff.z)
	local pos1 = h.vm.ToScreen(pos1 + h.em.WorldSpaceAABB(v) + h.g.Vector(diff.x,diff.y,0))
	local pos2 = h.vm.ToScreen(pos2 + h.em.WorldSpaceAABB(v) + h.g.Vector(diff.x,-diff.y/14,0))
	local pos3 = h.vm.ToScreen(pos3 + h.em.WorldSpaceAABB(v) + h.g.Vector(-diff.x/14,-diff.y/14,0))
	local pos4 = h.vm.ToScreen(pos4 + h.em.WorldSpaceAABB(v) + h.g.Vector(-diff.x/14,diff.y,0))
	local pos5 = h.vm.ToScreen(pos5 + h.em.WorldSpaceAABB(v) + h.g.Vector(diff.x,diff.y,0))
	local pos6 = h.vm.ToScreen(pos6 + h.em.WorldSpaceAABB(v) + h.g.Vector(diff.x,-diff.y/14,0))
	local pos7 = h.vm.ToScreen(pos7 + h.em.WorldSpaceAABB(v) + h.g.Vector(-diff.x/14,-diff.y/14,0))
	local pos8 = h.vm.ToScreen(pos8 + h.em.WorldSpaceAABB(v) + h.g.Vector(-diff.x/14,diff.y,0))
	h.g.surface.SetDrawColor(h.g.team.GetColor(h.pm.Team(v)))
	h.g.surface.DrawLine(pos1.x, pos1.y, pos2.x, pos2.y)
	h.g.surface.DrawLine(pos2.x, pos2.y, pos3.x, pos3.y)
	h.g.surface.DrawLine(pos3.x, pos3.y, pos4.x, pos4.y)
	h.g.surface.DrawLine(pos1.x, pos1.y, pos4.x, pos4.y)
	h.g.surface.DrawLine(pos1.x, pos1.y, pos5.x, pos5.y)
	h.g.surface.DrawLine(pos2.x, pos2.y, pos6.x, pos6.y)
	h.g.surface.DrawLine(pos3.x, pos3.y, pos7.x, pos7.y)
	h.g.surface.DrawLine(pos4.x, pos4.y, pos8.x, pos8.y)
	h.g.surface.DrawLine(pos5.x, pos5.y, pos6.x, pos6.y)
	h.g.surface.DrawLine(pos6.x, pos6.y, pos7.x, pos7.y)
	h.g.surface.DrawLine(pos7.x, pos7.y, pos8.x, pos8.y)
	h.g.surface.DrawLine(pos5.x, pos5.y, pos8.x, pos8.y)
end

function h.ESPLoop()
	local allplys = validplayer
	for i = 1, #allplys do
		local v = allplys[i]
		if !h.em.IsValid(v) or v == h.me or h.em.Health(v) < 1 or h.pm.Team(v) == 1002 then continue end
		if h.v["esp"]["3dbox"] then
			h.ThreeDBox(v)
		end
		h.TwoDBox(v, h.v["esp"]["2dbox"], h.v["esp"]["text"])
	end
end

-- Triggerbot

function h.Triggerbot(ucmd)
	triggering = false
	if h.v["aimbot"]["enabled"] or !h.v["triggerbot"]["enabled"] then return end
	local ent = h.pm.GetEyeTrace(h.me).Entity
	if !h.em.IsValid(ent) then
		return
	end
	if ent:IsPlayer() or ent:IsNPC() then
		if h.em.Health(ent) < 1 then return end
		if h.em.IsPlayer(ent) then
			if h.pm.Team(ent) == 1002 then
				return
			end
		end
		triggering = true
		local wep = h.pm.GetActiveWeapon(h.me)
		if wep and h.em.IsValid(wep) then
			local class = h.em.GetClass(wep)
			if h.Cones[class] then
				h.cm.SetViewAngles(ucmd, h.vm.Angle(h.dickwrap.Predict(ucmd, h.am.Forward(h.v["aimbot"]["fakeangles"]), h.Cones[class])))
			end
		end
		h.cm.SetButtons(ucmd, h.g.bit.bor(h.cm.GetButtons(ucmd), 1))
	end
end

-- Antiaim, Spinbot

h.v["hvh"]["antiaimswitch"] = false

function h.AAS(ucmd)
	if h.v["aimbot"]["enabled"] or h.g.input.IsMouseDown(107) or h.g.input.IsKeyDown(15) then
		h.v["hvh"]["enabled"] = false
		return
	end
	h.v["hvh"]["enabled"] = false
	if h.v["hvh"]["antiaim"] then
		h.v["hvh"]["enabled"] = true
		if h.v["hvh"]["method"] == 1 then
			h.cm.SetViewAngles(ucmd, h.g.Angle(-181, h.v["aimbot"]["fakeangles"].y, 0))
			h.cm.SetForwardMove(ucmd, h.cm.GetForwardMove(ucmd) * -1)
		elseif h.v["hvh"]["method"] == 2 then
			h.cm.SetViewAngles(ucmd, h.g.Angle(181, h.v["aimbot"]["fakeangles"].y, 0))
			h.cm.SetForwardMove(ucmd, h.cm.GetForwardMove(ucmd) * -1)
		elseif h.v["hvh"]["method"] == 3 then
			h.cm.SetViewAngles(ucmd, h.g.Angle(181, h.g.math.random(-180, 180), 0))
			h.FixMovement(ucmd, true)
		elseif h.v["hvh"]["method"] == 4 then
			h.cm.SetViewAngles(ucmd, h.g.Angle(-181, h.g.math.random(-180, 180), 0))
			h.FixMovement(ucmd, true)
		elseif h.v["hvh"]["method"] == 5 then
			local ang = h.v["hvh"]["antiaimswitch"] and -181 or 181
			h.cm.SetViewAngles(ucmd, h.g.Angle(ang, h.g.math.random(-180, 180), 0))
			h.FixMovement(ucmd, true)
			h.v["hvh"]["antiaimswitch"] = not h.v["hvh"]["antiaimswitch"]
		end
		return
	end
	if h.v["hvh"]["spinbot"] then
		h.v["hvh"]["enabled"] = true
		h.cm.SetViewAngles(ucmd, h.g.Angle(h.v["aimbot"]["fakeangles"].x, h.cm.GetViewAngles(ucmd).y + h.v["hvh"]["spinbotspeed"], 0))
		h.FixMovement(ucmd)
		return
	end
end

-- CalcView

local demo = h.g.engine.IsPlayingDemo()

function h.CalcView(p, origin, ang, fov)
	local view = {}
	view.origin = h.v["misc"]["thirdperson"] and origin - (h.am.Forward(h.v["aimbot"]["fakeangles"]) * 100) or origin
	if (h.v["aimbot"]["silentaim"]) or h.v["hvh"]["enabled"] or ins or triggering then
		view.angles = h.v["aimbot"]["fakeangles"]
	elseif h.v["aimbot"]["enabled"] and h.v["aimbot"]["silentaim"] then
		local norecoil = h.v["misc"]["norecoil"]
		view.angles = h.v["aimbot"]["fakeangles"]
		if !norecoil then
			local punch = h.pm.GetPunchAngle(h.me)
			view.angles = h.v["aimbot"]["fakeangles"] - punch
		end
	else
		view.angles = ang
	end
	view.fov = fov
	return view
end

if !demo then
h.AddHook("CalcView", h.g.util.CRC("vindicate_calcview"), h.CalcView)
h.AddHook("ShouldDrawLocalPlayer", h.g.util.CRC("vindicate_sdlp"), function()
	return h.v["misc"]["thirdperson"]
end)
h.AddHook("CalcViewModelView", h.g.util.CRC("vindicate_calcviewmodelview"), h.CalcViewModelView)
end

-- Config Save, load functions etc

function h.SaveConfig(name)
	local cfg = h.g.util.TableToJSON(h.v, true)
	h.g.file.Write("vindicate/configs/"..name..".txt", cfg)
	h.Notify("Saved Config '"..name.."'.")
end

function h.LoadConfig(name)
	local name = h.g.string.Replace(name, ".txt", "")
	local json = h.g.file.Read("vindicate/configs/"..name..".txt", "DATA")
	local cfg = h.g.util.JSONToTable(json)
	h.v = cfg
	h.Notify("Loaded Config '"..name.."'.")
end

-- Namesteal

function h.Namesteal()
	if !h.v["misc"]["namesteal"] then
		h.g.timer.Simple(1, function()
			h.Namesteal()
		end)
		return
	end
	local p = validplayer[h.g.math.random(1, #validplayer)]
	if !h.em.IsValid(p) or p == h.me then return end
	h.ChangeName(h.pm.Name(p).." ")
	h.g.timer.Simple(1, function()
		h.Namesteal()
	end)
end

h.Namesteal()

h.Gamemode = h.g.gmod.GetGamemode().Name

function h.RPNamesteal()
	if h.Gamemode != "DarkRP" or !h.v["misc"]["rpnamesteal"] then
		h.v["misc"]["rpnamesteal"] = false
		h.g.timer.Simple(5.1, function()
			h.RPNamesteal()
		end)
		return
	end
	local p = validplayer[h.g.math.random(1, #validplayer())]
	if !h.em.IsValid(p) or p == h.Me then
		h.RPNamesteal()
		return
	end
	h.g.RunConsoleCommand("darkrp", "rpname", h.pm.Name(p).." ")
	h.g.timer.Simple(5.1, function()
		h.RPNamesteal()
	end)
end

h.RPNamesteal()

-- Chatspam

function h.Chatspam()
	if !h.v["misc"]["chatspam"] then
		h.g.timer.Simple(.5, function()
			h.Chatspam()
		end)
		return
	end
	h.g.RunConsoleCommand("say", h.v["misc"]["chatspammsg"])
	h.g.timer.Simple(.1, function()
		h.Chatspam()
	end)
end

h.Chatspam()

-- Crosshair

function h.Crosshair()
	if !h.v["misc"]["crosshair"] then return end
	local col1 = h.g.Color(h.v["misc"]["crosshair_ir"], h.v["misc"]["crosshair_ig"], h.v["misc"]["crosshair_ib"], h.v["misc"]["crosshair_ia"])
	local col2 = h.g.Color(h.v["misc"]["crosshair_or"], h.v["misc"]["crosshair_og"], h.v["misc"]["crosshair_ob"], h.v["misc"]["crosshair_oa"])
	h.g.draw.SimpleTextOutlined("+", "DermaLarge", h.g.ScrW() / 2, h.g.ScrH() / 2, col1, 1, 1, 2, col2)
end

-- XRay

h.xraymat = h.g.CreateMaterial(h.g.util.CRC("vindicate_xraymat"), "VertexLitGeneric", {
	["$basetexture"] = "models/debug/debugwhite"
})

function h.XRay()
	local allprops = h.g.ents.FindByClass("prop_physics")
	for i = 1, #allprops do
		local v = allprops[i]
		if !h.em.IsValid(v) then continue end
		if !h.v["esp"]["xray"] then
			h.em.SetNoDraw(v, false)
			continue
		end
		h.g.cam.Start3D()
			h.g.render.SuppressEngineLighting(true)
			h.g.render.MaterialOverride(h.xraymat)
			h.g.render.SetColorModulation(h.v["esp"]["xray_color"].r / 255, h.v["esp"]["xray_color"].g / 255, h.v["esp"]["xray_color"].b / 255)
			h.g.render.SetBlend(h.v["esp"]["xray_color"].a / 255)
			h.em.DrawModel(v)
			h.em.SetNoDraw(v, true)
			h.g.render.SuppressEngineLighting(false)
		h.g.cam.End3D()
	end
end

function h.XRay2()
	if !h.v["esp"]["xray"] then return end
	local allplys = validplayer
	for i = 1, #allplys do
		local v = allplys[i]
		if !h.em.IsValid(v) or h.em.Health(v) < 1 or v == me then continue end
		h.g.cam.Start3D()
			h.g.render.SuppressEngineLighting(true)
			h.g.render.MaterialOverride(h.xraymat)
			local col = h.g.team.GetColor(h.pm.Team(v))
			h.g.render.SetColorModulation(180 / 255, 0, 0)
			h.g.render.SetBlend(180 / 255)
			h.em.DrawModel(v)
			h.g.render.SuppressEngineLighting(false)
		h.g.cam.End3D()
	end
end

-- Exploits, thanks to KIF3R

function h.HitmanXSendMoneyToAll()
	local allplys = validplayer
	for i = 1, #allplys do
		local v = allplys[i]
		if !h.em.IsValid(v) then continue end
		h.g.net.Start("SendMoney")
			h.g.net.WriteEntity(v)
			h.g.net.WriteEntity(v)
			h.g.net.WriteEntity(v)
			h.g.net.WriteString("-100000000000000000000000000000000000000000")
		h.g.net.SendToServer()
	end
end

function h.HitmanXSendMoneyToSelf()
	h.g.net.Start("SendMoney")
		h.g.net.WriteEntity(h.me)
		h.g.net.WriteEntity(h.me)
		h.g.net.WriteEntity(h.me)
		h.g.net.WriteString("-100000000000000000000000000000000000000000")
	h.g.net.SendToServer()
end

function h.DarkRPLag()
	if h.v["misc"]["darkrplag"] then
		for i = 1, 10000 do
			h.g.net.Start("DarkRP_spawnPocket")
			h.g.net.SendToServer()
		end
	end
	h.g.timer.Simple(1, h.DarkRPLag)
end

h.DarkRPLag()

function h.BailExploitForAll()
	local allplys = validplayer
	for i = 1, #allplys do
		local v = allplys[i]
		if !h.em.IsValid(v) then continue end
		h.g.net.Start("BailOut")
			h.g.net.WriteEntity(h.me)
			h.g.net.WriteEntity(v)
			h.g.net.WriteFloat(-99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)
		h.g.net.SendToServer()
	end
end

function h.BailExploitSelf()
	h.g.net.Start("BailOut")
		h.g.net.WriteEntity(h.me)
		h.g.net.WriteEntity(h.me)
		h.g.net.WriteFloat(-99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)
	h.g.net.SendToServer()
end

function h.LevelFuckUp(v)
	net.Start("REPAdminChangeRPC")
		net.WriteEntity(v)
		net.WriteDouble(0)
	net.SendToServer()
end

-- Chams

h.ChamsMat = h.g.CreateMaterial(h.g.util.CRC("vindicate_chamsmat"), "VertexLitGeneric", {
	["$basetexture"] = "models/debug/debugwhite",
	["$model"] = 1,
	["$ignorez"] = 1
})

function h.Chams()
	if !h.v["esp"]["chams"] or h.v["esp"]["xray"] then return end
	local allplys = validplayer
	for i = 1, #allplys do
		local v = allplys[i]
		if !h.em.IsValid(v) or v == h.me or h.em.Health(v) < 1 or h.pm.Team(v) == 1002 then continue end
		local col = h.g.team.GetColor(h.pm.Team(v))
		local w = h.pm.GetActiveWeapon(v)
		h.g.cam.Start3D()
			h.g.render.MaterialOverride(h.ChamsMat)
			h.g.render.SuppressEngineLighting(true)
			h.g.render.SetColorModulation(col.r / 255, col.g / 255, col.b / 255)
			h.em.DrawModel(v)
			if h.em.IsValid(w) and h.v["esp"]["chamsweapon"] then
				h.g.render.SetColorModulation(col.b / 255, col.r / 255, col.g / 255)
				h.em.DrawModel(w)
			end
			h.g.render.SuppressEngineLighting(false)
		h.g.cam.End3D()
	end
end

-- DarkRP Animation Spam

local anims = {
	1612,
	1617,
	1611,
	1618,
	1616,
	1613,
	1610,
	1615,
}

local animwait = {
	[1612] = 3.1,
	[1617] = 13,
	[1611] = 3.7,
	[1618] = 6,
	[1616] = 3.3,
	[1613] = 2.6,
	[1610] = 2.8,
	[1615] = 3.35,
}

local allowedanim = true

function h.AnimSpam()
	if !allowedanim or !h.v["misc"]["animspam"] then return end
	local anim = h.g.table.Random(anims)
	h.g.RunConsoleCommand("_DarkRP_DoAnimation", anim)
	allowedanim = false
	h.g.timer.Simple(animwait[anim], function()
		allowedanim = true
	end)
end

-- Tracers

function h.Tracers()
	if !h.v["esp"]["tracers"] then return end
	for i = 1, #validplayer do
		local v = validplayer[i]
		if v == h.me or !h.em.IsValid(v) or h.em.Health(v) < 1 or h.pm.Team(v) == 1002 then continue end
		h.g.surface.SetDrawColor(h.g.team.GetColor(h.pm.Team(v)))
		local pos = h.em.LocalToWorld(v, h.em.OBBCenter(v))
		local pos = h.vm.ToScreen(pos)
		h.g.surface.DrawLine(h.g.ScrW() / 2, h.g.ScrH() / 2, pos.x, pos.y)
	end
end

-- Menu

function h.Menu()
	local frame = h.g****ui.Create("DFrame")
	frame:SetTitle("VINDICATE | Menu")
	frame:SetSize(750, 520)
	frame:Center()
	frame:ShowCloseButton(false)
	frame:MakePopup()
	function frame:Paint(w, h2)
		h.g.draw****undedBox(0, 0, 0, w, h2, h.g.Color(h.v["menu"]["r"], h.v["menu"]["g"], h.v["menu"]["b"], h.v["menu"]["a"]))
	end

	local aim = h.g****ui.Create("DPanel", frame)
	aim:SetSize(580, 480)
	aim:SetPos(150, 26)
	function aim:Paint(w, h2)
		h.g.draw****undedBox(0, 0, 0, w, h2, h.g.Color(h.v["menu"]["r"], h.v["menu"]["g"], h.v["menu"]["b"], h.v["menu"]["a"] - 50))
	end
	aim:SetVisible(false)

	local esp = h.g****ui.Create("DPanel", frame)
	esp:SetSize(580, 480)
	esp:SetPos(150, 26)
	function esp:Paint(w, h2)
		h.g.draw****undedBox(0, 0, 0, w, h2, h.g.Color(h.v["menu"]["r"], h.v["menu"]["g"], h.v["menu"]["b"], h.v["menu"]["a"] - 50))
	end
	esp:SetVisible(false)

	local tri = h.g****ui.Create("DPanel", frame)
	tri:SetSize(580, 480)
	tri:SetPos(150, 26)
	function tri:Paint(w, h2)
		h.g.draw****undedBox(0, 0, 0, w, h2, h.g.Color(h.v["menu"]["r"], h.v["menu"]["g"], h.v["menu"]["b"], h.v["menu"]["a"] - 50))
	end
	tri:SetVisible(false)

	local men = h.g****ui.Create("DPanel", frame)
	men:SetSize(580, 480)
	men:SetPos(150, 26)
	function men:Paint(w, h2)
		h.g.draw****undedBox(0, 0, 0, w, h2, h.g.Color(h.v["menu"]["r"], h.v["menu"]["g"], h.v["menu"]["b"], h.v["menu"]["a"] - 50))
	end
	men:SetVisible(false)

	local mis = h.g****ui.Create("DPanel", frame)
	mis:SetSize(580, 480)
	mis:SetPos(150, 26)
	function mis:Paint(w, h2)
		h.g.draw****undedBox(0, 0, 0, w, h2, h.g.Color(h.v["menu"]["r"], h.v["menu"]["g"], h.v["menu"]["b"], h.v["menu"]["a"] - 50))
	end
	mis:SetVisible(false)

	local cre = h.g****ui.Create("DPanel", frame)
	cre:SetSize(580, 480)
	cre:SetPos(150, 26)
	function cre:Paint(w, h2)
		h.g.draw****undedBox(0, 0, 0, w, h2, h.g.Color(h.v["menu"]["r"], h.v["menu"]["g"], h.v["menu"]["b"], h.v["menu"]["a"] - 50))
	end
	cre:SetVisible(false)

	local function visible(aim1, esp1, trigger, menu, misc, credits)
		aim:SetVisible(aim1)
		esp:SetVisible(esp1)
		tri:SetVisible(trigger)
		men:SetVisible(menu)
		mis:SetVisible(misc)
		cre:SetVisible(credits)
	end

	local aimb = h.g****ui.Create("DButton", frame)
	aimb:SetPos(5, 25)
	aimb:SetText("Aimbot")
	aimb:SetSize(130, 60)
	aimb.DoClick = function()
		visible(true)
	end

	local espb = h.g****ui.Create("DButton", frame)
	espb:SetPos(5, 95)
	espb:SetText("ESP")
	espb:SetSize(130, 60)
	espb.DoClick = function()
		visible(false, true)
	end

	local trib = h.g****ui.Create("DButton", frame)
	trib:SetPos(5, 165)
	trib:SetText("Hack vs. Hack")
	trib:SetSize(130, 60)
	trib.DoClick = function()
		visible(false, false, true)
	end

	local menb = h.g****ui.Create("DButton", frame)
	menb:SetPos(5, 235)
	menb:SetText("Menu")
	menb:SetSize(130, 60)
	menb.DoClick = function()
		visible(false, false, false, true)
	end

	local misb = h.g****ui.Create("DButton", frame)
	misb:SetPos(5, 305)
	misb:SetText("Miscellaneous")
	misb:SetSize(130, 60)
	misb.DoClick = function()
		visible(false, false, false, false, true)
	end

	local creb = h.g****ui.Create("DButton", frame)
	creb:SetPos(5, 375)
	creb:SetText("Credits")
	creb:SetSize(130, 60)
	creb.DoClick = function()
		visible(false, false, false, false, false, true)
	end

	local clob = h.g****ui.Create("DButton", frame)
	clob:SetPos(5, 445)
	clob:SetText("Close")
	clob:SetSize(130, 60)
	clob.DoClick = function()
		h.v["menu"]["isopen"] = false
		frame:Close()
	end

	local label = h.g****ui.Create("DLabel", aim)
	label:SetText("Aimbot Key")
	label:SetPos(80, 5)
	label:SizeToContents()

	local abin = h.g****ui.Create("DBinder", aim)
	abin:SetPos(5, 20)
	abin:SetSize(200, 50)
	abin:SetText("Aimbot Key")
	abin:SetValue(h.v["aimbot"]["key"])
	local name = h.g.util.CRC(h.g.os.date())
	h.g.hook.Add("Think", name, function()
		if !frame:IsValid() then
			h.g.hook.Remove("Think", name)
			return
		end
		h.v["aimbot"]["key"] = abin:GetValue()
	end)

	local aimc1 = h.g****ui.Create("DCheckBox", aim)
	aimc1:SetPos(5, 80)
	aimc1:SetValue(h.BoolToNumber(h.v["aimbot"]["silentaim"]))
	function aimc1:OnChange(b)
		h.v["aimbot"]["silentaim"] = b
	end
	local label = h.g****ui.Create("DLabel", aim)
	label:SetText("Silent Aim")
	label:SetPos(25, 80)
	label:SizeToContents()

	local aimc2 = h.g****ui.Create("DCheckBox", aim)
	aimc2:SetPos(5, 100)
	aimc2:SetValue(h.BoolToNumber(h.v["aimbot"]["autofire"]))
	function aimc2:OnChange(b)
		h.v["aimbot"]["autofire"] = b
	end
	local label = h.g****ui.Create("DLabel", aim)
	label:SetText("Autoshoot")
	label:SetPos(25, 100)
	label:SizeToContents()

	local aimc3 = h.g****ui.Create("DCheckBox", aim)
	aimc3:SetPos(5, 120)
	aimc3:SetValue(h.BoolToNumber(h.v["aimbot"]["targetfriends"]))
	function aimc3:OnChange(b)
		h.v["aimbot"]["targetfriends"] = b
	end
	local label = h.g****ui.Create("DLabel", aim)
	label:SetText("Target Steam Friends")
	label:SetPos(25, 120)
	label:SizeToContents()

	local espc1 = h.g****ui.Create("DCheckBox", esp)
	espc1:SetPos(5, 5)
	espc1:SetValue(h.BoolToNumber(h.v["esp"]["2dbox"]))
	function espc1:OnChange(b)
		h.v["esp"]["2dbox"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("2D Box")
	label:SetPos(25, 5)
	label:SizeToContents()

	local espc2 = h.g****ui.Create("DCheckBox", esp)
	espc2:SetPos(5, 25)
	espc2:SetValue(h.BoolToNumber(h.v["esp"]["3dbox"]))
	function espc2:OnChange(b)
		h.v["esp"]["3dbox"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("3D Box")
	label:SetPos(25, 25)
	label:SizeToContents()

	local espc3 = h.g****ui.Create("DCheckBox", esp)
	espc3:SetPos(5, 45)
	espc3:SetValue(h.BoolToNumber(h.v["esp"]["text"]))
	function espc3:OnChange(b)
		h.v["esp"]["text"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("ESP Text")
	label:SetPos(25, 45)
	label:SizeToContents()

	local espc4 = h.g****ui.Create("DCheckBox", esp)
	espc4:SetPos(5, 65)
	espc4:SetValue(h.BoolToNumber(h.v["esp"]["name"]))
	function espc4:OnChange(b)
		h.v["esp"]["name"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("Show Name")
	label:SetPos(25, 65)
	label:SizeToContents()

	local espc5 = h.g****ui.Create("DCheckBox", esp)
	espc5:SetPos(5, 85)
	espc5:SetValue(h.BoolToNumber(h.v["esp"]["health"]))
	function espc5:OnChange(b)
		h.v["esp"]["health"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("Show HP")
	label:SetPos(25, 85)
	label:SizeToContents()

	local espc6 = h.g****ui.Create("DCheckBox", esp)
	espc6:SetPos(5, 105)
	espc6:SetValue(h.BoolToNumber(h.v["esp"]["weapon"]))
	function espc6:OnChange(b)
		h.v["esp"]["weapon"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("Show Weapon")
	label:SetPos(25, 105)
	label:SizeToContents()

	local espc7 = h.g****ui.Create("DCheckBox", esp)
	espc7:SetPos(5, 125)
	espc7:SetValue(h.BoolToNumber(h.v["esp"]["distance"]))
	function espc7:OnChange(b)
		h.v["esp"]["distance"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("Show Distance")
	label:SetPos(25, 125)
	label:SizeToContents()

	local espc1337 = h.g****ui.Create("DCheckBox", esp)
	espc1337:SetPos(5, 145)
	espc1337:SetValue(h.BoolToNumber(h.v["esp"]["rank"]))
	function espc1337:OnChange(b)
		h.v["esp"]["rank"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("Show Rank	")
	label:SetPos(25, 145)
	label:SizeToContents()

	local espc8 = h.g****ui.Create("DCheckBox", esp)
	espc8:SetPos(5, 165)
	espc8:SetValue(h.BoolToNumber(h.v["esp"]["dormant"]))
	function espc8:OnChange(b)
		h.v["esp"]["dormant"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("Show if a Player is Dormant")
	label:SetPos(25, 165)
	label:SizeToContents()

	local espc9 = h.g****ui.Create("DCheckBox", esp)
	espc9:SetPos(5, 185)
	espc9:SetValue(h.BoolToNumber(h.v["esp"]["healthbar"]))
	function espc9:OnChange(b)
		h.v["esp"]["healthbar"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("Draw Healthbar")
	label:SetPos(25, 185)
	label:SizeToContents()

	local espc10 = h.g****ui.Create("DCheckBox", esp)
	espc10:SetPos(5, 205)
	espc10:SetValue(h.BoolToNumber(h.v["esp"]["chams"]))
	function espc10:OnChange(b)
		h.v["esp"]["chams"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("Chams")
	label:SetPos(25, 205)
	label:SizeToContents()

	local espc11 = h.g****ui.Create("DCheckBox", esp)
	espc11:SetPos(5, 225)
	espc11:SetValue(h.BoolToNumber(h.v["esp"]["chamsweapon"]))
	function espc11:OnChange(b)
		h.v["esp"]["chamsweapon"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("Weapon Chams")
	label:SetPos(25, 225)
	label:SizeToContents()

	local espc12 = h.g****ui.Create("DCheckBox", esp)
	espc12:SetPos(5, 245)
	espc12:SetValue(h.BoolToNumber(h.v["esp"]["xray"]))
	function espc12:OnChange(b)
		h.v["esp"]["xray"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("XRay")
	label:SetPos(25, 245)
	label:SizeToContents()

	local xraycol = h.g****ui.Create("DButton", esp)
	xraycol:SetSize(150, 30)
	xraycol:SetPos(5, 265)
	xraycol:SetText("XRay Color")
	xraycol.DoClick = function()
		local fr = h.g****ui.Create("DFrame")
		fr:SetTitle("VINDICATE | XRay Color Menu")
		fr:SetSize(267, 186)
		fr:Center()
		fr:MakePopup()
		local colr = h.g****ui.Create("DColorMixer", fr)
		colr:Dock( FILL )
		colr:SetPalette(true)
		colr:SetAlphaBar(true)
		colr:SetWangs(true)
		colr:SetColor(h.v["esp"]["xray_color"])
		function colr:ValueChanged(col)
			h.v["esp"]["xray_color"].r = col.r
			h.v["esp"]["xray_color"].g = col.g
			h.v["esp"]["xray_color"].b = col.b
			h.v["esp"]["xray_color"].a = col.a
		end
	end

	local espc13 = h.g****ui.Create("DCheckBox", esp)
	espc13:SetPos(5, 300)
	espc13:SetValue(h.BoolToNumber(h.v["esp"]["tracers"]))
	function espc13:OnChange(b)
		h.v["esp"]["tracers"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("Tracers")
	label:SetPos(25, 300)
	label:SizeToContents()

	local hvh1 = h.g****ui.Create("DCheckBox", tri)
	hvh1:SetPos(5, 5)
	hvh1:SetValue(h.BoolToNumber(h.v["hvh"]["antiaim"]))
	function hvh1:OnChange(b)
		h.v["hvh"]["antiaim"] = b
	end
	local label = h.g****ui.Create("DLabel", tri)
	label:SetText("Antiaim")
	label:SetPos(25, 5)
	label:SizeToContents()

	local hvhb = h.g****ui.Create("DButton", tri)
	hvhb:SetPos(5, 25)
	hvhb:SetSize(100, 30)
	hvhb:SetText("Antiaim Method")
	hvhb.DoClick = function()
		local menu = h.g.DermaMenu()
		for k,v in h.g.pairs(h.v["hvh"]["antiaimmethods"]) do
			menu:AddOption(v[1], function()
				h.v["hvh"]["method"] = v[2]
			end)
		end
		menu:Open()
	end

	local hvh2 = h.g****ui.Create("DCheckBox", tri)
	hvh2:SetPos(5, 60)
	hvh2:SetValue(h.BoolToNumber(h.v["hvh"]["spinbot"]))
	function hvh2:OnChange(b)
		h.v["hvh"]["spinbot"] = b
	end
	local label = h.g****ui.Create("DLabel", tri)
	label:SetText("Spinbot")
	label:SetPos(25, 60)
	label:SizeToContents()

	local hvhn = h.g****ui.Create("DNumberWang", tri)
	hvhn:SetPos(5, 80)
	hvhn:SetSize(35, 20)
	hvhn:SetValue(h.v["hvh"]["spinbotspeed"])
	function hvhn:OnValueChanged(v)
		h.v["hvh"]["spinbotspeed"] = v
	end
	local label = h.g****ui.Create("DLabel", tri)
	label:SetText("Spinbot Speed")
	label:SetPos(45, 82.5)
	label:SizeToContents()

	local label = h.g****ui.Create("DLabel", men)
	label:SetText("Menu Key")
	label:SetPos(80, 5)
	label:SizeToContents()

	local mbin = h.g****ui.Create("DBinder", men)
	mbin:SetPos(5, 20)
	mbin:SetSize(200, 50)
	mbin:SetText("Menu Key")
	mbin:SetValue(h.v["menu"]["key"])
	local name3 = h.g.util.CRC(h.g.os.date()).."2313233"
	h.g.hook.Add("Think", name3, function()
		if !frame:IsValid() then
			h.g.hook.Remove("Think", name3)
			return
		end
		h.v["menu"]["key"] = mbin:GetValue()
	end)

	local label = h.g****ui.Create("DLabel", men)
	label:SetText("Menu Color")
	label:SetPos(80, 90)
	label:SizeToContents()

	local menc = h.g****ui.Create("DColorMixer", men)
	menc:SetSize(267, 186)
	menc:SetPos(5, 105)
	menc:SetPalette(true)
	menc:SetAlphaBar(true)
	menc:SetWangs(true)
	menc:SetColor(h.g.Color(h.v["menu"]["r"], h.v["menu"]["g"], h.v["menu"]["b"], h.v["menu"]["a"]))
	function menc:ValueChanged(col)
		h.v["menu"]["r"] = col.r
		h.v["menu"]["g"] = col.g
		h.v["menu"]["b"] = col.b
		h.v["menu"]["a"] = col.a
	end

	local mis1 = h.g****ui.Create("DCheckBox", mis)
	mis1:SetPos(5, 5)
	mis1:SetValue(h.BoolToNumber(h.v["triggerbot"]["enabled"]))
	function mis1:OnChange(b)
		h.v["triggerbot"]["enabled"] = b
	end
	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("Triggerbot")
	label:SetPos(25, 5)
	label:SizeToContents()

	local mis123 = h.g****ui.Create("DCheckBox", mis)
	mis123:SetPos(200, 5)
	mis123:SetValue(h.BoolToNumber(h.v["misc"]["bunnyhop"]))
	function mis123:OnChange(b)
		h.v["misc"]["bunnyhop"] = b
	end
	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("Bunnyhop")
	label:SetPos(225, 5)
	label:SizeToContents()

	local mis1423 = h.g****ui.Create("DCheckBox", mis)
	mis1423:SetPos(200, 25)
	mis1423:SetValue(h.BoolToNumber(h.v["misc"]["bhopautostrafe"]))
	function mis1423:OnChange(b)
		h.v["misc"]["bhopautostrafe"] = b
	end
	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("Bunnyhop Autostrafe")
	label:SetPos(225, 25)
	label:SizeToContents()

	local mis2 = h.g****ui.Create("DCheckBox", mis)
	mis2:SetPos(5, 25)
	mis2:SetValue(h.BoolToNumber(h.v["misc"]["thirdperson"]))
	function mis2:OnChange(b)
		h.v["misc"]["thirdperson"] = b
	end
	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("Thirdperson")
	label:SetPos(25, 25)
	label:SizeToContents()

	local saveconf = h.g****ui.Create("DButton", mis)
	saveconf:SetSize(150, 30)
	saveconf:SetPos(5, 45)
	saveconf:SetText("Save Config")

	saveconf.DoClick = function()
		local fr = h.g****ui.Create("DFrame")
		fr:SetTitle("VINDICATE | Save Config")
		fr:SetSize(300, 60)
		fr:Center()
		fr:MakePopup()
		local text = h.g****ui.Create("DTextEntry", fr)
		text:SetPos(0, 20)
		text:Dock( FILL )
		text:SetText("Config Name")
		text.OnEnter = function(self)
			h.SaveConfig(self:GetValue())
			fr:Close()
		end
	end

	local saveconf = h.g****ui.Create("DButton", mis)
	saveconf:SetSize(150, 30)
	saveconf:SetPos(5, 80)
	saveconf:SetText("Load Config")

	saveconf.DoClick = function()
		local files, _ = h.g.file.Find("vindicate/configs/*.txt", "DATA")
		local menu = h.g.DermaMenu()
		for k,v in h.g.pairs(files) do
			menu:AddOption(v, function()
				frame:Close()
				h.LoadConfig(v)
				h.Menu()
			end)
		end
		menu:Open()
	end

	local mis3 = h.g****ui.Create("DCheckBox", mis)
	mis3:SetPos(5, 115)
	mis3:SetValue(h.BoolToNumber(h.v["misc"]["namesteal"]))
	function mis3:OnChange(b)
		h.v["misc"]["namesteal"] = b
	end
	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("Namesteal")
	label:SetPos(25, 115)
	label:SizeToContents()

	local mis4 = h.g****ui.Create("DCheckBox", mis)
	mis4:SetPos(5, 135)
	mis4:SetValue(h.BoolToNumber(h.v["misc"]["rpnamesteal"]))
	function mis4:OnChange(b)
		h.v["misc"]["rpnamesteal"] = b
	end
	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("DarkRP Namesteal")
	label:SetPos(25, 135)
	label:SizeToContents()

	local mis5 = h.g****ui.Create("DCheckBox", mis)
	mis5:SetPos(5, 155)
	mis5:SetValue(h.BoolToNumber(h.v["misc"]["norecoil"]))
	function mis5:OnChange(b)
		h.v["misc"]["norecoil"] = b
	end
	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("No Recoil")
	label:SetPos(25, 155)
	label:SizeToContents()

	local mis6 = h.g****ui.Create("DCheckBox", mis)
	mis6:SetPos(5, 175)
	mis6:SetValue(h.BoolToNumber(h.v["misc"]["nospread"]))
	function mis6:OnChange(b)
		h.v["misc"]["nospread"] = b
	end
	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("No Spread")
	label:SetPos(25, 175)
	label:SizeToContents()

	local mis7 = h.g****ui.Create("DCheckBox", mis)
	mis7:SetPos(5, 195)
	mis7:SetValue(h.BoolToNumber(h.v["misc"]["chatspam"]))
	function mis7:OnChange(b)
		h.v["misc"]["chatspam"] = b
	end
	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("Chatspam")
	label:SetPos(25, 195)
	label:SizeToContents()

	local cms = h.g****ui.Create("DButton", mis)
	cms:SetSize(150, 30)
	cms:SetPos(5, 215)
	cms:SetText("Chatspam Message")
	cms.DoClick = function()
		local fr = h.g****ui.Create("DFrame")
		fr:SetTitle("VINDICATE | Chatspam Message")
		fr:SetSize(300, 60)
		fr:Center()
		fr:MakePopup()
		local text = h.g****ui.Create("DTextEntry", fr)
		text:SetPos(0, 20)
		text:Dock( FILL )
		text:SetText(h.v["misc"]["chatspammsg"])
		text.OnEnter = function(self)
			h.v["misc"]["chatspammsg"] = self:GetValue()
			fr:Close()
		end
	end

	local mis8 = h.g****ui.Create("DCheckBox", mis)
	mis8:SetPos(5, 250)
	mis8:SetValue(h.BoolToNumber(h.v["misc"]["crosshair"]))
	function mis8:OnChange(b)
		h.v["misc"]["crosshair"] = b
	end
	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("Crosshair")
	label:SetPos(25, 250)
	label:SizeToContents()

	local cri = h.g****ui.Create("DButton", mis)
	cri:SetSize(150, 30)
	cri:SetPos(5, 270)
	cri:SetText("Inner Crosshair Color")
	cri.DoClick = function()
		local fr = h.g****ui.Create("DFrame")
		fr:SetTitle("VINDICATE | Crosshair Color Manager")
		fr:SetSize(267, 186)
		fr:Center()
		fr:MakePopup()
		local colr = h.g****ui.Create("DColorMixer", fr)
		colr:Dock( FILL )
		colr:SetPalette(true)
		colr:SetAlphaBar(true)
		colr:SetWangs(true)
		colr:SetColor(h.g.Color(h.v["misc"]["crosshair_ir"], h.v["misc"]["crosshair_ig"], h.v["misc"]["crosshair_ib"], h.v["misc"]["crosshair_ia"]))
		function colr:ValueChanged(col)
			h.v["misc"]["crosshair_ir"] = col.r
			h.v["misc"]["crosshair_ig"] = col.g
			h.v["misc"]["crosshair_ib"] = col.b
			h.v["misc"]["crosshair_ia"] = col.a
		end
	end

	local cro = h.g****ui.Create("DButton", mis)
	cro:SetSize(150, 30)
	cro:SetPos(5, 305)
	cro:SetText("Outer Crosshair Color")
	cro.DoClick = function()
		local fr = h.g****ui.Create("DFrame")
		fr:SetTitle("VINDICATE | Crosshair Color Manager")
		fr:SetSize(267, 186)
		fr:Center()
		fr:MakePopup()
		local colr = h.g****ui.Create("DColorMixer", fr)
		colr:Dock( FILL )
		colr:SetPalette(true)
		colr:SetAlphaBar(true)
		colr:SetWangs(true)
		colr:SetColor(h.g.Color(h.v["misc"]["crosshair_or"], h.v["misc"]["crosshair_og"], h.v["misc"]["crosshair_ob"], h.v["misc"]["crosshair_oa"]))
		function colr:ValueChanged(col)
			h.v["misc"]["crosshair_or"] = col.r
			h.v["misc"]["crosshair_og"] = col.g
			h.v["misc"]["crosshair_ob"] = col.b
			h.v["misc"]["crosshair_oa"] = col.a
		end
	end

	local mis9 = h.g****ui.Create("DCheckBox", mis)
	mis9:SetPos(5, 340)
	mis9:SetValue(h.BoolToNumber(h.v["misc"]["darkrplag"]))
	function mis9:OnChange(b)
		h.v["misc"]["darkrplag"] = b
	end
	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("DarkRP Lag")
	label:SetPos(25, 340)
	label:SizeToContents()

	local exp1 = h.g****ui.Create("DButton", mis)
	exp1:SetSize(150, 30)
	exp1:SetPos(5, 360)
	exp1:SetText("Hitman X Exploit")
	exp1.DoClick = function()
		local menu = h.g.DermaMenu()
		menu:AddOption("Give Money to All", h.HitmanXSendMoneyToAll)
		menu:AddOption("Give Money to Self", h.HitmanXSendMoneyToSelf)
		menu:Open()
	end

	local exp2 = h.g****ui.Create("DButton", mis)
	exp2:SetSize(150, 30)
	exp2:SetPos(5, 395)
	exp2:SetText("Bail Exploit")
	exp2.DoClick = function()
		local menu = h.g.DermaMenu()
		menu:AddOption("Give Money to All", h.BailExploitForAll)
		menu:AddOption("Give Money to Self", h.BailExploitSelf)
		menu:Open()
	end

	local exp3 = h.g****ui.Create("DButton", mis)
	exp3:SetSize(150, 30)
	exp3:SetPos(5, 430)
	exp3:SetText("Level Fuckup")
	exp3.DoClick = function()
		local menu = h.g.DermaMenu()
		local allplys = validplayer
		for i = 1, #allplys do
			local v = allplys[i]
			if !h.em.IsValid(v) then continue end
			menu:AddOption(h.pm.Name(v), function()
				h.LevelFuckUp(v)
			end)
		end
		menu:Open()
	end

	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("PKill Key")
	label:SetPos(280, 45)
	label:SizeToContents()

	local pbin = h.g****ui.Create("DBinder", mis)
	pbin:SetPos(200, 60)
	pbin:SetSize(200, 50)
	pbin:SetText("TTTPKill Key")
	pbin:SetValue(h.v["misc"]["tttpkill"])
	local nam5e = h.g.util.CRC(h.g.os.date())..name..name..name
	h.g.hook.Add("Think", nam5e, function()
		if !frame:IsValid() then
			h.g.hook.Remove("Think", nam5e)
			return
		end
		h.v["misc"]["tttpkill"] = pbin:GetValue()
	end)

	local mis14233223 = h.g****ui.Create("DCheckBox", mis)
	mis14233223:SetPos(200, 120)
	mis14233223:SetValue(h.BoolToNumber(h.v["misc"]["animspam"]))
	function mis14233223:OnChange(b)
		h.v["misc"]["animspam"] = b
	end
	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("DarkRP Animation Spam")
	label:SetPos(225, 120)
	label:SizeToContents()

	local label = h.g****ui.Create("DLabel", cre)
	label:SetFont("BudgetLabel")
	label:SetText(
[[
db    db d888888b d8b   db d8888b. d888888b  .o88b.  .d8b.  d888888b d88888b
88    88   `88'   888o  88 88  `8D   `88'   d8P  Y8 d8' `8b `~~88~~' 88'
Y8    8P    88    88V8o 88 88   88    88    8P      88ooo88    88    88ooooo
`8b  d8'    88    88 V8o88 88   88    88    8b      88~~~88    88    88~~~~~
 `8bd8'    .88.   88  V888 88  .8D   .88.   Y8b  d8 88   88    88    88.
   YP    Y888888P VP   V8P Y8888D' Y888888P  `Y88P' YP   YP    YP    Y88888P
			                              __
			   ____ _____ ___  ____  ____/ /
			  / __ `/ __ `__ \/ __ \/ __  /
			 / /_/ / / / / / / /_/ / /_/ /
			 \__, /_/ /_/ /_/\____/\__,_/
			/____/

Made by Hvl.
]]
)
label:SetPos(5,5)
label:SizeToContents()

end


function h.TTTShit(ucmd)
	if !h.g.input.IsKeyDown(h.v["misc"]["tttpkill"]) then
		keydown = false
	end
	if ins then
		h.cm.SetForwardMove(ucmd, h.cm.GetForwardMove(ucmd) * -1)
	end
end

function h.TTTPKill()
	if !switch then
		h.v["aimbot"]["fakeangles"] = h.v["aimbot"]["fakeangles"] - h.g.Angle(0,180,0)
		ins = true
	else
		ins = false
	end
	switch = not switch
end

function h.CUserCmd(ucmd)
	h.Aimbot(ucmd)
	h.AAS(ucmd)
	h.Triggerbot(ucmd)
	h.BHop(ucmd)
	h.TTTShit(ucmd)
end

h.AddHook("CreateMove", h.g.util.CRC("vindicate_createmove"), h.CUserCmd)

function h.HUDPaint()
	h.ESPLoop()
	h.XRay()
	h.XRay2()
	h.Chams()
	h.Tracers()
	h.Crosshair()
end

h.AddHook("HUDPaint", h.g.util.CRC("vindicate_hudpaint"), h.HUDPaint)


function h.KeyPress()
	if h.pm.IsTyping(h.me) then
		h.v["aimbot"]["isdown"] = false
		return
	end
	if h.g.input.IsKeyDown(h.v["aimbot"]["key"]) then
		h.v["aimbot"]["isdown"] = true
	else
		h.v["aimbot"]["isdown"] = false
	end
	if h.g.input.IsKeyDown(h.v["misc"]["tttpkill"]) and !keydown then
		h.TTTPKill()
		keydown = true
	end
	if h.g.input.IsKeyDown(h.v["menu"]["key"]) then
		if !h.v["menu"]["isopen"] then
			h.v["menu"]["isopen"] = true
			h.Menu()
			h.Notify("Opened Menu.")
		end
	end
end

h.AddHook("Think", h.g.util.CRC("vindicate_keypress"), h.KeyPress)
h.AddHook("Think", h.g.util.CRC("vindicat_animspam"), h.AnimSpam)

h.Notify("Fully loaded.")
h.Notify("Welcome, "..h.pm.Name(h.me).." ("..h.pm.SteamID(h.me)..").")
wow dude sick same exact public features and still doesn't understand localizing G after load from autorun will make his cheat more undetected
Quote Originally Posted by hatu View Post
This is razors new rHook its called Vindicate
Includes darkrp dance script,aimbot,esp,moneyhack,bailexploit,hitmanexpl oit,antiaim,thirdeperson,and more!
So heres the code! you need the dlls for this too work!
Code:
--[[

VVVVVVVV           VVVVVVVV  iiii                                d::::::d   iiii                                                  tttt
V::::::V           V::::::V i::::i                               d::::::d  i::::i                                               ttt:::t
V::::::V           V::::::V  iiii                                d::::::d   iiii                                                t:::::t
V::::::V           V::::::V                                     d:::::d                                                         t:::::t
 V:::::V           V:::::V iiiiiii nnnn  nnnnnnnn         ddddddddd:::::d  iiiiiii      cccccccccccccccc   aaaaaaaaaaaaa   ttttttt:::::ttttttt         eeeeeeeeeeee
  V:::::V         V:::::V  i:::::i n:::nn::::::::nn     dd::::::::::::::d  i:::::i    cc:::::::::::::::c   a::::::::::::a  t:::::::::::::::::t       ee::::::::::::ee
   V:::::V       V:::::V    i::::i n::::::::::::::nn   d::::::::::::::::d   i::::i   c:::::::::::::::::c   aaaaaaaaa:::::a t:::::::::::::::::t      e::::::eeeee:::::ee
    V:::::V     V:::::V     i::::i nn:::::::::::::::n d:::::::ddddd:::::d   i::::i  c:::::::cccccc:::::c            a::::a tttttt:::::::tttttt     e::::::e     e:::::e
     V:::::V   V:::::V      i::::i   n:::::nnnn:::::n d::::::d    d:::::d   i::::i  c::::::c     ccccccc     aaaaaaa:::::a       t:::::t           e:::::::eeeee::::::e
      V:::::V V:::::V       i::::i   n::::n    n::::n d:::::d     d:::::d   i::::i  c:::::c                aa::::::::::::a       t:::::t           e:::::::::::::::::e
       V:::::V:::::V        i::::i   n::::n    n::::n d:::::d     d:::::d   i::::i  c:::::c               a::::aaaa::::::a       t:::::t           e::::::eeeeeeeeeee
        V:::::::::V         i::::i   n::::n    n::::n d:::::d     d:::::d   i::::i  c::::::c     ccccccc a::::a    a:::::a       t:::::t    tttttt e:::::::e
         V:::::::V         i::::::i  n::::n    n::::n d::::::ddddd::::::dd i::::::i c:::::::cccccc:::::c a::::a    a:::::a       t::::::tttt:::::t e::::::::e
          V:::::V          i::::::i  n::::n    n::::n  d:::::::::::::::::d i::::::i  c:::::::::::::::::c a:::::aaaa::::::a       tt::::::::::::::t e::::::::eeeeeeee
           V:::V           i::::::i  n::::n    n::::n   d:::::::::ddd::::d i::::::i   cc:::::::::::::::c a::::::::::aa:::a        tt:::::::::::tt   ee:::::::::::::e
            VVV            iiiiiiii  nnnnnn    nnnnnn    ddddddddd   ddddd iiiiiiii     cccccccccccccccc  aaaaaaaaaa  aaaa          ttttttttttt       eeeeeeeeeeeeee

			                              __
			   ____ _____ ___  ____  ____/ /
			  / __ `/ __ `__ \/ __ \/ __  /
			 / /_/ / / / / / / /_/ / /_/ /
			 \__, /_/ /_/ /_/\____/\__,_/
			/____/

Vindicate for Garry's Mod

]]

-- Clearing 'h'

if h then rawset(_G, "h", nil) end

-- Creating Table

local h = {}
local validplayer = {}

-- Copying Global Table, Copy function, Metatables, etc.

h.g = table.Copy(_G)


local keydown
local switch
local ins

function h.Copy(t)
	if h.g.type(t) != "table" then return t end
	local copy = {}
	for k,v in h.g.pairs(t) do
		copy[k] = v
	end
	return copy
end

h.me = h.g.LocalPlayer()
h.g.require("dickwrap")
h.g.require("fhook")
--h.g.require("_nyx")
h.ChangeName = _fhook_changename
h.g.file.CreateDir("vindicate")
h.g.file.CreateDir("vindicate/logs")
h.g.file.CreateDir("vindicate/configs")
h.dickwrap = h.Copy(dickwrap)
--h.nyx = h.Copy(_nyx)

h.cm = h.Copy(h.g.FindMetaTable("CUserCmd"))
h.am = h.Copy(h.g.FindMetaTable("Angle"))
h.vm = h.Copy(h.g.FindMetaTable("Vector"))
h.em = h.Copy(h.g.FindMetaTable("Entity"))
h.pm = h.Copy(h.g.FindMetaTable("Player"))
h.r = h.Copy(h.g.debug.getregistry())

-- Var Table

h.v = {}

-- Aimbot Vars

h.v["aimbot"] = {}
h.v["aimbot"]["key"] = 81 -- Left Alt
h.v["aimbot"]["targetfriends"] = false
h.v["aimbot"]["silentaim"] = true
h.v["aimbot"]["target"] = nil
h.v["aimbot"]["autofire"] = false
h.v["aimbot"]["fakeangles"] = h.g.Angle()
h.v["aimbot"]["enabled"] = false

-- ESP Vars

h.v["esp"] = {}
h.v["esp"]["2dbox"] = false
h.v["esp"]["3dbox"] = true
h.v["esp"]["text"] = true
h.v["esp"]["distance"] = true
h.v["esp"]["name"] = true
h.v["esp"]["health"] = true
h.v["esp"]["weapon"] = true
h.v["esp"]["isdormant"] = false
h.v["esp"]["healthbar"] = true
h.v["esp"]["chams"] = false
h.v["esp"]["chamsweapon"] = false
h.v["esp"]["green"] = h.g.Color(0,255,0)
h.v["esp"]["black"] = h.g.Color(0,0,0)
h.v["esp"]["xray"] = true
h.v["esp"]["tracers"] = true
h.v["esp"]["xray_color"] = h.g.Color(0,0,255, 150)

-- HvH Vars

h.v["hvh"] = {}
h.v["hvh"]["antiaimmethods"] = {
	{"Static Down", 1},
	{"Static Up", 2},
	{"Jitter Down", 4},
	{"Jitter Up", 3},
	{"Jitter Up/Down", 5},
}
h.v["hvh"]["enabled"] = false
h.v["hvh"]["antiaim"] = false
h.v["hvh"]["method"] = 3
h.v["hvh"]["spinbot"] = false
h.v["hvh"]["spinbotspeed"] = 4

-- Triggerbot Vars

local triggering

h.v["triggerbot"] = {}
h.v["triggerbot"]["enabled"] = false

-- Misc Vars

h.v["misc"] = {}
h.v["misc"]["nospread"] = false
h.v["misc"]["norecoil"] = false
h.v["misc"]["thirdperson"] = false
h.v["misc"]["namesteal"] = false
h.v["misc"]["rpnamesteal"] = false
h.v["misc"]["chatspam"] = false
h.v["misc"]["chatspammsg"] = "Vindicate"
h.v["misc"]["bunnyhop"] = false
h.v["misc"]["bhopautostrafe"] = false
h.v["misc"]["crosshair"] = false
h.v["misc"]["tttpkill"] = 12
h.v["misc"]["crosshair_ir"] = 255
h.v["misc"]["crosshair_ig"] = 255
h.v["misc"]["crosshair_ib"] = 255
h.v["misc"]["crosshair_ia"] = 255
h.v["misc"]["crosshair_or"] = 0
h.v["misc"]["crosshair_og"] = 0
h.v["misc"]["crosshair_ob"] = 0
h.v["misc"]["crosshair_oa"] = 255
h.v["misc"]["animspam"] = false

-- Menu Vars

h.v["menu"] = {}
h.v["menu"]["r"] = 0
h.v["menu"]["g"] = 0
h.v["menu"]["b"] = 0
h.v["menu"]["a"] = 200
h.v["menu"]["key"] = 72 -- Insert
h.v["menu"]["isopen"] = false

-- Notify

h.Chat1 = h.g.Color(0,255,255)
h.Chat2 = h.g.Color(255,93,0)

h.LogFile = h.g.os.date()
h.LogFile = h.g.string.Replace(h.LogFile, "/", "-")
h.LogFile = h.g.string.Explode(" ", h.LogFile)[1]

function h.Notify(t)
	h.g.file.Append("vindicate/logs/"..h.LogFile..".txt", h.g.os.date()..": "..t.."\n")
	h.g.MsgC(h.Chat1, "[VINDICATE]: ", h.Chat2, t, "\n")
end

h.Notify("Loading...")

-- Hook functions

h.Hooks = {}

function h.AddHook(t, n, f)
	if !n or !t or !f then return end
	h.g.hook.Add(t, n, f)
	h.Notify("Added a "..t.." hook with the name "..n..".")
end

-- Player Get function, more effective than looping through player.GetAll in 10 different loops

local function getvalidplayer()
	validplayer = {}
	local allplys = h.g.player.GetAll()
	for i = 1, #allplys do
		local v = allplys[i]
		if !h.em.IsValid(v) then continue end
		validplayer[i] = v
	end
	h.g.timer.Simple(2, getvalidplayer)
end

getvalidplayer()

-- Number to bool, bool to number

function h.NumberToBool(n)
	if n == 0 then
		return false
	end
	return true
end

function h.BoolToNumber(b)
	if b then
		return 1
	end
	return 0
end

-- BHop

function h.BHop(ucmd)
	--[[if !h.v["misc"]["bunnyhop"] then
		return
	end
	h.nyx.Bunnyhop(ucmd, h.em.IsOnGround(h.me))
	if h.v["misc"]["bhopautostrafe"] and !h.em.IsOnGround(h.me) and h.g.input.IsKeyDown(65) then
		if h.cm.GetMouseX(ucmd) < 0 then
			h.cm.SetSideMove(ucmd, -1000)
		elseif h.cm.GetMouseX(ucmd) > 0 then
			h.cm.SetSideMove(ucmd, 1000)
		end
	end]]
end

-- Movement Fix

function h.FixMovement(ucmd, aa)
	local side = h.g.Vector(h.cm.GetForwardMove(ucmd), h.cm.GetSideMove(ucmd), 0)
	local side = h.am.Forward((h.vm.Angle(h.vm.GetNormal(side)) + (h.cm.GetViewAngles(ucmd) - h.g.Angle(0, h.v["aimbot"]["fakeangles"].y, 0)))) * h.vm.Length(side)
	if aa then
		h.cm.SetForwardMove(ucmd, side.x)
		h.cm.SetSideMove(ucmd, side.y * -1)
		return
	end
	if aa then
		h.cm.SetForwardMove(ucmd, side.y)
		h.cm.SetSideMove(ucmd, side.x)
		return
	end
	h.cm.SetForwardMove(ucmd, side.x)
	h.cm.SetSideMove(ucmd, side.y)
end

-- Aimbot

function h.Valid(v)
	if !v then return false end
	if !h.em.IsValid(v) then return false end
	if v == h.me then return false end
	if h.em.Health(v) < 1 then return false end
	if h.pm.Team(v) == 1002 then return false end
	local pos = h.em.GetAttachment(v, h.em.LookupAttachment(v, "eyes"))
	local pos = pos and pos.Pos or h.em.LocalToWorld(v, h.em.OBBCenter(v))
	local tr = {start = h.em.EyePos(h.me), endpos = pos, mask = 1174421507, filter = {h.me, v}}
	local trace = h.g.util.TraceLine(tr)
	return trace.Fraction == 1
end

function h.GetTarget()
	if h.Valid(h.v["aimbot"]["target"]) then return end
	local allplys = validplayer
	for i = 1, #allplys do
		local v = allplys[i]
		if !h.Valid(v) then continue end
		h.v["aimbot"]["target"] = v
		return
	end
end

h.Cones = {
	[ "weapon_smg1" ] = h.g.Vector( -0.04362, -0.04362, -0.04362 ),
}

h.ofb = h.r.Entity.FireBullets

h.r.Entity.FireBullets = function(p, d)
	local spread = d.Spread * -1
	local wep = h.pm.GetActiveWeapon(h.me)
	if !wep or !h.em.IsValid(wep) then return h.ofb(p, d) end
	local class = h.em.GetClass(wep)
	if !h.Cones[class] then
		h.Cones[class] = spread
	end
	return h.ofb(p, d)
end


function h.Aimbot(ucmd)
	h.GetTarget()
	h.v["aimbot"]["fakeangles"] = h.v["aimbot"]["fakeangles"] + h.g.Angle(h.cm.GetMouseY(ucmd) * 0.023, h.cm.GetMouseX(ucmd) * -0.023, 0)
	h.v["aimbot"]["fakeangles"].y = h.g.math.NormalizeAngle(h.v["aimbot"]["fakeangles"].y)
	h.v["aimbot"]["fakeangles"].p = h.g.math.Clamp(h.v["aimbot"]["fakeangles"].p, -89, 89)
	if h.v["aimbot"]["isdown"] then
		if h.Valid(h.v["aimbot"]["target"]) then
			h.v["aimbot"]["enabled"] = true
			local v = h.v["aimbot"]["target"]
			local pos = h.em.GetAttachment(v, h.em.LookupAttachment(v, "eyes"))
			local pos = pos and pos.Pos or h.em.LocalToWorld(v, h.em.OBBCenter(v))
			local pos = pos - h.em.EyePos(h.me)
			if h.v["misc"]["nospread"] then
				local wep = h.pm.GetActiveWeapon(h.me)
				if wep and h.em.IsValid(wep) then
					local class = h.em.GetClass(wep)
					if h.Cones[class] then
						pos = h.dickwrap.Predict(ucmd, h.am.Forward(h.vm.Angle(pos)), h.Cones[class])
					end
				end
			end
			h.cm.SetViewAngles(ucmd, h.vm.Angle(pos))
			if h.v["aimbot"]["autofire"] then
				h.cm.SetButtons(ucmd, h.g.bit.bor(h.cm.GetButtons(ucmd), 1))
			end
			if h.v["aimbot"]["silentaim"] then
				h.FixMovement(ucmd)
			end
			return
		end
	end
	h.v["aimbot"]["enabled"] = false
	if h.v["hvh"]["enabled"] or ins or triggering then return end
	local ang2 = h.v["aimbot"]["fakeangles"]
	if h.v["misc"]["nospread"] and h.g.input.IsMouseDown(107) then
		local wep = h.pm.GetActiveWeapon(h.me)
		if wep and h.em.IsValid(wep) then
			local class = h.em.GetClass(wep)
			if h.Cones[class] then
				ang2 = h.vm.Angle(h.dickwrap.Predict(ucmd, h.am.Forward(ang2), h.Cones[class]))
			end
		end
	end
	h.cm.SetViewAngles(ucmd, ang2)
end

-- CalcViewModelView

function h.CalcViewModelView(_,_, opos, oang, pos, ang)
	if h.v["aimbot"]["enabled"] and h.v["aimbot"]["silentaim"] then
		return pos, h.v["aimbot"]["fakeangles"]
	end
	return pos, ang
end



-- ESP

function h.TwoDBox(v, drawbox, drawtext)
	local min, max = h.em.OBBMins(v), h.em.OBBMaxs(v)
	local corners = {
		h.g.Vector( min.x, min.y, min.z ),
		h.g.Vector( min.x, min.y, max.z ),
		h.g.Vector( min.x, max.y, min.z ),
		h.g.Vector( min.x, max.y, max.z ),
		h.g.Vector( max.x, min.y, min.z ),
		h.g.Vector( max.x, min.y, max.z ),
		h.g.Vector( max.x, max.y, min.z ),
		h.g.Vector( max.x, max.y, max.z )
	}
	local x1, y1, x2, y2 = h.g.ScrW() * 2, h.g.ScrH() * 2, 0, 0
	for i = 1, #corners do
		local c = corners[i]
		local onScreen = h.vm.ToScreen(h.em.LocalToWorld(v, c))
		x1, y1 = h.g.math.min(x1, onScreen.x), h.g.math.min(y1, onScreen.y)
		x2, y2 = h.g.math.max(x2, onScreen.x), h.g.math.max(y2, onScreen.y)
	end
	local col = h.g.team.GetColor(h.pm.Team(v))
	if drawbox then
		h.g.surface.SetDrawColor(col)
		h.g.surface.DrawLine(x1, y1, h.g.math.min(x1 + 2000, x2), y1)
		h.g.surface.DrawLine(x1, y1, x1, h.g.math.min( y1 + 2000, y2))
		h.g.surface.DrawLine(x2, y1, h.g.math.max(x2 - 2000, x1), y1)
		h.g.surface.DrawLine(x2, y1, x2, h.g.math.min( y1 + 2000, y2))
		h.g.surface.DrawLine(x1, y2, h.g.math.min(x1 + 2000, x2), y2)
		h.g.surface.DrawLine(x1, y2, x1, h.g.math.max( y2 - 2000, y1))
		h.g.surface.DrawLine(x2, y2, h.g.math.max(x2 - 2000, x1), y2)
		h.g.surface.DrawLine(x2, y2, x2, h.g.math.max( y2 - 2000, y1))
	end
	local hg = h.v["esp"]["healthbar"] and 8 or 0
	if h.v["esp"]["healthbar"] then
		local m = x2 + 3
		local mh = 50
		local hm = h.em.Health(v) / 2
		local dx = {}
		dx.x = m
		dx.y = y1
		h.g.surface.SetDrawColor(h.v["esp"]["black"])
		h.g.surface.DrawRect(dx.x, dx.y, mh, 3)
		h.g.surface.SetDrawColor(h.v["esp"]["green"])
		h.g.surface.DrawRect(dx.x, dx.y, hm, 3)
	end
	if drawtext then
		if h.v["esp"]["name"] then
			h.g.draw.SimpleText(h.pm.Name(v), "BudgetLabel", x2 + 3, y1 + hg, col, 0, 1)
			hg = hg + 10
		end
		if h.v["esp"]["health"] then
			h.g.draw.SimpleText("[H]:"..h.em.Health(v), "BudgetLabel", x2 + 1, y1 + hg, col, 0, 1)
			hg = hg + 10
		end
		if h.v["esp"]["distance"] then
			h.g.draw.SimpleText("[D]:"..h.g.math****und(h.vm.Distance(h.em.GetPos(h.me), h.em.GetPos(v))), "BudgetLabel", x2 + 1, y1 + hg, col, 0, 1)
			hg = hg + 10
		end
		if h.v["esp"]["weapon"] then
			local w = h.pm.GetActiveWeapon(v)
			if h.em.IsValid(w) then
				local class = h.em.GetClass(w)
				h.g.draw.SimpleText("[W]:"..class, "BudgetLabel", x2 + 1, y1 + hg, col, 0, 1)
				hg = hg + 10
			end
		end
		if h.v["esp"]["dormant"] then
			if h.em.IsDormant(v) then
				h.g.draw.SimpleText("[DORMANT]", "BudgetLabel", x2 + 1, y1 + hg, col, 0, 1)
				hg = hg + 10
			end
		end
		if h.v["esp"]["rank"] then
			h.g.draw.SimpleText("[R]:"..h.pm.GetUserGroup(v), "BudgetLabel", x2 + 1, y1 + hg, col, 0, 1)
			hg = hg + 10
		end
	end
end

function h.ThreeDBox(v)
	local min,max = h.em.WorldSpaceAABB(v)
	local diff = max-min
	local pos2 = h.g.Vector(0,0,0)
	local pos1 = h.g.Vector(0,0,0)
	local pos3 = h.g.Vector(0,0,0)
	local pos4 = h.g.Vector(0,0,0)
	local pos5 = h.g.Vector(0,0,diff.z)
	local pos6 = h.g.Vector(0,0,diff.z)
	local pos7 = h.g.Vector(0,0,diff.z)
	local pos8 = h.g.Vector(0,0,diff.z)
	local pos1 = h.vm.ToScreen(pos1 + h.em.WorldSpaceAABB(v) + h.g.Vector(diff.x,diff.y,0))
	local pos2 = h.vm.ToScreen(pos2 + h.em.WorldSpaceAABB(v) + h.g.Vector(diff.x,-diff.y/14,0))
	local pos3 = h.vm.ToScreen(pos3 + h.em.WorldSpaceAABB(v) + h.g.Vector(-diff.x/14,-diff.y/14,0))
	local pos4 = h.vm.ToScreen(pos4 + h.em.WorldSpaceAABB(v) + h.g.Vector(-diff.x/14,diff.y,0))
	local pos5 = h.vm.ToScreen(pos5 + h.em.WorldSpaceAABB(v) + h.g.Vector(diff.x,diff.y,0))
	local pos6 = h.vm.ToScreen(pos6 + h.em.WorldSpaceAABB(v) + h.g.Vector(diff.x,-diff.y/14,0))
	local pos7 = h.vm.ToScreen(pos7 + h.em.WorldSpaceAABB(v) + h.g.Vector(-diff.x/14,-diff.y/14,0))
	local pos8 = h.vm.ToScreen(pos8 + h.em.WorldSpaceAABB(v) + h.g.Vector(-diff.x/14,diff.y,0))
	h.g.surface.SetDrawColor(h.g.team.GetColor(h.pm.Team(v)))
	h.g.surface.DrawLine(pos1.x, pos1.y, pos2.x, pos2.y)
	h.g.surface.DrawLine(pos2.x, pos2.y, pos3.x, pos3.y)
	h.g.surface.DrawLine(pos3.x, pos3.y, pos4.x, pos4.y)
	h.g.surface.DrawLine(pos1.x, pos1.y, pos4.x, pos4.y)
	h.g.surface.DrawLine(pos1.x, pos1.y, pos5.x, pos5.y)
	h.g.surface.DrawLine(pos2.x, pos2.y, pos6.x, pos6.y)
	h.g.surface.DrawLine(pos3.x, pos3.y, pos7.x, pos7.y)
	h.g.surface.DrawLine(pos4.x, pos4.y, pos8.x, pos8.y)
	h.g.surface.DrawLine(pos5.x, pos5.y, pos6.x, pos6.y)
	h.g.surface.DrawLine(pos6.x, pos6.y, pos7.x, pos7.y)
	h.g.surface.DrawLine(pos7.x, pos7.y, pos8.x, pos8.y)
	h.g.surface.DrawLine(pos5.x, pos5.y, pos8.x, pos8.y)
end

function h.ESPLoop()
	local allplys = validplayer
	for i = 1, #allplys do
		local v = allplys[i]
		if !h.em.IsValid(v) or v == h.me or h.em.Health(v) < 1 or h.pm.Team(v) == 1002 then continue end
		if h.v["esp"]["3dbox"] then
			h.ThreeDBox(v)
		end
		h.TwoDBox(v, h.v["esp"]["2dbox"], h.v["esp"]["text"])
	end
end

-- Triggerbot

function h.Triggerbot(ucmd)
	triggering = false
	if h.v["aimbot"]["enabled"] or !h.v["triggerbot"]["enabled"] then return end
	local ent = h.pm.GetEyeTrace(h.me).Entity
	if !h.em.IsValid(ent) then
		return
	end
	if ent:IsPlayer() or ent:IsNPC() then
		if h.em.Health(ent) < 1 then return end
		if h.em.IsPlayer(ent) then
			if h.pm.Team(ent) == 1002 then
				return
			end
		end
		triggering = true
		local wep = h.pm.GetActiveWeapon(h.me)
		if wep and h.em.IsValid(wep) then
			local class = h.em.GetClass(wep)
			if h.Cones[class] then
				h.cm.SetViewAngles(ucmd, h.vm.Angle(h.dickwrap.Predict(ucmd, h.am.Forward(h.v["aimbot"]["fakeangles"]), h.Cones[class])))
			end
		end
		h.cm.SetButtons(ucmd, h.g.bit.bor(h.cm.GetButtons(ucmd), 1))
	end
end

-- Antiaim, Spinbot

h.v["hvh"]["antiaimswitch"] = false

function h.AAS(ucmd)
	if h.v["aimbot"]["enabled"] or h.g.input.IsMouseDown(107) or h.g.input.IsKeyDown(15) then
		h.v["hvh"]["enabled"] = false
		return
	end
	h.v["hvh"]["enabled"] = false
	if h.v["hvh"]["antiaim"] then
		h.v["hvh"]["enabled"] = true
		if h.v["hvh"]["method"] == 1 then
			h.cm.SetViewAngles(ucmd, h.g.Angle(-181, h.v["aimbot"]["fakeangles"].y, 0))
			h.cm.SetForwardMove(ucmd, h.cm.GetForwardMove(ucmd) * -1)
		elseif h.v["hvh"]["method"] == 2 then
			h.cm.SetViewAngles(ucmd, h.g.Angle(181, h.v["aimbot"]["fakeangles"].y, 0))
			h.cm.SetForwardMove(ucmd, h.cm.GetForwardMove(ucmd) * -1)
		elseif h.v["hvh"]["method"] == 3 then
			h.cm.SetViewAngles(ucmd, h.g.Angle(181, h.g.math.random(-180, 180), 0))
			h.FixMovement(ucmd, true)
		elseif h.v["hvh"]["method"] == 4 then
			h.cm.SetViewAngles(ucmd, h.g.Angle(-181, h.g.math.random(-180, 180), 0))
			h.FixMovement(ucmd, true)
		elseif h.v["hvh"]["method"] == 5 then
			local ang = h.v["hvh"]["antiaimswitch"] and -181 or 181
			h.cm.SetViewAngles(ucmd, h.g.Angle(ang, h.g.math.random(-180, 180), 0))
			h.FixMovement(ucmd, true)
			h.v["hvh"]["antiaimswitch"] = not h.v["hvh"]["antiaimswitch"]
		end
		return
	end
	if h.v["hvh"]["spinbot"] then
		h.v["hvh"]["enabled"] = true
		h.cm.SetViewAngles(ucmd, h.g.Angle(h.v["aimbot"]["fakeangles"].x, h.cm.GetViewAngles(ucmd).y + h.v["hvh"]["spinbotspeed"], 0))
		h.FixMovement(ucmd)
		return
	end
end

-- CalcView

local demo = h.g.engine.IsPlayingDemo()

function h.CalcView(p, origin, ang, fov)
	local view = {}
	view.origin = h.v["misc"]["thirdperson"] and origin - (h.am.Forward(h.v["aimbot"]["fakeangles"]) * 100) or origin
	if (h.v["aimbot"]["silentaim"]) or h.v["hvh"]["enabled"] or ins or triggering then
		view.angles = h.v["aimbot"]["fakeangles"]
	elseif h.v["aimbot"]["enabled"] and h.v["aimbot"]["silentaim"] then
		local norecoil = h.v["misc"]["norecoil"]
		view.angles = h.v["aimbot"]["fakeangles"]
		if !norecoil then
			local punch = h.pm.GetPunchAngle(h.me)
			view.angles = h.v["aimbot"]["fakeangles"] - punch
		end
	else
		view.angles = ang
	end
	view.fov = fov
	return view
end

if !demo then
h.AddHook("CalcView", h.g.util.CRC("vindicate_calcview"), h.CalcView)
h.AddHook("ShouldDrawLocalPlayer", h.g.util.CRC("vindicate_sdlp"), function()
	return h.v["misc"]["thirdperson"]
end)
h.AddHook("CalcViewModelView", h.g.util.CRC("vindicate_calcviewmodelview"), h.CalcViewModelView)
end

-- Config Save, load functions etc

function h.SaveConfig(name)
	local cfg = h.g.util.TableToJSON(h.v, true)
	h.g.file.Write("vindicate/configs/"..name..".txt", cfg)
	h.Notify("Saved Config '"..name.."'.")
end

function h.LoadConfig(name)
	local name = h.g.string.Replace(name, ".txt", "")
	local json = h.g.file.Read("vindicate/configs/"..name..".txt", "DATA")
	local cfg = h.g.util.JSONToTable(json)
	h.v = cfg
	h.Notify("Loaded Config '"..name.."'.")
end

-- Namesteal

function h.Namesteal()
	if !h.v["misc"]["namesteal"] then
		h.g.timer.Simple(1, function()
			h.Namesteal()
		end)
		return
	end
	local p = validplayer[h.g.math.random(1, #validplayer)]
	if !h.em.IsValid(p) or p == h.me then return end
	h.ChangeName(h.pm.Name(p).." ")
	h.g.timer.Simple(1, function()
		h.Namesteal()
	end)
end

h.Namesteal()

h.Gamemode = h.g.gmod.GetGamemode().Name

function h.RPNamesteal()
	if h.Gamemode != "DarkRP" or !h.v["misc"]["rpnamesteal"] then
		h.v["misc"]["rpnamesteal"] = false
		h.g.timer.Simple(5.1, function()
			h.RPNamesteal()
		end)
		return
	end
	local p = validplayer[h.g.math.random(1, #validplayer())]
	if !h.em.IsValid(p) or p == h.Me then
		h.RPNamesteal()
		return
	end
	h.g.RunConsoleCommand("darkrp", "rpname", h.pm.Name(p).." ")
	h.g.timer.Simple(5.1, function()
		h.RPNamesteal()
	end)
end

h.RPNamesteal()

-- Chatspam

function h.Chatspam()
	if !h.v["misc"]["chatspam"] then
		h.g.timer.Simple(.5, function()
			h.Chatspam()
		end)
		return
	end
	h.g.RunConsoleCommand("say", h.v["misc"]["chatspammsg"])
	h.g.timer.Simple(.1, function()
		h.Chatspam()
	end)
end

h.Chatspam()

-- Crosshair

function h.Crosshair()
	if !h.v["misc"]["crosshair"] then return end
	local col1 = h.g.Color(h.v["misc"]["crosshair_ir"], h.v["misc"]["crosshair_ig"], h.v["misc"]["crosshair_ib"], h.v["misc"]["crosshair_ia"])
	local col2 = h.g.Color(h.v["misc"]["crosshair_or"], h.v["misc"]["crosshair_og"], h.v["misc"]["crosshair_ob"], h.v["misc"]["crosshair_oa"])
	h.g.draw.SimpleTextOutlined("+", "DermaLarge", h.g.ScrW() / 2, h.g.ScrH() / 2, col1, 1, 1, 2, col2)
end

-- XRay

h.xraymat = h.g.CreateMaterial(h.g.util.CRC("vindicate_xraymat"), "VertexLitGeneric", {
	["$basetexture"] = "models/debug/debugwhite"
})

function h.XRay()
	local allprops = h.g.ents.FindByClass("prop_physics")
	for i = 1, #allprops do
		local v = allprops[i]
		if !h.em.IsValid(v) then continue end
		if !h.v["esp"]["xray"] then
			h.em.SetNoDraw(v, false)
			continue
		end
		h.g.cam.Start3D()
			h.g.render.SuppressEngineLighting(true)
			h.g.render.MaterialOverride(h.xraymat)
			h.g.render.SetColorModulation(h.v["esp"]["xray_color"].r / 255, h.v["esp"]["xray_color"].g / 255, h.v["esp"]["xray_color"].b / 255)
			h.g.render.SetBlend(h.v["esp"]["xray_color"].a / 255)
			h.em.DrawModel(v)
			h.em.SetNoDraw(v, true)
			h.g.render.SuppressEngineLighting(false)
		h.g.cam.End3D()
	end
end

function h.XRay2()
	if !h.v["esp"]["xray"] then return end
	local allplys = validplayer
	for i = 1, #allplys do
		local v = allplys[i]
		if !h.em.IsValid(v) or h.em.Health(v) < 1 or v == me then continue end
		h.g.cam.Start3D()
			h.g.render.SuppressEngineLighting(true)
			h.g.render.MaterialOverride(h.xraymat)
			local col = h.g.team.GetColor(h.pm.Team(v))
			h.g.render.SetColorModulation(180 / 255, 0, 0)
			h.g.render.SetBlend(180 / 255)
			h.em.DrawModel(v)
			h.g.render.SuppressEngineLighting(false)
		h.g.cam.End3D()
	end
end

-- Exploits, thanks to KIF3R

function h.HitmanXSendMoneyToAll()
	local allplys = validplayer
	for i = 1, #allplys do
		local v = allplys[i]
		if !h.em.IsValid(v) then continue end
		h.g.net.Start("SendMoney")
			h.g.net.WriteEntity(v)
			h.g.net.WriteEntity(v)
			h.g.net.WriteEntity(v)
			h.g.net.WriteString("-100000000000000000000000000000000000000000")
		h.g.net.SendToServer()
	end
end

function h.HitmanXSendMoneyToSelf()
	h.g.net.Start("SendMoney")
		h.g.net.WriteEntity(h.me)
		h.g.net.WriteEntity(h.me)
		h.g.net.WriteEntity(h.me)
		h.g.net.WriteString("-100000000000000000000000000000000000000000")
	h.g.net.SendToServer()
end

function h.DarkRPLag()
	if h.v["misc"]["darkrplag"] then
		for i = 1, 10000 do
			h.g.net.Start("DarkRP_spawnPocket")
			h.g.net.SendToServer()
		end
	end
	h.g.timer.Simple(1, h.DarkRPLag)
end

h.DarkRPLag()

function h.BailExploitForAll()
	local allplys = validplayer
	for i = 1, #allplys do
		local v = allplys[i]
		if !h.em.IsValid(v) then continue end
		h.g.net.Start("BailOut")
			h.g.net.WriteEntity(h.me)
			h.g.net.WriteEntity(v)
			h.g.net.WriteFloat(-99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)
		h.g.net.SendToServer()
	end
end

function h.BailExploitSelf()
	h.g.net.Start("BailOut")
		h.g.net.WriteEntity(h.me)
		h.g.net.WriteEntity(h.me)
		h.g.net.WriteFloat(-99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)
	h.g.net.SendToServer()
end

function h.LevelFuckUp(v)
	net.Start("REPAdminChangeRPC")
		net.WriteEntity(v)
		net.WriteDouble(0)
	net.SendToServer()
end

-- Chams

h.ChamsMat = h.g.CreateMaterial(h.g.util.CRC("vindicate_chamsmat"), "VertexLitGeneric", {
	["$basetexture"] = "models/debug/debugwhite",
	["$model"] = 1,
	["$ignorez"] = 1
})

function h.Chams()
	if !h.v["esp"]["chams"] or h.v["esp"]["xray"] then return end
	local allplys = validplayer
	for i = 1, #allplys do
		local v = allplys[i]
		if !h.em.IsValid(v) or v == h.me or h.em.Health(v) < 1 or h.pm.Team(v) == 1002 then continue end
		local col = h.g.team.GetColor(h.pm.Team(v))
		local w = h.pm.GetActiveWeapon(v)
		h.g.cam.Start3D()
			h.g.render.MaterialOverride(h.ChamsMat)
			h.g.render.SuppressEngineLighting(true)
			h.g.render.SetColorModulation(col.r / 255, col.g / 255, col.b / 255)
			h.em.DrawModel(v)
			if h.em.IsValid(w) and h.v["esp"]["chamsweapon"] then
				h.g.render.SetColorModulation(col.b / 255, col.r / 255, col.g / 255)
				h.em.DrawModel(w)
			end
			h.g.render.SuppressEngineLighting(false)
		h.g.cam.End3D()
	end
end

-- DarkRP Animation Spam

local anims = {
	1612,
	1617,
	1611,
	1618,
	1616,
	1613,
	1610,
	1615,
}

local animwait = {
	[1612] = 3.1,
	[1617] = 13,
	[1611] = 3.7,
	[1618] = 6,
	[1616] = 3.3,
	[1613] = 2.6,
	[1610] = 2.8,
	[1615] = 3.35,
}

local allowedanim = true

function h.AnimSpam()
	if !allowedanim or !h.v["misc"]["animspam"] then return end
	local anim = h.g.table.Random(anims)
	h.g.RunConsoleCommand("_DarkRP_DoAnimation", anim)
	allowedanim = false
	h.g.timer.Simple(animwait[anim], function()
		allowedanim = true
	end)
end

-- Tracers

function h.Tracers()
	if !h.v["esp"]["tracers"] then return end
	for i = 1, #validplayer do
		local v = validplayer[i]
		if v == h.me or !h.em.IsValid(v) or h.em.Health(v) < 1 or h.pm.Team(v) == 1002 then continue end
		h.g.surface.SetDrawColor(h.g.team.GetColor(h.pm.Team(v)))
		local pos = h.em.LocalToWorld(v, h.em.OBBCenter(v))
		local pos = h.vm.ToScreen(pos)
		h.g.surface.DrawLine(h.g.ScrW() / 2, h.g.ScrH() / 2, pos.x, pos.y)
	end
end

-- Menu

function h.Menu()
	local frame = h.g****ui.Create("DFrame")
	frame:SetTitle("VINDICATE | Menu")
	frame:SetSize(750, 520)
	frame:Center()
	frame:ShowCloseButton(false)
	frame:MakePopup()
	function frame:Paint(w, h2)
		h.g.draw****undedBox(0, 0, 0, w, h2, h.g.Color(h.v["menu"]["r"], h.v["menu"]["g"], h.v["menu"]["b"], h.v["menu"]["a"]))
	end

	local aim = h.g****ui.Create("DPanel", frame)
	aim:SetSize(580, 480)
	aim:SetPos(150, 26)
	function aim:Paint(w, h2)
		h.g.draw****undedBox(0, 0, 0, w, h2, h.g.Color(h.v["menu"]["r"], h.v["menu"]["g"], h.v["menu"]["b"], h.v["menu"]["a"] - 50))
	end
	aim:SetVisible(false)

	local esp = h.g****ui.Create("DPanel", frame)
	esp:SetSize(580, 480)
	esp:SetPos(150, 26)
	function esp:Paint(w, h2)
		h.g.draw****undedBox(0, 0, 0, w, h2, h.g.Color(h.v["menu"]["r"], h.v["menu"]["g"], h.v["menu"]["b"], h.v["menu"]["a"] - 50))
	end
	esp:SetVisible(false)

	local tri = h.g****ui.Create("DPanel", frame)
	tri:SetSize(580, 480)
	tri:SetPos(150, 26)
	function tri:Paint(w, h2)
		h.g.draw****undedBox(0, 0, 0, w, h2, h.g.Color(h.v["menu"]["r"], h.v["menu"]["g"], h.v["menu"]["b"], h.v["menu"]["a"] - 50))
	end
	tri:SetVisible(false)

	local men = h.g****ui.Create("DPanel", frame)
	men:SetSize(580, 480)
	men:SetPos(150, 26)
	function men:Paint(w, h2)
		h.g.draw****undedBox(0, 0, 0, w, h2, h.g.Color(h.v["menu"]["r"], h.v["menu"]["g"], h.v["menu"]["b"], h.v["menu"]["a"] - 50))
	end
	men:SetVisible(false)

	local mis = h.g****ui.Create("DPanel", frame)
	mis:SetSize(580, 480)
	mis:SetPos(150, 26)
	function mis:Paint(w, h2)
		h.g.draw****undedBox(0, 0, 0, w, h2, h.g.Color(h.v["menu"]["r"], h.v["menu"]["g"], h.v["menu"]["b"], h.v["menu"]["a"] - 50))
	end
	mis:SetVisible(false)

	local cre = h.g****ui.Create("DPanel", frame)
	cre:SetSize(580, 480)
	cre:SetPos(150, 26)
	function cre:Paint(w, h2)
		h.g.draw****undedBox(0, 0, 0, w, h2, h.g.Color(h.v["menu"]["r"], h.v["menu"]["g"], h.v["menu"]["b"], h.v["menu"]["a"] - 50))
	end
	cre:SetVisible(false)

	local function visible(aim1, esp1, trigger, menu, misc, credits)
		aim:SetVisible(aim1)
		esp:SetVisible(esp1)
		tri:SetVisible(trigger)
		men:SetVisible(menu)
		mis:SetVisible(misc)
		cre:SetVisible(credits)
	end

	local aimb = h.g****ui.Create("DButton", frame)
	aimb:SetPos(5, 25)
	aimb:SetText("Aimbot")
	aimb:SetSize(130, 60)
	aimb.DoClick = function()
		visible(true)
	end

	local espb = h.g****ui.Create("DButton", frame)
	espb:SetPos(5, 95)
	espb:SetText("ESP")
	espb:SetSize(130, 60)
	espb.DoClick = function()
		visible(false, true)
	end

	local trib = h.g****ui.Create("DButton", frame)
	trib:SetPos(5, 165)
	trib:SetText("Hack vs. Hack")
	trib:SetSize(130, 60)
	trib.DoClick = function()
		visible(false, false, true)
	end

	local menb = h.g****ui.Create("DButton", frame)
	menb:SetPos(5, 235)
	menb:SetText("Menu")
	menb:SetSize(130, 60)
	menb.DoClick = function()
		visible(false, false, false, true)
	end

	local misb = h.g****ui.Create("DButton", frame)
	misb:SetPos(5, 305)
	misb:SetText("Miscellaneous")
	misb:SetSize(130, 60)
	misb.DoClick = function()
		visible(false, false, false, false, true)
	end

	local creb = h.g****ui.Create("DButton", frame)
	creb:SetPos(5, 375)
	creb:SetText("Credits")
	creb:SetSize(130, 60)
	creb.DoClick = function()
		visible(false, false, false, false, false, true)
	end

	local clob = h.g****ui.Create("DButton", frame)
	clob:SetPos(5, 445)
	clob:SetText("Close")
	clob:SetSize(130, 60)
	clob.DoClick = function()
		h.v["menu"]["isopen"] = false
		frame:Close()
	end

	local label = h.g****ui.Create("DLabel", aim)
	label:SetText("Aimbot Key")
	label:SetPos(80, 5)
	label:SizeToContents()

	local abin = h.g****ui.Create("DBinder", aim)
	abin:SetPos(5, 20)
	abin:SetSize(200, 50)
	abin:SetText("Aimbot Key")
	abin:SetValue(h.v["aimbot"]["key"])
	local name = h.g.util.CRC(h.g.os.date())
	h.g.hook.Add("Think", name, function()
		if !frame:IsValid() then
			h.g.hook.Remove("Think", name)
			return
		end
		h.v["aimbot"]["key"] = abin:GetValue()
	end)

	local aimc1 = h.g****ui.Create("DCheckBox", aim)
	aimc1:SetPos(5, 80)
	aimc1:SetValue(h.BoolToNumber(h.v["aimbot"]["silentaim"]))
	function aimc1:OnChange(b)
		h.v["aimbot"]["silentaim"] = b
	end
	local label = h.g****ui.Create("DLabel", aim)
	label:SetText("Silent Aim")
	label:SetPos(25, 80)
	label:SizeToContents()

	local aimc2 = h.g****ui.Create("DCheckBox", aim)
	aimc2:SetPos(5, 100)
	aimc2:SetValue(h.BoolToNumber(h.v["aimbot"]["autofire"]))
	function aimc2:OnChange(b)
		h.v["aimbot"]["autofire"] = b
	end
	local label = h.g****ui.Create("DLabel", aim)
	label:SetText("Autoshoot")
	label:SetPos(25, 100)
	label:SizeToContents()

	local aimc3 = h.g****ui.Create("DCheckBox", aim)
	aimc3:SetPos(5, 120)
	aimc3:SetValue(h.BoolToNumber(h.v["aimbot"]["targetfriends"]))
	function aimc3:OnChange(b)
		h.v["aimbot"]["targetfriends"] = b
	end
	local label = h.g****ui.Create("DLabel", aim)
	label:SetText("Target Steam Friends")
	label:SetPos(25, 120)
	label:SizeToContents()

	local espc1 = h.g****ui.Create("DCheckBox", esp)
	espc1:SetPos(5, 5)
	espc1:SetValue(h.BoolToNumber(h.v["esp"]["2dbox"]))
	function espc1:OnChange(b)
		h.v["esp"]["2dbox"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("2D Box")
	label:SetPos(25, 5)
	label:SizeToContents()

	local espc2 = h.g****ui.Create("DCheckBox", esp)
	espc2:SetPos(5, 25)
	espc2:SetValue(h.BoolToNumber(h.v["esp"]["3dbox"]))
	function espc2:OnChange(b)
		h.v["esp"]["3dbox"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("3D Box")
	label:SetPos(25, 25)
	label:SizeToContents()

	local espc3 = h.g****ui.Create("DCheckBox", esp)
	espc3:SetPos(5, 45)
	espc3:SetValue(h.BoolToNumber(h.v["esp"]["text"]))
	function espc3:OnChange(b)
		h.v["esp"]["text"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("ESP Text")
	label:SetPos(25, 45)
	label:SizeToContents()

	local espc4 = h.g****ui.Create("DCheckBox", esp)
	espc4:SetPos(5, 65)
	espc4:SetValue(h.BoolToNumber(h.v["esp"]["name"]))
	function espc4:OnChange(b)
		h.v["esp"]["name"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("Show Name")
	label:SetPos(25, 65)
	label:SizeToContents()

	local espc5 = h.g****ui.Create("DCheckBox", esp)
	espc5:SetPos(5, 85)
	espc5:SetValue(h.BoolToNumber(h.v["esp"]["health"]))
	function espc5:OnChange(b)
		h.v["esp"]["health"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("Show HP")
	label:SetPos(25, 85)
	label:SizeToContents()

	local espc6 = h.g****ui.Create("DCheckBox", esp)
	espc6:SetPos(5, 105)
	espc6:SetValue(h.BoolToNumber(h.v["esp"]["weapon"]))
	function espc6:OnChange(b)
		h.v["esp"]["weapon"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("Show Weapon")
	label:SetPos(25, 105)
	label:SizeToContents()

	local espc7 = h.g****ui.Create("DCheckBox", esp)
	espc7:SetPos(5, 125)
	espc7:SetValue(h.BoolToNumber(h.v["esp"]["distance"]))
	function espc7:OnChange(b)
		h.v["esp"]["distance"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("Show Distance")
	label:SetPos(25, 125)
	label:SizeToContents()

	local espc1337 = h.g****ui.Create("DCheckBox", esp)
	espc1337:SetPos(5, 145)
	espc1337:SetValue(h.BoolToNumber(h.v["esp"]["rank"]))
	function espc1337:OnChange(b)
		h.v["esp"]["rank"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("Show Rank	")
	label:SetPos(25, 145)
	label:SizeToContents()

	local espc8 = h.g****ui.Create("DCheckBox", esp)
	espc8:SetPos(5, 165)
	espc8:SetValue(h.BoolToNumber(h.v["esp"]["dormant"]))
	function espc8:OnChange(b)
		h.v["esp"]["dormant"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("Show if a Player is Dormant")
	label:SetPos(25, 165)
	label:SizeToContents()

	local espc9 = h.g****ui.Create("DCheckBox", esp)
	espc9:SetPos(5, 185)
	espc9:SetValue(h.BoolToNumber(h.v["esp"]["healthbar"]))
	function espc9:OnChange(b)
		h.v["esp"]["healthbar"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("Draw Healthbar")
	label:SetPos(25, 185)
	label:SizeToContents()

	local espc10 = h.g****ui.Create("DCheckBox", esp)
	espc10:SetPos(5, 205)
	espc10:SetValue(h.BoolToNumber(h.v["esp"]["chams"]))
	function espc10:OnChange(b)
		h.v["esp"]["chams"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("Chams")
	label:SetPos(25, 205)
	label:SizeToContents()

	local espc11 = h.g****ui.Create("DCheckBox", esp)
	espc11:SetPos(5, 225)
	espc11:SetValue(h.BoolToNumber(h.v["esp"]["chamsweapon"]))
	function espc11:OnChange(b)
		h.v["esp"]["chamsweapon"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("Weapon Chams")
	label:SetPos(25, 225)
	label:SizeToContents()

	local espc12 = h.g****ui.Create("DCheckBox", esp)
	espc12:SetPos(5, 245)
	espc12:SetValue(h.BoolToNumber(h.v["esp"]["xray"]))
	function espc12:OnChange(b)
		h.v["esp"]["xray"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("XRay")
	label:SetPos(25, 245)
	label:SizeToContents()

	local xraycol = h.g****ui.Create("DButton", esp)
	xraycol:SetSize(150, 30)
	xraycol:SetPos(5, 265)
	xraycol:SetText("XRay Color")
	xraycol.DoClick = function()
		local fr = h.g****ui.Create("DFrame")
		fr:SetTitle("VINDICATE | XRay Color Menu")
		fr:SetSize(267, 186)
		fr:Center()
		fr:MakePopup()
		local colr = h.g****ui.Create("DColorMixer", fr)
		colr:Dock( FILL )
		colr:SetPalette(true)
		colr:SetAlphaBar(true)
		colr:SetWangs(true)
		colr:SetColor(h.v["esp"]["xray_color"])
		function colr:ValueChanged(col)
			h.v["esp"]["xray_color"].r = col.r
			h.v["esp"]["xray_color"].g = col.g
			h.v["esp"]["xray_color"].b = col.b
			h.v["esp"]["xray_color"].a = col.a
		end
	end

	local espc13 = h.g****ui.Create("DCheckBox", esp)
	espc13:SetPos(5, 300)
	espc13:SetValue(h.BoolToNumber(h.v["esp"]["tracers"]))
	function espc13:OnChange(b)
		h.v["esp"]["tracers"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("Tracers")
	label:SetPos(25, 300)
	label:SizeToContents()

	local hvh1 = h.g****ui.Create("DCheckBox", tri)
	hvh1:SetPos(5, 5)
	hvh1:SetValue(h.BoolToNumber(h.v["hvh"]["antiaim"]))
	function hvh1:OnChange(b)
		h.v["hvh"]["antiaim"] = b
	end
	local label = h.g****ui.Create("DLabel", tri)
	label:SetText("Antiaim")
	label:SetPos(25, 5)
	label:SizeToContents()

	local hvhb = h.g****ui.Create("DButton", tri)
	hvhb:SetPos(5, 25)
	hvhb:SetSize(100, 30)
	hvhb:SetText("Antiaim Method")
	hvhb.DoClick = function()
		local menu = h.g.DermaMenu()
		for k,v in h.g.pairs(h.v["hvh"]["antiaimmethods"]) do
			menu:AddOption(v[1], function()
				h.v["hvh"]["method"] = v[2]
			end)
		end
		menu:Open()
	end

	local hvh2 = h.g****ui.Create("DCheckBox", tri)
	hvh2:SetPos(5, 60)
	hvh2:SetValue(h.BoolToNumber(h.v["hvh"]["spinbot"]))
	function hvh2:OnChange(b)
		h.v["hvh"]["spinbot"] = b
	end
	local label = h.g****ui.Create("DLabel", tri)
	label:SetText("Spinbot")
	label:SetPos(25, 60)
	label:SizeToContents()

	local hvhn = h.g****ui.Create("DNumberWang", tri)
	hvhn:SetPos(5, 80)
	hvhn:SetSize(35, 20)
	hvhn:SetValue(h.v["hvh"]["spinbotspeed"])
	function hvhn:OnValueChanged(v)
		h.v["hvh"]["spinbotspeed"] = v
	end
	local label = h.g****ui.Create("DLabel", tri)
	label:SetText("Spinbot Speed")
	label:SetPos(45, 82.5)
	label:SizeToContents()

	local label = h.g****ui.Create("DLabel", men)
	label:SetText("Menu Key")
	label:SetPos(80, 5)
	label:SizeToContents()

	local mbin = h.g****ui.Create("DBinder", men)
	mbin:SetPos(5, 20)
	mbin:SetSize(200, 50)
	mbin:SetText("Menu Key")
	mbin:SetValue(h.v["menu"]["key"])
	local name3 = h.g.util.CRC(h.g.os.date()).."2313233"
	h.g.hook.Add("Think", name3, function()
		if !frame:IsValid() then
			h.g.hook.Remove("Think", name3)
			return
		end
		h.v["menu"]["key"] = mbin:GetValue()
	end)

	local label = h.g****ui.Create("DLabel", men)
	label:SetText("Menu Color")
	label:SetPos(80, 90)
	label:SizeToContents()

	local menc = h.g****ui.Create("DColorMixer", men)
	menc:SetSize(267, 186)
	menc:SetPos(5, 105)
	menc:SetPalette(true)
	menc:SetAlphaBar(true)
	menc:SetWangs(true)
	menc:SetColor(h.g.Color(h.v["menu"]["r"], h.v["menu"]["g"], h.v["menu"]["b"], h.v["menu"]["a"]))
	function menc:ValueChanged(col)
		h.v["menu"]["r"] = col.r
		h.v["menu"]["g"] = col.g
		h.v["menu"]["b"] = col.b
		h.v["menu"]["a"] = col.a
	end

	local mis1 = h.g****ui.Create("DCheckBox", mis)
	mis1:SetPos(5, 5)
	mis1:SetValue(h.BoolToNumber(h.v["triggerbot"]["enabled"]))
	function mis1:OnChange(b)
		h.v["triggerbot"]["enabled"] = b
	end
	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("Triggerbot")
	label:SetPos(25, 5)
	label:SizeToContents()

	local mis123 = h.g****ui.Create("DCheckBox", mis)
	mis123:SetPos(200, 5)
	mis123:SetValue(h.BoolToNumber(h.v["misc"]["bunnyhop"]))
	function mis123:OnChange(b)
		h.v["misc"]["bunnyhop"] = b
	end
	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("Bunnyhop")
	label:SetPos(225, 5)
	label:SizeToContents()

	local mis1423 = h.g****ui.Create("DCheckBox", mis)
	mis1423:SetPos(200, 25)
	mis1423:SetValue(h.BoolToNumber(h.v["misc"]["bhopautostrafe"]))
	function mis1423:OnChange(b)
		h.v["misc"]["bhopautostrafe"] = b
	end
	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("Bunnyhop Autostrafe")
	label:SetPos(225, 25)
	label:SizeToContents()

	local mis2 = h.g****ui.Create("DCheckBox", mis)
	mis2:SetPos(5, 25)
	mis2:SetValue(h.BoolToNumber(h.v["misc"]["thirdperson"]))
	function mis2:OnChange(b)
		h.v["misc"]["thirdperson"] = b
	end
	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("Thirdperson")
	label:SetPos(25, 25)
	label:SizeToContents()

	local saveconf = h.g****ui.Create("DButton", mis)
	saveconf:SetSize(150, 30)
	saveconf:SetPos(5, 45)
	saveconf:SetText("Save Config")

	saveconf.DoClick = function()
		local fr = h.g****ui.Create("DFrame")
		fr:SetTitle("VINDICATE | Save Config")
		fr:SetSize(300, 60)
		fr:Center()
		fr:MakePopup()
		local text = h.g****ui.Create("DTextEntry", fr)
		text:SetPos(0, 20)
		text:Dock( FILL )
		text:SetText("Config Name")
		text.OnEnter = function(self)
			h.SaveConfig(self:GetValue())
			fr:Close()
		end
	end

	local saveconf = h.g****ui.Create("DButton", mis)
	saveconf:SetSize(150, 30)
	saveconf:SetPos(5, 80)
	saveconf:SetText("Load Config")

	saveconf.DoClick = function()
		local files, _ = h.g.file.Find("vindicate/configs/*.txt", "DATA")
		local menu = h.g.DermaMenu()
		for k,v in h.g.pairs(files) do
			menu:AddOption(v, function()
				frame:Close()
				h.LoadConfig(v)
				h.Menu()
			end)
		end
		menu:Open()
	end

	local mis3 = h.g****ui.Create("DCheckBox", mis)
	mis3:SetPos(5, 115)
	mis3:SetValue(h.BoolToNumber(h.v["misc"]["namesteal"]))
	function mis3:OnChange(b)
		h.v["misc"]["namesteal"] = b
	end
	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("Namesteal")
	label:SetPos(25, 115)
	label:SizeToContents()

	local mis4 = h.g****ui.Create("DCheckBox", mis)
	mis4:SetPos(5, 135)
	mis4:SetValue(h.BoolToNumber(h.v["misc"]["rpnamesteal"]))
	function mis4:OnChange(b)
		h.v["misc"]["rpnamesteal"] = b
	end
	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("DarkRP Namesteal")
	label:SetPos(25, 135)
	label:SizeToContents()

	local mis5 = h.g****ui.Create("DCheckBox", mis)
	mis5:SetPos(5, 155)
	mis5:SetValue(h.BoolToNumber(h.v["misc"]["norecoil"]))
	function mis5:OnChange(b)
		h.v["misc"]["norecoil"] = b
	end
	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("No Recoil")
	label:SetPos(25, 155)
	label:SizeToContents()

	local mis6 = h.g****ui.Create("DCheckBox", mis)
	mis6:SetPos(5, 175)
	mis6:SetValue(h.BoolToNumber(h.v["misc"]["nospread"]))
	function mis6:OnChange(b)
		h.v["misc"]["nospread"] = b
	end
	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("No Spread")
	label:SetPos(25, 175)
	label:SizeToContents()

	local mis7 = h.g****ui.Create("DCheckBox", mis)
	mis7:SetPos(5, 195)
	mis7:SetValue(h.BoolToNumber(h.v["misc"]["chatspam"]))
	function mis7:OnChange(b)
		h.v["misc"]["chatspam"] = b
	end
	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("Chatspam")
	label:SetPos(25, 195)
	label:SizeToContents()

	local cms = h.g****ui.Create("DButton", mis)
	cms:SetSize(150, 30)
	cms:SetPos(5, 215)
	cms:SetText("Chatspam Message")
	cms.DoClick = function()
		local fr = h.g****ui.Create("DFrame")
		fr:SetTitle("VINDICATE | Chatspam Message")
		fr:SetSize(300, 60)
		fr:Center()
		fr:MakePopup()
		local text = h.g****ui.Create("DTextEntry", fr)
		text:SetPos(0, 20)
		text:Dock( FILL )
		text:SetText(h.v["misc"]["chatspammsg"])
		text.OnEnter = function(self)
			h.v["misc"]["chatspammsg"] = self:GetValue()
			fr:Close()
		end
	end

	local mis8 = h.g****ui.Create("DCheckBox", mis)
	mis8:SetPos(5, 250)
	mis8:SetValue(h.BoolToNumber(h.v["misc"]["crosshair"]))
	function mis8:OnChange(b)
		h.v["misc"]["crosshair"] = b
	end
	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("Crosshair")
	label:SetPos(25, 250)
	label:SizeToContents()

	local cri = h.g****ui.Create("DButton", mis)
	cri:SetSize(150, 30)
	cri:SetPos(5, 270)
	cri:SetText("Inner Crosshair Color")
	cri.DoClick = function()
		local fr = h.g****ui.Create("DFrame")
		fr:SetTitle("VINDICATE | Crosshair Color Manager")
		fr:SetSize(267, 186)
		fr:Center()
		fr:MakePopup()
		local colr = h.g****ui.Create("DColorMixer", fr)
		colr:Dock( FILL )
		colr:SetPalette(true)
		colr:SetAlphaBar(true)
		colr:SetWangs(true)
		colr:SetColor(h.g.Color(h.v["misc"]["crosshair_ir"], h.v["misc"]["crosshair_ig"], h.v["misc"]["crosshair_ib"], h.v["misc"]["crosshair_ia"]))
		function colr:ValueChanged(col)
			h.v["misc"]["crosshair_ir"] = col.r
			h.v["misc"]["crosshair_ig"] = col.g
			h.v["misc"]["crosshair_ib"] = col.b
			h.v["misc"]["crosshair_ia"] = col.a
		end
	end

	local cro = h.g****ui.Create("DButton", mis)
	cro:SetSize(150, 30)
	cro:SetPos(5, 305)
	cro:SetText("Outer Crosshair Color")
	cro.DoClick = function()
		local fr = h.g****ui.Create("DFrame")
		fr:SetTitle("VINDICATE | Crosshair Color Manager")
		fr:SetSize(267, 186)
		fr:Center()
		fr:MakePopup()
		local colr = h.g****ui.Create("DColorMixer", fr)
		colr:Dock( FILL )
		colr:SetPalette(true)
		colr:SetAlphaBar(true)
		colr:SetWangs(true)
		colr:SetColor(h.g.Color(h.v["misc"]["crosshair_or"], h.v["misc"]["crosshair_og"], h.v["misc"]["crosshair_ob"], h.v["misc"]["crosshair_oa"]))
		function colr:ValueChanged(col)
			h.v["misc"]["crosshair_or"] = col.r
			h.v["misc"]["crosshair_og"] = col.g
			h.v["misc"]["crosshair_ob"] = col.b
			h.v["misc"]["crosshair_oa"] = col.a
		end
	end

	local mis9 = h.g****ui.Create("DCheckBox", mis)
	mis9:SetPos(5, 340)
	mis9:SetValue(h.BoolToNumber(h.v["misc"]["darkrplag"]))
	function mis9:OnChange(b)
		h.v["misc"]["darkrplag"] = b
	end
	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("DarkRP Lag")
	label:SetPos(25, 340)
	label:SizeToContents()

	local exp1 = h.g****ui.Create("DButton", mis)
	exp1:SetSize(150, 30)
	exp1:SetPos(5, 360)
	exp1:SetText("Hitman X Exploit")
	exp1.DoClick = function()
		local menu = h.g.DermaMenu()
		menu:AddOption("Give Money to All", h.HitmanXSendMoneyToAll)
		menu:AddOption("Give Money to Self", h.HitmanXSendMoneyToSelf)
		menu:Open()
	end

	local exp2 = h.g****ui.Create("DButton", mis)
	exp2:SetSize(150, 30)
	exp2:SetPos(5, 395)
	exp2:SetText("Bail Exploit")
	exp2.DoClick = function()
		local menu = h.g.DermaMenu()
		menu:AddOption("Give Money to All", h.BailExploitForAll)
		menu:AddOption("Give Money to Self", h.BailExploitSelf)
		menu:Open()
	end

	local exp3 = h.g****ui.Create("DButton", mis)
	exp3:SetSize(150, 30)
	exp3:SetPos(5, 430)
	exp3:SetText("Level Fuckup")
	exp3.DoClick = function()
		local menu = h.g.DermaMenu()
		local allplys = validplayer
		for i = 1, #allplys do
			local v = allplys[i]
			if !h.em.IsValid(v) then continue end
			menu:AddOption(h.pm.Name(v), function()
				h.LevelFuckUp(v)
			end)
		end
		menu:Open()
	end

	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("PKill Key")
	label:SetPos(280, 45)
	label:SizeToContents()

	local pbin = h.g****ui.Create("DBinder", mis)
	pbin:SetPos(200, 60)
	pbin:SetSize(200, 50)
	pbin:SetText("TTTPKill Key")
	pbin:SetValue(h.v["misc"]["tttpkill"])
	local nam5e = h.g.util.CRC(h.g.os.date())..name..name..name
	h.g.hook.Add("Think", nam5e, function()
		if !frame:IsValid() then
			h.g.hook.Remove("Think", nam5e)
			return
		end
		h.v["misc"]["tttpkill"] = pbin:GetValue()
	end)

	local mis14233223 = h.g****ui.Create("DCheckBox", mis)
	mis14233223:SetPos(200, 120)
	mis14233223:SetValue(h.BoolToNumber(h.v["misc"]["animspam"]))
	function mis14233223:OnChange(b)
		h.v["misc"]["animspam"] = b
	end
	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("DarkRP Animation Spam")
	label:SetPos(225, 120)
	label:SizeToContents()

	local label = h.g****ui.Create("DLabel", cre)
	label:SetFont("BudgetLabel")
	label:SetText(
[[
db    db d888888b d8b   db d8888b. d888888b  .o88b.  .d8b.  d888888b d88888b
88    88   `88'   888o  88 88  `8D   `88'   d8P  Y8 d8' `8b `~~88~~' 88'
Y8    8P    88    88V8o 88 88   88    88    8P      88ooo88    88    88ooooo
`8b  d8'    88    88 V8o88 88   88    88    8b      88~~~88    88    88~~~~~
 `8bd8'    .88.   88  V888 88  .8D   .88.   Y8b  d8 88   88    88    88.
   YP    Y888888P VP   V8P Y8888D' Y888888P  `Y88P' YP   YP    YP    Y88888P
			                              __
			   ____ _____ ___  ____  ____/ /
			  / __ `/ __ `__ \/ __ \/ __  /
			 / /_/ / / / / / / /_/ / /_/ /
			 \__, /_/ /_/ /_/\____/\__,_/
			/____/

Made by Hvl.
]]
)
label:SetPos(5,5)
label:SizeToContents()

end


function h.TTTShit(ucmd)
	if !h.g.input.IsKeyDown(h.v["misc"]["tttpkill"]) then
		keydown = false
	end
	if ins then
		h.cm.SetForwardMove(ucmd, h.cm.GetForwardMove(ucmd) * -1)
	end
end

function h.TTTPKill()
	if !switch then
		h.v["aimbot"]["fakeangles"] = h.v["aimbot"]["fakeangles"] - h.g.Angle(0,180,0)
		ins = true
	else
		ins = false
	end
	switch = not switch
end

function h.CUserCmd(ucmd)
	h.Aimbot(ucmd)
	h.AAS(ucmd)
	h.Triggerbot(ucmd)
	h.BHop(ucmd)
	h.TTTShit(ucmd)
end

h.AddHook("CreateMove", h.g.util.CRC("vindicate_createmove"), h.CUserCmd)

function h.HUDPaint()
	h.ESPLoop()
	h.XRay()
	h.XRay2()
	h.Chams()
	h.Tracers()
	h.Crosshair()
end

h.AddHook("HUDPaint", h.g.util.CRC("vindicate_hudpaint"), h.HUDPaint)


function h.KeyPress()
	if h.pm.IsTyping(h.me) then
		h.v["aimbot"]["isdown"] = false
		return
	end
	if h.g.input.IsKeyDown(h.v["aimbot"]["key"]) then
		h.v["aimbot"]["isdown"] = true
	else
		h.v["aimbot"]["isdown"] = false
	end
	if h.g.input.IsKeyDown(h.v["misc"]["tttpkill"]) and !keydown then
		h.TTTPKill()
		keydown = true
	end
	if h.g.input.IsKeyDown(h.v["menu"]["key"]) then
		if !h.v["menu"]["isopen"] then
			h.v["menu"]["isopen"] = true
			h.Menu()
			h.Notify("Opened Menu.")
		end
	end
end

h.AddHook("Think", h.g.util.CRC("vindicate_keypress"), h.KeyPress)
h.AddHook("Think", h.g.util.CRC("vindicat_animspam"), h.AnimSpam)

h.Notify("Fully loaded.")
h.Notify("Welcome, "..h.pm.Name(h.me).." ("..h.pm.SteamID(h.me)..").")
Any heartbeat scans, so i know it's working with a heartbeat?
heres hAtus IP for you that where wonderin 174.57.216.160
ikr its very bad its like ahack
they're saying that you're garbage not really the hack,

did you try to pretend to be me to get the hack again?

(btw im FLAWLESS <3)
nonono i didn't pretend to be you to get this hack xD.. me and razor used to be friends.
hatu i swear to fuck if you dont get out of here with your skid bullshit you're getting 3 more pizzas and booted even harder and more often
nice firebullets detour never seen that before
Quote Originally Posted by hatu View Post
This is razors new rHook its called Vindicate
Includes darkrp dance script,aimbot,esp,moneyhack,bailexploit,hitmanexpl oit,antiaim,thirdeperson,and more!
So heres the code! you need the dlls for this too work!
Code:
--[[

VVVVVVVV           VVVVVVVV  iiii                                d::::::d   iiii                                                  tttt
V::::::V           V::::::V i::::i                               d::::::d  i::::i                                               ttt:::t
V::::::V           V::::::V  iiii                                d::::::d   iiii                                                t:::::t
V::::::V           V::::::V                                     d:::::d                                                         t:::::t
 V:::::V           V:::::V iiiiiii nnnn  nnnnnnnn         ddddddddd:::::d  iiiiiii      cccccccccccccccc   aaaaaaaaaaaaa   ttttttt:::::ttttttt         eeeeeeeeeeee
  V:::::V         V:::::V  i:::::i n:::nn::::::::nn     dd::::::::::::::d  i:::::i    cc:::::::::::::::c   a::::::::::::a  t:::::::::::::::::t       ee::::::::::::ee
   V:::::V       V:::::V    i::::i n::::::::::::::nn   d::::::::::::::::d   i::::i   c:::::::::::::::::c   aaaaaaaaa:::::a t:::::::::::::::::t      e::::::eeeee:::::ee
    V:::::V     V:::::V     i::::i nn:::::::::::::::n d:::::::ddddd:::::d   i::::i  c:::::::cccccc:::::c            a::::a tttttt:::::::tttttt     e::::::e     e:::::e
     V:::::V   V:::::V      i::::i   n:::::nnnn:::::n d::::::d    d:::::d   i::::i  c::::::c     ccccccc     aaaaaaa:::::a       t:::::t           e:::::::eeeee::::::e
      V:::::V V:::::V       i::::i   n::::n    n::::n d:::::d     d:::::d   i::::i  c:::::c                aa::::::::::::a       t:::::t           e:::::::::::::::::e
       V:::::V:::::V        i::::i   n::::n    n::::n d:::::d     d:::::d   i::::i  c:::::c               a::::aaaa::::::a       t:::::t           e::::::eeeeeeeeeee
        V:::::::::V         i::::i   n::::n    n::::n d:::::d     d:::::d   i::::i  c::::::c     ccccccc a::::a    a:::::a       t:::::t    tttttt e:::::::e
         V:::::::V         i::::::i  n::::n    n::::n d::::::ddddd::::::dd i::::::i c:::::::cccccc:::::c a::::a    a:::::a       t::::::tttt:::::t e::::::::e
          V:::::V          i::::::i  n::::n    n::::n  d:::::::::::::::::d i::::::i  c:::::::::::::::::c a:::::aaaa::::::a       tt::::::::::::::t e::::::::eeeeeeee
           V:::V           i::::::i  n::::n    n::::n   d:::::::::ddd::::d i::::::i   cc:::::::::::::::c a::::::::::aa:::a        tt:::::::::::tt   ee:::::::::::::e
            VVV            iiiiiiii  nnnnnn    nnnnnn    ddddddddd   ddddd iiiiiiii     cccccccccccccccc  aaaaaaaaaa  aaaa          ttttttttttt       eeeeeeeeeeeeee

			                              __
			   ____ _____ ___  ____  ____/ /
			  / __ `/ __ `__ \/ __ \/ __  /
			 / /_/ / / / / / / /_/ / /_/ /
			 \__, /_/ /_/ /_/\____/\__,_/
			/____/

Vindicate for Garry's Mod

]]

-- Clearing 'h'

if h then rawset(_G, "h", nil) end

-- Creating Table

local h = {}
local validplayer = {}

-- Copying Global Table, Copy function, Metatables, etc.

h.g = table.Copy(_G)


local keydown
local switch
local ins

function h.Copy(t)
	if h.g.type(t) != "table" then return t end
	local copy = {}
	for k,v in h.g.pairs(t) do
		copy[k] = v
	end
	return copy
end

h.me = h.g.LocalPlayer()
h.g.require("dickwrap")
h.g.require("fhook")
--h.g.require("_nyx")
h.ChangeName = _fhook_changename
h.g.file.CreateDir("vindicate")
h.g.file.CreateDir("vindicate/logs")
h.g.file.CreateDir("vindicate/configs")
h.dickwrap = h.Copy(dickwrap)
--h.nyx = h.Copy(_nyx)

h.cm = h.Copy(h.g.FindMetaTable("CUserCmd"))
h.am = h.Copy(h.g.FindMetaTable("Angle"))
h.vm = h.Copy(h.g.FindMetaTable("Vector"))
h.em = h.Copy(h.g.FindMetaTable("Entity"))
h.pm = h.Copy(h.g.FindMetaTable("Player"))
h.r = h.Copy(h.g.debug.getregistry())

-- Var Table

h.v = {}

-- Aimbot Vars

h.v["aimbot"] = {}
h.v["aimbot"]["key"] = 81 -- Left Alt
h.v["aimbot"]["targetfriends"] = false
h.v["aimbot"]["silentaim"] = true
h.v["aimbot"]["target"] = nil
h.v["aimbot"]["autofire"] = false
h.v["aimbot"]["fakeangles"] = h.g.Angle()
h.v["aimbot"]["enabled"] = false

-- ESP Vars

h.v["esp"] = {}
h.v["esp"]["2dbox"] = false
h.v["esp"]["3dbox"] = true
h.v["esp"]["text"] = true
h.v["esp"]["distance"] = true
h.v["esp"]["name"] = true
h.v["esp"]["health"] = true
h.v["esp"]["weapon"] = true
h.v["esp"]["isdormant"] = false
h.v["esp"]["healthbar"] = true
h.v["esp"]["chams"] = false
h.v["esp"]["chamsweapon"] = false
h.v["esp"]["green"] = h.g.Color(0,255,0)
h.v["esp"]["black"] = h.g.Color(0,0,0)
h.v["esp"]["xray"] = true
h.v["esp"]["tracers"] = true
h.v["esp"]["xray_color"] = h.g.Color(0,0,255, 150)

-- HvH Vars

h.v["hvh"] = {}
h.v["hvh"]["antiaimmethods"] = {
	{"Static Down", 1},
	{"Static Up", 2},
	{"Jitter Down", 4},
	{"Jitter Up", 3},
	{"Jitter Up/Down", 5},
}
h.v["hvh"]["enabled"] = false
h.v["hvh"]["antiaim"] = false
h.v["hvh"]["method"] = 3
h.v["hvh"]["spinbot"] = false
h.v["hvh"]["spinbotspeed"] = 4

-- Triggerbot Vars

local triggering

h.v["triggerbot"] = {}
h.v["triggerbot"]["enabled"] = false

-- Misc Vars

h.v["misc"] = {}
h.v["misc"]["nospread"] = false
h.v["misc"]["norecoil"] = false
h.v["misc"]["thirdperson"] = false
h.v["misc"]["namesteal"] = false
h.v["misc"]["rpnamesteal"] = false
h.v["misc"]["chatspam"] = false
h.v["misc"]["chatspammsg"] = "Vindicate"
h.v["misc"]["bunnyhop"] = false
h.v["misc"]["bhopautostrafe"] = false
h.v["misc"]["crosshair"] = false
h.v["misc"]["tttpkill"] = 12
h.v["misc"]["crosshair_ir"] = 255
h.v["misc"]["crosshair_ig"] = 255
h.v["misc"]["crosshair_ib"] = 255
h.v["misc"]["crosshair_ia"] = 255
h.v["misc"]["crosshair_or"] = 0
h.v["misc"]["crosshair_og"] = 0
h.v["misc"]["crosshair_ob"] = 0
h.v["misc"]["crosshair_oa"] = 255
h.v["misc"]["animspam"] = false

-- Menu Vars

h.v["menu"] = {}
h.v["menu"]["r"] = 0
h.v["menu"]["g"] = 0
h.v["menu"]["b"] = 0
h.v["menu"]["a"] = 200
h.v["menu"]["key"] = 72 -- Insert
h.v["menu"]["isopen"] = false

-- Notify

h.Chat1 = h.g.Color(0,255,255)
h.Chat2 = h.g.Color(255,93,0)

h.LogFile = h.g.os.date()
h.LogFile = h.g.string.Replace(h.LogFile, "/", "-")
h.LogFile = h.g.string.Explode(" ", h.LogFile)[1]

function h.Notify(t)
	h.g.file.Append("vindicate/logs/"..h.LogFile..".txt", h.g.os.date()..": "..t.."\n")
	h.g.MsgC(h.Chat1, "[VINDICATE]: ", h.Chat2, t, "\n")
end

h.Notify("Loading...")

-- Hook functions

h.Hooks = {}

function h.AddHook(t, n, f)
	if !n or !t or !f then return end
	h.g.hook.Add(t, n, f)
	h.Notify("Added a "..t.." hook with the name "..n..".")
end

-- Player Get function, more effective than looping through player.GetAll in 10 different loops

local function getvalidplayer()
	validplayer = {}
	local allplys = h.g.player.GetAll()
	for i = 1, #allplys do
		local v = allplys[i]
		if !h.em.IsValid(v) then continue end
		validplayer[i] = v
	end
	h.g.timer.Simple(2, getvalidplayer)
end

getvalidplayer()

-- Number to bool, bool to number

function h.NumberToBool(n)
	if n == 0 then
		return false
	end
	return true
end

function h.BoolToNumber(b)
	if b then
		return 1
	end
	return 0
end

-- BHop

function h.BHop(ucmd)
	--[[if !h.v["misc"]["bunnyhop"] then
		return
	end
	h.nyx.Bunnyhop(ucmd, h.em.IsOnGround(h.me))
	if h.v["misc"]["bhopautostrafe"] and !h.em.IsOnGround(h.me) and h.g.input.IsKeyDown(65) then
		if h.cm.GetMouseX(ucmd) < 0 then
			h.cm.SetSideMove(ucmd, -1000)
		elseif h.cm.GetMouseX(ucmd) > 0 then
			h.cm.SetSideMove(ucmd, 1000)
		end
	end]]
end

-- Movement Fix

function h.FixMovement(ucmd, aa)
	local side = h.g.Vector(h.cm.GetForwardMove(ucmd), h.cm.GetSideMove(ucmd), 0)
	local side = h.am.Forward((h.vm.Angle(h.vm.GetNormal(side)) + (h.cm.GetViewAngles(ucmd) - h.g.Angle(0, h.v["aimbot"]["fakeangles"].y, 0)))) * h.vm.Length(side)
	if aa then
		h.cm.SetForwardMove(ucmd, side.x)
		h.cm.SetSideMove(ucmd, side.y * -1)
		return
	end
	if aa then
		h.cm.SetForwardMove(ucmd, side.y)
		h.cm.SetSideMove(ucmd, side.x)
		return
	end
	h.cm.SetForwardMove(ucmd, side.x)
	h.cm.SetSideMove(ucmd, side.y)
end

-- Aimbot

function h.Valid(v)
	if !v then return false end
	if !h.em.IsValid(v) then return false end
	if v == h.me then return false end
	if h.em.Health(v) < 1 then return false end
	if h.pm.Team(v) == 1002 then return false end
	local pos = h.em.GetAttachment(v, h.em.LookupAttachment(v, "eyes"))
	local pos = pos and pos.Pos or h.em.LocalToWorld(v, h.em.OBBCenter(v))
	local tr = {start = h.em.EyePos(h.me), endpos = pos, mask = 1174421507, filter = {h.me, v}}
	local trace = h.g.util.TraceLine(tr)
	return trace.Fraction == 1
end

function h.GetTarget()
	if h.Valid(h.v["aimbot"]["target"]) then return end
	local allplys = validplayer
	for i = 1, #allplys do
		local v = allplys[i]
		if !h.Valid(v) then continue end
		h.v["aimbot"]["target"] = v
		return
	end
end

h.Cones = {
	[ "weapon_smg1" ] = h.g.Vector( -0.04362, -0.04362, -0.04362 ),
}

h.ofb = h.r.Entity.FireBullets

h.r.Entity.FireBullets = function(p, d)
	local spread = d.Spread * -1
	local wep = h.pm.GetActiveWeapon(h.me)
	if !wep or !h.em.IsValid(wep) then return h.ofb(p, d) end
	local class = h.em.GetClass(wep)
	if !h.Cones[class] then
		h.Cones[class] = spread
	end
	return h.ofb(p, d)
end


function h.Aimbot(ucmd)
	h.GetTarget()
	h.v["aimbot"]["fakeangles"] = h.v["aimbot"]["fakeangles"] + h.g.Angle(h.cm.GetMouseY(ucmd) * 0.023, h.cm.GetMouseX(ucmd) * -0.023, 0)
	h.v["aimbot"]["fakeangles"].y = h.g.math.NormalizeAngle(h.v["aimbot"]["fakeangles"].y)
	h.v["aimbot"]["fakeangles"].p = h.g.math.Clamp(h.v["aimbot"]["fakeangles"].p, -89, 89)
	if h.v["aimbot"]["isdown"] then
		if h.Valid(h.v["aimbot"]["target"]) then
			h.v["aimbot"]["enabled"] = true
			local v = h.v["aimbot"]["target"]
			local pos = h.em.GetAttachment(v, h.em.LookupAttachment(v, "eyes"))
			local pos = pos and pos.Pos or h.em.LocalToWorld(v, h.em.OBBCenter(v))
			local pos = pos - h.em.EyePos(h.me)
			if h.v["misc"]["nospread"] then
				local wep = h.pm.GetActiveWeapon(h.me)
				if wep and h.em.IsValid(wep) then
					local class = h.em.GetClass(wep)
					if h.Cones[class] then
						pos = h.dickwrap.Predict(ucmd, h.am.Forward(h.vm.Angle(pos)), h.Cones[class])
					end
				end
			end
			h.cm.SetViewAngles(ucmd, h.vm.Angle(pos))
			if h.v["aimbot"]["autofire"] then
				h.cm.SetButtons(ucmd, h.g.bit.bor(h.cm.GetButtons(ucmd), 1))
			end
			if h.v["aimbot"]["silentaim"] then
				h.FixMovement(ucmd)
			end
			return
		end
	end
	h.v["aimbot"]["enabled"] = false
	if h.v["hvh"]["enabled"] or ins or triggering then return end
	local ang2 = h.v["aimbot"]["fakeangles"]
	if h.v["misc"]["nospread"] and h.g.input.IsMouseDown(107) then
		local wep = h.pm.GetActiveWeapon(h.me)
		if wep and h.em.IsValid(wep) then
			local class = h.em.GetClass(wep)
			if h.Cones[class] then
				ang2 = h.vm.Angle(h.dickwrap.Predict(ucmd, h.am.Forward(ang2), h.Cones[class]))
			end
		end
	end
	h.cm.SetViewAngles(ucmd, ang2)
end

-- CalcViewModelView

function h.CalcViewModelView(_,_, opos, oang, pos, ang)
	if h.v["aimbot"]["enabled"] and h.v["aimbot"]["silentaim"] then
		return pos, h.v["aimbot"]["fakeangles"]
	end
	return pos, ang
end



-- ESP

function h.TwoDBox(v, drawbox, drawtext)
	local min, max = h.em.OBBMins(v), h.em.OBBMaxs(v)
	local corners = {
		h.g.Vector( min.x, min.y, min.z ),
		h.g.Vector( min.x, min.y, max.z ),
		h.g.Vector( min.x, max.y, min.z ),
		h.g.Vector( min.x, max.y, max.z ),
		h.g.Vector( max.x, min.y, min.z ),
		h.g.Vector( max.x, min.y, max.z ),
		h.g.Vector( max.x, max.y, min.z ),
		h.g.Vector( max.x, max.y, max.z )
	}
	local x1, y1, x2, y2 = h.g.ScrW() * 2, h.g.ScrH() * 2, 0, 0
	for i = 1, #corners do
		local c = corners[i]
		local onScreen = h.vm.ToScreen(h.em.LocalToWorld(v, c))
		x1, y1 = h.g.math.min(x1, onScreen.x), h.g.math.min(y1, onScreen.y)
		x2, y2 = h.g.math.max(x2, onScreen.x), h.g.math.max(y2, onScreen.y)
	end
	local col = h.g.team.GetColor(h.pm.Team(v))
	if drawbox then
		h.g.surface.SetDrawColor(col)
		h.g.surface.DrawLine(x1, y1, h.g.math.min(x1 + 2000, x2), y1)
		h.g.surface.DrawLine(x1, y1, x1, h.g.math.min( y1 + 2000, y2))
		h.g.surface.DrawLine(x2, y1, h.g.math.max(x2 - 2000, x1), y1)
		h.g.surface.DrawLine(x2, y1, x2, h.g.math.min( y1 + 2000, y2))
		h.g.surface.DrawLine(x1, y2, h.g.math.min(x1 + 2000, x2), y2)
		h.g.surface.DrawLine(x1, y2, x1, h.g.math.max( y2 - 2000, y1))
		h.g.surface.DrawLine(x2, y2, h.g.math.max(x2 - 2000, x1), y2)
		h.g.surface.DrawLine(x2, y2, x2, h.g.math.max( y2 - 2000, y1))
	end
	local hg = h.v["esp"]["healthbar"] and 8 or 0
	if h.v["esp"]["healthbar"] then
		local m = x2 + 3
		local mh = 50
		local hm = h.em.Health(v) / 2
		local dx = {}
		dx.x = m
		dx.y = y1
		h.g.surface.SetDrawColor(h.v["esp"]["black"])
		h.g.surface.DrawRect(dx.x, dx.y, mh, 3)
		h.g.surface.SetDrawColor(h.v["esp"]["green"])
		h.g.surface.DrawRect(dx.x, dx.y, hm, 3)
	end
	if drawtext then
		if h.v["esp"]["name"] then
			h.g.draw.SimpleText(h.pm.Name(v), "BudgetLabel", x2 + 3, y1 + hg, col, 0, 1)
			hg = hg + 10
		end
		if h.v["esp"]["health"] then
			h.g.draw.SimpleText("[H]:"..h.em.Health(v), "BudgetLabel", x2 + 1, y1 + hg, col, 0, 1)
			hg = hg + 10
		end
		if h.v["esp"]["distance"] then
			h.g.draw.SimpleText("[D]:"..h.g.math****und(h.vm.Distance(h.em.GetPos(h.me), h.em.GetPos(v))), "BudgetLabel", x2 + 1, y1 + hg, col, 0, 1)
			hg = hg + 10
		end
		if h.v["esp"]["weapon"] then
			local w = h.pm.GetActiveWeapon(v)
			if h.em.IsValid(w) then
				local class = h.em.GetClass(w)
				h.g.draw.SimpleText("[W]:"..class, "BudgetLabel", x2 + 1, y1 + hg, col, 0, 1)
				hg = hg + 10
			end
		end
		if h.v["esp"]["dormant"] then
			if h.em.IsDormant(v) then
				h.g.draw.SimpleText("[DORMANT]", "BudgetLabel", x2 + 1, y1 + hg, col, 0, 1)
				hg = hg + 10
			end
		end
		if h.v["esp"]["rank"] then
			h.g.draw.SimpleText("[R]:"..h.pm.GetUserGroup(v), "BudgetLabel", x2 + 1, y1 + hg, col, 0, 1)
			hg = hg + 10
		end
	end
end

function h.ThreeDBox(v)
	local min,max = h.em.WorldSpaceAABB(v)
	local diff = max-min
	local pos2 = h.g.Vector(0,0,0)
	local pos1 = h.g.Vector(0,0,0)
	local pos3 = h.g.Vector(0,0,0)
	local pos4 = h.g.Vector(0,0,0)
	local pos5 = h.g.Vector(0,0,diff.z)
	local pos6 = h.g.Vector(0,0,diff.z)
	local pos7 = h.g.Vector(0,0,diff.z)
	local pos8 = h.g.Vector(0,0,diff.z)
	local pos1 = h.vm.ToScreen(pos1 + h.em.WorldSpaceAABB(v) + h.g.Vector(diff.x,diff.y,0))
	local pos2 = h.vm.ToScreen(pos2 + h.em.WorldSpaceAABB(v) + h.g.Vector(diff.x,-diff.y/14,0))
	local pos3 = h.vm.ToScreen(pos3 + h.em.WorldSpaceAABB(v) + h.g.Vector(-diff.x/14,-diff.y/14,0))
	local pos4 = h.vm.ToScreen(pos4 + h.em.WorldSpaceAABB(v) + h.g.Vector(-diff.x/14,diff.y,0))
	local pos5 = h.vm.ToScreen(pos5 + h.em.WorldSpaceAABB(v) + h.g.Vector(diff.x,diff.y,0))
	local pos6 = h.vm.ToScreen(pos6 + h.em.WorldSpaceAABB(v) + h.g.Vector(diff.x,-diff.y/14,0))
	local pos7 = h.vm.ToScreen(pos7 + h.em.WorldSpaceAABB(v) + h.g.Vector(-diff.x/14,-diff.y/14,0))
	local pos8 = h.vm.ToScreen(pos8 + h.em.WorldSpaceAABB(v) + h.g.Vector(-diff.x/14,diff.y,0))
	h.g.surface.SetDrawColor(h.g.team.GetColor(h.pm.Team(v)))
	h.g.surface.DrawLine(pos1.x, pos1.y, pos2.x, pos2.y)
	h.g.surface.DrawLine(pos2.x, pos2.y, pos3.x, pos3.y)
	h.g.surface.DrawLine(pos3.x, pos3.y, pos4.x, pos4.y)
	h.g.surface.DrawLine(pos1.x, pos1.y, pos4.x, pos4.y)
	h.g.surface.DrawLine(pos1.x, pos1.y, pos5.x, pos5.y)
	h.g.surface.DrawLine(pos2.x, pos2.y, pos6.x, pos6.y)
	h.g.surface.DrawLine(pos3.x, pos3.y, pos7.x, pos7.y)
	h.g.surface.DrawLine(pos4.x, pos4.y, pos8.x, pos8.y)
	h.g.surface.DrawLine(pos5.x, pos5.y, pos6.x, pos6.y)
	h.g.surface.DrawLine(pos6.x, pos6.y, pos7.x, pos7.y)
	h.g.surface.DrawLine(pos7.x, pos7.y, pos8.x, pos8.y)
	h.g.surface.DrawLine(pos5.x, pos5.y, pos8.x, pos8.y)
end

function h.ESPLoop()
	local allplys = validplayer
	for i = 1, #allplys do
		local v = allplys[i]
		if !h.em.IsValid(v) or v == h.me or h.em.Health(v) < 1 or h.pm.Team(v) == 1002 then continue end
		if h.v["esp"]["3dbox"] then
			h.ThreeDBox(v)
		end
		h.TwoDBox(v, h.v["esp"]["2dbox"], h.v["esp"]["text"])
	end
end

-- Triggerbot

function h.Triggerbot(ucmd)
	triggering = false
	if h.v["aimbot"]["enabled"] or !h.v["triggerbot"]["enabled"] then return end
	local ent = h.pm.GetEyeTrace(h.me).Entity
	if !h.em.IsValid(ent) then
		return
	end
	if ent:IsPlayer() or ent:IsNPC() then
		if h.em.Health(ent) < 1 then return end
		if h.em.IsPlayer(ent) then
			if h.pm.Team(ent) == 1002 then
				return
			end
		end
		triggering = true
		local wep = h.pm.GetActiveWeapon(h.me)
		if wep and h.em.IsValid(wep) then
			local class = h.em.GetClass(wep)
			if h.Cones[class] then
				h.cm.SetViewAngles(ucmd, h.vm.Angle(h.dickwrap.Predict(ucmd, h.am.Forward(h.v["aimbot"]["fakeangles"]), h.Cones[class])))
			end
		end
		h.cm.SetButtons(ucmd, h.g.bit.bor(h.cm.GetButtons(ucmd), 1))
	end
end

-- Antiaim, Spinbot

h.v["hvh"]["antiaimswitch"] = false

function h.AAS(ucmd)
	if h.v["aimbot"]["enabled"] or h.g.input.IsMouseDown(107) or h.g.input.IsKeyDown(15) then
		h.v["hvh"]["enabled"] = false
		return
	end
	h.v["hvh"]["enabled"] = false
	if h.v["hvh"]["antiaim"] then
		h.v["hvh"]["enabled"] = true
		if h.v["hvh"]["method"] == 1 then
			h.cm.SetViewAngles(ucmd, h.g.Angle(-181, h.v["aimbot"]["fakeangles"].y, 0))
			h.cm.SetForwardMove(ucmd, h.cm.GetForwardMove(ucmd) * -1)
		elseif h.v["hvh"]["method"] == 2 then
			h.cm.SetViewAngles(ucmd, h.g.Angle(181, h.v["aimbot"]["fakeangles"].y, 0))
			h.cm.SetForwardMove(ucmd, h.cm.GetForwardMove(ucmd) * -1)
		elseif h.v["hvh"]["method"] == 3 then
			h.cm.SetViewAngles(ucmd, h.g.Angle(181, h.g.math.random(-180, 180), 0))
			h.FixMovement(ucmd, true)
		elseif h.v["hvh"]["method"] == 4 then
			h.cm.SetViewAngles(ucmd, h.g.Angle(-181, h.g.math.random(-180, 180), 0))
			h.FixMovement(ucmd, true)
		elseif h.v["hvh"]["method"] == 5 then
			local ang = h.v["hvh"]["antiaimswitch"] and -181 or 181
			h.cm.SetViewAngles(ucmd, h.g.Angle(ang, h.g.math.random(-180, 180), 0))
			h.FixMovement(ucmd, true)
			h.v["hvh"]["antiaimswitch"] = not h.v["hvh"]["antiaimswitch"]
		end
		return
	end
	if h.v["hvh"]["spinbot"] then
		h.v["hvh"]["enabled"] = true
		h.cm.SetViewAngles(ucmd, h.g.Angle(h.v["aimbot"]["fakeangles"].x, h.cm.GetViewAngles(ucmd).y + h.v["hvh"]["spinbotspeed"], 0))
		h.FixMovement(ucmd)
		return
	end
end

-- CalcView

local demo = h.g.engine.IsPlayingDemo()

function h.CalcView(p, origin, ang, fov)
	local view = {}
	view.origin = h.v["misc"]["thirdperson"] and origin - (h.am.Forward(h.v["aimbot"]["fakeangles"]) * 100) or origin
	if (h.v["aimbot"]["silentaim"]) or h.v["hvh"]["enabled"] or ins or triggering then
		view.angles = h.v["aimbot"]["fakeangles"]
	elseif h.v["aimbot"]["enabled"] and h.v["aimbot"]["silentaim"] then
		local norecoil = h.v["misc"]["norecoil"]
		view.angles = h.v["aimbot"]["fakeangles"]
		if !norecoil then
			local punch = h.pm.GetPunchAngle(h.me)
			view.angles = h.v["aimbot"]["fakeangles"] - punch
		end
	else
		view.angles = ang
	end
	view.fov = fov
	return view
end

if !demo then
h.AddHook("CalcView", h.g.util.CRC("vindicate_calcview"), h.CalcView)
h.AddHook("ShouldDrawLocalPlayer", h.g.util.CRC("vindicate_sdlp"), function()
	return h.v["misc"]["thirdperson"]
end)
h.AddHook("CalcViewModelView", h.g.util.CRC("vindicate_calcviewmodelview"), h.CalcViewModelView)
end

-- Config Save, load functions etc

function h.SaveConfig(name)
	local cfg = h.g.util.TableToJSON(h.v, true)
	h.g.file.Write("vindicate/configs/"..name..".txt", cfg)
	h.Notify("Saved Config '"..name.."'.")
end

function h.LoadConfig(name)
	local name = h.g.string.Replace(name, ".txt", "")
	local json = h.g.file.Read("vindicate/configs/"..name..".txt", "DATA")
	local cfg = h.g.util.JSONToTable(json)
	h.v = cfg
	h.Notify("Loaded Config '"..name.."'.")
end

-- Namesteal

function h.Namesteal()
	if !h.v["misc"]["namesteal"] then
		h.g.timer.Simple(1, function()
			h.Namesteal()
		end)
		return
	end
	local p = validplayer[h.g.math.random(1, #validplayer)]
	if !h.em.IsValid(p) or p == h.me then return end
	h.ChangeName(h.pm.Name(p).." ")
	h.g.timer.Simple(1, function()
		h.Namesteal()
	end)
end

h.Namesteal()

h.Gamemode = h.g.gmod.GetGamemode().Name

function h.RPNamesteal()
	if h.Gamemode != "DarkRP" or !h.v["misc"]["rpnamesteal"] then
		h.v["misc"]["rpnamesteal"] = false
		h.g.timer.Simple(5.1, function()
			h.RPNamesteal()
		end)
		return
	end
	local p = validplayer[h.g.math.random(1, #validplayer())]
	if !h.em.IsValid(p) or p == h.Me then
		h.RPNamesteal()
		return
	end
	h.g.RunConsoleCommand("darkrp", "rpname", h.pm.Name(p).." ")
	h.g.timer.Simple(5.1, function()
		h.RPNamesteal()
	end)
end

h.RPNamesteal()

-- Chatspam

function h.Chatspam()
	if !h.v["misc"]["chatspam"] then
		h.g.timer.Simple(.5, function()
			h.Chatspam()
		end)
		return
	end
	h.g.RunConsoleCommand("say", h.v["misc"]["chatspammsg"])
	h.g.timer.Simple(.1, function()
		h.Chatspam()
	end)
end

h.Chatspam()

-- Crosshair

function h.Crosshair()
	if !h.v["misc"]["crosshair"] then return end
	local col1 = h.g.Color(h.v["misc"]["crosshair_ir"], h.v["misc"]["crosshair_ig"], h.v["misc"]["crosshair_ib"], h.v["misc"]["crosshair_ia"])
	local col2 = h.g.Color(h.v["misc"]["crosshair_or"], h.v["misc"]["crosshair_og"], h.v["misc"]["crosshair_ob"], h.v["misc"]["crosshair_oa"])
	h.g.draw.SimpleTextOutlined("+", "DermaLarge", h.g.ScrW() / 2, h.g.ScrH() / 2, col1, 1, 1, 2, col2)
end

-- XRay

h.xraymat = h.g.CreateMaterial(h.g.util.CRC("vindicate_xraymat"), "VertexLitGeneric", {
	["$basetexture"] = "models/debug/debugwhite"
})

function h.XRay()
	local allprops = h.g.ents.FindByClass("prop_physics")
	for i = 1, #allprops do
		local v = allprops[i]
		if !h.em.IsValid(v) then continue end
		if !h.v["esp"]["xray"] then
			h.em.SetNoDraw(v, false)
			continue
		end
		h.g.cam.Start3D()
			h.g.render.SuppressEngineLighting(true)
			h.g.render.MaterialOverride(h.xraymat)
			h.g.render.SetColorModulation(h.v["esp"]["xray_color"].r / 255, h.v["esp"]["xray_color"].g / 255, h.v["esp"]["xray_color"].b / 255)
			h.g.render.SetBlend(h.v["esp"]["xray_color"].a / 255)
			h.em.DrawModel(v)
			h.em.SetNoDraw(v, true)
			h.g.render.SuppressEngineLighting(false)
		h.g.cam.End3D()
	end
end

function h.XRay2()
	if !h.v["esp"]["xray"] then return end
	local allplys = validplayer
	for i = 1, #allplys do
		local v = allplys[i]
		if !h.em.IsValid(v) or h.em.Health(v) < 1 or v == me then continue end
		h.g.cam.Start3D()
			h.g.render.SuppressEngineLighting(true)
			h.g.render.MaterialOverride(h.xraymat)
			local col = h.g.team.GetColor(h.pm.Team(v))
			h.g.render.SetColorModulation(180 / 255, 0, 0)
			h.g.render.SetBlend(180 / 255)
			h.em.DrawModel(v)
			h.g.render.SuppressEngineLighting(false)
		h.g.cam.End3D()
	end
end

-- Exploits, thanks to KIF3R

function h.HitmanXSendMoneyToAll()
	local allplys = validplayer
	for i = 1, #allplys do
		local v = allplys[i]
		if !h.em.IsValid(v) then continue end
		h.g.net.Start("SendMoney")
			h.g.net.WriteEntity(v)
			h.g.net.WriteEntity(v)
			h.g.net.WriteEntity(v)
			h.g.net.WriteString("-100000000000000000000000000000000000000000")
		h.g.net.SendToServer()
	end
end

function h.HitmanXSendMoneyToSelf()
	h.g.net.Start("SendMoney")
		h.g.net.WriteEntity(h.me)
		h.g.net.WriteEntity(h.me)
		h.g.net.WriteEntity(h.me)
		h.g.net.WriteString("-100000000000000000000000000000000000000000")
	h.g.net.SendToServer()
end

function h.DarkRPLag()
	if h.v["misc"]["darkrplag"] then
		for i = 1, 10000 do
			h.g.net.Start("DarkRP_spawnPocket")
			h.g.net.SendToServer()
		end
	end
	h.g.timer.Simple(1, h.DarkRPLag)
end

h.DarkRPLag()

function h.BailExploitForAll()
	local allplys = validplayer
	for i = 1, #allplys do
		local v = allplys[i]
		if !h.em.IsValid(v) then continue end
		h.g.net.Start("BailOut")
			h.g.net.WriteEntity(h.me)
			h.g.net.WriteEntity(v)
			h.g.net.WriteFloat(-99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)
		h.g.net.SendToServer()
	end
end

function h.BailExploitSelf()
	h.g.net.Start("BailOut")
		h.g.net.WriteEntity(h.me)
		h.g.net.WriteEntity(h.me)
		h.g.net.WriteFloat(-99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)
	h.g.net.SendToServer()
end

function h.LevelFuckUp(v)
	net.Start("REPAdminChangeRPC")
		net.WriteEntity(v)
		net.WriteDouble(0)
	net.SendToServer()
end

-- Chams

h.ChamsMat = h.g.CreateMaterial(h.g.util.CRC("vindicate_chamsmat"), "VertexLitGeneric", {
	["$basetexture"] = "models/debug/debugwhite",
	["$model"] = 1,
	["$ignorez"] = 1
})

function h.Chams()
	if !h.v["esp"]["chams"] or h.v["esp"]["xray"] then return end
	local allplys = validplayer
	for i = 1, #allplys do
		local v = allplys[i]
		if !h.em.IsValid(v) or v == h.me or h.em.Health(v) < 1 or h.pm.Team(v) == 1002 then continue end
		local col = h.g.team.GetColor(h.pm.Team(v))
		local w = h.pm.GetActiveWeapon(v)
		h.g.cam.Start3D()
			h.g.render.MaterialOverride(h.ChamsMat)
			h.g.render.SuppressEngineLighting(true)
			h.g.render.SetColorModulation(col.r / 255, col.g / 255, col.b / 255)
			h.em.DrawModel(v)
			if h.em.IsValid(w) and h.v["esp"]["chamsweapon"] then
				h.g.render.SetColorModulation(col.b / 255, col.r / 255, col.g / 255)
				h.em.DrawModel(w)
			end
			h.g.render.SuppressEngineLighting(false)
		h.g.cam.End3D()
	end
end

-- DarkRP Animation Spam

local anims = {
	1612,
	1617,
	1611,
	1618,
	1616,
	1613,
	1610,
	1615,
}

local animwait = {
	[1612] = 3.1,
	[1617] = 13,
	[1611] = 3.7,
	[1618] = 6,
	[1616] = 3.3,
	[1613] = 2.6,
	[1610] = 2.8,
	[1615] = 3.35,
}

local allowedanim = true

function h.AnimSpam()
	if !allowedanim or !h.v["misc"]["animspam"] then return end
	local anim = h.g.table.Random(anims)
	h.g.RunConsoleCommand("_DarkRP_DoAnimation", anim)
	allowedanim = false
	h.g.timer.Simple(animwait[anim], function()
		allowedanim = true
	end)
end

-- Tracers

function h.Tracers()
	if !h.v["esp"]["tracers"] then return end
	for i = 1, #validplayer do
		local v = validplayer[i]
		if v == h.me or !h.em.IsValid(v) or h.em.Health(v) < 1 or h.pm.Team(v) == 1002 then continue end
		h.g.surface.SetDrawColor(h.g.team.GetColor(h.pm.Team(v)))
		local pos = h.em.LocalToWorld(v, h.em.OBBCenter(v))
		local pos = h.vm.ToScreen(pos)
		h.g.surface.DrawLine(h.g.ScrW() / 2, h.g.ScrH() / 2, pos.x, pos.y)
	end
end

-- Menu

function h.Menu()
	local frame = h.g****ui.Create("DFrame")
	frame:SetTitle("VINDICATE | Menu")
	frame:SetSize(750, 520)
	frame:Center()
	frame:ShowCloseButton(false)
	frame:MakePopup()
	function frame:Paint(w, h2)
		h.g.draw****undedBox(0, 0, 0, w, h2, h.g.Color(h.v["menu"]["r"], h.v["menu"]["g"], h.v["menu"]["b"], h.v["menu"]["a"]))
	end

	local aim = h.g****ui.Create("DPanel", frame)
	aim:SetSize(580, 480)
	aim:SetPos(150, 26)
	function aim:Paint(w, h2)
		h.g.draw****undedBox(0, 0, 0, w, h2, h.g.Color(h.v["menu"]["r"], h.v["menu"]["g"], h.v["menu"]["b"], h.v["menu"]["a"] - 50))
	end
	aim:SetVisible(false)

	local esp = h.g****ui.Create("DPanel", frame)
	esp:SetSize(580, 480)
	esp:SetPos(150, 26)
	function esp:Paint(w, h2)
		h.g.draw****undedBox(0, 0, 0, w, h2, h.g.Color(h.v["menu"]["r"], h.v["menu"]["g"], h.v["menu"]["b"], h.v["menu"]["a"] - 50))
	end
	esp:SetVisible(false)

	local tri = h.g****ui.Create("DPanel", frame)
	tri:SetSize(580, 480)
	tri:SetPos(150, 26)
	function tri:Paint(w, h2)
		h.g.draw****undedBox(0, 0, 0, w, h2, h.g.Color(h.v["menu"]["r"], h.v["menu"]["g"], h.v["menu"]["b"], h.v["menu"]["a"] - 50))
	end
	tri:SetVisible(false)

	local men = h.g****ui.Create("DPanel", frame)
	men:SetSize(580, 480)
	men:SetPos(150, 26)
	function men:Paint(w, h2)
		h.g.draw****undedBox(0, 0, 0, w, h2, h.g.Color(h.v["menu"]["r"], h.v["menu"]["g"], h.v["menu"]["b"], h.v["menu"]["a"] - 50))
	end
	men:SetVisible(false)

	local mis = h.g****ui.Create("DPanel", frame)
	mis:SetSize(580, 480)
	mis:SetPos(150, 26)
	function mis:Paint(w, h2)
		h.g.draw****undedBox(0, 0, 0, w, h2, h.g.Color(h.v["menu"]["r"], h.v["menu"]["g"], h.v["menu"]["b"], h.v["menu"]["a"] - 50))
	end
	mis:SetVisible(false)

	local cre = h.g****ui.Create("DPanel", frame)
	cre:SetSize(580, 480)
	cre:SetPos(150, 26)
	function cre:Paint(w, h2)
		h.g.draw****undedBox(0, 0, 0, w, h2, h.g.Color(h.v["menu"]["r"], h.v["menu"]["g"], h.v["menu"]["b"], h.v["menu"]["a"] - 50))
	end
	cre:SetVisible(false)

	local function visible(aim1, esp1, trigger, menu, misc, credits)
		aim:SetVisible(aim1)
		esp:SetVisible(esp1)
		tri:SetVisible(trigger)
		men:SetVisible(menu)
		mis:SetVisible(misc)
		cre:SetVisible(credits)
	end

	local aimb = h.g****ui.Create("DButton", frame)
	aimb:SetPos(5, 25)
	aimb:SetText("Aimbot")
	aimb:SetSize(130, 60)
	aimb.DoClick = function()
		visible(true)
	end

	local espb = h.g****ui.Create("DButton", frame)
	espb:SetPos(5, 95)
	espb:SetText("ESP")
	espb:SetSize(130, 60)
	espb.DoClick = function()
		visible(false, true)
	end

	local trib = h.g****ui.Create("DButton", frame)
	trib:SetPos(5, 165)
	trib:SetText("Hack vs. Hack")
	trib:SetSize(130, 60)
	trib.DoClick = function()
		visible(false, false, true)
	end

	local menb = h.g****ui.Create("DButton", frame)
	menb:SetPos(5, 235)
	menb:SetText("Menu")
	menb:SetSize(130, 60)
	menb.DoClick = function()
		visible(false, false, false, true)
	end

	local misb = h.g****ui.Create("DButton", frame)
	misb:SetPos(5, 305)
	misb:SetText("Miscellaneous")
	misb:SetSize(130, 60)
	misb.DoClick = function()
		visible(false, false, false, false, true)
	end

	local creb = h.g****ui.Create("DButton", frame)
	creb:SetPos(5, 375)
	creb:SetText("Credits")
	creb:SetSize(130, 60)
	creb.DoClick = function()
		visible(false, false, false, false, false, true)
	end

	local clob = h.g****ui.Create("DButton", frame)
	clob:SetPos(5, 445)
	clob:SetText("Close")
	clob:SetSize(130, 60)
	clob.DoClick = function()
		h.v["menu"]["isopen"] = false
		frame:Close()
	end

	local label = h.g****ui.Create("DLabel", aim)
	label:SetText("Aimbot Key")
	label:SetPos(80, 5)
	label:SizeToContents()

	local abin = h.g****ui.Create("DBinder", aim)
	abin:SetPos(5, 20)
	abin:SetSize(200, 50)
	abin:SetText("Aimbot Key")
	abin:SetValue(h.v["aimbot"]["key"])
	local name = h.g.util.CRC(h.g.os.date())
	h.g.hook.Add("Think", name, function()
		if !frame:IsValid() then
			h.g.hook.Remove("Think", name)
			return
		end
		h.v["aimbot"]["key"] = abin:GetValue()
	end)

	local aimc1 = h.g****ui.Create("DCheckBox", aim)
	aimc1:SetPos(5, 80)
	aimc1:SetValue(h.BoolToNumber(h.v["aimbot"]["silentaim"]))
	function aimc1:OnChange(b)
		h.v["aimbot"]["silentaim"] = b
	end
	local label = h.g****ui.Create("DLabel", aim)
	label:SetText("Silent Aim")
	label:SetPos(25, 80)
	label:SizeToContents()

	local aimc2 = h.g****ui.Create("DCheckBox", aim)
	aimc2:SetPos(5, 100)
	aimc2:SetValue(h.BoolToNumber(h.v["aimbot"]["autofire"]))
	function aimc2:OnChange(b)
		h.v["aimbot"]["autofire"] = b
	end
	local label = h.g****ui.Create("DLabel", aim)
	label:SetText("Autoshoot")
	label:SetPos(25, 100)
	label:SizeToContents()

	local aimc3 = h.g****ui.Create("DCheckBox", aim)
	aimc3:SetPos(5, 120)
	aimc3:SetValue(h.BoolToNumber(h.v["aimbot"]["targetfriends"]))
	function aimc3:OnChange(b)
		h.v["aimbot"]["targetfriends"] = b
	end
	local label = h.g****ui.Create("DLabel", aim)
	label:SetText("Target Steam Friends")
	label:SetPos(25, 120)
	label:SizeToContents()

	local espc1 = h.g****ui.Create("DCheckBox", esp)
	espc1:SetPos(5, 5)
	espc1:SetValue(h.BoolToNumber(h.v["esp"]["2dbox"]))
	function espc1:OnChange(b)
		h.v["esp"]["2dbox"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("2D Box")
	label:SetPos(25, 5)
	label:SizeToContents()

	local espc2 = h.g****ui.Create("DCheckBox", esp)
	espc2:SetPos(5, 25)
	espc2:SetValue(h.BoolToNumber(h.v["esp"]["3dbox"]))
	function espc2:OnChange(b)
		h.v["esp"]["3dbox"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("3D Box")
	label:SetPos(25, 25)
	label:SizeToContents()

	local espc3 = h.g****ui.Create("DCheckBox", esp)
	espc3:SetPos(5, 45)
	espc3:SetValue(h.BoolToNumber(h.v["esp"]["text"]))
	function espc3:OnChange(b)
		h.v["esp"]["text"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("ESP Text")
	label:SetPos(25, 45)
	label:SizeToContents()

	local espc4 = h.g****ui.Create("DCheckBox", esp)
	espc4:SetPos(5, 65)
	espc4:SetValue(h.BoolToNumber(h.v["esp"]["name"]))
	function espc4:OnChange(b)
		h.v["esp"]["name"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("Show Name")
	label:SetPos(25, 65)
	label:SizeToContents()

	local espc5 = h.g****ui.Create("DCheckBox", esp)
	espc5:SetPos(5, 85)
	espc5:SetValue(h.BoolToNumber(h.v["esp"]["health"]))
	function espc5:OnChange(b)
		h.v["esp"]["health"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("Show HP")
	label:SetPos(25, 85)
	label:SizeToContents()

	local espc6 = h.g****ui.Create("DCheckBox", esp)
	espc6:SetPos(5, 105)
	espc6:SetValue(h.BoolToNumber(h.v["esp"]["weapon"]))
	function espc6:OnChange(b)
		h.v["esp"]["weapon"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("Show Weapon")
	label:SetPos(25, 105)
	label:SizeToContents()

	local espc7 = h.g****ui.Create("DCheckBox", esp)
	espc7:SetPos(5, 125)
	espc7:SetValue(h.BoolToNumber(h.v["esp"]["distance"]))
	function espc7:OnChange(b)
		h.v["esp"]["distance"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("Show Distance")
	label:SetPos(25, 125)
	label:SizeToContents()

	local espc1337 = h.g****ui.Create("DCheckBox", esp)
	espc1337:SetPos(5, 145)
	espc1337:SetValue(h.BoolToNumber(h.v["esp"]["rank"]))
	function espc1337:OnChange(b)
		h.v["esp"]["rank"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("Show Rank	")
	label:SetPos(25, 145)
	label:SizeToContents()

	local espc8 = h.g****ui.Create("DCheckBox", esp)
	espc8:SetPos(5, 165)
	espc8:SetValue(h.BoolToNumber(h.v["esp"]["dormant"]))
	function espc8:OnChange(b)
		h.v["esp"]["dormant"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("Show if a Player is Dormant")
	label:SetPos(25, 165)
	label:SizeToContents()

	local espc9 = h.g****ui.Create("DCheckBox", esp)
	espc9:SetPos(5, 185)
	espc9:SetValue(h.BoolToNumber(h.v["esp"]["healthbar"]))
	function espc9:OnChange(b)
		h.v["esp"]["healthbar"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("Draw Healthbar")
	label:SetPos(25, 185)
	label:SizeToContents()

	local espc10 = h.g****ui.Create("DCheckBox", esp)
	espc10:SetPos(5, 205)
	espc10:SetValue(h.BoolToNumber(h.v["esp"]["chams"]))
	function espc10:OnChange(b)
		h.v["esp"]["chams"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("Chams")
	label:SetPos(25, 205)
	label:SizeToContents()

	local espc11 = h.g****ui.Create("DCheckBox", esp)
	espc11:SetPos(5, 225)
	espc11:SetValue(h.BoolToNumber(h.v["esp"]["chamsweapon"]))
	function espc11:OnChange(b)
		h.v["esp"]["chamsweapon"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("Weapon Chams")
	label:SetPos(25, 225)
	label:SizeToContents()

	local espc12 = h.g****ui.Create("DCheckBox", esp)
	espc12:SetPos(5, 245)
	espc12:SetValue(h.BoolToNumber(h.v["esp"]["xray"]))
	function espc12:OnChange(b)
		h.v["esp"]["xray"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("XRay")
	label:SetPos(25, 245)
	label:SizeToContents()

	local xraycol = h.g****ui.Create("DButton", esp)
	xraycol:SetSize(150, 30)
	xraycol:SetPos(5, 265)
	xraycol:SetText("XRay Color")
	xraycol.DoClick = function()
		local fr = h.g****ui.Create("DFrame")
		fr:SetTitle("VINDICATE | XRay Color Menu")
		fr:SetSize(267, 186)
		fr:Center()
		fr:MakePopup()
		local colr = h.g****ui.Create("DColorMixer", fr)
		colr:Dock( FILL )
		colr:SetPalette(true)
		colr:SetAlphaBar(true)
		colr:SetWangs(true)
		colr:SetColor(h.v["esp"]["xray_color"])
		function colr:ValueChanged(col)
			h.v["esp"]["xray_color"].r = col.r
			h.v["esp"]["xray_color"].g = col.g
			h.v["esp"]["xray_color"].b = col.b
			h.v["esp"]["xray_color"].a = col.a
		end
	end

	local espc13 = h.g****ui.Create("DCheckBox", esp)
	espc13:SetPos(5, 300)
	espc13:SetValue(h.BoolToNumber(h.v["esp"]["tracers"]))
	function espc13:OnChange(b)
		h.v["esp"]["tracers"] = b
	end
	local label = h.g****ui.Create("DLabel", esp)
	label:SetText("Tracers")
	label:SetPos(25, 300)
	label:SizeToContents()

	local hvh1 = h.g****ui.Create("DCheckBox", tri)
	hvh1:SetPos(5, 5)
	hvh1:SetValue(h.BoolToNumber(h.v["hvh"]["antiaim"]))
	function hvh1:OnChange(b)
		h.v["hvh"]["antiaim"] = b
	end
	local label = h.g****ui.Create("DLabel", tri)
	label:SetText("Antiaim")
	label:SetPos(25, 5)
	label:SizeToContents()

	local hvhb = h.g****ui.Create("DButton", tri)
	hvhb:SetPos(5, 25)
	hvhb:SetSize(100, 30)
	hvhb:SetText("Antiaim Method")
	hvhb.DoClick = function()
		local menu = h.g.DermaMenu()
		for k,v in h.g.pairs(h.v["hvh"]["antiaimmethods"]) do
			menu:AddOption(v[1], function()
				h.v["hvh"]["method"] = v[2]
			end)
		end
		menu:Open()
	end

	local hvh2 = h.g****ui.Create("DCheckBox", tri)
	hvh2:SetPos(5, 60)
	hvh2:SetValue(h.BoolToNumber(h.v["hvh"]["spinbot"]))
	function hvh2:OnChange(b)
		h.v["hvh"]["spinbot"] = b
	end
	local label = h.g****ui.Create("DLabel", tri)
	label:SetText("Spinbot")
	label:SetPos(25, 60)
	label:SizeToContents()

	local hvhn = h.g****ui.Create("DNumberWang", tri)
	hvhn:SetPos(5, 80)
	hvhn:SetSize(35, 20)
	hvhn:SetValue(h.v["hvh"]["spinbotspeed"])
	function hvhn:OnValueChanged(v)
		h.v["hvh"]["spinbotspeed"] = v
	end
	local label = h.g****ui.Create("DLabel", tri)
	label:SetText("Spinbot Speed")
	label:SetPos(45, 82.5)
	label:SizeToContents()

	local label = h.g****ui.Create("DLabel", men)
	label:SetText("Menu Key")
	label:SetPos(80, 5)
	label:SizeToContents()

	local mbin = h.g****ui.Create("DBinder", men)
	mbin:SetPos(5, 20)
	mbin:SetSize(200, 50)
	mbin:SetText("Menu Key")
	mbin:SetValue(h.v["menu"]["key"])
	local name3 = h.g.util.CRC(h.g.os.date()).."2313233"
	h.g.hook.Add("Think", name3, function()
		if !frame:IsValid() then
			h.g.hook.Remove("Think", name3)
			return
		end
		h.v["menu"]["key"] = mbin:GetValue()
	end)

	local label = h.g****ui.Create("DLabel", men)
	label:SetText("Menu Color")
	label:SetPos(80, 90)
	label:SizeToContents()

	local menc = h.g****ui.Create("DColorMixer", men)
	menc:SetSize(267, 186)
	menc:SetPos(5, 105)
	menc:SetPalette(true)
	menc:SetAlphaBar(true)
	menc:SetWangs(true)
	menc:SetColor(h.g.Color(h.v["menu"]["r"], h.v["menu"]["g"], h.v["menu"]["b"], h.v["menu"]["a"]))
	function menc:ValueChanged(col)
		h.v["menu"]["r"] = col.r
		h.v["menu"]["g"] = col.g
		h.v["menu"]["b"] = col.b
		h.v["menu"]["a"] = col.a
	end

	local mis1 = h.g****ui.Create("DCheckBox", mis)
	mis1:SetPos(5, 5)
	mis1:SetValue(h.BoolToNumber(h.v["triggerbot"]["enabled"]))
	function mis1:OnChange(b)
		h.v["triggerbot"]["enabled"] = b
	end
	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("Triggerbot")
	label:SetPos(25, 5)
	label:SizeToContents()

	local mis123 = h.g****ui.Create("DCheckBox", mis)
	mis123:SetPos(200, 5)
	mis123:SetValue(h.BoolToNumber(h.v["misc"]["bunnyhop"]))
	function mis123:OnChange(b)
		h.v["misc"]["bunnyhop"] = b
	end
	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("Bunnyhop")
	label:SetPos(225, 5)
	label:SizeToContents()

	local mis1423 = h.g****ui.Create("DCheckBox", mis)
	mis1423:SetPos(200, 25)
	mis1423:SetValue(h.BoolToNumber(h.v["misc"]["bhopautostrafe"]))
	function mis1423:OnChange(b)
		h.v["misc"]["bhopautostrafe"] = b
	end
	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("Bunnyhop Autostrafe")
	label:SetPos(225, 25)
	label:SizeToContents()

	local mis2 = h.g****ui.Create("DCheckBox", mis)
	mis2:SetPos(5, 25)
	mis2:SetValue(h.BoolToNumber(h.v["misc"]["thirdperson"]))
	function mis2:OnChange(b)
		h.v["misc"]["thirdperson"] = b
	end
	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("Thirdperson")
	label:SetPos(25, 25)
	label:SizeToContents()

	local saveconf = h.g****ui.Create("DButton", mis)
	saveconf:SetSize(150, 30)
	saveconf:SetPos(5, 45)
	saveconf:SetText("Save Config")

	saveconf.DoClick = function()
		local fr = h.g****ui.Create("DFrame")
		fr:SetTitle("VINDICATE | Save Config")
		fr:SetSize(300, 60)
		fr:Center()
		fr:MakePopup()
		local text = h.g****ui.Create("DTextEntry", fr)
		text:SetPos(0, 20)
		text:Dock( FILL )
		text:SetText("Config Name")
		text.OnEnter = function(self)
			h.SaveConfig(self:GetValue())
			fr:Close()
		end
	end

	local saveconf = h.g****ui.Create("DButton", mis)
	saveconf:SetSize(150, 30)
	saveconf:SetPos(5, 80)
	saveconf:SetText("Load Config")

	saveconf.DoClick = function()
		local files, _ = h.g.file.Find("vindicate/configs/*.txt", "DATA")
		local menu = h.g.DermaMenu()
		for k,v in h.g.pairs(files) do
			menu:AddOption(v, function()
				frame:Close()
				h.LoadConfig(v)
				h.Menu()
			end)
		end
		menu:Open()
	end

	local mis3 = h.g****ui.Create("DCheckBox", mis)
	mis3:SetPos(5, 115)
	mis3:SetValue(h.BoolToNumber(h.v["misc"]["namesteal"]))
	function mis3:OnChange(b)
		h.v["misc"]["namesteal"] = b
	end
	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("Namesteal")
	label:SetPos(25, 115)
	label:SizeToContents()

	local mis4 = h.g****ui.Create("DCheckBox", mis)
	mis4:SetPos(5, 135)
	mis4:SetValue(h.BoolToNumber(h.v["misc"]["rpnamesteal"]))
	function mis4:OnChange(b)
		h.v["misc"]["rpnamesteal"] = b
	end
	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("DarkRP Namesteal")
	label:SetPos(25, 135)
	label:SizeToContents()

	local mis5 = h.g****ui.Create("DCheckBox", mis)
	mis5:SetPos(5, 155)
	mis5:SetValue(h.BoolToNumber(h.v["misc"]["norecoil"]))
	function mis5:OnChange(b)
		h.v["misc"]["norecoil"] = b
	end
	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("No Recoil")
	label:SetPos(25, 155)
	label:SizeToContents()

	local mis6 = h.g****ui.Create("DCheckBox", mis)
	mis6:SetPos(5, 175)
	mis6:SetValue(h.BoolToNumber(h.v["misc"]["nospread"]))
	function mis6:OnChange(b)
		h.v["misc"]["nospread"] = b
	end
	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("No Spread")
	label:SetPos(25, 175)
	label:SizeToContents()

	local mis7 = h.g****ui.Create("DCheckBox", mis)
	mis7:SetPos(5, 195)
	mis7:SetValue(h.BoolToNumber(h.v["misc"]["chatspam"]))
	function mis7:OnChange(b)
		h.v["misc"]["chatspam"] = b
	end
	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("Chatspam")
	label:SetPos(25, 195)
	label:SizeToContents()

	local cms = h.g****ui.Create("DButton", mis)
	cms:SetSize(150, 30)
	cms:SetPos(5, 215)
	cms:SetText("Chatspam Message")
	cms.DoClick = function()
		local fr = h.g****ui.Create("DFrame")
		fr:SetTitle("VINDICATE | Chatspam Message")
		fr:SetSize(300, 60)
		fr:Center()
		fr:MakePopup()
		local text = h.g****ui.Create("DTextEntry", fr)
		text:SetPos(0, 20)
		text:Dock( FILL )
		text:SetText(h.v["misc"]["chatspammsg"])
		text.OnEnter = function(self)
			h.v["misc"]["chatspammsg"] = self:GetValue()
			fr:Close()
		end
	end

	local mis8 = h.g****ui.Create("DCheckBox", mis)
	mis8:SetPos(5, 250)
	mis8:SetValue(h.BoolToNumber(h.v["misc"]["crosshair"]))
	function mis8:OnChange(b)
		h.v["misc"]["crosshair"] = b
	end
	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("Crosshair")
	label:SetPos(25, 250)
	label:SizeToContents()

	local cri = h.g****ui.Create("DButton", mis)
	cri:SetSize(150, 30)
	cri:SetPos(5, 270)
	cri:SetText("Inner Crosshair Color")
	cri.DoClick = function()
		local fr = h.g****ui.Create("DFrame")
		fr:SetTitle("VINDICATE | Crosshair Color Manager")
		fr:SetSize(267, 186)
		fr:Center()
		fr:MakePopup()
		local colr = h.g****ui.Create("DColorMixer", fr)
		colr:Dock( FILL )
		colr:SetPalette(true)
		colr:SetAlphaBar(true)
		colr:SetWangs(true)
		colr:SetColor(h.g.Color(h.v["misc"]["crosshair_ir"], h.v["misc"]["crosshair_ig"], h.v["misc"]["crosshair_ib"], h.v["misc"]["crosshair_ia"]))
		function colr:ValueChanged(col)
			h.v["misc"]["crosshair_ir"] = col.r
			h.v["misc"]["crosshair_ig"] = col.g
			h.v["misc"]["crosshair_ib"] = col.b
			h.v["misc"]["crosshair_ia"] = col.a
		end
	end

	local cro = h.g****ui.Create("DButton", mis)
	cro:SetSize(150, 30)
	cro:SetPos(5, 305)
	cro:SetText("Outer Crosshair Color")
	cro.DoClick = function()
		local fr = h.g****ui.Create("DFrame")
		fr:SetTitle("VINDICATE | Crosshair Color Manager")
		fr:SetSize(267, 186)
		fr:Center()
		fr:MakePopup()
		local colr = h.g****ui.Create("DColorMixer", fr)
		colr:Dock( FILL )
		colr:SetPalette(true)
		colr:SetAlphaBar(true)
		colr:SetWangs(true)
		colr:SetColor(h.g.Color(h.v["misc"]["crosshair_or"], h.v["misc"]["crosshair_og"], h.v["misc"]["crosshair_ob"], h.v["misc"]["crosshair_oa"]))
		function colr:ValueChanged(col)
			h.v["misc"]["crosshair_or"] = col.r
			h.v["misc"]["crosshair_og"] = col.g
			h.v["misc"]["crosshair_ob"] = col.b
			h.v["misc"]["crosshair_oa"] = col.a
		end
	end

	local mis9 = h.g****ui.Create("DCheckBox", mis)
	mis9:SetPos(5, 340)
	mis9:SetValue(h.BoolToNumber(h.v["misc"]["darkrplag"]))
	function mis9:OnChange(b)
		h.v["misc"]["darkrplag"] = b
	end
	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("DarkRP Lag")
	label:SetPos(25, 340)
	label:SizeToContents()

	local exp1 = h.g****ui.Create("DButton", mis)
	exp1:SetSize(150, 30)
	exp1:SetPos(5, 360)
	exp1:SetText("Hitman X Exploit")
	exp1.DoClick = function()
		local menu = h.g.DermaMenu()
		menu:AddOption("Give Money to All", h.HitmanXSendMoneyToAll)
		menu:AddOption("Give Money to Self", h.HitmanXSendMoneyToSelf)
		menu:Open()
	end

	local exp2 = h.g****ui.Create("DButton", mis)
	exp2:SetSize(150, 30)
	exp2:SetPos(5, 395)
	exp2:SetText("Bail Exploit")
	exp2.DoClick = function()
		local menu = h.g.DermaMenu()
		menu:AddOption("Give Money to All", h.BailExploitForAll)
		menu:AddOption("Give Money to Self", h.BailExploitSelf)
		menu:Open()
	end

	local exp3 = h.g****ui.Create("DButton", mis)
	exp3:SetSize(150, 30)
	exp3:SetPos(5, 430)
	exp3:SetText("Level Fuckup")
	exp3.DoClick = function()
		local menu = h.g.DermaMenu()
		local allplys = validplayer
		for i = 1, #allplys do
			local v = allplys[i]
			if !h.em.IsValid(v) then continue end
			menu:AddOption(h.pm.Name(v), function()
				h.LevelFuckUp(v)
			end)
		end
		menu:Open()
	end

	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("PKill Key")
	label:SetPos(280, 45)
	label:SizeToContents()

	local pbin = h.g****ui.Create("DBinder", mis)
	pbin:SetPos(200, 60)
	pbin:SetSize(200, 50)
	pbin:SetText("TTTPKill Key")
	pbin:SetValue(h.v["misc"]["tttpkill"])
	local nam5e = h.g.util.CRC(h.g.os.date())..name..name..name
	h.g.hook.Add("Think", nam5e, function()
		if !frame:IsValid() then
			h.g.hook.Remove("Think", nam5e)
			return
		end
		h.v["misc"]["tttpkill"] = pbin:GetValue()
	end)

	local mis14233223 = h.g****ui.Create("DCheckBox", mis)
	mis14233223:SetPos(200, 120)
	mis14233223:SetValue(h.BoolToNumber(h.v["misc"]["animspam"]))
	function mis14233223:OnChange(b)
		h.v["misc"]["animspam"] = b
	end
	local label = h.g****ui.Create("DLabel", mis)
	label:SetText("DarkRP Animation Spam")
	label:SetPos(225, 120)
	label:SizeToContents()

	local label = h.g****ui.Create("DLabel", cre)
	label:SetFont("BudgetLabel")
	label:SetText(
[[
db    db d888888b d8b   db d8888b. d888888b  .o88b.  .d8b.  d888888b d88888b
88    88   `88'   888o  88 88  `8D   `88'   d8P  Y8 d8' `8b `~~88~~' 88'
Y8    8P    88    88V8o 88 88   88    88    8P      88ooo88    88    88ooooo
`8b  d8'    88    88 V8o88 88   88    88    8b      88~~~88    88    88~~~~~
 `8bd8'    .88.   88  V888 88  .8D   .88.   Y8b  d8 88   88    88    88.
   YP    Y888888P VP   V8P Y8888D' Y888888P  `Y88P' YP   YP    YP    Y88888P
			                              __
			   ____ _____ ___  ____  ____/ /
			  / __ `/ __ `__ \/ __ \/ __  /
			 / /_/ / / / / / / /_/ / /_/ /
			 \__, /_/ /_/ /_/\____/\__,_/
			/____/

Made by Hvl.
]]
)
label:SetPos(5,5)
label:SizeToContents()

end


function h.TTTShit(ucmd)
	if !h.g.input.IsKeyDown(h.v["misc"]["tttpkill"]) then
		keydown = false
	end
	if ins then
		h.cm.SetForwardMove(ucmd, h.cm.GetForwardMove(ucmd) * -1)
	end
end

function h.TTTPKill()
	if !switch then
		h.v["aimbot"]["fakeangles"] = h.v["aimbot"]["fakeangles"] - h.g.Angle(0,180,0)
		ins = true
	else
		ins = false
	end
	switch = not switch
end

function h.CUserCmd(ucmd)
	h.Aimbot(ucmd)
	h.AAS(ucmd)
	h.Triggerbot(ucmd)
	h.BHop(ucmd)
	h.TTTShit(ucmd)
end

h.AddHook("CreateMove", h.g.util.CRC("vindicate_createmove"), h.CUserCmd)

function h.HUDPaint()
	h.ESPLoop()
	h.XRay()
	h.XRay2()
	h.Chams()
	h.Tracers()
	h.Crosshair()
end

h.AddHook("HUDPaint", h.g.util.CRC("vindicate_hudpaint"), h.HUDPaint)


function h.KeyPress()
	if h.pm.IsTyping(h.me) then
		h.v["aimbot"]["isdown"] = false
		return
	end
	if h.g.input.IsKeyDown(h.v["aimbot"]["key"]) then
		h.v["aimbot"]["isdown"] = true
	else
		h.v["aimbot"]["isdown"] = false
	end
	if h.g.input.IsKeyDown(h.v["misc"]["tttpkill"]) and !keydown then
		h.TTTPKill()
		keydown = true
	end
	if h.g.input.IsKeyDown(h.v["menu"]["key"]) then
		if !h.v["menu"]["isopen"] then
			h.v["menu"]["isopen"] = true
			h.Menu()
			h.Notify("Opened Menu.")
		end
	end
end

h.AddHook("Think", h.g.util.CRC("vindicate_keypress"), h.KeyPress)
h.AddHook("Think", h.g.util.CRC("vindicat_animspam"), h.AnimSpam)

h.Notify("Fully loaded.")
h.Notify("Welcome, "..h.pm.Name(h.me).." ("..h.pm.SteamID(h.me)..").")
What Happened to using the Nyx module? why did you white out that tidbit?
-- Clearing 'h'

if h then rawset(_G, "h", nil) end

well that was detected fast
[ERROR] lua/vindic.lua:417: unexpected symbol near '*'
1. unknown - lua/vindic.lua:0


this is great
And how do you expect us to have dlls?
hatu you didn't leak shit, this was already made public and you have the old version retard.
Posts 1–15 of 30 · Page 1 of 2
This thread is closed for replies.

Similar Threads

Tags for this Thread

None

Talk with us