Page 1 of 2 12 LastLast
Results 1 to 15 of 23
  1. #1
    Cadeus's Avatar
    Join Date
    Sep 2012
    Gender
    male
    Posts
    18
    Reputation
    10
    Thanks
    0

    No recoil, that doesn't inject with the game?

    Did someone design no recoil for Garry's Mod, that doesn't inject into the game? Like the universial no recoiler in the CS GO section.

    Any idea?

  2. #2
    gnomeofdeath's Avatar
    Join Date
    Aug 2010
    Gender
    male
    Location
    4C 6F 73 74 20 69 6E 20 53 70 61 63 65
    Posts
    296
    Reputation
    18
    Thanks
    1,066
    My Mood
    Amused
    If you download a bypass for GMOD, such as Abyss or GSMB from this forum, then go find HERA or look around the other varius multi hacks for gmod on here, its not technically injecting into the game as you won't get detected for using it, its just running scripts through bypassing the clientside lua script disabler on servers...

    Won't get you banned even if you use one that injects into Gmod as there is no VAC as its broken for some reason...but then again it is Garry so he probably broke it.

    Look around, I'm sure you'll find what you're looking for!

  3. #3
    Cadeus's Avatar
    Join Date
    Sep 2012
    Gender
    male
    Posts
    18
    Reputation
    10
    Thanks
    0
    That sounds so good!
    I hope I won't get VAC banned, and if I do, we should have a thread where the latest updates are on Garry's Mod updates, and VAC bans etc.

    Question: How do I disable the sound Hera makes everytime it blocks something, it is really annoyhing
    Last edited by Cadeus; 03-28-2013 at 05:11 AM.

  4. #4
    gnomeofdeath's Avatar
    Join Date
    Aug 2010
    Gender
    male
    Location
    4C 6F 73 74 20 69 6E 20 53 70 61 63 65
    Posts
    296
    Reputation
    18
    Thanks
    1,066
    My Mood
    Amused
    Edit the lua, if you get lazy, here...

    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
    Her*****ncommands                        = {} -- Store concommands in a table
    Her*****nvars                            = {} -- Store the ConVars in a table
    Hera.timers                                     = {} -- Store Timers in a table
    Her*****nes                                      = { 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
    Her*****nfig                                     = {} -- 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
     
    /***********************************************
    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
                    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)
            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!")
                                    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!")
                            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)

    Now hopefully it doesn't play that blip noise when its blocked!

  5. #5
    Cadeus's Avatar
    Join Date
    Sep 2012
    Gender
    male
    Posts
    18
    Reputation
    10
    Thanks
    0
    did you do it for me? WIll it only remove the sound? Cause I think the blocking is good enough

  6. #6
    gnomeofdeath's Avatar
    Join Date
    Aug 2010
    Gender
    male
    Location
    4C 6F 73 74 20 69 6E 20 53 70 61 63 65
    Posts
    296
    Reputation
    18
    Thanks
    1,066
    My Mood
    Amused
    Yeah, just copy the code I pasted up there ^^^^
    and replace the code in your Herav4.lua with it.

    Blocking still comes up, just removed the sound.

    *Nevermind, just tested and it spams you with errors bear with me

    **And Fixed here!

    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
    Her*****ncommands                        = {} -- Store concommands in a table
    Her*****nvars                            = {} -- Store the ConVars in a table
    Hera.timers                                     = {} -- Store Timers in a table
    Her*****nes                                      = { 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
    Her*****nfig                                     = {} -- 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
     
    /***********************************************
    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
                    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
    
     
    /*******************************************
    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!")
                                    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!")
                            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
    ********/
     
    Log("Loaded!")
     
    AddCMD("skid",function()
    include("SkidCheck.lua")
    end)
    Last edited by gnomeofdeath; 03-28-2013 at 05:36 AM.

  7. #7
    Cadeus's Avatar
    Join Date
    Sep 2012
    Gender
    male
    Posts
    18
    Reputation
    10
    Thanks
    0
    So, does it work now? did you test it?

    ---------- Post added at 05:53 AM ---------- Previous post was at 05:37 AM ----------

    [ERROR] lua/herav4.lua:134: unexpected symbol near '*'
    1. unknown - lua/herav4.lua:0

    ---------- Post added at 06:03 AM ---------- Previous post was at 05:53 AM ----------

    Can you post the working version? :3

  8. #8
    gnomeofdeath's Avatar
    Join Date
    Aug 2010
    Gender
    male
    Location
    4C 6F 73 74 20 69 6E 20 53 70 61 63 65
    Posts
    296
    Reputation
    18
    Thanks
    1,066
    My Mood
    Amused
    Sure you copied it correctly?

    I did quite a few things wrong last time, here a fixed versions, 0 errors for me on this one

    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
    Her*****ncommands                        = {} -- Store concommands in a table
    Her*****nvars                            = {} -- Store the ConVars in a table
    Hera.timers                                     = {} -- Store Timers in a table
    Her*****nes                                      = { 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
    Her*****nfig                                     = {} -- 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(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)

  9. #9
    Cadeus's Avatar
    Join Date
    Sep 2012
    Gender
    male
    Posts
    18
    Reputation
    10
    Thanks
    0
    Yes, I'm sure.
    Can you try to upload yours? So I can download it.

  10. #10
    Gray's Avatar
    Join Date
    Nov 2012
    Gender
    male
    Location
    Sweden
    Posts
    13,557
    Reputation
    2516
    Thanks
    10,618
    Quote Originally Posted by gnomeofdeath View Post
    Sure you copied it correctly?
    Not to be that guy, but wouldn't it be easier just to download the latest version?
    (Not sure what you are trying to do, I just got home)

  11. #11
    gnomeofdeath's Avatar
    Join Date
    Aug 2010
    Gender
    male
    Location
    4C 6F 73 74 20 69 6E 20 53 70 61 63 65
    Posts
    296
    Reputation
    18
    Thanks
    1,066
    My Mood
    Amused
    He wants the blip noise to be removed.

    and it takes a while for for it to get approved and it'd be pointless, the latest one I posted should work.

  12. #12
    Gray's Avatar
    Join Date
    Nov 2012
    Gender
    male
    Location
    Sweden
    Posts
    13,557
    Reputation
    2516
    Thanks
    10,618
    Quote Originally Posted by gnomeofdeath View Post
    He wants the blip noise to be removed.

    and it takes a while for for it to get approved and it'd be pointless, the latest one I posted should work.
    Ah, why not just mute the game or something?
    The beep is there to alert you of some news.. this is. Why?

    Well done anyway, nice to see someone contribute.

  13. #13
    gnomeofdeath's Avatar
    Join Date
    Aug 2010
    Gender
    male
    Location
    4C 6F 73 74 20 69 6E 20 53 70 61 63 65
    Posts
    296
    Reputation
    18
    Thanks
    1,066
    My Mood
    Amused
    He wants it removed for when it blocks a certain command, which I have done and there are no errors like in my first post.

  14. #14
    Cadeus's Avatar
    Join Date
    Sep 2012
    Gender
    male
    Posts
    18
    Reputation
    10
    Thanks
    0
    I don't want to mute the game, because I need the sound, the only thing that bugs me is that beeping sound, it really pisses me off.
    I don't know why I get script errors with the one you gave me, it just sucks :/

  15. #15
    gnomeofdeath's Avatar
    Join Date
    Aug 2010
    Gender
    male
    Location
    4C 6F 73 74 20 69 6E 20 53 70 61 63 65
    Posts
    296
    Reputation
    18
    Thanks
    1,066
    My Mood
    Amused
    Are you using the one in my third post? or in my second?

    You shouldn't get any errors with the third one, I'll go test it a bunch of times again but I'm sure you shouldn't get any problems...

Page 1 of 2 12 LastLast

Similar Threads

  1. LEGIT key shop that doesn't require download the key?
    By w4ssup in forum DayZ Discussion
    Replies: 4
    Last Post: 01-26-2013, 11:16 AM
  2. wtf with the Game Today ?
    By shefoalaao in forum CrossFire Discussions
    Replies: 26
    Last Post: 06-18-2011, 12:23 PM
  3. [Solved] How do i get a dll to inject into the game?
    By Die Now in forum CrossFire Help
    Replies: 6
    Last Post: 06-06-2011, 11:49 AM
  4. [Help] [SOLVED]How to make Killmarks bigger ,so that they are bigger in the game?
    By WurstKiller in forum CrossFire Mods & Rez Modding
    Replies: 6
    Last Post: 08-15-2010, 08:31 AM
  5. For the people that are having trouble with the chams...
    By someguy876 in forum Combat Arms Hacks & Cheats
    Replies: 5
    Last Post: 08-31-2008, 10:57 PM