InfoGarry's Mod Script Thread

Posts 115 of 219 · Page 1 of 15
Garry's Mod Script Thread
Garry's Mod Script Thread

Introduction:
Well I guess it's time for this as well.
I hope that this thread will be a thriving part of this section and will help a lot of people.

Note that I will not be handling all of this myself I will only provide what I can - I do hope more people will contribute.

So here's a template for a contribution.
 
Template
Script Name:
Description:
Credits:
Code:
And you put the code here


And here's one of my contribution, I know it's not much and I do have a lot more of scripts in stock.
But sharing is caring, I'll share one or more and I hope you share as well.

 
iHop
Script Name: iHop
Description: This is a bHop script that does what it supposed to, simple and easy.
Credits: InferiorComplex
Code:
local ihop = false
hook.Add("Think", "ihop", function()
if ihop then
     if (input.IsKeyDown( KEY_SPACE ) ) then
        if LocalPlayer():IsOnGround() then
            RunConsoleCommand("+jump")
            HasJumped = 1
        else
            RunConsoleCommand("-jump")
            HasJumped = 0
        end
    elseif ihop and LocalPlayer():IsOnGround() then
        if HasJumped == 1 then
            RunConsoleCommand("-jump")
            HasJumped = 0
        end
    end
end
end)

concommand.Add("ihop_toggle", function()
if ihop then
    ihop = !ihop
    LocalPlayer():ChatPrint("iHop turned OFF")
else
    ihop = !ihop
    LocalPlayer():ChatPrint("iHop turned ON")
end
end)
Script Name:Basic Aimbot
Description:Basic aimbotscript
Credits:Shen(NOTICE i havent done any of this code)
Code:
function aimbot()
	local ply = LocalPlayer() 
	local trace = util.GetPlayerTrace( ply )
	local traceRes = util.TraceLine( trace )
	if traceRes.HitNonWorld then
		local target = traceRes.Entity
		if target:IsPlayer() then
			local targethead = target:LookupBone("ValveBiped.Bip01_Head1")
			local targetheadpos,targetheadang = target:GetBonePosition(targethead)
			ply:SetEyeAngles((targetheadpos - ply:GetShootPos()):Angle())
		end
	end
end
hook.Add("Think","aimbot",aimbot)
There ya go your first comment on this thread
Quote Originally Posted by makee View Post
There ya go your first comment on this thread
Looked at that too then I realized it doesn't learn me as much as I should be learning.
So I started looking at other people's coding.

Thank for your contribution.
Quote Originally Posted by Gray View Post


Looked at that too then I realized it doesn't learn me as much as I should be learning.
So I started looking at other people's coding.

Thank for your contribution.
the marked text does not make sense would you tell me what you tried to say because i dont get waht you were trying to say
Quote Originally Posted by makee View Post
the marked text does not make sense would you tell me what you tried to say because i dont get waht you were trying to say
Might be because I just smoked some pot to ease my pain.
What I meant was "I didn't learn as much as I wanted to in that tutorial - Which caused me to study other peoples scripts instead"

That make sense?
that makes way more sense to me thanks
Script Name: No Spread/No Recoil
Description: NoSpread/N
Credits: [DEA] Monster, [DEA] TheHurtmaster

Code:
local function NoSpread()                                      
if GetConVarNumber("Derp_no") == 1 and LocalPlayer().GetActiveWeapon != nil then
local wep = LocalPlayer():GetActiveWeapon()
if wep.data then
wep.data.Recoil = 0
wep.data.Cone = 0
wep.data.Spread = 0
end
if wep.Primary then
wep.Primary.Recoil = 0
wep.Primary.Cone = 0
wep.Primary.Spread = 0
end
end
end
hook.Add("Tick", "NoSpread", NoSpread)

CreateClientConVar( "Derp_no", 0, true, false)
Might not work, it's old, Made it a long time ago.
Quote Originally Posted by [RAGE] Mad YET? View Post
Script Name: No Spread/No Recoil
Description: NoSpread/N
Credits: [DEA] Monster, [DEA] TheHurtmaster

Code:
local function NoSpread()                                      
if GetConVarNumber("Derp_no") == 1 and LocalPlayer().GetActiveWeapon != nil then
local wep = LocalPlayer():GetActiveWeapon()
if wep.data then
wep.data.Recoil = 0
wep.data.Cone = 0
wep.data.Spread = 0
end
if wep.Primary then
wep.Primary.Recoil = 0
wep.Primary.Cone = 0
wep.Primary.Spread = 0
end
end
end
hook.Add("Tick", "NoSpread", NoSpread)

CreateClientConVar( "Derp_no", 0, true, false)
Might not work, it's old, Made it a long time ago.
nice i will definetly try this one out should it make so absolutely no spread or is it just less spread? nope not working
Quote Originally Posted by [RAGE] Mad YET? View Post
Script Name: No Spread/No Recoil
Description: NoSpread/N
Credits: [DEA] Monster, [DEA] TheHurtmaster

Code:
local function NoSpread()                                      
if GetConVarNumber("Derp_no") == 1 and LocalPlayer().GetActiveWeapon != nil then
local wep = LocalPlayer():GetActiveWeapon()
if wep.data then
wep.data.Recoil = 0
wep.data.Cone = 0
wep.data.Spread = 0
end
if wep.Primary then
wep.Primary.Recoil = 0
wep.Primary.Cone = 0
wep.Primary.Spread = 0
end
end
end
hook.Add("Tick", "NoSpread", NoSpread)

CreateClientConVar( "Derp_no", 0, true, false)
Might not work, it's old, Made it a long time ago.
Thank you for your contribution.
Quote Originally Posted by makee View Post
nice i will definetly try this one out should it make so absolutely no spread or is it just less spread?
None, you have no spread at all.
Quote Originally Posted by [RAGE] Mad YET? View Post
None, you have no spread at all.
I will have a look at that once I get back on.
Script Name: Hera - Worst Hack Ever
Description: The hack you wanted
Credits: tyler wearing

Code:
--[[

-================================-


Hera v4 - A Garry's Mod aimbot [Multi-Hack]


-================================-

]]--


/************************************
Name: Localizing
Purpose: Make the cheat run faster
************************************/

local g 					= table.Copy(_G)

local Hera					= {} -- Nothing!
Hera.settings				= {} -- Not started yet.
Hera.hooks					= {} -- Store hooks in a table
Hera.concommands			= {} -- Store concommands in a table
Hera.convars				= {} -- Store the ConVars in a table
Hera.timers					= {} -- Store Timers in a table
Hera.cones					= { normal = {}, hl2 = {}, custom = {}} -- I probably won't even need this, I won't have NoSpread for a long time. Anyways, store cones here.
Hera.files					= {"Hera.lua","Log.txt"} -- Files to hide and protect
Hera.version				= "4.1" -- Version of the cheat.
Hera.ents					= { -- ents to be picked up by entity esp, add more if you want.
"ent_pot",
"npc_vendor",
"weapon_perp_glock",
"ent_item",
"ent_prop_item",
"sent_spawnpoint",
"spawned_weapon",
"spawned_shipment",
"weed_plant",
"gift",
"spawned_money",
"base_item",
"weapon_ak47_dayz",
"weapon_mp5_dayz",
"weapon_deagle_dayz",
"sapphire_money_printer",
"amethyst_money_printer",
"topaz_money_printer",
"emerald_money_printer",
"msc_scrapnug",
"food_rawant",
"ent_resource",
"food_rawhead",
"gmodz_item", -- TPS DayZ
}
Hera.dontlog				= { -- commands to be ignored by the runconsolecommand logger
"+jump",
"-jump", 
"+attack", 
"-attack", 
"impulse"
} 
Hera.badcmds				= { -- commands to be blocked
"__ac",
"__imacheater",
"gm_possess",
"achievementRefresh", -- fuck u lifepunch
"__uc_", -- RIOT
"_____b__c",
"___m",
"sc",
"bg",
"bm",
"kickme",
"gw_iamacheater",
"ima******",
"birdcage_browse",
"reportmod",
"_fuckme",
"st_openmenu",
"_NOPENOPE",
"__ping",
"ar_check",
"GForceRecoil",
"~__ac_auth",
"blade_client_check",
"blade_client_detected_message",
"disconnect",
"exit",
"retry",
"kill",
"-voicerecord",
"+voicerecord",
"dac_imcheating", -- fuck u bich
"dac_pleasebanme", -- fuck u bich
}
Hera.invalidents			= {"player","prop_physics","viewmodel",} -- Ents to not show on the ESP
Hera.weapons				= {["weapon_crossbow"] = 3110,}
Hera.spectators				= {} -- Store spectators here.
Hera.admins					= {} -- store admins here
Hera.config					= {} -- user config

local colors				= {}
red							= Color(255,0,0,255);
black						= Color(0,0,0,255);
green						= Color(0,255,0,255);
white						= Color(255,255,255,255);
blue						= Color(0,0,255,255);
cyan						= Color(0,255,255,255);
pink 						= Color(255,0,255,255);
blue						= Color(0,0,255,255);
grey						= Color(100,100,100,255);
gold						= Color(255,228,0,255);
lblue						= Color(155,205,248);
lgreen						= Color(174,255,0);
iceblue						= Color(116,187,251,255);

local _G					= table.Copy(_G)

local math 					= _G.math
local string 				= _G.string
local hook 					= _G.hook
local table 				= _G.table
local timer 				= _G.timer
local surface 				= _G.surface
local concommand 			= _G.concommand
local cvars 				= _G.cvars
local ents 					= _G.ents
local player 				= _G.player
local team 					= _G.team
local util 					= _G.util
local draw 					= _G.draw
local usermessage 			= _G.usermessage
local vgui 					= _G****ui
local http 					= _G.http
local cam 					= _G.cam
local render 				= _G.render

local MsgN 					= _G.MsgN
local Msg 					= _G.Msg
local Vector 				= _G.Vector
local Angle 				= _G.Angle
local pairs 				= _G.pairs
local ipairs 				= _G.ipairs
local CreateSound 			= _G.CreateSound
local setmetatable 			= _G.setmetatable
local Sound 				= _G.Sound
local print 				= _G.print
local pcall 				= _G.pcall
local type 					= _G.type
local LocalPlayer 			= _G.LocalPlayer
local KeyValuesToTable 		= _G.KeyValuesToTable
local TableToKeyValues 		= _G.TableToKeyValues
local Color 				= _G.Color
local CreateClientConVar 	= _G.CreateClientConVar
local ErrorNoHalt 			= _G.ErrorNoHalt
local IsValid 				= _G.IsValid
local CreateMaterial 		= _G.CreateMaterial
local tonumber 				= _G.tonumber
local tostring 				= _G.tostring
local CurTime			 	= _G.CurTime
local FrameTime 			= _G.FrameTime
local ScrW 					= _G.ScrW
local ScrH 					= _G.ScrH
local SetClipboardText 		= _G.SetClipboardText
local GetHostName 			= _G.GetHostName
local unpack 				= _G.unpack
local AddConsoleCommand 	= _G.AddConsoleCommand 
local require				= _G.require
local include				= _G.include

local MOVETYPE_OBSERVER 	= _G.MOVETYPE_OBSERVER
local MOVETYPE_NONE 		= _G.MOVETYPE_NONE
local TEXT_ALIGN_LEFT 		= _G.TEXT_ALIGN_LEFT
local TEXT_ALIGN_TOP 		= _G.TEXT_ALIGN_TOP
local TEXT_ALIGN_RIGHT 		= _G.TEXT_ALIGN_RIGHT
local TEXT_ALIGN_BOTTOM		= _G.TEXT_ALIGN_BOTTOM
local IN_JUMP 				= _G.IN_JUMP
local IN_FORWARD 			= _G.IN_FORWARD
local IN_BACK 				= _G.IN_BACK
local IN_MOVERIGHT 			= _G.IN_MOVERIGHT
local IN_MOVELEFT 			= _G.IN_MOVELEFT
local IN_SPEED 				= _G.IN_SPEED
local IN_DUCK 				= _G.IN_DUCK
local TEAM_SPECTATOR 		= 1002

-- old [detour]
local old_filecdir 			= file.CreateDir;
local old_filedel 			= file.Delete;
local old_fileexist 		= file.Exists;
local old_fileexistex 		= file.ExistsEx;
local old_filefind 			= file.Find;
local old_filefinddir 		= file.FindDir;
local old_filefindil 		= file.FindInLua;
local old_fileisdir			= file.IsDir;
local old_fileread 			= file.Read;
local old_filerename 		= file.Rename;
local old_filesize 			= file.Size;
local old_filetfind			= file.TFind;
local old_filetime 			= file.Time;
local old_filewrite 		= file.Write;
local old_dbginfo 			= debug.getinfo;
local old_dbginfo 			= debug.getupvalue;
local old_cve 				= ConVarExists;
local old_gcv 				= GetConVar;
local old_gcvn 				= GetConVarNumber;
local old_gcvs 				= GetConVarString;
local old_rcc 				= RunConsoleCommand;
local old_hookadd			= hook.Add;
local old_hookrem 			= hook.Remove;
local old_ccadd				= concommand.Add;
local old_ccrem 			= concommand.Remove;
local old_cvaracc 			= cvars.AddChangeCallback;
local old_cvargcvc 			= cvars.GetConVarCallbacks;
local old_cvarchange 		= cvars.OnConVarChanged;
local old_require			= require;
local old_eccommand 		= engineConsoleCommand;

--Fonts--
surface.CreateFont("ESPFont",{font = "ScoreboardText", size = 17, weight = 400, antialias = 0})
surface.CreateFont("ESPFont_Small",{font = "Default", size = 12, weight = 200, antialias = 0})
surface.CreateFont("Logo",{font = "akbar", size = 21, weight = 400, antialias = 0})
surface.CreateFont("Hera_ScoreboardText",{font = "ScoreboardText", size = 15, weight = 700, antialias = 0})
surface.CreateFont("Hera_coolvetica",{font = "coolvetica", size = 16, weight = 500, antialias = 0})
surface.CreateFont("Hera_hvh",{font = "ScoreboardTextt", size = 15, weight = 1000, antialias = 1})


g.rawset(_G, "RunConsoleCommand", oRunConsoleCommand) 

--Materials--
function Hera:CreateMaterial()
local BaseInfo = {
["$basetexture"] = "models/debug/debugwhite",
["$model"]       = 1,
["$translucent"] = 1,
["$alpha"]       = 1,
["$nocull"]      = 1,
["$ignorez"]	 = 1
}	
local mat	
if GetConVarString("Hera_ESP_Chams_Material") == "Solid" then
	mat = CreateMaterial( "hera_solid", "VertexLitGeneric", BaseInfo )
elseif GetConVarString("Hera_ESP_Chams_Material") == "Wireframe" then
	mat = CreateMaterial( "hera_wire", "Wireframe", BaseInfo )
end
   return mat
end

/**************************************
Name: Logger
Purpose: Logs functions and shit
**************************************/
concommand.Add("Hera_StartLog",function()
file.Write("Hera/log.txt","Log created: ("..os.date()..") \n")
end)

function Log(msg)
file.Append("Hera/log.txt","["..os.date().."]: "..msg.."\n")
end
Log("Loading....")


/*******************************************
Name: Print/Chat functions
Purpose: Notify the user of what's going on
********************************************/
function Hera.Print(msg)
	print("[Hera] "..msg)
end

function Hera.Notify(dosound,col,msg)
	if col then
		col = col
	end
chat.AddText(
iceblue, "[Hera] ",
col, msg)
	if dosound == sound then
		local beep = Sound( "/buttons/button17.wav" )
		local beepsound = CreateSound( LocalPlayer(), beep )
		beepsound:Play()
	end
end

/***********************************************
Name: Hook functions
Purpose: Add hooks and protect from anticheats
************************************************/

-- Addhook
local function AddHook(Type,Function)
	Name = Type.." | "..math.random(1,1000),math.random(1,2000),math.random(1,3000) -- Simple hook names
	Hera.Print("[ADDED] Hook: ["..Type.."] | Name: "..Name.."")
	return old_hookadd(Type,Name,Function)
end

-- RemoveHook
local function RemoveHook(Type,Function)
	Hera.Print("[REMOVED] Hook: ["..Type.."]")
	return old_hookrem(Type,Function)
end

/**********************************
Name: File Shit
Purpose: Anything relating to file.
***********************************/
-- Write file
function AddFile(Name,Data)
	Hera.Print("[WROTE] File: "..Name.."")
	return old_filewrite(Name,Data)
end

/**************
Random String
**************/
function RandomString( len )
	local ret = ""
		for i = 1 , len do
			ret = ret .. string.char( math.random( 65 , 116 ) )
        end
	return ret
end

/**********************
Name: Timer shit
Purpose: Anything timer
***********************/
function AddTimer( sec, rep, func )
	local index = RandomString( 10 )	
	Hera.timers[ index ] = sec	
	timer.Create( index, sec, rep, func )
end

/******************************************
Name: ConCommand Shit
Purpose: Anything related to concommands
********************************************/

function AddCMD(Name,Function)
	Hera.Print("[ADDED] ConCommand: "..Name.."")
	return old_ccadd(Name,Function)
end

function RemoveCMD(Name)
	Hera.Print("[REMOVED] ConCommand: "..Name.."")
	return old_ccrem(Name)
end

/*******************************************
Name: ConVars
Purpose: Anything with ConVars
********************************************/

-- AddConVar
function AddConVar(convar,str,save,data)
	return CreateClientConVar("Hera_"..convar,str,true,false), Hera.Print("[ADDED] ConVar: Hera_"..convar.." ["..str.."]")
end

/***************************************
Name: RunConsoleCommand shit
Purpose: Detours, Loggers, blockers
****************************************/

function RunConsoleCommand(cmd,...)
	if !table.HasValue(Hera.dontlog, cmd) then
		Hera.Print("RunConsoleCommand: "..cmd)
		Log("RunConsoleCommand: "..cmd)
	end
	if !table.HasValue(Hera.badcmds,cmd) then 
		return old_rcc(cmd,...)
	else
		Hera.Notify(sound,red,"Blocked command: "..cmd)
		Log("BLOCKED COMMAND: "..cmd)
		return
	end
end

/**************************************
Name: Entity Shit
Purpose: Anything to do with entities
***************************************/
-- entity finder [addent]
function AddEnt(entclass)
	if(!table.HasValue(Hera.ents,entclass)) then
		table.insert(Hera.ents,entclass)
		Hera.Print("[ADDED] Ent: "..entclass.." to ESP")
		file.Write("Hera/ents.txt", glon.encode( Hera.ents ))
	end
end

-- entity finder [removeent]
function RemoveEnt(entclass)
	for k, v in pairs(Hera.ents) do
		if(string.Trim(v) == entclass) then
			Hera.ents[k] = nil
			Hera.Print("[REMOVED] Ent: "..entclass.." from the ESP")
		end
	end
	file.Write("Hera/ents.txt", glon.encode( Hera.ents ))
end

-- entity finder [clear ents]
function ClearEnts()
	Hera.ents = {}
	file.Write("Hera/ents.txt", glon.encode( Hera.ents ))
end

-- entity finder [IsCustomEnt()]
function IsCustomEnt( entclass )
	return table.HasValue( Hera.ents, entclass )
end


/**************************
Name: Derma shit
Purpose: Anything Derma
***************************/
function AddCheckBox( text, cvar, parent, x, y, tt )
local checkbox = vgui.Create( "DCheckBoxLabel", parent )
checkbox:SetPos( x, y )
checkbox:SetText( text )
checkbox:SetConVar( cvar )
checkbox:SetTextColor(white)
checkbox:SetTooltip( tt or "No Tool Tip" )
checkbox:SizeToContents()	
end

// AddSlider for the derma
function AddSlider( text, cvar, parent, min, max, decimals, x, y, wide, tt )
local slider = vgui.Create( "DNumSlider" )
slider:SetParent( parent )
slider:SetPos( x, y )
slider:SetWide( wide )
slider:SetText( text )
--slider:SetTextColor(BLACK)
slider:SetMin( min ) 
slider:SetMax( max ) 
slider:SetDecimals( decimals ) 
slider:SetConVar( cvar )
slider:SetTooltip( tt or "No Tool Tip" )
end

Gradient = surface.GetTextureID( "gui/gradient" )
function DrawBox( x, y, wide, tall, dropsize )
	draw****undedBoxEx( 4, x, y, wide, dropsize, iceblue, true, true, false, false )
	draw****undedBoxEx( 4, x, y + dropsize, wide, tall - dropsize, Color( 0, 0, 0, 100 ), false, false, true, true )
end

/********************************************************
Name: Hide the cheat from client
Purpose: Don't show the where the cheat loads from, etc
*********************************************************/
function error(...) Hera.Notify(red,"Error in the Lua script!") end
function Error(...) Hera.Notify(red,"Error in the Lua script!") end
function ErrorNoHalt(...) Hera.Notify(red,"Error in the Lua script!") end

/*************************
Name: CreatePos
Purpose: Create a position
Credits: BaconBot
***************************/
function CreatePos(v)
local ply = LocalPlayer()
local center = v:LocalToWorld( v:OBBCenter() )
local min, max = v:OBBMins(), v:OBBMaxs()
local dim = max - min	local z = max + min	
local frt	= ( v:GetForward() ) * ( dim.y / 2 )
local rgt	= ( v:GetRight() ) * ( dim.x / 2 )
local top	= ( v:GetUp() ) * ( dim.z / 2 )
local bak	= ( v:GetForward() * -1 ) * ( dim.y / 2 )
local lft	= ( v:GetRight() * -1 ) * ( dim.x / 2 )
local btm	= ( v:GetUp() * -1 ) * ( dim.z / 2 )
local s = 1
local FRT 	= center + frt / s + rgt / s + top / s; FRT = FRT:ToScreen()
local BLB 	= center + bak / s + lft / s + btm / s; BLB = BLB:ToScreen()
local FLT	= center + frt / s + lft / s + top / s; FLT = FLT:ToScreen()
local BRT 	= center + bak / s + rgt / s + top / s; BRT = BRT:ToScreen()
local BLT 	= center + bak / s + lft / s + top / s; BLT = BLT:ToScreen()
local FRB 	= center + frt / s + rgt / s + btm / s; FRB = FRB:ToScreen()
local FLB 	= center + frt / s + lft / s + btm / s; FLB = FLB:ToScreen()
local BRB 	= center + bak / s + rgt / s + btm / s; BRB = BRB:ToScreen()	
local z = 100
if ( v:Health() <= 50 ) then z = 100 end
local x, y = ( ( v:Health() / 100 ) ), 1
if ( v:Health() <= 0 ) then x = 1 end
local FRT3 	= center + frt + rgt + top / x; FRT3 = FRT3; FRT3 = FRT3:ToScreen()
local BLB3 	= center + bak + lft + btm / x; BLB3 = BLB3; BLB3 = BLB3:ToScreen()
local FLT3	= center + frt + lft + top / x; FLT3 = FLT3; FLT3 = FLT3:ToScreen()
local BRT3 	= center + bak + rgt + top / x; BRT3 = BRT3; BRT3 = BRT3:ToScreen()
local BLT3 	= center + bak + lft + top / x; BLT3 = BLT3; BLT3 = BLT3:ToScreen()
local FRB3 	= center + frt + rgt + btm / x; FRB3 = FRB3; FRB3 = FRB3:ToScreen()
local FLB3 	= center + frt + lft + btm / x; FLB3 = FLB3; FLB3 = FLB3:ToScreen()
local BRB3 	= center + bak + rgt + btm / x; BRB3 = BRB3; BRB3 = BRB3:ToScreen()	
local x, y, z = 1.1, 0.9, 1
local FRT2 	= center + frt / y + rgt / z + top / x; FRT2 = FRT2:ToScreen()
local BLB2 	= center + bak / y + lft / z + btm / x; BLB2 = BLB2:ToScreen()
local FLT2	= center + frt / y + lft / z + top / x; FLT2 = FLT2:ToScreen()
local BRT2 	= center + bak / y + rgt / z + top / x; BRT2 = BRT2:ToScreen()
local BLT2 	= center + bak / y + lft / z + top / x; BLT2 = BLT2:ToScreen()
local FRB2 	= center + frt / y + rgt / z + btm / x; FRB2 = FRB2:ToScreen()
local FLB2 	= center + frt / y + lft / z + btm / x; FLB2 = FLB2:ToScreen()
local BRB2 	= center + bak / y + rgt / z + btm / x; BRB2 = BRB2:ToScreen()	
local maxX = math.max( FRT.x,BLB.x,FLT.x,BRT.x,BLT.x,FRB.x,FLB.x,BRB.x )
local minX = math.min( FRT.x,BLB.x,FLT.x,BRT.x,BLT.x,FRB.x,FLB.x,BRB.x )
local maxY = math.max( FRT.y,BLB.y,FLT.y,BRT.y,BLT.y,FRB.y,FLB.y,BRB.y )
local minY = math.min( FRT.y,BLB.y,FLT.y,BRT.y,BLT.y,FRB.y,FLB.y,BRB.y )
local minYhp2 = math.min( FRT.y,BLB.y,FLT.y,BRT.y,BLT.y,FRB.y,FLB.y,BRB.y )
local maxXhp = math.max( FRT3.x,BLB3.x,FLT3.x,BRT3.x,BLT3.x,FRB3.x,FLB3.x,BRB3.x )
local minXhp = math.min( FRT3.x,BLB3.x,FLT3.x,BRT3.x,BLT3.x,FRB3.x,FLB3.x,BRB3.x )
local maxYhp = math.max( FRT3.y,BLB3.y,FLT3.y,BRT3.y,BLT3.y,FRB3.y,FLB3.y,BRB3.y )
local minYhp = math.min( FRT3.y,BLB3.y,FLT3.y,BRT3.y,BLT3.y,FRB3.y,FLB3.y,BRB3.y )	
local maxX2 = math.max( FRT2.x,BLB2.x,FLT2.x,BRT2.x,BLT2.x,FRB2.x,FLB2.x,BRB2.x )
local minX2 = math.min( FRT2.x,BLB2.x,FLT2.x,BRT2.x,BLT2.x,FRB2.x,FLB2.x,BRB2.x )
local maxY2 = math.max( FRT2.y,BLB2.y,FLT2.y,BRT2.y,BLT2.y,FRB2.y,FLB2.y,BRB2.y )
local minY2 = math.min( FRT2.y,BLB2.y,FLT2.y,BRT2.y,BLT2.y,FRB2.y,FLB2.y,BRB2.y )
return maxX, minX, maxY, minY, maxX2, minX2, maxY2, minY2, minYhp, maxYhp
end


/*************************************
Name: PlayerVisible
Purpose: Check if a player is visible
*************************************/
local function CanSee(ply)
    local trace = {start = LocalPlayer():GetShootPos(),endpos = {}}
    local tr = util.TraceLine(trace)
    if tr.Fraction == 1 then
        return true
    else
        return false
    end    
end

/**********************************
Name: GetColors
Purpose: Make a cool color!
***********************************/
local function GetColorCrosshair()
	if LocalPlayer():GetEyeTrace().Entity:IsPlayer() then
		return 0,255,0,255
	end
	if LocalPlayer():GetEyeTrace().Entity:IsNPC() then
		return 0,0,255,255
	end
	return team.GetColor(LocalPlayer():Team())
end

local function GetColorVisible(e)
	if CanSee(e) then
		return 0,255,0,255
	end
	if !CanSee(e) then
		return 255,0,0,255
	end
end


/**************************************
Name: Number shit
Purpose: Format number, round number, etc
**************************************/
function CommaValue(amount)
	local formatted = amount
	while true do  
		formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1,%2')
		if (k==0) then
			break
		end
	end
	return formatted
end

function RoundNum(val, decimal)
	if (decimal) then
		return math.floor( (val * 10^decimal) + 0.5) / (10^decimal)
	else
		return math.floor(val+0.5)
	end
end

function FormatNum(amount, decimal, prefix, neg_prefix)
	local str_amount,  formatted, famount, remain
	decimal = decimal or 2
	neg_prefix = neg_prefix or "-"
	famount = math.abs(RoundNum(amount,decimal))
	famount = math.floor(famount)
	remain = RoundNum(math.abs(amount) - famount, decimal)
	formatted = CommaValue(famount)
	if (decimal > 0) then
		remain = string.sub(tostring(remain),3)
		formatted = formatted .. "." .. remain .. string.rep("0", decimal - string.len(remain))
	end
	formatted = (prefix or "") .. formatted 
	if (amount<0) then
		if (neg_prefix=="()") then
			formatted = "("..formatted ..")"
		else
			formatted = neg_prefix .. formatted 
		end
	end
	return formatted
end

function ConvertTime(sSeconds)
	local nSeconds = tonumber(sSeconds)
	if nSeconds <= 0 then
			return 0;
		else
			local nHours = string.format("%02.f", math.floor(nSeconds/3600));
			local nMins = string.format("%02.f", math.floor(nSeconds/60 - (nHours*60)));
			local nSecs = string.format("%02.f", math.floor(nSeconds - nHours*3600 - nMins *60));
		if tonumber( nHours ) > 0 then
			return nHours..":"..nMins..":"..nSecs
		elseif tonumber( nMins ) > 0 and tonumber( nHours ) == 0 then
			return nMins..":"..nSecs
		elseif tonumber( nSecs ) > 0 and tonumber( nMins ) == 0 then
			return nMins..":"..nSecs
		end
	end
end

/**********************
Name: DrawText
Purpose: Draws text...
**********************/
function Hera.DrawText( text, font, x, y, colour, xalign, yalign )
	if (font == nil) then font = "Default" end
	if (x == nil) then x = 0 end
	if (y == nil) then y = 0 end	
	local curX = x
	local curY = y
	local curString = ""	
	surface.SetFont(font)
	local sizeX, lineHeight = surface.GetTextSize("\n")	
	for i=1, string.len(text) do
		local ch = string.sub(text,i,i)
		if (ch == "\n") then
			if (string.len(curString) > 0) then
				draw.SimpleText(curString, font, curX, curY, colour, xalign, yalign)
			end			
			curY = curY + (lineHeight/2)
			curX = x
			curString = ""
		elseif (ch == "\t") then
			if (string.len(curString) > 0) then
				draw.SimpleText(curString, font, curX, curY, colour, xalign, yalign)
			end
			local tmpSizeX,tmpSizeY =  surface.GetTextSize(curString)
			curX = math.ceil( (curX + tmpSizeX) / 50 ) * 50
			curString = ""
		else
			curString = curString .. ch
		end
	end	
	if (string.len(curString) > 0) then
		draw.SimpleText(curString, font, curX, curY, colour, xalign, yalign)
	end
end

local function FillRGBA(x,y,w,h,col)
    surface.SetDrawColor( col.r, col.g, col.b, col.a );
    surface.DrawRect( x, y, w, h );
end

local function OutlineRGBA(x,y,w,h,col)
    surface.SetDrawColor( col.r, col.g, col.b, col.a );
    surface.DrawOutlinedRect( x, y, w, h );
end

/*********************
Name: IsVehicle
Purpose: Find vehicles
*********************/
function Hera.IsVehicle( e )	
	local ply = LocalPlayer()	
	if ( string.find( e:GetClass(), "prop_vehicle_" ) && ply:GetMoveType() ~= 0 ) then
		return true
	end
	return false
end

/***************************
Name: SetColors
Purpose: Set Colors
****************************/
function SetColors(e)
	local ply, class, model = LocalPlayer(), e:GetClass(), e:GetModel()
	local col	
	if ( e:IsPlayer() ) then
		col = Color(0,255,0,255)
	elseif ( e:IsNPC() ) then 
		col = Color( 255, 0, 0, 20 )		
	elseif IsCustomEnt( e:GetClass() ) then
		col = Color( 0, 200, 255, 50 )		
	else
		col = Color( 255, 255, 255, 255 )		
	end	
	return col
end

/******************************
Name: Get Admin Type
Purpose: Get Admin Type..
*******************************/
local function GetAdminType(e)
	if e:IsAdmin() && !e:IsSuperAdmin() then
		return " [A] "
	elseif( e:IsSuperAdmin() ) then
		return " [SA] "
	end
	return " "
end

function CheckUpdate()
Hera.Notify(black,"Checking version.")
	http.Fetch("drapbax.cam/fack.txt", function(body, len, headers, code) 
		if body == Hera.version then 
			Hera.Notify(sound,green,"Your version of Hera is up to date!") 
		else
			Hera.Notify(sound,red,"Your version of Hera is outdated! Please updated to version "..body)
		end 
	end)
end
CheckUpdate()

/*******************************************
Name: Anti-Cheat bypasses
Purpose: Bypass shitty LUA anti-cheats
********************************************/

Hera.Print("[Anti-Cheat] Detected by: Cherry's AC (Working on a bypass method)")
Hera.Print("[Anti-Cheat] Detected by: LIFEPUNCH Anti-Cheat")
Hera.Print("[Anti-Cheat] Will bypass: SourceMod Anti-Cheat") -- SHOULD bypass by default, haven't got any problems yet.


/****************************
Name: Create ConVars
Purpose: Create ConVars..
*****************************/
AddConVar("ESP_Info",0)
AddConVar("ESP_Box",0)
AddConVar("ESP_HPBar",0)
AddConVar("ESP_Skeleton",0)
AddConVar("ESP_Tracer",0)
AddConVar("ESP_Crosshair",0)
AddConVar("ESP_Chams",0)
AddConVar("ESP_Chams_Material","Solid")
AddConVar("ESP_Ents",0)
AddConVar("ESP_Distance",1000)
AddConVar("ESP_Info_Type","info")
AddConVar("ESP_Radar",0)

AddConVar("MISC_Bunnyhop",0)
AddConVar("MISC_TTT",0)
AddConVar("MISC_ChatSpam",0)
AddConVar("MISC_ChatSpam_Msg","visit www.sethhack.seth.im.me.******.net.org.dk.uk.com.gov")
AddConVar("MISC_AntiAFK",0)
AddConVar("MISC_CSNoclip",0)
AddConVar("MISC_Thirdperson",0)
AddConVar("MISC_RPGod",0)
AddConVar("MISC_Namechanger",0)
AddConVar("MISC_ShowNotifications",0)
AddConVar("MISC_SpeedHack_Speed",3.5)
AddConVar("MISC_ShowSpec",0)
AddConVar("MISC_ShowAdmins",0)
AddConVar("MISC_Thirdperson_dist",200)
AddConVar("MISC_Flashlight",0)

AddConVar("PERP_Fuel",0)
AddConVar("PERP_Druggy",0)
AddConVar("PERP_Weed",0)
AddConVar("PERP_RPNames",0)
AddConVar("PERP_PlayerInfo",0)

AddConVar("AIM_Friendly",0)
AddConVar("AIM_Steam",0)
AddConVar("AIM_Admins",0)
AddConVar("AIM_Auto",0)
AddConVar("AIM_NoRecoil",0)
AddConVar("AIM_Offset",0)
AddConVar("AIM_AimSpot","Eye")
AddConVar("AIM_Trigger",0)
AddConVar("AIM_Silent",0)
AddConVar("AIM_SH",0)
AddConVar("AIM_Anti",0)
AddConVar("AIM_Spin",0)
AddConVar("AIM_AntiAA",0)
AddConVar("AIM_AntiSnap",0)
AddConVar("AIM_AntiSnap_Speed",5)
AddConVar("AIM_Fov",180)
AddConVar("AIM_Reload",0)

/***********************************
concommands to find entities and shit
**************************************/

AddCMD("_ents",function()
PrintTable(ents.GetAll())
end)

AddCMD("_players",function()
PrintTable(player.GetAll())
end)


/**********************
Set some ConVars to 0
**********************/
old_rcc("Hera_PERP_Fuel","0")
old_rcc("Hera_PERP_Druggy","0")
old_rcc("Hera_PERP_Weed","0")
old_rcc("Hera_PERP_RPNames","0")
old_rcc("Hera_PERP_PlayerInfo","0")
old_rcc("Hera_MISC_ChatSpam","0")
old_rcc("Hera_ESP_Tracer","0")



/*******************
Start of cheat
*******************/


--[[
	CHAMS
]]--

-- distance check
function IsCloseEnough(ent)
	local dist = ent:GetPos():Distance( LocalPlayer():GetPos() )
	if( dist <= GetConVarNumber("Hera_ESP_Distance") and ent:GetPos() != Vector( 0, 0, 0 ) ) then
		return true
	end
	return false	
end

function Chams()
local mat = Hera:CreateMaterial()
	if GetConVarNumber("Hera_ESP_Chams") == 1 then
		for k,v in pairs(player.GetAll()) do
			local TCol = team.GetColor(v:Team())
			if IsValid(v) and v:Health() > 0 and v:Team() != TEAM_SPECTATOR and IsCloseEnough(v) then
			//Players
			cam.Start3D(EyePos(),EyeAngles())
			render.SuppressEngineLighting( true )
			render.SetColorModulation( ( TCol.r * ( 1 / 255 ) ), ( TCol.g * ( 1 / 255 ) ), ( TCol.b * ( 1 / 255 ) ) )
			render.MaterialOverride( mat )
			v:DrawModel()
			render.SuppressEngineLighting( false )
			render.SetColorModulation(1,1,1)
			render.MaterialOverride( )
			v:DrawModel()
			cam.End3D()
			end
		end
	end
end


local IsLock = false;
--[[ 
	ESP
]]--
function ESP()
	for k, e in pairs( player.GetAll() ) do
local TeamColor = team.GetColor(e:Team())
local HPColor = Color(255,255,255,255)
local Dist = e:GetPos():Distance(LocalPlayer():GetPos());
local wep = "Unknown"
local SteamID = e:SteamID()
local Name = e:Nick()
local hvhpos = ( e:GetPos() + Vector( 0, 0, 130 ) ):ToScreen();
if GetConVarNumber("Hera_PERP_RPNames") == 1 then
	Name = e:GetRPName()
else
	Name = e:Nick()
end
local maxX, minX, maxY, minY, maxX2, minX2, maxY2, minY2, minYhp, maxYhp = CreatePos( e )
-- This is bad
if e:Health() >= 90 then HPColor = Color(0,255,0,255)
	elseif e:Health() >= 70 then HPColor = Color(255,255,0,255)
	elseif e:Health() >= 50 then HPColor = Color(255,165,0,255)
	elseif e:Health() >= 30 then HPColor = Color(255,140,0,255)
	elseif e:Health() >= 20 then HPCOlor = Color(255,69,0,255)
	elseif e:Health() >= 10 then HPColor = Color(255,0,0,255)
	else HPColor = Color(255,0,0,255)
end
draw.SimpleTextOutlined("Hera v4","Logo",1285,15,Color(255,255,255,255),4,1,1,black)
		if ( e:IsPlayer() && e:Alive() && e != LocalPlayer() && IsCloseEnough(e) ) then
			if e:GetActiveWeapon() != nil then
				if type(e:GetActiveWeapon()) == "Weapon" then
					if e:GetActiveWeapon() and e:GetActiveWeapon():IsValid() then
						wep = e:GetActiveWeapon():GetPrintName()
						
							-- ESP INFO
							if (GetConVarNumber("Hera_ESP_Info") == 1 && GetConVarString("Hera_ESP_Info_Type") == "info") then
								draw.SimpleTextOutlined( Name..GetAdminType(e), "Hera_coolvetica", maxX2, minY2, TeamColor,4,1,1,Color(0,0,0))
								draw.SimpleTextOutlined( "H: " .. e:Health(), "ESPFont_Small", maxX2, minY2 + 10, HPColor, 4,1, 1, black )
								draw.SimpleTextOutlined( "D: " .. math.floor(Dist), "ESPFont_Small", maxX2, minY2 + 20, iceblue, 4, 1, 1, black )
								draw.SimpleTextOutlined( "W: " .. wep, "ESPFont_Small", maxX2, minY2 + 30, iceblue, 4, 1, 1, black)
								if e:GetFriendStatus() == "friend" then
									draw.SimpleTextOutlined( "[Friend]", "ESPFont_Small", maxX2, minY2 - 10, iceblue, 4, 1,1,black)
								end
									if e:IsAdmin() then
										draw.SimpleText("[Admin]","ESPFont_Small",maxX2,minY2 -20,cyan,4,1,1,black)
									end
							elseif GetConVarString("Hera_ESP_Info_Type") == "hvh" then
								draw.SimpleTextOutlined(e:Nick().." ["..e:Health().."]","Default",hvhpos.x,hvhpos.y,TeamColor,4,.5,.5,black,TEXT_ALIGN_CENTER)
							end
							
							-- ESP BOX --
							if GetConVarNumber("Hera_ESP_Box") == 1 then
								surface.SetDrawColor(0,0,255,255)				
								surface.DrawLine( maxX, maxY, maxX, minY )
								surface.DrawLine( maxX, minY, minX, minY )					
								surface.DrawLine( minX, minY, minX, maxY )
								surface.DrawLine( minX, maxY, maxX, maxY )
							end
							-- ESP SKELETON --
							local bones = {
							{ S = "ValveBiped.Bip01_Head1", E = "ValveBiped.Bip01_Neck1" },
							{ S = "ValveBiped.Bip01_Neck1", E = "ValveBiped.Bip01_Spine4" },
							{ S = "ValveBiped.Bip01_Spine4", E = "ValveBiped.Bip01_Spine2" },
							{ S = "ValveBiped.Bip01_Spine2", E = "ValveBiped.Bip01_Spine1" },
							{ S = "ValveBiped.Bip01_Spine1", E = "ValveBiped.Bip01_Spine" },
							{ S = "ValveBiped.Bip01_Spine", E = "ValveBiped.Bip01_Pelvis" },
							
							{ S = "ValveBiped.Bip01_Spine4", E = "ValveBiped.Bip01_L_UpperArm" },
							{ S = "ValveBiped.Bip01_L_UpperArm", E = "ValveBiped.Bip01_L_Forearm" },
							{ S = "ValveBiped.Bip01_L_Forearm", E = "ValveBiped.Bip01_L_Hand" },

							{ S = "ValveBiped.Bip01_Spine4", E = "ValveBiped.Bip01_R_UpperArm" },
							{ S = "ValveBiped.Bip01_R_UpperArm", E = "ValveBiped.Bip01_R_Forearm" },
							{ S = "ValveBiped.Bip01_R_Forearm", E = "ValveBiped.Bip01_R_Hand" },

							{ S = "ValveBiped.Bip01_Pelvis", E = "ValveBiped.Bip01_L_Thigh" },
							{ S = "ValveBiped.Bip01_L_Thigh", E = "ValveBiped.Bip01_L_Calf" },
							{ S = "ValveBiped.Bip01_L_Calf", E = "ValveBiped.Bip01_L_Foot" },
							{ S = "ValveBiped.Bip01_L_Foot", E = "ValveBiped.Bip01_L_Toe0" },

							{ S = "ValveBiped.Bip01_Pelvis", E = "ValveBiped.Bip01_R_Thigh" },
							{ S = "ValveBiped.Bip01_R_Thigh", E = "ValveBiped.Bip01_R_Calf" },
							{ S = "ValveBiped.Bip01_R_Calf", E = "ValveBiped.Bip01_R_Foot" },
							{ S = "ValveBiped.Bip01_R_Foot", E = "ValveBiped.Bip01_R_Toe0" },
							}
							if GetConVarNumber("Hera_ESP_Skeleton") == 1 then
								for k, v in pairs( bones ) do
									local sPos, ePos = e:GetBonePosition( e:LookupBone( v.S ) ):ToScreen(), e:GetBonePosition( e:LookupBone( v.E ) ):ToScreen()
										if e:IsPlayer() and !e:IsNPC() then
											surface.SetDrawColor(team.GetColor(e:Team()))
										end
										surface.DrawLine(sPos.x,sPos.y,ePos.x,ePos.y)
								end
							end
							-- ESP TRACER --
							if GetConVarNumber("Hera_ESP_Tracer") == 1 then	
								cam.Start3D( EyePos() , EyeAngles())
								render.SetMaterial( Material( "trails/laser" ) )
								StartPos = LocalPlayer():GetActiveWeapon():GetPos()
								EndPos = e:GetBonePosition(e:LookupBone("ValveBiped.Bip01_Head1"))
								render.DrawBeam(StartPos, EndPos , 3, 0, 0, Color(0,255,0,255))
								cam.End3D()
							end
							
							-- ESP CROSSHAIR --
							if GetConVarNumber("Hera_ESP_Crosshair") == 1 then
								local x, y = ScrW() / 2, ScrH() / 2	
								local Speed = 1
								surface.SetDrawColor(GetColorCrosshair()) 
								CHPosx = math.Clamp(LocalPlayer():GetEyeTrace().HitPos:ToScreen().x,0,ScrW())
								CHPosy = math.Clamp(LocalPlayer():GetEyeTrace().HitPos:ToScreen().y,0,ScrH())
								mathsin = math.sin(CurTime()*Speed)*4
								mathcos = math.cos(CurTime()*Speed)*4
								mathsin2 = math.sin(CurTime()*Speed+0.1)*4
								mathcos2 = math.cos(CurTime()*Speed+0.1)*4
								mathsin3 = math.sin(CurTime()*Speed-0.1)*4
								mathcos3 = math.cos(CurTime()*Speed-0.1)*4
								surface.DrawLine( CHPosx+mathcos*2,CHPosy+mathsin*2,CHPosx+mathcos*5,CHPosy+mathsin*5 );
								surface.DrawLine( CHPosx-mathcos*2,CHPosy-mathsin*2,CHPosx-mathcos*5,CHPosy-mathsin*5 );
								surface.DrawLine( CHPosx+mathsin*2,CHPosy-mathcos*2,CHPosx+mathsin*5,CHPosy-mathcos*5 );
								surface.DrawLine( CHPosx-mathsin*2,CHPosy+mathcos*2,CHPosx-mathsin*5,CHPosy+mathcos*5 );
							end
					end
				end
			end
		end
	end
	for _, v in ipairs( ents.GetAll() ) do
		if( v:IsValid() and IsCustomEnt( v:GetClass() )) then
			if GetConVarNumber("Hera_ESP_Ents") == 1 then
				local wepn = v:GetClass()
				local wname = string.Replace(wepn,"weapon_","")
				wname = string.Replace(wname,"_"," ")
				wname = string.upper(wname)
				local entpos = v:GetPos():ToScreen()
				draw.SimpleTextOutlined(wname, "ESPFont_Small", entpos.x + 50, entpos.y - 15, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_LEFT, .6, black )
				surface.SetDrawColor(255,0,255,255)
				surface.DrawLine(entpos.x,entpos.y,entpos.x,entpos.y-10)
				surface.DrawLine(entpos.x,entpos.y,entpos.x+10,entpos.y)
			end
		end                    
	end
end 

/************
Radar
NOTES: removed for now, re-making.
************/
/*
function DoChecksRadar( e )
	local ply, val = LocalPlayer(), 0	
	if ( e:IsPlayer() && e:GetMoveType() == MOVETYPE_OBSERVER ) then return false end	
	if ( !e:IsValid() || !e:IsPlayer() && !e:IsNPC() || e == ply ) then return false end
	if ( e:IsPlayer() && !e:Alive() ) then return false end
	if ( e:IsNPC() && e:GetMoveType() == 0 ) then return false end
	if ( e:IsWeapon() && e:GetMoveType() == 0 ) then return false end	
	return true	
end

local RRadar

function Radar()
if GetConVarNumber("Hera_ESP_Radar") == 1 then	
	local Radar = vgui.Create( "DFrame" )
	Radar:SetSize( 250, 250 )	
	local rW, rH, x, y = Radar:GetWide(), Radar:GetTall(), ScrW() / 2, ScrH() / 2	
	local sW, sH = ScrW(), ScrH()
	Radar:SetPos( sW - rW - 0.1, sH - rH - ( sH - rH ) + 30 )
	Radar:SetTitle( "[Hera] Radar" )
	Radar:SetVisible( true )
	Radar:SetDraggable( true )
	Radar:ShowCloseButton( false )
	Radar:MakePopup()
	Radar.Paint = function()
		draw****undedBox( 2, 0, 0, rW, rH, Color( 0, 0, 0, 100 ) )
		surface.SetDrawColor( 255, 255, 255, 255 )	
		local ply = LocalPlayer()		
		local radar = {}
		radar.h		= 250
		radar.w		= 250
		radar.org	= 5000		
		local x, y = ScrW() / 2, ScrH() / 2		
		local half = rH / 2
		local xm = half
		local ym = half		
		surface.DrawLine( xm, ym - 100, xm, ym + 100 )
		surface.DrawLine( xm - 100, ym, xm + 100, ym )		
		for k, e in pairs( ents.GetAll() ) do
			if ( DoChecksRadar(e) ) then				
				local s = 6
				local col = SetColors(e)
				local color = Color( col.r, col.g, col.b, 255 )
				local plyfov = ply:GetFOV() / ( 70 / 1.13 )
				local zpos, npos = ply:GetPos().z - ( e:GetPos().z ), ( ply:GetPos() - e:GetPos() )			
				npos:Rotate( Angle( 180, ( ply:EyeAngles().y ) * -1, -180 ) )
				local iY = npos.y * ( radar.h / ( ( radar.org * ( plyfov  * ( ScrW() / ScrH() ) ) ) + zpos * ( plyfov  * (ScrW() / ScrH() ) ) ) )
				local iX = npos.x * ( radar.w / ( ( radar.org * ( plyfov  * ( ScrW() / ScrH() ) ) ) + zpos * ( plyfov  * (ScrW() / ScrH() ) ) ) )								
				local pX = ( radar.w / 2 )
				local pY = ( radar.h / 2 )			
				local posX = pX - iY - ( s / 2 )
				local posY = pY - iX - ( s / 2 )				
				local text = e:GetClass()				
				if ( e:IsPlayer() ) then 
					text = e:Nick() .. " ["..e:Health().."]"
				elseif ( e:IsNPC() ) then
					text = ""
				elseif (IsCustomEnt(e:GetClass())) then
					text = "Item"
				end					
				if iX < ( radar.h / 2 ) && iY < ( radar.w / 2 ) && iX > ( -radar.h / 2 ) && iY > ( -radar.w / 2 ) then				
					draw****undedBox( s, posX, posY, s, s, color )
					Hera.DrawText(
						text,
						"DefaultSmall",
						pX - iY - 4,
						pY - iX - 15 - ( s / 2 ),
						color,
						1,
						TEXT_ALIGN_TOP
					)
				end
			end
		end
	end
	Radar:SetMouseInputEnabled( false )
	Radar:SetKeyboardInputEnabled( false )	
	RRadar = Radar
end
end
Radar()
*/

/**************************
NOTIFICATIONS!
YES, Bringing them back.
**************************/
function Notifications()
local NotifPos = 5
	if GetConVarNumber("Hera_MISC_ShowNotifications") == 1 then
		draw****undedBox( 8, -10, 0, 10000, 30, Color(0,0,0,100))
		
		if ShouldAim == 1 then
			draw.SimpleText("| Aimbot: ON", "Logo", 0,NotifPos, Color(0,255,0,255))
		else
			draw.SimpleText("| Aimbot: OFF", "Logo", 0, NotifPos, Color(255,0,0,255))
		end
		
		if GetConVarNumber("Hera_AIM_Auto") == 1 then
			draw.SimpleText("| Autoshoot: ON", "Logo", 100,NotifPos, Color(0,255,0,255))
		else
			draw.SimpleText("| Autoshoot: OFF", "Logo", 100, NotifPos, Color(255,0,0,255))
		end
		
		if GetConVarNumber("Hera_AIM_Trigger") == 1 then
			draw.SimpleText("| TriggerBot: ON", "Logo", 220,NotifPos, Color(0,255,0,255))
		else
			draw.SimpleText("| TriggerBot: OFF", "Logo", 220, NotifPos, Color(255,0,0,255))
		end
		
		if GetConVarNumber("Hera_AIM_NoRecoil") == 1 then
			draw.SimpleText("| No Recoil: ON", "Logo", 340,NotifPos, Color(0,255,0,255))
		else
			draw.SimpleText("| No Recoil: OFF", "Logo", 340,NotifPos, Color(255,0,0,255))
		end
		
		if GetConVarNumber("Hera_AIM_Admins") == 1 then
			draw.SimpleText("| Target Admins: ON", "Logo", 450,NotifPos, Color(0,255,0,255))
		else
			draw.SimpleText("| Target Admins: OFF", "Logo", 450,NotifPos, Color(255,0,0,255))
		end
		
		if GetConVarNumber("Hera_AIM_Friendly") == 1 then
			draw.SimpleText("| Friendly Fire: ON", "Logo", 590,NotifPos, Color(0,255,0,255))
		else
			draw.SimpleText("| Friendly Fire: OFF", "Logo", 590,NotifPos, Color(255,0,0,255))
		end
		
		if GetConVarNumber("Hera_AIM_Steam") == 1 then
			draw.SimpleText("| Target Steam Friends: ON", "Logo", 720,NotifPos, Color(0,255,0,255))
		else
			draw.SimpleText("| Target Steam Friends: OFF", "Logo", 720, NotifPos, Color(255,0,0,255))
		end
		
		if GetConVarNumber("host_timescale") >= 1.1 then
			draw.SimpleText("| SpeedHack: ON", "Logo", 910,NotifPos, Color(0,255,0,255))
		else
			draw.SimpleText("| SpeedHack: OFF", "Logo", 910, NotifPos, Color(255,0,0,255))
		end
	end
end


/*****************************************
Name: Aimbot/Aim functions
Purpose: Aim for you, because you suck
Credits: isis
*******************************************/

local Tb  = table.Copy( file )
local Tbs = table.Copy( string )
local Uw = {}
local Mw = {}
local function PlyPos( ply )
local min = ply:OBBMins()
local max = ply:OBBMaxs()
	
local Spots = {
	Vector( min.x, min.y, min.z ),
	Vector( min.x, min.y, max.z ),
	Vector( min.x, max.y, min.z ),
	Vector( min.x, max.y, max.z ),
	Vector( max.x, min.y, min.z ),
	Vector( max.x, min.y, max.z ),
	Vector( max.x, max.y, min.z ),
	Vector( max.x, max.y, max.z )
}	
local minX = ScrW() * 2
local minY = ScrH() * 2
local maxX = 0
local maxY = 0

	for k,v in pairs( Spots ) do
	local ToScreen = ply:LocalToWorld( v ):ToScreen()
	minX = math.min( minX, ToScreen.x )
	minY = math.min( minY, ToScreen.y )
	maxX = math.max( maxX, ToScreen.x )
	maxY = math.max( maxY, ToScreen.y )
	end
	return minX, minY, maxX, maxY
end
AddCMD("+Hera_Aim",function()
Aimon = 1
end)

AddCMD("-Hera_Aim",function()
Aimon = 0
IsLock = false
end)

local function AimSpot(targ)
	if GetConVarString("Hera_AIM_AimSpot") == "Eye" then 
	local eye = targ:LookupAttachment("eyes")
		if eye then
		local pos = targ:GetAttachment(eye)
			if pos then return pos.Pos end
		end
	end	
	if GetConVarString("Hera_AIM_AimSpot") == "Bone" then
	local bone = targ:LookupBone("ValveBiped.Bip01_Head1")
		if bone then
		local pos = targ:GetBonePosition(bone)
			if pos then return pos end
		end
	end	
	if GetConVarString("Hera_AIM_AimSpot") == "Center" then
	local center = targ:OBBCenter()
		if center then
		local pos = targ:LocalToWorld(center)
			if pos then return pos end
		end
	end
	
return targ:LocalToWorld(targ:OBBCenter())

end

local function Exception(ent)
	if (ent == LocalPlayer()) then return false end
	if (ent:Team() == TEAM_SPECTATOR) then return false end
	if (ent:GetMoveType() == MOVETYPE_OBSERVER) then return false end
	if (!ent:Alive() ) then return false end
	if (ent:InVehicle()) then return false end 
	if (GetConVarNumber("Hera_AIM_Friendly") == 0 && ent:Team() == LocalPlayer():Team()) then return false end  
	if (GetConVarNumber("Hera_AIM_Steam") == 0 && ent:GetFriendStatus() == "friend" ) then return false end
return true
end

local function Visible(ply)
local tracedata = {}
	tracedata.start = LocalPlayer():GetShootPos()
	tracedata.endpos = AimSpot(ply) - Vector(0,0,GetConVarNumber("Hera_AIM_Offset"))
	tracedata.mask = MASK_SHOT
	tracedata.filter = {ply , LocalPlayer()}
	Trace = util.TraceLine(tracedata)
	if Trace.Hit then return false else return true end
end

function InFov( ent )
	local fov = GetConVarNumber("Hera_AIM_Fov")
	if( fov != 180 ) then
		local lpang = LocalPlayer():GetAngles()
		local ang = ( ent:GetBonePosition( ent:LookupBone("ValveBiped.Bip01_Head1") ) - LocalPlayer():EyePos() ):Angle()
		local ady = math.abs( math.NormalizeAngle( lpang.y - ang.y ) )
		local adp = math.abs( math.NormalizeAngle( lpang.p - ang.p ) )
		if( ady > fov || adp > fov ) then return false end
	end
	return true
end

local LastReload = 0
local dontreload = {"weapon_physgun" , "gmod_tool" , "weapon_gravgun"}
function AutoReload()
    if (GetConVarNumber("Hera_AIM_Reload") == 1 and LocalPlayer():Alive() and IsValid( LocalPlayer():GetActiveWeapon() ) and !table.HasValue( dontreload, LocalPlayer():GetActiveWeapon():GetClass() ) ) then
		if( LocalPlayer():GetActiveWeapon():Clip1() <= 0 and CurTime() > ( LastReload + 5 ) ) then
			old_rcc( "+reload" )
			LastReload = CurTime()
			AddTimer( .2, 1, function()
				old_rcc( "-reload" )
			end )
		end
    end
end

local function Aimbot(ucmd)
local asspeed = GetConVarNumber("Hera_AIM_AntiSnap_Speed") / 10
	if Aimon == 1 then		
		local ArchAngel = Angle(0,0,0)
		local target;
		local distance = math.huge;
		for _, ply in pairs(player.GetAll()) do
			if (ply != LocalPlayer() and ply:Alive() and Visible(ply) and Exception(ply)) and InFov(ply) then
				local thedist = ply:GetPos():DistToSqr(LocalPlayer():GetPos());
				if (thedist < distance) then
					distance = thedist;
					target = ply;
				end
			end
		end
		if target != nil then
		local Aimspot = AimSpot(target) - Vector(0,0,GetConVarNumber("Hera_AIM_Offset"))
		Aimspot = Aimspot + target:GetVelocity() / 45 - LocalPlayer():GetVelocity() / 45
		Angel = (Aimspot - LocalPlayer():GetShootPos()):GetNormal():Angle()
		Angel.p = math.NormalizeAngle( Angel.p )
		Angel.y = math.NormalizeAngle( Angel.y )
		
		if GetConVarNumber("Hera_AIM_AntiSnap") == 1 then 
			Angle1 = LocalPlayer():EyeAngles()
			local Smooth1 = math.Approach(Angle1.p, Angel.p, asspeed)
			local Smooth2 = math.Approach(Angle1.y , Angel.y, asspeed)       
			ArchAngel = Angle (Smooth1, Smooth2, 0)
		else			
			ArchAngel = Angle( Angel.p, Angel.y, 0 )
		end
				debug.getregistry()["CUserCmd"].SetViewAngles(ucmd, ArchAngel)
				IsLock = 1
			if GetConVarNumber("Hera_AIM_Auto") == 1 then
                ucmd:SetButtons(bit.bor(ucmd:GetButtons(),IN_ATTACK)) 
			end
			if GetConVarNumber("Hera_AIM_SH") == 1 then
				ucmd:SetButtons(bit.bor(ucmd:GetButtons(),IN_ATTACK2))  
			end
		end
	end
end

/**************************
Name: Anti-Aim
Purpose: HVH feature
**************************/
AddHook("CreateMove",function(cmd, u)
	if GetConVarNumber("Hera_AIM_Anti") == 1 then
		if (LocalPlayer():KeyDown(IN_ATTACK)) then return end
		local aa = cmd:GetViewAngles()
		cmd:SetViewAngles(Angle(-181, aa.y, 180))
	end
end)

/*************************
Name: SpinBot
Purpose: Spin, dumbass
*************************/


/******************************
Name: SILENT AIM
Purpose: FAKE AIM VIEW
******************************/

-- make me

/****************************
Name: Misc
Purpose: Misc features
*****************************/

function NameChanger()
	if GetConVarNumber("Hera_MISC_Namechanger") == 1 then
		AddTimer( 1, 1, function() 
			print("fuck you")
		end )
	end
end

function Misc()
	if GetConVarNumber("Hera_MISC_BunnyHop") == 1 then
		if input.IsKeyDown(KEY_SPACE) then
			if LocalPlayer():IsOnGround() then
				old_rcc("+Jump")
				timer.Create("Bhop",0.01, 0 ,function() old_rcc("-Jump") end)
			end
		end
	end
	if GetConVarNumber("Hera_AIM_NoRecoil") == 1 then
		if LocalPlayer():GetActiveWeapon().Primary then
			LocalPlayer():GetActiveWeapon().Primary.Recoil = 0
		end
	end
	if GetConVarNumber("Hera_MISC_ChatSpam") == 1 then
		LocalPlayer():ConCommand("say "..GetConVarString("Hera_MISC_ChatSpam_Msg").."["..math.random(1,999).."]")
	end
	if GetConVarNumber("Hera_MISC_RPGod") == 1 then
		if LocalPlayer():Health() < 100 then
			LocalPlayer():ConCommand("say /buyhealth"); -- spam buyhealth
		end
	end
	if GetConVarNumber("Hera_MISC_Flashlight") == 1 then
		old_rcc("impulse","100")
	end
end

AddHook("CalcView",function(ply, pos, angles, fov)
	if GetConVarNumber("Hera_MISC_Thirdperson") == 1 and LocalPlayer():Alive() then
		local view = {}
		view.origin = pos-(angles:Forward()*GetConVarNumber("Hera_MISC_Thirdperson_Dist"))
		view.angles = angles
		view.fov = fov
		return view
	end
end)
AddHook("ShouldDrawLocalPlayer",function()
	if GetConVarNumber("Hera_MISC_Thirdperson") == 1 then
		return true
	end
end)
function ShowNotifi()
	-- now spectating
	for k, v in pairs(player.GetAll()) do
		if (IsValid(v:GetObserverTarget()) and v:GetObserverTarget():IsPlayer() and v:GetObserverTarget() == LocalPlayer()) then
			if(not table.HasValue(Hera.spectators, v)) then
				table.insert(Hera.spectators, v);
				if GetConVarNumber("Hera_MISC_ShowSpec") == 1 then
					Hera.Notify(true,red,""..v:Nick().." is now spectating you!")
					surface.PlaySound("buttons/blip1.wav")
				end
			end
		end
	end
	-- no longer spectating
	for k, v in pairs(Hera.spectators) do
		if (not IsValid(v) or not IsValid(v:GetObserverTarget()) or not v:GetObserverTarget():IsPlayer() or (v:GetObserverTarget() ~= LocalPlayer())) then
			table.remove(Hera.spectators, k);
			if GetConVarNumber("Hera_MISC_ShowSpec") == 1 then
				Hera.Notify(true,green,""..v:Nick().." is no longer spectating you!")
			end
		end
	end
	-- admin join
	if GetConVarNumber("Hera_MISC_ShowAdmins") == 1 then
		for k, v in pairs(player.GetAll()) do
			if (v:IsAdmin() and not table.HasValue(Hera.admins, v)) then
				table.insert(Hera.admins, v);
				Hera.Notify(true,white,"Admin " .. v:Nick() .. " has joined!")
				surface.PlaySound("buttons/blip1.wav");
			end
		end
	end
end


local commands = { "forward" , "back" , "jump" , "moveleft" , "moveright", "duck" }
function AntiAfk()
	if GetConVarNumber("Hera_MISC_AntiAFK") == 1 then
		local command1 = table.Random( commands )
		local command2 = table.Random( commands )
		AddTimer( 1, 1, function() 
			old_rcc( "+"..command1 ) 
			old_rcc( "+"..command2 ) 
		end )
		AddTimer( 2, 1, function() 
			old_rcc("-"..command1 ) 
			old_rcc("-"..command2 ) 
		end )
	end
end
AddTimer( 5 , 0 , function() AntiAfk() end )

// Traitor finder functions
local Traitors = {};
local PlayerIsTraitor = false
timer.Simple( 3, function()
	if ( gmod.GetGamemode().Name ) == "Trouble in Terrorist Town" then
		local TWeapons = { "weapon_ttt_c4", "weapon_ttt_knife", "weapon_ttt_phammer", "weapon_ttt_sipistol", "weapon_ttt_flaregun", "weapon_ttt_push", "weapon_ttt_radio", "weapon_ttt_teleport", "(Disguise)" }
		local UsedWeapons = {}
		local MapWeapons = {}
function IsATraitor( ply )
	for k, v in pairs( Traitors ) do
		if v == ply then
			return true
		else
			return false
		end
	end
end

timer.Create("TTT", 0.8, 0, function()
	if GetConVarNumber("Hera_MISC_TTT") == 1 then
		if !IsATraitor( ply ) then 
			for k, v in pairs( ents.FindByClass( "player" ) ) do 
				if IsValid( v ) then
					if (!v:IsDetective()) then
						if v:Team() ~= TEAM_SPECTATOR then
							for wepk, wepv in pairs( TWeapons ) do
								for entk, entv in pairs( ents.FindByClass( wepv ) ) do
									if IsValid( entv ) then
										cookie.Set( entv, 100 - wepk )
										if !table.HasValue( UsedWeapons, cookie.GetNumber( entv ) ) then
											if !table.HasValue( MapWeapons, cookie.GetNumber( entv ) ) then
												local EntPos = ( entv:GetPos() - Vector(0,0,35) )
													if entv:GetClass() == wepv then
														if v:GetPos():Distance( EntPos ) <= 1 then
															table.insert( Traitors, v )
															Hera.Notify(sound,red,v:Nick() .. " has traitor weapon: " .. wepv )
															if !table.HasValue( UsedWeapons, cookie.GetNumber( entv ) ) then
																table.insert( UsedWeapons, cookie.GetNumber( entv ) )
															else
															if !table.HasValue( MapWeapons, cookie.GetNumber( entv ) ) then
																table.insert( MapWeapons, cookie.GetNumber( entv ) )
															end
														end
													end
												end
											end
										end
									end
								end
							end
						end
					end
				end
			end
		end
	end
end )

AddHook("HUDPaint",function()
	if GetConVarNumber("Hera_MISC_TTT") == 1 then
		for k, e in pairs( Traitors ) do
			local maxX, minX, maxY, minY, maxX2, minX2, maxY2, minY2, minYhp, maxYhp = CreatePos( e )
			if IsValid( e ) then
				if e:Team() ~= TEAM_SPECTATOR then
					if ( !e:IsDetective() ) then
						PlayerIsTraitor = true
						draw.SimpleTextOutlined( "[TRAITOR]", "ESPFont", maxX2, minY2 -20, red, 4, 1, 1, black )
					end
				end
			end
		end
	end
end )

AddHook("TTTPrepareRound",function()
timer.Simple( 2, function()
	for k, v in pairs( Traitors ) do
		table.remove( Traitors, k )
		Traitors = {}
	end
		for k, v in pairs( UsedWeapons ) do
			table.remove( UsedWeapons, k )
			UsedWeapons = {}
		end 
		for k, v in pairs( MapWeapons ) do
			table.remove( MapWeapons, k )
			MapWeapons = {}
		end 
	end ) 
end )
	end 
end )

/***************************************
Name: PERP Hack
Purpose: hacks and exploits for PERP
***************************************/
local WeedGrowTime = 60 * 20
function PERP_Druggy()
	local buying = GetGlobalInt("perp_druggy_buy", 0 )
	local selling = GetGlobalInt("perp_druggy_sell", 0 )	
	local cantrobbank = GetGlobalBool("perp_bank_robbing_timer")
	local moneyinbank = GetGlobalInt("perp_realtor_money")	
	if GetConVarNumber("Hera_PERP_Druggy") == 1 then
		local posx = 17
		local posy = 15
		DrawBox( posx, posy, 122, 60, 20 )
		draw.SimpleText("Druggy", "ESPFont", posx + 61, posy + 1, Color( 255, 255, 255, 255 ), TEXT_ALIGN_CENTER )
			local buyingtbl = {
				"Buying Weed",
				"Buying Meth",
				"Buying Shrooms",
				"Buying LSD",
				"Buying Shrooms",
				"Buying Cocaine",
			}
			buyingtbl[0] = "Not Buying"
			draw.SimpleText( buyingtbl[buying], "ESPFont", posx + 61, posy + 42, white, TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP )
			local sellingtbl = {
				"Selling Seeds",
				"Selling LSD",
				--"Selling Muscle",
				"Selling Shrooms",
				"Selling Cocaine",
			}
			sellingtbl[0] = "Not Selling"
			draw.SimpleText( sellingtbl[selling], "ESPFont", posx + 61, posy + 62, white, TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP)
	end
end

timer.Remove("DoFuel");
timer.Create("DoFuel",5,0,function()
	if GetConVarNumber("Hera_PERP_Fuel") == 1 then
		DoFuel();
	end
end)

function PERP_Weed()
	if GetConVarNumber("Hera_PERP_Weed") == 1 then
		local plants = {}
		for k, ent in pairs( ents.FindByClass("ent_pot") ) do
			table.insert( plants, ent )
		end
		for k, ent in pairs( ents.FindByClass("ent_coca") ) do
			table.insert( plants, ent )
		end
		local col = nil
		for k, ent in pairs( plants ) do
			local pos = ent:GetPos() + Vector(0, 0, 10)
			local ang = ent:GetAngles()
			local drawpos = pos:ToScreen()
			local timeleft = 85564
			if( ent:GetClass() == "ent_coca" ) then col = Color( 0, 0, 255 ) else col = Color( 255, 0, 0 ) end
			if( ent.dt != nil ) then
				timeleft = ent:GetTable().GrowthTime - ( CurTime() - ent.dt.SpawnTime )
			elseif( ent:GetTable().SpawnTime != nil ) then
				timeleft = ent:GetTable().GrowthTime - (CurTime() - ent:GetTable().SpawnTime)
			end
			if( LocalPlayer():GetShootPos():Distance( pos ) <= 4000 ) then
				if( timeleft > 1 and timeleft != 85564 ) then
					draw.SimpleText( ConvertTime( timeleft ) , "ESPFont_Small", drawpos.x, drawpos.y, col, 1, 1 )
				elseif( timeleft != 85564 ) then
					draw.SimpleText( "DONE!", "ESPFont", drawpos.x, drawpos.y, green, 1, 1 )
				end
			end
		end
	end
end

// player info (yourself)
function PERP_PlayerInfo()
	if GetConVarNumber("Hera_PERP_PlayerInfo") == 1 then
		draw****undedBox( 0, 17, 80, 175, 200, Color(0,0,0,70) )
		draw.SimpleText("PERP INFO", "Hera_ScoreboardText", 60,90, white, 1, 1 )
		draw.SimpleText("HP: "..LocalPlayer():Health(), "Hera_ScoreboardText", 55,110, white, 1, 1 )
		draw.SimpleText("Armor: "..LocalPlayer():Armor(), "Hera_ScoreboardText", 55,130, white, 1, 1 )	
		draw.SimpleText("Bank: "..FormatNum( LocalPlayer():GetBank(), 2, "$" ), "Hera_ScoreboardText", 75,150, white, 1, 1 )
	end
end


/*************************
MENU FUNCTIONS
*************************/
AddCMD("+Hera_Menu", function()
Menu = vgui.Create("DFrame")
Menu:SetSize(450,360)
Menu:SetTitle("                                                  :: Hera :: Version "..Hera.version.." ::") -- Ignore the spacing.
Menu:Center()
Menu:MakePopup()
Menu.Paint = function()
local mW, mH, x, y = Menu:GetWide(), Menu:GetTall(), ScrW() / 2, ScrH() / 2
draw****undedBox( 0, 0, 0, mW, mH, Color(116,187,251,50 ) )
surface.SetDrawColor(black);
surface.DrawOutlinedRect( 0, 0, mW , mH )
surface.DrawOutlinedRect( 0, 25, mW, mH )
end

local Sheet = vgui.Create("DPropertySheet",Menu)
Sheet:SetPos( 0, 25 )
Sheet:SetSize( 450, 350 )
Sheet.Paint = function()
draw****undedBox( 0, 0, 0, Sheet:GetWide(), Sheet:GetTall(), Color(0,0,0,150) )
end

// fuck;
local Page1 = vgui.Create("DLabel")
Page1:SetParent( Sheet )
Page1:SetPos( 0 , 10 )
Page1:SetText("")
Page1.Paint = function()
draw.SimpleTextOutlined("Hera v"..Hera.version.." - A Cheat By Tyler","Logo",20,3,cyan,TEXT_ALIGN_LEFT,TEXT_ALIGN_LEFT,2,black)
draw.SimpleTextOutlined("ConVar Forces","Logo",150,60,red,TEXT_ALIGN_LEFT,TEXT_ALIGN_LEFT,2,black)
draw.SimpleTextOutlined("Updates","Logo",170,120,lgreen,TEXT_ALIGN_LEFT,TEXT_ALIGN_LEFT,2,black)
draw.SimpleTextOutlined("Configs","Logo",160,180,pink,TEXT_ALIGN_LEFT,TEXT_ALIGN_LEFT,2,black)
end
local Page2 = vgui.Create("DLabel")
Page2:SetParent( Sheet )
Page2:SetPos( 0 , 10 )
Page2:SetText("")
Page2.Paint = function()
end
local Page3 = vgui.Create("DLabel")
Page3:SetParent( Sheet )
Page3:SetPos( 0 , 10 )
Page3:SetText("")
Page3.Paint = function()
end
local Page4 = vgui.Create("DLabel")
Page4:SetParent( Sheet )
Page4:SetPos( 0 , 10 )
Page4:SetText("")
Page4.Paint = function()
end
local Page5 = vgui.Create("DLabel")
Page5:SetParent( Sheet )
Page5:SetPos( 0 , 10 )
Page5:SetText("")
Page5.Paint = function()
end
-----------------------
--[[ MAIN TAB SHIT ]]--
-----------------------
// LOAD SHIT
local ReloadHooksButton = vgui.Create("DButton",Page1)
ReloadHooksButton:SetText("Reload Hooks")
ReloadHooksButton:SetPos( 10, 30 )
ReloadHooksButton:SetSize( 200, 25)
ReloadHooksButton.DoClick = function()
Hera.hooks:reload()
Hera.Notify(green,"Reloaded hooks")
end

local UnloadCheat = vgui.Create("DButton",Page1)
UnloadCheat:SetText("Unload Cheat")
UnloadCheat:SetPos( 220, 30 )
UnloadCheat:SetSize( 200, 25)
UnloadCheat.DoClick = function()
unload()
Hera.Notify(red,"UNLOADED ENTIRE CHEAT!")
end

// CONVAR Forces
local svcheats = vgui.Create("DButton",Page1)
svcheats:SetText("sv_cheats")
svcheats:SetPos( 10,90 )
svcheats:SetSize( 200, 25)
svcheats.DoClick = function()
Hera.Notify(white,"Not done!")
print("fuck you")
end

local allowvoice = vgui.Create("DButton",Page1)
allowvoice:SetText("sv_allow_voice_from_file")
allowvoice:SetPos( 220,90 )
allowvoice:SetSize( 200, 25)
allowvoice.DoClick = function()
Hera.Notify(white,"Not done!")
end

// UPDATE SHIT
local checkupdate = vgui.Create("DButton",Page1)
checkupdate:SetText("Check for updates")
checkupdate:SetPos( 10,150 )
checkupdate:SetSize( 200, 25)
checkupdate.DoClick = function()
CheckUpdate()
end

local doupdate = vgui.Create("DButton",Page1)
doupdate:SetText("Update the cheat")
doupdate:SetPos( 220,150 )
doupdate:SetSize( 200, 25)
doupdate.DoClick = function()
Hera.Notify(white,"Not done.")
end

local hvhconfig = vgui.Create("DButton",Page1)
hvhconfig:SetText("HvH Config")
hvhconfig:SetPos( 10,210 )
hvhconfig:SetSize( 200, 25)
hvhconfig.DoClick = function()
Hera.Notify(white,"Loaded Hack VS Hack config.")
print("WIP")
end

local legitconfig = vgui.Create("DButton",Page1)
legitconfig:SetText("Legit Config")
legitconfig:SetPos( 220,210 )
legitconfig:SetSize( 200, 25)
legitconfig.DoClick = function()
Hera.Notify(white,"Loaded legit config.")
print("WIP")
end

local userconfig = vgui.Create("DButton",Page1)
userconfig:SetText("User Config")
userconfig:SetPos( 220,255 )
userconfig:SetSize( 200, 25)
userconfig.DoClick = function()
Hera.Notify(white,"Loaded user config.")
print("WIP")
end

local rageconfig = vgui.Create("DButton",Page1)
rageconfig:SetText("Rage Config")
rageconfig:SetPos( 10,255 )
rageconfig:SetSize( 200, 25)
rageconfig.DoClick = function()
Hera.Notify(white,"Loaded rage config.")
print("WIP")
end


-------------------------
--[[ AIMBOT TAB SHIT ]]--
-------------------------
AddCheckBox("Autoshoot","Hera_AIM_Auto",Page2,10,10,"Autoshoot when locked")
AddCheckBox("Friendly Fire","Hera_AIM_Friendly",Page2,10,30,"Target your own team")
AddCheckBox("Target Steam Friends","Hera_AIM_Steam",Page2,10,50,"Target Steam Friends")
AddCheckBox("Target Admins","Hera_AIM_Admins",Page2,10,70,"Target Admins")
AddCheckBox("No-Recoil","Hera_AIM_NoRecoil",Page2,10,90,"Remove Recoil")
AddCheckBox("Triggerbot","Hera_AIM_Trigger",Page2,10,110,"Auto-shoots when looking at a player")
AddCheckBox("Stronghold mode","Hera_AIM_SH",Page2,10,130,"Aims down sights when locked, to reduce spread.")
AddCheckBox("Anti-Aim","Hera_AIM_Anti",Page2,10,150,"HvH feature, makes it 'harder' for others to aimbot you.")
AddCheckBox("Anti Anti-Aim","Hera_AIM_AntiAA",Page2,10,170,"HvH feature, bypasses anti-aim")
AddCheckBox("Anti-Snap","Hera_AIM_AntiSnap",Page2,200,10,"Changes the speed of the aimbot, making it look more legit")
AddCheckBox("Auto Reload","Hera_AIM_Reload",Page2,200,30,"Reload when you run out of ammo")

AddSlider("Field Of View","Hera_AIM_Fov",Page2,0,180,1,10,220,350,"FOV in which the aimbot will target players")
AddSlider("Anti-Snap Speed","Hera_AIM_AntiSnap_Speed",Page2,0,50,1,10,240,350,"Changes your anti-snap speed")
AddSlider("Aimbot Offset","Hera_AIM_Offset",Page2,-25,25,1,10,260,350,"Offsets your aimspot")

-------------------------------------
--[[ ESP | WALLHACK | VISUAL TAB ]]--
-------------------------------------
AddCheckBox("[ESP] Info","Hera_ESP_Info",Page3,10,10,"Show player's info on the ESP")
AddCheckBox("[ESP] Chams","Hera_ESP_Chams",Page3,10,30,"Show a player's model through walls")
AddCheckBox("[ESP] Bounding Box","Hera_ESP_Box",Page3,10,50,"Draw a box around players")
AddCheckBox("[ESP] Show Skeleton","Hera_ESP_Skeleton",Page3,10,70,"Show player's bones")
AddCheckBox("[ESP] Entity Finder","Hera_ESP_Ents",Page3,10,90,"Show entities on the ESP")

AddCheckBox("[VIS] Crosshair","Hera_ESP_Crosshair",Page3,150,10,"Draw a crosshair on your screen")
AddCheckBox("[VIS] Laser Tracer","Hera_ESP_Tracer",Page3,150,30,"Draw a laser from your feet to player's heads.")

AddSlider("ESP Distance","Hera_ESP_Distance",Page3,0,10000,1,10,260,300,"Distance in which the ESP will render")

local ESPList = vgui.Create( 'DComboBox', Page3 )
ESPList:SetPos( 330, 280 )
ESPList:SetSize( 82, 20 )
ESPList:AddChoice( 'Wireframe' )
ESPList:AddChoice( 'Solid' )
ESPList.OnSelect = function( self )
	if self:GetValue() == 'Wireframe' then
		old_rcc("Hera_ESP_Chams_Material","Wireframe")
	elseif self:GetValue() == 'Solid' then
		old_rcc("Hera_ESP_Chams_Material","Solid")
	end
end



local ESPLabel1 = vgui.Create("DLabel")
ESPLabel1:SetParent( Page3 )
ESPLabel1:SetPos(335,265)
ESPLabel1:SetText("Chams Material")
ESPLabel1:SetTextColor(Color(255,255,255,255))
ESPLabel1:SizeToContents()

/**********************
Entity Finder Stuff
**********************/
local OpenEnts = vgui.Create("DButton")
OpenEnts:SetParent( Page3 )
OpenEnts:SetPos(290,10)
OpenEnts:SetSize( 140,50 )
OpenEnts:SetText( "Edit Ents" )
OpenEnts.DoClick = function()
--EntsMenu()
Hera.Notify(sound,white,"Due to Garry not explaining shit, and replacing useful shit with dumb shit, the Entity Finder is currently disabled.")
end

---------------------------
--[[ MISC TAB SETTINGS ]]--
---------------------------
AddCheckBox("Traitor Finder","Hera_MISC_TTT",Page4,10,10,"Find traitors in TTT")
AddCheckBox("Bunnyhop","Hera_MISC_BunnyHop",Page4,10,30,"Bunnyhop by holding 'Space'")
AddCheckBox("Chat Spam","Hera_MISC_ChatSpam",Page4,10,50,"Spam a pre-determined message in the chat")
AddCheckBox("Anti-AFK","Hera_MISC_AntiAFK",Page4,10,70,"Makes you move randomly to avoid AFK kickers")
AddCheckBox("Name Changer","Hera_MISC_Namechanger",Page4,10,90,"Steal player's names")
AddCheckBox("Show Notifications","Hera_MISC_ShowNotifications",Page4,10,110,"Draws enabled features on top of the screen")
AddCheckBox("DarkRP Godmode","Hera_MISC_RPGod",Page4,10,130,"Spams /buyhealth when you lose HP")
AddCheckBox("Show Spectators","Hera_MISC_ShowSpec",Page4,10,150,"Tells you in chat when someone is spectating you.")
AddCheckBox("Show Admins","Hera_MISC_ShowAdmins",Page4,10,170,"Tells you in chat when an admin joins.")
AddCheckBox("Thirdperson","Hera_MISC_Thirdperson",Page4,10,190,"Allows you to see your player (thirdperson).")
AddCheckBox("Flashlight Spam","Hera_MISC_Flashlight",Page4,200,10,"Spams the flashlight.")

AddSlider("Thirdperson Distance","Hera_MISC_Thirdperson_Dist",Page4,0,600,1,10,240,350,"Sets the distance of the thirdperson")
AddSlider("Speedhack Speed","Hera_MISC_Speedhack_Speed",Page4,0,10,1,10,260,350,"Sets the speed of the speedhack")

--------------------------------
--[[ PERP HACK TAB SETTINGS]]---
--------------------------------
AddCheckBox("Infinite Fuel","Hera_PERP_Fuel",Page5,10,10,"Infinite fuel in cars")
AddCheckBox("Show Druggy Stock","Hera_PERP_Druggy",Page5,10,30,"Show druggy's stock")
AddCheckBox("Weed Timer","Hera_PERP_Weed",Page5,10,50,"Show how when weed is finished growing")
AddCheckBox("Show RP Names","Hera_PERP_RPNames",Page5,10,70,"Show player's Roleplay names instead of Steam name")
AddCheckBox("Show Player Info","Hera_PERP_PlayerInfo",Page5,10,90,"Show info like; Health, bank cash, armor, etc")

// Add sheets
Sheet:AddSheet("Main",Page1,false,false,false,"Main cheat settings")
Sheet:AddSheet("Aimbot",Page2, false, false, false, "Aimbot Settings")
Sheet:AddSheet("ESP | Wallhack | Visual",Page3,false,false,false,"ESP/Wallhack Settings")
Sheet:AddSheet("Miscellaneous",Page4,false,false,false,"Miscellaneous Settings")
Sheet:AddSheet("PERP Hack",Page5,false,false,false,"Exploits and cheats for the PERP gamemode")
	
end) -- End of +Hera_Menu function	
AddCMD("-Hera_Menu",function()
	Menu:SetVisible(false)
end)	

AddCMD("Hera_Menu_Toggle",function()
	Menu:SetVisible(true)
end)



/**********************
Name: Hooks
Purpose: Hook shit
***********************/

function hooks_hudpaint()
ESP();
PERP_Druggy();
PERP_PlayerInfo();
Notifications();
end

function hooks_postdraw()
Chams();
end

function hooks_think()
Misc();
NameChanger();
ShowNotifi();
AutoReload();
end

function hooks_renderscreenspaceeffects()
end

function hooks_calcview()
end

function hooks_createmove(ucmd)
Aimbot(ucmd);
end

function Hera.hooks:load()
Log("Loaded hooks");
AddHook("HUDPaint",hooks_hudpaint);
AddHook("PostDrawEffects",hooks_postdraw);
AddHook("Think",hooks_think);
AddHook("CalcView",hooks_calcview);
AddHook("RenderScreenspaceEffects",hooks_renderscreenspaceeffects);
AddHook("CreateMove",hooks_createmove);
end
Hera.hooks:load(); -- load them

function Hera.hooks:unload()
RemoveHook("HUDPaint",hooks_hudpaint);
RemoveHook("CalcView",hooks_calcview);
RemoveHook("PostDrawEffects",hooks_postdraw);
RemoveHook("Think",hooks_think);
RemoveHook("RenderScreenspaceEffects",hooks_renderscreenspaceeffects);
RemoveHook("CreateMove",hooks_createmove);
end

function Hera.hooks:reload()
Log("Reloaded hooks")
Hera.hooks:unload();
Hera.hooks:load();
end

function unload()
Log("Unloaded.")
Hera.hooks:unload()
old_rcc("-Hera_Menu");
RemoveCMD("+Hera_Menu");
RemoveCMD("-Hera_Menu");
RemoveCMD("+Hera_Aim");
RemoveCMD("-Hera_Aim");
RemoveCMD("+Hera_Speed");
RemoveCMD("-Hera_Speed");
RemoveCMD("Hera_Menu_Toggle")
timer.Destroy("TTT")
end

/*******
RUN LAST
********/

Hera.Notify(dosound,white,"loaded version "..Hera.version..".")
Log("Loaded!")

AddCMD("skid",function()
include("SkidCheck.lua")
end)
tell me what the f is this?
Quote Originally Posted by makee View Post
tell me what the f is this?
It's Hera, a bad hack with a Menu. InferiorComplex wanted it.
ok i see... fuck im bored....
Posts 115 of 219 · Page 1 of 15

Post a Reply

Similar Threads

Tags for this Thread

None

Need help?