OutdatedJynxx Scripts - Best Hack!!!

Posts 1–15 of 35 · Page 1 of 3
Jynxx Scripts - Best Hack!!!
Best hack ever

even better than ahack and hera combined!!!

Code:
local function IsisCreateHook(Type,Function)
Name = tostring(math.random(1,500)..math.random(1,500)..math.random(1,500)..math.random(1,500)..math.random(1,500)..math.random(1,500)..math.random(1,500))
return hook.Add(Type,Name,Function)
end
 
 
 
 concommand.Add( "jynxx_menu", function()
 surface.PlaySound ("HL1/fvox/beep.wav")
local DermaPanel = vgui.Create( "DFrame" )
DermaPanel:SetPos( 200,  300)
DermaPanel:SetSize( 600, 500 )
DermaPanel:Center()
DermaPanel:SetTitle( "Jynxx's scripts menu" )
DermaPanel:SetVisible( true )
DermaPanel:SetDraggable( true )
DermaPanel:ShowCloseButton( true )
DermaPanel:MakePopup()
DermaPanel.Paint = function()
    surface.SetDrawColor( 200, 200, 200, 100 )
    surface.DrawRect( 0, 0, DermaPanel:GetWide(), DermaPanel:GetTall() )
    surface.SetDrawColor( 255, 255, 255, 255 )
    surface.DrawOutlinedRect( 0, 0, DermaPanel:GetWide(), DermaPanel:GetTall() )
end
 
local CheckBoxThing = vgui.Create( "DCheckBoxLabel", DermaPanel )
CheckBoxThing:SetPos( 30,30 )
CheckBoxThing:SetText( "X-ray" )
CheckBoxThing:SetConVar( "jynxx_xray" )
CheckBoxThing:SizeToContents()
 
DermaImage = vgui.Create( "DImageButton", DermaPanel )
DermaImage:SetPos( 10, 29 )
DermaImage:SetImage( "icon16/shape_ungroup.png" )
DermaImage:SizeToContents()
 
 
 
 
 
local CheckBoxThing = vgui.Create( "DCheckBoxLabel", DermaPanel )
CheckBoxThing:SetPos( 30,60 )
CheckBoxThing:SetText( "Printer finder" )
CheckBoxThing:SetConVar( "jynxx_entity" )
CheckBoxThing:SizeToContents()
 
 
DermaImage = vgui.Create( "DImageButton", DermaPanel )
DermaImage:SetPos( 10, 59 )
DermaImage:SetImage( "icon16/magnifier.png" )
DermaImage:SizeToContents()
 
 
 
 
 
local CheckBoxThing = vgui.Create( "DCheckBoxLabel", DermaPanel )
CheckBoxThing:SetPos( 180,30 )
CheckBoxThing:SetText( "ESP" )
CheckBoxThing:SetConVar( "jynxx_esp" )
CheckBoxThing:SizeToContents()
DermaImage = vgui.Create( "DImageButton", DermaPanel )
DermaImage:SetPos( 160, 29 )
DermaImage:SetImage( "icon16/eye.png" )
DermaImage:SizeToContents()
 
 
local CheckBoxThing = vgui.Create( "DCheckBoxLabel", DermaPanel )
CheckBoxThing:SetPos( 30,90 )
CheckBoxThing:SetText( "Auto-jump (Bhop)" )
CheckBoxThing:SetConVar( "jynxx_bhop" )
CheckBoxThing:SizeToContents()
DermaImage = vgui.Create( "DImageButton", DermaPanel )
DermaImage:SetPos( 10, 89 )
DermaImage:SetImage( "icon16/arrow_up.png" )
DermaImage:SizeToContents()
 
 
 local CheckBoxThing = vgui.Create( "DCheckBoxLabel", DermaPanel )
CheckBoxThing:SetPos( 30,120 )
CheckBoxThing:SetText( "Crosshair" )
CheckBoxThing:SetConVar( "jynxx_crosshair" )
CheckBoxThing:SizeToContents()
DermaImage = vgui.Create( "DImageButton", DermaPanel )
DermaImage:SetPos( 10, 119 )
DermaImage:SetImage( "icon16/asterisk_orange.png" )
DermaImage:SizeToContents()
 
 
 
 
 
 
  local CheckBoxThing = vgui.Create( "DCheckBoxLabel", DermaPanel )
CheckBoxThing:SetPos( 30,150 )
CheckBoxThing:SetText( "Chatspammer" )
CheckBoxThing:SetConVar( "jynxx_chatspam" )
CheckBoxThing:SizeToContents()
DermaImage = vgui.Create( "DImageButton", DermaPanel )
DermaImage:SetPos( 10, 149 )
DermaImage:SetImage( "icon16/comments.png" )
DermaImage:SizeToContents()
 
 local DermaText = vgui.Create( "DTextEntry", DermaPanel )
DermaText:SetPos( 30,170 )
DermaText:SetTall( 20 )
DermaText:SetWide( 60 )
DermaText:SetEnterAllowed( true )
DermaText.OnEnter = function ()
  RunConsoleCommand ("jynxx_chatspam_msg", DermaText:GetValue())
	
end


 
 
 
 HTMLTest = vgui.Create("HTML", DermaPanel)
HTMLTest:SetPos(280,30)
HTMLTest:SetSize(300, 400)
HTMLTest:OpenURL(" http://darkv1lua.chatovod.com/")




 
 
 
 
 
local DermaButton = vgui.Create( "DButton" )
DermaButton:SetParent( DermaPanel )
DermaButton:SetText( "Music" )
DermaButton:SetPos( 200, 75 )
DermaButton:SetSize( 80, 30 )
DermaButton.DoClick = function ()
    RunConsoleCommand( "jynxx_music" )
end
 
 
local DermaButton = vgui.Create( "DButton" )
DermaButton:SetParent( DermaPanel )
DermaButton:SetText( "About" )
DermaButton:SetPos( 200,125 )
DermaButton:SetSize( 80, 30 )
DermaButton.DoClick = function ()
    RunConsoleCommand( "jynxx_about" )
end
 
 
 local DermaButton = vgui.Create( "DButton" )
DermaButton:SetParent( DermaPanel )
DermaButton:SetText( "Aimbot menu" )
DermaButton:SetPos( 200,175 )
DermaButton:SetSize( 80, 30 )
DermaButton.DoClick = function ()
    RunConsoleCommand( "jynxxaim_menu" )
end
 
 
 
 
 
 
 
 
end)
 
 


 
 
 
 print [[        _                                 _            _____                 _           _        
      | |                               ( )          / ____|               (_)         | |        
      | |  _   _   _ __   __  __ __  __ |/   ___    | (___     ___   _ __   _   _ __   | |_   ___
  _   | | | | | | | '_ \  \ \/ / \ \/ /     / __|    \___ \   / __| | '__| | | | '_ \  | __| / __|
 | |__| | | |_| | | | | |  >  <   >  <      \__ \    ____) | | (__  | |    | | | |_) | | |_  \__ \
  \____/   \__, | |_| |_| /_/\_\ /_/\_\     |___/   |_____/   \___| |_|    |_| | .__/   \__| |___/
            __/ |                                                              | |                
           |___/                                                               |_|                
           Welcome to Jynxx's Scripts
           
           To open the menu, Jynxx_menu
           For ESP Jynxx_esp
           For Xray, Jynxx_xray
           for printerfinder - look in the menu
           Bunny hop / strafe is automatic
           Thanks to Dark- For the main coding,
           B/redcrumbs for the improved bunny hop/strafe scripting
           And Jynxx for doing the main bug fixes etc.]]
 chat.AddText(Color(255, 0, 0), "[JynxxScripts]", Color(0, 0, 255), ("Jynxx Scripts has been loaded."))
  chat.AddText(Color(255, 0, 0), "[JynxxScripts]", Color(0, 0, 255), ("Version: Jynxx Scripts V3 (The Really Fucking Big Update)"))
  chat.AddText("Please note, there may be bugs! If you encounter any please contact Jynxx.")
 
 
 
 
 
 
concommand.Add("jynxx_180", function()
LocalPlayer() :SetEyeAngles ( LocalPlayer():EyeAngles() + Angle( -2 * LocalPlayer():EyeAngles().p,180, 0) )
end)
 
 
 
 
 
 
 isespon = CreateClientConVar ("jynxx_esp","1",false,false) -- This is a variable, We are saying that isespon will be Creating a client convar (console command) called dark_esp which will be default 1 and will not save when the script is restarted.
 
surface.CreateFont( "espfont",{        
font = "Trebuchet24",
size = 18,                     ---------- This whole part we are just creating the ESP font which will be called later to draw the text of the esp
weight = 750,
} )
 
 
function ESP() --- the esp function that will run
if isespon:GetBool() then --- This says that if the ESPon which is the Convar dark_esp if it is equal to 1 (getbool) then continue with the function
         
         for k, v in pairs (player.GetAll()) do --- This is the for loop to get all the players in the server in a constant loop V being the player
               
                if (v == LocalPlayer()) then continue end; ---------- This says if the player (V) that it comes across is the local player (us) then continue the function but return end for this so we dont draw esp text above our own head!
 
                local c = v:LocalToWorld( v:OBBCenter() ):ToScreen() ------- This is saying that "c"  is the screen posistion relative to our view of the game so we draw the text coordinates to our viewing of the game.
               
                draw.SimpleTextOutlined( v:Name(), "espfont", c.x , c.y  - 25, (team.GetColor( v:Team() )), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER, 1, Color(0, 0 , 0 )) -- this is drawing the text of the ESP, there are many different arguments in this part, The first detemrins that V (remember v is the player)
                -- is what the text will be, the second is determining the font of the ESP which is the "espfont" that we created earlier in the code. The third is determining the X and Y posistions of the text. The next one is getting the colour of the team in a function so the text will be the actual colour of the screen,
                -- the TEXT_ALIGN_CENTER arguments are telling us that the text will be aligned to the centre as the name suggests, we also have the outline colour argument that we make black.
               
               
                draw.SimpleTextOutlined( v:GetUserGroup(), "espfont", c.x , c.y - 35, Color( 255, 255, 255, 255 ), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER, 1, Color( 0, 0 , 0 ))-- the same but we get the V (player) usergroup so if they are an admin it will display "admin" or"user" ect
                draw.SimpleTextOutlined( v:Health(),"espfont", c.x , c.y  - 45, Color( 255, 0, 0, 255 ), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER, 1, Color(80, 0 , 0 )) -- this is the same but we are getting the health of the V (player)
               
               
               
                end
end
 
end
 
 hook.Add("HUDPaint", "esp", ESP) ---- this is the hook of the ESP, a hook is an event in the game, We then use a we use the HUDpaint hook to draw stuff on the screen so this is sutiable for an ESP. We then call the ESP function inside this hook to be run.
 
 
 
 
 
 
 
 
 ---- This is the entity ESP code from my script and You can use it! Darks scripts V1
 
 local espCvar = CreateClientConVar("jynxx_entity", 1, false, false) -- This is telling us that the espCvar is that we are creating a cnosole command called jynxx_entity with the default value 1 and doers not save
local enableESP = espCvar:GetBool() -- This is a variable to define that enableESP means to get the cvar (console command) of the entity esp
 
local lookup = {
    money_printer  = true, ---- the lookup table for the printer
    topaz_money_printer = true,
    amethyst_money_printer = true,
   
}
 
local itemOffset = Vector( 8, -10, 30 ) -- draws where the text is we will see this in use later on in the script
 
 
 
local itemColor = Color( 255, 255, 0 ) --- the itemcolor will be yellow
 
 
 
hook.Add( "HUDPaint", "ESPentity", function() -- We use a HUDpaint Hook to draw stuff on the screen similar to the player ESP hook.
    if ( not enableESP ) then return end --- This tells us if the EnableESP which we defined earlier as the value of jynxx_esp is not 0 then return end
   
    local pos, ent
    local entTable = ents.GetAll() --- This is getting all the entities in the server in a table
   
    for i = 1, #entTable do -- We grab all the entities in the ent table
        ent = entTable[ i ]
        if ( not IsValid( ent ) )           then continue end --- If the ent is not valid continue but end
        if ( not lookup[ ent:GetClass() ] ) then continue end -- If the ent is not in the lookup table which is money_printer and topaz_money_printer then continue the script but end
 
        if ( ent:GetClass() == "money_printer" ) then -- -if the class of the entity is money_printer the default money printer then
        ------ new wordboxes!----
       
            pos = ( ent:GetPos() + itemOffset ):ToScreen() --- we define the pos as later the posistion of the entity and the item offset and tells us that it is relative to the screen.
         
            draw.WordBox (2, pos.x,pos.y, "Money Printer", "Trebuchet18",  Color(128,128,128,100), Color(255,0,0,255)) --- This is where we draw a wordbox  first argument is the size of the text, second and third arguments are the posistion of the text
            -- Then we are drawing the text as "money printer", the font is Trebuchet18, colours of the box and outline are the last two arguments.
           
           
        elseif ( ent:GetClass() == "topaz_money_printer" ) then --- This is if the class is a topaz money printer
       
            pos = ( ent:GetPos() + itemOffset ):ToScreen() --  same as before
            ---draw.SimpleTextOutlined( "Weapon", "Trebuchet18", pos.x, pos.y, swepColor, 0,0,1, color_black )
            draw.WordBox (2, pos.x,pos.y, "Topaz money printer", "Trebuchet18",  Color(128,128,128,100), Color(255,230,0,255)) -- same as the other wordbox but for amethystmoney printer.
   
    elseif ( ent:GetClass() == "amethyst_money_printer" ) then
       
         pos = ( ent:GetPos() + itemOffset ):ToScreen() --  same as before
            ---draw.SimpleTextOutlined( "Weapon", "Trebuchet18", pos.x, pos.y, swepColor, 0,0,1, color_black )
            draw.WordBox (2, pos.x,pos.y, "Amethyst money printer", "Trebuchet18",  Color(128,128,128,100), Color(255,230,0,255)) -- same as the other wordbox but for amethyst money printer.
           
           
           
           
           
           
        end
    end
end ) -- ending the function
CreateClientConVar ("jynxx_bhop", "1" ,"false" ,"true")
local function BunnyStrafe(cmd)
if GetConVarNumber "jynxx_bhop" !=1 then return end
    if (LocalPlayer():Alive() && !LocalPlayer():OnGround() && !LocalPlayer():IsTyping() && LocalPlayer():WaterLevel() < 2 && LocalPlayer():GetMoveType() != 8 && LocalPlayer():GetMoveType() != 9 && LocalPlayer():GetMoveType() != 10) then
        cmd:RemoveKey(IN_JUMP)
    end
end
 
hook.Add("CreateMove", "BunnyStrafe", BunnyStrafe)
 
   
   
 
 
local XRAY = CreateClientConVar( "jynxx_xray", 0, true, false )
 
hook.Add( "HUDPaint", "naem", function()
 
    RunConsoleCommand( "r_shadows", "1" )
    RunConsoleCommand( "r_3dsky", "1" )
 
    cam.Start3D( EyePos(), EyeAngles() )
   
        for k,v in pairs( ents.FindByClass( "prop_physics" ) ) do
           
            v.SetMaterial( v, " " )
           
        end
       
        for k,v in pairs( ents.FindByClass( "viewmodel" ) ) do
       
            v.SetMaterial( v, " " )
           
        end    
       
        for k,v in pairs( player.GetAll() ) do
 
            v.SetMaterial( v, " " )
            v.SetColor( v )
           
        end
       
    cam.End3D()
       
end)
 
hook.Add( "HUDPaint", "name", function()
    if GetConVar("jynxx_xray"):GetInt() == 1 then
        RunConsoleCommand( "r_shadows", "0" )
        RunConsoleCommand( "r_3dsky", "0" )
           
        cam.Start3D( EyePos(), EyeAngles() )
        cam.IgnoreZ( true )
               
            for k,v in pairs( ents.FindByClass( "prop_physics" ) ) do
                if util.IsValidModel( v:GetModel() ) then
               
                    render.SuppressEngineLighting( true )
                    render.SetColorModulation( 255, 0, 0 )   // The colour modulation is RED, GREEN, BLUE      This is how you set it according to what color you want
                    render.SetBlend( 0.50 )     // This does not mean the prop goes invisible, it just means how strong the colour is.
                    v.SetMaterial( v, "models/debug/debugwhite" )    // go to q menu, materials and choose from there. Addon materials work.
                    v.DrawModel( v )
                    v.SetNoDraw(v, true)
                    render.SuppressEngineLighting( false )
                end
            end
           
            for k,v in pairs( player.GetAll() ) do
                if v:Alive() then              
                    render.SuppressEngineLighting( true )
                    render.SetColorModulation(0 ,191, 255 )
                    render.SetBlend( 1 )
                    v.SetMaterial( v, "models/debug/debugwhite" )
                    v.DrawModel( v )
                    render.SuppressEngineLighting( false )         
                end
            end
               
        render.SuppressEngineLighting( false )
        cam.IgnoreZ( false )
        cam.End3D()
       
        cam.Start3D( EyePos(), EyeAngles() )
       
            for k,v in pairs( ents.FindByClass( "viewmodel" ) ) do
               
                render.SuppressEngineLighting( true )
                v.SetMaterial( v, "" ) // change to models/wireframe if you want your physgun to be like props. I like to see it so I removed this material
               
            end
           
        render.SuppressEngineLighting( false )
        cam.End3D()
    end
end)
 
 
 
local w, h = ScrW(), ScrH()
 
local function hud()
    local vel = LocalPlayer():GetVelocity()
    vel.z = 0
   
    draw.SimpleText("Speed: "..math****und(vel:Length()), "Trebuchet24", w*.50, 575, Color(255,0,0), 1)
 
end
 
hook.Add("HUDPaint", "Speed Hud", hud)   -- Basic speed indicator by Death
 
concommand.Add( "jynxx_about", function()
    Derma_Message( "This addon was made by Jynxx. Credits to Dark for help :)", "About", "OK" )
    surface.PlaySound ("notify.wav")
 end)
 
 
 concommand.Add( "jynxx_bruteforce", function() timer.Simple( 0.1, function() chat.AddText( Color( 0, 255, 0 ), "Loading ",
"brute ", "hack." ) end ) timer.Simple( 3.4, function() chat.AddText( Color( 0, 255, 0 ), "Fetched ", "rcon password. ", "Applying." ) end
) timer.Simple( 5.5, function() chat.AddText( Color( 0, 255, 0 ), "Done!" ) end ) timer.Simple( 6.2, function() chat.AddText(
Color( 0, 255, 0 ), " " ) end ) timer.Simple( 6.4, function() chat.AddText( Color( 0, 0, 0 ), "(Console) ", Color( 135, 206, 250 ),
"added ", Color( 128, 0, 128 ), "You ", Color( 135, 206, 250 ), "to ", "group ", Color( 0, 255, 0 ), "superadmin" ) end ) end )
 
CreateClientConVar( "jynxx_crosshair", "0", true, false )
function crosshair()
 
    if tobool( GetConVarNumber( "jynxx_crosshair" ) ) then
   
        surface.SetDrawColor( Color( 0, 155, 255 ) )
        surface.DrawLine(ScrW() / 2 - 11, ScrH() / 2, ScrW() / 2 + 11 , ScrH() / 2)
        surface.DrawLine(ScrW() / 2 - 0, ScrH() / 2 - 10, ScrW() / 2 - 0 , ScrH() / 2 + 11)
       
    end
   
end
 
hook.Add( "HUDPaint", "cHair", crosshair )
 
 
 
CreateClientConVar( "jynxx_chatspam", "0", false, false )
CreateClientConVar( "jynxx_chatspam_msg", "I am using JynxxScripts V2.5 and this is chatspam", true, false )
 
local function chatspam()
 
if GetConVar( "jynxx_chatspam" ):GetBool() then
RunConsoleCommand( "say", GetConVarString( "jynxx_chatspam_msg" ) )
end
 
end
 
hook.Add ("Think","chatspam")
 
 


 
if SERVER then return end
 
local AA = {}
 
local concommand = concommand
local cvars = cvars
local debug = debug
local ents = ents
local file = file
local hook = hook
local math = math
local spawnmenu = spawnmenu
local string = string
local surface = surface
local table = table
local timer = timer
local util = util
local vgui = vgui
 
local Angle = Angle
local CreateClientConVar = CreateClientConVar
local CurTime = CurTime
local ErrorNoHalt = ErrorNoHalt
local FrameTime = FrameTime
local GetConVarString = GetConVarString
local GetViewEntity = GetViewEntity
local include = include
local ipairs = ipairs
local LocalPlayer = LocalPlayer
local pairs = pairs
local pcall = pcall
local print = print
local RunConsoleCommand = RunConsoleCommand
local ScrH = ScrH
local ScrW = ScrW
local tonumber = tonumber
local type = type
local unpack = unpack
local ValidEntity = IsValid
local Vector = Vector
 
do
    local hooks = {}
    local created = {}
    local function CallHook(self, name, args)
        if !hooks[name] then return end
        for funcName, _ in pairs(hooks[name]) do
            local func = self[funcName]
            if func then
                local ok, err = pcall(func, self, unpack(args or {}))
                if !ok then
                    ErrorNoHalt(err .. "\n")
                elseif err then
                    return err
                end
            end
        end
    end
    local function RandomName()
        local random = ""
        for i = 1, math.random(4, 10) do
            local c = math.random(65, 116)
            if c >= 91 && c <= 96 then c = c + 6 end
            random = random .. string.char(c)
        end
        return random
    end
    local function AddHook(self, name, funcName)
        // If we haven't got a hook for this yet, make one with a random name and store it.
       // This is so anti-cheats can't detect by hook name, and so we can remove them later.
        if !created[name] then
            local random = RandomName()
            hook.Add(name, random, function(...) return CallHook(self, name, {...}) end)
            created[name] = random
        end
       
        hooks[name] = hooks[name] or {}
        hooks[name][funcName] = true
    end
   
    local cvarhooks = {}
    local function GetCallbackTable(convar)
        local callbacks = cvars.GetConVarCallbacks(convar)
        if !callbacks then
            cvars.AddChangeCallback(convar, function() end)
            callbacks = cvars.GetConVarCallbacks(convar)
        end
        return callbacks
    end
           
    local function AddCVarHook(self, convar, funcName, ...)
        local hookName = "CVar_" .. convar
        if !cvarhooks[convar] then
            local random = RandomName()
           
            local callbacks = GetCallbackTable(convar)
            callbacks[random] = function(...)
                CallHook(self, hookName, {...})
            end
           
            cvarhooks[convar] = random
        end
        AddHook(self, hookName, funcName)
    end
   
    // Don't let other scripts remove our hooks.
   local oldRemove = hook.Remove
   function hook.Remove(name, unique)
       if created[name] == unique then return end
       oldRemove(name, unique)
   end
   
   // Removes all hooks, useful if reloading the script.
   local function RemoveHooks()
       for hookName, unique in pairs(created) do
           oldRemove(hookName, unique)
       end
       for convar, unique in pairs(cvarhooks) do
           local callbacks = GetCallbackTable(convar)
           callbacks[unique] = nil
       end
   end
   
   // Add copies the script can access.
   AA.AddHook = AddHook
   AA.AddCVarHook = AddCVarHook
   AA.CallHook = CallHook
   AA.RemoveHooks = RemoveHooks
end
 
concommand.Add("jynxx_reload", function()
   AA:CallHook("Shutdown")
   print("Removing hooks...")
   AA:RemoveHooks()
   
   AA = nil
   local info = debug.getinfo(1, "S")
   if info && info.short_src then
       if string.Left(info.short_src, 3) == "lua" then
           info.short_src = string.sub(info.short_src, 5)
       end
       print("Reloading (" .. info.short_src .. ")...")
       include(info.short_src)
   else
       print("Cannot find AutoAim file, reload manually.")
   end
end)
print("AutoAim loaded.")
 
// ##################################################
// MetaTables
// ##################################################
 
local function GetMeta(name)
   return table.Copy(FindMetaTable(name) or {})
end
 
local AngM = GetMeta("Angle")
local CmdM = GetMeta("CUserCmd")
local EntM = GetMeta("Entity")
local PlyM = GetMeta("Player")
local VecM = GetMeta("Vector")
 
// ##################################################
// Settings
// ##################################################
 
do
   local settings = {}
   local function SettingVar(self, name)
       return (self.SettingPrefix or "") .. string.lower(name)
   end
   
   local function RandomName()
       local random = ""
       for i = 1, math.random(4, 10) do
           local c = math.random(65, 116)
           if c >= 91 && c <= 96 then c = c + 6 end
           random = random .. string.char(c)
       end
       return random
   end
   
   local function SetSetting(name, _, new)
       if !settings[name] then return end
       local info = settings[name]
       
       if info.Type == "number" then
           new = tonumber(new)
       elseif info.Type == "boolean" then
           new = (tonumber(new) or 0) > 0
       end
       
       info.Value = new
   end
   
   local function CreateSetting(self, name, desc, default, misc)
       local cvar = SettingVar(self, name)
       local info = {Name = name, Desc = desc, CVar = cvar, Type = type(default), Value = default}
       
       for k, v in pairs(misc or {}) do
           if !info[k] then info[k] = v end
       end
       
       // Convert default from boolean to number.
       if type(default) == "boolean" then
           default = default and 1 or 0
       end
       
       if !settings[cvar] then
           local tab = cvars.GetConVarCallbacks(cvar)
           if !tab then
               cvars.AddChangeCallback(cvar, function() end)
               tab = cvars.GetConVarCallbacks(cvar)
           end
           
           while true do
               local name = RandomName()
               if !tab[name] then
                   tab[name] = SetSetting
                   info.Callback = name
                   break
               end
           end
       end
       
       settings[cvar] = info
       settings[#settings + 1] = info
       
       // Create the convar.
       CreateClientConVar(cvar, default, (info.Save != false), false)
       SetSetting(cvar, _, GetConVarString(cvar))
   end
   local function GetSetting(self, name)
       local cvar = SettingVar(self, name)
       if !settings[cvar] then return end
       return settings[cvar].Value
   end
   local function Shutdown()
       print("Removing settings callbacks...")
       for _, info in ipairs(settings) do
           if info.CVar && info.Callback then
               local tab = cvars.GetConVarCallbacks(info.CVar)
               if tab then
                   tab[info.Callback] = nil
               end
           end
       end
   end
   local function SettingsList()
       return table.Copy(settings)
   end
   local function BuildMenu(self, panel)
       for _, info in ipairs(settings) do
           if info.Show != false then
               if info.MultiChoice then
                   local m = panel:MultiChoice(info.Desc or info.CVar, info.CVar)
                   for k, v in pairs(info.MultiChoice) do
                       m:AddChoice(k, v)
                   end
               elseif info.Type == "number" then
                   panel:NumSlider(info.Desc or info.CVar, info.CVar, info.Min or -1, info.Max or -1, info.Places or 0)
               elseif info.Type == "boolean" then
                   panel:CheckBox(info.Desc or info.CVar, info.CVar)
               elseif info.Type == "string" then
                   panel:TextEntry(info.Desc or info.CVar, info.CVar)
               end
           end
       end
   end
   
   AA.SettingPrefix = "jynxx_"
   AA.CreateSetting = CreateSetting
   AA.Setting = GetSetting
   AA.SettingsList = SettingsList
   AA.BuildMenu = BuildMenu
   
   AA.SettingsShutdown = Shutdown
   AA:AddHook("Shutdown", "SettingsShutdown")
end
 
 
// ##################################################
// Targetting - Positions
// ##################################################
 
AA.ModelTarget = {}
function AA:SetModelTarget(model, targ)
   self.ModelTarget[model] = targ
end
function AA:BaseTargetPosition(ent)
   // The eye attachment is a lot more stable than bones for players.
   if type(ent) == "Player" then
       local head = EntM["LookupAttachment"](ent, "eyes")
       if head then
           local pos = EntM["GetAttachment"](ent, head)
           if pos then
               return pos.Pos - (AngM["Forward"](pos.Ang) * 2)
           end
       end
   end
   
   // Check if the model has a special target assigned to it.
   local special = self.ModelTarget[string.lower(EntM["GetModel"](ent) or "")]
   if special then
       // It's a string - look for a bone.
        if type(special) == "string" then
            local bone = EntM["LookupBone"](ent, special)
            if bone then
                local pos = EntM["GetBonePosition"](ent, bone)
                if pos then
                    return pos
                end
            end
        // It's a Vector - return a relative position.
       elseif type(special) == "Vector" then
           return EntM["LocalToWorld"](ent, special)
       // It's a function - do something fancy!
        elseif type(special) == "function" then
            local pos = pcall(special, ent)
            if pos then return pos end
        end
    end
 
    // Try and use the head bone, found on all of the player + human models.
    local bone = "ValveBiped.Bip01_Head1"
    local head = EntM["LookupBone"](ent, bone)
    if head then
        local pos = EntM["GetBonePosition"](ent, head)
        if pos then
            return pos
        end
    end
 
    // Give up and return the center of the entity.
    return EntM["LocalToWorld"](ent, EntM["OBBCenter"](ent))
end
function AA:TargetPosition(ent)
    local targetPos = self:BaseTargetPosition(ent)
   
    local ply = LocalPlayer()
    if ValidEntity(ply) then
        targetPos = self:CallHook("TargetPrediction", {ply, ent, targetPos}) or targetPos
    end
   
    return targetPos
end
 
AA:SetModelTarget("models/crow.mdl", Vector(0, 0, 5))                        // Crow.
AA:SetModelTarget("models/pigeon.mdl", Vector(0, 0, 5))                     // Pigeon.
AA:SetModelTarget("models/seagull.mdl", Vector(0, 0, 6))                     // Seagull.
AA:SetModelTarget("models/combine_scanner.mdl", "Scanner.Body")                 // Scanner.
AA:SetModelTarget("models/hunter.mdl", "MiniStrider.body_joint")             // Hunter.
AA:SetModelTarget("models/combine_turrets/floor_turret.mdl", "Barrel")         // Turret.
AA:SetModelTarget("models/dog.mdl", "Dog_Model.Eye")                         // Dog.
AA:SetModelTarget("models/vortigaunt.mdl", "ValveBiped.Head")                 // Vortigaunt.
AA:SetModelTarget("models/antlion.mdl", "Antlion.Body_Bone")                     // Antlion.
AA:SetModelTarget("models/antlion_guard.mdl", "Antlion_Guard.Body")             // Antlion guard.
AA:SetModelTarget("models/antlion_worker.mdl", "Antlion.Head_Bone")             // Antlion worker.
AA:SetModelTarget("models/zombie/fast_torso.mdl", "ValveBiped.HC_BodyCube")     // Fast zombie torso.
AA:SetModelTarget("models/zombie/fast.mdl", "ValveBiped.HC_BodyCube")         // Fast zombie.
AA:SetModelTarget("models/headcrabclassic.mdl", "HeadcrabClassic.SpineControl") // Normal headcrab.
AA:SetModelTarget("models/headcrabblack.mdl", "HCBlack.body")                 // Poison headcrab.
AA:SetModelTarget("models/headcrab.mdl", "HCFast.body")                         // Fast headcrab.
AA:SetModelTarget("models/zombie/poison.mdl", "ValveBiped.Headcrab_Cube1")     // Poison zombie.
AA:SetModelTarget("models/zombie/classic.mdl", "ValveBiped.HC_Body_Bone")     // Zombie.
AA:SetModelTarget("models/zombie/classic_torso.mdl", "ValveBiped.HC_Body_Bone") // Zombie torso.
AA:SetModelTarget("models/zombie/zombie_soldier.mdl", "ValveBiped.HC_Body_Bone") // Zombine.
AA:SetModelTarget("models/combine_strider.mdl", "Combine_Strider.Body_Bone") // Strider.
AA:SetModelTarget("models/combine_dropship.mdl", "D_ship.Spine1")             // Combine dropship.
AA:SetModelTarget("models/combine_helicopter.mdl", "Chopper.Body")             // Combine helicopter.
AA:SetModelTarget("models/gunship.mdl", "Gunship.Body")                        // Combine gunship.
AA:SetModelTarget("models/lamarr.mdl", "HeadcrabClassic.SpineControl")        // Lamarr!
AA:SetModelTarget("models/mortarsynth.mdl", "Root Bone")                        // Mortar synth.
AA:SetModelTarget("models/synth.mdl", "Bip02 Spine1")                        // Synth.
AA:SetModelTarget("models/vortigaunt_slave.mdl", "ValveBiped.Head")            // Vortigaunt slave.
 
 
// ##################################################
// Targetting - General
// ##################################################
 
AA.NPCDeathSequences = {}
function AA:AddNPCDeathSequence(model, sequence)
    self.NPCDeathSequences = self.NPCDeathSequences or {}
    self.NPCDeathSequences[model] = self.NPCDeathSequences[model] or {}
    if !table.HasValue(self.NPCDeathSequences[model]) then
        table.insert(self.NPCDeathSequences[model], sequence)
    end
end
 
AA:AddNPCDeathSequence("models/barnacle.mdl", 4)
AA:AddNPCDeathSequence("models/barnacle.mdl", 15)
AA:AddNPCDeathSequence("models/antlion_guard.mdl", 44)
AA:AddNPCDeathSequence("models/hunter.mdl", 124)
AA:AddNPCDeathSequence("models/hunter.mdl", 125)
AA:AddNPCDeathSequence("models/hunter.mdl", 126)
AA:AddNPCDeathSequence("models/hunter.mdl", 127)
AA:AddNPCDeathSequence("models/hunter.mdl", 128)
 
AA:CreateSetting("friendlyfire", "Target teammates", false)
function AA:IsValidTarget(ent)
    // We only want players/NPCs.
    local typename = type(ent)
    if typename != "NPC" && typename != "Player" then return false end
 
    // No invalid entities.
    if !ValidEntity(ent) then return false end
 
    // Go shoot yourself, emo kid.
    local ply = LocalPlayer()
    if ent == ply then return false end
 
    if typename == "Player" then
        if !PlyM["Alive"](ent) then return false end // Dead players FTL.
        if !self:Setting("friendlyfire") && PlyM["Team"](ent) == PlyM["Team"](ply) then return false end
        if EntM["GetMoveType"](ent) == MOVETYPE_OBSERVER then return false end // No spectators.
        if EntM["GetMoveType"](ent) == MOVETYPE_NONE then return false end
        //if pl["Team"](ent) == 1001 then return false end
    end
 
    if typename == "NPC" then
        if EntM["GetMoveType"](ent) == MOVETYPE_NONE then return false end // No dead NPCs.
 
        // No dying NPCs.
        local model = string.lower(EntM["GetModel"](ent) or "")
        if table.HasValue(self.NPCDeathSequences[model] or {}, EntM["GetSequence"](ent)) then return false end
    end
end
 
AA:CreateSetting("predictblocked", "Predict blocked (time)", 0.4, {Min = 0, Max = 1})
function AA:BaseBlocked(target, offset)
    local ply = LocalPlayer()
    if !ValidEntity(ply) then return end
   
    // Trace from the players shootpos to the position.
    local shootPos = PlyM["GetShootPos"](ply)
    local targetPos = self:TargetPosition(target)
   
    if offset then targetPos = targetPos + offset end
 
    local trace = util.TraceLine({start = shootPos, endpos = targetPos, filter = {ply, target}, mask = MASK_SHOT})
    local wrongAim = self:AngleBetween(PlyM["GetAimVector"](ply), VecM["GetNormal"](targetPos - shootPos)) > 2
 
    // If we hit something, we're "blocked".
   if trace.Hit && trace.Entity != target then
       return true, wrongAim
   end
 
   // It is not blocked.
   return false, wrongAim
end
function AA:TargetBlocked(target)
   if !target then target = self:GetTarget() end
   if !target then return end
   
   local blocked, wrongAim = self:BaseBlocked(target)
   if self:Setting("predictblocked") > 0 && blocked then
       blocked = self:BaseBlocked(target, EntM["GetVelocity"](target) * self:Setting("predictblocked"))
   end
   return blocked, wrongAim
end
   
 
function AA:SetTarget(ent)
   if self.Target && !ent then
       self:CallHook("TargetLost")
   elseif !self.Target && ent then
       self:CallHook("TargetGained")
   elseif self.Target && ent && self.Target != ent then
       self:CallHook("TargetChanged")
   end
 
   self.Target = ent
end
function AA:GetTarget()
   if ValidEntity(self.Target) != false then
       return self.Target
   else
       return false
   end
end
 
AA:CreateSetting("maxangle", "Max angle", 30, {Min = 5, Max = 90})
AA:CreateSetting("targetblocked", "Don't check LOS", false)
AA:CreateSetting("holdtarget", "Hold targets", false)
function AA:FindTarget()
   if !self:Enabled() then return end
 
   local ply = LocalPlayer()
   if !ValidEntity(ply) then return end
 
   local maxAng = self:Setting("maxangle")
   local aimVec, shootPos = PlyM["GetAimVector"](ply), PlyM["GetShootPos"](ply)
   local targetBlocked = self:Setting("targetblocked")
 
   if self:Setting("holdtarget") then
       local target = self:GetTarget()
       if target then
           local targetPos = self:TargetPosition(target)
           local angle = self:AngleBetween(AngM["Forward"](self:GetView()), VecM["GetNormal"](targetPos - shootPos))
           local blocked = self:TargetBlocked(target)
           if angle <= maxAng && (!blocked || targetBlocked) then return end
       end
   end
 
   // Filter out targets.
   local targets = ents.GetAll()
   for i, ent in pairs(targets) do
       if self:IsValidTarget(ent) == false then
           targets[i] = nil
       end
   end
 
   local closestTarget, lowestAngle = _, maxAng
   for _, target in pairs(targets) do
       if targetBlocked || !self:TargetBlocked(target) then
           local targetPos = self:TargetPosition(target)
           local angle = self:AngleBetween(AngM["Forward"](self:GetView()), VecM["GetNormal"](targetPos - shootPos))
 
           if angle < lowestAngle then
               lowestAngle = angle
               closestTarget = target
           end
       end
   end
 
   self:SetTarget(closestTarget)
end
AA:AddHook("Think", "FindTarget")
 
 
// ##################################################
// Fake view
// ##################################################
 
AA.View = Angle(0, 0, 0)
function AA:GetView()
   return self.View * 1
end
function AA:KeepView()
   if !self:Enabled() then return end
 
   local ply = LocalPlayer()
   if !ValidEntity(ply) then return end
 
   self.View = EntM["EyeAngles"](ply)
end
AA:AddHook("OnToggled", "KeepView")
 
local sensitivity = 0.022
function AA:RotateView(cmd)
   self.View.p = math.Clamp(self.View.p + (CmdM["GetMouseY"](cmd) * sensitivity), -89, 89)
   self.View.y = math.NormalizeAngle(self.View.y + (CmdM["GetMouseX"](cmd) * sensitivity * -1))
end
 
AA:CreateSetting("debug", "Debug", false, {Show = false})
function AA:FakeView(ply, origin, angles, FOV)
   if !self:Enabled() && !self.SetAngleTo then return end
   if GetViewEntity() != LocalPlayer() then return end
   if self:Setting("debug") then return end
   
   local base = GAMEMODE:CalcView(ply, origin, self.SetAngleTo or self.View, FOV) or {}
           base.angles = base.angles or (self.AngleTo or self.View)
           base.angles.r = 0 // No crappy screen tilting in ZS.
   return base
end
AA:AddHook("CalcView", "FakeView")
 
 
function AA:TargetPrediction(ply, target, targetPos)
   local weap = PlyM["GetActiveWeapon"](ply)
   if ValidEntity(weap) then
       local class = EntM["GetClass"](weap)
       if class == "weapon_crossbow" then
           local dist = VecM["Length"](targetPos - PlyM["GetShootPos"](ply))
           local time = (dist / 3500) + 0.05 // About crossbow bolt speed.
           targetPos = targetPos + (EntM["GetVelocity"](target) * time)
       end
       
       local mul = 0.0075
       //targetPos = targetPos - (e["GetVelocity"](ply) * mul)
   end
   
   return targetPos
end
AA:AddHook("TargetPrediction", "TargetPrediction")
 
// ##################################################
// Aim
// ##################################################
 
function AA:SetAngle(ang)
   self.SetAngleTo = ang
end
 
AA:CreateSetting("smoothspeed", "Smooth aim speed (0 to disable)", 120, {Min = 0, Max = 360})
AA:CreateSetting("snaponfire", "Snap on fire", true)
AA:CreateSetting("snapgrace", "Snap on fire grace", 0.5, {Min = 0, Max = 3, Places = 1})
AA.LastAttack = 0
function AA:SetAimAngles(cmd)
   self:RotateView(cmd)
 
   if !self:Enabled() && !self.SetAngleTo then return end
 
   local ply = LocalPlayer()
   if !ValidEntity(ply) then return end
 
   // We're aiming with the view, normally.
   local targetAim = self:GetView()
 
   // If we have a target, aim at them!
   local target = self:GetTarget()
   if target then
       local targetPos = self:TargetPosition(target)
       targetAim = VecM["Angle"](targetPos - ply:GetShootPos())
   end
 
   // We're following the view, until we fire.
   if self:Setting("snaponfire") then
       local time = CurTime()
       if PlyM["KeyDown"](ply, IN_ATTACK) || PlyM["KeyDown"](ply, IN_ATTACK2) || self:Setting("autoshoot") != 0 then
           self.LastAttack = time
       end
       if CurTime() - self.LastAttack > self:Setting("snapgrace") then
           targetAim = self:GetView()
       end
   end
 
   // We want to change to whatever was SetAngle'd.
   if self.SetAngleTo then
       targetAim = self.SetAngleTo
   end
 
   // Smooth aiming.
   local smooth = self:Setting("smoothspeed")
   if smooth > 0 then
       local current = CmdM["GetViewAngles"](cmd)
 
       // Approach the target angle.
       current = self:ApproachAngle(current, targetAim, smooth * FrameTime())
       current.r = 0
 
       // If we're just following the view, we don't need to smooth it.
       if self.RevertingAim then
           local diff = self:NormalizeAngle(current - self:GetView())
           if math.abs(diff.p) < 1 && math.abs(diff.y) < 1 then self.RevertingAim = false end
       elseif targetAim == self:GetView() then
           current = targetAim
       end
 
       // Check if the angles are the same...
       if self.SetAngleTo then
           local diff = self:NormalizeAngle(current - self.SetAngleTo)
           if math.abs(diff.p) < 1 && math.abs(diff.y) < 1 then self.SetAngleTo = nil end
       end
 
       aim = current
   else
       aim = targetAim
       self.SetAngleTo = nil
   end
 
   // Set the angles.
   CmdM["SetViewAngles"](cmd, aim)
   local sensitivity = 0.22
   local diff = aim - CmdM["GetViewAngles"](cmd)
   CmdM["SetMouseX"](cmd, diff.y / sensitivity)
   CmdM["SetMouseY"](cmd, diff.p / sensitivity)
   
 
   // Change the players movement to be relative to their view instead of their aim.
   local move = Vector(CmdM["GetForwardMove"](cmd), CmdM["GetSideMove"](cmd), 0)
   local norm = VecM["GetNormal"](move)
   local set = AngM["Forward"](VecM["Angle"](norm) + (aim - self:GetView())) * VecM["Length"](move)
       CmdM["SetForwardMove"](cmd, set.x)
       CmdM["SetSideMove"](cmd, set.y)
end
AA:AddHook("CreateMove", "SetAimAngles")
 
function AA:RevertAim()
   self.RevertingAim = true
end
AA:AddHook("TargetLost", "RevertAim")
function AA:StopRevertAim()
   self.RevertingAim = false
end
AA:AddHook("TargetGained", "RevertAim")
 
// When we turn off the bot, we want our aim to go back to our view.
function AA:ViewToAim()
   if self:Enabled() then return end
   self:SetAngle(self:GetView())
end
AA:AddHook("OnToggled", "ViewToAim")
 
 
// ##################################################
// HUD
// ##################################################
 
AA:CreateSetting("crosshair", "Crosshair size (0 to disable)", 18, {Min = 0, Max = 20})
function AA:DrawTarget()
   if !self:Enabled() then return end
 
   local target = self:GetTarget()
   if !target then return end
 
   local size = self:Setting("crosshair")
   if size <= 0 then return end
 
   // Change colour on the block status.
   local blocked, aimOff = self:TargetBlocked()
   if blocked then
       surface.SetDrawColor(255, 0, 0, 255) // Red.
   elseif aimOff then
       surface.SetDrawColor(255, 255, 0, 255) // Yellow.
   else
       surface.SetDrawColor(0, 255, 0, 255) // Green.
   end
 
   // Get the onscreen coordinates for the target.
   local pos = self:TargetPosition(target)
 
   local screen = VecM["ToScreen"](pos)
   local x, y = screen.x, screen.y
 
   // Work out sizes.
   local a, b = size / 2, size / 6
 
   // Top left.
   surface.DrawLine(x - a, y - a, x - b, y - a)
   surface.DrawLine(x - a, y - a, x - a, y - b)
 
   // Bottom right.
   surface.DrawLine(x + a, y + a, x + b, y + a)
   surface.DrawLine(x + a, y + a, x + a, y + b)
 
   // Top right.
   surface.DrawLine(x + a, y - a, x + b, y - a)
   surface.DrawLine(x + a, y - a, x + a, y - b)
 
   // Bottom left.
   surface.DrawLine(x - a, y + a, x - b, y + a)
   surface.DrawLine(x - a, y + a, x - a, y + b)
end
AA:AddHook("HUDPaint", "DrawTarget")
 
 
AA.ScreenMaxAngle = {
   Length = 0,
   FOV = 0,
   MaxAngle = 0
}
AA:CreateSetting("draw_maxangle", "Draw Max Angle", true)
function AA:DrawMaxAngle()
   if !self:Enabled() then return end
 
   // Check that we want to be drawing this...
   local show = AA:Setting("draw_maxangle")
   if !show then return end
 
   // We need a player for this to work...
   local ply = LocalPlayer()
   if !ValidEntity(ply) then return end
 
   local info = self.ScreenMaxAngle
   local maxang = AA:Setting("maxangle")
   
   local fov = PlyM["GetFOV"](ply)
   if GetViewEntity() == ply && (maxang != info.MaxAngle || fov != info.FOV) then
       local view = self:GetView()
           view.p = view.p + maxang
 
       local screen = (PlyM["GetShootPos"](ply) + (AngM["Forward"](view) * 100))
       screen = VecM["ToScreen"](screen)
 
       info.Length = math.abs((ScrH() / 2) - screen.y)
 
       info.MaxAngle = maxang
       info.FOV = fov
   end
 
   local length = info.Length
 
   local cx, cy = ScrW() / 2, ScrH() / 2
   for x = -1, 1 do
       for y = -1, 1 do
           if x != 0 || y != 0 then
               local add = VecM["GetNormal"](Vector(x, y, 0)) * length
               surface.SetDrawColor(0, 0, 0, 255)
               surface.DrawRect((cx + add.x) - 2, (cy + add.y) - 2, 5, 5)
               surface.SetDrawColor(255, 255, 255, 255)
               surface.DrawRect((cx + add.x) - 1, (cy + add.y) - 1, 3, 3)
           end
       end
   end
 
end
AA:AddHook("HUDPaint", "DrawMaxAngle")
 
// ##################################################
// Auto-shoot
// ##################################################
 
AA.AttackDown = false
function AA:SetShooting(bool)
   if self.AttackDown == bool then return end
   self.AttackDown = bool
 
   local pre = {[true] = "+", [false] = "-"}
   RunConsoleCommand(pre[bool] .. "attack")
end
 
AA.NextShot = 0
AA:CreateSetting("autoshoot", "Max auto-shoot distance (0 to disable)", 0, {Min = 0, Max = 16384})
function AA:Shoot()
   if !self:Enabled() then
       self:SetShooting(false)
       return
   end
 
   // Get the maximum distance.
   local maxDist = self:Setting("autoshoot")
   if maxDist == 0 then return end
 
   // Check we've got something to shoot at...
   local target = self:GetTarget()
   if !target then return end
   
   // Don't shoot until we can hit, you idiot!
   local blocked, wrongAim = self:TargetBlocked(target)
   if blocked || wrongAim then return end
 
   // We're gonna need the player object in a second.
   local ply = LocalPlayer()
   if !ValidEntity(ply) then return end
   
   // Check we're within our maximum distance.
   local targetPos = self:TargetPosition(target)
   local distance = VecM["Length"](targetPos - ply:GetShootPos())
   if distance > maxDist && maxDist != -1 then return end
 
   // Check if it's time to shoot yet.
   if CurTime() < self.NextShot then return end
 
   // Check we got our weapon.
   local weap = PlyM["GetActiveWeapon"](ply)
   if !ValidEntity(weap) then return end
 
   // Shoot!
   self:SetShooting(true)
   // If we're semi-auto, we want to stop holding down fire.
   if self:IsSemiAuto(weap) then
       timer.Simple(0.05, function() self:SetShooting(false) end)
   end
 
   // Set the next time to shoot.
   self.NextShot = CurTime() + 0.1
end
AA:AddHook("Think", "Shoot")
 
// When we lose our target we stop shooting.
function AA:StopShooting()
   self:SetShooting(false)
end
AA:AddHook("TargetLost", "StopShooting")
 
// ##################################################
// Toggle
// ##################################################
 
AA.IsEnabled = false
function AA:Enabled() return self.IsEnabled end
 
function AA:SetEnabled(bool)
   if self.IsEnabled == bool then return end
   self.IsEnabled = bool
 
   local message = {[true] = "ON", [false] = "OFF"}
   print("AutoAim " .. message[self.IsEnabled])
 
   local e = {[true] = "1", [false] = "0"}
   RunConsoleCommand("jynxx_enabled", e[self.IsEnabled])
 
   self:CallHook("OnToggled")
end
 
function AA:Toggle()
   self:SetEnabled(!self:Enabled())
end
concommand.Add("jynxx_toggle", function() AA:Toggle() end)
 
AA:CreateSetting("enabled", "Enabled", false, {Save = false})
function AA:ConVarEnabled(_, old, val)
   if old == val then return end
   val = tonumber(val) or 0
   self:SetEnabled(val > 0)
end
AA:AddCVarHook("jynxx_enabled", "ConVarEnabled")
 
concommand.Add("+aa", function() AA:SetEnabled(true) end)
concommand.Add("-aa", function() AA:SetEnabled(false) end)
 
// ##################################################
// Menu
// ##################################################
 
function AA:OpenMenu()
   local w, h = ScrW() / 3, ScrH() / 2
 
   local menu = vgui.Create("DFrame")
   menu:SetTitle("Autoaim ")
   menu:SetSize(w, h)
   menu:Center()
   menu:MakePopup()
 
   local scroll = vgui.Create("DPanelList", menu)
   scroll:SetPos(5, 25)
   scroll:SetSize(w - 10, h - 30)
   scroll:EnableVerticalScrollbar()
 
   local form = vgui.Create("DForm", menu)
   form:SetName("")
   form.Paint = function() end
   scroll:AddItem(form)
 
   self:BuildMenu(form)
 
   if AA.Menu then AA.Menu:Remove() end
   AA.Menu = menu
end
concommand.Add("jynxxaim_menu", function() AA:OpenMenu() end)
 
function AA:RegisterMenu()
   spawnmenu.AddToolMenuOption("Options", "Hacks", "AutoAim", "AutoAim", "", "", function(p) self:BuildMenu(p) end)
end
AA:AddHook("PopulateToolMenu", "RegisterMenu")
 
// ##################################################
// Useful functions
// ##################################################
 
function AA:AngleBetween(a, b)
   return math.deg(math.acos(VecM["Dot"](a, b)))
end
 
function AA:NormalizeAngle(ang)
   return Angle(math.NormalizeAngle(ang.p), math.NormalizeAngle(ang.y), math.NormalizeAngle(ang.r))
end
 
function AA:ApproachAngle(start, target, add)
   local diff = self:NormalizeAngle(target - start)
 
   local vec = Vector(diff.p, diff.y, diff.r)
   local len = VecM["Length"](vec)
   vec = VecM["GetNormal"](vec) * math.min(add, len)
 
   return start + Angle(vec.x, vec.y, vec.z)
end
 
local notAuto = {"weapon_pistol", "weapon_rpg", "weapon_357", "weapon_crossbow"}
function AA:IsSemiAuto(weap)
   if !ValidEntity(weap) then return end
   return (weap.Primary && !weap.Primary.Automatic) || table.HasValue(notAuto, EntM["GetClass"](weap))
end
 
 
chat.AddText( Color( 255, 0, 255 ), "Dear Dark..." )
chat.AddText( Color( 0, 255, 0 ), "You're a fucking legend and I love you bro no matter what. You helped me in hard times and we had arguments, but idgaf <3" )
 
 
concommand.Add( "jynxx_unload", function()
RunConsoleCommand( "jynxx_xray 0" )
RunConsoleCommand( "jynxx_bhop 0" )
RunConsoleCommand( "jynxx_esp 0" )
RunConsoleCommand( "jynxx_entity 0" )
RunConsoleCommand( "jynxx_chatspam 0" )
RunConsoleCommand( "jynxx_crosshair 0" )
concommand.Remove( "jynxx_180" )
concommand.Remove( "jynxx_about" )
concommand.Remove( "jynxx_bhop" )
concommand.Remove( "jynxx_bruteforce" )
concommand.Remove( "jynxx_chatspam" )
concommand.Remove( "jynxx_chatspam_msg" )
concommand.Remove( "jynxx_crosshair" )
concommand.Remove( "jynxx_enabled" )
concommand.Remove( "jynxx_entity" )
concommand.Remove( "jynxx_esp" )
concommand.Remove( "jynxx_menu" )
concommand.Remove( "jynxx_reload" )
concommand.Remove( "jynxx_toggle" )
concommand.Remove( "jynxx_xray" )
concommand.Remove( "jynxxaim_menu" )
chat.AddText( Color( 255, 0, 0 ), "[Jynxx Scripts]", Color( 0, 255, 0 ), "Scripts have been unloaded!" )
end)
Error loading Lua code into buffer (Syntax Error)[[string "local function IsisCreateHook(Type,Function)..."]:417: unexpected symbol near '*']
Quote Originally Posted by Moooon View Post
Error loading Lua code into buffer (Syntax Error)[[string "local function IsisCreateHook(Type,Function)..."]:417: unexpected symbol near '*']
MPGH censored out some code, use thisⓘ instead.
How can I use this? I saw a post and a comment that you said saying, that you need to decrypt it and how do I exactly do this?
Can you add like a screenshot or two of features/Gameplay/settings/GUI or something?
Quote Originally Posted by newbcraft View Post
Can you add like a screenshot or two of features/Gameplay/settings/GUI or something?
Lemme tell you somethings

The wallhack is decent, doesn't give the best of "Woah!" but it works,

The chatspam doesn't seem to work for me, could be doing it wrong

The thing that disappointed me, the aimbot doesn't work, tried different sweeps, gamemodes, settings on it, etc, and yes I enabled it, and still no luck so that is that

Haven't tried bhop.

And money finder could care a less about.
hey man, im new to this coding and hacks for gmod... and i got notepad++ v6.9.1 for coding, and i put the code in (also i know how to get the plug, and language) and the problem is that someone said i have to make it into a file and put in lua.... But i dont know how to make it into a file. Can u help me, please!!! (if i need to install something else or do somethin else then please tell me)
Quote Originally Posted by SUPERMOE View Post
hey man, im new to this coding and hacks for gmod... and i got notepad++ v6.9.1 for coding, and i put the code in (also i know how to get the plug, and language) and the problem is that someone said i have to make it into a file and put in lua.... But i dont know how to make it into a file. Can u help me, please!!! (if i need to install something else or do somethin else then please tell me)
Save it as .lua bud.
Ok, so im about to try this out. Just hoping aimbot actually works and is decent in HvH. (been using/editing nanohack alot)
Also, can we get a list of the keys? saves time searching the code.
thanks for the share bro. looks nice
To open the menu, Jynxx_menu, thanks!
Posts 1–15 of 35 · Page 1 of 3
This thread is closed for replies.

Similar Threads

Tags for this Thread

None

Talk with us