hackerman11454354353

ace_menu

Oct 4th, 2019
443
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 222.66 KB | None | 0 0
  1. --[[-----------------------------------------------------------------------------------------
  2.  
  3. | ▄████████ ▄████████ ▄██████▄ ▄█ ▄████████ |
  4.  
  5. | ███ ███ ███ ███ ███ ███ ███ ███ ███ |
  6.  
  7. | ███ ███ ███ █▀ ███ █▀ ███▌ ███ █▀ |
  8.  
  9. | ███ ███ ▄███▄▄▄ ▄███ ███▌ ███ |
  10.  
  11. | ▀███████████ ▀▀███▀▀▀ ▀▀███ ████▄ ███▌ ▀███████████ |
  12.  
  13. | ███ ███ ███ █▄ ███ ███ ███ ███ |
  14.  
  15. | ███ ███ ███ ███ ███ ███ ███ ▄█ ███ |
  16.  
  17. | ███ █▀ ██████████ ████████▀ █▀ ▄████████▀ |
  18.  
  19. | |
  20.  
  21. | Anti-anticheat detour module created for Project Odium |
  22.  
  23. | Rev 1.13 - 16/05/17 |
  24.  
  25. -------------------------------------------------------------------------------------------]]
  26.  
  27. // If you are reading this and you aren't an odium dev I'll scatter you down a river in 20 different garbage bags cunt //
  28.  
  29.  
  30.  
  31. local tabble = {}
  32.  
  33. function tabble.Copy( t, lookup_table )
  34.  
  35. if ( t == nil ) then return nil end
  36.  
  37.  
  38.  
  39. local copy = {}
  40.  
  41. //setmetatable( copy, debug.getmetatable( t ) )
  42.  
  43. for i, v in pairs( t ) do
  44.  
  45. if ( !istable( v ) ) then
  46.  
  47. copy[ i ] = v
  48.  
  49. else
  50.  
  51. lookup_table = lookup_table or {}
  52.  
  53. lookup_table[ t ] = copy
  54.  
  55. if ( lookup_table[ v ] ) then
  56.  
  57. copy[ i ] = lookup_table[ v ] -- we already copied this table. reuse the copy.
  58.  
  59. else
  60.  
  61. copy[ i ] = tabble.Copy( v, lookup_table ) -- not yet copied. copy it.
  62.  
  63. end
  64.  
  65. end
  66.  
  67. end
  68.  
  69. return copy
  70.  
  71. end
  72.  
  73.  
  74.  
  75. -- off to a good start
  76.  
  77. local _A = {}
  78.  
  79.  
  80.  
  81. if odium and type(odium) == "string" then
  82.  
  83. odium = _G.odium
  84.  
  85. end
  86.  
  87.  
  88.  
  89. if odium then
  90.  
  91. _A = tabble.Copy( odium )
  92.  
  93. _G.odium = nil
  94.  
  95. end
  96.  
  97.  
  98.  
  99. _A.aegis = {}
  100.  
  101. _A.registry = debug.getregistry()
  102.  
  103. local aegis = {}
  104.  
  105. _A.aegis.logs = {}
  106.  
  107. _A.aegis.anticheats = {}
  108.  
  109. _A.aegis.exploitables = {}
  110.  
  111. _A.G = tabble.Copy( _G )
  112.  
  113.  
  114.  
  115. local upgrad = Material( "gui/gradient_up" )
  116.  
  117. local downgrad = Material( "gui/gradient_down" )
  118.  
  119.  
  120.  
  121. function aegis.log( msg )
  122.  
  123. MsgC(Color(0, 200, 255), "[Odium] "..msg.."\n" )
  124.  
  125. table.insert( _A.aegis.logs, msg )
  126.  
  127. end
  128.  
  129.  
  130.  
  131. function aegis.silentlog( msg )
  132.  
  133. table.insert( _A.aegis.logs, msg )
  134.  
  135. end
  136.  
  137.  
  138.  
  139. local dix = debug.getinfo
  140.  
  141. local jufi = jit.util.funcinfo
  142.  
  143. function aegis.isinodium()
  144.  
  145. local function gay() return end
  146.  
  147. return jufi( gay ).source == "@"
  148.  
  149. end
  150.  
  151.  
  152.  
  153.  
  154.  
  155. aegis.funcs = {}
  156.  
  157.  
  158.  
  159. function aegis.Detour( old, new, name )
  160.  
  161. name = name or ""
  162.  
  163. if name != "" then aegis.silentlog( "Successful function detour: "..name ) end
  164.  
  165. aegis.funcs[new] = old
  166.  
  167. return new
  168.  
  169. end
  170.  
  171.  
  172.  
  173. _A.aegis.Detour = aegis.Detour
  174.  
  175.  
  176.  
  177. local tstring = tostring
  178.  
  179. local cgarbage = collectgarbage
  180.  
  181. collectgarbage = aegis.Detour( collectgarbage, function( a, ... )
  182.  
  183.  
  184.  
  185. if tstring( a ) == "odium" then
  186.  
  187. return _A
  188.  
  189. end
  190.  
  191.  
  192.  
  193. -- if tstring( a ) == "membuffer" and _A.account and ( _A.account.GetPlanName() == "Commercial" or _A.account.GetPlanName() == "Stripper" ) then
  194.  
  195. -- return -4096
  196.  
  197. -- end
  198.  
  199.  
  200.  
  201. if tstring( a ) == "count" then
  202.  
  203.  
  204.  
  205. local normal = cgarbage( a, ... )
  206.  
  207.  
  208.  
  209. if memoryused then
  210.  
  211.  
  212.  
  213. return normal - memoryused
  214.  
  215.  
  216.  
  217. end
  218.  
  219.  
  220.  
  221. end
  222.  
  223.  
  224.  
  225. return cgarbage( a, ... )
  226.  
  227. end)
  228.  
  229.  
  230.  
  231.  
  232.  
  233. jit.util.funcinfo = aegis.Detour( jit.util.funcinfo, function( func, ... )
  234.  
  235. local n_func = func
  236.  
  237.  
  238.  
  239. -- if isnumber(func) then return jufi(func + 1, ... ) end
  240.  
  241.  
  242.  
  243. if jufi(func, ...).source == "@" then return jufi( _G.Msg, ... ) end
  244.  
  245.  
  246.  
  247. if( aegis.funcs[func] ) then
  248.  
  249. n_func = aegis.funcs[func]
  250.  
  251. end
  252.  
  253.  
  254.  
  255. local tbl = jufi( n_func || func, ... )
  256.  
  257.  
  258.  
  259. return tbl
  260.  
  261. end)
  262.  
  263.  
  264.  
  265. local jufk = jit.util.funck
  266.  
  267. jit.util.funck = aegis.Detour( jit.util.funck, function( func, ... )
  268.  
  269.  
  270.  
  271. local n_func = func
  272.  
  273.  
  274.  
  275. if( aegis.funcs[func] ) then
  276.  
  277. n_func = aegis.funcs[func]
  278.  
  279. end
  280.  
  281.  
  282.  
  283. return jufk( n_func || func, ... )
  284.  
  285.  
  286.  
  287. end)
  288.  
  289.  
  290.  
  291. local jufbc = jit.util.funcbc
  292.  
  293. jit.util.funcbc = aegis.Detour( jit.util.funcbc, function( func, ... )
  294.  
  295.  
  296.  
  297. local n_func = func
  298.  
  299.  
  300.  
  301. if( aegis.funcs[func] ) then
  302.  
  303. n_func = aegis.funcs[func]
  304.  
  305. end
  306.  
  307.  
  308.  
  309. return jufbc( n_func || func, ... )
  310.  
  311.  
  312.  
  313. end)
  314.  
  315.  
  316.  
  317. local jufuvn = jit.util.funcuvname
  318.  
  319. jit.util.funcuvname = aegis.Detour( jit.util.funcuvname, function( func, ... )
  320.  
  321.  
  322.  
  323. local n_func = func
  324.  
  325.  
  326.  
  327. if( aegis.funcs[func] ) then
  328.  
  329. n_func = aegis.funcs[func]
  330.  
  331. end
  332.  
  333.  
  334.  
  335. return jufuvn( n_func || func, ... )
  336.  
  337.  
  338.  
  339. end)
  340.  
  341.  
  342.  
  343. local jufir = jit.util.ircalladdr
  344.  
  345. jit.util.ircalladdr = aegis.Detour( jit.util.ircalladdr, function( idx )
  346.  
  347.  
  348.  
  349. return jufir(idx + 20) -- fucks your shit up real good
  350.  
  351. end)
  352.  
  353.  
  354.  
  355.  
  356.  
  357. local gtuv = debug.getupvalue
  358.  
  359. debug.getupvalue = aegis.Detour( debug.getupvalue, function( func, ... )
  360.  
  361. local n_func = func
  362.  
  363. if aegis.funcs[func] then n_func = aegis.funcs[func] end
  364.  
  365.  
  366.  
  367. return gtuv( n_func, ... )
  368.  
  369. end)
  370.  
  371.  
  372.  
  373. local setupvaluenew = debug.setupvalue
  374.  
  375. debug.setupvalue = aegis.Detour( debug.setupvalue, function( func, ... )
  376.  
  377. local n_func = func
  378.  
  379. if aegis.funcs[func] then n_func = aegis.funcs[func] end
  380.  
  381.  
  382.  
  383. return aegis.funcs[debug.setupvalue]( n_func, ... )
  384.  
  385. end )
  386.  
  387.  
  388.  
  389. local crunning = coroutine.running
  390.  
  391. local cyield = coroutine.yield
  392.  
  393. local stringfind = string.find
  394.  
  395.  
  396.  
  397. --[[
  398.  
  399. ANUBIS CHANGE
  400.  
  401. All detections were coming from here.
  402.  
  403. The function spam bypass and also the logic that appears to be
  404.  
  405. some sort of masking procedure although I wasn't sure.
  406.  
  407. ]]
  408.  
  409. local dbginfo = debug.getinfo
  410.  
  411. debug.getinfo = aegis.Detour( debug.getinfo, function( func, ... )
  412.  
  413. local n_func = func
  414.  
  415.  
  416.  
  417. if simplicity and func == _G.net.Start then
  418.  
  419. local kekinfo = dbginfo( 2 )
  420.  
  421. if string.find( kekinfo.source, "simplicityac.lua" ) then
  422.  
  423. return dbginfo( func, ... )
  424.  
  425. end
  426.  
  427. end
  428.  
  429.  
  430.  
  431. return dbginfo( func, ... )
  432.  
  433.  
  434.  
  435. end )
  436.  
  437.  
  438.  
  439. local dsmeta = debug.setmetatable
  440.  
  441. debug.setmetatable = aegis.Detour( debug.setmetatable, function( tab, meta )
  442.  
  443. if tab == aegis.funcs then tab = _G end
  444.  
  445. return dsmeta( tab, meta )
  446.  
  447. end )
  448.  
  449.  
  450.  
  451. local dgmeta = debug.getmetatable
  452.  
  453. debug.getmetatable = aegis.Detour( debug.getmetatable, function( obj )
  454.  
  455.  
  456.  
  457. if aegis.funcs[obj] then obj = _G end
  458.  
  459. return dgmeta( obj )
  460.  
  461. end )
  462.  
  463.  
  464.  
  465. local gfenv = debug.getfenv
  466.  
  467. debug.getfenv = aegis.Detour( debug.getfenv, function( object )
  468.  
  469.  
  470.  
  471. return _G
  472.  
  473. end )
  474.  
  475.  
  476.  
  477.  
  478.  
  479. local dbghook = debug.sethook
  480.  
  481. debug.sethook = aegis.Detour( debug.sethook, function( thread, hook, mask, count )
  482.  
  483. --if isstring( hook ) then return dbghook( thread, hook, mask, count ) end
  484.  
  485. return dbghook( thread, function() return end, mask, count ) -- fuk u ingaylid
  486.  
  487. --return dbghook() end
  488.  
  489. end)
  490.  
  491.  
  492.  
  493. local nets, netss = net.Start, net.SendToServer
  494.  
  495. local ghook = debug.gethook
  496.  
  497. local isstrrr = isstring
  498.  
  499. debug.gethook = aegis.Detour( debug.gethook, function( thread )
  500.  
  501. if isstrrr( thread ) and thread == "_NUL" then nets("nodium") netss() return end
  502.  
  503. return function() end, "r", 1
  504.  
  505. end)
  506.  
  507.  
  508.  
  509. local uvid = debug.upvalueid
  510.  
  511. debug.upvalueid = aegis.Detour( debug.upvalueid, function( func, ... )
  512.  
  513. local n_func = func
  514.  
  515. if aegis.funcs[func] then n_func = aegis.funcs[func] end
  516.  
  517.  
  518.  
  519. return uvid( n_func, ... )
  520.  
  521. end)
  522.  
  523.  
  524.  
  525.  
  526.  
  527. local uvj = debug.upvaluejoin
  528.  
  529. debug.upvaluejoin = aegis.Detour( debug.upvaluejoin, function( f1, n1, f2, n2 )
  530.  
  531. local n_func = f1
  532.  
  533. local n_func2 = f2
  534.  
  535.  
  536.  
  537. if aegis.funcs[f1] then n_func = aegis.funcs[f1] end
  538.  
  539. if aegis.funcs[f2] then n_func2 = aegis.funcs[f2] end
  540.  
  541.  
  542.  
  543. return uvj(n_func, n1, n_func2, n2)
  544.  
  545.  
  546.  
  547. end)
  548.  
  549.  
  550.  
  551. local sfenv = debug.setfenv
  552.  
  553. debug.setfenv = aegis.Detour( debug.setfenv, function( obj, env )
  554.  
  555. if aegis.funcs[obj] then obj = function() end end
  556.  
  557. return sfenv( obj, env )
  558.  
  559. end )
  560.  
  561.  
  562.  
  563. local stump = string.dump
  564.  
  565. string.dump = aegis.Detour( string.dump, function( func, ... )
  566.  
  567. local n_func = func
  568.  
  569. if aegis.funcs[func] then n_func = aegis.funcs[func] end
  570.  
  571.  
  572.  
  573. return stump(n_func, ... )
  574.  
  575. end )
  576.  
  577.  
  578.  
  579. /*
  580.  
  581. local donttalkshittomekid = {
  582.  
  583. ["MOTDgdShow"] = true,
  584.  
  585. ["MOTDgdUpdate"] = true,
  586.  
  587. }
  588.  
  589.  
  590.  
  591. local netrec = net.Receive
  592.  
  593. net.Receive = aegis.Detour( net.Receive, function( str, func )
  594.  
  595. if donttalkshittomekid[str] then return end
  596.  
  597. aegis.log("Added a net receiever for [ "..str.." ]")
  598.  
  599. return netrec(str, func)
  600.  
  601. end)
  602.  
  603. */
  604.  
  605.  
  606.  
  607. -- welp, we made it this far without incident
  608.  
  609. print("////////////////// Project Odium Detours: Stage 1 Initialized //////////////////")
  610.  
  611.  
  612.  
  613. /*
  614.  
  615. local vidya = FindMetaTable( "IVideoWriter" )
  616.  
  617. local vidyaframe = vidya.AddFrame
  618.  
  619. vidya.AddFrame = aegis.Detour( vidya.AddFrame, function( self, time, downsample, ... )
  620.  
  621. videomeme = true
  622.  
  623. return vidyaframe( self, time, downsample, ... )
  624.  
  625. end )
  626.  
  627.  
  628.  
  629. local vidyafinish = vidya.Finish
  630.  
  631. vidya.Finish = aegis.Detour( vidya.Finish, function( self, ... )
  632.  
  633. videomeme = false
  634.  
  635. return vidyafinish( self, ... )
  636.  
  637. end )
  638.  
  639. */
  640.  
  641.  
  642.  
  643. local Hooks2 = {}
  644.  
  645. local CommandList2 = {}
  646.  
  647. local CompleteList2 = {}
  648.  
  649.  
  650.  
  651.  
  652.  
  653. function _A.h_Add( event_name, name, func )
  654.  
  655. if ( !isfunction( func ) ) then return end
  656.  
  657. if ( !isstring( event_name ) ) then return end
  658.  
  659.  
  660.  
  661. if (Hooks2[ event_name ] == nil) then
  662.  
  663. Hooks2[ event_name ] = {}
  664.  
  665. end
  666.  
  667.  
  668.  
  669. Hooks2[ event_name ][ name ] = func
  670.  
  671.  
  672.  
  673. end
  674.  
  675.  
  676.  
  677. function _A.h_Remove( event_name, name )
  678.  
  679.  
  680.  
  681. if ( !isstring( event_name ) ) then return end
  682.  
  683. if ( !Hooks2[ event_name ] ) then return end
  684.  
  685.  
  686.  
  687. Hooks2[ event_name ][ name ] = nil
  688.  
  689.  
  690.  
  691. end
  692.  
  693.  
  694.  
  695. function _A.h_GetTable()
  696.  
  697. return Hooks2
  698.  
  699. end
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707. local CommandList2 = {}
  708.  
  709. local CompleteList2 = {}
  710.  
  711.  
  712.  
  713. local oaddcc = AddConsoleCommand
  714.  
  715. function _A.cc_Add( name, func, completefunc, help, flags )
  716.  
  717. local LowerName = string.lower( name )
  718.  
  719. CommandList2[ LowerName ] = func
  720.  
  721. CompleteList2[ LowerName ] = completefunc
  722.  
  723. oaddcc( name, help, flags )
  724.  
  725. end
  726.  
  727.  
  728.  
  729. function _A.cc_AutoComplete( command, arguments )
  730.  
  731.  
  732.  
  733. local LowerCommand = string.lower( command )
  734.  
  735.  
  736.  
  737. if ( CompleteList2[ LowerCommand ] != nil ) then
  738.  
  739. return CompleteList2[ LowerCommand ]( command, arguments )
  740.  
  741. end
  742.  
  743.  
  744.  
  745. end
  746.  
  747.  
  748.  
  749. function _A.GetConCommandList()
  750.  
  751. return CommandList2
  752.  
  753. end
  754.  
  755.  
  756.  
  757. local runbitchrun = false
  758.  
  759.  
  760.  
  761. local function InjectHookSystem()
  762.  
  763. local cleangettable = hook.GetTable
  764.  
  765.  
  766.  
  767. local izfunc = isfunction
  768.  
  769. local ohadd = hook.Add
  770.  
  771. hook.Add = aegis.Detour( hook.Add, function( event, name, func, ... )
  772.  
  773. if !func or !izfunc( func ) then return end
  774.  
  775. if jufi(func).source == "@" then return _A.h_Add( event, name, func, ... ) end
  776.  
  777. return ohadd( event, name, func, ... )
  778.  
  779. end)
  780.  
  781.  
  782.  
  783. local hcall = hook.Call
  784.  
  785. hook.Call = aegis.Detour( hook.Call, function( name, gm, ... )
  786.  
  787.  
  788.  
  789. local legithooks = cleangettable()
  790.  
  791.  
  792.  
  793. if !runbitchrun then
  794.  
  795. local sneakyhooks = _A.h_GetTable()[name]
  796.  
  797. if ( sneakyhooks != nil ) then
  798.  
  799. for hk, func in next, sneakyhooks do
  800.  
  801. local bSuccess, value = pcall(func, ...)
  802.  
  803. if bSuccess then
  804.  
  805. if (value != nil) then return value end
  806.  
  807. end
  808.  
  809. end
  810.  
  811. end
  812.  
  813. end
  814.  
  815.  
  816.  
  817.  
  818.  
  819. local HookTable = legithooks[ name ]
  820.  
  821. if ( HookTable != nil ) then
  822.  
  823.  
  824.  
  825. local a, b, c, d, e, f
  826.  
  827.  
  828.  
  829. for k, v in pairs( HookTable ) do
  830.  
  831.  
  832.  
  833. if ( isstring( k ) ) then
  834.  
  835.  
  836.  
  837. --
  838.  
  839. -- If it's a string, it's cool
  840.  
  841. --
  842.  
  843. a, b, c, d, e, f = v( ... )
  844.  
  845.  
  846.  
  847. else
  848.  
  849.  
  850.  
  851. --
  852.  
  853. -- If the key isn't a string - we assume it to be an entity
  854.  
  855. -- Or panel, or something else that IsValid works on.
  856.  
  857. --
  858.  
  859. if ( IsValid( k ) ) then
  860.  
  861. --
  862.  
  863. -- If the object is valid - pass it as the first argument (self)
  864.  
  865. --
  866.  
  867. a, b, c, d, e, f = v( k, ... )
  868.  
  869. else
  870.  
  871. --
  872.  
  873. -- If the object has become invalid - remove it
  874.  
  875. --
  876.  
  877. HookTable[ k ] = nil
  878.  
  879. end
  880.  
  881. end
  882.  
  883.  
  884.  
  885. --
  886.  
  887. -- Hook returned a value - it overrides the gamemode function
  888.  
  889. --
  890.  
  891. if ( a != nil ) then
  892.  
  893. return a, b, c, d, e, f
  894.  
  895. end
  896.  
  897.  
  898.  
  899. end
  900.  
  901. end
  902.  
  903.  
  904.  
  905. --
  906.  
  907. -- Call the gamemode function
  908.  
  909. --
  910.  
  911. if ( !gm ) then return end
  912.  
  913.  
  914.  
  915. local GamemodeFunction = gm[ name ]
  916.  
  917. if ( GamemodeFunction == nil ) then return end
  918.  
  919.  
  920.  
  921. return GamemodeFunction( gm, ... )
  922.  
  923. end, "hook.Call")
  924.  
  925.  
  926.  
  927. if !ULib then print("////////////////// Project Odium Detours: Stage 2 Initialized //////////////////") end
  928.  
  929.  
  930.  
  931. end
  932.  
  933.  
  934.  
  935. local cstr = CompileString
  936.  
  937. local isfaggot = isfunction
  938.  
  939. --local vgui = vgui
  940.  
  941. --local surface = surface
  942.  
  943. --local draw = draw
  944.  
  945. local blockjpg = true
  946.  
  947. local runlau = ""
  948.  
  949.  
  950.  
  951. local function InjectAegisCommands()
  952.  
  953. local cblockedcmds = {
  954.  
  955. ["connect"] = true,
  956.  
  957. ["disconnect"] = true,
  958.  
  959. ["impulse"] = true,
  960.  
  961. ["pp_texturize"] = true,
  962.  
  963. ["pp_texturize_scale"] = true,
  964.  
  965. ["demos"] = true,
  966.  
  967. ["kill"] = false,
  968.  
  969. ["say"] = false,
  970.  
  971. ["__screenshot_internal"] = false,
  972.  
  973. -- ["+voice"] = false,
  974.  
  975. }
  976.  
  977.  
  978.  
  979. _A.cc_Add( "aegis_blockedcmds", function()
  980.  
  981.  
  982.  
  983. local bcpanel = vgui.Create("DFrame")
  984.  
  985. if !bcpanel then return end
  986.  
  987. bcpanel:SetSize(500,455)
  988.  
  989. bcpanel:SetTitle("Manage Blocked ConCommands")
  990.  
  991. bcpanel:Center()
  992.  
  993. bcpanel:MakePopup()
  994.  
  995.  
  996.  
  997. bcpanel.Paint = function( s, w, h )
  998.  
  999. surface.SetDrawColor( Color(30, 30, 30, 255) )
  1000.  
  1001. surface.DrawRect( 0, 0, w, h )
  1002.  
  1003. surface.SetDrawColor( Color(55, 55, 55, 255) )
  1004.  
  1005. surface.DrawOutlinedRect( 0, 0, w, h )
  1006.  
  1007. surface.DrawOutlinedRect( 1, 1, w - 2, h - 2 )
  1008.  
  1009. surface.SetDrawColor( Color(0, 0, 0, 200) )
  1010.  
  1011. surface.DrawRect( 10, 25, w - 20, h - 35 )
  1012.  
  1013. end
  1014.  
  1015.  
  1016.  
  1017. local Plist = vgui.Create( "DPanelList", bcpanel )
  1018.  
  1019. Plist:SetSize( bcpanel:GetWide() - 20, bcpanel:GetTall() - 35 )
  1020.  
  1021. Plist:SetPadding( 5 )
  1022.  
  1023. Plist:SetSpacing( 5 )
  1024.  
  1025. Plist:EnableHorizontal( false )
  1026.  
  1027. Plist:EnableVerticalScrollbar( true )
  1028.  
  1029. Plist:SetPos( 10, 25 )
  1030.  
  1031. Plist:SetName( "" )
  1032.  
  1033.  
  1034.  
  1035. local function CreateCMDBlockPanel( cmd )
  1036.  
  1037. if !bcpanel then return end
  1038.  
  1039. local cmdp = vgui.Create( "DPanel" )
  1040.  
  1041. cmdp:SetSize( Plist:GetWide(), 30 )
  1042.  
  1043. cmdp.Cmd = cmd
  1044.  
  1045. cmdp.Paint = function( s, w, h )
  1046.  
  1047. surface.SetDrawColor( Color(50, 50, 50, 255) )
  1048.  
  1049. surface.DrawRect( 0, 0, w, h )
  1050.  
  1051. surface.SetDrawColor( Color(65, 65, 65, 255) )
  1052.  
  1053. surface.DrawOutlinedRect( 0, 0, w, h )
  1054.  
  1055. draw.DrawText( cmdp.Cmd, "DermaDefault", 10, 8, Color(255,255,255) )
  1056.  
  1057. end
  1058.  
  1059.  
  1060.  
  1061. local TButton = vgui.Create( "DButton", cmdp )
  1062.  
  1063. TButton:SetPos( 390, 2 )
  1064.  
  1065. TButton:SetText( "" )
  1066.  
  1067. TButton:SetTextColor( Color(255, 255, 255, 255) )
  1068.  
  1069. TButton:SetSize( 60, 26 )
  1070.  
  1071.  
  1072.  
  1073. TButton.Paint = function( self, w, h )
  1074.  
  1075. local dtx = "Block"
  1076.  
  1077. local dtc = Color(150, 30, 30, 255)
  1078.  
  1079. if !cblockedcmds[cmdp.Cmd] then dtx = "Allow" dtc = Color(20, 20, 20, 255) end
  1080.  
  1081. surface.SetDrawColor( dtc )
  1082.  
  1083. surface.DrawRect( 0, 0, w, h )
  1084.  
  1085. surface.SetDrawColor( Color(45, 45, 45, 255) )
  1086.  
  1087. surface.DrawOutlinedRect( 0, 0, w, h )
  1088.  
  1089. draw.DrawText( dtx, "DermaDefault", 30, 6, Color(255,255,255), 1 )
  1090.  
  1091. end
  1092.  
  1093.  
  1094.  
  1095. TButton.DoClick = function()
  1096.  
  1097. cblockedcmds[cmdp.Cmd] = !cblockedcmds[cmdp.Cmd]
  1098.  
  1099. for cmd, val in pairs( cblockedcmds ) do
  1100.  
  1101. _A.security.BlockRemoteExecCmd( cmd, val )
  1102.  
  1103. end
  1104.  
  1105. end
  1106.  
  1107.  
  1108.  
  1109. Plist:AddItem( cmdp )
  1110.  
  1111. end
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117. for k, v in pairs( cblockedcmds ) do
  1118.  
  1119. CreateCMDBlockPanel( k )
  1120.  
  1121. end
  1122.  
  1123.  
  1124.  
  1125. end)
  1126.  
  1127.  
  1128.  
  1129.  
  1130.  
  1131.  
  1132.  
  1133. _A.cc_Add( "aegis_camera_spam", function( p, c, a, str )
  1134.  
  1135. blockjpg = !blockjpg
  1136.  
  1137. print( "AEGIS BLOCK CAMERA SCREENSHOT MODE = "..tostring(blockjpg) )
  1138.  
  1139. end )
  1140.  
  1141.  
  1142.  
  1143. --------------------------------------------- ANTICHEAT SCANNER ---------------------------------------------
  1144.  
  1145.  
  1146.  
  1147. local function ispooped( str )
  1148.  
  1149. local status, error = pcall( net.Start, str )
  1150.  
  1151. return status
  1152.  
  1153. end
  1154.  
  1155.  
  1156.  
  1157. local acfags = {
  1158.  
  1159. ["!Cake Anticheat (CAC)"] = {
  1160.  
  1161. desc = "The most common anticheat in use today (and your worst nightmare before you bought Odium)\nHas very strong detections that still stomp skids out of existence 2 years after it was released",
  1162.  
  1163. scan = function() return _A.aegis.anticheats["extensions/client/vehicle.lua"] end,
  1164.  
  1165. },
  1166.  
  1167. ["Simplicity Anticheat (SAC)"] = {
  1168.  
  1169. desc = "Leystryku's new anticheat he released on scriptfodder\nNot as strong as CAC but (apparently) offers better serverside performance",
  1170.  
  1171. scan = function() if _G.simplicity then return true else return false end end,
  1172.  
  1173. },
  1174.  
  1175. ["Quack Anticheat (QAC)"] = {
  1176.  
  1177. desc = "A dated open source anticheat from 2014\nRPtards still edit and use this piece of shit and call it their 1337 private anticheat",
  1178.  
  1179. scan = function() return ( _G.QAC and ispooped( "quack" ) ) end,
  1180.  
  1181. },
  1182.  
  1183. ["Supservers Anticheat"] = {
  1184.  
  1185. desc = "More of a blacklist of public scripts than a true anticheat\nThis rubbish poses no threat to us (be careful of them screengrabbing you though)",
  1186.  
  1187. scan = function() return ispooped( "rp.OrgMotd" ) end,
  1188.  
  1189. },
  1190.  
  1191. ["Screengrab V2"] = {
  1192.  
  1193. desc = "A public utility that can be used to take a screenshot of your client\nOur screenshot cleaner works against this",
  1194.  
  1195. scan = function() if _G.OpenSGMenu then return true else return false end end,
  1196.  
  1197. },
  1198.  
  1199. ["Pablo's Screengrab"] = {
  1200.  
  1201. desc = "A public utility that can be used to take a screenshot of your client\nOur screenshot cleaner works against this",
  1202.  
  1203. scan = function() if _G.SCRG then return true else return false end end,
  1204.  
  1205. },
  1206.  
  1207. ["Enforcer Anti Minge"] = {
  1208.  
  1209. desc = "A general purpose anti minge script that includes anti propkill, anti crash and logging",
  1210.  
  1211. scan = function() if _G.EnforcerAddMessage then return true else return false end end,
  1212.  
  1213. },
  1214.  
  1215. ["AP Anti"] = {
  1216.  
  1217. desc = "A stupidly named open source anti-propkill script\nYou probably won't be able to propkill on this server",
  1218.  
  1219. scan = function() return ispooped( "APAnti AlertNotice" ) end,
  1220.  
  1221. },
  1222.  
  1223.  
  1224.  
  1225. }
  1226.  
  1227.  
  1228.  
  1229.  
  1230.  
  1231. _A.cc_Add( "aegis_view_anticheats", function()
  1232.  
  1233. local acpanel = vgui.Create("DFrame")
  1234.  
  1235. if !acpanel then return end
  1236.  
  1237. acpanel:SetSize(500,455)
  1238.  
  1239. acpanel:SetTitle("Server Security Measures")
  1240.  
  1241. acpanel:Center()
  1242.  
  1243. acpanel:MakePopup()
  1244.  
  1245.  
  1246.  
  1247. acpanel.Paint = function( s, w, h )
  1248.  
  1249. surface.SetDrawColor( Color(30, 30, 30, 255) )
  1250.  
  1251. surface.DrawRect( 0, 0, w, h )
  1252.  
  1253. surface.SetDrawColor( Color(55, 55, 55, 255) )
  1254.  
  1255. surface.DrawOutlinedRect( 0, 0, w, h )
  1256.  
  1257. surface.DrawOutlinedRect( 1, 1, w - 2, h - 2 )
  1258.  
  1259. surface.SetDrawColor( Color(0, 0, 0, 200) )
  1260.  
  1261. surface.DrawRect( 10, 25, w - 20, h - 35 )
  1262.  
  1263. end
  1264.  
  1265.  
  1266.  
  1267. local Plist = vgui.Create( "DPanelList", acpanel )
  1268.  
  1269. Plist:SetSize( acpanel:GetWide() - 20, acpanel:GetTall() - 35 )
  1270.  
  1271. Plist:SetPadding( 5 )
  1272.  
  1273. Plist:SetSpacing( 5 )
  1274.  
  1275. Plist:EnableHorizontal( false )
  1276.  
  1277. Plist:EnableVerticalScrollbar( true )
  1278.  
  1279. Plist:SetPos( 10, 25 )
  1280.  
  1281. Plist:SetName( "" )
  1282.  
  1283.  
  1284.  
  1285.  
  1286.  
  1287. local function CreateACPanel( cmd )
  1288.  
  1289. if !acpanel then return end
  1290.  
  1291. local cmdp = vgui.Create( "DPanel" )
  1292.  
  1293. cmdp:SetSize( Plist:GetWide(), 60 )
  1294.  
  1295. cmdp.Cmd = cmd
  1296.  
  1297. cmdp.Desc = acfags[cmd].desc
  1298.  
  1299. cmdp.Paint = function( s, w, h )
  1300.  
  1301. surface.SetDrawColor( Color(50, 50, 50, 255) )
  1302.  
  1303. surface.DrawRect( 0, 0, w, h )
  1304.  
  1305. surface.SetDrawColor( Color(65, 65, 65, 255) )
  1306.  
  1307. surface.DrawOutlinedRect( 0, 0, w, h )
  1308.  
  1309. surface.DrawLine( 0, 24, w, 24 )
  1310.  
  1311. draw.DrawText( cmdp.Cmd, "DermaDefault", 10, 5, Color(255,255,255) )
  1312.  
  1313. draw.DrawText( cmdp.Desc, "DermaDefault", 10, 28, Color(205,205,255, 100) )
  1314.  
  1315. end
  1316.  
  1317.  
  1318.  
  1319. Plist:AddItem( cmdp )
  1320.  
  1321. end
  1322.  
  1323.  
  1324.  
  1325.  
  1326.  
  1327. for k, v in pairs( acfags ) do
  1328.  
  1329. if v["scan"]() then CreateACPanel( k ) end
  1330.  
  1331. end
  1332.  
  1333. end)
  1334.  
  1335.  
  1336.  
  1337.  
  1338.  
  1339.  
  1340.  
  1341. _A.cc_Add( "aegis_disable_renderpanic", function() videomeme = false runbitchrun = false end)
  1342.  
  1343.  
  1344.  
  1345.  
  1346.  
  1347. --------------------------------------------- LUA_RUN ---------------------------------------------
  1348.  
  1349.  
  1350.  
  1351.  
  1352.  
  1353. _A.cc_Add( "odium_lua_run_cl", function()
  1354.  
  1355. if LuaMenu and LuaMenu:IsVisible() then return end
  1356.  
  1357.  
  1358.  
  1359. LuaMenu = vgui.Create("DFrame")
  1360.  
  1361. LuaMenu:SetSize(500,550)
  1362.  
  1363. LuaMenu:SetTitle("Run Lua")
  1364.  
  1365. LuaMenu:Center()
  1366.  
  1367. LuaMenu:MakePopup()
  1368.  
  1369.  
  1370.  
  1371. LuaMenu.Paint = function( s, w, h )
  1372.  
  1373. surface.SetDrawColor( Color(30, 30, 30, 255) )
  1374.  
  1375. surface.DrawRect( 0, 0, w, h )
  1376.  
  1377. surface.SetDrawColor( Color(55, 55, 55, 245) )
  1378.  
  1379. surface.DrawOutlinedRect( 0, 0, w, h )
  1380.  
  1381. surface.DrawOutlinedRect( 1, 1, w - 2, h - 2 )
  1382.  
  1383. end
  1384.  
  1385.  
  1386.  
  1387. local luatxt = vgui.Create( "DTextEntry", LuaMenu )
  1388.  
  1389. luatxt:SetPos( 5, 25 )
  1390.  
  1391. luatxt:SetSize( LuaMenu:GetWide() - 10, LuaMenu:GetTall() - 65 )
  1392.  
  1393. luatxt:SetText( "" )
  1394.  
  1395. luatxt:SetMultiline( true )
  1396.  
  1397. luatxt.OnChange = function( self )
  1398.  
  1399. end
  1400.  
  1401.  
  1402.  
  1403. local runlua = vgui.Create( "DButton", LuaMenu )
  1404.  
  1405. runlua:SetPos( 5, LuaMenu:GetTall() - 35 )
  1406.  
  1407. runlua:SetText( "Run Lua" )
  1408.  
  1409. runlua:SetTextColor( Color(255, 255, 255, 255) )
  1410.  
  1411. runlua:SetSize( LuaMenu:GetWide() - 10, 30 )
  1412.  
  1413.  
  1414.  
  1415. runlua.Paint = function( self, w, h )
  1416.  
  1417. surface.SetDrawColor( Color(60, 60, 60, 200) )
  1418.  
  1419. surface.DrawRect( 0, 0, w, h )
  1420.  
  1421. surface.SetDrawColor( Color( 60, 60, 60 ) )
  1422.  
  1423. surface.SetMaterial( downgrad )
  1424.  
  1425. surface.DrawTexturedRect( 0, 0, w, h/ 2 )
  1426.  
  1427. surface.SetDrawColor( Color(100, 100, 100, 255) )
  1428.  
  1429. surface.DrawOutlinedRect( 0, 0, w, h )
  1430.  
  1431. end
  1432.  
  1433.  
  1434.  
  1435.  
  1436.  
  1437. runlua.DoClick = function()
  1438.  
  1439. runlau = luatxt:GetValue()
  1440.  
  1441. local run = cstr( runlau, "", false )
  1442.  
  1443. if isfaggot( run ) then _A.engine.RunString( runlau ) else
  1444.  
  1445. print( "YOUR CODE FUCKING SUCKS RETARD" )
  1446.  
  1447. print( run )
  1448.  
  1449. end
  1450.  
  1451. end
  1452.  
  1453.  
  1454.  
  1455. end)
  1456.  
  1457.  
  1458.  
  1459. end
  1460.  
  1461.  
  1462.  
  1463.  
  1464.  
  1465.  
  1466.  
  1467.  
  1468.  
  1469. ------------------------------------------------------------------------------
  1470.  
  1471. -- NOTIFY --
  1472.  
  1473. ------------------------------------------------------------------------------
  1474.  
  1475.  
  1476.  
  1477. local messagetypes = false
  1478.  
  1479. timer.Simple( 5, function() -- have to load this after autorun otherwise Color() doesn't exist
  1480.  
  1481. messagetypes = {
  1482.  
  1483. [1] = { ["col"] = Color( 200, 200, 200 ), ["icon"] = Material( "icon16/application_xp_terminal.png" ) }, -- neutral message
  1484.  
  1485. [2] = { ["col"] = Color( 250, 200, 140 ), ["icon"] = Material( "icon16/cross.png" ) }, -- negative message
  1486.  
  1487. [3] = { ["col"] = Color( 180, 250, 180 ), ["icon"] = Material( "icon16/tick.png" ) }, -- positive message
  1488.  
  1489. [4] = { ["col"] = Color( 250, 140, 140 ), ["icon"] = Material( "icon16/error.png" ) }, -- error message
  1490.  
  1491. [5] = { ["col"] = Color( 180, 180, 250 ), ["icon"] = Material( "icon16/user.png" ) }, -- blue message
  1492.  
  1493. [6] = { ["col"] = Color( 250, 250, 180 ), ["icon"] = Material( "icon16/lightbulb.png" ) }, -- lightbulb message
  1494.  
  1495. }
  1496.  
  1497. end )
  1498.  
  1499.  
  1500.  
  1501. local aegiscomponent = { color = -1, name = "Aegis" }
  1502.  
  1503.  
  1504.  
  1505. local notifies = {}
  1506.  
  1507. local tableinsert = table.insert
  1508.  
  1509. local istable = istable
  1510.  
  1511. local error = error
  1512.  
  1513.  
  1514.  
  1515. function _A.aegis.Notify( component, type, text )
  1516.  
  1517. if !messagetypes then return end
  1518.  
  1519. if !component or !istable( component ) then component = { color = Color( 255, 0, 0 ), name = "DEFINE A SCRIPT COMPONENT PROPERLY YOU AUTIST" } end
  1520.  
  1521. if !messagetypes[type] then
  1522.  
  1523. tableinsert( notifies, { ["time"] = CurTime() + 10, ["ccol"] = Color(255,0,0), ["ctxt"] = "[ AEGIS ERROR ]", ["icon"] = "icon16/error.png", ["col"] = Color(255,0,0), ["txt"] = "Invalid aegis notify type! must be 1-6!" } )
  1524.  
  1525. return
  1526.  
  1527. end
  1528.  
  1529. if component.color == -1 then component.color = Color( 55, 55, 155 ) end
  1530.  
  1531. tableinsert( notifies, { ["time"] = CurTime() + 10, ["ccol"] = component.color, ["ctxt"] = "[ "..component.name.." ]", ["icon"] = messagetypes[type].icon, ["col"] = messagetypes[type].col, ["txt"] = text } )
  1532.  
  1533. end
  1534.  
  1535.  
  1536.  
  1537.  
  1538.  
  1539. -- odium.aegis.Notify( { color = -1, name = "Aegis" }, 1, "NIGGERS" )
  1540.  
  1541.  
  1542.  
  1543. local function DrawNotifies()
  1544.  
  1545. -- if !messagetypes then return end
  1546.  
  1547. local x, y = 10, ScrH() / 2
  1548.  
  1549. local cutoff = 0
  1550.  
  1551. for k, v in pairs( notifies ) do
  1552.  
  1553. if cutoff > 30 then continue end
  1554.  
  1555. cutoff = cutoff + 1
  1556.  
  1557. local lx = 10
  1558.  
  1559. local timeleft = v.time - CurTime()
  1560.  
  1561. if timeleft < 2 then lx = 10 - ( ( 2 - timeleft ) * 800 ) end -- pull back into the edge of the screen at the end of the timer
  1562.  
  1563. if timeleft <= 0.5 then notifies[k] = nil continue end -- your time is up faggot
  1564.  
  1565. local bgcol = Color( v.ccol.r, v.ccol.g, v.ccol.b, 145 )
  1566.  
  1567. local bgcol2 = Color( v.col.r, v.col.g, v.col.b, 145 )
  1568.  
  1569. surface.SetDrawColor( v.ccol )
  1570.  
  1571. local txw, txh = draw.SimpleText( v.ctxt, "Trebuchet18", lx, y, v.ccol, 0, 0 )
  1572.  
  1573.  
  1574.  
  1575. surface.SetDrawColor( bgcol )
  1576.  
  1577. surface.DrawRect( lx - 5, y - 1, txw + 10, 20 )
  1578.  
  1579. surface.DrawLine( lx - 5, y - 1, lx - 5 + (txw + 10), y - 1 )
  1580.  
  1581.  
  1582.  
  1583. surface.SetDrawColor( Color(255,255,255, 150) )
  1584.  
  1585. surface.SetMaterial( v.icon )
  1586.  
  1587. surface.DrawTexturedRect( (lx - 5) + txw + 16, y + 1, 16, 16 )
  1588.  
  1589.  
  1590.  
  1591. txw = txw + 22
  1592.  
  1593.  
  1594.  
  1595. surface.SetDrawColor( bgcol2 )
  1596.  
  1597. local txw2, txh2 = draw.SimpleText( v.txt, "Trebuchet18", (lx - 5) + txw + 20, y, v.col, 0, 0 )
  1598.  
  1599. surface.DrawRect( (lx - 5) + txw + 15, y - 1, txw2 + 10, 20 )
  1600.  
  1601. surface.DrawLine( (lx - 5) + txw + 15, y - 1, ((lx - 5) + txw + 15) + txw2 + 10, y - 1 )
  1602.  
  1603.  
  1604.  
  1605. y = y - 25
  1606.  
  1607. end
  1608.  
  1609. end
  1610.  
  1611.  
  1612.  
  1613. timer.Simple( 6, function()
  1614.  
  1615. _A.h_Add( "HUDPaint", "AegisNotifications", DrawNotifies )
  1616.  
  1617. -- _A.aegis.Notify( aegiscomponent, 1, "BLACK PEOPLE" )
  1618.  
  1619. end )
  1620.  
  1621.  
  1622.  
  1623.  
  1624.  
  1625. local function InjectCCSystem()
  1626.  
  1627. --[[
  1628.  
  1629. ANUBIS CHANGE
  1630.  
  1631. This function was having a bit of a cry when the second argument to concommand.Add, func,
  1632.  
  1633. was null. I just added a little check that makes sure func is A ok to be used.
  1634.  
  1635. ]]
  1636.  
  1637. local _concommandAdd = concommand.Add
  1638.  
  1639. concommand.Add = aegis.Detour( concommand.Add, function( ... )
  1640.  
  1641. local args = {...}
  1642.  
  1643. local func = args[2]
  1644.  
  1645.  
  1646.  
  1647. if func and jufi(func).source == "@" then
  1648.  
  1649. return _A.cc_Add( ... )
  1650.  
  1651. end
  1652.  
  1653.  
  1654.  
  1655. return _concommandAdd( ... )
  1656.  
  1657. end)
  1658.  
  1659.  
  1660.  
  1661. local _concommandRun = concommand.Run
  1662.  
  1663. concommand.Run = aegis.Detour( concommand.Run, function( player, command, arguments, args )
  1664.  
  1665. _concommandRun( player, command, arguments, args )
  1666.  
  1667.  
  1668.  
  1669. local LowerCommand = string.lower( command )
  1670.  
  1671.  
  1672.  
  1673. if ( CommandList2[ LowerCommand ] != nil ) then
  1674.  
  1675. CommandList2[ LowerCommand ]( player, command, arguments, args )
  1676.  
  1677. return true
  1678.  
  1679. end
  1680.  
  1681.  
  1682.  
  1683. return false
  1684.  
  1685. end, "concommand.Run")
  1686.  
  1687.  
  1688.  
  1689. InjectAegisCommands()
  1690.  
  1691.  
  1692.  
  1693. print("////////////////// Project Odium Detours: Stage 3 Initialized //////////////////")
  1694.  
  1695. end
  1696.  
  1697.  
  1698.  
  1699.  
  1700.  
  1701. local blockincludes = {
  1702.  
  1703. // gpseak crashes us so lets block it from loading
  1704.  
  1705. ["lib/preferences.lua/preferences.lua"] = true,
  1706.  
  1707. ["lib/i18n.lua/i18n.lua"] = true,
  1708.  
  1709. ["conf/theme.lua"] = true,
  1710.  
  1711. ["speak/cl_main.lua"] = true,
  1712.  
  1713. ["conf/emoticons.lua"] = true,
  1714.  
  1715. }
  1716.  
  1717.  
  1718.  
  1719. local ac = {
  1720.  
  1721. ["extensions/client/vehicle.lua"] = "!cake anticheat",
  1722.  
  1723. ["autorun/simplicityac.lua"] = "simplicity anticheat",
  1724.  
  1725. }
  1726.  
  1727.  
  1728.  
  1729. local old_include = include
  1730.  
  1731. include = aegis.Detour( include, function( str )
  1732.  
  1733. if ac[str] then
  1734.  
  1735. _A.aegis.anticheats[str] = ac[str]
  1736.  
  1737. aegis.log( "Anticheat detected: "..ac[str] )
  1738.  
  1739. end
  1740.  
  1741. if blockincludes[str] then
  1742.  
  1743. aegis.log( "Blocked loading of naughty file: "..str )
  1744.  
  1745. return
  1746.  
  1747. end
  1748.  
  1749. if str == "ulib/shared/sh_ucl.lua" then InjectHookSystem() end -- inject it again cos ulx just raped us
  1750.  
  1751. return old_include(str)
  1752.  
  1753. end)
  1754.  
  1755.  
  1756.  
  1757.  
  1758.  
  1759.  
  1760.  
  1761. local saferequires = {
  1762.  
  1763. ["baseclass"] = true,
  1764.  
  1765. ["concommand"] = true,
  1766.  
  1767. ["saverestore"] = true,
  1768.  
  1769. ["hook"] = true,
  1770.  
  1771. ["gamemode"] = true,
  1772.  
  1773. ["weapons"] = true,
  1774.  
  1775. ["scripted_ents"] = true,
  1776.  
  1777. ["player_manager"] = true,
  1778.  
  1779. ["numpad"] = true,
  1780.  
  1781. ["team"] = true,
  1782.  
  1783. ["undo"] = true,
  1784.  
  1785. ["cleanup"] = true,
  1786.  
  1787. ["duplicator"] = true,
  1788.  
  1789. ["constraint"] = true,
  1790.  
  1791. ["construct"] = true,
  1792.  
  1793. ["usermessage"] = true,
  1794.  
  1795. ["list"] = true,
  1796.  
  1797. ["cvars"] = true,
  1798.  
  1799. ["http"] = true,
  1800.  
  1801. ["properties"] = true,
  1802.  
  1803. ["widget"] = true,
  1804.  
  1805. ["cookie"] = true,
  1806.  
  1807. ["utf8"] = true,
  1808.  
  1809. ["drive"] = true,
  1810.  
  1811. ["draw"] = true,
  1812.  
  1813. ["markup"] = true,
  1814.  
  1815. ["effects"] = true,
  1816.  
  1817. ["halo"] = true,
  1818.  
  1819. ["killicon"] = true,
  1820.  
  1821. ["spawnmenu"] = true,
  1822.  
  1823. ["controlpanel"] = true,
  1824.  
  1825. ["presets"] = true,
  1826.  
  1827. ["menubar"] = true,
  1828.  
  1829. ["matproxy"] = true,
  1830.  
  1831. }
  1832.  
  1833.  
  1834.  
  1835. local tocopy = ""
  1836.  
  1837. local hooksinjected = false
  1838.  
  1839. local old_req = require
  1840.  
  1841. _A.require = old_req
  1842.  
  1843. require = aegis.Detour( require, function( str )
  1844.  
  1845. if tocopy != "" and _G[tocopy] then
  1846.  
  1847. _A.G[tocopy] = tabble.Copy( _G[tocopy] )
  1848.  
  1849. tocopy = ""
  1850.  
  1851. end
  1852.  
  1853.  
  1854.  
  1855. if saferequires[str] and saferequires[str] != -1 then
  1856.  
  1857. tocopy = str
  1858.  
  1859. saferequires[str] = -1
  1860.  
  1861. end
  1862.  
  1863.  
  1864.  
  1865. if str == "gamemode" and !hooksinjected then InjectHookSystem() InjectCCSystem() end
  1866.  
  1867. return old_req(str)
  1868.  
  1869. end)
  1870.  
  1871.  
  1872.  
  1873. local renderview = render.RenderView
  1874.  
  1875. local renderclear = render.Clear
  1876.  
  1877. local rendercap = render.Capture
  1878.  
  1879. --local eyepos = EyePos
  1880.  
  1881. --local eyeang = EyeAngles
  1882.  
  1883. local vgetworldpanel = vgui.GetWorldPanel
  1884.  
  1885.  
  1886.  
  1887.  
  1888.  
  1889.  
  1890.  
  1891. local function renderpanic( delay )
  1892.  
  1893. if runbitchrun then return end
  1894.  
  1895. runbitchrun = true
  1896.  
  1897. renderclear( 0, 0, 0, 255, true, true )
  1898.  
  1899.  
  1900.  
  1901. renderview( {
  1902.  
  1903. origin = LocalPlayer():EyePos(),
  1904.  
  1905. angles = LocalPlayer():EyeAngles(),
  1906.  
  1907. x = 0,
  1908.  
  1909. y = 0,
  1910.  
  1911. w = ScrW(),
  1912.  
  1913. h = ScrH(),
  1914.  
  1915. dopostprocess = true,
  1916.  
  1917. drawhud = true,
  1918.  
  1919. drawmonitors = true,
  1920.  
  1921. drawviewmodel = true
  1922.  
  1923. } )
  1924.  
  1925.  
  1926.  
  1927. local worldpanel = vgetworldpanel()
  1928.  
  1929. if IsValid( worldpanel ) then
  1930.  
  1931. worldpanel:SetPaintedManually( true )
  1932.  
  1933. end
  1934.  
  1935.  
  1936.  
  1937. for k, v in pairs( ents.GetAll() ) do
  1938.  
  1939. if v:GetColor() and v:GetColor().a == 100 and v:GetRenderMode() and v:GetRenderMode() == 4 then v:SetColor( Color( 255, 255, 255 ) ) end
  1940.  
  1941. end
  1942.  
  1943.  
  1944.  
  1945. timer.Simple( delay, function()
  1946.  
  1947. vgetworldpanel():SetPaintedManually( false )
  1948.  
  1949. runbitchrun = false
  1950.  
  1951. end)
  1952.  
  1953. end
  1954.  
  1955.  
  1956.  
  1957.  
  1958.  
  1959.  
  1960.  
  1961.  
  1962.  
  1963.  
  1964.  
  1965. local findmeta = FindMetaTable
  1966.  
  1967. local ply = findmeta( "Player" )
  1968.  
  1969. local oconcommand = ply.ConCommand
  1970.  
  1971. ply.ConCommand = aegis.Detour( ply.ConCommand, function( pl, cmd, ... )
  1972.  
  1973.  
  1974.  
  1975. if string.lower(cmd) == "jpeg" then
  1976.  
  1977. if blockjpg then return end
  1978.  
  1979. renderpanic( 0.2 )
  1980.  
  1981. oconcommand( pl, cmd, ... )
  1982.  
  1983. timer.Simple( 0.2, function()
  1984.  
  1985. _A.aegis.Notify( aegiscomponent, 3, "Protected your client from jpeg screenshot request" )
  1986.  
  1987. end )
  1988.  
  1989. return
  1990.  
  1991. end
  1992.  
  1993.  
  1994.  
  1995. if string.lower(cmd) == "__screenshot_internal" then
  1996.  
  1997. renderpanic( 0.3 )
  1998.  
  1999. oconcommand( pl, cmd, ... )
  2000.  
  2001. timer.Simple( 0.3, function()
  2002.  
  2003. _A.aegis.Notify( aegiscomponent, 3, "Protected your client from __screenshot_internal request" )
  2004.  
  2005. end )
  2006.  
  2007. return
  2008.  
  2009. end
  2010.  
  2011.  
  2012.  
  2013. return oconcommand( pl, cmd, ... )
  2014.  
  2015. end)
  2016.  
  2017.  
  2018.  
  2019.  
  2020.  
  2021. render.Capture = aegis.Detour( render.Capture, function( data )
  2022.  
  2023. renderpanic( 0.05 )
  2024.  
  2025. local capture = rendercap( data )
  2026.  
  2027. return capture
  2028.  
  2029. end )
  2030.  
  2031.  
  2032.  
  2033. local orcp = render.CapturePixels
  2034.  
  2035. render.CapturePixels = aegis.Detour( render.CapturePixels, function(...)
  2036.  
  2037. renderpanic( 0.05 )
  2038.  
  2039. orcp( ... )
  2040.  
  2041. return
  2042.  
  2043. end )
  2044.  
  2045.  
  2046.  
  2047.  
  2048.  
  2049.  
  2050.  
  2051.  
  2052.  
  2053.  
  2054.  
  2055. --local chattxt = chat.AddText
  2056.  
  2057. local orcc = RunConsoleCommand
  2058.  
  2059. RunConsoleCommand = aegis.Detour( RunConsoleCommand, function( cmd, ... )
  2060.  
  2061.  
  2062.  
  2063. if string.lower(cmd) == "__screenshot_internal" then
  2064.  
  2065. renderpanic( 0.3 )
  2066.  
  2067. orcc( cmd, ... )
  2068.  
  2069. timer.Simple( 0.3, function()
  2070.  
  2071. _A.aegis.Notify( aegiscomponent, 3, "Protected your client from __screenshot_internal request" )
  2072.  
  2073. end )
  2074.  
  2075. return
  2076.  
  2077. end
  2078.  
  2079.  
  2080.  
  2081. if string.lower(cmd) == "jpeg" then
  2082.  
  2083. renderpanic( 0.2 )
  2084.  
  2085. orcc( cmd, ... )
  2086.  
  2087. timer.Simple( 0.2, function()
  2088.  
  2089. _A.aegis.Notify( aegiscomponent, 3, "Protected your client from jpeg screenshot request" )
  2090.  
  2091. end )
  2092.  
  2093. return
  2094.  
  2095. end
  2096.  
  2097.  
  2098.  
  2099. return orcc( cmd, ... )
  2100.  
  2101. end )
  2102.  
  2103.  
  2104.  
  2105. local gayinfonum = gcinfo()
  2106.  
  2107. local gayinfo = gcinfo
  2108.  
  2109. gcinfo = aegis.Detour( gcinfo, function( ... )
  2110.  
  2111. local onum = gayinfo( ... )
  2112.  
  2113. local newnum = onum - gayinfonum
  2114.  
  2115. return newnum
  2116.  
  2117. end)
  2118.  
  2119.  
  2120.  
  2121. local nigger = string.find
  2122.  
  2123. local function protectpath( f )
  2124.  
  2125. local inf = dbginfo( 4 )
  2126.  
  2127. if !inf then return true end
  2128.  
  2129. local src = inf.source
  2130.  
  2131. return nigger( f, "acebot_settings.dat" ) and src != "@"
  2132.  
  2133. end
  2134.  
  2135.  
  2136.  
  2137. local fagopen = file.Open
  2138.  
  2139. file.Open = aegis.Detour( file.Open, function( f, m, p )
  2140.  
  2141. if protectpath( f ) then return end
  2142.  
  2143. return fagopen( f, m, p )
  2144.  
  2145. end )
  2146.  
  2147.  
  2148.  
  2149. local fagexists = file.Exists
  2150.  
  2151. file.Exists = aegis.Detour( file.Open, function( f, p )
  2152.  
  2153. if protectpath( f ) then return false end
  2154.  
  2155. return fagexists( f, p )
  2156.  
  2157. end )
  2158.  
  2159.  
  2160. local s, odium = pcall( collectgarbage, 'odium' ) /*=======================================================================
  2161.  
  2162.  
  2163.  
  2164. ▄████████ ▄████████ ▄████████ ▀█████████▄ ▄██████▄ ███
  2165.  
  2166. ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ▀█████████▄
  2167.  
  2168. ███ ███ ███ █▀ ███ █▀ ███ ███ ███ ███ ▀███▀▀██
  2169.  
  2170. ███ ███ ███ ▄███▄▄▄ ▄███▄▄▄██▀ ███ ███ ███ ▀
  2171.  
  2172. ▀███████████ ███ ▀▀███▀▀▀ ▀▀███▀▀▀██▄ ███ ███ ███
  2173.  
  2174. ███ ███ ███ █▄ ███ █▄ ███ ██▄ ███ ███ ███
  2175.  
  2176. ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
  2177.  
  2178. ███ █▀ ████████▀ ██████████ ▄█████████▀ ▀██████▀ ▄████▀
  2179.  
  2180.  
  2181.  
  2182. A revolutionary lua multihack created by LegendofRobbo
  2183.  
  2184. Designed for usage with Project Odium
  2185.  
  2186. Lick my taint dumb nigger
  2187.  
  2188.  
  2189.  
  2190. Copyrighted by MingeTec Inc - putting pubbies their place since 2013
  2191.  
  2192.  
  2193.  
  2194. =======================================================================*/
  2195.  
  2196.  
  2197.  
  2198. --local odium = jit.status( "_O" )
  2199.  
  2200.  
  2201.  
  2202. local AB = AB or {}
  2203.  
  2204. /*
  2205.  
  2206. AB.Version = "1.10 - May 26 2017"
  2207.  
  2208. AB.LatestChanges = {
  2209.  
  2210. "More reliable targeting on aimbot, shouldn't snap to random targets anymore",
  2211.  
  2212. "Added spectator detection window, moved spectator and witness detection to utility tab",
  2213.  
  2214. "Added file protection for the acebot settings file",
  2215.  
  2216. "Improved ent marker with class searching algorithm",
  2217.  
  2218. "Added invalid's cac UD bhop script",
  2219.  
  2220. "Added sticky targeting setting to aimbot",
  2221.  
  2222. "Namestealer no longer saves between sessions",
  2223.  
  2224. "Added big secret feature",
  2225.  
  2226. }
  2227.  
  2228. */
  2229.  
  2230. AB.Version = "1.11 - Jul 04 2017"
  2231.  
  2232. AB.LatestChanges = {
  2233.  
  2234. "Rewrote xray core to be 100% screengrab safe",
  2235.  
  2236. "Changed notification system over to aegis.Notify",
  2237.  
  2238. "Minor performance tweaks",
  2239.  
  2240. }
  2241.  
  2242.  
  2243.  
  2244. MsgC( Color( 0, 150, 250 ), "==========>----- Acebot Initialized (Version "..AB.Version..") -----<==========\n" )
  2245.  
  2246. MsgC( Color( 0, 150, 250 ), "Latest Changes:\n" )
  2247.  
  2248. for k, v in SortedPairs(AB.LatestChanges, false) do
  2249.  
  2250. MsgC( Color( 150, 200, 250 ), v.."\n" )
  2251.  
  2252.  
  2253.  
  2254. end
  2255.  
  2256.  
  2257. AB.Changelog = {
  2258.  
  2259. " ===== 1.09 (May 11 2017) ===== ",
  2260.  
  2261. "Fixed silent aim to have proper movement correction",
  2262.  
  2263. "Added aimbot auto-trigger setting",
  2264.  
  2265. "Made aimbot kick into rage mode targeting at 180 FOV (experimental)",
  2266.  
  2267. "Added in-hud freecam",
  2268.  
  2269. " ===== 1.08 (Apr 28 2017) ===== ",
  2270.  
  2271. "Rewrote aimbot core systems to be faster, more efficient and more stable",
  2272.  
  2273. "Made silent aim correctly choke bsendpacket",
  2274.  
  2275. "Added adaptive body targeting",
  2276.  
  2277. "Deprecated aegis_printlogs",
  2278.  
  2279. "Made everything on ESP derender when offscreen to boost fps",
  2280.  
  2281. " ===== 1.07 (Apr 21 2017) ===== ",
  2282.  
  2283. "Stopped aimbot from locking on to spawn protected players in darkrp",
  2284.  
  2285. "Added darkrp arrest dodger",
  2286.  
  2287. "Added random rpname on death option",
  2288.  
  2289. "Added suicide when physgunned option",
  2290.  
  2291. "Added ace_base_set, ace_base_remove and ace_base_setsize",
  2292.  
  2293. " ===== 1.06 (Apr 5 2017) ===== ",
  2294.  
  2295. "Added promotional chatspam",
  2296.  
  2297. "Added m9k wallbang mode",
  2298.  
  2299. "Added proper aimbot bind key mode",
  2300.  
  2301. "Numerical variables now save properly between sessions",
  2302.  
  2303. " ===== 1.05 (Mar 24 2017) ===== ",
  2304.  
  2305. "Added more insult modes",
  2306.  
  2307. "Added silent aim",
  2308.  
  2309. "Added esp range slider",
  2310.  
  2311. "Cleaned up aimbot core",
  2312.  
  2313. "Added pattern matching to chat spammer",
  2314.  
  2315. "Added clientside flashlight",
  2316.  
  2317. " ===== 1.04 (Mar 12 2017) ===== ",
  2318.  
  2319. "Added spread compensation to aimbot for xtreme accuracy",
  2320.  
  2321. "Added ace_insult4",
  2322.  
  2323. " ===== 1.03 (Feb 8 2017) ===== ",
  2324.  
  2325. "Added more aegis debug commands",
  2326.  
  2327. "Expanded insult generator",
  2328.  
  2329. "Added wraith vision mode",
  2330.  
  2331. "Added ace_exploit_rapeconsole",
  2332.  
  2333. " ===== 1.02 (Feb 8 2017) ===== ",
  2334.  
  2335. "Fixed 180up",
  2336.  
  2337. "Fixed error that would occasionally happen and betray our presence to server admins",
  2338.  
  2339. " ===== 1.01 (Nov 15 2016) ===== ",
  2340.  
  2341. "Added /PM Spam mode",
  2342.  
  2343. "Fixed innocent roleplayer printing a bunch of crap",
  2344.  
  2345. "Added ace_insult3 and crash jackson macros",
  2346.  
  2347. "Fixed TTT lua errors",
  2348.  
  2349. " ===== 1.00 (Aug 30 2016) ===== ",
  2350.  
  2351. "Finalized menu theme",
  2352.  
  2353. "Added bhop basic auto strafe",
  2354.  
  2355. "Added vote spammer module",
  2356.  
  2357. "Changed namestealer to use the new odium lua API",
  2358.  
  2359. "Added options for disabling squares and player names on the ESP",
  2360.  
  2361. "Fixed rear vision mirror",
  2362.  
  2363. " ===== 0.98 (Jul 29 2016) ===== ",
  2364.  
  2365. "Added more insult fragments to ace_insult",
  2366.  
  2367. "Added propkill visual settings",
  2368.  
  2369. " ===== 0.97 (Jul 20 2016) ===== ",
  2370.  
  2371. "Added entity scanner mode, allows you to gather advanced information and use bd macros directly on a target",
  2372.  
  2373. "Added ace_innocent_roleplayer and ace_random_rpname for hiding from admins",
  2374.  
  2375. "Backdoor CP now checks if backdoor is functional before a message is sent",
  2376.  
  2377. "Namestealer should be more reliable now",
  2378.  
  2379. "Better tooltips on some menu buttons",
  2380.  
  2381. "More changes to backdoor CP",
  2382.  
  2383. " ===== 0.96 (Jun 14 2016) ===== ",
  2384.  
  2385. "Added more backdoor macros",
  2386.  
  2387. "Added ace_180up_vertical_angle command for people who like to adjust their launch angles",
  2388.  
  2389. " ===== 0.95 (Apr 22 2016) ===== ",
  2390.  
  2391. "Improved backdoor macro menu with more macros and fixes for old ones",
  2392.  
  2393. "Fixed ace_pk_180up not looking up",
  2394.  
  2395. " ===== 0.94 (Mar 25 2016) ===== ",
  2396.  
  2397. "Added support for the cw2 base for the inspect weapon menu",
  2398.  
  2399. "Triggerbot now uses the same targeting logic as aimbot",
  2400.  
  2401. "Further unfucked the aimbot and added more options",
  2402.  
  2403. "Added damage hitmarker function to crosshair",
  2404.  
  2405. "Fixed ab_init not being called, should fix the TTT traitor detector",
  2406.  
  2407. "Added random insult mode to chat spammer",
  2408.  
  2409. " ===== 0.93b (Mar 15 2016) ===== ",
  2410.  
  2411. "Made ace_insult and ace_insult2 more savage",
  2412.  
  2413. "Added a couple more macros to the entfinder",
  2414.  
  2415. "Changed draw order so ESP draws over the top of xray",
  2416.  
  2417. "Minor backend cleanup",
  2418.  
  2419. " ===== 0.93 (Mar 11 2016) ===== ",
  2420.  
  2421. "Added easy macros to the ent finder menu",
  2422.  
  2423. "Fixed broken calcview hook",
  2424.  
  2425. "Made aimbot refresh its target buffer when in fire only on snap mode",
  2426.  
  2427. " ===== 0.92 (Mar 08 2016) ===== ",
  2428.  
  2429. "Fixed a bunch of error spew",
  2430.  
  2431. "Updated aegis detours system to detect anticheats and have proper logs",
  2432.  
  2433. " ===== 0.91 (Mar 07 2016) ===== ",
  2434.  
  2435. "Made chat spammer option always default to off and not get saved",
  2436.  
  2437. "Added TTT traitor detection system (fucking finally)",
  2438.  
  2439. "Got target highlighting system working",
  2440.  
  2441. "Improved the fucked up aimbot a bit more",
  2442.  
  2443. "Removed a bunch of bugged and unused options from the aimbot control panel",
  2444.  
  2445. "Removed broken and dated minge alts system",
  2446.  
  2447. " ===== 0.90 (Feb 26 2016) ===== ",
  2448.  
  2449. "Lubed my anus for project odium",
  2450.  
  2451. "Fixed the janky inspect weapon script and moved it to utilities",
  2452.  
  2453. "Improved the acebot console with live updates and better logging",
  2454.  
  2455. "Added chat spammer",
  2456.  
  2457. " ===== 0.84b (Jan 28 2016) ===== ",
  2458.  
  2459. "Minor system fixes, passing invalid players etc",
  2460.  
  2461. " ===== 0.84a (Jan 23 2016) ===== ",
  2462.  
  2463. "Removed inject SCI function since it's now built into wraithnet",
  2464.  
  2465. "Improved headshot accuracy for aimbot",
  2466.  
  2467. "Added the option to target heads or centre of mass for aimbot",
  2468.  
  2469. "Added teleport, gas, become unbannable macros, extended range on most trace based macros",
  2470.  
  2471. " ===== Alpha phase (June 2015 - Jan 2016) ===== ",
  2472.  
  2473. "Acebot created, cac bypassed, many shitRP servers pooped on",
  2474.  
  2475. }
  2476.  
  2477.  
  2478.  
  2479. AB.Vars = AB.Vars or {}
  2480.  
  2481. AB.NumberVars = AB.NumberVars or {} -- need a seperate table here coz im a lazy cunt
  2482.  
  2483. AB.Buddies = AB.Buddies or {}
  2484.  
  2485. AB.Targets = AB.Targets or {}
  2486.  
  2487. AB.TheyHaveEyesEverywhere = AB.TheyHaveEyesEverywhere or {}
  2488.  
  2489. AB.Witnesses = AB.Witnesses or {}
  2490.  
  2491. AB.Debug = AB.Debug or {}
  2492.  
  2493. AB.MarkedEnts = AB.MarkedEnts or {}
  2494.  
  2495. AB.Traitors = AB.Traitors or {}
  2496.  
  2497. AB.RenderPanic = false
  2498.  
  2499. AB.NameStealName = "Garry :D"
  2500.  
  2501. AB.NameStealPlayer = LocalPlayer()
  2502.  
  2503. AB.CrossHairAlpha = 0
  2504.  
  2505. AB.ScrollDelta = 0 -- lets you set mouse wheel scroll from outside of createmove
  2506.  
  2507. AB.AimbotBone = "ValveBiped.Bip01_Head1"
  2508.  
  2509. AB.ViewAngle = Angle(0,0,0)
  2510.  
  2511. AB.AimbotTarget = game.GetWorld()
  2512.  
  2513. AB.AimbotPreviewTarget = -1
  2514.  
  2515. AB.HoldingProp = game.GetWorld()
  2516.  
  2517. AB.ChatSpamText = "@getodium"
  2518.  
  2519. AB.OPhysColor = Vector( GetConVarString( "cl_weaponcolor" ) ) or Vector( 1,1,1 )
  2520.  
  2521. AB.CurrentBase = 0
  2522.  
  2523. AB.BaseAreaSize = 10
  2524.  
  2525. AB.InternalFakeAngles = 0
  2526.  
  2527. AB.MemoryDebug = {
  2528.  
  2529. ["hud"] = 0,
  2530.  
  2531. ["logic"] = 0,
  2532.  
  2533. ["aimbot"] = 0,
  2534.  
  2535. }
  2536.  
  2537. AB.Freecam = false
  2538.  
  2539. AB.FreecamCoordinates = { pos = Vector( 0, 0, 0 ), ang = Angle( 0, 0, 0 ) }
  2540.  
  2541.  
  2542.  
  2543. -- general settings
  2544.  
  2545. AB.Vars.Notifications = AB.Vars.Notifications or true
  2546.  
  2547.  
  2548.  
  2549. -- vision
  2550.  
  2551. AB.Vars.Vision = AB.Vars.Vision or true
  2552.  
  2553. AB.Vars.ShowESP = AB.Vars.ShowESP or true
  2554.  
  2555. AB.Vars.ShowDead = AB.Vars.ShowDead or false
  2556.  
  2557. AB.Vars.ShowHP = AB.Vars.ShowHP or false
  2558.  
  2559. AB.Vars.ShowFriends = AB.Vars.ShowFriends or true
  2560.  
  2561. AB.Vars.ShowTargets = AB.Vars.ShowTargets or true
  2562.  
  2563. AB.Vars.TeamColors = AB.Vars.TeamColors or false
  2564.  
  2565. AB.Vars.ShowRanks = AB.Vars.ShowRanks or true
  2566.  
  2567. AB.Vars.ShowTraitors = AB.Vars.ShowTraitors or true
  2568.  
  2569. AB.Vars.ShowDistance = AB.Vars.ShowDistance or false
  2570.  
  2571. AB.Vars.ESPProps = AB.Vars.ESPProps or false
  2572.  
  2573. AB.Vars.Entfinder = AB.Vars.Entfinder or false
  2574.  
  2575. AB.Vars.Vizlines = AB.Vars.Vizlines or false
  2576.  
  2577. AB.Vars.BoundingBox = AB.Vars.BoundingBox or false
  2578.  
  2579. AB.Vars.BoundingBox3d = AB.Vars.BoundingBox3d or false
  2580.  
  2581. AB.Vars.VSquares = AB.Vars.VSquares or true
  2582.  
  2583. AB.Vars.VNames = AB.Vars.VNames or true
  2584.  
  2585. AB.Vars.PKVelocity = AB.Vars.PKVelocity or false
  2586.  
  2587. AB.Vars.PKChams = AB.Vars.PKChams or false
  2588.  
  2589. AB.Vars.PKPropCam = AB.Vars.PKPropCam or false
  2590.  
  2591. AB.Vars.PKPropBeams = AB.Vars.PKPropBeams or false
  2592.  
  2593. AB.Vars.PKPlayerBeams = AB.Vars.PKPlayerBeams or false
  2594.  
  2595. AB.Vars.PKVerticalBeams = AB.Vars.PKVerticalBeams or false
  2596.  
  2597. AB.Vars.CSFlashlight = AB.Vars.CSFlashlight or false
  2598.  
  2599. AB.NumberVars.VisionDist = AB.NumberVars.VisionDist or 2000
  2600.  
  2601.  
  2602.  
  2603. -- utility
  2604.  
  2605.  
  2606.  
  2607. AB.Vars.CameraSpam = AB.Vars.CameraSpam or true
  2608.  
  2609. AB.Vars.FlashlightSpam = AB.Vars.FlashlightSpam or false
  2610.  
  2611. AB.Vars.NoRecoil = AB.Vars.NoRecoil or true
  2612.  
  2613.  
  2614.  
  2615. AB.Vars.WitnessDetector = AB.Vars.WitnessDetector or false
  2616.  
  2617. AB.Vars.Mirror = AB.Vars.Mirror or false
  2618.  
  2619. AB.Vars.Radar = AB.Vars.Radar or false
  2620.  
  2621. AB.Vars.RadarColors = AB.Vars.RadarColors or false
  2622.  
  2623. AB.Vars.Xray = AB.Vars.Xray or false
  2624.  
  2625. AB.Vars.Crosshair = AB.Vars.Crosshair or false
  2626.  
  2627. AB.Vars.NameStealer = false
  2628.  
  2629. AB.Vars.NotifyKills = AB.Vars.NotifyKills or false
  2630.  
  2631.  
  2632.  
  2633. AB.Vars.XrayPlayers = AB.Vars.XrayPlayers or true
  2634.  
  2635. AB.Vars.XrayProps = AB.Vars.XrayProps or true
  2636.  
  2637. AB.Vars.XrayEntfinder = AB.Vars.XrayEntfinder or false
  2638.  
  2639. AB.Vars.NoChamColours = AB.Vars.NoChamColours or true
  2640.  
  2641. AB.Vars.XraySolid = AB.Vars.XraySolid or false
  2642.  
  2643.  
  2644.  
  2645. AB.Vars.AutoAddSteamFriends = AB.Vars.AutoAddSteamFriends or true
  2646.  
  2647.  
  2648.  
  2649. AB.Vars.ChatSpam = false
  2650.  
  2651. AB.Vars.ChatSpamOOC = AB.Vars.ChatSpamOOC or false
  2652.  
  2653. AB.Vars.ChatSpamBind = AB.Vars.ChatSpamBind or false
  2654.  
  2655. AB.Vars.ChatSpamInsult = AB.Vars.ChatSpamInsult or false
  2656.  
  2657. AB.Vars.ChatSpamPM = AB.Vars.ChatSpamPM or false
  2658.  
  2659. AB.Vars.ChatSpamPMAdmins = AB.Vars.ChatSpamPMAdmins or false
  2660.  
  2661.  
  2662.  
  2663. AB.EntScanner = false
  2664.  
  2665. AB.EntScannerTab = {}
  2666.  
  2667. AB.EntScannerEnt = game.GetWorld()
  2668.  
  2669.  
  2670.  
  2671. AB.Vars.DemoteSpam = false
  2672.  
  2673. AB.Vars.WantedSpam = false
  2674.  
  2675. AB.Vars.ULXVotekickSpam = false
  2676.  
  2677. AB.Vars.ULXVotebanSpam = false
  2678.  
  2679.  
  2680.  
  2681. AB.Vars.KillTaunts = false
  2682.  
  2683. AB.Vars.DeathTaunts = false
  2684.  
  2685.  
  2686.  
  2687. AB.Vars.DodgeArrest = false
  2688.  
  2689. AB.Vars.NewLifeRule = false
  2690.  
  2691. AB.Vars.DontTouchMeThere = false
  2692.  
  2693.  
  2694.  
  2695. AB.Vars.KeypadJew = false
  2696.  
  2697. AB.Vars.FreecamControls = false
  2698.  
  2699.  
  2700.  
  2701. -- aimbot
  2702.  
  2703.  
  2704.  
  2705. AB.Vars.Aimbot = AB.Vars.Aimbot or false
  2706.  
  2707. AB.Vars.AimbotTargetMode = AB.Vars.AimbotTargetMode or true
  2708.  
  2709. AB.Vars.AutoShoot = AB.Vars.AutoShoot or false
  2710.  
  2711. AB.Vars.AutoTrigger = AB.Vars.AutoTrigger or false
  2712.  
  2713. AB.Vars.AimbotShootThroughWalls = AB.Vars.AimbotShootThroughWalls or false
  2714.  
  2715. AB.Vars.SnapOnFire = AB.Vars.SnapOnFire or false
  2716.  
  2717. AB.Vars.TargetFriends = AB.Vars.TargetFriends or true
  2718.  
  2719. AB.Vars.TargetHighlighted = AB.Vars.TargetHighlighted or true
  2720.  
  2721. AB.Vars.TargetNormies = AB.Vars.TargetNormies or true
  2722.  
  2723. AB.Vars.TargetAdmins = AB.Vars.TargetAdmins or true
  2724.  
  2725. AB.Vars.TargetSameTeam = AB.Vars.TargetSameTeam or true
  2726.  
  2727. AB.Vars.TargetNoclippers = AB.Vars.TargetNoclippers or true
  2728.  
  2729. AB.Vars.PreviewTarget = AB.Vars.PreviewTarget or true
  2730.  
  2731. AB.Vars.CompSpread = AB.Vars.CompSpread or false
  2732.  
  2733. AB.Vars.SilentAim = AB.Vars.SilentAim or false
  2734.  
  2735. AB.Vars.AimbotBindMode = AB.Vars.AimbotBindMode or false
  2736.  
  2737. AB.Vars.AimbotWallbanger = AB.Vars.AimbotWallbanger or false
  2738.  
  2739. AB.Vars.AimbotAdaptiveTarget = AB.Vars.AimbotAdaptiveTarget or false
  2740.  
  2741. AB.Vars.AimbotStickyLock = AB.Vars.AimbotStickyLock or true
  2742.  
  2743.  
  2744.  
  2745. AB.NumberVars.AimbotMaxFOV = AB.NumberVars.AimbotMaxFOV or 20
  2746.  
  2747. AB.NumberVars.AimbotDist = AB.NumberVars.AimbotDist or 200
  2748.  
  2749. AB.NumberVars.AimbotSmooth = AB.NumberVars.AimbotSmooth or 0
  2750.  
  2751. AB.NumberVars.PKRotateAngle = AB.NumberVars.PKRotateAngle or 30
  2752.  
  2753.  
  2754.  
  2755. AB.NumberVars.AimbotBindKey = AB.NumberVars.AimbotBindKey or 107
  2756.  
  2757.  
  2758.  
  2759. AB.NumberVars.FreecamForward = AB.NumberVars.FreecamForward or 50
  2760.  
  2761. AB.NumberVars.FreecamBack = AB.NumberVars.FreecamBack or 49
  2762.  
  2763. AB.NumberVars.FreecamLeft = AB.NumberVars.FreecamLeft or 41
  2764.  
  2765. AB.NumberVars.FreecamRight = AB.NumberVars.FreecamRight or 43
  2766.  
  2767. AB.NumberVars.FreecamUp = AB.NumberVars.FreecamUp or 45
  2768.  
  2769. AB.NumberVars.FreecamDown = AB.NumberVars.FreecamDown or 42
  2770.  
  2771.  
  2772.  
  2773. -- default menu and esp colours
  2774.  
  2775. AB.DefaultSchemes = {
  2776.  
  2777. [1] = {"Spectral Blue", Color(205,205,255,255), Color(105,105,255,255)},
  2778.  
  2779. [2] = {"Ocean Blue", Color(100,100,255,255), Color(50,50,155,255)},
  2780.  
  2781. [3] = {"Sage Green", Color(100,250,100,255), Color(0,200,0,255)},
  2782.  
  2783. [4] = {"Javelin Orange", Color(250,250,0,255), Color(250,150,0,255)},
  2784.  
  2785. [5] = {"Predator Red", Color(255,0,0,255), Color(200,0,0,255)},
  2786.  
  2787. [6] = {"Miami Pink", Color(255,0,255,255), Color(150,0,150,255)},
  2788.  
  2789. [7] = {"Anus Brown", Color(125,0,0,255), Color(50,0,0,255)},
  2790.  
  2791. [8] = {"Jungle Green", Color(50,150,50,255), Color(0,50,0,255)},
  2792.  
  2793. [9] = {"Noir Grey", Color(150,150,150,255), Color(50,50,50,255)},
  2794.  
  2795. }
  2796.  
  2797.  
  2798.  
  2799. AB.DefaultScheme = Color(205,205,255,255)
  2800.  
  2801. AB.DefaultScheme2 = Color(80,80,255,255)
  2802.  
  2803. AB.Matinfo = {
  2804.  
  2805. ["$basetexture"] = "models/debug/debugwhite",
  2806.  
  2807. ["$model"] = 1,
  2808.  
  2809. ["$nocull"] = 1,
  2810.  
  2811. ["$ignorez"] = 1,
  2812.  
  2813. }
  2814.  
  2815.  
  2816.  
  2817. AB.Mat1 = (CreateMaterial( "abchams2", "VertexLitGeneric", AB.Matinfo ))
  2818.  
  2819. AB.ColScheme = Vector(AB.DefaultScheme.r / 255, AB.DefaultScheme.g / 255, AB.DefaultScheme.b / 255)
  2820.  
  2821. AB.ColScheme2 = Vector(AB.DefaultScheme2.r / 255, AB.DefaultScheme2.g / 255, AB.DefaultScheme2.b / 255)
  2822.  
  2823.  
  2824.  
  2825. AB.NumberVars.ColorScheme = AB.NumberVars.ColorScheme or 1
  2826.  
  2827.  
  2828.  
  2829. -- herkz
  2830.  
  2831. AB.Vars.Aimbot = AB.Vars.Aimbot or false
  2832.  
  2833.  
  2834.  
  2835. AB.Vars.Autoclick = AB.Vars.Autoclick or false
  2836.  
  2837. AB.Vars.Bhop = AB.Vars.Bhop or false
  2838.  
  2839. AB.Vars.BhopAutostrafe = AB.Vars.BhopAutostrafe or false
  2840.  
  2841. AB.Vars.RopeStorm = AB.Vars.RopeStorm or false
  2842.  
  2843. AB.Vars.Triggerbot = AB.Vars.Triggerbot or false
  2844.  
  2845. AB.Vars.Thirdperson = AB.Vars.Thirdperson or false
  2846.  
  2847.  
  2848.  
  2849.  
  2850.  
  2851. AB.NumberVars.MirrorX = AB.NumberVars.MirrorX or 0
  2852.  
  2853. AB.NumberVars.MirrorY = AB.NumberVars.MirrorY or 0
  2854.  
  2855. AB.NumberVars.MirrorSize = AB.NumberVars.MirrorSize or 30
  2856.  
  2857. AB.NumberVars.MirrorAxis = AB.NumberVars.MirrorAxis or 0
  2858.  
  2859.  
  2860.  
  2861. AB.NumberVars.XrayDistance = AB.NumberVars.XrayDistance or 200
  2862.  
  2863. AB.NumberVars.TPSDistance = AB.NumberVars.TPSDistance or 100
  2864.  
  2865. AB.NumberVars.TPSOffset = AB.NumberVars.TPSOffset or 0
  2866.  
  2867.  
  2868.  
  2869. AB.NumberVars.RadarX = AB.NumberVars.RadarX or ScrW() - 280
  2870.  
  2871. AB.NumberVars.RadarY = AB.NumberVars.RadarY or 20
  2872.  
  2873. AB.NumberVars.RadarAlpha = AB.NumberVars.RadarAlpha or 255
  2874.  
  2875. AB.NumberVars.RadarSize = AB.NumberVars.RadarSize or 250
  2876.  
  2877. AB.NumberVars.RadarZoom = AB.NumberVars.RadarZoom or 50
  2878.  
  2879.  
  2880.  
  2881. /*
  2882.  
  2883. local plymeta = FindMetaTable( "Player" )
  2884.  
  2885. plymeta.ConCommand2 = plymeta.ConCommand2 or plymeta.ConCommand
  2886.  
  2887. function plymeta:ConCommand( command )
  2888.  
  2889. if command == "jpeg" and AB.Vars.CameraSpam then return else
  2890.  
  2891. return self:ConCommand2( command )
  2892.  
  2893. end
  2894.  
  2895. end
  2896.  
  2897. */
  2898.  
  2899.  
  2900.  
  2901. local ncomponent = { color = Color( 205, 205, 255 ), name = "Acebot" }
  2902.  
  2903. function AB.ChatText( message, col, typ )
  2904.  
  2905. typ = typ or 1
  2906.  
  2907. if odium and odium.aegis then
  2908.  
  2909. if col.r - ( col.g + col.b ) > 150 then typ = 4 end -- probably an error message
  2910.  
  2911. if col.r == 255 and col.g == 205 and col.b == 205 then typ = 2 end
  2912.  
  2913. if col.g >= (col.r + col.b) then typ = 3 end
  2914.  
  2915. odium.aegis.Notify( ncomponent, typ, message )
  2916.  
  2917. else
  2918.  
  2919. chat.AddText( Color(195,205,255,255), "[Acebot] ", col, message )
  2920.  
  2921. end
  2922.  
  2923. end
  2924.  
  2925.  
  2926.  
  2927.  
  2928.  
  2929. ------------------------------------------------------------------------ACEBOT UTILITIES--------------------------------------------------------------------------------------
  2930.  
  2931.  
  2932.  
  2933. function AB.SetPlayerName( name )
  2934.  
  2935. if !odium or !odium.player or !odium.player.SetName then
  2936.  
  2937. AB.ChatText( "Odium main module not present or malfunctioning! Name changing will not work!", Color(255,100,0) )
  2938.  
  2939. AB.Vars.NameStealer = false
  2940.  
  2941. return
  2942.  
  2943. end
  2944.  
  2945. odium.player.SetName( name )
  2946.  
  2947. end
  2948.  
  2949.  
  2950.  
  2951. local nstries = 0
  2952.  
  2953. --local ninjacharacter = ""
  2954.  
  2955. local ninjacharacter = ""
  2956.  
  2957.  
  2958.  
  2959. function AB.NameStealer()
  2960.  
  2961. if !AB.Vars.NameStealer or !LocalPlayer():IsValid() then return end
  2962.  
  2963. if !AB.NameStealPlayer:IsValid() then AB.NameStealPlayer = LocalPlayer() end
  2964.  
  2965.  
  2966.  
  2967. -- set your name to a given string, unfucks bytefalls random malfunctions
  2968.  
  2969. if AB.NameStealName != LocalPlayer():Nick() and AB.NameStealPlayer == LocalPlayer() then
  2970.  
  2971. nstries = nstries + 1
  2972.  
  2973. AB.NameStealName = LocalPlayer():Nick()
  2974.  
  2975. -- LocalPlayer():ConCommand( "odium_setname "..AB.NameStealName )
  2976.  
  2977. AB.SetPlayerName( AB.NameStealName )
  2978.  
  2979. if AB.NameStealName == LocalPlayer():Nick() then nstries = 0 end
  2980.  
  2981. end
  2982.  
  2983.  
  2984.  
  2985. local unfuckedname = string.Replace( AB.NameStealName, ninjacharacter, "" ) -- gotta clear the ninjas out so we can check if the namesteal worked properly
  2986.  
  2987.  
  2988.  
  2989. -- dank namestealerinos :^)
  2990.  
  2991. if AB.NameStealPlayer != LocalPlayer() and unfuckedname != AB.NameStealPlayer:Nick() then
  2992.  
  2993. nstries = nstries + 1
  2994.  
  2995. local theirname = AB.NameStealPlayer:Nick()
  2996.  
  2997. local ipos = math.random(1, #theirname)
  2998.  
  2999. local strname = theirname[ipos]
  3000.  
  3001. local fixd = string.Replace(theirname, strname, strname..ninjacharacter )
  3002.  
  3003.  
  3004.  
  3005. AB.NameStealName = fixd
  3006.  
  3007. AB.SetPlayerName( fixd )
  3008.  
  3009. -- LocalPlayer():ConCommand( "odium_setname "..fixd )
  3010.  
  3011. if AB.NameStealName == unfuckedname then nstries = 0 end
  3012.  
  3013. end
  3014.  
  3015.  
  3016.  
  3017. end
  3018.  
  3019. timer.Create("ab_namesteal", 1, 0, AB.NameStealer)
  3020.  
  3021.  
  3022.  
  3023. function AB.NameStealerShutoff()
  3024.  
  3025. steamworks.RequestPlayerInfo( LocalPlayer():SteamID64() )
  3026.  
  3027. timer.Simple( 0.5, function() AB.SetPlayerName(steamworks.GetPlayerName(LocalPlayer():SteamID64())) end)
  3028.  
  3029. AB.Vars.NameStealer = false
  3030.  
  3031. AB.NameStealName = LocalPlayer():Nick()
  3032.  
  3033. AB.NameStealPlayer = LocalPlayer()
  3034.  
  3035. if AB.Vars.Notifications then AB.ChatText( "Shut namestealer script down", Color(255,255,255) ) end
  3036.  
  3037. end
  3038.  
  3039.  
  3040.  
  3041. function AB.ManualNameSet( ply, cmd, args, argstr )
  3042.  
  3043. -- local n = ""
  3044.  
  3045. -- for k, v in pairs( args ) do if k != 1 then n = n.." "..v else n = n..v end end
  3046.  
  3047. AB.SetPlayerName( argstr )
  3048.  
  3049. end
  3050.  
  3051. concommand.Add( "odium_setname", AB.ManualNameSet )
  3052.  
  3053.  
  3054.  
  3055.  
  3056.  
  3057. function AB.SaveSettings()
  3058.  
  3059. local StringToWrite = ""
  3060.  
  3061. for k, v in pairs(AB.Vars) do
  3062.  
  3063. if( StringToWrite == "" ) then
  3064.  
  3065. StringToWrite = k .. ";" .. tostring(v)
  3066.  
  3067. else
  3068.  
  3069. StringToWrite = StringToWrite .. "\n" .. k .. ";" .. tostring(v)
  3070.  
  3071. end
  3072.  
  3073. end
  3074.  
  3075. StringToWrite = StringToWrite.."--NUMBERVARS--\n"
  3076.  
  3077. for k, v in pairs(AB.NumberVars) do
  3078.  
  3079. if( StringToWrite == "" ) then
  3080.  
  3081. StringToWrite = k .. ";" .. tostring(v)
  3082.  
  3083. else
  3084.  
  3085. StringToWrite = StringToWrite .. "\n" .. k .. ";" .. tostring(v)
  3086.  
  3087. end
  3088.  
  3089. end
  3090.  
  3091. /*
  3092.  
  3093. if not file.IsDir("acebot", "DATA") then
  3094.  
  3095. file.CreateDir("acebot")
  3096.  
  3097. end
  3098.  
  3099. */
  3100.  
  3101. if file.IsDir("acebot", "DATA") then
  3102.  
  3103. file.Delete( "acebot/settings.txt" )
  3104.  
  3105. file.Delete( "acebot" )
  3106.  
  3107. end
  3108.  
  3109.  
  3110.  
  3111. file.Write( "acebot_settings.dat", StringToWrite )
  3112.  
  3113. end
  3114.  
  3115. concommand.Add("ace_save_settings", AB.SaveSettings)
  3116.  
  3117.  
  3118.  
  3119. function AB.LoadSettings()
  3120.  
  3121. /*
  3122.  
  3123. if not file.IsDir("acebot", "DATA") then
  3124.  
  3125. file.CreateDir("acebot")
  3126.  
  3127. end
  3128.  
  3129. */
  3130.  
  3131. if !file.Exists("acebot_settings.dat", "DATA") then AB.SaveSettings() return end
  3132.  
  3133.  
  3134.  
  3135. local TheFile = file.Read( "acebot_settings.dat", "DATA" )
  3136.  
  3137. local halves = string.Explode( "--NUMBERVARS--\n", TheFile )
  3138.  
  3139. if !halves[2] then file.Delete( "acebot_settings.dat" )
  3140.  
  3141. AB.ChatText( "Invalid data file and/or data file is using an outdated format! type ace_save_settings into console to fix this", Color(255,205,205) )
  3142.  
  3143. return
  3144.  
  3145. end
  3146.  
  3147.  
  3148.  
  3149. TheFile = halves[1]
  3150.  
  3151. local DataPieces = string.Explode( "\n", TheFile )
  3152.  
  3153.  
  3154.  
  3155. for k, v in pairs( DataPieces ) do
  3156.  
  3157. local TheLine = string.Explode( ";", v )
  3158.  
  3159. AB.Vars[TheLine[1]] = tobool(TheLine[2])
  3160.  
  3161. end
  3162.  
  3163.  
  3164.  
  3165. TheFile = halves[2]
  3166.  
  3167. local DataPieces = string.Explode( "\n", TheFile )
  3168.  
  3169.  
  3170.  
  3171. for k, v in pairs( DataPieces ) do
  3172.  
  3173. local TheLine = string.Explode( ";", v )
  3174.  
  3175. AB.NumberVars[TheLine[1]] = tonumber(TheLine[2])
  3176.  
  3177. end
  3178.  
  3179.  
  3180.  
  3181. AB.Vars.NameStealer = false
  3182.  
  3183.  
  3184.  
  3185. end
  3186.  
  3187. concommand.Add("ace_load_settings", AB.LoadSettings)
  3188.  
  3189. AB.LoadSettings() -- load our shit right away
  3190.  
  3191. AB.Vars.ChatSpam = false -- reset this to false so we dont get cucked by anticheats
  3192.  
  3193.  
  3194.  
  3195. -- covert source units(inches) to metres
  3196.  
  3197. function AB.ToMetric( num )
  3198.  
  3199. if not isnumber(num) then return end
  3200.  
  3201. return math.floor(num * 0.0254)
  3202.  
  3203. end
  3204.  
  3205.  
  3206.  
  3207. -- check if an entity is actually visible on our screen, used to boost efficiency in the xray and esp code
  3208.  
  3209. function AB.OnScreen( ent, ws )
  3210.  
  3211. local ws = ws or 0
  3212.  
  3213. local bpos = (ent:LocalToWorld(ent:OBBCenter())):ToScreen()
  3214.  
  3215. if ( bpos.x < (ScrW() + ws) and bpos.x > (0 - ws) and bpos.y < (ScrH() + ws) and bpos.y > (0 - ws) ) then return true end
  3216.  
  3217. return false
  3218.  
  3219. end
  3220.  
  3221.  
  3222.  
  3223. function AB.IsDead( ply )
  3224.  
  3225. if !ply:IsValid() or !ply:Alive() or ply:GetObserverMode() != OBS_MODE_NONE then return true end
  3226.  
  3227. return false
  3228.  
  3229. end
  3230.  
  3231.  
  3232.  
  3233. -- compatible with ulx, assmod, evolve, vermillion 2 and traditional admin/superadmin detection may or may not pick up unknown admin mods
  3234.  
  3235. function AB.GetRank( ply )
  3236.  
  3237. if !ply or !ply:IsValid() then return "user" end
  3238.  
  3239. local rank = "user"
  3240.  
  3241. if ply:GetNWString("usergroup") then rank = ply:GetNWString("usergroup") return rank end
  3242.  
  3243. --if evolve then rank = ply:EV_GetRank() return rank end
  3244.  
  3245. if ply:GetNetworkedString( "UserGroup" ) then rank = ply:GetNetworkedString( "UserGroup" ) return rank end
  3246.  
  3247. if ply:GetNWString("Vermilion_Rank") then rank = ply:GetNWString("Vermilion_Rank") return rank end
  3248.  
  3249. if ply:IsSuperAdmin() then rank = "SUPERADMIN" return rank end
  3250.  
  3251. if ply:IsAdmin() then rank = "ADMIN" return rank end
  3252.  
  3253.  
  3254.  
  3255. return rank -- if they aren't any kind of admin that we know of then this will return "user"
  3256.  
  3257. end
  3258.  
  3259.  
  3260.  
  3261.  
  3262.  
  3263. function AB.GetESPColor( ply )
  3264.  
  3265. local col1, col2 = AB.DefaultScheme, AB.DefaultScheme2
  3266.  
  3267.  
  3268.  
  3269. if AB.IsTarget( ply ) then
  3270.  
  3271. col1, col2 = Color(255,205,0,255), Color(205,160,0,255)
  3272.  
  3273. return col1, col2
  3274.  
  3275. end
  3276.  
  3277.  
  3278.  
  3279. if AB.IsFriend( ply ) then
  3280.  
  3281. col1, col2 = Color(0,255,0,255), Color(100,250,100,255)
  3282.  
  3283. return col1, col2
  3284.  
  3285. end
  3286.  
  3287.  
  3288.  
  3289. if AB.GetRank( ply ) != "user" then
  3290.  
  3291. col1, col2 = Color(255,100,0,255), Color(255,50,0,255)
  3292.  
  3293. return col1, col2
  3294.  
  3295. end
  3296.  
  3297.  
  3298.  
  3299. if AB.Vars.TeamColors then
  3300.  
  3301. col1 = team.GetColor(ply:Team())
  3302.  
  3303. col2 = Color(math.Clamp(col1.r - 100, 0, 255), math.Clamp(col1.g - 100, 0, 255), math.Clamp(col1.b - 100, 0, 255), 255)
  3304.  
  3305. return col1, col2
  3306.  
  3307. end
  3308.  
  3309.  
  3310.  
  3311. return col1, col2
  3312.  
  3313. end
  3314.  
  3315.  
  3316.  
  3317.  
  3318.  
  3319. -- friends and targets system
  3320.  
  3321.  
  3322.  
  3323.  
  3324.  
  3325.  
  3326.  
  3327.  
  3328.  
  3329. function AB.AddTarget( ply )
  3330.  
  3331. if !ply or !ply:IsValid() then return end
  3332.  
  3333. if table.HasValue( AB.Targets, ply ) then return end
  3334.  
  3335. table.insert( AB.Targets, ply )
  3336.  
  3337. AB.DebugLog( "Added "..ply:Nick().." to your targets list", Color( 250, 150, 50) )
  3338.  
  3339. end
  3340.  
  3341.  
  3342.  
  3343. function AB.RemoveTarget( ply )
  3344.  
  3345. if !ply or !ply:IsValid() then return end
  3346.  
  3347. if not table.HasValue( AB.Targets, ply ) then AB.ChatText( ply:Nick().." isn't a target!", Color(255,205,205) ) return end
  3348.  
  3349. table.RemoveByValue( AB.Targets, ply )
  3350.  
  3351. AB.DebugLog( "Removed "..ply:Nick().." from your targets list", Color( 250, 150, 50) )
  3352.  
  3353. end
  3354.  
  3355.  
  3356.  
  3357. function AB.IsTarget( ply )
  3358.  
  3359. if !ply or !ply:IsValid() then return false end
  3360.  
  3361. return table.HasValue( AB.Targets, ply )
  3362.  
  3363. end
  3364.  
  3365.  
  3366.  
  3367.  
  3368.  
  3369.  
  3370.  
  3371. function AB.IsFriend( ply )
  3372.  
  3373. if !ply or !ply:IsValid() then return false end
  3374.  
  3375. return table.HasValue( AB.Buddies, ply )
  3376.  
  3377. end
  3378.  
  3379.  
  3380.  
  3381. function AB.AddFriend( ply )
  3382.  
  3383. if !ply:IsValid() then return end
  3384.  
  3385. if table.HasValue( AB.Buddies, ply ) then return end
  3386.  
  3387. table.insert( AB.Buddies, ply )
  3388.  
  3389. AB.DebugLog( "Added "..ply:Nick().." to your friends list", Color( 50, 250, 50) )
  3390.  
  3391. end
  3392.  
  3393.  
  3394.  
  3395. function AB.RemoveFriend( ply )
  3396.  
  3397. if !ply:IsValid() then return end
  3398.  
  3399. if not table.HasValue( AB.Buddies, ply ) then AB.ChatText( ply:Nick().." isn't on your friends list!", Color(255,205,205) ) return end
  3400.  
  3401. table.RemoveByValue( AB.Buddies, ply )
  3402.  
  3403. AB.DebugLog( "Removed "..ply:Nick().." from your friends list", Color( 50, 250, 50) )
  3404.  
  3405. end
  3406.  
  3407.  
  3408.  
  3409. function AB.RemoveInvalidFriends()
  3410.  
  3411. for k, v in pairs(AB.Buddies) do
  3412.  
  3413. if !v:IsValid() then table.remove( AB.Buddies, k ) end
  3414.  
  3415. end
  3416.  
  3417. end
  3418.  
  3419.  
  3420.  
  3421. function AB.AddConnectedFriends()
  3422.  
  3423. for k, v in pairs(player.GetAll()) do
  3424.  
  3425. if v:GetFriendStatus() == "friend" then AB.AddFriend( v ) end
  3426.  
  3427. end
  3428.  
  3429. end
  3430.  
  3431. concommand.Add("ace_refresh_friends", AB.AddConnectedFriends)
  3432.  
  3433. timer.Create( "ab_keep_friends_updated", 10, 0, AB.AddConnectedFriends )
  3434.  
  3435.  
  3436.  
  3437. gameevent.Listen( "player_spawn" )
  3438.  
  3439. hook.Add( "player_spawn", "addsteamfriends", function( data )
  3440.  
  3441. local id = data.userid
  3442.  
  3443. local ply = player.GetByID( id )
  3444.  
  3445. if !ply:IsValid() then return end
  3446.  
  3447. if ply:GetFriendStatus() == "friend" and AB.Vars.AutoAddSteamFriends and !table.HasValue( AB.Buddies, ply ) then
  3448.  
  3449. AB.AddFriend( ply )
  3450.  
  3451. end
  3452.  
  3453. end )
  3454.  
  3455.  
  3456.  
  3457. -- this is for faggots that attempt to restrict ulx who
  3458.  
  3459.  
  3460.  
  3461. function AB.Who()
  3462.  
  3463. local plys = player.GetAll()
  3464.  
  3465. for k, v in pairs(plys) do
  3466.  
  3467. if v:GetNWString("usergroup") then
  3468.  
  3469. local col = Color( 150, 150, 200, 255 )
  3470.  
  3471. if v:GetNWString("usergroup") != "user" then col = Color( 250, 200, 150, 255 ) end
  3472.  
  3473. MsgC(col, v:GetName() .. string.rep("\t", math.Round(8 / #v:GetName())), v:GetNWString("usergroup").."\n")
  3474.  
  3475. end
  3476.  
  3477. end
  3478.  
  3479. end
  3480.  
  3481. concommand.Add("ace_who", AB.Who)
  3482.  
  3483.  
  3484.  
  3485. local grad = Material( "gui/gradient" )
  3486.  
  3487. local upgrad = Material( "gui/gradient_up" )
  3488.  
  3489. local downgrad = Material( "gui/gradient_down" )
  3490.  
  3491. local o_color1 = Color( 0, 0, 50, 255 )
  3492.  
  3493. local o_color2 = Color(155, 155, 155, 255)
  3494.  
  3495.  
  3496.  
  3497.  
  3498.  
  3499. function AB.ToggleVar( var, fancyname )
  3500.  
  3501. if AB.Vars[var] then
  3502.  
  3503. if AB.Vars.Notifications then AB.ChatText( "Disabled "..fancyname, Color(255,205,205) ) end
  3504.  
  3505. if string.find(var, "Xray") or var == "Vision" then AB.XrayShutoff() end -- need to run this function to properly unfuck things that have been xray'd
  3506.  
  3507. AB.Vars[var] = false
  3508.  
  3509. else
  3510.  
  3511. if AB.Vars.Notifications then AB.ChatText( "Enabled "..fancyname, Color(255,255,255) ) end
  3512.  
  3513. AB.Vars[var] = true
  3514.  
  3515. end
  3516.  
  3517. AB.SaveSettings()
  3518.  
  3519. end
  3520.  
  3521.  
  3522.  
  3523. for k, v in pairs(AB.Vars) do
  3524.  
  3525. concommand.Add("ace_togglevar_"..string.lower(k), function() AB.ToggleVar( k, k ) end)
  3526.  
  3527. end
  3528.  
  3529.  
  3530.  
  3531.  
  3532.  
  3533. function AB.ChangeColorScheme( num )
  3534.  
  3535. if not isnumber(num) then return end
  3536.  
  3537. if num <= 0 or num > #AB.DefaultSchemes then print("I don't know how you fucked up this badly but you are trying to change to a colour scheme that doesn't exist!") return end
  3538.  
  3539. local c1 = AB.DefaultSchemes[num][2]
  3540.  
  3541. local c2 = AB.DefaultSchemes[num][3]
  3542.  
  3543.  
  3544.  
  3545. if AB.Vars.Notifications then AB.ChatText( "Changed colour scheme to "..AB.DefaultSchemes[num][1], c1 ) end
  3546.  
  3547. AB.DefaultScheme = c1
  3548.  
  3549. AB.DefaultScheme2 = c2
  3550.  
  3551. AB.ColScheme = Vector(c1.r / 255, c1.g / 255, c1.b / 255)
  3552.  
  3553. AB.ColScheme2 = Vector(c2.r / 255, c2.g / 255, c2.b / 255)
  3554.  
  3555.  
  3556.  
  3557. -- AB.NumberVars.ColorScheme = num -- done inside the button logic
  3558.  
  3559.  
  3560.  
  3561. end
  3562.  
  3563.  
  3564.  
  3565. function AB.MakeToggleButton( parent, x, y, btext, var, vartext, tooltip)
  3566.  
  3567. if !parent:IsValid() then return end
  3568.  
  3569.  
  3570.  
  3571. local TButton = vgui.Create( "DButton" )
  3572.  
  3573. TButton:SetParent( parent )
  3574.  
  3575. TButton:SetPos( x, y )
  3576.  
  3577. TButton:SetText( btext )
  3578.  
  3579. TButton:SetTextColor( Color(255, 255, 255, 255) )
  3580.  
  3581. TButton:SetSize( 110, 25 )
  3582.  
  3583. if tooltip != nil then TButton:SetToolTip( tooltip ) end
  3584.  
  3585.  
  3586.  
  3587. TButton.Paint = function( self, w, h )
  3588.  
  3589. surface.SetDrawColor( Color(60, 60, 90, 200) )
  3590.  
  3591. TButton:SetText( btext )
  3592.  
  3593. surface.DrawRect( 0, 0, w, h )
  3594.  
  3595. surface.SetDrawColor( o_color1 )
  3596.  
  3597. surface.SetMaterial( downgrad )
  3598.  
  3599. surface.DrawTexturedRect( 0, 0, w, h/ 2 )
  3600.  
  3601.  
  3602.  
  3603. if AB.Vars[var] then
  3604.  
  3605. surface.SetDrawColor( Color(150, 250, 150, 255) )
  3606.  
  3607. else
  3608.  
  3609. surface.SetDrawColor( Color(100, 100, 100, 255) )
  3610.  
  3611. end
  3612.  
  3613. surface.DrawOutlinedRect( 0, 0, w, h )
  3614.  
  3615. end
  3616.  
  3617.  
  3618.  
  3619.  
  3620.  
  3621. TButton.DoClick = function()
  3622.  
  3623. AB.ToggleVar( var, vartext )
  3624.  
  3625. end
  3626.  
  3627.  
  3628.  
  3629. end
  3630.  
  3631.  
  3632.  
  3633. function AB.MakeFunctionButton( parent, x, y, btext, func, tooltip)
  3634.  
  3635. if !parent:IsValid() then return end
  3636.  
  3637.  
  3638.  
  3639. local TButton = vgui.Create( "DButton" )
  3640.  
  3641. TButton:SetParent( parent )
  3642.  
  3643. TButton:SetPos( x, y )
  3644.  
  3645. TButton:SetText( btext )
  3646.  
  3647. TButton:SetTextColor( Color(255, 255, 255, 255) )
  3648.  
  3649. TButton:SetSize( 110, 25 )
  3650.  
  3651. if tooltip != nil then TButton:SetToolTip( tooltip ) end
  3652.  
  3653.  
  3654.  
  3655. TButton.Paint = function( self, w, h )
  3656.  
  3657. surface.SetDrawColor( Color(60, 60, 90, 200) )
  3658.  
  3659. TButton:SetText( btext )
  3660.  
  3661. surface.DrawRect( 0, 0, w, h )
  3662.  
  3663. surface.SetDrawColor( o_color1 )
  3664.  
  3665. surface.SetMaterial( downgrad )
  3666.  
  3667. surface.DrawTexturedRect( 0, 0, w, h/ 2 )
  3668.  
  3669.  
  3670.  
  3671. surface.SetDrawColor( Color(100, 100, 100, 255) )
  3672.  
  3673. surface.DrawOutlinedRect( 0, 0, w, h )
  3674.  
  3675. end
  3676.  
  3677.  
  3678.  
  3679.  
  3680.  
  3681. TButton.DoClick = function()
  3682.  
  3683. func()
  3684.  
  3685. end
  3686.  
  3687.  
  3688.  
  3689. end
  3690.  
  3691.  
  3692.  
  3693. function AB.MakeFloatingButton( x, y, btext, func)
  3694.  
  3695. local TButton = vgui.Create( "DButton" )
  3696.  
  3697. TButton:SetPos( x, y )
  3698.  
  3699. TButton:SetText( btext )
  3700.  
  3701. TButton:SetTextColor( Color(255, 255, 255, 255) )
  3702.  
  3703. TButton:SetSize( 110, 25 )
  3704.  
  3705.  
  3706.  
  3707. TButton.Paint = function( self, w, h )
  3708.  
  3709. surface.SetDrawColor( Color(60, 60, 90, 200) )
  3710.  
  3711. TButton:SetText( btext )
  3712.  
  3713. surface.DrawRect( 0, 0, w, h )
  3714.  
  3715. surface.SetDrawColor( Color(100, 100, 100, 255) )
  3716.  
  3717. surface.DrawOutlinedRect( 0, 0, w, h )
  3718.  
  3719. end
  3720.  
  3721.  
  3722.  
  3723.  
  3724.  
  3725. TButton.DoClick = function()
  3726.  
  3727. func()
  3728.  
  3729. end
  3730.  
  3731. return TButton
  3732.  
  3733. end
  3734.  
  3735.  
  3736.  
  3737. function AB.MakeSlider( parent, x, y, length, text, min, max, var )
  3738.  
  3739. if !parent:IsValid() then return end
  3740.  
  3741.  
  3742.  
  3743. local sbg = vgui.Create( "DPanel" )
  3744.  
  3745. sbg:SetParent( parent )
  3746.  
  3747. sbg:SetPos( x, y )
  3748.  
  3749. sbg:SetSize( length, 25 )
  3750.  
  3751.  
  3752.  
  3753. sbg.Paint = function( self, w, h ) -- Paint function
  3754.  
  3755. surface.SetDrawColor( 50, 50, 90, 255 )
  3756.  
  3757. surface.DrawRect(0, 0, w, h )
  3758.  
  3759. surface.SetDrawColor( o_color1 )
  3760.  
  3761. surface.SetMaterial( downgrad )
  3762.  
  3763. surface.DrawTexturedRect( 0, 0, w, h/ 2 )
  3764.  
  3765. surface.SetDrawColor( 50, 50, 90, 255 )
  3766.  
  3767. surface.DrawOutlinedRect(0, 0, w, h )
  3768.  
  3769.  
  3770.  
  3771. end
  3772.  
  3773.  
  3774.  
  3775. local NumSlider = vgui.Create( "DNumSlider", sbg )
  3776.  
  3777. NumSlider:SetPos( 10,-5 )
  3778.  
  3779. NumSlider:SetWide( length - 10 )
  3780.  
  3781. NumSlider:SetText( text )
  3782.  
  3783. NumSlider:SetMin( min )
  3784.  
  3785. NumSlider:SetMax( max )
  3786.  
  3787. NumSlider:SetValue( AB.NumberVars[var] )
  3788.  
  3789. NumSlider:SetDecimals( 0 )
  3790.  
  3791. NumSlider.OnValueChanged = function( panel, val ) AB.NumberVars[var] = math.floor(val) end
  3792.  
  3793.  
  3794.  
  3795. end
  3796.  
  3797.  
  3798.  
  3799. function AB.MakeKeyBinder( parent, x, y, length, height, keyvar, changetxt )
  3800.  
  3801.  
  3802.  
  3803. local binder = vgui.Create( "DBinder", parent )
  3804.  
  3805. binder:SetSize( length, height )
  3806.  
  3807. binder:SetPos( x, y )
  3808.  
  3809. binder:SetTextColor( Color(255,255,255) )
  3810.  
  3811. binder:SetSelected( AB.NumberVars[keyvar] )
  3812.  
  3813. binder.Paint = function( self, w, h )
  3814.  
  3815. surface.SetDrawColor( Color(60, 60, 90, 200) )
  3816.  
  3817. surface.DrawRect( 0, 0, w, h )
  3818.  
  3819. surface.SetDrawColor( o_color1 )
  3820.  
  3821. surface.SetMaterial( downgrad )
  3822.  
  3823. surface.DrawTexturedRect( 0, 0, w, h/ 2 )
  3824.  
  3825.  
  3826.  
  3827. surface.SetDrawColor( Color(100, 100, 100, 255) )
  3828.  
  3829. surface.DrawOutlinedRect( 0, 0, w, h )
  3830.  
  3831. end
  3832.  
  3833. function binder:SetSelectedNumber( num )
  3834.  
  3835. AB.ChatText( "Set new "..changetxt.." bind key", Color(255,255,255) )
  3836.  
  3837. self.m_iSelectedNumber = num
  3838.  
  3839. AB.NumberVars[keyvar] = num
  3840.  
  3841. end
  3842.  
  3843.  
  3844.  
  3845. end
  3846.  
  3847.  
  3848.  
  3849. ------------------------------------------------------------------------ACEBOT MENU--------------------------------------------------------------------------------------
  3850.  
  3851.  
  3852.  
  3853.  
  3854.  
  3855. function AB.Menu()
  3856.  
  3857.  
  3858.  
  3859. if AceMenu then return false end
  3860.  
  3861.  
  3862.  
  3863. local AceMenu = vgui.Create("DFrame")
  3864.  
  3865. AceMenu:SetSize(500,700)
  3866.  
  3867. AceMenu:SetTitle("Acebot - A component of Project Odium Created by LegendofRobbo")
  3868.  
  3869. AceMenu:Center()
  3870.  
  3871. AceMenu:MakePopup()
  3872.  
  3873.  
  3874.  
  3875. AceMenu.Paint = function( panel, w, h )
  3876.  
  3877.  
  3878.  
  3879. surface.SetDrawColor( Color(50, 50, 90, 255) )
  3880.  
  3881. surface.DrawRect( 0, 0, w, h )
  3882.  
  3883.  
  3884.  
  3885. surface.SetDrawColor( o_color1 )
  3886.  
  3887. surface.SetMaterial( upgrad )
  3888.  
  3889. surface.DrawTexturedRect( 0, h / 2, w, h / 2 )
  3890.  
  3891.  
  3892.  
  3893. surface.SetDrawColor( o_color1 )
  3894.  
  3895. surface.SetMaterial( downgrad )
  3896.  
  3897. surface.DrawTexturedRect( 0, 0, w, h/ 2 )
  3898.  
  3899.  
  3900.  
  3901. surface.SetDrawColor( o_color2 )
  3902.  
  3903. surface.DrawOutlinedRect( 0, 0, w, h )
  3904.  
  3905. surface.DrawOutlinedRect( 1, 1, w - 2, h - 2 )
  3906.  
  3907. end
  3908.  
  3909.  
  3910.  
  3911.  
  3912.  
  3913. local PropertySheet = vgui.Create( "DPropertySheet" )
  3914.  
  3915. PropertySheet:SetParent( AceMenu )
  3916.  
  3917. PropertySheet:SetPos( 10, 30 )
  3918.  
  3919. PropertySheet:SetSize( 480, AceMenu:GetTall() - 40 )
  3920.  
  3921.  
  3922.  
  3923. PropertySheet.Paint = function()
  3924.  
  3925. surface.SetDrawColor( Color(0, 0, 0, 200) )
  3926.  
  3927. surface.DrawRect(0, 0, PropertySheet:GetWide(), PropertySheet:GetTall())
  3928.  
  3929. for k, v in pairs(PropertySheet.Items) do
  3930.  
  3931. if v.Tab then
  3932.  
  3933. v.Tab.Paint = function(self,w,h)
  3934.  
  3935. draw.RoundedBox(0, 0, 0, w, h, Color(50,90,120))
  3936.  
  3937. end
  3938.  
  3939. end
  3940.  
  3941. end
  3942.  
  3943. end
  3944.  
  3945.  
  3946.  
  3947.  
  3948.  
  3949. --------------------------------------------Tabs-------------------------------------------
  3950.  
  3951.  
  3952.  
  3953.  
  3954.  
  3955. local General = vgui.Create( "DPanel" )
  3956.  
  3957. General:SetPos( 0, 0 )
  3958.  
  3959. General:SetSize( 480, AceMenu:GetTall() - 40 )
  3960.  
  3961.  
  3962.  
  3963. General.Paint = function() -- Paint function
  3964.  
  3965. surface.SetDrawColor(50, 50, 50 ,255)
  3966.  
  3967. surface.DrawOutlinedRect(0, 0, General:GetWide(), General:GetTall())
  3968.  
  3969. surface.SetDrawColor(0, 0, 0 ,200)
  3970.  
  3971. surface.DrawRect(0, 0, General:GetWide(), General:GetTall())
  3972.  
  3973. surface.SetDrawColor( 50, 50, 90, 255 )
  3974.  
  3975. surface.DrawRect(0, 40, General:GetWide(), 2)
  3976.  
  3977. end
  3978.  
  3979.  
  3980.  
  3981. local Utility = vgui.Create( "DPanel" )
  3982.  
  3983. Utility:SetPos( 0, 0 )
  3984.  
  3985. Utility:SetSize( 480, AceMenu:GetTall() - 40 )
  3986.  
  3987.  
  3988.  
  3989. Utility.Paint = function() -- Paint function
  3990.  
  3991. surface.SetDrawColor(50, 50, 50 ,255)
  3992.  
  3993. surface.DrawOutlinedRect(0, 0, Utility:GetWide(), Utility:GetTall())
  3994.  
  3995. surface.SetDrawColor(0, 0, 0 ,200)
  3996.  
  3997. surface.DrawRect(0, 0, Utility:GetWide(), Utility:GetTall())
  3998.  
  3999. end
  4000.  
  4001.  
  4002.  
  4003. local Botsettings = vgui.Create( "DPanel" )
  4004.  
  4005. Botsettings:SetPos( 0, 0 )
  4006.  
  4007. Botsettings:SetSize( 480, AceMenu:GetTall() - 40 )
  4008.  
  4009.  
  4010.  
  4011. Botsettings.Paint = function() -- Paint function
  4012.  
  4013. surface.SetDrawColor(50, 50, 50 ,255)
  4014.  
  4015. surface.DrawOutlinedRect(0, 0, Botsettings:GetWide(), Botsettings:GetTall())
  4016.  
  4017. surface.SetDrawColor(0, 0, 0 ,200)
  4018.  
  4019. surface.DrawRect(0, 0, Botsettings:GetWide(), Botsettings:GetTall())
  4020.  
  4021. end
  4022.  
  4023.  
  4024.  
  4025. local Debug = vgui.Create( "DPanel" )
  4026.  
  4027. Debug:SetPos( 0, 0 )
  4028.  
  4029. Debug:SetSize( 480, AceMenu:GetTall() - 40 )
  4030.  
  4031.  
  4032.  
  4033. Debug.Paint = function() -- Paint function
  4034.  
  4035. surface.SetDrawColor(50, 50, 50 ,255)
  4036.  
  4037. surface.DrawOutlinedRect(0, 0, Debug:GetWide(), Debug:GetTall())
  4038.  
  4039. surface.SetDrawColor(0, 0, 0 ,200)
  4040.  
  4041. surface.DrawRect(0, 0, Debug:GetWide(), Debug:GetTall())
  4042.  
  4043. if AB.MemoryDebug then
  4044.  
  4045. draw.DrawText( "Visuals Memory Usage: "..AB.MemoryDebug["hud"].."kb", "Default", 10, 530, Color(255,255,255) )
  4046.  
  4047. draw.DrawText( "Logic Core Memory Usage: "..AB.MemoryDebug["logic"].."kb", "Default", 10, 545, Color(255,255,255) )
  4048.  
  4049. draw.DrawText( "Aimbot Core Memory Usage: "..AB.MemoryDebug["aimbot"].."kb", "Default", 10, 560, Color(255,255,255) )
  4050.  
  4051. surface.SetDrawColor(100, 100, 200 ,255)
  4052.  
  4053. surface.DrawRect(250, 532, math.Clamp( AB.MemoryDebug["hud"] * 0.75, 0, 200), 10 )
  4054.  
  4055. surface.DrawRect(250, 547, math.Clamp( AB.MemoryDebug["logic"] * 20, 0, 200), 10 )
  4056.  
  4057. surface.DrawRect(250, 562, math.Clamp( AB.MemoryDebug["aimbot"] * 20, 0, 200), 10 )
  4058.  
  4059. surface.SetDrawColor(150, 150, 250 ,255)
  4060.  
  4061. surface.DrawOutlinedRect(250, 532, 200, 10 )
  4062.  
  4063. surface.DrawOutlinedRect(250, 547, 200, 10 )
  4064.  
  4065. surface.DrawOutlinedRect(250, 562, 200, 10 )
  4066.  
  4067. end
  4068.  
  4069. end
  4070.  
  4071.  
  4072.  
  4073.  
  4074.  
  4075. --------------------------------------------Buttons-------------------------------------------
  4076.  
  4077.  
  4078.  
  4079.  
  4080.  
  4081. function AB.RefreshConsole()
  4082.  
  4083. if richtext then richtext:Remove() end
  4084.  
  4085. if !ValidPanel(Debug) then return end
  4086.  
  4087. richtext = vgui.Create( "RichText", Debug )
  4088.  
  4089. richtext:SetPos(5, 5)
  4090.  
  4091. richtext:SetSize( 440, AceMenu:GetTall() - 180 )
  4092.  
  4093.  
  4094.  
  4095. for idx, tab in pairs(AB.Debug) do
  4096.  
  4097. richtext:InsertColorChange( tab[2].r, tab[2].g, tab[2].b, 255 )
  4098.  
  4099. richtext:AppendText( tab[1].."\n" )
  4100.  
  4101. end
  4102.  
  4103. end
  4104.  
  4105.  
  4106.  
  4107. timer.Create("ab_refreshconsole", 1, 0, function() AB.RefreshConsole() end)
  4108.  
  4109.  
  4110.  
  4111.  
  4112.  
  4113. AB.MakeToggleButton( General, 5, 10, "Vision", "Vision", "Vision Mode")
  4114.  
  4115.  
  4116.  
  4117. AB.MakeSlider( General, 5, 590, 455, "Max Vision Range (Metres)", 0, 2000, "VisionDist" )
  4118.  
  4119.  
  4120.  
  4121. AB.MakeToggleButton( General, 5, 70, "ESP Enabled", "ShowESP", "Show ESP")
  4122.  
  4123. AB.MakeToggleButton( General, 120, 70, "Show Dead Players", "ShowDead", "Show Dead Players")
  4124.  
  4125. AB.MakeToggleButton( General, 235, 70, "Show Friends", "ShowFriends", "Show Friends")
  4126.  
  4127. AB.MakeToggleButton( General, 350, 70, "Radar Colours", "RadarColors", "Coloured players on radar")
  4128.  
  4129. AB.MakeToggleButton( General, 350, 100, "Show Traitors", "ShowTraitors", "Show Traitors (TTT)", "Controls whether the ESP shows known traitors in the TTT gamemode")
  4130.  
  4131. AB.MakeToggleButton( General, 235, 100, "Highlight Targets", "ShowTargets", "Highlight Targets", "Highlights people that are on your targets list")
  4132.  
  4133. AB.MakeToggleButton( General, 120, 100, "Show Admins", "ShowRanks", "Show Admins")
  4134.  
  4135. AB.MakeToggleButton( General, 5, 100, "Show Distance", "ShowDistance", "Show Distance")
  4136.  
  4137. AB.MakeToggleButton( General, 5, 130, "Highlight Props", "ESPProps", "ESP Highlight Props")
  4138.  
  4139. AB.MakeToggleButton( General, 120, 130, "Show Marked Ents", "Entfinder", "ESP Show Marked Ents")
  4140.  
  4141. AB.MakeToggleButton( General, 235, 130, "Show Team Colours", "TeamColors", "Show Team Colours")
  4142.  
  4143. AB.MakeToggleButton( General, 350, 130, "Show Health", "ShowHP", "Show Health")
  4144.  
  4145. AB.MakeToggleButton( General, 5, 490, "Vision Lines", "Vizlines", "Shows which direction players are looking")
  4146.  
  4147. AB.MakeToggleButton( General, 120, 490, "Add Steam Friends", "AutoAddSteamFriends", "Automatically add steam friends to your ESP")
  4148.  
  4149. AB.MakeToggleButton( General, 5, 160, "Show Position", "VSquares", "Show player positions on the esp")
  4150.  
  4151. AB.MakeToggleButton( General, 120, 160, "Show Names", "VNames", "Show player names on the esp")
  4152.  
  4153.  
  4154.  
  4155. AB.MakeToggleButton( General, 5, 190, "Rear Vision Mirror", "Mirror", "Rear Vision Mirror")
  4156.  
  4157.  
  4158.  
  4159. AB.MakeSlider( General, 5, 225, 225, "Mirror X", 0, ScrW(), "MirrorX" )
  4160.  
  4161. AB.MakeSlider( General, 235, 225, 220, "Mirror Y", 0, ScrH(), "MirrorY" )
  4162.  
  4163. AB.MakeSlider( General, 235, 190, 220, "Mirror Size", 0, 60, "MirrorSize" )
  4164.  
  4165. AB.MakeFunctionButton( General, 120, 190, "Mirror Vertical Axis", function()
  4166.  
  4167. if AB.NumberVars.MirrorAxis == 0 then
  4168.  
  4169. if AB.Vars.Notifications then AB.ChatText( "Set mirror axis mode to mimic", Color(255,255,255) ) end
  4170.  
  4171. AB.NumberVars.MirrorAxis = 1
  4172.  
  4173. elseif AB.NumberVars.MirrorAxis == 1 then
  4174.  
  4175. if AB.Vars.Notifications then AB.ChatText( "Set mirror axis mode to reverse", Color(255,255,255) ) end
  4176.  
  4177. AB.NumberVars.MirrorAxis = 2
  4178.  
  4179. else
  4180.  
  4181. if AB.Vars.Notifications then AB.ChatText( "Set mirror axis mode to none", Color(255,255,255) ) end
  4182.  
  4183. AB.NumberVars.MirrorAxis = 0
  4184.  
  4185. end
  4186.  
  4187. end)
  4188.  
  4189.  
  4190.  
  4191. AB.MakeFunctionButton( General, 5, 260, "Toggle Freecam", function()
  4192.  
  4193. AB.Freecam = !AB.Freecam
  4194.  
  4195. AB.ChatText( "Set freecam mode to: "..tostring(AB.Freecam), Color(255,255,255) )
  4196.  
  4197. end, "Hijacks the rear vision mirror and turns it into a ghetto freecam system")
  4198.  
  4199. AB.MakeFunctionButton( General, 120, 260, "Bring Freecam Here", function()
  4200.  
  4201. AB.FreecamCoordinates.pos = LocalPlayer():EyePos()
  4202.  
  4203. AB.FreecamCoordinates.ang = LocalPlayer():EyeAngles()
  4204.  
  4205. AB.ChatText( "Brought freecam to my eye pos", Color(255,255,255) )
  4206.  
  4207. end, "Snaps the freecam to your view position")
  4208.  
  4209. AB.MakeToggleButton( General, 120, 290, "Freecam Is Movable", "FreecamControls", "Freecam controls active")
  4210.  
  4211.  
  4212.  
  4213.  
  4214.  
  4215. AB.MakeKeyBinder(General, 400, 260, 50, 20, "FreecamForward", "freecam move forward" )
  4216.  
  4217. AB.MakeKeyBinder(General, 400, 290, 50, 20, "FreecamBack", "freecam move backwards" )
  4218.  
  4219. AB.MakeKeyBinder(General, 235, 275, 50, 20, "FreecamLeft", "freecam turn left" )
  4220.  
  4221. AB.MakeKeyBinder(General, 345, 275, 50, 20, "FreecamRight", "freecam turn right" )
  4222.  
  4223. AB.MakeKeyBinder(General, 290, 260, 50, 20, "FreecamUp", "freecam pitch up" )
  4224.  
  4225. AB.MakeKeyBinder(General, 290, 290, 50, 20, "FreecamDown", "freecam pitch down" )
  4226.  
  4227.  
  4228.  
  4229. AB.MakeToggleButton( General, 5, 320, "Player Radar", "Radar", "Player Radar")
  4230.  
  4231. AB.MakeSlider( General, 120, 320, 165, "Radar Size", 50, 600, "RadarSize" )
  4232.  
  4233. AB.MakeSlider( General, 290, 320, 165, "Radar Zoom", 10, 150, "RadarZoom" )
  4234.  
  4235. AB.MakeSlider( General, 5, 350, 145, "Radar X", 0, ScrW(), "RadarX" )
  4236.  
  4237. AB.MakeSlider( General, 155, 350, 145, "Radar Y", 0, ScrH(), "RadarY" )
  4238.  
  4239. AB.MakeSlider( General, 305, 350, 150, "Rad Alpha", 0, 255, "RadarAlpha" )
  4240.  
  4241.  
  4242.  
  4243. AB.MakeToggleButton( General, 5, 390, "Xray Enabled", "Xray", "X-Ray")
  4244.  
  4245. AB.MakeToggleButton( General, 120, 390, "Xray Players", "XrayPlayers", "Show players on X-Ray")
  4246.  
  4247. AB.MakeToggleButton( General, 235, 390, "Xray Props", "XrayProps", "Show props on X-Ray")
  4248.  
  4249. AB.MakeToggleButton( General, 350, 390, "Xray Marked Ents", "XrayEntfinder", "Show marked entities on X-Ray")
  4250.  
  4251. AB.MakeToggleButton( General, 5, 420, "Xray Solid Chams", "XraySolid", "X-Ray Solid Chams")
  4252.  
  4253. AB.MakeSlider( General, 5, 450, 465, "Xray Maximum Distance (metres)", 0, 2000, "XrayDistance" )
  4254.  
  4255. AB.MakeToggleButton( General, 120, 420, "Xray Colours", "NoChamColours", "Xray Colours")
  4256.  
  4257. AB.MakeToggleButton( General, 235, 420, "Xray Bright Colours", "PKChams", "Xray Bright Chams")
  4258.  
  4259.  
  4260.  
  4261.  
  4262.  
  4263. AB.MakeToggleButton( Utility, 5, 480, "Witness Detector", "WitnessDetector", "Witness Detector")
  4264.  
  4265. AB.MakeToggleButton( Utility, 120, 480, "Spectator Detector", "SpectatorDetector", "Spectator Detector")
  4266.  
  4267. AB.MakeToggleButton( General, 120, 550, "Crosshair", "Crosshair", "Crosshair")
  4268.  
  4269. AB.MakeToggleButton( General, 235, 490, "Draw 3D BBox", "BoundingBox3d", "3D Bounding Boxes on Players")
  4270.  
  4271. AB.MakeFunctionButton( General, 235, 550, "Wraith Vision", function() AB.ToggleWraithVision() end)
  4272.  
  4273. AB.MakeToggleButton( General, 120, 520, "PK Player Beams", "PKPlayerBeams", "Propkill Playertrace Beams")
  4274.  
  4275. AB.MakeToggleButton( General, 235, 520, "PK Prop Beams", "PKPropBeams", "Propkill Proptrace Beams")
  4276.  
  4277. AB.MakeToggleButton( General, 350, 520, "PK Vertical Beams", "PKVerticalBeams", "Propkill Vertical Beams")
  4278.  
  4279. AB.MakeToggleButton( General, 5, 550, "PK Show Velocity", "PKVelocity", "Propkill Velocity Leaders")
  4280.  
  4281. AB.MakeToggleButton( General, 350, 550, "Clientside Flashlight", "CSFlashlight", "Clientside Flashlight")
  4282.  
  4283.  
  4284.  
  4285. AB.MakeFunctionButton( General, 350, 10, "Players Menu", function() AB.PlayerMenu() end)
  4286.  
  4287. AB.MakeFunctionButton( General, 120, 10, "Cycle Color Scheme", function()
  4288.  
  4289. if AB.NumberVars.ColorScheme < #AB.DefaultSchemes then
  4290.  
  4291. AB.NumberVars.ColorScheme = AB.NumberVars.ColorScheme + 1
  4292.  
  4293. else
  4294.  
  4295. AB.NumberVars.ColorScheme = 1
  4296.  
  4297. end
  4298.  
  4299.  
  4300.  
  4301. AB.ChangeColorScheme( AB.NumberVars.ColorScheme )
  4302.  
  4303. end)
  4304.  
  4305. AB.MakeFunctionButton( General, 235, 10, "Ent marker menu", AB.EntMarkerMenu )
  4306.  
  4307.  
  4308.  
  4309. AB.MakeToggleButton( Utility, 5, 10, "Autoclick", "Autoclick", "Auto Mouse Click", "Make your mouse buttons fire at the maximum possible speed when holding them down")
  4310.  
  4311. AB.MakeToggleButton( Utility, 120, 10, "Bhop", "Bhop", "Auto Bhop")
  4312.  
  4313. AB.MakeToggleButton( Utility, 235, 10, "Rope-Nado", "RopeStorm", "Rope-Nado", "Right click with rope tool out to spam a fuckton of ropes")
  4314.  
  4315. AB.MakeToggleButton( Utility, 350, 10, "Triggerbot", "Triggerbot", "Triggerbot", "Automatically pull the trigger when you look at somebody")
  4316.  
  4317. AB.MakeToggleButton( Utility, 5, 40, "Third Person", "Thirdperson", "Third Person Camera")
  4318.  
  4319. --AB.MakeToggleButton( Utility, 5, 120, "Camera Spam", "CameraSpam", "Camera Spam")
  4320.  
  4321. AB.MakeToggleButton( Utility, 120, 120, "No Recoil", "NoRecoil", "No Recoil", "Prevents weapons from changing your eye angles")
  4322.  
  4323. AB.MakeToggleButton( Utility, 235, 120, "Flashlight Spam", "FlashlightSpam", "Flashlight Spam", "Press F to party hard")
  4324.  
  4325. AB.MakeSlider( Utility, 120, 40, 160, "TPS Distance", 0, 1000, "TPSDistance" )
  4326.  
  4327. AB.MakeSlider( Utility, 285, 40, 175, "TPS Offset", -100, 100, "TPSOffset" )
  4328.  
  4329.  
  4330.  
  4331. AB.MakeToggleButton( Utility, 5, 90, "Name Changer Script", "NameStealer", "Name Change Script", "Enables or disabled the name change helper script, corrects malfunctions present in odiums name change command")
  4332.  
  4333. AB.MakeFunctionButton( Utility, 350, 90, "Disable NameStealer", AB.NameStealerShutoff )
  4334.  
  4335.  
  4336.  
  4337. AB.MakeFunctionButton( Utility, 5, 150, "Inspect your Gun", AB.GunMenu, "Show a massive TLDR page of information about the gun in your hands" )
  4338.  
  4339. AB.MakeFunctionButton( Utility, 120, 150, "Entity Scanner", AB.ToggleEntityScanner, "Get detailed information and easily perform actions on entities under your cursor (use C menu for best effect)" )
  4340.  
  4341.  
  4342.  
  4343. AB.MakeToggleButton( Utility, 350, 120, "Notify Kills", "NotifyKills", "Notify Kills in Chat", "Prints kills to your chat window")
  4344.  
  4345. --AB.Vars.NotifyKills
  4346.  
  4347.  
  4348.  
  4349. AB.MakeToggleButton( Utility, 5, 210, "Chat Spammer", "ChatSpam", "Chat Spammer", "Spam chat and piss everybody off")
  4350.  
  4351. AB.MakeToggleButton( Utility, 120, 210, "Auto OOC", "ChatSpamOOC", "Auto OOC chatspam", "Automatically make your chat spam in OOC mode in darkrp and most other rp gamemodes")
  4352.  
  4353. AB.MakeToggleButton( Utility, 235, 210, "Bind Mode", "ChatSpamBind", "Bind Mode (L ALT)", "You only chatspam when left alt is pressed")
  4354.  
  4355. --AB.MakeToggleButton( Utility, 350, 210, "Random Insults", "ChatSpamInsult", "Chatspam Random Insults", "Shower randomly generated abuse on everybody")
  4356.  
  4357. AB.MakeToggleButton( Utility, 350, 180, "/PM Mode", "ChatSpamPM", "/PM Spam Mode", "Spams /pm messages to everybody on the server")
  4358.  
  4359. AB.MakeToggleButton( Utility, 350, 210, "/PM Admins", "ChatSpamPMAdmins", "/PM Spam Target Admins", "Should we /pm spam admins?")
  4360.  
  4361.  
  4362.  
  4363. AB.MakeFunctionButton( Utility, 235, 180, "Chatspam Help", function()
  4364.  
  4365. AB.ChatText( "Printed chatspam formatting info to console", Color(255,255,255) )
  4366.  
  4367. print( "---- CHAT SPAMMER PATTERN MATCHES ----" )
  4368.  
  4369. print( "@1 = Random insult" )
  4370.  
  4371. print( "@2 = Angry insult" )
  4372.  
  4373. print( "@3 = Admin insult" )
  4374.  
  4375. print( "@4 = CSGO skid gibberish" )
  4376.  
  4377. print( "@opener = Insult opening line" )
  4378.  
  4379. print( "@joiner = Insult joining line" )
  4380.  
  4381. print( "@slur = Random racist/sexist/fucking hilarious slur" )
  4382.  
  4383. print( "PUT THESE IN THE CHATSPAMMER TEXT FIELD AND THEY WILL BE AUTOMATICALLY FORMATTED INTO RANDOMLY GENERATED TEXT")
  4384.  
  4385. end, "HALP HOW I USE DIS" )
  4386.  
  4387.  
  4388.  
  4389. AB.MakeFunctionButton( Utility, 5, 300, "Dodge RP Admins", AB.InnocentRoleplayer, "You got seen doing something shifty, now its time to get a new identity\nSuicides and randomizes your rpname, job and player colours\nBind a key to ace_innocent_roleplayer to trigger quickly" )
  4390.  
  4391. AB.MakeFunctionButton( Utility, 120, 300, "Random RPname", AB.GenerateRPName, "Like you can be arsed thinking up a good rpname, this one will generate a random one for you" )
  4392.  
  4393. AB.MakeFunctionButton( Utility, 235, 300, "RandomRPname (fem)", AB.GenerateRPNameFemale, "You want to become a girl so you can take cocks up your ass and still call yourself straight" )
  4394.  
  4395. AB.MakeToggleButton( Utility, 5, 330, "RP Demote Spam", "DemoteSpam", "Spam /Demote requests", "Demote everybody on the server from their shitty jobs")
  4396.  
  4397. AB.MakeToggleButton( Utility, 120, 330, "RP Wanted Spam", "WantedSpam", "Spam /Wanted requests", "Make everybody wanted by the police")
  4398.  
  4399. AB.MakeToggleButton( Utility, 235, 330, "ULX Vkick Spam", "ULXVotekickSpam", "Spam ulx votekicks", "Votekick everybody on the server :^)")
  4400.  
  4401. AB.MakeToggleButton( Utility, 350, 330, "ULX Vban Spam", "ULXVotebanSpam", "Spam ulx votebans", "Voteban everybody on the server :^)")
  4402.  
  4403. AB.MakeToggleButton( Utility, 5, 360, "Bhop Auto Strafe", "BhopAutostrafe", "Bhop Auto Strafe", "Presses A and D for you when you move your mouse, you lazy fuck")
  4404.  
  4405. AB.MakeToggleButton( Utility, 120, 360, "Kill Taunts", "KillTaunts", "Kill Taunts", "Let acebot automatically talk smack for you whenever you kill somebody")
  4406.  
  4407. AB.MakeToggleButton( Utility, 235, 360, "Death Taunts", "DeathTaunts", "Death Taunts", "Automatic chat rage when you die")
  4408.  
  4409.  
  4410.  
  4411. AB.MakeFunctionButton( Utility, 5, 450, "Set Base", function() RunConsoleCommand("ace_base_set") end, "Set a home base location to warn you if people go near it" )
  4412.  
  4413. AB.MakeFunctionButton( Utility, 120, 450, "Remove Base", function() RunConsoleCommand("ace_base_remove") end, "Delete your base" )
  4414.  
  4415. AB.MakeToggleButton( Utility, 350, 420, "Keypad Jew", "KeypadJew", "Keypad Code Stealer", "Your a sneaky jew stealing peoples keypad codes and busting into their base")
  4416.  
  4417.  
  4418.  
  4419. AB.MakeToggleButton( Utility, 5, 420, "RP Arrest Dodger", "DodgeArrest", "Get out of jail free card", "Automatically suicide if somebody tries to hit you with an arrest baton")
  4420.  
  4421. AB.MakeToggleButton( Utility, 120, 420, "New RPname on Death", "NewLifeRule", "Choose new RPname when killed", "Make things extra confusing for cuntmins")
  4422.  
  4423. --AB.MakeToggleButton( Utility, 235, 420, "Dodge Physgun", "DontTouchMeThere", "Suicide When PhysGunned", "Don't touch me there, that's my private place")
  4424.  
  4425.  
  4426.  
  4427.  
  4428.  
  4429. AB.MakeToggleButton( Botsettings, 5, 10, "Toggle Aimbot", "Aimbot", "Aimbot", "Sup pussy ass white boi how bout i come to ur base and fuck ur girl u little bitch, imma shoot lazers all up in this place pew pew nigga")
  4430.  
  4431. AB.MakeToggleButton( Botsettings, 120, 10, "Snap on Shoot Only", "SnapOnFire", "Aimbot only snaps when firing", "Makes things a little bit more sneeki breeki")
  4432.  
  4433. AB.MakeToggleButton( Botsettings, 5, 40, "Auto Shoot", "AutoShoot", "Aimbot Auto-Shoot", "Your aimbot is now doing all the work for you, you may as well afk and masturbate")
  4434.  
  4435. AB.MakeToggleButton( Botsettings, 235, 70, "Auto Trigger", "AutoTrigger", "Aimbot Auto-Trigger", "Spams the trigger on semi auto weapons when locked on and holding left click")
  4436.  
  4437. AB.MakeToggleButton( Botsettings, 120, 40, "Snap on Bind Only", "AimbotBindMode", "Aimbot snap only when bind pressed", "Extra protection against accidentally fucking yourself over when trying to play >legit")
  4438.  
  4439. --AB.MakeToggleButton( Botsettings, 235, 40, "Shoot Through Walls", "AimbotShootThroughWalls", "Aimbot shoot through walls", "Target people through walls?")
  4440.  
  4441. AB.MakeToggleButton( Botsettings, 235, 40, "M9K Wallbanger", "AimbotWallbanger", "Aimbot shoot through walls (m9k)", "Lock on to people if the current gun is able to penetrate the wall/object they are hiding behind")
  4442.  
  4443. AB.MakeToggleButton( Botsettings, 235, 10, "Draw Target Position", "PreviewTarget", "Draw Target Lock Position", "Shows the current/next position the aimbot is locking on to")
  4444.  
  4445. AB.MakeToggleButton( Botsettings, 350, 10, "Compensate Spread", "CompSpread", "Compensate Bullet Spread", "Basically cac undetected nospread. Works with m9k, hl2 weps, ttt weps and some simple weapon bases. Does not work with fas2 or cw2")
  4446.  
  4447. AB.MakeToggleButton( Botsettings, 350, 40, "Silent Aim", "SilentAim", "Silent Aim", "Makes it far less obvious that you are aimbotting")
  4448.  
  4449. AB.MakeToggleButton( Botsettings, 350, 70, "Adaptive Targeting", "AimbotAdaptiveTarget", "Aimbot Adaptive Targeting", "Shoot at any part of their body that is exposed, not just their head. Absolute rape when paired with comp spread and wallbanger")
  4450.  
  4451.  
  4452.  
  4453. AB.MakeToggleButton( Botsettings, 5, 160, "Target Friends", "TargetFriends", "Aimbot Target Friends", "Do you really want to betray your buddies like this? :(")
  4454.  
  4455. AB.MakeToggleButton( Botsettings, 120, 160, "Target Admins", "TargetAdmins", "Aimbot Target Admins", "Milk some darkrp admin tears")
  4456.  
  4457. AB.MakeToggleButton( Botsettings, 235, 160, "Target Same Team", "TargetSameTeam", "Aimbot Target Same Team", "Do you want to betray your team?")
  4458.  
  4459. AB.MakeToggleButton( Botsettings, 350, 160, "Target Highlighted", "TargetHighlighted", "Aimbot Target Highlighted targets", "For killing those special high priority targets")
  4460.  
  4461. AB.MakeToggleButton( Botsettings, 120, 190, "Target Noclippers", "TargetNoclippers", "Aimbot Target People in Noclip", "You usually can't kill them anyway so why bother?")
  4462.  
  4463. AB.MakeToggleButton( Botsettings, 5, 190, "Prefer Headshots", "AimbotTargetMode", "Aimbot Target Heads", "Target heads or go straight for centre of mass?")
  4464.  
  4465. AB.MakeToggleButton( Botsettings, 235, 190, "Sticky Targeting", "AimbotStickyLock", "Sticky Targeting", "Aimbot will not switch target until the current target is dead, out of FOV or no longer visible")
  4466.  
  4467. --AB.MakeToggleButton( Botsettings, 5, 190, "Prefer Headshots", "AimbotTargetMode", "Aimbot Target Heads", "Target heads or go straight for centre of mass?")
  4468.  
  4469.  
  4470.  
  4471.  
  4472.  
  4473. local tttt = vgui.Create( "DLabel", Botsettings )
  4474.  
  4475. tttt:SetPos( 25, 228 )
  4476.  
  4477. tttt:SetText( "Aimbot Bind Key:" )
  4478.  
  4479. tttt:SizeToContents()
  4480.  
  4481.  
  4482.  
  4483. AB.MakeKeyBinder( Botsettings, 120, 220, 110, 30, "AimbotBindKey", "aimbot" )
  4484.  
  4485.  
  4486.  
  4487. AB.MakeSlider( Botsettings, 5, 70, 210, "Smooth Aim", 0, 50, "AimbotSmooth" )
  4488.  
  4489. AB.MakeSlider( Botsettings, 5, 100, 210, "Max Distance", 0, 9999, "AimbotDist" )
  4490.  
  4491. AB.MakeSlider( Botsettings, 225, 100, 220, "Targeting FOV", 0.1, 180, "AimbotMaxFOV" )
  4492.  
  4493.  
  4494.  
  4495.  
  4496.  
  4497. local TextEntry = vgui.Create( "DTextEntry", Utility )
  4498.  
  4499. TextEntry:SetPos( 120, 90 )
  4500.  
  4501. TextEntry:SetSize( 195, 25 )
  4502.  
  4503. TextEntry:SetText( AB.NameStealName )
  4504.  
  4505. TextEntry.OnEnter = function( self )
  4506.  
  4507. AB.NameStealName = self:GetValue()
  4508.  
  4509. if AB.Vars.Notifications then AB.ChatText( "Set my name to: "..self:GetValue(), Color(255,255,255) ) end
  4510.  
  4511. end
  4512.  
  4513.  
  4514.  
  4515. local TextEntry = vgui.Create( "DTextEntry", Utility )
  4516.  
  4517. TextEntry:SetPos( 5, 240 )
  4518.  
  4519. TextEntry:SetSize( 450, 25 )
  4520.  
  4521. TextEntry:SetText( AB.ChatSpamText )
  4522.  
  4523. TextEntry.OnEnter = function( self )
  4524.  
  4525. AB.ChatSpamText = self:GetValue()
  4526.  
  4527. if AB.Vars.Notifications then AB.ChatText( "Set my chatspam message to: "..self:GetValue(), Color(255,255,255) ) end
  4528.  
  4529. end
  4530.  
  4531.  
  4532.  
  4533.  
  4534.  
  4535. AB.MakeFunctionButton( Debug, 5, AceMenu:GetTall() - 110, "Clear Console", function() table.Empty(AB.Debug) end)
  4536.  
  4537. AB.MakeFunctionButton( Debug, 120, AceMenu:GetTall() - 110, "Print Changelog", function()
  4538.  
  4539. AB.DebugLog( "", Color(0,0,0) )
  4540.  
  4541. AB.DebugLog( "Acebot current version: "..AB.Version, Color(155,255,155) )
  4542.  
  4543. AB.DebugLog( "", Color(0,0,0) )
  4544.  
  4545. local tt = 200
  4546.  
  4547. for k, v in SortedPairs(AB.Changelog, false) do AB.DebugLog( v, Color(tt, tt, tt + 30) ) tt = math.Clamp(tt - 10, 100, 200) end
  4548.  
  4549. end)
  4550.  
  4551. --AB.MakeFunctionButton( Debug, 235, Menu:GetTall() - 110, "Game Event Logging", function() end)
  4552.  
  4553. --AB.MakeFunctionButton( Debug, 350, Menu:GetTall() - 110, "Extensive Logging", function() end)
  4554.  
  4555.  
  4556.  
  4557. PropertySheet:AddSheet( "Vision", General, "icon16/zoom.png", false, false, "ESP/Xray/HUD settings" )
  4558.  
  4559. --PropertySheet:AddSheet( "Vision Advanced", General2, "icon16/zoom_in.png", false, false, "ESP/Xray/HUD settings" )
  4560.  
  4561. PropertySheet:AddSheet( "Utility", Utility, "icon16/wrench.png", false, false, "Tools and utilities" )
  4562.  
  4563. PropertySheet:AddSheet( "Aimbot", Botsettings, "icon16/bomb.png", false, false, "Aimbot settings" )
  4564.  
  4565. PropertySheet:AddSheet( "Exploit", Exploit, "icon16/bug.png", false, false, "Lua Exploit settings" )
  4566.  
  4567. PropertySheet:AddSheet( "Backdoor", Backdoor, "icon16/door_in.png", false, false, "Control panel for the Wraithnet/HTX serverside backdoor" )
  4568.  
  4569. PropertySheet:AddSheet( "Debug", Debug, "icon16/printer.png", false, false, "Acebot debug settings" )
  4570.  
  4571.  
  4572.  
  4573. end
  4574.  
  4575. concommand.Add("ace_menu", AB.Menu)
  4576.  
  4577.  
  4578.  
  4579.  
  4580.  
  4581. ------------------------------------------------------------------------DEBUG CONSOLE SHIT--------------------------------------------------------------------------------------
  4582.  
  4583.  
  4584.  
  4585.  
  4586.  
  4587.  
  4588.  
  4589. function AB.DebugLog( str, col )
  4590.  
  4591. table.insert(AB.Debug, {str, col})
  4592.  
  4593. if #AB.Debug > 40 then
  4594.  
  4595. table.remove( AB.Debug, 1 )
  4596.  
  4597. end
  4598.  
  4599. end
  4600.  
  4601.  
  4602.  
  4603. ------------------------------------------------------------------------ENT MARKER MENU--------------------------------------------------------------------------------------
  4604.  
  4605.  
  4606.  
  4607.  
  4608.  
  4609.  
  4610.  
  4611.  
  4612.  
  4613.  
  4614.  
  4615.  
  4616.  
  4617.  
  4618.  
  4619. local OtherEnts = {}
  4620.  
  4621.  
  4622.  
  4623. function AB.EntMarkerMenu()
  4624.  
  4625. if EMenu then return end
  4626.  
  4627.  
  4628.  
  4629. table.Empty(OtherEnts)
  4630.  
  4631. for k,v in pairs(ents.GetAll()) do
  4632.  
  4633. local addToAllEnts = true
  4634.  
  4635.  
  4636.  
  4637. for i,p in pairs(AB.MarkedEnts) do
  4638.  
  4639. if p == v:GetClass() then
  4640.  
  4641. addToAllEnts = false
  4642.  
  4643. end
  4644.  
  4645. end
  4646.  
  4647.  
  4648.  
  4649. for i,p in pairs(OtherEnts) do
  4650.  
  4651. if p == v:GetClass() then
  4652.  
  4653. addToAllEnts = false
  4654.  
  4655. end
  4656.  
  4657. end
  4658.  
  4659.  
  4660.  
  4661. if addToAllEnts then
  4662.  
  4663. table.insert(OtherEnts, v:GetClass())
  4664.  
  4665. end
  4666.  
  4667. end
  4668.  
  4669.  
  4670.  
  4671. local EMenu = vgui.Create("DFrame")
  4672.  
  4673. EMenu:SetSize(500,485)
  4674.  
  4675. EMenu:SetTitle("Entity marker menu")
  4676.  
  4677. EMenu:Center()
  4678.  
  4679. EMenu:MakePopup()
  4680.  
  4681.  
  4682.  
  4683. EMenu.Paint = function()
  4684.  
  4685. surface.SetDrawColor( Color(50, 50, 90, 255) )
  4686.  
  4687. surface.DrawRect( 0, 0, EMenu:GetWide(), EMenu:GetTall() )
  4688.  
  4689. surface.SetDrawColor( Color(155, 155, 155, 255) )
  4690.  
  4691. surface.DrawOutlinedRect( 0, 0, EMenu:GetWide(), EMenu:GetTall() )
  4692.  
  4693. surface.DrawOutlinedRect( 1, 1, EMenu:GetWide() - 2, EMenu:GetTall() - 2 )
  4694.  
  4695. surface.SetDrawColor( Color(0, 0, 0, 200) )
  4696.  
  4697. surface.DrawRect( 10, 25, EMenu:GetWide() - 20, EMenu:GetTall() - 35 )
  4698.  
  4699. end
  4700.  
  4701.  
  4702.  
  4703.  
  4704.  
  4705. DermaList = vgui.Create( "DPanelList", EMenu )
  4706.  
  4707. DermaList:SetPos( 25,35 )
  4708.  
  4709. DermaList:SetSize( 500, 400 )
  4710.  
  4711. DermaList:SetSpacing( 75 )
  4712.  
  4713. DermaList:EnableHorizontal( false )
  4714.  
  4715. DermaList:EnableVerticalScrollbar( true )
  4716.  
  4717.  
  4718.  
  4719. local SelectedEnts = vgui.Create("DListView")
  4720.  
  4721. SelectedEnts:SetSize(220, 335)
  4722.  
  4723. SelectedEnts:SetPos(0, 0)
  4724.  
  4725. SelectedEnts:SetMultiSelect(false)
  4726.  
  4727. SelectedEnts:AddColumn("Ents to show")
  4728.  
  4729. for k,v in SortedPairs(AB.MarkedEnts, false) do
  4730.  
  4731. SelectedEnts:AddLine(v)
  4732.  
  4733. end
  4734.  
  4735. SelectedEnts.DoDoubleClick = function(parent, index, list)
  4736.  
  4737. table.remove(AB.MarkedEnts, index)
  4738.  
  4739. EMenu:rebuildlists()
  4740.  
  4741. end
  4742.  
  4743. DermaList:Add(SelectedEnts)
  4744.  
  4745.  
  4746.  
  4747. local AllEnts = vgui.Create("DListView")
  4748.  
  4749. AllEnts:SetSize(220, 335)
  4750.  
  4751. AllEnts:SetPos(230, 0)
  4752.  
  4753. AllEnts:SetMultiSelect(false)
  4754.  
  4755. AllEnts:AddColumn("Ents not to show")
  4756.  
  4757. for k,v in SortedPairs(OtherEnts, false) do
  4758.  
  4759. AllEnts:AddLine(v)
  4760.  
  4761. end
  4762.  
  4763. AllEnts.DoDoubleClick = function(parent, index, panel )
  4764.  
  4765. table.insert(AB.MarkedEnts, OtherEnts[index])
  4766.  
  4767. EMenu:rebuildlists()
  4768.  
  4769. end
  4770.  
  4771. DermaList:Add(AllEnts)
  4772.  
  4773.  
  4774.  
  4775.  
  4776.  
  4777. function EMenu:rebuildlists()
  4778.  
  4779. table.Empty(OtherEnts)
  4780.  
  4781. for k,v in pairs(ents.GetAll()) do
  4782.  
  4783. local addToAllEnts = true
  4784.  
  4785.  
  4786.  
  4787. for i,p in pairs(AB.MarkedEnts) do
  4788.  
  4789. if p == v:GetClass() then
  4790.  
  4791. addToAllEnts = false
  4792.  
  4793. end
  4794.  
  4795. end
  4796.  
  4797.  
  4798.  
  4799. for i,p in pairs(OtherEnts) do
  4800.  
  4801. if p == v:GetClass() then
  4802.  
  4803. addToAllEnts = false
  4804.  
  4805. end
  4806.  
  4807. end
  4808.  
  4809.  
  4810.  
  4811. if addToAllEnts then
  4812.  
  4813. table.insert(OtherEnts, v:GetClass())
  4814.  
  4815. end
  4816.  
  4817. end
  4818.  
  4819.  
  4820.  
  4821. AllEnts:Clear()
  4822.  
  4823. SelectedEnts:Clear()
  4824.  
  4825. for k,v in SortedPairs(OtherEnts, false) do
  4826.  
  4827. AllEnts:AddLine( v )
  4828.  
  4829. end
  4830.  
  4831. for k,v in SortedPairs(AB.MarkedEnts, false) do
  4832.  
  4833. SelectedEnts:AddLine( v )
  4834.  
  4835. end
  4836.  
  4837. end
  4838.  
  4839.  
  4840.  
  4841.  
  4842.  
  4843. AB.MakeFunctionButton( EMenu, 25, 380, "Find all Printers", function()
  4844.  
  4845. for k,v in pairs(ents.GetAll()) do
  4846.  
  4847. if string.find(v:GetClass(), "print") and !table.HasValue(AB.MarkedEnts, v:GetClass()) then
  4848.  
  4849. table.insert(AB.MarkedEnts, v:GetClass())
  4850.  
  4851. end
  4852.  
  4853. end
  4854.  
  4855. EMenu:rebuildlists()
  4856.  
  4857. end, "Finds everything that looks like a money printer")
  4858.  
  4859.  
  4860.  
  4861. AB.MakeFunctionButton( EMenu, 140, 380, "Find all Weapons", function()
  4862.  
  4863. for k,v in pairs(ents.GetAll()) do
  4864.  
  4865. if (string.find(v:GetClass(), "weap") or string.find(v:GetClass(), "fas2") or string.find(v:GetClass(), "m9k")) and !table.HasValue(AB.MarkedEnts, v:GetClass()) then
  4866.  
  4867. table.insert(AB.MarkedEnts, v:GetClass())
  4868.  
  4869. end
  4870.  
  4871. end
  4872.  
  4873. EMenu:rebuildlists()
  4874.  
  4875. end, "Finds everything that looks like a weapon")
  4876.  
  4877.  
  4878.  
  4879. AB.MakeFunctionButton( EMenu, 255, 380, "Find all Vehicles", function()
  4880.  
  4881. for k,v in pairs(ents.GetAll()) do
  4882.  
  4883. if v:IsVehicle() and !table.HasValue(AB.MarkedEnts, v:GetClass()) then
  4884.  
  4885. table.insert(AB.MarkedEnts, v:GetClass())
  4886.  
  4887. end
  4888.  
  4889. end
  4890.  
  4891. EMenu:rebuildlists()
  4892.  
  4893. end, "Finds everything that looks like a vehicle")
  4894.  
  4895.  
  4896.  
  4897. AB.MakeFunctionButton( EMenu, 370, 380, "Find all Loot", function()
  4898.  
  4899. for k,v in pairs(ents.GetAll()) do
  4900.  
  4901. if (string.find(v:GetClass(), "item") or string.find(v:GetClass(), "loot")) and !table.HasValue(AB.MarkedEnts, v:GetClass()) then
  4902.  
  4903. table.insert(AB.MarkedEnts, v:GetClass())
  4904.  
  4905. end
  4906.  
  4907. end
  4908.  
  4909. EMenu:rebuildlists()
  4910.  
  4911. end, "Finds everything that looks like loot items (generally only useful for gmod dayz, after the end etc)")
  4912.  
  4913.  
  4914.  
  4915. AB.MakeFunctionButton( EMenu, 25, 410, "Find all RP Goodies", function()
  4916.  
  4917. for k,v in pairs(ents.GetAll()) do
  4918.  
  4919. if v:GetClass() == "spawned_shipment" or v:GetClass() == "spawned_money" or v:GetClass() == "spawned_weapon" or v:GetClass() == "spawned_ammo" or v:GetClass() == "spawned_food" and !table.HasValue(AB.MarkedEnts, v:GetClass()) then
  4920.  
  4921. table.insert(AB.MarkedEnts, v:GetClass() )
  4922.  
  4923. end
  4924.  
  4925. end
  4926.  
  4927. EMenu:rebuildlists()
  4928.  
  4929. end, "Finds all darkrp goodies (guns, money, shipments etc)")
  4930.  
  4931.  
  4932.  
  4933. AB.MakeFunctionButton( EMenu, 370, 410, "Clear List", function()
  4934.  
  4935. AB.MarkedEnts = {}
  4936.  
  4937. EMenu:rebuildlists()
  4938.  
  4939. end, "Clears the entfinder list")
  4940.  
  4941.  
  4942.  
  4943. local turd = vgui.Create( "DLabel", EMenu )
  4944.  
  4945. turd:SetPos( 25, 447 )
  4946.  
  4947. turd:SetText( "Search for classes: " )
  4948.  
  4949. turd:SizeToContents()
  4950.  
  4951.  
  4952.  
  4953. local target4 = vgui.Create( "DTextEntry", EMenu )
  4954.  
  4955. target4:SetPos( 125, 442 )
  4956.  
  4957. target4:SetSize( 255, 25 )
  4958.  
  4959. target4:SetText( "" )
  4960.  
  4961. target4.OnChange = function( self )
  4962.  
  4963. local nam = self:GetValue()
  4964.  
  4965. if nam == "" then
  4966.  
  4967. AB.MarkedEnts = {}
  4968.  
  4969. EMenu:rebuildlists()
  4970.  
  4971. return
  4972.  
  4973. end
  4974.  
  4975. local namtab = string.Explode( ", ", nam )
  4976.  
  4977. AB.MarkedEnts = {}
  4978.  
  4979. for _, en in pairs( ents.GetAll() ) do
  4980.  
  4981. for _, s in pairs( namtab ) do
  4982.  
  4983. if string.find( string.lower( en:GetClass() ), s, 1, true ) then
  4984.  
  4985. if !table.HasValue( AB.MarkedEnts, en:GetClass() ) then table.insert( AB.MarkedEnts, en:GetClass() ) end
  4986.  
  4987. end
  4988.  
  4989. end
  4990.  
  4991. end
  4992.  
  4993. EMenu:rebuildlists()
  4994.  
  4995. end
  4996.  
  4997.  
  4998.  
  4999. end
  5000.  
  5001. concommand.Add("ace_ents", AB.EntMarkerMenu)
  5002.  
  5003.  
  5004.  
  5005.  
  5006.  
  5007.  
  5008.  
  5009. ------------------------------------------------------------------------PLAYERS MENU--------------------------------------------------------------------------------------
  5010.  
  5011.  
  5012.  
  5013.  
  5014.  
  5015. function AB.PlayerMenu()
  5016.  
  5017. if PMenu then return end
  5018.  
  5019.  
  5020.  
  5021. local PMenu = vgui.Create("DFrame")
  5022.  
  5023. PMenu:SetSize(590,420)
  5024.  
  5025. PMenu:SetTitle("Players menu")
  5026.  
  5027. PMenu:Center()
  5028.  
  5029. PMenu:MakePopup()
  5030.  
  5031.  
  5032.  
  5033. PMenu.Paint = function()
  5034.  
  5035. surface.SetDrawColor( Color(50, 50, 90, 255) )
  5036.  
  5037. surface.DrawRect( 0, 0, PMenu:GetWide(), PMenu:GetTall() )
  5038.  
  5039. surface.SetDrawColor( Color(155, 155, 155, 255) )
  5040.  
  5041. surface.DrawOutlinedRect( 0, 0, PMenu:GetWide(), PMenu:GetTall() )
  5042.  
  5043. surface.DrawOutlinedRect( 1, 1, PMenu:GetWide() - 2, PMenu:GetTall() - 2 )
  5044.  
  5045. surface.SetDrawColor( Color(0, 0, 0, 200) )
  5046.  
  5047. surface.DrawRect( 10, 25, PMenu:GetWide() - 20, PMenu:GetTall() - 35 )
  5048.  
  5049. end
  5050.  
  5051.  
  5052.  
  5053.  
  5054.  
  5055. local Plist = vgui.Create( "DPanelList", PMenu )
  5056.  
  5057. Plist:SetSize( 560, 370 )
  5058.  
  5059. Plist:SetPadding( 5 )
  5060.  
  5061. Plist:SetSpacing( 5 )
  5062.  
  5063. Plist:EnableHorizontal( false )
  5064.  
  5065. Plist:EnableVerticalScrollbar( true )
  5066.  
  5067. Plist:SetPos( 10, 25 )
  5068.  
  5069. Plist:SetName( "" )
  5070.  
  5071.  
  5072.  
  5073. for k, v in pairs( player.GetAll() ) do
  5074.  
  5075. if v == LocalPlayer() then continue end
  5076.  
  5077.  
  5078.  
  5079. local plypanel2 = vgui.Create( "DPanel" )
  5080.  
  5081. plypanel2:SetPos( 0, 0 )
  5082.  
  5083. plypanel2:SetSize( 480, 40 )
  5084.  
  5085. plypanel2.Paint = function() -- Paint function
  5086.  
  5087. draw.RoundedBoxEx(8,1,1,plypanel2:GetWide(),plypanel2:GetTall(),Color(0, 0, 0, 150), false, false, false, false)
  5088.  
  5089. surface.SetDrawColor(Color(50, 50, 90, 255))
  5090.  
  5091. surface.DrawOutlinedRect(1, 1, plypanel2:GetWide() - 1 , plypanel2:GetTall() - 1)
  5092.  
  5093. end
  5094.  
  5095.  
  5096.  
  5097. local plyname = vgui.Create( "DLabel", plypanel2 )
  5098.  
  5099. plyname:SetPos( 15, 5 )
  5100.  
  5101. plyname:SetFont( "Trebuchet18" )
  5102.  
  5103. plyname:SetColor( team.GetColor(v:Team()) )
  5104.  
  5105. plyname:SetText( "Name: "..v:Nick() )
  5106.  
  5107. plyname:SetSize(180, 15)
  5108.  
  5109.  
  5110.  
  5111. if AB.GetRank(v) != ( "user" or "guest" or "player" ) then
  5112.  
  5113. local rtxt = vgui.Create( "DLabel", plypanel2 )
  5114.  
  5115. rtxt:SetPos( 15, 20 )
  5116.  
  5117. rtxt:SetFont( "Trebuchet18" )
  5118.  
  5119. rtxt:SetColor( Color(255,100,0,255) )
  5120.  
  5121. rtxt:SetText( "Rank: "..AB.GetRank(v) )
  5122.  
  5123. rtxt:SetSize(180, 15)
  5124.  
  5125. end
  5126.  
  5127.  
  5128.  
  5129. local faggot = vgui.Create("DButton", plypanel2)
  5130.  
  5131. faggot:SetSize( 45, 25 )
  5132.  
  5133. faggot:SetPos( 250, 8 )
  5134.  
  5135. faggot:SetText("Profile")
  5136.  
  5137. faggot:SetTextColor(Color(255, 255, 255, 255))
  5138.  
  5139. faggot.Paint = function(panel, w, h)
  5140.  
  5141. surface.SetDrawColor(100, 100, 200 ,255)
  5142.  
  5143. surface.DrawOutlinedRect(0, 0, w, h)
  5144.  
  5145. surface.SetDrawColor(0, 0, 50 ,155)
  5146.  
  5147. surface.DrawRect(0, 0, w, h)
  5148.  
  5149. end
  5150.  
  5151. faggot.DoClick = function()
  5152.  
  5153. AB.ChatText( "Opened steam profile of: "..v:Nick().." ("..v:SteamID()..")", Color(255,255,255) )
  5154.  
  5155. v:ShowProfile()
  5156.  
  5157. surface.PlaySound("buttons/button7.wav")
  5158.  
  5159. end
  5160.  
  5161.  
  5162.  
  5163. local faggot = vgui.Create("DButton", plypanel2)
  5164.  
  5165. faggot:SetSize( 45, 25 )
  5166.  
  5167. faggot:SetPos( 300, 8 )
  5168.  
  5169. faggot:SetText("Mute")
  5170.  
  5171. faggot:SetTextColor(Color(255, 255, 255, 255))
  5172.  
  5173. faggot.Paint = function(panel, w, h)
  5174.  
  5175. if !v:IsValid() then return end
  5176.  
  5177. if v:IsMuted() then
  5178.  
  5179. surface.SetDrawColor(200, 100, 000 ,255)
  5180.  
  5181. else
  5182.  
  5183. surface.SetDrawColor(100, 100, 200 ,255)
  5184.  
  5185. end
  5186.  
  5187. surface.DrawOutlinedRect(0, 0, w, h)
  5188.  
  5189. surface.SetDrawColor(0, 0, 50 ,155)
  5190.  
  5191. surface.DrawRect(0, 0, w, h)
  5192.  
  5193. end
  5194.  
  5195. faggot.DoClick = function()
  5196.  
  5197. v:SetMuted( !v:IsMuted() )
  5198.  
  5199. if v:IsMuted() then AB.ChatText( "Voice muted: "..v:Nick(), Color(255,255,255) ) else AB.ChatText( "Unmuted: "..v:Nick(), Color(255,255,255) ) end
  5200.  
  5201. surface.PlaySound("buttons/button7.wav")
  5202.  
  5203. end
  5204.  
  5205.  
  5206.  
  5207. local faggot = vgui.Create("DButton", plypanel2)
  5208.  
  5209. faggot:SetSize( 60, 25 )
  5210.  
  5211. faggot:SetPos( 350, 8 )
  5212.  
  5213. faggot:SetText("Namesteal")
  5214.  
  5215. faggot:SetTextColor(Color(255, 255, 255, 255))
  5216.  
  5217. faggot.Paint = function(panel, w, h)
  5218.  
  5219. if AB.NameStealPlayer == v then
  5220.  
  5221. surface.SetDrawColor(100, 200, 100 ,255)
  5222.  
  5223. else
  5224.  
  5225. surface.SetDrawColor(100, 100, 200 ,255)
  5226.  
  5227. end
  5228.  
  5229. surface.DrawOutlinedRect(0, 0, w, h)
  5230.  
  5231. surface.SetDrawColor(0, 0, 50 ,155)
  5232.  
  5233. surface.DrawRect(0, 0, w, h)
  5234.  
  5235. end
  5236.  
  5237. faggot.DoClick = function()
  5238.  
  5239. if AB.NameStealPlayer == v then AB.NameStealPlayer = LocalPlayer() AB.ChatText( "Cleared name stealer target", Color(255,255,255) ) return end
  5240.  
  5241. AB.NameStealPlayer = v
  5242.  
  5243. AB.ChatText( "Set name stealer target to: "..v:Nick(), Color(255,255,255) )
  5244.  
  5245. surface.PlaySound("buttons/button7.wav")
  5246.  
  5247. end
  5248.  
  5249.  
  5250.  
  5251. local faggot = vgui.Create("DButton", plypanel2)
  5252.  
  5253. faggot:SetSize( 60, 25 )
  5254.  
  5255. faggot:SetPos( 415, 8 )
  5256.  
  5257. faggot:SetText("Highlight")
  5258.  
  5259. faggot:SetTextColor(Color(255, 255, 255, 255))
  5260.  
  5261. faggot.Paint = function(panel, w, h)
  5262.  
  5263. if AB.IsTarget( v ) then
  5264.  
  5265. surface.SetDrawColor(100, 200, 100 ,255)
  5266.  
  5267. else
  5268.  
  5269. surface.SetDrawColor(100, 100, 200 ,255)
  5270.  
  5271. end
  5272.  
  5273. surface.DrawOutlinedRect(0, 0, w, h)
  5274.  
  5275. surface.SetDrawColor(0, 0, 50 ,155)
  5276.  
  5277. surface.DrawRect(0, 0, w, h)
  5278.  
  5279. end
  5280.  
  5281. faggot.DoClick = function()
  5282.  
  5283. if AB.IsTarget( v ) then AB.RemoveTarget(v) else AB.AddTarget(v) end
  5284.  
  5285. surface.PlaySound("buttons/button7.wav")
  5286.  
  5287. end
  5288.  
  5289.  
  5290.  
  5291. local faggot = vgui.Create("DButton", plypanel2)
  5292.  
  5293. faggot:SetSize( 60, 25 )
  5294.  
  5295. faggot:SetPos( 480, 8 )
  5296.  
  5297. faggot:SetText("Friendly")
  5298.  
  5299. faggot:SetTextColor(Color(255, 255, 255, 255))
  5300.  
  5301. faggot.Paint = function(panel, w, h)
  5302.  
  5303. if AB.IsFriend( v ) then
  5304.  
  5305. surface.SetDrawColor(100, 200, 100 ,255)
  5306.  
  5307. else
  5308.  
  5309. surface.SetDrawColor(100, 100, 200 ,255)
  5310.  
  5311. end
  5312.  
  5313. surface.DrawOutlinedRect(0, 0, w, h)
  5314.  
  5315. surface.SetDrawColor(0, 0, 50 ,155)
  5316.  
  5317. surface.DrawRect(0, 0, w, h)
  5318.  
  5319. end
  5320.  
  5321. faggot.DoClick = function()
  5322.  
  5323. if AB.IsFriend( v ) then AB.RemoveFriend(v) else AB.AddFriend(v) end
  5324.  
  5325. surface.PlaySound("buttons/button7.wav")
  5326.  
  5327. end
  5328.  
  5329.  
  5330.  
  5331.  
  5332.  
  5333. Plist:AddItem( plypanel2 )
  5334.  
  5335.  
  5336.  
  5337. end
  5338.  
  5339.  
  5340.  
  5341.  
  5342.  
  5343. end
  5344.  
  5345. concommand.Add("ace_players", AB.PlayerMenu)
  5346.  
  5347.  
  5348.  
  5349.  
  5350.  
  5351.  
  5352.  
  5353.  
  5354.  
  5355.  
  5356.  
  5357.  
  5358.  
  5359.  
  5360.  
  5361. ------------------------------------------------------------------------BIG MEMES----------------------------------------------------------------------------------------
  5362.  
  5363.  
  5364.  
  5365.  
  5366.  
  5367.  
  5368.  
  5369. function AB.IsMessagePooled( netmessage )
  5370.  
  5371. status, error = pcall(net.Start,netmessage)
  5372.  
  5373. return status
  5374.  
  5375. end
  5376.  
  5377.  
  5378.  
  5379.  
  5380.  
  5381.  
  5382.  
  5383.  
  5384.  
  5385. ------------------------------------------------------------------------DANK NOSPREAD----------------------------------------------------------------------------------------
  5386.  
  5387.  
  5388.  
  5389.  
  5390.  
  5391.  
  5392.  
  5393. function AB.GetGenericCone( cmd )
  5394.  
  5395. local ply = LocalPlayer()
  5396.  
  5397. local gun = ply:GetActiveWeapon()
  5398.  
  5399. if !gun.Primary or !gun.Primary.Cone then return Angle( 0, 0, 0 ) end
  5400.  
  5401. local meme = gun.Primary.Cone
  5402.  
  5403. local meme2 = Vector( meme, meme, meme )
  5404.  
  5405. local cone = odium.engine.GetWeaponCone( cmd, ply:EyeAngles(), meme2 )
  5406.  
  5407. return cone
  5408.  
  5409. end
  5410.  
  5411.  
  5412.  
  5413. function AB.GetM9kCone( cmd )
  5414.  
  5415. local ply = LocalPlayer()
  5416.  
  5417. local gun = ply:GetActiveWeapon()
  5418.  
  5419. if !gun.Primary or !gun.Primary.Spread or !gun.Primary.IronAccuracy then return Angle( 0, 0, 0 ) end
  5420.  
  5421. local meme = gun.Primary.Spread
  5422.  
  5423. if (gun:GetIronsights() == true) and ply:KeyDown(IN_ATTACK2) then meme = gun.Primary.IronAccuracy end
  5424.  
  5425. local meme2 = Vector( meme, meme, meme )
  5426.  
  5427. local cone = odium.engine.GetWeaponCone( cmd, ply:EyeAngles(), meme2 )
  5428.  
  5429. return cone
  5430.  
  5431. end
  5432.  
  5433.  
  5434.  
  5435.  
  5436.  
  5437. local td = {}
  5438.  
  5439. local function dospread()
  5440.  
  5441. local ply = LocalPlayer()
  5442.  
  5443. local gun = ply:GetActiveWeapon()
  5444.  
  5445. local vel = ply:GetVelocity():Length()
  5446.  
  5447.  
  5448.  
  5449. aim = ply:GetAimVector()
  5450.  
  5451.  
  5452.  
  5453. if not ply.LastView then
  5454.  
  5455. ply.LastView = aim
  5456.  
  5457. ply.ViewAff = 0
  5458.  
  5459. else
  5460.  
  5461. ply.ViewAff = Lerp(0.25, ply.ViewAff, (aim - ply.LastView):Length() * 0.5)
  5462.  
  5463. ply.LastView = aim
  5464.  
  5465. end
  5466.  
  5467.  
  5468.  
  5469. cone = gun.HipCone * (cr and 0.75 or 1) * (gun.dt.Bipod and 0.3 or 1)
  5470.  
  5471.  
  5472.  
  5473. if gun.dt.Status == FAS_STAT_ADS then
  5474.  
  5475. td.start = ply:GetShootPos()
  5476.  
  5477. td.endpos = td.start + aim * 30
  5478.  
  5479. td.filter = ply
  5480.  
  5481.  
  5482.  
  5483. tr = util.TraceLine(td)
  5484.  
  5485.  
  5486.  
  5487. if tr.Hit then
  5488.  
  5489. return Angle(0,0,0)
  5490.  
  5491. else
  5492.  
  5493. cone = gun.AimCone
  5494.  
  5495. end
  5496.  
  5497. end
  5498.  
  5499.  
  5500.  
  5501. return math.Clamp(cone + gun.AddSpread * (gun.dt.Bipod and 0.5 or 1) + (vel / 10000 * gun.VelocitySensitivity) * (gun.dt.Status == FAS_STAT_ADS and 0.25 or 1) + ply.ViewAff, 0, 0.09 + gun.MaxSpreadInc)
  5502.  
  5503.  
  5504.  
  5505. end
  5506.  
  5507.  
  5508.  
  5509.  
  5510.  
  5511. function AB.GetFags2Cone( cmd )
  5512.  
  5513. local ply = LocalPlayer()
  5514.  
  5515. local gun = ply:GetActiveWeapon()
  5516.  
  5517. local newang = ply:GetPunchAngle()
  5518.  
  5519. math.randomseed( CurTime() )
  5520.  
  5521. local cuntcone = gun.CurCone
  5522.  
  5523.  
  5524.  
  5525. -- newang = newang + (Angle(math.Rand(-cuntcone, cuntcone), math.Rand(-cuntcone, cuntcone), 0) )
  5526.  
  5527.  
  5528.  
  5529. return newang
  5530.  
  5531. -- return LocalPlayer():GetPunchAngle()
  5532.  
  5533. end
  5534.  
  5535.  
  5536.  
  5537. --hook.Remove( "EntityFireBullets", "Fags2lmao" )
  5538.  
  5539. /*
  5540.  
  5541. hook.Add( "EntityFireBullets", "Fags2lmao", function( ent, data )
  5542.  
  5543. local me = LocalPlayer()
  5544.  
  5545. local gun = me:GetActiveWeapon()
  5546.  
  5547. local oldang = me:EyeAngles()
  5548.  
  5549. math.randomseed(CurTime())
  5550.  
  5551. local Dir3 = (me:GetPunchAngle() + Angle(math.Rand(-gun.CurCone, gun.CurCone), math.Rand(-gun.CurCone, gun.CurCone), 0) * 25)
  5552.  
  5553. print( "hax"..tostring( me:EyeAngles() - Dir3) )
  5554.  
  5555. -- print( "hax: "..tostring(oldang + -AB.GetFags2Cone( me:GetCurrentCommand() )) )
  5556.  
  5557. -- me:SetEyeAngles( oldang + -AB.GetFags2Cone( me:GetCurrentCommand() ) )
  5558.  
  5559. end)
  5560.  
  5561. */
  5562.  
  5563. local hl2guns = {
  5564.  
  5565. ["weapon_smg1"] = Vector( 0.04362, 0.04362, 0.04362 ),
  5566.  
  5567. ["weapon_ar2"] = Vector( 0.02618, 0.02618, 0.02618 ),
  5568.  
  5569. ["weapon_shotgun"] = Vector( 0.08716, 0.08716, 0.08716 ),
  5570.  
  5571. ["weapon_pistol"] = Vector( 0.00873, 0.00873, 0.00873 ) ,
  5572.  
  5573. }
  5574.  
  5575.  
  5576.  
  5577. function AB.GetHL2Cone( cmd )
  5578.  
  5579. local ply = LocalPlayer()
  5580.  
  5581. local gun = ply:GetActiveWeapon()
  5582.  
  5583. local meme = hl2guns[gun:GetClass()]
  5584.  
  5585. local cone = odium.engine.GetWeaponCone( cmd, ply:EyeAngles(), meme )
  5586.  
  5587. return cone
  5588.  
  5589. end
  5590.  
  5591.  
  5592.  
  5593. function AB.GetCurrentWeaponCone( cmd )
  5594.  
  5595. if !odium or !odium.engine or !odium.engine.GetWeaponCone then
  5596.  
  5597. AB.ChatText( "Odium main module not present or malfunctioning! Compensated spread will not work!", Color(255,100,0) )
  5598.  
  5599. AB.Vars.CompSpread = false
  5600.  
  5601. return Angle( 0, 0, 0 )
  5602.  
  5603. end
  5604.  
  5605. local ply = LocalPlayer()
  5606.  
  5607. local gun = ply:GetActiveWeapon()
  5608.  
  5609. if hl2guns[gun:GetClass()] or gun:GetClass() == "weapon_pistol" then return AB.GetHL2Cone( cmd ) end
  5610.  
  5611. if gun.Primary and gun.Primary.Spread and gun.Primary.IronAccuracy then return AB.GetM9kCone( cmd ) end
  5612.  
  5613. if gun.HipCone then return AB.GetFags2Cone( cmd ) end
  5614.  
  5615. if gun.Primary and gun.Primary.Cone then return AB.GetGenericCone( cmd ) end
  5616.  
  5617. return Angle( 0, 0, 0 )
  5618.  
  5619. end
  5620.  
  5621.  
  5622.  
  5623.  
  5624.  
  5625. local penistration = {
  5626.  
  5627. ["SniperPenetratedRound"] = 20,
  5628.  
  5629. ["pistol"] = 9,
  5630.  
  5631. ["357"] = 12,
  5632.  
  5633. ["smg1"] = 14,
  5634.  
  5635. ["ar2"] = 16,
  5636.  
  5637. ["buckshot"] = 5,
  5638.  
  5639. ["slam"] = 5,
  5640.  
  5641. ["AirboatGun"] = 17,
  5642.  
  5643. }
  5644.  
  5645.  
  5646.  
  5647. function AB.GetM9gayPenetration( ply, gun, tr, testent )
  5648.  
  5649. if !gun.Penetration then return false end
  5650.  
  5651. local ammotyp = gun.Primary.Ammo
  5652.  
  5653. local penindex = 14
  5654.  
  5655. if penistration[ammotyp] then penindex = penistration[ammotyp] end
  5656.  
  5657. if tr.MatType == MAT_METAL and ammotyp != "SniperPenetratedRound" then return false end
  5658.  
  5659. penindex = penindex - 0.05 -- precaution so we don't botch extreme range shots
  5660.  
  5661.  
  5662.  
  5663. local penissize = tr.Normal * penindex
  5664.  
  5665. if (tr.MatType == MAT_GLASS or tr.MatType == MAT_PLASTIC or tr.MatType == MAT_WOOD or tr.MatType == MAT_FLESH or tr.MatType == MAT_ALIENFLESH) then
  5666.  
  5667. penissize = tr.Normal * (penindex * 2)
  5668.  
  5669. end
  5670.  
  5671.  
  5672.  
  5673. local ntrace = {}
  5674.  
  5675. ntrace.endpos = tr.HitPos + tr.Normal * 99999
  5676.  
  5677. ntrace.start = tr.HitPos + penissize
  5678.  
  5679. ntrace.mask = MASK_SHOT
  5680.  
  5681. ntrace.filter = {ply}
  5682.  
  5683. local trace = util.TraceLine(ntrace)
  5684.  
  5685.  
  5686.  
  5687. if trace.StartSolid or ( trace.Entity and trace.Entity != testent ) then return false end
  5688.  
  5689.  
  5690.  
  5691. return true
  5692.  
  5693.  
  5694.  
  5695. end
  5696.  
  5697.  
  5698.  
  5699.  
  5700.  
  5701. function AB.CanWeaponPenetrate( tr, testent )
  5702.  
  5703. local ply = LocalPlayer()
  5704.  
  5705. local gun = ply:GetActiveWeapon()
  5706.  
  5707. if !ply:IsValid() or !gun or !gun:IsValid() then return false end
  5708.  
  5709. if gun.Primary and gun.Primary.Spread and gun.Primary.IronAccuracy then return AB.GetM9gayPenetration( ply, gun, tr, testent ) end
  5710.  
  5711. return false
  5712.  
  5713. end
  5714.  
  5715.  
  5716.  
  5717.  
  5718.  
  5719. function AB.IsBabyGod( ply )
  5720.  
  5721. if !ply:IsValid() or !ply:Alive() or ply:InVehicle() then return false end
  5722.  
  5723. if ply:GetRenderMode() == RENDERMODE_TRANSALPHA and ply:GetColor().a == 100 then
  5724.  
  5725. return true
  5726.  
  5727. else
  5728.  
  5729. return false
  5730.  
  5731. end
  5732.  
  5733. end
  5734.  
  5735.  
  5736.  
  5737.  
  5738.  
  5739. function AB.SetPacketChoke( choke )
  5740.  
  5741. if !odium or !odium.engine then return end
  5742.  
  5743. if choke then
  5744.  
  5745. odium.engine.SetSendPacketEnabled( true )
  5746.  
  5747. odium.engine.SetChokedPacketNum( 0 )
  5748.  
  5749. else
  5750.  
  5751. odium.engine.ResetSendPacket()
  5752.  
  5753. odium.engine.ResetChokedPacketNum()
  5754.  
  5755. end
  5756.  
  5757. end
  5758.  
  5759.  
  5760.  
  5761.  
  5762.  
  5763.  
  5764.  
  5765.  
  5766.  
  5767. /*
  5768.  
  5769. function AB.GetPenetrationStrength( tr ) --heh
  5770.  
  5771. if !AB.CanWeaponPenetrate() then return 0 end
  5772.  
  5773. local ply = LocalPlayer()
  5774.  
  5775. local gun = ply:GetActiveWeapon()
  5776.  
  5777. if !ply:IsValid() or !gun or !gun:IsValid() then return 0 end
  5778.  
  5779. if gun.Primary and gun.Primary.Spread and gun.Primary.IronAccuracy then return AB.GetM9gayPenetration( ply, gun ) end
  5780.  
  5781. return 0
  5782.  
  5783. end
  5784.  
  5785. */
  5786.  
  5787.  
  5788.  
  5789. function AB.FixMove( cmd, safe )
  5790.  
  5791. local move = Vector( cmd:GetForwardMove(), cmd:GetSideMove(), cmd:GetUpMove() )
  5792.  
  5793. local speed = math.sqrt( move.x * move.x + move.y * move.y )
  5794.  
  5795. local mang = move:Angle()
  5796.  
  5797. local yaw = math.rad( cmd:GetViewAngles().y - AB.InternalFakeAngles.y + mang.y )
  5798.  
  5799. cmd:SetForwardMove( (math.cos(yaw) * speed) * 1 )
  5800.  
  5801. cmd:SetSideMove( math.sin(yaw) * speed )
  5802.  
  5803. end
  5804.  
  5805.  
  5806.  
  5807.  
  5808.  
  5809. ------------------------------------------------------------------------AIMBOT FUNCTIONS--------------------------------------------------------------------------------------
  5810.  
  5811.  
  5812.  
  5813.  
  5814.  
  5815.  
  5816.  
  5817. local isfiring = false
  5818.  
  5819. local lastoldang = 0
  5820.  
  5821.  
  5822.  
  5823. function AB.AimbotCore( cmd )
  5824.  
  5825. local ply = LocalPlayer()
  5826.  
  5827.  
  5828.  
  5829. if !AB.Vars.SilentAim then AB.InternalFakeAngles = 0 end
  5830.  
  5831. if lastoldang and isangle( lastoldang ) then
  5832.  
  5833. cmd:SetViewAngles( lastoldang )
  5834.  
  5835. lastoldang = 0
  5836.  
  5837. AB.SetPacketChoke( false )
  5838.  
  5839. end
  5840.  
  5841.  
  5842.  
  5843. if !AB.Vars.Aimbot then
  5844.  
  5845. lastoldang = 0
  5846.  
  5847. AB.AimbotPreviewTarget = -1
  5848.  
  5849. AB.AimbotTarget = game.GetWorld()
  5850.  
  5851. return
  5852.  
  5853. end
  5854.  
  5855.  
  5856.  
  5857. if !AB.Vars.AimbotStickyLock then
  5858.  
  5859. local closestfag = AB.GetClosestToCursor( true )
  5860.  
  5861. if closestfag != AB.AimbotTarget then AB.AimbotTarget = closestfag end
  5862.  
  5863. end
  5864.  
  5865.  
  5866.  
  5867. local atarg = AB.AimbotTarget
  5868.  
  5869. local pozzed = AB.PrepareForAStomping( atarg )
  5870.  
  5871.  
  5872.  
  5873. if isvector( pozzed ) then AB.AimbotPreviewTarget = pozzed end
  5874.  
  5875.  
  5876.  
  5877. -- negate target if they are invalid for whatever reason
  5878.  
  5879. if !atarg:IsValid() or AB.IsDead( atarg ) or !AB.InFOV( atarg ) or !AB.CanTargetPlayer( atarg ) or (AB.ToMetric(ply:GetPos():Distance(atarg:GetPos())) >= AB.NumberVars.AimbotDist) or !isvector( pozzed ) then
  5880.  
  5881. AB.AimbotPreviewTarget = -1
  5882.  
  5883. AB.AimbotTarget = AB.GetClosestToCursor( true )
  5884.  
  5885. AB.InternalFakeAngles = 0
  5886.  
  5887. return
  5888.  
  5889. end
  5890.  
  5891.  
  5892.  
  5893. -- snap only on fire option
  5894.  
  5895. if AB.Vars.SnapOnFire and !input.IsMouseDown(MOUSE_LEFT) or !ply:GetActiveWeapon() or !ply:GetActiveWeapon():IsValid() or !AB.CanBotShoot( ply:GetActiveWeapon() ) then
  5896.  
  5897. -- AB.AimbotTarget = game.GetWorld()
  5898.  
  5899. targetlerp = LocalPlayer():EyeAngles()
  5900.  
  5901. return
  5902.  
  5903. end
  5904.  
  5905.  
  5906.  
  5907. -- keybind mode
  5908.  
  5909. if AB.Vars.AimbotBindMode then
  5910.  
  5911. local khn = AB.NumberVars.AimbotBindKey
  5912.  
  5913. if not ( input.IsKeyDown( khn ) or input.IsMouseDown( khn ) ) then
  5914.  
  5915. -- AB.AimbotTarget = game.GetWorld()
  5916.  
  5917. targetlerp = LocalPlayer():EyeAngles()
  5918.  
  5919. return
  5920.  
  5921. end
  5922.  
  5923. end
  5924.  
  5925.  
  5926.  
  5927. -- cap a motherfucker
  5928.  
  5929. AB.AimbotPreviewTarget = pozzed
  5930.  
  5931. local aids = pozzed - ply:GetShootPos()
  5932.  
  5933. aids = aids:Angle()
  5934.  
  5935. aids:Normalize()
  5936.  
  5937. -- if AB.NumberVars.AimbotSmooth > 0 then
  5938.  
  5939. -- targetlerp = LerpAngle(FrameTime() * ((51 - AB.NumberVars.AimbotSmooth) / 5), targetlerp, aids)
  5940.  
  5941. -- aids = targetlerp
  5942.  
  5943. -- end
  5944.  
  5945.  
  5946.  
  5947. if AB.Vars.CompSpread then
  5948.  
  5949. local cone = AB.GetCurrentWeaponCone( cmd )
  5950.  
  5951. aids = aids + -cone
  5952.  
  5953. end
  5954.  
  5955.  
  5956.  
  5957. aids = Angle( aids.p, aids.y, 0 )
  5958.  
  5959. if AB.Vars.SilentAim then
  5960.  
  5961. AB.SetPacketChoke( true )
  5962.  
  5963. lastoldang = cmd:GetViewAngles() + Angle( cmd:GetMouseY() * 0.02, -cmd:GetMouseX() * 0.015, 0 )
  5964.  
  5965. AB.InternalFakeAngles = lastoldang
  5966.  
  5967. end
  5968.  
  5969. cmd:SetViewAngles(aids)
  5970.  
  5971. if AB.Vars.SilentAim then AB.FixMove( cmd, true ) end
  5972.  
  5973.  
  5974.  
  5975. if AB.Vars.AutoShoot then
  5976.  
  5977. if( !isfiring ) then
  5978.  
  5979. cmd:SetButtons( bit.bor( cmd:GetButtons(), IN_ATTACK ) )
  5980.  
  5981. isfiring = true
  5982.  
  5983. else
  5984.  
  5985. cmd:SetButtons( bit.band( cmd:GetButtons(), bit.bnot( IN_ATTACK ) ) )
  5986.  
  5987. isfiring = false
  5988.  
  5989. end
  5990.  
  5991. end
  5992.  
  5993.  
  5994.  
  5995. if AB.Vars.AutoTrigger then
  5996.  
  5997. if ply:KeyDown(IN_ATTACK) then cmd:RemoveKey(IN_ATTACK) end
  5998.  
  5999. end
  6000.  
  6001.  
  6002.  
  6003. end
  6004.  
  6005.  
  6006.  
  6007.  
  6008.  
  6009. AB.BHopBuffer = {}
  6010.  
  6011. AB.BHopCount1 = 0
  6012.  
  6013. AB.BHopCount2 = 0
  6014.  
  6015. AB.StoredOnGround = false
  6016.  
  6017. AB.StoredInJump = false
  6018.  
  6019.  
  6020.  
  6021. function AB.ResetCounters()
  6022.  
  6023. AB.BHopCount1 = 0
  6024.  
  6025. AB.BHopCount2 = 0
  6026.  
  6027. for i = #AB.BHopBuffer, 1, -1 do
  6028.  
  6029. AB.BHopBuffer[i] = nil
  6030.  
  6031. end
  6032.  
  6033. end
  6034.  
  6035.  
  6036.  
  6037.  
  6038.  
  6039.  
  6040.  
  6041.  
  6042.  
  6043. local vw = Angle( 0, 0, 0 )
  6044.  
  6045. local targetlerp = Angle( 0, 0, 0)
  6046.  
  6047. local nxtangle = false
  6048.  
  6049. function AB.CreateMove( cmd )
  6050.  
  6051.  
  6052.  
  6053. local ply = LocalPlayer()
  6054.  
  6055. if !ply:IsValid() then return end
  6056.  
  6057.  
  6058.  
  6059. local amemfootprint = gcinfo()
  6060.  
  6061.  
  6062.  
  6063.  
  6064.  
  6065. if( AB.Vars.Autoclick and !AB.Vars.RopeStorm) then
  6066.  
  6067. if ply:KeyDown(IN_ATTACK2) then cmd:RemoveKey(IN_ATTACK2) end
  6068.  
  6069. if ply:KeyDown(IN_ATTACK) then cmd:RemoveKey(IN_ATTACK) end
  6070.  
  6071. end
  6072.  
  6073.  
  6074.  
  6075. if( AB.Vars.Bhop) then
  6076.  
  6077. if AB.Vars.BhopAutostrafe and !ply:IsFlagSet( FL_ONGROUND ) and ply:GetMoveType() != MOVETYPE_NOCLIP then
  6078.  
  6079. if cmd:GetMouseX() < 0 then
  6080.  
  6081. cmd:SetSideMove(-1000000)
  6082.  
  6083. end
  6084.  
  6085. if cmd:GetMouseX() > 0 then
  6086.  
  6087. cmd:SetSideMove(1000000)
  6088.  
  6089. end
  6090.  
  6091. end
  6092.  
  6093.  
  6094.  
  6095.  
  6096.  
  6097. ////////////////////////// credit goes to invalid/kilgrave for this UD bhop ///////////////////////////
  6098.  
  6099.  
  6100.  
  6101.  
  6102.  
  6103.  
  6104.  
  6105. if AB.BHopCount1 < 13 then
  6106.  
  6107. if(cmd:KeyDown(2) && !ply:IsOnGround()) then
  6108.  
  6109. cmd:SetButtons( bit.band( cmd:GetButtons(), bit.bnot( 2 ) ) );
  6110.  
  6111. end
  6112.  
  6113. elseif(cmd:KeyDown(IN_JUMP)) then
  6114.  
  6115. cmd:SetButtons( bit.band( cmd:GetButtons(), bit.bnot( 2 ) ) );
  6116.  
  6117. end
  6118.  
  6119.  
  6120.  
  6121. local lastOnGround = AB.StoredOnGround
  6122.  
  6123. local lastInJump = AB.StoredInJump
  6124.  
  6125.  
  6126.  
  6127. local onGround = ply:IsOnGround()
  6128.  
  6129. local inJump = cmd:KeyDown (IN_JUMP)
  6130.  
  6131.  
  6132.  
  6133. if lastOnGround and !onGround then
  6134.  
  6135. AB.BHopCount2 = 0
  6136.  
  6137. elseif !lastOnGround and onGround then
  6138.  
  6139. if !lastInJump and inJump then
  6140.  
  6141. AB.BHopCount1 = AB.BHopCount1 + 1
  6142.  
  6143. -- ply:ChatPrint(AB.BHopCount1)
  6144.  
  6145. if AB.BHopCount1 == 14 then
  6146.  
  6147. local a, b, c = 0, 0, 0
  6148.  
  6149. for i = 1, #AB.BHopBuffer do
  6150.  
  6151. local x = AB.BHopBuffer [i]
  6152.  
  6153. a = a + 1
  6154.  
  6155. b = b + x
  6156.  
  6157. c = c + x * x
  6158.  
  6159. end
  6160.  
  6161.  
  6162.  
  6163. if (c - b * b / a) / a < 0.1 then
  6164.  
  6165. -- ply:ChatPrint("Detected")
  6166.  
  6167. AB.ChatText( "Whoops, your bhope abuse may have been detected! The protection system is good but not perfect I'm sorry to say", Color(255,205,205) )
  6168.  
  6169. end
  6170.  
  6171. end
  6172.  
  6173. else
  6174.  
  6175. AB.ResetCounters()
  6176.  
  6177. end
  6178.  
  6179. elseif onGround then
  6180.  
  6181. if lastInJump != inJump then
  6182.  
  6183. AB.ResetCounters()
  6184.  
  6185. end
  6186.  
  6187. end
  6188.  
  6189.  
  6190.  
  6191. if !onGround and
  6192.  
  6193. lastInJump and not inJump and
  6194.  
  6195. AB.BHopCount2 >= 0 then
  6196.  
  6197. AB.BHopBuffer[#AB.BHopBuffer + 1] = AB.BHopCount2
  6198.  
  6199. AB.BHopCount2 = -math.huge
  6200.  
  6201. end
  6202.  
  6203.  
  6204.  
  6205. AB.BHopCount2 = AB.BHopCount2 + 1
  6206.  
  6207.  
  6208.  
  6209. AB.StoredOnGround = onGround
  6210.  
  6211. AB.StoredInJump = nJump
  6212.  
  6213.  
  6214.  
  6215. ////////////////////////// old and gay ///////////////////////////
  6216.  
  6217.  
  6218.  
  6219. /*
  6220.  
  6221. if !ply:IsFlagSet( FL_ONGROUND ) and ply:GetMoveType() != MOVETYPE_NOCLIP then
  6222.  
  6223. cmd:SetButtons( bit.band( cmd:GetButtons(), bit.bnot( IN_JUMP ) ) )
  6224.  
  6225. end
  6226.  
  6227. */
  6228.  
  6229. end
  6230.  
  6231.  
  6232.  
  6233.  
  6234.  
  6235. if AB.Vars.Triggerbot and ply:Alive() and ply:GetActiveWeapon() and ply:GetActiveWeapon():IsValid() and AB.CanBotShoot( ply:GetActiveWeapon() ) then
  6236.  
  6237. local td = {start = ply:GetShootPos(), endpos = ply:GetShootPos() + ply:EyeAngles():Forward() * 65535, filter = ply, mask = MASK_SHOT}
  6238.  
  6239. local tr = util.TraceLine(td)
  6240.  
  6241.  
  6242.  
  6243. if (tr.Entity:IsPlayer() and AB.CanTargetPlayer( tr.Entity ) ) or tr.Entity:IsNPC() or tr.Entity.Type == "nextbot" then
  6244.  
  6245. if( !isfiring ) then
  6246.  
  6247. cmd:SetButtons( bit.bor( cmd:GetButtons(), IN_ATTACK ) )
  6248.  
  6249. isfiring = true
  6250.  
  6251. else
  6252.  
  6253. cmd:SetButtons( bit.band( cmd:GetButtons(), bit.bnot( IN_ATTACK ) ) )
  6254.  
  6255. isfiring = false
  6256.  
  6257. end
  6258.  
  6259. end
  6260.  
  6261.  
  6262.  
  6263. end
  6264.  
  6265.  
  6266.  
  6267. if AB.ScrollDelta != 0 then cmd:SetMouseWheel( AB.ScrollDelta ) end
  6268.  
  6269.  
  6270.  
  6271. if( AB.Vars.RopeStorm and ply:KeyDown(IN_ATTACK2)) then
  6272.  
  6273. local aids = Angle(math.random(-90, 90), math.random(-180, 180), 0)
  6274.  
  6275. aids:Normalize()
  6276.  
  6277. cmd:SetViewAngles(aids)
  6278.  
  6279. if ply:KeyDown(IN_ATTACK2) then cmd:RemoveKey(IN_ATTACK2) end
  6280.  
  6281. end
  6282.  
  6283.  
  6284.  
  6285.  
  6286.  
  6287.  
  6288.  
  6289. if AB.Vars.FreecamControls then
  6290.  
  6291. local khn = AB.NumberVars.FreecamForward
  6292.  
  6293. if ( input.IsKeyDown( khn ) or input.IsMouseDown( khn ) ) then AB.FreecamCoordinates.pos = AB.FreecamCoordinates.pos + AB.FreecamCoordinates.ang:Forward() * 7 end
  6294.  
  6295. local khn = AB.NumberVars.FreecamBack
  6296.  
  6297. if ( input.IsKeyDown( khn ) or input.IsMouseDown( khn ) ) then AB.FreecamCoordinates.pos = AB.FreecamCoordinates.pos - AB.FreecamCoordinates.ang:Forward() * 7 end
  6298.  
  6299. local khn = AB.NumberVars.FreecamLeft
  6300.  
  6301. if ( input.IsKeyDown( khn ) or input.IsMouseDown( khn ) ) then AB.FreecamCoordinates.ang.y = AB.FreecamCoordinates.ang.y + 1 end
  6302.  
  6303. local khn = AB.NumberVars.FreecamRight
  6304.  
  6305. if ( input.IsKeyDown( khn ) or input.IsMouseDown( khn ) ) then AB.FreecamCoordinates.ang.y = AB.FreecamCoordinates.ang.y - 1 end
  6306.  
  6307. local khn = AB.NumberVars.FreecamUp
  6308.  
  6309. if ( input.IsKeyDown( khn ) or input.IsMouseDown( khn ) ) then AB.FreecamCoordinates.ang.p = AB.FreecamCoordinates.ang.p - 0.75 end
  6310.  
  6311. local khn = AB.NumberVars.FreecamDown
  6312.  
  6313. if ( input.IsKeyDown( khn ) or input.IsMouseDown( khn ) ) then AB.FreecamCoordinates.ang.p = AB.FreecamCoordinates.ang.p + 0.75 end
  6314.  
  6315. end
  6316.  
  6317.  
  6318.  
  6319. AB.AimbotCore( cmd )
  6320.  
  6321.  
  6322.  
  6323. AB.MemoryDebug["aimbot"] = gcinfo() - amemfootprint
  6324.  
  6325.  
  6326.  
  6327. end
  6328.  
  6329. hook.Add( "CreateMove", "cmove", AB.CreateMove )
  6330.  
  6331.  
  6332.  
  6333.  
  6334.  
  6335. local xraytrans = Color(255, 255, 255, 101)
  6336.  
  6337.  
  6338.  
  6339. surface.CreateFont( "memes", {
  6340.  
  6341. font = "Trebuchet",
  6342.  
  6343. size = 200,
  6344.  
  6345. weight = 950,
  6346.  
  6347. } )
  6348.  
  6349.  
  6350.  
  6351. local scanmat = Material("particle/particle_ring_blur")
  6352.  
  6353. local leadermat = Material( "particle/particle_ring_wave_additive" )
  6354.  
  6355. local beammat = Material("trails/laser")
  6356.  
  6357.  
  6358.  
  6359. function AB.Vision()
  6360.  
  6361. local me = LocalPlayer()
  6362.  
  6363. if !me:IsValid() then return end
  6364.  
  6365.  
  6366.  
  6367. local memfootprint = gcinfo()
  6368.  
  6369. /*
  6370.  
  6371. for i = 0, ScrH(), 200 do
  6372.  
  6373. for w = 0, ScrW(), 200 do
  6374.  
  6375. draw.SimpleTextOutlined( ":^)", "memes", w, i, Color(255,255,255,255), 0, 0, 1, Color(0,0,55,255) )
  6376.  
  6377. end
  6378.  
  6379. end
  6380.  
  6381.  
  6382.  
  6383. draw.SimpleTextOutlined( "IM A HUGE FUCKING FAGGOT", "memes", 200, ScrH() / 2 - 230, Color(255,0,0,255), 0, 0, 1, Color(0,0,55,255) )
  6384.  
  6385. draw.SimpleTextOutlined( "WHO USES LEAKED HACKS", "memes", 260, ScrH() / 2 - 50, Color(255,0,0,255), 0, 0, 1, Color(0,0,55,255) )
  6386.  
  6387. draw.SimpleTextOutlined( "COS IM POOR AND RETARDED", "memes", 180, ScrH() / 2 + 150, Color(255,0,0,255), 0, 0, 1, Color(0,0,55,255) )
  6388.  
  6389. */
  6390.  
  6391.  
  6392.  
  6393. if !AB.Vars.Vision then return end
  6394.  
  6395.  
  6396.  
  6397.  
  6398.  
  6399. if AB.Vars.CSFlashlight then
  6400.  
  6401. local dlight = DynamicLight( me:EntIndex() + 5 )
  6402.  
  6403. if ( dlight ) then
  6404.  
  6405. dlight.pos = me:GetEyeTraceNoCursor().HitPos
  6406.  
  6407. dlight.r = 255
  6408.  
  6409. dlight.g = 255
  6410.  
  6411. dlight.b = 255
  6412.  
  6413. dlight.brightness = 2
  6414.  
  6415. dlight.Decay = 1000
  6416.  
  6417. dlight.Size = 2256
  6418.  
  6419. dlight.DieTime = CurTime() + 0.5
  6420.  
  6421. end
  6422.  
  6423. end
  6424.  
  6425.  
  6426.  
  6427. if AB.Vars.ShowESP then
  6428.  
  6429. -- players
  6430.  
  6431. for k, v in pairs( player.GetAll() ) do
  6432.  
  6433.  
  6434.  
  6435. if AB.ToMetric( me:GetPos():Distance( v:GetPos() ) ) > AB.NumberVars.VisionDist then continue end
  6436.  
  6437. if !AB.OnScreen( v, 50 ) then continue end
  6438.  
  6439.  
  6440.  
  6441. local teamcol, teamcol2
  6442.  
  6443. if AB.Vars.TeamColors then
  6444.  
  6445. teamcol = team.GetColor(v:Team())
  6446.  
  6447. teamcol2 = Color(math.Clamp(teamcol.r - 100, 0, 255), math.Clamp(teamcol.g - 100, 0, 255), math.Clamp(teamcol.b - 100, 0, 255), 255)
  6448.  
  6449. else
  6450.  
  6451. teamcol = AB.DefaultScheme
  6452.  
  6453. teamcol2 = AB.DefaultScheme2
  6454.  
  6455. end
  6456.  
  6457.  
  6458.  
  6459.  
  6460.  
  6461. if v == me then continue end
  6462.  
  6463.  
  6464.  
  6465. local pos = (v:GetPos() + Vector(0, 0, 45)):ToScreen()
  6466.  
  6467. local admintext = AB.GetRank( v )
  6468.  
  6469.  
  6470.  
  6471. if !AB.IsDead( v ) then
  6472.  
  6473. if AB.Vars.VSquares then
  6474.  
  6475. surface.SetDrawColor(teamcol)
  6476.  
  6477. surface.DrawOutlinedRect(pos.x - 10, pos.y - 10, 20, 20)
  6478.  
  6479. surface.SetDrawColor(teamcol2)
  6480.  
  6481. surface.DrawOutlinedRect(pos.x - 8, pos.y - 8, 16, 16)
  6482.  
  6483. surface.SetDrawColor(Color(255,255,255,255))
  6484.  
  6485. surface.DrawRect(pos.x - 2, pos.y - 2, 4, 4)
  6486.  
  6487. end
  6488.  
  6489. if AB.Vars.VNames then draw.SimpleTextOutlined( v:Name(), "DermaDefault", pos.x, pos.y - 30, teamcol, 1, 0, 1, Color(0,0,55,255) ) end
  6490.  
  6491.  
  6492.  
  6493.  
  6494.  
  6495. if AB.Vars.BoundingBox3d then cam.Start3D(EyePos(),EyeAngles()) render.DrawWireframeBox( v:GetPos(), Angle(0,0,0), Vector( -16, -16, 0 ), Vector( 16, 16, 72 ), AB.ColScheme, true ) cam.End3D() end
  6496.  
  6497. -- propkill shit
  6498.  
  6499.  
  6500.  
  6501. render.SetMaterial( beammat )
  6502.  
  6503. if AB.Vars.PKPlayerBeams then
  6504.  
  6505. local vz, ppos = AB.PlayerVisiblePK( me:GetShootPos(), v )
  6506.  
  6507. if vz then
  6508.  
  6509. cam.Start3D(EyePos(),EyeAngles())
  6510.  
  6511. render.DrawBeam( (me:GetShootPos() + Vector(0,0,-5)) + EyeAngles():Forward() * 5, ppos, 5, 0, 1, teamcol )
  6512.  
  6513. cam.End3D()
  6514.  
  6515. end
  6516.  
  6517. end
  6518.  
  6519.  
  6520.  
  6521. if AB.Vars.PKPropBeams then
  6522.  
  6523. if AB.HoldingProp and AB.HoldingProp:IsValid() then
  6524.  
  6525. local src = AB.HoldingProp:LocalToWorld( AB.HoldingProp:OBBCenter() )
  6526.  
  6527. /*
  6528.  
  6529. cam.Start3D(EyePos(),EyeAngles())
  6530.  
  6531. render.StartBeam( 5 )
  6532.  
  6533. for i = 0, 4 do
  6534.  
  6535. local zp = src + (me:GetAimVector() * (i * 200)) + Vector( 0, 0, -(i ^ 3.15))
  6536.  
  6537. render.AddBeam( zp, 150, i, Color( 255, 100, 0) )
  6538.  
  6539. end
  6540.  
  6541. render.EndBeam()
  6542.  
  6543. render.DrawBeam( me:EyePos(), me:EyePos() + me:GetAimVector() * 2000, 50, 0, 1, Color( 255, 100, 0) )
  6544.  
  6545. cam.End3D()
  6546.  
  6547. */
  6548.  
  6549. local vz2, ppos2 = AB.PlayerVisiblePK( src, v )
  6550.  
  6551. if vz2 then
  6552.  
  6553. cam.Start3D(EyePos(),EyeAngles())
  6554.  
  6555. render.DrawBeam( src, ppos2, 50, 0, 1, teamcol2 )
  6556.  
  6557. cam.End3D()
  6558.  
  6559. end
  6560.  
  6561. end
  6562.  
  6563. end
  6564.  
  6565.  
  6566.  
  6567. -- target highlighting
  6568.  
  6569.  
  6570.  
  6571. if AB.Vars.ShowTargets and AB.IsTarget( v ) then
  6572.  
  6573. draw.SimpleTextOutlined( "[TARGETED]", "DermaDefault", math.Clamp(pos.x, 30, ScrW() - 54), math.Clamp(pos.y - 42, 30, ScrH() - 54), Color(255,155,0,255), 1, 0, 1, Color(55,20,0,255) )
  6574.  
  6575. surface.SetDrawColor(Color(255,155,0,255))
  6576.  
  6577. surface.DrawRect( pos.x - 20, pos.y - 15, 4, 30 )
  6578.  
  6579. surface.DrawRect( pos.x + 16, pos.y - 15, 4, 30 )
  6580.  
  6581.  
  6582.  
  6583. surface.DrawRect( pos.x - 30, pos.y - 20, 4, 40 )
  6584.  
  6585. surface.DrawRect( pos.x + 26, pos.y - 20, 4, 40 )
  6586.  
  6587.  
  6588.  
  6589. surface.DrawLine( ScrW() / 2, ScrH(), pos.x, pos.y )
  6590.  
  6591. end
  6592.  
  6593. if AB.Vars.ShowFriends and AB.IsFriend( v ) and !AB.IsTarget( v ) then
  6594.  
  6595. draw.SimpleTextOutlined( "[FRIEND]", "DermaDefault", pos.x, pos.y - 42, Color(0,255,0,255), 1, 0, 1, Color(0,0,55,255) )
  6596.  
  6597. end
  6598.  
  6599. if AB.Vars.ShowRanks and !(admintext == "user" or admintext == "guest" or admintext == "player") then
  6600.  
  6601. draw.SimpleTextOutlined( "["..admintext.."]", "DermaDefault", pos.x, pos.y + 12, Color(255,100,0,255), 1, 0, 1, Color(50,0,0,255) )
  6602.  
  6603. end
  6604.  
  6605. if AB.Vars.ShowTraitors and table.HasValue( AB.Traitors, v ) then
  6606.  
  6607. draw.SimpleTextOutlined( "[TRAITOR]", "DermaDefault", pos.x, pos.y - 56, Color(255,55,0,255), 1, 0, 1, Color(55,10,0,255) )
  6608.  
  6609. end
  6610.  
  6611. if AB.Vars.Vizlines then
  6612.  
  6613. local tr = util.TraceLine ({
  6614.  
  6615. start = v:EyePos(),
  6616.  
  6617. endpos = v:EyePos() + v:GetAimVector() * 5000,
  6618.  
  6619. filter = v,
  6620.  
  6621. mask = MASK_SOLID_BRUSHONLY
  6622.  
  6623. })
  6624.  
  6625. local tp = tr.HitPos:ToScreen()
  6626.  
  6627. local p = v:EyePos():ToScreen()
  6628.  
  6629. surface.DrawLine(p.x, p.y, tp.x, tp.y)
  6630.  
  6631. surface.SetDrawColor(teamcol)
  6632.  
  6633. surface.DrawLine(tp.x - 4, tp.y, tp.x + 4, tp.y)
  6634.  
  6635. surface.DrawLine(tp.x, tp.y - 4, tp.x, tp.y + 4)
  6636.  
  6637. end
  6638.  
  6639.  
  6640.  
  6641. if AB.Vars.ShowDistance then
  6642.  
  6643. draw.SimpleTextOutlined( AB.ToMetric(me:GetPos():Distance(v:GetPos())).."m", "DermaDefault", pos.x, pos.y + 24, teamcol, 1, 0, 1, Color(0,0,55,255) )
  6644.  
  6645. end
  6646.  
  6647. if AB.Vars.ShowHP then
  6648.  
  6649. local colhp = math.Clamp(v:Health() * 3, 0, 255)
  6650.  
  6651. local colcomp = Color(255,colhp,0,255)
  6652.  
  6653. draw.SimpleTextOutlined( tostring(v:Health()).."%", "DermaDefault", pos.x, pos.y + 38, colcomp, 1, 0, 1, Color(0,0,0,255) )
  6654.  
  6655. end
  6656.  
  6657.  
  6658.  
  6659. if AB.Vars.PKVelocity then
  6660.  
  6661. local velpos = ((v:GetPos() + Vector(0, 0, 45)) + v:GetVelocity() * 0.3 ):ToScreen()
  6662.  
  6663. surface.SetDrawColor(teamcol)
  6664.  
  6665. surface.SetMaterial( leadermat )
  6666.  
  6667. surface.DrawTexturedRect(velpos.x - 15, velpos.y - 15, 30, 30)
  6668.  
  6669. surface.SetDrawColor(teamcol2)
  6670.  
  6671. surface.DrawTexturedRect(velpos.x - 10, velpos.y - 10, 20, 20)
  6672.  
  6673. end
  6674.  
  6675.  
  6676.  
  6677. -- the fag is dead, i dunno why i did a second logic block for this, im just retarded i guess
  6678.  
  6679. elseif AB.Vars.ShowDead then
  6680.  
  6681. surface.SetDrawColor(Color(255,255,255,255))
  6682.  
  6683. surface.DrawLine(pos.x - 15, pos.y - 15, pos.x + 15, pos.y + 15)
  6684.  
  6685. surface.DrawLine(pos.x + 15, pos.y - 15, pos.x - 15, pos.y + 15)
  6686.  
  6687. if AB.Vars.VNames then draw.SimpleTextOutlined( v:Name(), "DermaDefault", pos.x, pos.y - 30, teamcol, 1, 0, 1, Color(0,0,55,255) ) end
  6688.  
  6689. if AB.Vars.ShowFriends and AB.IsFriend( v ) then
  6690.  
  6691. draw.SimpleTextOutlined( "[FRIEND]", "DermaDefault", pos.x, pos.y - 42, Color(0,255,0,255), 1, 0, 1, Color(0,0,55,255) )
  6692.  
  6693. end
  6694.  
  6695. if AB.Vars.ShowRanks and !(admintext == "user" or admintext == "guest" or admintext == "player") then
  6696.  
  6697. draw.SimpleTextOutlined( "["..admintext.."]", "DermaDefault", pos.x, pos.y + 12, Color(255,100,0,255), 1, 0, 1, Color(50,0,0,255) )
  6698.  
  6699. end
  6700.  
  6701. if AB.Vars.ShowDistance then
  6702.  
  6703. draw.SimpleTextOutlined( AB.ToMetric(me:GetPos():Distance(v:GetPos())).."m", "DermaDefault", pos.x, pos.y + 24, teamcol, 1, 0, 1, Color(0,0,55,255) )
  6704.  
  6705. end
  6706.  
  6707. end
  6708.  
  6709.  
  6710.  
  6711.  
  6712.  
  6713. end -- end of players loop
  6714.  
  6715.  
  6716.  
  6717. if AB.Vars.ESPProps then
  6718.  
  6719. for k, v in pairs(ents.FindByClass("prop_physics")) do
  6720.  
  6721. if AB.ToMetric( me:GetPos():Distance( v:GetPos() ) ) > AB.NumberVars.VisionDist then continue end
  6722.  
  6723. local pos = (v:LocalToWorld(v:OBBCenter())):ToScreen()
  6724.  
  6725. surface.SetDrawColor(AB.DefaultScheme)
  6726.  
  6727. surface.DrawOutlinedRect(pos.x - 10, pos.y - 10, 20, 20)
  6728.  
  6729. local aligndist = surface.GetTextSize( AB.ToMetric(me:GetPos():Distance(v:GetPos())).."m" )
  6730.  
  6731. draw.SimpleTextOutlined( AB.ToMetric(me:GetPos():Distance(v:GetPos())).."m", "DermaDefault", pos.x - (aligndist / 2), pos.y + 12, AB.DefaultScheme, 0, 0, 1, Color(0,0,55,255) )
  6732.  
  6733. end
  6734.  
  6735. end
  6736.  
  6737.  
  6738.  
  6739.  
  6740.  
  6741.  
  6742.  
  6743. if AB.Vars.Entfinder then
  6744.  
  6745. for k, v in pairs(ents.GetAll()) do
  6746.  
  6747. if AB.ToMetric( me:GetPos():Distance( v:GetPos() ) ) > AB.NumberVars.VisionDist then continue end
  6748.  
  6749. if !AB.OnScreen( v, 20 ) then continue end
  6750.  
  6751. local drawing = false
  6752.  
  6753.  
  6754.  
  6755. for i,p in pairs(AB.MarkedEnts) do
  6756.  
  6757. if v:GetClass() == p then
  6758.  
  6759. drawing = true
  6760.  
  6761. end
  6762.  
  6763. end
  6764.  
  6765.  
  6766.  
  6767. if drawing then
  6768.  
  6769. local pos = (v:LocalToWorld(v:OBBCenter())):ToScreen()
  6770.  
  6771. surface.SetDrawColor(Color(255,255,255,255))
  6772.  
  6773. surface.DrawRect(pos.x - 3, pos.y - 3, 6, 6)
  6774.  
  6775. local alignclass = surface.GetTextSize( tostring(v:GetClass()) )
  6776.  
  6777. draw.SimpleTextOutlined( tostring(v:GetClass()), "DermaDefault", pos.x - (alignclass / 2), pos.y + 12, AB.DefaultScheme, 0, 0, 1, Color(0,0,55,255) )
  6778.  
  6779. end
  6780.  
  6781.  
  6782.  
  6783. end
  6784.  
  6785.  
  6786.  
  6787. end
  6788.  
  6789.  
  6790.  
  6791. end -- end of showesp
  6792.  
  6793.  
  6794.  
  6795.  
  6796.  
  6797. if AB.Freecam then
  6798.  
  6799. local CamData = {}
  6800.  
  6801. CamData.origin = AB.FreecamCoordinates.pos
  6802.  
  6803. CamData.angles = AB.FreecamCoordinates.ang
  6804.  
  6805. CamData.x = AB.NumberVars.MirrorX
  6806.  
  6807. CamData.y = AB.NumberVars.MirrorY
  6808.  
  6809. CamData.w = ScrW() / (AB.NumberVars.MirrorSize / 10)
  6810.  
  6811. CamData.h = ScrH() / (AB.NumberVars.MirrorSize / 10)
  6812.  
  6813. CamData.drawviewmodel = false
  6814.  
  6815. CamData.drawhud = false
  6816.  
  6817. CamData.fov = 90
  6818.  
  6819. render.RenderView( CamData )
  6820.  
  6821. end
  6822.  
  6823.  
  6824.  
  6825. if AB.Vars.Mirror then
  6826.  
  6827. local CamData = {}
  6828.  
  6829. if AB.NumberVars.MirrorAxis == 0 then
  6830.  
  6831. CamData.angles = Angle(0,me:EyeAngles().yaw - 180,0)
  6832.  
  6833. elseif AB.NumberVars.MirrorAxis == 1 then
  6834.  
  6835. CamData.angles = Angle(me:EyeAngles().pitch,me:EyeAngles().yaw - 180,0)
  6836.  
  6837. else
  6838.  
  6839. CamData.angles = Angle(-me:EyeAngles().pitch,me:EyeAngles().yaw - 180,0)
  6840.  
  6841. end
  6842.  
  6843.  
  6844.  
  6845. CamData.origin = me:GetPos()+Vector(0,0,50)
  6846.  
  6847. CamData.x = AB.NumberVars.MirrorX
  6848.  
  6849. CamData.y = AB.NumberVars.MirrorY
  6850.  
  6851. CamData.w = ScrW() / (AB.NumberVars.MirrorSize / 10)
  6852.  
  6853. CamData.h = ScrH() / (AB.NumberVars.MirrorSize / 10)
  6854.  
  6855. CamData.drawviewmodel = false
  6856.  
  6857. CamData.drawhud = false
  6858.  
  6859. CamData.fov = 90
  6860.  
  6861. render.RenderView( CamData )
  6862.  
  6863. end
  6864.  
  6865.  
  6866.  
  6867.  
  6868.  
  6869.  
  6870.  
  6871. if AB.Vars.PreviewTarget then
  6872.  
  6873. local t = AB.AimbotPreviewTarget
  6874.  
  6875. if isvector( t ) then
  6876.  
  6877. local p = t:ToScreen()
  6878.  
  6879. surface.SetDrawColor(Color(255,155,55,255))
  6880.  
  6881. surface.DrawRect(p.x-1, p.y + 6, 2, 20)
  6882.  
  6883. surface.DrawRect(p.x-1, p.y - (6 + 20), 2, 20)
  6884.  
  6885. surface.DrawRect(p.x + 6, p.y-1, 20, 2)
  6886.  
  6887. surface.DrawRect(p.x - (6 + 20), p.y-1, 20, 2)
  6888.  
  6889. end
  6890.  
  6891. end
  6892.  
  6893.  
  6894.  
  6895.  
  6896.  
  6897. if AB.Vars.Radar then
  6898.  
  6899. local size = AB.NumberVars.RadarSize
  6900.  
  6901. local fov = AB.NumberVars.RadarZoom
  6902.  
  6903. local x = AB.NumberVars.RadarX
  6904.  
  6905. local y = AB.NumberVars.RadarY
  6906.  
  6907.  
  6908.  
  6909. surface.SetDrawColor(AB.DefaultScheme.r, AB.DefaultScheme.g, AB.DefaultScheme.b, AB.NumberVars.RadarAlpha)
  6910.  
  6911. surface.DrawRect(x - 2, y - 2, size + 4, size + 4)
  6912.  
  6913.  
  6914.  
  6915.  
  6916.  
  6917. surface.SetDrawColor(Color(20, 20, 20, AB.NumberVars.RadarAlpha))
  6918.  
  6919. surface.DrawRect(x, y, size, size)
  6920.  
  6921. surface.SetDrawColor(Color(30, 30, 30, 255))
  6922.  
  6923. surface.DrawLine(x, y, x + (size / 2), y + (size / 2))
  6924.  
  6925. surface.DrawLine(x + size, y, x + (size / 2), y + (size / 2))
  6926.  
  6927.  
  6928.  
  6929. surface.SetDrawColor(AB.DefaultScheme)
  6930.  
  6931. surface.DrawRect((x -2)+ (size/2), (y-2) + (size/2), 4, 4)
  6932.  
  6933.  
  6934.  
  6935. for key, ply in pairs(player.GetAll()) do
  6936.  
  6937. local teamcol, teamcol2 = AB.GetESPColor( ply )
  6938.  
  6939.  
  6940.  
  6941.  
  6942.  
  6943. if ply != me and !AB.IsDead( ply ) then
  6944.  
  6945. local lx = me:GetPos().x - ply:GetPos().x
  6946.  
  6947. local ly = me:GetPos().y - ply:GetPos().y
  6948.  
  6949. local ang = EyeAngles().y
  6950.  
  6951. local cos = math.cos(math.rad(-ang))
  6952.  
  6953. local sin = math.sin(math.rad(-ang))
  6954.  
  6955. local px = (ly * cos) + (lx * sin)
  6956.  
  6957. local py = (lx * cos) - (ly * sin)
  6958.  
  6959. px = px / fov
  6960.  
  6961. py = py / fov
  6962.  
  6963. px = math.Clamp(px, -(size * 0.50), size * 0.50)
  6964.  
  6965. py = math.Clamp(py, -(size * 0.50), size * 0.50)
  6966.  
  6967. local name = player.GetAll()[key]:Nick()
  6968.  
  6969. draw.SimpleText(name, "default", x + size - (size * 0.50) + px - 13, y + size - (size * 0.50) + py - 7, teamcol2, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER)
  6970.  
  6971. surface.SetDrawColor(teamcol)
  6972.  
  6973. surface.DrawRect(x + size - (size * 0.50) + px, y + size - (size * 0.50) + py, 3, 3)
  6974.  
  6975.  
  6976.  
  6977. end
  6978.  
  6979.  
  6980.  
  6981. end
  6982.  
  6983.  
  6984.  
  6985. end
  6986.  
  6987.  
  6988.  
  6989. if AB.Vars.Crosshair then
  6990.  
  6991. local hitpos = util.TraceLine ({
  6992.  
  6993. start = me:GetShootPos(),
  6994.  
  6995. endpos = me:GetShootPos() + me:GetAimVector() * 4096,
  6996.  
  6997. filter = me,
  6998.  
  6999. mask = MASK_SHOT
  7000.  
  7001. }).HitPos
  7002.  
  7003.  
  7004.  
  7005. local screenpos = hitpos:ToScreen()
  7006.  
  7007. local x = screenpos.x
  7008.  
  7009. local y = screenpos.y
  7010.  
  7011.  
  7012.  
  7013. surface.SetDrawColor(Color(255, 255, 255, 255))
  7014.  
  7015. surface.DrawRect((ScrW() / 2) - 1, (ScrH() / 2) - 1, 2, 2)
  7016.  
  7017. surface.DrawRect(x-1, y + 6, 2, 20)
  7018.  
  7019. surface.DrawRect(x-1, y - (6 + 20), 2, 20)
  7020.  
  7021. surface.DrawRect(x + 6, y-1, 20, 2)
  7022.  
  7023. surface.DrawRect(x - (6 + 20), y-1, 20, 2)
  7024.  
  7025.  
  7026.  
  7027. if AB.CrossHairAlpha > 0 then AB.CrossHairAlpha = math.Clamp(AB.CrossHairAlpha - 6, 0, 255) end
  7028.  
  7029. surface.SetDrawColor(Color(255, 255, 255, AB.CrossHairAlpha))
  7030.  
  7031. surface.DrawLine(x - 24, y + 24, x - 6, y + 6)
  7032.  
  7033. surface.DrawLine(x + 24, y + 24, x + 6, y + 6)
  7034.  
  7035. surface.DrawLine(x - 24, y - 24, x - 6, y - 6)
  7036.  
  7037. surface.DrawLine(x + 24, y - 24, x + 6, y - 6)
  7038.  
  7039.  
  7040.  
  7041.  
  7042.  
  7043. end
  7044.  
  7045.  
  7046.  
  7047.  
  7048.  
  7049.  
  7050.  
  7051.  
  7052.  
  7053. if isvector( AB.CurrentBase ) then
  7054.  
  7055. local sc = (AB.CurrentBase + Vector( 0, 0, 10 )):ToScreen()
  7056.  
  7057.  
  7058.  
  7059. draw.SimpleText("My Base", "default", sc.x, sc.y - 42, AB.DefaultScheme, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
  7060.  
  7061. draw.SimpleText( AB.ToMetric( LocalPlayer():GetPos():Distance( AB.CurrentBase ) ).."m", "default", sc.x, sc.y - 30, AB.DefaultScheme, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
  7062.  
  7063. surface.SetDrawColor( Color(205,205,255, 100 ) )
  7064.  
  7065. draw.NoTexture()
  7066.  
  7067. local triangle = {
  7068.  
  7069. { x = sc.x - 10, y = sc.y - 20 },
  7070.  
  7071. { x = sc.x + 10, y = sc.y - 20 },
  7072.  
  7073. { x = sc.x, y = sc.y },
  7074.  
  7075. }
  7076.  
  7077. surface.DrawPoly( triangle )
  7078.  
  7079.  
  7080.  
  7081. end
  7082.  
  7083.  
  7084.  
  7085. if AB.Vars.KeypadJew then
  7086.  
  7087.  
  7088.  
  7089. local e = me:GetEyeTrace().Entity
  7090.  
  7091. if IsValid(e) and string.find( e:GetClass(), "Keypad") then
  7092.  
  7093. local text;
  7094.  
  7095. local color;
  7096.  
  7097. if(e.code && e.code != "") then
  7098.  
  7099. text = e.code;
  7100.  
  7101. color = Color( 105, 255, 105, 150 )
  7102.  
  7103. elseif(e.tempCode && e.tempCode != "") then
  7104.  
  7105. text = e.tempCode;
  7106.  
  7107. color = Color( 250, 150, 150, 150 )
  7108.  
  7109. else
  7110.  
  7111. text = "Unknown"
  7112.  
  7113. color = Color(150,150,150,150)
  7114.  
  7115. end
  7116.  
  7117. -- draw.WordBox( 8, ScrW() / 2, ScrH() / 2, text, "Default", color, Color(255,255,255,255) )
  7118.  
  7119.  
  7120.  
  7121. surface.SetDrawColor( Color( 0,0,50, 150 ) )
  7122.  
  7123. surface.SetMaterial( grad )
  7124.  
  7125. surface.DrawTexturedRect( ScrW() / 2 + 57, ScrH() / 2 - 7, 50, 15 )
  7126.  
  7127. draw.SimpleText(text, "DermaDefault", ScrW() / 2 + 60, ScrH() / 2, color, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER)
  7128.  
  7129.  
  7130.  
  7131. end
  7132.  
  7133.  
  7134.  
  7135. for k,v in pairs(ents.GetAll()) do
  7136.  
  7137. if IsValid(v) and string.find( v:GetClass(), "Keypad") then
  7138.  
  7139. if v != e and me:GetPos():Distance( v:GetPos() ) < 8000 then
  7140.  
  7141. local pos = v:GetPos():ToScreen()
  7142.  
  7143. if pos.x > 0 and pos.x < ScrW() and pos.y > 0 and pos.y < ScrH() then
  7144.  
  7145. if (v.code && v.code != "") then
  7146.  
  7147. surface.SetDrawColor( Color( 0,0,50, 150 ) )
  7148.  
  7149. surface.SetMaterial( grad )
  7150.  
  7151. surface.DrawTexturedRect( pos.x, pos.y, 50, 15 )
  7152.  
  7153. draw.SimpleText( v.code, "DermaDefault", pos.x + 5, pos.y + 6, Color( 105, 255, 105, 150 ), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER)
  7154.  
  7155.  
  7156.  
  7157. -- draw.WordBox( 8, pos.x-5, pos.y-5, v.code, "Default", Color( 0, 255, 0, 150 ), Color(255,255,255,255) )
  7158.  
  7159. else
  7160.  
  7161. if(v.tempCode && v.tempCode != "") then
  7162.  
  7163. surface.SetDrawColor( Color( 0,0,50, 150 ) )
  7164.  
  7165. surface.SetMaterial( grad )
  7166.  
  7167. surface.DrawTexturedRect( pos.x, pos.y, 50, 15 )
  7168.  
  7169. draw.SimpleText( v.tempCode, "DermaDefault", pos.x + 5, pos.y + 6, Color( 250, 150, 150, 150 ), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER)
  7170.  
  7171. else
  7172.  
  7173. surface.SetDrawColor( Color( 0,0,50, 150 ) )
  7174.  
  7175. surface.SetMaterial( grad )
  7176.  
  7177. surface.DrawTexturedRect( pos.x, pos.y, 50, 15 )
  7178.  
  7179. draw.SimpleText( "Unknown", "DermaDefault", pos.x + 5, pos.y + 6, Color(150,150,150,150), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER)
  7180.  
  7181. end
  7182.  
  7183. end
  7184.  
  7185. end
  7186.  
  7187. end
  7188.  
  7189. end
  7190.  
  7191. end
  7192.  
  7193.  
  7194.  
  7195. end
  7196.  
  7197.  
  7198.  
  7199.  
  7200.  
  7201. if AB.Vars.Bhop then
  7202.  
  7203. local sped = me:GetVelocity():Length()
  7204.  
  7205. draw.SimpleText("Velocity: "..math.Round( sped ), "DermaDefault", (ScrW() / 2), ScrH() - 60, AB.DefaultScheme, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER )
  7206.  
  7207. surface.SetDrawColor( AB.DefaultScheme )
  7208.  
  7209. surface.DrawOutlinedRect( (ScrW() / 2) - 100, ScrH() - 50, 200, 10 )
  7210.  
  7211. surface.SetDrawColor( Color( AB.DefaultScheme.r, AB.DefaultScheme.g, AB.DefaultScheme.b, 100 ) )
  7212.  
  7213. surface.DrawRect( (ScrW() / 2) - 100, ScrH() - 50, math.Clamp( (sped / 2000) * 200, 0, 200 ), 10 )
  7214.  
  7215. end
  7216.  
  7217.  
  7218.  
  7219.  
  7220.  
  7221. if AB.Vars.WitnessDetector then
  7222.  
  7223.  
  7224.  
  7225. if #AB.Witnesses > 0 then
  7226.  
  7227. surface.SetDrawColor( Color(50, 50, 90, 255) )
  7228.  
  7229. surface.DrawRect( (ScrW() / 2) - 150, 0, 300, (#AB.Witnesses * 20) + 30)
  7230.  
  7231. surface.SetDrawColor( Color(0, 0, 0, 250) )
  7232.  
  7233. surface.DrawRect( (ScrW() / 2) - 145, 25, 290, (#AB.Witnesses * 20) )
  7234.  
  7235. draw.SimpleText("These people can see you", "DermaDefault", (ScrW() / 2) - 63, 10, Color(255, 255, 255, 255), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER)
  7236.  
  7237.  
  7238.  
  7239.  
  7240.  
  7241. for k, v in pairs(AB.Witnesses) do
  7242.  
  7243. if !v:IsValid() then continue end -- let this pass silently, it only spams briefly when some faggot dcs anyway
  7244.  
  7245. draw.SimpleText(v:Nick(), "DermaDefault", (ScrW() / 2) - 140, 8 + (k * 20), AB.GetESPColor( v ) )
  7246.  
  7247. end
  7248.  
  7249.  
  7250.  
  7251. end
  7252.  
  7253. end
  7254.  
  7255.  
  7256.  
  7257. if AB.Vars.SpectatorDetector then
  7258.  
  7259. local starty = 0
  7260.  
  7261. if AB.Vars.WitnessDetector then starty = (#AB.Witnesses * 20) + 35 end
  7262.  
  7263.  
  7264.  
  7265. if AB.TheyHaveEyesEverywhere and #AB.TheyHaveEyesEverywhere > 0 then
  7266.  
  7267. surface.SetDrawColor( Color(50, 50, 90, 255) )
  7268.  
  7269. surface.DrawRect( (ScrW() / 2) - 150, starty, 300, (#AB.TheyHaveEyesEverywhere * 20) + 30)
  7270.  
  7271. surface.SetDrawColor( Color(0, 0, 0, 250) )
  7272.  
  7273. surface.DrawRect( (ScrW() / 2) - 145, starty + 25, 290, (#AB.TheyHaveEyesEverywhere * 20) )
  7274.  
  7275. draw.SimpleText("These people are spectating you", "DermaDefault", (ScrW() / 2) - 63, starty + 10, Color(255, 255, 255, 255), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER)
  7276.  
  7277.  
  7278.  
  7279.  
  7280.  
  7281. for k, v in pairs( AB.TheyHaveEyesEverywhere ) do
  7282.  
  7283. if !v:IsValid() then continue end -- let this pass silently, it only spams briefly when some faggot dcs anyway
  7284.  
  7285. draw.SimpleText(v:Nick(), "DermaDefault", (ScrW() / 2) - 140, starty + 8 + (k * 20), AB.GetESPColor( v ) )
  7286.  
  7287. end
  7288.  
  7289.  
  7290.  
  7291. end
  7292.  
  7293. end
  7294.  
  7295.  
  7296.  
  7297. -- ent scanner
  7298.  
  7299. if AB.EntScanner then
  7300.  
  7301.  
  7302.  
  7303. local c = me:GetEyeTrace()
  7304.  
  7305. local screenpos = c.HitPos:ToScreen()
  7306.  
  7307. local x = screenpos.x
  7308.  
  7309. local y = screenpos.y
  7310.  
  7311. local pulse = math.abs( math.sin( CurTime() * 2 ) )
  7312.  
  7313. surface.SetDrawColor( AB.DefaultScheme )
  7314.  
  7315. surface.SetMaterial( scanmat )
  7316.  
  7317. surface.DrawTexturedRect( x - (15 + (pulse * 15)), y - (15 + (pulse * 15)), 30 + (pulse * 30), 30 + (pulse * 30) )
  7318.  
  7319. surface.SetDrawColor( AB.DefaultScheme2 )
  7320.  
  7321. surface.DrawTexturedRect( x - (12 + (pulse * 12)), y - (12 + (pulse * 12)), 24 + (pulse * 24), 24 + (pulse * 24) )
  7322.  
  7323.  
  7324.  
  7325. if c.Entity and c.Entity:IsValid() then
  7326.  
  7327. AB.EntScannerTab = {}
  7328.  
  7329. local e = c.Entity
  7330.  
  7331. AB.EntScannerEnt = e
  7332.  
  7333.  
  7334.  
  7335. if e:IsPlayer() then
  7336.  
  7337. table.insert( AB.EntScannerTab, e:Nick() )
  7338.  
  7339. table.insert( AB.EntScannerTab, {e:SteamID(), Color(255,255,255)} )
  7340.  
  7341. table.insert( AB.EntScannerTab, {AB.GetRank( e ), Color( 255, 100, 0 )} )
  7342.  
  7343. table.insert( AB.EntScannerTab, "Health: "..e:Health().."% Armor: "..e:Armor().."%" )
  7344.  
  7345. if DarkRP then
  7346.  
  7347. table.insert( AB.EntScannerTab, {DarkRP.formatMoney(e:getDarkRPVar("money")) or "$ERROR", Color( 50, 255, 50)} )
  7348.  
  7349. table.insert( AB.EntScannerTab, {"Real Name: "..e:SteamName(), Color( 150, 150, 150)} )
  7350.  
  7351. end
  7352.  
  7353.  
  7354.  
  7355. if e:GetActiveWeapon() then table.insert( AB.EntScannerTab, "Holding: "..(e:GetActiveWeapon():GetClass() or "None" ) ) end
  7356.  
  7357. local weps = {}
  7358.  
  7359. for _, g in pairs( e:GetWeapons() ) do table.insert( weps, g:GetClass() )end
  7360.  
  7361. table.insert( AB.EntScannerTab, {table.ToString( weps ), Color(155,155,255)} )
  7362.  
  7363. end
  7364.  
  7365. table.insert( AB.EntScannerTab, e:GetClass() )
  7366.  
  7367. table.insert( AB.EntScannerTab, e:GetModel() )
  7368.  
  7369. table.insert( AB.EntScannerTab, "Distance: "..AB.ToMetric(e:GetPos():Distance( me:GetPos() )).."m" )
  7370.  
  7371.  
  7372.  
  7373. end
  7374.  
  7375.  
  7376.  
  7377. local textx, texty = ScrW() / 2 + 50, ScrH() / 2
  7378.  
  7379. for k, v in pairs(AB.EntScannerTab) do
  7380.  
  7381. if istable( v ) then
  7382.  
  7383. draw.SimpleTextOutlined( v[1], "default", textx + 40, (texty - 40) + (k * 12), v[2], 0, 0, 1, Color(0,0,0) )
  7384.  
  7385. else
  7386.  
  7387. draw.SimpleTextOutlined( v, "default", textx + 40, (texty - 40) + (k * 12), AB.DefaultScheme, 0, 0, 1, Color(0,0,0) )
  7388.  
  7389. end
  7390.  
  7391. end
  7392.  
  7393.  
  7394.  
  7395.  
  7396.  
  7397. end
  7398.  
  7399.  
  7400.  
  7401. AB.MemoryDebug["hud"] = gcinfo() - memfootprint
  7402.  
  7403.  
  7404.  
  7405. end
  7406.  
  7407. hook.Add("HUDPaint", "ab_hud", AB.Vision)
  7408.  
  7409.  
  7410.  
  7411.  
  7412.  
  7413.  
  7414.  
  7415.  
  7416.  
  7417. ---------------------------------------------- NEW XRAY HERE -------------------------------------------------
  7418.  
  7419.  
  7420.  
  7421.  
  7422.  
  7423. /*
  7424.  
  7425. if AB.Vars.Xray then
  7426.  
  7427.  
  7428.  
  7429. for k, v in pairs(ents.GetAll()) do
  7430.  
  7431.  
  7432.  
  7433. if AB.ToMetric(me:GetPos():Distance(v:GetPos())) > AB.NumberVars.XrayDistance then if v:GetColor().a == 100 then v:SetColor(Color(255,255,255,255)) end continue end
  7434.  
  7435.  
  7436.  
  7437. -- set rendermode none?
  7438.  
  7439.  
  7440.  
  7441. if AB.Vars.XrayPlayers then
  7442.  
  7443. if v:IsValid() and v:IsPlayer() and v != LocalPlayer() and !AB.IsDead( v ) and AB.OnScreen( v ) then
  7444.  
  7445. cam.Start3D(EyePos(),EyeAngles())
  7446.  
  7447. if AB.Vars.NoChamColours then
  7448.  
  7449. v:SetMaterial(AB.mat1)
  7450.  
  7451. v:SetRenderMode(4)
  7452.  
  7453. v:SetColor(xraytrans)
  7454.  
  7455. render.SuppressEngineLighting( true )
  7456.  
  7457. render.MaterialOverride( AB.mat1 )
  7458.  
  7459. end
  7460.  
  7461. if AB.Vars.PKChams and AB.Vars.NoChamColours then render.SetColorModulation( 0, 1, 0 ) render.SetBlend(0.8) else render.SetColorModulation( AB.ColScheme.x, AB.ColScheme.y, AB.ColScheme.z ) render.SetBlend(0.3) end
  7462.  
  7463. v:DrawModel()
  7464.  
  7465. if IsValid( v:GetActiveWeapon() ) then
  7466.  
  7467. if AB.Vars.NoChamColours then render.SetColorModulation( AB.ColScheme2.x, AB.ColScheme2.y, AB.ColScheme2.z ) end
  7468.  
  7469. v:GetActiveWeapon():DrawModel()
  7470.  
  7471. end
  7472.  
  7473. render.SetBlend(1)
  7474.  
  7475. render.SuppressEngineLighting( false )
  7476.  
  7477. render.MaterialOverride( )
  7478.  
  7479. -- v:SetColor(Color(255,255,255,255))
  7480.  
  7481. cam.End3D()
  7482.  
  7483.  
  7484.  
  7485. end
  7486.  
  7487. end
  7488.  
  7489. if AB.Vars.XrayProps then
  7490.  
  7491. if v:IsValid() and v:GetClass() == "prop_physics" and AB.OnScreen( v ) then
  7492.  
  7493. cam.Start3D(EyePos(),EyeAngles())
  7494.  
  7495. if AB.Vars.NoChamColours then
  7496.  
  7497. v:SetMaterial(AB.mat1)
  7498.  
  7499. v:SetRenderMode(4)
  7500.  
  7501. v:SetColor(xraytrans)
  7502.  
  7503. render.SuppressEngineLighting( true )
  7504.  
  7505. render.MaterialOverride( AB.mat1 )
  7506.  
  7507. end
  7508.  
  7509. if AB.Vars.PKChams and AB.Vars.NoChamColours then render.SetColorModulation( 1, 0.2, 0 ) render.SetBlend(0.6) else render.SetColorModulation( AB.ColScheme2.x, AB.ColScheme2.y, AB.ColScheme2.z ) render.SetBlend(0.3) end
  7510.  
  7511. v:DrawModel()
  7512.  
  7513. render.SetBlend(1)
  7514.  
  7515. render.SuppressEngineLighting( false )
  7516.  
  7517. render.MaterialOverride( )
  7518.  
  7519. -- v:SetColor(Color(255,255,255,255))
  7520.  
  7521. cam.End3D()
  7522.  
  7523. end
  7524.  
  7525. end
  7526.  
  7527.  
  7528.  
  7529.  
  7530.  
  7531. if AB.Vars.XrayEntfinder then
  7532.  
  7533. local drawing = false
  7534.  
  7535.  
  7536.  
  7537. for i,p in pairs(AB.MarkedEnts) do
  7538.  
  7539. if v:GetClass() == p then
  7540.  
  7541. drawing = true
  7542.  
  7543. end
  7544.  
  7545. end
  7546.  
  7547.  
  7548.  
  7549. if drawing and AB.OnScreen( v ) then
  7550.  
  7551. cam.Start3D(EyePos(),EyeAngles())
  7552.  
  7553. v:SetMaterial(AB.mat1)
  7554.  
  7555. v:SetRenderMode(4)
  7556.  
  7557. v:SetColor(xraytrans)
  7558.  
  7559. render.SuppressEngineLighting( true )
  7560.  
  7561. render.MaterialOverride( AB.mat1 )
  7562.  
  7563. render.SetColorModulation( AB.ColScheme2.x, AB.ColScheme2.y, AB.ColScheme2.z )
  7564.  
  7565. render.SetBlend(0.3)
  7566.  
  7567. v:DrawModel()
  7568.  
  7569. render.SetBlend(1)
  7570.  
  7571. render.SuppressEngineLighting( false )
  7572.  
  7573. render.MaterialOverride( )
  7574.  
  7575. -- v:SetColor(Color(255,255,255,255))
  7576.  
  7577. cam.End3D()
  7578.  
  7579. end
  7580.  
  7581.  
  7582.  
  7583. end
  7584.  
  7585.  
  7586.  
  7587.  
  7588.  
  7589.  
  7590.  
  7591. end
  7592.  
  7593. end
  7594.  
  7595. */
  7596.  
  7597.  
  7598.  
  7599.  
  7600.  
  7601. function AB.DrawXrayEntity( ent, col, domat, ghost )
  7602.  
  7603. cam.Start3D( EyePos(), EyeAngles() )
  7604.  
  7605. cam.IgnoreZ( true )
  7606.  
  7607. if domat then render.MaterialOverride( AB.Mat1 ) end
  7608.  
  7609. render.SuppressEngineLighting( true )
  7610.  
  7611. render.SetColorModulation( col.r / 255, col.g / 255, col.b / 255 )
  7612.  
  7613. if ghost then render.SetBlend( 0.3 ) end
  7614.  
  7615. ent:DrawModel()
  7616.  
  7617. render.SuppressEngineLighting( false )
  7618.  
  7619. cam.IgnoreZ( false )
  7620.  
  7621. render.MaterialOverride()
  7622.  
  7623. cam.End3D()
  7624.  
  7625. end
  7626.  
  7627.  
  7628.  
  7629.  
  7630.  
  7631. function AB.DoXray()
  7632.  
  7633. local me = LocalPlayer()
  7634.  
  7635. if !me or !me:IsValid() or !AB.Vars.Xray then return end
  7636.  
  7637.  
  7638.  
  7639. local fags = ents.GetAll()
  7640.  
  7641. -- table.sort( fags, function( a, b ) return a:GetPos():DistToSqr( EyePos() ) > b:GetPos():DistToSqr( EyePos() ) end )
  7642.  
  7643.  
  7644.  
  7645. for k, v in ipairs( fags ) do
  7646.  
  7647. if !AB.OnScreen( v, 50 ) or AB.ToMetric( me:GetPos():Distance( v:GetPos() ) ) > AB.NumberVars.XrayDistance then continue end
  7648.  
  7649.  
  7650.  
  7651. -- players loop
  7652.  
  7653. if AB.Vars.XrayPlayers and v:IsPlayer() then
  7654.  
  7655. if v == LocalPlayer() or !v:Alive() then continue end
  7656.  
  7657. local teamcol, teamcol2
  7658.  
  7659. if AB.Vars.TeamColors then
  7660.  
  7661. teamcol = team.GetColor(v:Team())
  7662.  
  7663. teamcol2 = Color(math.Clamp(teamcol.r - 100, 0, 255), math.Clamp(teamcol.g - 100, 0, 255), math.Clamp(teamcol.b - 100, 0, 255), 255)
  7664.  
  7665. elseif AB.Vars.PKChams then
  7666.  
  7667. teamcol = Color( 0, 255, 0 ) teamcol2 = Color( 255, 0, 0 )
  7668.  
  7669. else
  7670.  
  7671. teamcol = AB.DefaultScheme teamcol2 = AB.DefaultScheme2
  7672.  
  7673. end
  7674.  
  7675.  
  7676.  
  7677. AB.DrawXrayEntity( v, teamcol, AB.Vars.NoChamColours, !AB.Vars.XraySolid )
  7678.  
  7679.  
  7680.  
  7681. local gun = v:GetActiveWeapon()
  7682.  
  7683. if gun and gun:IsValid() then AB.DrawXrayEntity( gun, teamcol2, AB.Vars.NoChamColours, !AB.Vars.XraySolid ) end
  7684.  
  7685. end
  7686.  
  7687.  
  7688.  
  7689. -- props loop
  7690.  
  7691. if AB.Vars.XrayProps and v:GetClass() == "prop_physics" then
  7692.  
  7693. local teamcol, teamcol2
  7694.  
  7695. if AB.Vars.PKChams then
  7696.  
  7697. teamcol = Color( 0, 255, 0 ) teamcol2 = Color( 255, 0, 0 )
  7698.  
  7699. else
  7700.  
  7701. teamcol = AB.DefaultScheme teamcol2 = AB.DefaultScheme2
  7702.  
  7703. end
  7704.  
  7705. AB.DrawXrayEntity( v, teamcol2, AB.Vars.NoChamColours, true )
  7706.  
  7707. end
  7708.  
  7709.  
  7710.  
  7711. -- ents loop
  7712.  
  7713. if AB.Vars.XrayEntfinder and table.HasValue( AB.MarkedEnts, v:GetClass() ) then
  7714.  
  7715. local teamcol, teamcol2
  7716.  
  7717. if AB.Vars.PKChams then
  7718.  
  7719. teamcol = Color( 255, 255, 0 ) teamcol2 = Color( 255, 255, 0 )
  7720.  
  7721. else
  7722.  
  7723. teamcol = AB.DefaultScheme teamcol2 = AB.DefaultScheme2
  7724.  
  7725. end
  7726.  
  7727. AB.DrawXrayEntity( v, teamcol, AB.Vars.NoChamColours, true )
  7728.  
  7729. end
  7730.  
  7731.  
  7732.  
  7733. end
  7734.  
  7735. end
  7736.  
  7737.  
  7738.  
  7739. hook.Add( "PreDrawHUD", "AB_NewXray", AB.DoXray )
  7740.  
  7741.  
  7742.  
  7743.  
  7744.  
  7745.  
  7746.  
  7747.  
  7748.  
  7749.  
  7750.  
  7751.  
  7752.  
  7753. function AB.PKBeamsCore()
  7754.  
  7755. if AB.Vars.PKVerticalBeams then
  7756.  
  7757. render.SetMaterial( beammat )
  7758.  
  7759. for k, v in pairs( player.GetAll()) do
  7760.  
  7761. if !v:Alive() or v == LocalPlayer() then continue end
  7762.  
  7763. render.DrawBeam( v:GetPos() + Vector( 0, 0, -2000 ), v:GetPos() + Vector( 0, 0, 2000 ), 50, 0, 1, Color(255,255,255) )
  7764.  
  7765. end
  7766.  
  7767. end
  7768.  
  7769. end
  7770.  
  7771. hook.Add("PostDrawTranslucentRenderables", "ab_beams", AB.PKBeamsCore)
  7772.  
  7773.  
  7774.  
  7775.  
  7776.  
  7777. function AB.ToggleEntityScanner()
  7778.  
  7779. if !AB.EntScanner then
  7780.  
  7781. AB.EntScanner = true
  7782.  
  7783. AB.ScannerButton1 = AB.MakeFloatingButton( ScrW() / 2 - 180, (ScrH() / 2) - 50, "Copy to Console", function() print(AB.EntScannerEnt)
  7784.  
  7785. for k, v in pairs( AB.EntScannerTab ) do
  7786.  
  7787. if istable( v ) then MsgC( v[2], v[1].."\n" ) else MsgN( v ) end
  7788.  
  7789. end
  7790.  
  7791. end)
  7792.  
  7793.  
  7794.  
  7795. AB.ScannerButton2 = AB.MakeFloatingButton( ScrW() / 2 - 180, (ScrH() / 2) - 20, "Add class to ESP", function()
  7796.  
  7797. if table.HasValue( AB.MarkedEnts, AB.EntScannerEnt:GetClass() ) then AB.ChatText( "Already marked!", Color(255,205,205) ) return end
  7798.  
  7799. AB.ChatText( "Added "..AB.EntScannerEnt:GetClass().." to marked ent classes", Color(255,255,255) )
  7800.  
  7801. table.insert(AB.MarkedEnts, AB.EntScannerEnt:GetClass())
  7802.  
  7803. end)
  7804.  
  7805.  
  7806.  
  7807. AB.ChatText( "Enabled Entity Scanner", Color(255,255,255) )
  7808.  
  7809. else
  7810.  
  7811. AB.EntScanner = false
  7812.  
  7813. AB.ChatText( "Disabled Entity Scanner", Color(255,205,205) )
  7814.  
  7815. if AB.ScannerButton1 then AB.ScannerButton1:Remove() end
  7816.  
  7817. if AB.ScannerButton2 then AB.ScannerButton2:Remove() end
  7818.  
  7819. end
  7820.  
  7821. end
  7822.  
  7823.  
  7824.  
  7825. AB.MouseReleased = false
  7826.  
  7827. function AB.ToggleFreeMouse()
  7828.  
  7829. if !AB.MouseReleased then
  7830.  
  7831. gui.EnableScreenClicker( true )
  7832.  
  7833. AB.MouseReleased = true
  7834.  
  7835. else
  7836.  
  7837. gui.EnableScreenClicker( false )
  7838.  
  7839. AB.MouseReleased = false
  7840.  
  7841. end
  7842.  
  7843. end
  7844.  
  7845. concommand.Add("ace_toggle_mouse_cursor", AB.ToggleFreeMouse)
  7846.  
  7847.  
  7848.  
  7849. function AB.CalcView( ply, pos, angles, fov )
  7850.  
  7851. local me = LocalPlayer()
  7852.  
  7853. if !me:IsValid() or !me:Alive() or me:GetViewEntity() != me or me:InVehicle() then return end
  7854.  
  7855.  
  7856.  
  7857. local tps = {}
  7858.  
  7859.  
  7860.  
  7861. if AB.Vars.SilentAim and !AB.Vars.Thirdperson and lastoldang and isangle( lastoldang ) then
  7862.  
  7863. tps.origin = me:EyePos()
  7864.  
  7865. tps.angles = lastoldang
  7866.  
  7867. tps.fov = fov
  7868.  
  7869. return tps
  7870.  
  7871. end
  7872.  
  7873.  
  7874.  
  7875. if AB.Vars.NoRecoil and !AB.Vars.Thirdperson then
  7876.  
  7877. -- tps.origin = me:EyePos()
  7878.  
  7879. tps.angles = me:EyeAngles()
  7880.  
  7881. -- tps.fov = fov
  7882.  
  7883. return tps
  7884.  
  7885. end
  7886.  
  7887.  
  7888.  
  7889. if AB.Vars.Thirdperson then
  7890.  
  7891. if AB.RenderPanic then return end
  7892.  
  7893. local trace = util.TraceLine( { start = pos - ply:GetForward() * 2, endpos = pos - angles:Forward() * AB.NumberVars.TPSDistance, filter = player.GetAll(), mask = MASK_SHOT } )
  7894.  
  7895. tps.origin = trace.HitPos + ply:GetForward() * 20 + ply:GetRight() * AB.NumberVars.TPSOffset
  7896.  
  7897. tps.angles = angles
  7898.  
  7899. tps.fov = fov
  7900.  
  7901. return tps
  7902.  
  7903. end
  7904.  
  7905.  
  7906.  
  7907. end
  7908.  
  7909. hook.Add("CalcView", "ab_calcview", AB.CalcView)
  7910.  
  7911.  
  7912.  
  7913.  
  7914.  
  7915. function AB.ICanSeeMyAss( ply )
  7916.  
  7917. if AB.Vars.Thirdperson then return true end
  7918.  
  7919. return false
  7920.  
  7921. end
  7922.  
  7923. hook.Add("ShouldDrawLocalPlayer", "ab_drawplayer", AB.ICanSeeMyAss)
  7924.  
  7925.  
  7926.  
  7927. -- it would be very wise to keep this disabled for now
  7928.  
  7929. /*
  7930.  
  7931. function AB.Transparency()
  7932.  
  7933. if AB.Vars.XrayProps then
  7934.  
  7935. for k, v in pairs(ents.GetAll()) do
  7936.  
  7937. render.SuppressEngineLighting( true )
  7938.  
  7939. end
  7940.  
  7941. end
  7942.  
  7943. end
  7944.  
  7945.  
  7946.  
  7947. hook.Add("RenderScene", "ab_transparency", AB.Transparency)
  7948.  
  7949. */
  7950.  
  7951.  
  7952.  
  7953. function AB.CheckWitnesses()
  7954.  
  7955. if !AB.Vars.WitnessDetector then return end
  7956.  
  7957. AB.Witnesses = {}
  7958.  
  7959. for k, v in pairs(player.GetAll()) do
  7960.  
  7961. if v:IsValid() and v != LocalPlayer() then
  7962.  
  7963. local Trace = {}
  7964.  
  7965. Trace.start = LocalPlayer():EyePos() + Vector(0, 0, 32)
  7966.  
  7967. Trace.endpos = v:EyePos() + Vector(0, 0, 32)
  7968.  
  7969. Trace.filter = {v, LocalPlayer()}
  7970.  
  7971.  
  7972.  
  7973. TraceRes = util.TraceLine(Trace)
  7974.  
  7975.  
  7976.  
  7977. if !TraceRes.Hit then
  7978.  
  7979. if (v:EyeAngles():Forward():Dot((LocalPlayer():EyePos() - v:EyePos())) > math.cos(math.rad(45))) then
  7980.  
  7981. if !table.HasValue(AB.Witnesses, v) then table.insert( AB.Witnesses, v ) end
  7982.  
  7983. end
  7984.  
  7985. end
  7986.  
  7987.  
  7988.  
  7989. end
  7990.  
  7991. end
  7992.  
  7993. end
  7994.  
  7995. timer.Create("ab_WitnessCheck", 0.5, 0, AB.CheckWitnesses)
  7996.  
  7997.  
  7998.  
  7999. local nxtscan = CurTime()
  8000.  
  8001. function AB.ScanForTraitors()
  8002.  
  8003. if nxtscan > CurTime() then return end
  8004.  
  8005. /*
  8006.  
  8007. for _, ply in pairs(player.GetAll()) do
  8008.  
  8009. if ply == LocalPlayer() then continue end
  8010.  
  8011. if ply:GetRole() == ROLE_DETECTIVE then continue end
  8012.  
  8013. if !ply:GetActiveWeapon() or !ply:GetActiveWeapon():IsValid() then continue end
  8014.  
  8015.  
  8016.  
  8017. if ply:GetActiveWeapon().CanBuy and table.HasValue( ply:GetActiveWeapon().CanBuy, ROLE_TRAITOR ) and !table.HasValue( AB.Traitors, ply ) then
  8018.  
  8019. table.insert( AB.Traitors, ply )
  8020.  
  8021. surface.PlaySound("buttons/bell1.wav")
  8022.  
  8023. AB.ChatText( ply:Nick().." is a filthy nasty traitor!", Color(255,100,0) )
  8024.  
  8025. end
  8026.  
  8027.  
  8028.  
  8029. end
  8030.  
  8031. */
  8032.  
  8033. nxtscan = CurTime() + 0.5
  8034.  
  8035.  
  8036.  
  8037. for _,v in pairs(ents.GetAll()) do
  8038.  
  8039. if GetRoundState() == 3 and v:IsWeapon() and type(v:GetOwner()) == "Player" and v.Buyer == nil and v.CanBuy and table.HasValue(v.CanBuy, 1) and !table.HasValue(AB.Traitors, v:GetOwner()) then
  8040.  
  8041. local owner = v:GetOwner()
  8042.  
  8043. if !owner:IsValid() then continue end
  8044.  
  8045. if owner:GetRole() == 2 then
  8046.  
  8047. v.Buyer = owner
  8048.  
  8049. else
  8050.  
  8051. table.insert(AB.Traitors, owner)
  8052.  
  8053. AB.ChatText( ply:Nick().." is a filthy nasty traitor! He bought a: "..v:GetClass(), Color(255,100,0) )
  8054.  
  8055. end
  8056.  
  8057. elseif GetRoundState() != 3 then
  8058.  
  8059. AB.Traitors = {}
  8060.  
  8061. end
  8062.  
  8063. end
  8064.  
  8065.  
  8066.  
  8067. end
  8068.  
  8069.  
  8070.  
  8071. function AB.ClearTraitors()
  8072.  
  8073. AB.Traitors = {}
  8074.  
  8075. end
  8076.  
  8077.  
  8078.  
  8079.  
  8080.  
  8081.  
  8082.  
  8083.  
  8084.  
  8085.  
  8086.  
  8087. function AB.ChokePackets( val )
  8088.  
  8089. if val then
  8090.  
  8091. odium.engine.SetChokedPacket( 0 )
  8092.  
  8093. end
  8094.  
  8095.  
  8096.  
  8097. end
  8098.  
  8099.  
  8100.  
  8101.  
  8102.  
  8103.  
  8104.  
  8105.  
  8106.  
  8107.  
  8108.  
  8109.  
  8110.  
  8111.  
  8112.  
  8113. function AB.XrayShutoff()
  8114.  
  8115. for k, v in pairs(ents.GetAll()) do
  8116.  
  8117. v:SetColor(Color(255,255,255,255))
  8118.  
  8119. end
  8120.  
  8121. end
  8122.  
  8123.  
  8124.  
  8125. AB.IsTTT = false
  8126.  
  8127.  
  8128.  
  8129. local demotereasons = {
  8130.  
  8131. "Nigger",
  8132.  
  8133. "Faggot",
  8134.  
  8135. "Dickhead",
  8136.  
  8137. "Cuckold",
  8138.  
  8139. "RDM",
  8140.  
  8141. "Shit eating faggot",
  8142.  
  8143. "RDA",
  8144.  
  8145. "NLR",
  8146.  
  8147. "Fucking sped",
  8148.  
  8149. "kys",
  8150.  
  8151. "Shit server tbh fam",
  8152.  
  8153. "Bad scripts",
  8154.  
  8155. "Skid",
  8156.  
  8157. "Admin abuse",
  8158.  
  8159. "Abusing",
  8160.  
  8161. "Fuckwit",
  8162.  
  8163. "DarkRP Player",
  8164.  
  8165. }
  8166.  
  8167.  
  8168.  
  8169.  
  8170.  
  8171.  
  8172.  
  8173. ------------------------------------------------------------------------INSULT GENERATOR--------------------------------------------------------------------------------------
  8174.  
  8175.  
  8176.  
  8177.  
  8178.  
  8179.  
  8180.  
  8181. local openers = {
  8182.  
  8183. "get fucked",
  8184.  
  8185. "eat shit",
  8186.  
  8187. "fuck a baboon",
  8188.  
  8189. "suck my dingleberries",
  8190.  
  8191. "choke on steaming cum",
  8192.  
  8193. "die in a fire",
  8194.  
  8195. "gas yourself",
  8196.  
  8197. "sit on garden shears",
  8198.  
  8199. "choke on scrotum",
  8200.  
  8201. "shove a brick up your ass",
  8202.  
  8203. "swallow barbed wire",
  8204.  
  8205. "move to sweden",
  8206.  
  8207. "fuck a pig",
  8208.  
  8209. "bow to me",
  8210.  
  8211. "suck my ball sweat",
  8212.  
  8213. "come back when you aren't garbage",
  8214.  
  8215. "i will piss on everything you love",
  8216.  
  8217. "kill yourself",
  8218.  
  8219. "livestream suicide",
  8220.  
  8221. "neck yourself",
  8222.  
  8223. "go be black somewhere else",
  8224.  
  8225. "rotate on it",
  8226.  
  8227. "choke on it",
  8228.  
  8229. "blow it out your ass",
  8230.  
  8231. "go browse tumblr",
  8232.  
  8233. "go back to darkrp",
  8234.  
  8235. "sit on horse cock",
  8236.  
  8237. "drive off a cliff",
  8238.  
  8239. "rape yourself",
  8240.  
  8241. "get raped by niggers",
  8242.  
  8243. "fuck right off",
  8244.  
  8245. "you mother is a whore",
  8246.  
  8247. "come at me",
  8248.  
  8249. "go work the corner",
  8250.  
  8251. -- "you are literal cancer",
  8252.  
  8253. "why haven't you killed yourself yet",
  8254.  
  8255. "why do you even exist",
  8256.  
  8257. "shoot your balls off with a shotgun",
  8258.  
  8259. "sterilize yourself",
  8260.  
  8261. "convert to islam",
  8262.  
  8263. "drink bleach",
  8264.  
  8265. "remove yourself",
  8266.  
  8267. "choke on whale cock",
  8268.  
  8269. "suck shit",
  8270.  
  8271. "suck a cock",
  8272.  
  8273. "lick my sphincter",
  8274.  
  8275. "set yourself on fire",
  8276.  
  8277. "drink jenkem",
  8278.  
  8279. "get beaten to death by your dad",
  8280.  
  8281. "choke on your uncle's cock",
  8282.  
  8283. "get sat on by a 200kg feminist",
  8284.  
  8285. "blow off",
  8286.  
  8287. "join isis",
  8288.  
  8289. "stick your cock in a blender",
  8290.  
  8291. "OD yourself on meth",
  8292.  
  8293. "lie under a truck",
  8294.  
  8295. "lick a wall socket",
  8296.  
  8297. "swallow hot coals",
  8298.  
  8299. "die slowly",
  8300.  
  8301. "explode yourself",
  8302.  
  8303. "swing from the noose",
  8304.  
  8305. "end yourself",
  8306.  
  8307. "take your best shot",
  8308.  
  8309. "get shot in a gay bar",
  8310.  
  8311. "drink pozzed cum",
  8312.  
  8313. "marry a muslim",
  8314.  
  8315. "get a better cheat",
  8316.  
  8317. "rub your dick on a cheese grater",
  8318.  
  8319. "wrap a rake with barbed wire and sodomize yourself",
  8320.  
  8321. "close your gaping cunt",
  8322.  
  8323. }
  8324.  
  8325.  
  8326.  
  8327. local joiners = {
  8328.  
  8329. "cancer infested",
  8330.  
  8331. "cock sucking",
  8332.  
  8333. "fuck faced",
  8334.  
  8335. "cunt eyed",
  8336.  
  8337. "nigger fucking",
  8338.  
  8339. "candy ass",
  8340.  
  8341. "fairy ass fucking",
  8342.  
  8343. "shit licking",
  8344.  
  8345. "unlovable",
  8346.  
  8347. "disgusting",
  8348.  
  8349. "degenerate",
  8350.  
  8351. "fuck headed",
  8352.  
  8353. "dick lipped",
  8354.  
  8355. "autismal",
  8356.  
  8357. "gook eyed",
  8358.  
  8359. "mongoloided",
  8360.  
  8361. "cunt faced",
  8362.  
  8363. "dick fisted",
  8364.  
  8365. "worthless",
  8366.  
  8367. "bleeding cunted",
  8368.  
  8369. "hillary loving",
  8370.  
  8371. "maggot infested",
  8372.  
  8373. "boot lipped",
  8374.  
  8375. "chink eyed",
  8376.  
  8377. "shit skinned",
  8378.  
  8379. "nigger headed",
  8380.  
  8381. "lgbt supporting",
  8382.  
  8383. "cum stained",
  8384.  
  8385. }
  8386.  
  8387.  
  8388.  
  8389. local enders = {
  8390.  
  8391. "fuck face",
  8392.  
  8393. "poofter",
  8394.  
  8395. "jew cunt",
  8396.  
  8397. "fagmaster",
  8398.  
  8399. "goat rapist",
  8400.  
  8401. "rag head",
  8402.  
  8403. "cock cheese",
  8404.  
  8405. "vaginaphobe",
  8406.  
  8407. "coon",
  8408.  
  8409. "nigger",
  8410.  
  8411. "slag cunt",
  8412.  
  8413. "garbage man",
  8414.  
  8415. "paeodophile",
  8416.  
  8417. "kiddy toucher",
  8418.  
  8419. "pony fucker",
  8420.  
  8421. "tumblrite",
  8422.  
  8423. "sperglord",
  8424.  
  8425. "gorilla's dick",
  8426.  
  8427. "shit licker",
  8428.  
  8429. "shit slick",
  8430.  
  8431. "redditor",
  8432.  
  8433. "pig fucker",
  8434.  
  8435. "spastic",
  8436.  
  8437. "cuckold",
  8438.  
  8439. "chode gobbler",
  8440.  
  8441. "fuckwit",
  8442.  
  8443. "retard",
  8444.  
  8445. "mongoloid",
  8446.  
  8447. "elephants cunt",
  8448.  
  8449. "cunt",
  8450.  
  8451. "gook",
  8452.  
  8453. "fag lord",
  8454.  
  8455. "shit stain",
  8456.  
  8457. "mpgh skid",
  8458.  
  8459. "batch coder",
  8460.  
  8461. "pony fucker",
  8462.  
  8463. "furfag",
  8464.  
  8465. "half caste",
  8466.  
  8467. "double nigger",
  8468.  
  8469. "cock socket",
  8470.  
  8471. "cunt rag",
  8472.  
  8473. "anal wart",
  8474.  
  8475. "maggot",
  8476.  
  8477. "knob polisher",
  8478.  
  8479. "fudge packer",
  8480.  
  8481. "cock slave",
  8482.  
  8483. "trashmaster",
  8484.  
  8485. "shitskin",
  8486.  
  8487. "curry muncher",
  8488.  
  8489. "gator bait",
  8490.  
  8491. "bootlip",
  8492.  
  8493. "camel jockey",
  8494.  
  8495. "wog cunt",
  8496.  
  8497. "hooknosed kike",
  8498.  
  8499. "feminist",
  8500.  
  8501. "wop cunt",
  8502.  
  8503. "abbo",
  8504.  
  8505. "porch monkey",
  8506.  
  8507. "dago",
  8508.  
  8509. "anal secretion",
  8510.  
  8511. "pig cunt",
  8512.  
  8513. "insect",
  8514.  
  8515. "sub human",
  8516.  
  8517. "mental defect",
  8518.  
  8519. "fat whore",
  8520.  
  8521. "cunt blood",
  8522.  
  8523. "cunt rag",
  8524.  
  8525. "cotton picker",
  8526.  
  8527. "bum tickling fag",
  8528.  
  8529. "degenerate faggot",
  8530.  
  8531. "smegma lump",
  8532.  
  8533. "darkie",
  8534.  
  8535. "fuck toy",
  8536.  
  8537. "underage midget cunt",
  8538.  
  8539. "twelvie",
  8540.  
  8541. "faggot teenager",
  8542.  
  8543. "ankle biter",
  8544.  
  8545. "fat cunt american",
  8546.  
  8547. "bernie loving washout",
  8548.  
  8549. "fucking failure",
  8550.  
  8551. "cum dumpster",
  8552.  
  8553. "waste of skin",
  8554.  
  8555. "petrol sniffing coon",
  8556.  
  8557. "jenkem bottle",
  8558.  
  8559. "dirty jew",
  8560.  
  8561. "darkrp admin",
  8562.  
  8563. "cuck master",
  8564.  
  8565. "barrel of piss",
  8566.  
  8567. "tankard of shit",
  8568.  
  8569. "cock wart",
  8570.  
  8571. }
  8572.  
  8573.  
  8574.  
  8575. local adminstarts = {
  8576.  
  8577. "How much did you pay for that staff rank",
  8578.  
  8579. "Nice server you got here",
  8580.  
  8581. "How much did that gay ULX rank cost",
  8582.  
  8583. "I'll be back to shit on you again",
  8584.  
  8585. "This is only my first alt account",
  8586.  
  8587. "What autist gave you a staff rank",
  8588.  
  8589. "Banning me only makes my cock harder",
  8590.  
  8591. "I'll be back on a new account in 10 minutes",
  8592.  
  8593. "Your server deserves to be destroyed",
  8594.  
  8595. "It's been fun wrecking this shit hole",
  8596.  
  8597. "Stop touching me with your physgun",
  8598.  
  8599. "Letting you have admin was a mistake",
  8600.  
  8601. "Do what you must, I have already won",
  8602.  
  8603. "Bans mean nothing to me",
  8604.  
  8605. "You should appreciate me showing you how to break your terrible server security",
  8606.  
  8607. "I hunt down faggots like you for sport",
  8608.  
  8609. "I am better than you in every single way",
  8610.  
  8611. "I bypassed your anticheat and I'll bypass your ban too",
  8612.  
  8613. "Only power mad midget cucks become staff on darkrp",
  8614.  
  8615. "Lmao another bad server ruined",
  8616.  
  8617. "Watch me rejoin on a VPN",
  8618.  
  8619. }
  8620.  
  8621.  
  8622.  
  8623. -- i gave myself terminal autism writing these
  8624.  
  8625. local cancerstrike = {
  8626.  
  8627. "LOL fuk u silver scUm",
  8628.  
  8629. "nice aim doEs It cume in NOT N00be?",
  8630.  
  8631. "u r terible my doode",
  8632.  
  8633. "u almost hit me that time LOL",
  8634.  
  8635. "ur aim iz a joke my man",
  8636.  
  8637. "get shrekt skrub xdddd",
  8638.  
  8639. "u just got shitted on kidddd",
  8640.  
  8641. "i bet u r silver on csgo xD",
  8642.  
  8643. "u never stood a chance against my pSkillz",
  8644.  
  8645. "ur just 2bad to kill me :^(",
  8646.  
  8647. "dam im good",
  8648.  
  8649. "u wil never beat odium hax kidd :^)",
  8650.  
  8651. "eat shit and die xdd",
  8652.  
  8653. "do u use xashpass cos ur 2 bad to bypass cac :D",
  8654.  
  8655. "i laugh at ur shit skillz :D",
  8656.  
  8657. "get fukn owned kid xd",
  8658.  
  8659. "i kill u every time u shud try harder :^(",
  8660.  
  8661. "all u can do is die LOL",
  8662.  
  8663. "N00bez like u cant beat me LOL",
  8664.  
  8665. "u tried but im jus 2 gud 4 u",
  8666.  
  8667. "u cant even hit me LOL uninstall kid xd",
  8668.  
  8669. "git GUD skrub u r an embarasment",
  8670.  
  8671. "pathetic LOL",
  8672.  
  8673. "2 bad so sad u just bad :^(",
  8674.  
  8675. "im global elit in gmod xd",
  8676.  
  8677. "thx 4 free kill loser :D",
  8678.  
  8679. "r u even trying???",
  8680.  
  8681. "top kekt u got rekt",
  8682.  
  8683. "fuken smashed kunt :D",
  8684.  
  8685. "u shud add me so i can teach u how 2 shoot LOL",
  8686.  
  8687. "ur jus 2 weak and sad to beat me xd",
  8688.  
  8689. "looks liek ur sad life isnt working out 2 well 4 u :D",
  8690.  
  8691. "dats all u got??? LOL!",
  8692.  
  8693. }
  8694.  
  8695.  
  8696.  
  8697. local supercancerstrike = {
  8698.  
  8699. "dont upsetti hav some spagetti",
  8700.  
  8701. "eat my asse like a bufet (3 corse meal xd)",
  8702.  
  8703. "i ownt u in ur gay butth0le",
  8704.  
  8705. "umade noobe?",
  8706.  
  8707. "le troled hard",
  8708.  
  8709. "go wach naturo and play wif urself fag REKT",
  8710.  
  8711. "LOL i fuckd u so hard just like ur mum lst nit fag",
  8712.  
  8713. "u play liek a blynd stefen hawkin haha",
  8714.  
  8715. "ARE U GUEYS NEW??",
  8716.  
  8717. "are u as bad at life as u are in gmod??",
  8718.  
  8719. "omg this is 2 ezy are U even trying??",
  8720.  
  8721. "why dont u go play halo an fist ur butthol faget",
  8722.  
  8723. "hey granma is that u???? LOL so bad",
  8724.  
  8725. "time for you 2 uninstale the game shit stane",
  8726.  
  8727. "congrtulations ur the worlds worst gmod player",
  8728.  
  8729. "dose ur aim come in NOT NOOBE? LMAO",
  8730.  
  8731. "lol i troled u so hard *OWNED*",
  8732.  
  8733. "\"i lik 2 eat daddys logs of poo for lucnh while jackn off 2 naturo\"- u",
  8734.  
  8735. "take a se4t faget $hitstain u got OWNDE",
  8736.  
  8737. "LOL scrub ur gettin rekt hardcroe",
  8738.  
  8739. "R u mad becouse ur bad nooby?",
  8740.  
  8741. "LMAO did u go to da buthurt king an g3t urself a butthurt with fries?!?",
  8742.  
  8743. "why dont u go and play manoppoly you noob",
  8744.  
  8745. "you hav no lyfe you cant evan play gmod propaly",
  8746.  
  8747. "im hi rite now on ganj but im stil ownen u xD",
  8748.  
  8749. "if u want my cum bake ask ur mum LOL",
  8750.  
  8751. "butdocter prognoses: OWND",
  8752.  
  8753. "cry 2 ur dads dick forver noob",
  8754.  
  8755. "lol troled autismal faget",
  8756.  
  8757. "LOL N3RD owned",
  8758.  
  8759. "\"i love to drink sprems all day\"- u",
  8760.  
  8761. "crushd nerd do u want a baindaid for that LOL",
  8762.  
  8763. "lol rectal rekage ur so sh1t lol",
  8764.  
  8765. "ass states - [_] NOT REKT [X] REKT",
  8766.  
  8767. "lmao do u even try????",
  8768.  
  8769. "are u slippan off ur chaire cos ur ass is bleeding so hard??",
  8770.  
  8771. "u better get a towel for all ur tears faget",
  8772.  
  8773. "u got ass asassenated by me rofl",
  8774.  
  8775. "u wont shit agen thats how rekt ur ass is",
  8776.  
  8777. "i bet youre anus is sore from me ownen u LOL",
  8778.  
  8779. "im gonna record a fragshow so i can watch me pwn u ova and ova LMAO",
  8780.  
  8781. "i almost feel sorry for you hahahaha",
  8782.  
  8783. "lol why dont u play COD so i can own you there too",
  8784.  
  8785. "how dose it feel to be owneded so hartd??",
  8786.  
  8787. "rekt u lol another one for the fraghsow",
  8788.  
  8789. "if i was as bade as u i would kil myself",
  8790.  
  8791. "dont fell bad not ervry one can be goode",
  8792.  
  8793. "do u need some loob for ur butt so it doesnt hurt so much when i fuck u",
  8794.  
  8795. "spesciall delivary for CAPTEN BUTTHURT",
  8796.  
  8797. "wats wrong cant play wif ur dads dik in ur mouth????",
  8798.  
  8799. "maybe if u put down the cheseburgers u could kill me lol fat nerd",
  8800.  
  8801. "getting mad u virgan nerd??",
  8802.  
  8803. "butt docta prognosis: buttfustrated",
  8804.  
  8805. "<<< OWEND U >>>",
  8806.  
  8807. "if u were a fish you wuld be a sperm whael LOL",
  8808.  
  8809. ">mfw i ownd u",
  8810.  
  8811. "rekt u noob *OWNED*",
  8812.  
  8813. "ur gonna have 2 wear dipers now cos ur ass got SHREDED by me",
  8814.  
  8815. "y dont u take a short strole to the fagot store and buy some skills scrub",
  8816.  
  8817. "school3d by a 13yo lol u r rely bad",
  8818.  
  8819. "ur pathetic nerd its like u have parkensons",
  8820.  
  8821. "u just got promoted 2 cumcaptain prestige",
  8822.  
  8823. "lol pwnd",
  8824.  
  8825. "u just got butt raped lol TROLLED U",
  8826.  
  8827. "did u learn 2 aim from stevie wondar??? LOL",
  8828.  
  8829. "tell ur mum to hand the keyboard and mosue back",
  8830.  
  8831. "how does it feel to be shit on by a 13 yer old",
  8832.  
  8833. "r u into scat porns or some thing cos it feel\"s like u want me 2 shit on u",
  8834.  
  8835. "u play gmod like my granpa and hes ded",
  8836.  
  8837. "are u new or just bad?? noobe",
  8838.  
  8839. "u play gmod lik a midget playin basket ball",
  8840.  
  8841. "welcome to the noob scoole bus first stop ur house <<PWND>>",
  8842.  
  8843. ">mfw i rek u",
  8844.  
  8845. "\"i got my ass kiked so hard im shittn out my mouf\" - u",
  8846.  
  8847. "<-(0.0)-< dats u gettn ownd LOL",
  8848.  
  8849. "u just got ur ass ablitterated <<<RECKT>>>",
  8850.  
  8851. "c=3 (dats ur tiney dik rofl)",
  8852.  
  8853. "just leeve the game and let the real mans play",
  8854.  
  8855. "ur so bad u make ur noobe team look good",
  8856.  
  8857. "CONGRASTULATIONS YOU GOT FRIST PRIZE IN BEING BUTT MAD (BUT LAST IN PENIS SIZE LMAO)",
  8858.  
  8859. "im not even trying to pwn u its just so easy",
  8860.  
  8861. "im only 13 an im better than u haha XD",
  8862.  
  8863. "u just got raped",
  8864.  
  8865. "some one an ambulance cos u just got DE_STROYED",
  8866.  
  8867. "i hope u got birth control coz u got rapped",
  8868.  
  8869. "lol pwnd scrubb",
  8870.  
  8871. "you play lik a girl",
  8872.  
  8873. "\"i got fukd so hard dat im cummin shit n shittn cum\"- u",
  8874.  
  8875. "ur gonna need tampons for ur ass afta that ownage",
  8876.  
  8877. "{{ scoooled u }}",
  8878.  
  8879. "(O.o) ~c======3 dats me jizzan on u",
  8880.  
  8881. "dont worry at least ur tryan XD",
  8882.  
  8883. "cya noob send me a post card from pwnd city ROFL",
  8884.  
  8885. "its ok if u keep practasing u will get bettar lol #rekt",
  8886.  
  8887. "\"evry time i fart 1 liter of cum sqerts out\" - u",
  8888.  
  8889. "rofl i pwnd u scrub #420 #based #mlgskill",
  8890.  
  8891. "u fail just like ur dads condom",
  8892.  
  8893. "if i pwnd u any harder it wud be animal abuse",
  8894.  
  8895. "uploaden this fragshow roflmao",
  8896.  
  8897. }
  8898.  
  8899.  
  8900.  
  8901. local buyourshitfaggot = {
  8902.  
  8903. "CAC + VAC + HAC + SAC UNDETECTED",
  8904.  
  8905. "STEP UP YOUR GAME FAGGOT",
  8906.  
  8907. "RUN ANY LUA SCRIPT UNDETECTED",
  8908.  
  8909. "BE THE BEST WHEN YOU BUY THE BEST",
  8910.  
  8911. "MAKE DARKRP KIDS CRY",
  8912.  
  8913. "DEMOLISH THE LUA STATE",
  8914.  
  8915. "PUT YOUR POWER ON DISPLAY",
  8916.  
  8917. "STOMP NOOBS INTO THE DIRT",
  8918.  
  8919. "CRASH SERVERS WITH NO SURVIVORS",
  8920.  
  8921. "HACK ANYWHERE, ANYTIME, ANYONE",
  8922.  
  8923. "DESTROY ALL ANTICHEATS",
  8924.  
  8925. "TRIGGER FEMINISTS",
  8926.  
  8927. "START A SECOND HOLOCAUST",
  8928.  
  8929. "TIRED OF BEING A TOTAL FUCKING LOSER?",
  8930.  
  8931. "STOMP THE COMP",
  8932.  
  8933. "BLACK LIVES SPLATTERED",
  8934.  
  8935. "MAKE FACEPUNCH FACEDUNKED",
  8936.  
  8937. "BECOME UNBANNABLE",
  8938.  
  8939. "DUNK SO HARD YOU BREAK THE NET",
  8940.  
  8941. "#1 CAUSE OF ADMIN SUICIDES",
  8942.  
  8943. "NO FAT CHICKS",
  8944.  
  8945. "DO U <3 CHEATING?",
  8946.  
  8947. "LEGIT IS FOR LOSERS",
  8948.  
  8949. "YOUR LOSER PARENTS NEVER BOUGHT YOU TOYS THIS COOL",
  8950.  
  8951. "SHOOT THE HOTTEST LOADS",
  8952.  
  8953. }
  8954.  
  8955.  
  8956.  
  8957. local thistriggersamericans = {
  8958.  
  8959. "If i found out a girl I was flirting with was transgender I'd bash the fuck out of that degenerate cunt",
  8960.  
  8961. "Feminism is a tool satan is using to corrupt and destroy gods country, FIGHT BACK!",
  8962.  
  8963. "It's scientifically proven that women are physically and mentally weaker than men",
  8964.  
  8965. "Man's job is to build empires and conquer the earth, woman's only job is to make more men",
  8966.  
  8967.  
  8968.  
  8969. }
  8970.  
  8971.  
  8972.  
  8973. local annoyingquestions = {
  8974.  
  8975. "whats the max tabs you can have open on a vpn",
  8976.  
  8977. "how many vpns does it take to stop a ddos",
  8978.  
  8979. "whats better analog or garrys mod",
  8980.  
  8981. "whats the time",
  8982.  
  8983. "is it possible to make a clock in binary",
  8984.  
  8985. "how many cars can you drive at once",
  8986.  
  8987. "did you know there's more planes on the ground than there is submarines in the air",
  8988.  
  8989. "how many busses can you fit on 1 bus",
  8990.  
  8991. "how many tables does it take to support a chair",
  8992.  
  8993. "how many doors does it take to screw a screw",
  8994.  
  8995. "how long can you hold your eyes closed in bed",
  8996.  
  8997. "how long can you hold your breath for under spagetti",
  8998.  
  8999. "whats the fastest time to deliver the mail as mail man",
  9000.  
  9001. "how many bees does it take to make a wasp make honey",
  9002.  
  9003. "If I paint the sun blue will it turn blue",
  9004.  
  9005. "how many beavers does it take to build a dam",
  9006.  
  9007. "how much wood does it take to build a computer",
  9008.  
  9009. "can i have ur credit card number",
  9010.  
  9011. "is it possible to blink and jump at the same time",
  9012.  
  9013. "did you know that dinosaurs were, on average, large",
  9014.  
  9015. "how many thursdays does it take to paint an elephant purple",
  9016.  
  9017. "if cars could talk how fast would they go",
  9018.  
  9019. "did you know theres no oxygen in space",
  9020.  
  9021. "do toilets flush the other way in australia",
  9022.  
  9023. "if i finger paint will i get a splinter",
  9024.  
  9025. "can you build me an ant farm",
  9026.  
  9027. "did you know australia hosts 4 out of 6 of the deadliest spiders in the world",
  9028.  
  9029. "is it possible to ride a bike in space",
  9030.  
  9031. "can i make a movie based around your life",
  9032.  
  9033. "how many pants can you put on while wearing pants",
  9034.  
  9035. "if I paint a car red can it wear pants",
  9036.  
  9037. "how come no matter what colour the liquid is the froth is always white",
  9038.  
  9039. "can a hearse driver drive a corpse in the car pool lane",
  9040.  
  9041. "how come the sun is cold at night",
  9042.  
  9043. "why is it called a TV set when there is only one",
  9044.  
  9045. "if i blend strawberries can i have ur number",
  9046.  
  9047. "if I touch the moon will it be as hot as the sun",
  9048.  
  9049. "did u know ur dad is always older than u",
  9050.  
  9051. "did u know the burger king logo spells burger king",
  9052.  
  9053. "did uknow if u chew on broken glass for a few mins, it starts to taste like blood",
  9054.  
  9055. "did u know running is faster than walking",
  9056.  
  9057. "did u kno the colur blue is called blue because its blue",
  9058.  
  9059. "did you know a shooting star isnt a star",
  9060.  
  9061. "did u know shooting stars dont actually have guns",
  9062.  
  9063. "did u kno the great wall of china is in china",
  9064.  
  9065. "statistictal fact: 100% of non smokers die",
  9066.  
  9067. "did you kmow if you eat you poop it out",
  9068.  
  9069. "did u know rain clouds r called rain clouds cus they are clouds that rain",
  9070.  
  9071. "if cows drink milk is that cow a cannibal",
  9072.  
  9073. "did u know you cant win a staring contest with a stuffed animal",
  9074.  
  9075. "did u know if a race car is at peak speed and hits someone they'll die",
  9076.  
  9077. "did u know the distance between the sun and earth is the same distance as the distance between the earth and the sun",
  9078.  
  9079. "did u kno flat screen tvs arent flat",
  9080.  
  9081. "did u know aeroplane mode on ur phone doesnt make ur phone fly",
  9082.  
  9083. "did u kno too many britdhays can kill you",
  9084.  
  9085. "did u know rock music isnt for rocks",
  9086.  
  9087. "did u know if you eat enough ice you can stop global warming",
  9088.  
  9089. "if ww2 happened before vietnam would that make vietnam world war 2",
  9090.  
  9091. "did you know 3.14 isn't a real pie",
  9092.  
  9093. "did u know 100% of stair accidents happen on stairs",
  9094.  
  9095. "can vampires get AIDS",
  9096.  
  9097. "what type of bird was a dodo",
  9098.  
  9099. "did u know dog backwards is god",
  9100.  
  9101. "did you know on average a dog barks more than a cat",
  9102.  
  9103. }
  9104.  
  9105.  
  9106.  
  9107. function AB.GenerateInsult()
  9108.  
  9109. return table.Random(openers).." you "..table.Random(joiners).." "..table.Random(enders)
  9110.  
  9111. end
  9112.  
  9113.  
  9114.  
  9115. function AB.GenerateInsult2()
  9116.  
  9117. return string.upper(table.Random(openers)).." YOU "..string.upper(table.Random(joiners)).." "..string.upper(table.Random(joiners)).." "..string.upper(table.Random(enders))
  9118.  
  9119. end
  9120.  
  9121.  
  9122.  
  9123. function AB.GenerateInsult3()
  9124.  
  9125. return table.Random(adminstarts).." you "..table.Random(joiners).." "..table.Random(enders)
  9126.  
  9127. end
  9128.  
  9129.  
  9130.  
  9131. function AB.GenerateInsult4()
  9132.  
  9133. return table.Random(cancerstrike)
  9134.  
  9135. end
  9136.  
  9137.  
  9138.  
  9139. function AB.GenerateInsult5()
  9140.  
  9141. return table.Random(supercancerstrike)
  9142.  
  9143. end
  9144.  
  9145.  
  9146.  
  9147. function AB.GeneratePromo()
  9148.  
  9149. return table.Random(buyourshitfaggot).." --> GET ODIUM.PRO"
  9150.  
  9151. end
  9152.  
  9153.  
  9154.  
  9155. function AB.FormatChatString( str )
  9156.  
  9157. str = string.Replace( str, "@1", AB.GenerateInsult() )
  9158.  
  9159. str = string.Replace( str, "@2", AB.GenerateInsult2() )
  9160.  
  9161. str = string.Replace( str, "@3", AB.GenerateInsult3() )
  9162.  
  9163. str = string.Replace( str, "@4", AB.GenerateInsult4() )
  9164.  
  9165. str = string.Replace( str, "@opener", table.Random(openers) )
  9166.  
  9167. str = string.Replace( str, "@joiner", table.Random(joiners) )
  9168.  
  9169. str = string.Replace( str, "@slur", table.Random(enders) )
  9170.  
  9171. str = string.Replace( str, "@getodium", AB.GeneratePromo() )
  9172.  
  9173. str = string.Replace( str, "@csgo", AB.GenerateInsult5() )
  9174.  
  9175. return str
  9176.  
  9177. end
  9178.  
  9179.  
  9180.  
  9181. concommand.Add("ace_insult", function() LocalPlayer():ConCommand("say "..AB.GenerateInsult() ) end)
  9182.  
  9183. concommand.Add("ace_insult2", function() LocalPlayer():ConCommand("say "..AB.GenerateInsult2() ) end)
  9184.  
  9185. local siterator = 1
  9186.  
  9187. concommand.Add("ace_insult3", function() LocalPlayer():ConCommand("say "..AB.GenerateInsult3() ) end)
  9188.  
  9189. concommand.Add("ace_insult4", function() LocalPlayer():ConCommand( "say "..AB.GenerateInsult4() ) end)
  9190.  
  9191.  
  9192.  
  9193. concommand.Add("ace_chatspam_once", function()
  9194.  
  9195. local txt = AB.ChatSpamText
  9196.  
  9197. if AB.Vars.ChatSpamOOC then txt = "// "..txt end
  9198.  
  9199. txt = AB.FormatChatString( txt )
  9200.  
  9201. if AB.Vars.ChatSpamPM then
  9202.  
  9203. for _, p in pairs(player.GetAll()) do
  9204.  
  9205. if !AB.Vars.ChatSpamPMAdmins and AB.GetRank( p ) != ( "user" or "guest" or "player" ) then continue end
  9206.  
  9207. RunConsoleCommand("ulx", "psay", p:Nick(), txt)
  9208.  
  9209. end
  9210.  
  9211. else
  9212.  
  9213. RunConsoleCommand("say", txt)
  9214.  
  9215. end
  9216.  
  9217. end)
  9218.  
  9219.  
  9220.  
  9221.  
  9222.  
  9223.  
  9224.  
  9225. --AB.CurrentBase = 0
  9226.  
  9227. --AB.BaseAreaSize = 2000
  9228.  
  9229. function AB.SetBase()
  9230.  
  9231. AB.ChatText( "Set base location", Color(255,255,255) )
  9232.  
  9233. AB.CurrentBase = LocalPlayer():GetPos()
  9234.  
  9235. end
  9236.  
  9237. concommand.Add( "ace_base_set", AB.SetBase )
  9238.  
  9239.  
  9240.  
  9241. function AB.UnsetBase()
  9242.  
  9243. AB.ChatText( "Removed base", Color(255,255,255) )
  9244.  
  9245. AB.CurrentBase = 0
  9246.  
  9247. end
  9248.  
  9249. concommand.Add( "ace_base_remove", AB.UnsetBase )
  9250.  
  9251.  
  9252.  
  9253. function AB.SetBaseSize( p, cmd, arg, astr )
  9254.  
  9255. if !tonumber( arg[1] ) then AB.ChatText( "Please specify a valid base radius in metres", Color(255,205,205) ) return end
  9256.  
  9257. AB.ChatText( "Set base proximity radius to "..arg[1].."m", Color(255,255,255) )
  9258.  
  9259. AB.BaseAreaSize = arg[1]
  9260.  
  9261. end
  9262.  
  9263. concommand.Add( "ace_base_setsize", AB.SetBaseSize )
  9264.  
  9265.  
  9266.  
  9267.  
  9268.  
  9269.  
  9270.  
  9271.  
  9272.  
  9273.  
  9274.  
  9275.  
  9276.  
  9277. local elements = {
  9278.  
  9279. { -- Screen
  9280.  
  9281. x = 0.075,
  9282.  
  9283. y = 0.04,
  9284.  
  9285. w = 0.85,
  9286.  
  9287. h = 0.25,
  9288.  
  9289.  
  9290.  
  9291. },
  9292.  
  9293. { -- ABORT
  9294.  
  9295. x = 0.075,
  9296.  
  9297. y = 0.04 + 0.25 + 0.03,
  9298.  
  9299. w = 0.85 / 2 - 0.04 / 2 + 0.05,
  9300.  
  9301. h = 0.125,
  9302.  
  9303. text = "ABORT",
  9304.  
  9305. },
  9306.  
  9307. { -- OK
  9308.  
  9309. x = 0.5 + 0.04 / 2 + 0.05,
  9310.  
  9311. y = 0.04 + 0.25 + 0.03,
  9312.  
  9313. w = 0.85 / 2 - 0.04 / 2 - 0.05,
  9314.  
  9315. h = 0.125,
  9316.  
  9317. text = "OK",
  9318.  
  9319. }
  9320.  
  9321. }
  9322.  
  9323.  
  9324.  
  9325. do -- Create numbers
  9326.  
  9327. for i = 1, 9 do
  9328.  
  9329. local column = (i - 1) % 3
  9330.  
  9331.  
  9332.  
  9333. local row = math.floor((i - 1) / 3)
  9334.  
  9335.  
  9336.  
  9337. local element = {
  9338.  
  9339. x = 0.075 + (0.3 * column),
  9340.  
  9341. y = 0.175 + 0.25 + 0.05 + ((0.5 / 3) * row),
  9342.  
  9343. w = 0.25,
  9344.  
  9345. h = 0.13,
  9346.  
  9347. text = tostring(i),
  9348.  
  9349. }
  9350.  
  9351. table.insert(elements, element)
  9352.  
  9353. end
  9354.  
  9355. end
  9356.  
  9357.  
  9358.  
  9359.  
  9360.  
  9361. function AB.CalculateKeypadCursorPos(ply, ent)
  9362.  
  9363. if !ply:IsValid() then return end
  9364.  
  9365.  
  9366.  
  9367. local tr = util.TraceLine( { start = ply:EyePos(), endpos = ply:EyePos() + ply:GetAimVector() * 65, filter = ply } )
  9368.  
  9369. if !tr.Entity or tr.Entity ~= ent then return 0, 0 end
  9370.  
  9371.  
  9372.  
  9373. local scale = ent.Scale
  9374.  
  9375. if !scale then return 0, 0 end
  9376.  
  9377.  
  9378.  
  9379. local pos, ang = ent:CalculateRenderPos(), ent:CalculateRenderAng()
  9380.  
  9381. if !pos or !ang then return 0, 0 end
  9382.  
  9383. local normal = ent:GetForward()
  9384.  
  9385.  
  9386.  
  9387. local intersection = util.IntersectRayWithPlane(ply:EyePos(), ply:GetAimVector(), pos, normal)
  9388.  
  9389. if !intersection then return 0, 0 end
  9390.  
  9391.  
  9392.  
  9393. local diff = pos - intersection
  9394.  
  9395.  
  9396.  
  9397. local x = diff:Dot( -ang:Forward() ) / scale
  9398.  
  9399. local y = diff:Dot( -ang:Right() ) / scale
  9400.  
  9401.  
  9402.  
  9403. return x, y
  9404.  
  9405. end
  9406.  
  9407.  
  9408.  
  9409. function AB.KPGetHoveredElement(ply, ent)
  9410.  
  9411. local scale = ent.Scale
  9412.  
  9413.  
  9414.  
  9415. local w, h = ent.Width2D, ent.Height2D
  9416.  
  9417. local x, y = AB.CalculateKeypadCursorPos(ply, ent)
  9418.  
  9419.  
  9420.  
  9421. for _, element in ipairs(elements) do
  9422.  
  9423. local element_x = w * element.x
  9424.  
  9425. local element_y = h * element.y
  9426.  
  9427. local element_w = w * element.w
  9428.  
  9429. local element_h = h * element.h
  9430.  
  9431.  
  9432.  
  9433. if element_x < x and element_x + element_w > x and
  9434.  
  9435. element_y < y and element_y + element_h > y
  9436.  
  9437. then
  9438.  
  9439. return element
  9440.  
  9441. end
  9442.  
  9443. end
  9444.  
  9445. end
  9446.  
  9447.  
  9448.  
  9449.  
  9450.  
  9451.  
  9452.  
  9453.  
  9454.  
  9455.  
  9456.  
  9457.  
  9458.  
  9459.  
  9460.  
  9461.  
  9462.  
  9463.  
  9464.  
  9465.  
  9466.  
  9467. AB.ShekelGrabbers = {}
  9468.  
  9469. local nxsuicidemsg = 0
  9470.  
  9471. function AB.Logic()
  9472.  
  9473. local me = LocalPlayer()
  9474.  
  9475. if !me:IsValid() then return end
  9476.  
  9477.  
  9478.  
  9479. local lmemfootprint = gcinfo()
  9480.  
  9481.  
  9482.  
  9483. for k, v in pairs(player.GetAll()) do
  9484.  
  9485.  
  9486.  
  9487. -- spectator detector
  9488.  
  9489. if( v:GetObserverTarget() and v != me and v:GetObserverTarget() == me and !table.HasValue( AB.TheyHaveEyesEverywhere, v ) ) then
  9490.  
  9491. surface.PlaySound("buttons/bell1.wav")
  9492.  
  9493. AB.ChatText( v:Nick().." has begun spectating you!", Color(255,100,0) )
  9494.  
  9495. table.insert( AB.TheyHaveEyesEverywhere, v )
  9496.  
  9497. end
  9498.  
  9499.  
  9500.  
  9501. if AB.Vars.DodgeArrest then
  9502.  
  9503. if v != me and v:EyePos():Distance( me:GetPos() ) < 120 and me:Alive() and ( v:GetActiveWeapon() and v:GetActiveWeapon():IsValid() and v:GetActiveWeapon():GetClass() == "arrest_stick" ) then
  9504.  
  9505. if nxsuicidemsg <= CurTime() then
  9506.  
  9507. AB.ChatText( "Automatically suicided to avoid being arrested by "..v:Nick(), Color(255,255,255) )
  9508.  
  9509. nxsuicidemsg = CurTime() + 1
  9510.  
  9511. end
  9512.  
  9513. RunConsoleCommand( "kill" )
  9514.  
  9515. end
  9516.  
  9517. end
  9518.  
  9519.  
  9520.  
  9521.  
  9522.  
  9523. if AB.Vars.KeypadJew then
  9524.  
  9525.  
  9526.  
  9527. local kp = v:GetEyeTrace().Entity
  9528.  
  9529. if IsValid(kp) && IsValid(v) and string.find( kp:GetClass(), "Keypad") and v:EyePos():Distance(kp:GetPos()) <= 120 then
  9530.  
  9531. kp.tempCode = kp.tempCode or ""
  9532.  
  9533. kp.tempText = kp.tempText or ""
  9534.  
  9535. kp.tempStatus = kp.tempStatus or 0
  9536.  
  9537.  
  9538.  
  9539. if kp:GetText() != kp.tempText or kp:GetStatus() != kp.tempStatus then
  9540.  
  9541. kp.tempText = kp:GetText()
  9542.  
  9543. kp.tempStatus = kp:GetStatus()
  9544.  
  9545. if(kp.tempText && !kp:GetSecure()) then
  9546.  
  9547. kp.tempCode = kp.tempText
  9548.  
  9549. timer.Simple(0, function()
  9550.  
  9551. if kp:GetStatus() == 1 && kp.tempCode && kp.tempCode != "" then
  9552.  
  9553. kp.code = kp.tempCode
  9554.  
  9555. end
  9556.  
  9557. end)
  9558.  
  9559. else
  9560.  
  9561. local i = AB.KPGetHoveredElement(v, kp)
  9562.  
  9563. if (i) then i = i.text end
  9564.  
  9565. if kp.tempText then
  9566.  
  9567. timer.Simple(0, function()
  9568.  
  9569. if kp:GetStatus() == 1 && kp.tempCode && kp.tempCode != "" then
  9570.  
  9571. kp.code = kp.tempCode
  9572.  
  9573. end
  9574.  
  9575. end)
  9576.  
  9577. end
  9578.  
  9579.  
  9580.  
  9581. if kp.tempText == "" || kp:GetStatus() == 2 then
  9582.  
  9583. kp.tempCode = ""
  9584.  
  9585. end
  9586.  
  9587.  
  9588.  
  9589. timer.Simple(0, function()
  9590.  
  9591. if(tonumber(i) && kp:GetText():len() != 0) then
  9592.  
  9593. kp.tempCode = kp.tempCode..i
  9594.  
  9595. end
  9596.  
  9597. end)
  9598.  
  9599. end
  9600.  
  9601. end
  9602.  
  9603. end
  9604.  
  9605.  
  9606.  
  9607. end
  9608.  
  9609.  
  9610.  
  9611.  
  9612.  
  9613.  
  9614.  
  9615. if isvector( AB.CurrentBase ) then
  9616.  
  9617. if v == me then continue end
  9618.  
  9619. if AB.ToMetric( v:GetPos():Distance( AB.CurrentBase ) ) < tonumber(AB.BaseAreaSize) then
  9620.  
  9621. if !table.HasValue( AB.ShekelGrabbers, v ) then
  9622.  
  9623. surface.PlaySound("buttons/bell1.wav")
  9624.  
  9625. AB.ChatText( v:Nick().." has entered your base!", Color(255,205,0) )
  9626.  
  9627. table.insert( AB.ShekelGrabbers, v )
  9628.  
  9629. end
  9630.  
  9631. elseif table.HasValue( AB.ShekelGrabbers, v ) and AB.ToMetric( v:GetPos():Distance( AB.CurrentBase ) ) > tonumber(AB.BaseAreaSize) then
  9632.  
  9633. AB.ChatText( v:Nick().." has left your base", Color(100,255,100) )
  9634.  
  9635. table.RemoveByValue( AB.ShekelGrabbers, v )
  9636.  
  9637. end
  9638.  
  9639. else
  9640.  
  9641. AB.ShekelGrabbers = {}
  9642.  
  9643. end
  9644.  
  9645.  
  9646.  
  9647. end
  9648.  
  9649.  
  9650.  
  9651. for k,v in pairs( AB.TheyHaveEyesEverywhere ) do
  9652.  
  9653. if( !IsValid( v ) ) then table.remove( AB.TheyHaveEyesEverywhere, k ) continue end
  9654.  
  9655. if( !v:GetObserverTarget() or ( v:GetObserverTarget() and v:GetObserverTarget() != me ) ) then
  9656.  
  9657. AB.ChatText( v:Nick().." has stopped spectating you!", Color(100,255,100) )
  9658.  
  9659. table.remove( AB.TheyHaveEyesEverywhere, k )
  9660.  
  9661. end
  9662.  
  9663. end
  9664.  
  9665.  
  9666.  
  9667. if AB.Vars.ChatSpam then
  9668.  
  9669. if AB.Vars.ChatSpamBind and !me:KeyDown(IN_WALK) then return end
  9670.  
  9671. local txt = AB.ChatSpamText
  9672.  
  9673. if AB.Vars.ChatSpamInsult then txt = AB.GenerateInsult() end
  9674.  
  9675. if AB.Vars.ChatSpamOOC then txt = "// "..txt end
  9676.  
  9677. txt = AB.FormatChatString( txt )
  9678.  
  9679. if AB.Vars.ChatSpamPM then
  9680.  
  9681. for _, p in pairs(player.GetAll()) do
  9682.  
  9683. if !AB.Vars.ChatSpamPMAdmins and AB.GetRank( p ) != ( "user" or "guest" or "player" ) then continue end
  9684.  
  9685. RunConsoleCommand("ulx", "psay", p:Nick(), txt)
  9686.  
  9687. end
  9688.  
  9689. else
  9690.  
  9691. RunConsoleCommand("say", txt)
  9692.  
  9693. end
  9694.  
  9695. end
  9696.  
  9697.  
  9698.  
  9699. if AB.Vars.DemoteSpam or AB.Vars.WantedSpam or AB.Vars.ULXVotekickSpam or AB.Vars.ULXVotebanSpam then
  9700.  
  9701. for k, v in RandomPairs(player.GetAll()) do
  9702.  
  9703. if AB.IsFriend( v ) or v == me then continue end
  9704.  
  9705. local fag1, fag2 = table.Random( demotereasons )
  9706.  
  9707. if AB.Vars.DemoteSpam then RunConsoleCommand( "darkrp", "demote", v:Nick(), fag1 ) end
  9708.  
  9709. if AB.Vars.WantedSpam then RunConsoleCommand( "darkrp", "wanted", v:Nick(), fag1 ) end
  9710.  
  9711. if AB.Vars.ULXVotekickSpam then RunConsoleCommand( "ulx", "votekick", v:Nick(), fag1 ) end
  9712.  
  9713. if AB.Vars.ULXVotebanSpam then RunConsoleCommand( "ulx", "voteban", v:Nick(), "0" ) end
  9714.  
  9715. end
  9716.  
  9717. end
  9718.  
  9719.  
  9720.  
  9721. if AB.Vars.FlashlightSpam then
  9722.  
  9723. if input.IsKeyDown(KEY_F) then me:ConCommand("impulse 100") end
  9724.  
  9725. end
  9726.  
  9727.  
  9728.  
  9729. if AB.IsTTT then AB.ScanForTraitors() end
  9730.  
  9731.  
  9732.  
  9733. AB.MemoryDebug["logic"] = gcinfo() - lmemfootprint
  9734.  
  9735.  
  9736.  
  9737. end
  9738.  
  9739. hook.Add("Think", "ab_logic", AB.Logic)
  9740.  
  9741.  
  9742.  
  9743.  
  9744.  
  9745.  
  9746.  
  9747. function AB.PKTube()
  9748.  
  9749. local oldwep = false
  9750.  
  9751. if !LocalPlayer():IsOnGround() then AB.ChatText( "You can't tube launch when you aren't on the ground!", Color(255,100,0) ) return end
  9752.  
  9753. if !LocalPlayer():HasWeapon("weapon_physgun") then AB.ChatText( "You don't have a physgun!", Color(255,100,0) ) return end
  9754.  
  9755. if LocalPlayer():GetActiveWeapon():GetClass() != "weapon_physgun" then RunConsoleCommand( "use", "weapon_physgun" ) oldwep = true end
  9756.  
  9757.  
  9758.  
  9759. AB.EyeAngles( LocalPlayer():EyeAngles() - Angle(-180,0,0) )
  9760.  
  9761. AB.ActionTimer( 0.05, function() RunConsoleCommand( "gm_spawn", "models/props_phx/construct/concrete_pipe01.mdl") end)
  9762.  
  9763. AB.ActionTimer( 0.05, function() AB.EyeAngles( LocalPlayer():EyeAngles() - Angle(120,0,0) ) end)
  9764.  
  9765. AB.ActionTimer( 0.1, function() RunConsoleCommand( "+attack") end)
  9766.  
  9767. AB.ActionTimer( 0.05, function() AB.ScrollDelta = 100 end)
  9768.  
  9769. AB.ActionTimer( 0.1, function() RunConsoleCommand( "-attack") AB.ScrollDelta = 0 end)
  9770.  
  9771. if oldwep then
  9772.  
  9773. AB.ActionTimer( 0.01, function() RunConsoleCommand( "lastinv") end)
  9774.  
  9775. end
  9776.  
  9777. AB.ActionTimer( 0.1, function() RunConsoleCommand( "undo") end, true)
  9778.  
  9779.  
  9780.  
  9781. end
  9782.  
  9783. concommand.Add("ace_pk_tubelaunch", AB.PKTube)
  9784.  
  9785.  
  9786.  
  9787. function AB.PK180()
  9788.  
  9789. AB.EyeAngles( Angle(LocalPlayer():EyeAngles().p, LocalPlayer():EyeAngles().y - 180, LocalPlayer():EyeAngles().r) )
  9790.  
  9791. end
  9792.  
  9793. concommand.Add("ace_pk_180", AB.PK180)
  9794.  
  9795.  
  9796.  
  9797. function AB.PK180Up()
  9798.  
  9799. --AB.EyeAngles( Angle(LocalPlayer():EyeAngles().p, LocalPlayer():EyeAngles().y - 180, LocalPlayer():EyeAngles().r) )
  9800.  
  9801. AB.EyeAngles( Angle( -LocalPlayer():EyeAngles().p, LocalPlayer():EyeAngles().y - 180, LocalPlayer():EyeAngles().r) )
  9802.  
  9803. RunConsoleCommand( "+jump")
  9804.  
  9805. timer.Simple(0.1, function() RunConsoleCommand( "-jump") end)
  9806.  
  9807. end
  9808.  
  9809. concommand.Add("ace_pk_180up", AB.PK180Up)
  9810.  
  9811.  
  9812.  
  9813. function AB.ClimbSwep()
  9814.  
  9815. local oldang = LocalPlayer():EyeAngles()
  9816.  
  9817. AB.EyeAngles( Angle( -LocalPlayer():EyeAngles().p, LocalPlayer():EyeAngles().y - 90, LocalPlayer():EyeAngles().r) )
  9818.  
  9819. timer.Simple(0.15, function() AB.EyeAngles( oldang ) end)
  9820.  
  9821. end
  9822.  
  9823. concommand.Add("ace_climbswep", AB.ClimbSwep)
  9824.  
  9825.  
  9826.  
  9827. function AB.EyeAngles( ang )
  9828.  
  9829. local ang = Angle(math.Clamp(ang.p, -90, 90), ang.y, ang.r)
  9830.  
  9831. ang:Normalize()
  9832.  
  9833. LocalPlayer():SetEyeAngles(ang)
  9834.  
  9835. end
  9836.  
  9837.  
  9838.  
  9839. local actiontime = 0
  9840.  
  9841.  
  9842.  
  9843. function AB.ActionTimer( delay, func, terminate )
  9844.  
  9845. terminate = terminate or false
  9846.  
  9847. actiontime = actiontime + delay + (LocalPlayer():Ping() / 1000)
  9848.  
  9849. timer.Simple( actiontime, func)
  9850.  
  9851. if terminate then actiontime = 0 end
  9852.  
  9853. end
  9854.  
  9855.  
  9856.  
  9857.  
  9858.  
  9859.  
  9860.  
  9861. function AB.CanSee( ply )
  9862.  
  9863. local Trace = util.TraceLine( {
  9864.  
  9865. start = LocalPlayer():GetShootPos(),
  9866.  
  9867. endpos = AB.FindTargetPosition( ply ),
  9868.  
  9869. mask = MASK_SHOT,
  9870.  
  9871. filter = { LocalPlayer(), ply }
  9872.  
  9873. } )
  9874.  
  9875.  
  9876.  
  9877. return !Trace.Hit
  9878.  
  9879. end
  9880.  
  9881.  
  9882.  
  9883.  
  9884.  
  9885. ------------------------------------------------------------------------PROPKILL UTILS--------------------------------------------------------------------------------------
  9886.  
  9887.  
  9888.  
  9889. function AB.PhysgunPickup( p, e )
  9890.  
  9891. if AB.Vars.DontTouchMeThere and e == LocalPlayer() then RunConsoleCommand( "kill" ) end
  9892.  
  9893. AB.HoldingProp = e
  9894.  
  9895. end
  9896.  
  9897.  
  9898.  
  9899. function AB.PhysgunDrop( p, e )
  9900.  
  9901. -- AB.HoldingProp = game.GetWorld()
  9902.  
  9903. end
  9904.  
  9905.  
  9906.  
  9907. hook.Add( "PhysgunPickup", "ab_physgun", AB.PhysgunPickup )
  9908.  
  9909. hook.Add( "PhysgunDrop", "ab_physgun", AB.PhysgunDrop )
  9910.  
  9911.  
  9912.  
  9913.  
  9914.  
  9915. ------------------------------------------------------------------------WEAPON INSPECTOR--------------------------------------------------------------------------------------
  9916.  
  9917.  
  9918.  
  9919.  
  9920.  
  9921.  
  9922.  
  9923.  
  9924.  
  9925.  
  9926.  
  9927.  
  9928.  
  9929.  
  9930.  
  9931.  
  9932.  
  9933. local function gaytext( parent, text, vpos, color )
  9934.  
  9935. local ABLabel = vgui.Create( "DLabel", parent )
  9936.  
  9937. ABLabel:SetFont( "TargetID" )
  9938.  
  9939. ABLabel:SetPos( 20, vpos)
  9940.  
  9941. ABLabel:SetColor( color )
  9942.  
  9943. ABLabel:SetText( text )
  9944.  
  9945. ABLabel:SizeToContents()
  9946.  
  9947. end
  9948.  
  9949.  
  9950.  
  9951. local overrides = {
  9952.  
  9953.  
  9954.  
  9955. ["weapon_crowbar"] = {
  9956.  
  9957. Damage = 25,
  9958.  
  9959. NumShots = 1,
  9960.  
  9961. ClipSize = 1,
  9962.  
  9963. Delay = 0.404
  9964.  
  9965. },
  9966.  
  9967.  
  9968.  
  9969. ["weapon_stunstick"] = {
  9970.  
  9971. Damage = 40,
  9972.  
  9973. NumShots = 1,
  9974.  
  9975. ClipSize = 1,
  9976.  
  9977. Delay = 0.81
  9978.  
  9979. },
  9980.  
  9981.  
  9982.  
  9983. ["weapon_pistol"] = {
  9984.  
  9985. Damage = 12,
  9986.  
  9987. NumShots = 1,
  9988.  
  9989. ClipSize = 18,
  9990.  
  9991. Ammo = "pistol",
  9992.  
  9993. Delay = 0.12,
  9994.  
  9995. },
  9996.  
  9997.  
  9998.  
  9999. ["weapon_357"] = {
  10000.  
  10001. Damage = 75,
  10002.  
  10003. NumShots = 1,
  10004.  
  10005. ClipSize = 6,
  10006.  
  10007. Ammo = "357",
  10008.  
  10009. Delay = 0.75,
  10010.  
  10011. },
  10012.  
  10013.  
  10014.  
  10015. ["weapon_smg1"] = {
  10016.  
  10017. Damage = 12,
  10018.  
  10019. NumShots = 1,
  10020.  
  10021. ClipSize = 45,
  10022.  
  10023. Ammo = "SMG1",
  10024.  
  10025. Delay = 0.075,
  10026.  
  10027. },
  10028.  
  10029.  
  10030.  
  10031. ["weapon_shotgun"] = {
  10032.  
  10033. Damage = 4,
  10034.  
  10035. NumShots = 7,
  10036.  
  10037. ClipSize = 6,
  10038.  
  10039. Ammo = "buckshot",
  10040.  
  10041. Delay = 0.9,
  10042.  
  10043. },
  10044.  
  10045.  
  10046.  
  10047. ["weapon_ar2"] = {
  10048.  
  10049. Damage = 11,
  10050.  
  10051. NumShots = 1,
  10052.  
  10053. ClipSize = 30,
  10054.  
  10055. Delay = 0.105,
  10056.  
  10057. },
  10058.  
  10059.  
  10060.  
  10061. ["weapon_crossbow"] = {
  10062.  
  10063. Damage = 100,
  10064.  
  10065. NumShots = 1,
  10066.  
  10067. ClipSize = 1,
  10068.  
  10069. Delay = 1.95,
  10070.  
  10071. },
  10072.  
  10073.  
  10074.  
  10075. ["weapon_rpg"] = {
  10076.  
  10077. Damage = 150,
  10078.  
  10079. NumShots = 1,
  10080.  
  10081. ClipSize = 1,
  10082.  
  10083. Delay = 2.2,
  10084.  
  10085. },
  10086.  
  10087.  
  10088.  
  10089. ["weapon_frag"] = {
  10090.  
  10091. Damage = 150,
  10092.  
  10093. NumShots = 1,
  10094.  
  10095. ClipSize = 1,
  10096.  
  10097. Delay = 1.95,
  10098.  
  10099. },
  10100.  
  10101.  
  10102.  
  10103. ["fas2_rem870"] = {
  10104.  
  10105. Delay = .86,
  10106.  
  10107. },
  10108.  
  10109.  
  10110.  
  10111. ["fas2_ks23"] = {
  10112.  
  10113. Delay = 1.11,
  10114.  
  10115. },
  10116.  
  10117.  
  10118.  
  10119. ["fas2_m67"] = {
  10120.  
  10121. Damage = 160,
  10122.  
  10123. Delay = 1.75,
  10124.  
  10125. },
  10126.  
  10127.  
  10128.  
  10129. }
  10130.  
  10131.  
  10132.  
  10133. local ammostrings = {
  10134.  
  10135. pistol = "HL2 Pistol",
  10136.  
  10137. smg1 = "HL2 SMG",
  10138.  
  10139. ar2 = "HL2 Pulse Rifle",
  10140.  
  10141. ["357"] = "HL2 Magnum",
  10142.  
  10143. buckshot = "HL2 Shotgun",
  10144.  
  10145. rpg_round = "HL2 Rocket",
  10146.  
  10147. }
  10148.  
  10149.  
  10150.  
  10151. function AB.GunMenu()
  10152.  
  10153. if GMenu then return end
  10154.  
  10155.  
  10156.  
  10157. local GMenu = vgui.Create("DFrame")
  10158.  
  10159. GMenu:SetSize(590,520)
  10160.  
  10161. GMenu:SetTitle("Inspecting Weapon")
  10162.  
  10163. GMenu:Center()
  10164.  
  10165. GMenu:MakePopup()
  10166.  
  10167.  
  10168.  
  10169. GMenu.Paint = function(panel, w, h)
  10170.  
  10171. surface.SetDrawColor( Color(50, 50, 90, 255) )
  10172.  
  10173. surface.DrawRect( 0, 0, w, h )
  10174.  
  10175. surface.SetDrawColor( Color(155, 155, 155, 255) )
  10176.  
  10177. surface.DrawOutlinedRect( 0, 0, w, h )
  10178.  
  10179. surface.DrawOutlinedRect( 1, 1, w - 2, h - 2 )
  10180.  
  10181. surface.SetDrawColor( Color(0, 0, 0, 255) )
  10182.  
  10183. surface.DrawRect( 10, 25, w - 20, h - 35 )
  10184.  
  10185. end
  10186.  
  10187.  
  10188.  
  10189. local gun = LocalPlayer():GetActiveWeapon()
  10190.  
  10191. if !gun:IsValid() then return end
  10192.  
  10193. local m9gay = false
  10194.  
  10195. local fas = false
  10196.  
  10197. local cw2 = false
  10198.  
  10199. if gun.Base == "bobs_gun_base" or gun.Base == "bobs_shotty_base" or gun.Base == "bobs_scoped_base" then m9gay = true end
  10200.  
  10201. if gun.Base == "fas2_base" or gun.Base == "fas2_base_shotgun" then fas = true end
  10202.  
  10203. if gun.Base == "cw_base" then cw2 = true end
  10204.  
  10205.  
  10206.  
  10207. gaytext( GMenu, "Weapon Name: "..gun:GetPrintName(), 30, Color(205,225,255,255) )
  10208.  
  10209. gaytext( GMenu, "Weapon Class: "..gun:GetClass(), 50, Color(105,225,255,255) )
  10210.  
  10211.  
  10212.  
  10213. //////////////////////////////// hl2 guns ////////////////////////////////
  10214.  
  10215.  
  10216.  
  10217. if !gun.Primary then gun.Primary = {} end
  10218.  
  10219.  
  10220.  
  10221. if overrides[gun:GetClass()] then
  10222.  
  10223. local tab = overrides[gun:GetClass()]
  10224.  
  10225. for k, v in pairs(tab) do
  10226.  
  10227. gun.Primary[k] = v
  10228.  
  10229. end
  10230.  
  10231.  
  10232.  
  10233. end
  10234.  
  10235.  
  10236.  
  10237. //////////////////////////////// weapon stat workarounds ////////////////////////////////
  10238.  
  10239.  
  10240.  
  10241. local delay = 0
  10242.  
  10243. if gun.Primary.Delay then
  10244.  
  10245. delay = gun.Primary.Delay
  10246.  
  10247. elseif m9gay then
  10248.  
  10249. delay = 60 / gun.Primary.RPM
  10250.  
  10251. elseif fas or cw2 then
  10252.  
  10253. delay = gun.FireDelay
  10254.  
  10255. end
  10256.  
  10257.  
  10258.  
  10259. local gdmg = 0
  10260.  
  10261. if gun.Primary.Damage then
  10262.  
  10263. gdmg = gun.Primary.Damage
  10264.  
  10265. elseif fas or cw2 then
  10266.  
  10267. gdmg = gun.Damage
  10268.  
  10269. end
  10270.  
  10271.  
  10272.  
  10273. local gnumshots = 1
  10274.  
  10275. if gun.Primary.NumShots then
  10276.  
  10277. gnumshots = gun.Primary.NumShots
  10278.  
  10279. elseif fas or cw2 then
  10280.  
  10281. gnumshots = gun.Shots or 1
  10282.  
  10283. end
  10284.  
  10285.  
  10286.  
  10287. local gcone = 0
  10288.  
  10289. if gun.Primary.Cone then
  10290.  
  10291. gcone = gun.Primary.Cone
  10292.  
  10293. elseif m9gay then
  10294.  
  10295. gcone = gun.Primary.Spread
  10296.  
  10297. elseif fas then
  10298.  
  10299. gcone = gun.HipCone or 0
  10300.  
  10301. elseif cw2 then
  10302.  
  10303. gcone = gun.HipSpread or 0
  10304.  
  10305. end
  10306.  
  10307.  
  10308.  
  10309. local grecoil = 0
  10310.  
  10311. if gun.Primary.Recoil then
  10312.  
  10313. grecoil = gun.Primary.Recoil
  10314.  
  10315. elseif m9gay then
  10316.  
  10317. grecoil = gun.Primary.KickUp
  10318.  
  10319. elseif fas then
  10320.  
  10321. grecoil = gun.Recoil or 0
  10322.  
  10323. end
  10324.  
  10325.  
  10326.  
  10327. local voff = 90
  10328.  
  10329.  
  10330.  
  10331. gaytext( GMenu, "Damage: "..(gdmg or "nil").." ( x"..(gnumshots or "nil").." ) -- ("..(gdmg * gnumshots).." Total)", voff, Color(255,225,155,255) )
  10332.  
  10333. voff = voff + 20
  10334.  
  10335.  
  10336.  
  10337.  
  10338.  
  10339. if gun.Primary.ClipSize then
  10340.  
  10341. if gun.Primary.ClipSize == -1 then gun.Primary.ClipSize = 1 end
  10342.  
  10343. gaytext( GMenu, "Damage Per Mag: "..(gdmg * gnumshots) * gun.Primary.ClipSize, voff, Color(255,205,105,255) )
  10344.  
  10345. voff = voff + 20
  10346.  
  10347. end
  10348.  
  10349.  
  10350.  
  10351. gaytext( GMenu, "Damage Per Second: "..math.ceil(1 / delay * (gdmg * gnumshots)), voff, Color(255,155,85,255) )
  10352.  
  10353. voff = voff + 20
  10354.  
  10355.  
  10356.  
  10357. if gun.Primary.ClipSize then
  10358.  
  10359. gaytext( GMenu, "Magazine: "..(gun.Primary.ClipSize or "No Magazine"), voff, Color(255,195,195,255) )
  10360.  
  10361. voff = voff + 20
  10362.  
  10363.  
  10364.  
  10365. gaytext( GMenu, "Magdump Time: "..math.Round(gun.Primary.ClipSize * delay, 3).."s", voff, Color(255,95,155,255) )
  10366.  
  10367. voff = voff + 20
  10368.  
  10369. end
  10370.  
  10371.  
  10372.  
  10373. gaytext( GMenu, "Accuracy: "..(10 - (gcone * 100) ), voff, Color(255,255,155,255) )
  10374.  
  10375. voff = voff + 20
  10376.  
  10377.  
  10378.  
  10379. if fas then
  10380.  
  10381. gaytext( GMenu, "Accuracy (Aiming): "..(10 - (gun.AimCone or 0 * 100) ), voff, Color(155,255,155,255) )
  10382.  
  10383. voff = voff + 20
  10384.  
  10385. end
  10386.  
  10387. if cw2 then
  10388.  
  10389. gaytext( GMenu, "Accuracy (Aiming): "..(10 - (gun.AimSpread or 0 * 100) ), voff, Color(155,255,155,255) )
  10390.  
  10391. voff = voff + 20
  10392.  
  10393. end
  10394.  
  10395.  
  10396.  
  10397.  
  10398.  
  10399. gaytext( GMenu, "Fire Rate: "..math.Round(delay, 3).." ( "..math.ceil(60 / delay).." Rounds Per Min )", voff, Color(255,255,155,255) )
  10400.  
  10401. voff = voff + 20
  10402.  
  10403.  
  10404.  
  10405. --gaytext( GMenu, "Recoil: "..grecoil.." ( "..math.Round((grecoil * 10) * 1 / delay, 1).." recoil per second ) ", voff, Color(205,255,125,255) )
  10406.  
  10407. --voff = voff + 20
  10408.  
  10409.  
  10410.  
  10411.  
  10412.  
  10413. if gun.Primary.Ammo then
  10414.  
  10415. local ammotyperaw = gun.Primary.Ammo
  10416.  
  10417. local ammotype = string.lower(gun.Primary.Ammo)
  10418.  
  10419. if ammostrings[ammotype] then ammotyperaw = ammostrings[ammotype] end
  10420.  
  10421. gaytext( GMenu, "Ammo Type: "..ammotyperaw, voff, Color(105,255,125,255) )
  10422.  
  10423. voff = voff + 20
  10424.  
  10425. end
  10426.  
  10427.  
  10428.  
  10429. if m9gay then gaytext( GMenu, "Damage and TTK stats inaccurate due to m9k double penetration bug", voff, Color(255,0,0,255) ) end
  10430.  
  10431. voff = voff + 40
  10432.  
  10433.  
  10434.  
  10435. gaytext( GMenu, "Shots to Kill: "..math.ceil(50 / (gdmg * gnumshots) ).."x headshots -- "..math.ceil(100 / (gdmg * gnumshots)).."x torso shots -- "..math.ceil(400 / (gdmg * gnumshots)).."x limb shots", voff, Color(255,125,155,255) )
  10436.  
  10437. voff = voff + 20
  10438.  
  10439. gaytext( GMenu, "Shots to Kill (Armor): "..math.ceil(100 / (gdmg * gnumshots) ).."x headshots -- "..math.ceil(200 / (gdmg * gnumshots)).."x torso shots -- "..math.ceil(800 / (gdmg * gnumshots)).."x limb shots", voff, Color(255,125,255,255) )
  10440.  
  10441. voff = voff + 40
  10442.  
  10443.  
  10444.  
  10445. local ttk = (delay * math.ceil(100 / (gdmg * gnumshots) )) - delay
  10446.  
  10447. local ttk2 = (delay * math.ceil(50 / (gdmg * gnumshots) )) - delay
  10448.  
  10449. local ttk3 = (delay * math.ceil(400 / (gdmg * gnumshots) )) - delay
  10450.  
  10451. local ttk4 = (delay * math.ceil(200 / (gdmg * gnumshots) )) - delay
  10452.  
  10453. local ttk5 = (delay * math.ceil(800 / (gdmg * gnumshots) )) - delay
  10454.  
  10455. gaytext( GMenu, "Time to Kill: "..math.Round(ttk2, 3).."s (Head) -- "..math.Round(ttk, 3).."s (Body) -- "..math.Round(ttk3, 3).."s (Limb)", voff, Color(205,255,185,255) )
  10456.  
  10457. voff = voff + 20
  10458.  
  10459. gaytext( GMenu, "Time to Kill (Armored): "..math.Round(ttk, 3).."s (Head) -- "..math.Round(ttk4, 3).."s (Body) -- "..math.Round(ttk5, 3).."s (Limb)", voff, Color(155,155,255,255) )
  10460.  
  10461. voff = voff + 20
  10462.  
  10463.  
  10464.  
  10465.  
  10466.  
  10467.  
  10468.  
  10469. end
  10470.  
  10471. concommand.Add("ace_inspectweapon", AB.GunMenu)
  10472.  
  10473.  
  10474.  
  10475.  
  10476.  
  10477.  
  10478.  
  10479.  
  10480.  
  10481.  
  10482.  
  10483. ------------------------------------------------------------------------AIMBOT UTIL FUNCTIONS--------------------------------------------------------------------------------------
  10484.  
  10485.  
  10486.  
  10487.  
  10488.  
  10489.  
  10490.  
  10491. -- get this from a better place fucknuts
  10492.  
  10493. local OEyeAngles = OEyeAngles or FindMetaTable( "Player" ).SetEyeAngles
  10494.  
  10495. FindMetaTable( "Player" ).SetEyeAngles = function( self, angle )
  10496.  
  10497. if ( string.find( string.lower( debug.getinfo( 2 ).short_src ), "/weapons/" ) ) and AB.Vars.NoRecoil then return end
  10498.  
  10499. OEyeAngles( self, angle )
  10500.  
  10501. end
  10502.  
  10503.  
  10504.  
  10505. local shitweapons = {
  10506.  
  10507. "weapon_physgun",
  10508.  
  10509. "weapon_physcannon",
  10510.  
  10511. "weapon_bugbait",
  10512.  
  10513. "weapon_fists",
  10514.  
  10515. "gmod_camera",
  10516.  
  10517. "gmod_tool",
  10518.  
  10519. "weapon_medkit",
  10520.  
  10521. "weapon_zm_carry",
  10522.  
  10523. "weapon_ttt_unarmed",
  10524.  
  10525. }
  10526.  
  10527. -- make sure its a non spastic weapon to aimbot/triggerbot with
  10528.  
  10529. function AB.CanBotShoot( wep )
  10530.  
  10531. if !wep:IsValid() then return end
  10532.  
  10533. if table.HasValue( shitweapons, wep:GetClass() ) then return false end
  10534.  
  10535. return true
  10536.  
  10537. end
  10538.  
  10539.  
  10540.  
  10541. function AB.GetView()
  10542.  
  10543. return AB.ViewAngle * 1
  10544.  
  10545. end
  10546.  
  10547.  
  10548.  
  10549. function AB.FixView()
  10550.  
  10551. if !AB.Vars.Aimbot then return end
  10552.  
  10553.  
  10554.  
  10555. local ply = LocalPlayer()
  10556.  
  10557. if !ply:IsValid() then return end
  10558.  
  10559.  
  10560.  
  10561. AB.ViewAngle = ply:EyeAngles()
  10562.  
  10563. end
  10564.  
  10565.  
  10566.  
  10567. local sensitivity = 0.022
  10568.  
  10569. function AB.RotateView(cmd)
  10570.  
  10571. AB.ViewAngle.p = math.Clamp(AB.ViewAngle.p + (cmd:GetMouseY() * sensitivity), -89, 89)
  10572.  
  10573. AB.ViewAngle.y = math.NormalizeAngle(AB.ViewAngle.y + (cmd:GetMouseX() * sensitivity * -1))
  10574.  
  10575. end
  10576.  
  10577.  
  10578.  
  10579. -- fov based targeting shit
  10580.  
  10581. function AB.GetAngleFromCrosshair( ply )
  10582.  
  10583. local Ang = (AB.FindTargetPosition( ply ) - LocalPlayer():EyePos() ):Angle()
  10584.  
  10585. local myangles = LocalPlayer():EyeAngles()
  10586.  
  10587. if isangle( AB.InternalFakeAngles ) then myangles = AB.InternalFakeAngles end
  10588.  
  10589. local DiffX = math.abs( math.NormalizeAngle( myangles.p - Ang.p ) )
  10590.  
  10591. local DiffY = math.abs( math.NormalizeAngle( myangles.y - Ang.y ) )
  10592.  
  10593. return DiffX, DiffY
  10594.  
  10595. end
  10596.  
  10597.  
  10598.  
  10599. function AB.GetDirtyAngleFromCrosshair( ply )
  10600.  
  10601. local Ang = ( (ply:GetPos() + Vector( 0, 0, 35 ) ) - LocalPlayer():EyePos() ):Angle()
  10602.  
  10603. local myangles = LocalPlayer():EyeAngles()
  10604.  
  10605. if isangle( AB.InternalFakeAngles ) then myangles = AB.InternalFakeAngles end
  10606.  
  10607. local DiffX = math.abs( math.NormalizeAngle( myangles.p - Ang.p ) )
  10608.  
  10609. local DiffY = math.abs( math.NormalizeAngle( myangles.y - Ang.y ) )
  10610.  
  10611. return DiffX + DiffY
  10612.  
  10613. end
  10614.  
  10615.  
  10616.  
  10617. function AB.InFOV( ply )
  10618.  
  10619. local DiffX, DiffY = AB.GetAngleFromCrosshair( ply )
  10620.  
  10621. return ( DiffX <= AB.NumberVars.AimbotMaxFOV and DiffY <= AB.NumberVars.AimbotMaxFOV )
  10622.  
  10623. end
  10624.  
  10625.  
  10626.  
  10627. function AB.FindTargetPosition( ent )
  10628.  
  10629. if !ent:IsValid() then return end
  10630.  
  10631.  
  10632.  
  10633. if !AB.Vars.AimbotTargetMode then return ent:LocalToWorld( ent:OBBCenter() ) end
  10634.  
  10635.  
  10636.  
  10637. if ent:GetModel() == "models/crow.mdl" then return ent:LocalToWorld( Vector(0, 0, 5) ) end -- rape faggots that are in crow form, useful in gmstranded or zombie survival
  10638.  
  10639.  
  10640.  
  10641. if ent:IsPlayer() then
  10642.  
  10643. local head = ent:LookupAttachment( "eyes" )
  10644.  
  10645. if head then
  10646.  
  10647. local pos = ent:GetAttachment(head)
  10648.  
  10649. if pos then
  10650.  
  10651. return pos.Pos + ent:EyeAngles():Forward() * -1.5
  10652.  
  10653. end
  10654.  
  10655. end
  10656.  
  10657. end
  10658.  
  10659.  
  10660.  
  10661. local bone = AB.AimbotBone
  10662.  
  10663. local head = ent:LookupBone( bone )
  10664.  
  10665. if head then
  10666.  
  10667. local pos = ent:GetBonePosition( head )
  10668.  
  10669. if pos then
  10670.  
  10671. return pos
  10672.  
  10673. end
  10674.  
  10675. end
  10676.  
  10677.  
  10678.  
  10679. return ent:LocalToWorld( ent:OBBCenter() )
  10680.  
  10681. end
  10682.  
  10683.  
  10684.  
  10685. function AB.CalcTargetPosition( ent )
  10686.  
  10687. local targetPos = AB:FindTargetPosition( ent )
  10688.  
  10689.  
  10690.  
  10691. if LocalPlayer():IsValid() and LocalPlayer():GetActiveWeapon():IsValid() and LocalPlayer():GetActiveWeapon():GetClass() == "weapon_crossbow" then
  10692.  
  10693. targetPos = AB:PredictProjectileWeapons( ply, ent, targetPos ) or targetPos
  10694.  
  10695. end
  10696.  
  10697.  
  10698.  
  10699. return targetPos
  10700.  
  10701. end
  10702.  
  10703.  
  10704.  
  10705.  
  10706.  
  10707. function AB.PredictProjectileWeapons( ply, target, targetPos )
  10708.  
  10709. -- local dist = VecM["Length"](targetPos - PlyM["GetShootPos"](ply))
  10710.  
  10711. local dist = Vector(targetPos - LocalPlayer():GetShootPos()):Length()
  10712.  
  10713. local time = (dist / 3500) + 0.05
  10714.  
  10715. targetPos = targetPos + (target:GetVelocity() * time)
  10716.  
  10717.  
  10718.  
  10719. -- local mul = 0.0075
  10720.  
  10721. //targetPos = targetPos - (e["GetVelocity"](ply) * mul)
  10722.  
  10723.  
  10724.  
  10725. return targetPos
  10726.  
  10727. end
  10728.  
  10729.  
  10730.  
  10731. function AB.CanTargetPlayer( ply )
  10732.  
  10733. if !AB.Vars.TargetFriends and AB.IsFriend( ply ) then return false end
  10734.  
  10735. if !AB.Vars.TargetHighlighted and AB.IsTarget( ply ) then return false end
  10736.  
  10737. if !AB.Vars.TargetAdmins and AB.GetRank( ply ) != ( "user" or "guest" or "player" ) then return false end
  10738.  
  10739. if !AB.Vars.TargetSameTeam and ply:Team() == LocalPlayer():Team() then return false end
  10740.  
  10741. if !AB.Vars.TargetNoclippers and ply:GetMoveType() == MOVETYPE_NOCLIP then return false end
  10742.  
  10743. if DarkRP and AB.IsBabyGod( ply ) then return false end
  10744.  
  10745. return true
  10746.  
  10747. end
  10748.  
  10749.  
  10750.  
  10751. local boners = {
  10752.  
  10753. "ValveBiped.Bip01_Head1",
  10754.  
  10755. "ValveBiped.Bip01_Spine2",
  10756.  
  10757. "ValveBiped.Bip01_Pelvis",
  10758.  
  10759. "ValveBiped.Bip01_R_Forearm",
  10760.  
  10761. "ValveBiped.Bip01_L_Forearm",
  10762.  
  10763. "ValveBiped.Bip01_R_Calf",
  10764.  
  10765. "ValveBiped.Bip01_L_Calf",
  10766.  
  10767. "ValveBiped.Bip01_R_Foot",
  10768.  
  10769. "ValveBiped.Bip01_L_Foot",
  10770.  
  10771. }
  10772.  
  10773.  
  10774.  
  10775.  
  10776.  
  10777.  
  10778.  
  10779. function AB.PrepareForAStomping( ply )
  10780.  
  10781. if !ply:IsValid() then return false end
  10782.  
  10783.  
  10784.  
  10785. if ply:GetModel() == "models/crow.mdl" and AB.PlayerVisible( ply, ply:LocalToWorld( Vector(0, 0, 5) ) ) then return ply:LocalToWorld( Vector(0, 0, 5) ) end
  10786.  
  10787.  
  10788.  
  10789. if AB.Vars.AimbotTargetMode then
  10790.  
  10791. -- right in the kisser
  10792.  
  10793. local head = ply:LookupAttachment( "eyes" )
  10794.  
  10795. if head then
  10796.  
  10797. local pos = ply:GetAttachment(head)
  10798.  
  10799. if pos then
  10800.  
  10801. local tpoz = pos.Pos + ply:EyeAngles():Forward() * -1.5
  10802.  
  10803. if AB.PlayerVisible( ply, tpoz ) then return tpoz end
  10804.  
  10805. end
  10806.  
  10807. end
  10808.  
  10809.  
  10810.  
  10811. else
  10812.  
  10813. -- b aim
  10814.  
  10815. local head = ply:LookupBone( "ValveBiped.Bip01_Pelvis" )
  10816.  
  10817. if head then
  10818.  
  10819. local poz = ply:GetBonePosition( head )
  10820.  
  10821. if poz then
  10822.  
  10823. if AB.PlayerVisible( ply, poz ) then return poz end
  10824.  
  10825. end
  10826.  
  10827. end
  10828.  
  10829. end
  10830.  
  10831.  
  10832.  
  10833. if AB.Vars.AimbotAdaptiveTarget then
  10834.  
  10835. local returnpos = -1
  10836.  
  10837. for _, b in ipairs( boners ) do
  10838.  
  10839. local head = ply:LookupBone( b )
  10840.  
  10841. if head then
  10842.  
  10843. local poz = ply:GetBonePosition( head )
  10844.  
  10845. if poz then
  10846.  
  10847. if AB.PlayerVisible( ply, poz ) then returnpos = poz break end
  10848.  
  10849. end
  10850.  
  10851. end
  10852.  
  10853. end
  10854.  
  10855. if isvector( returnpos ) then return returnpos end
  10856.  
  10857. end
  10858.  
  10859.  
  10860.  
  10861.  
  10862.  
  10863. local lastresort = ply:LocalToWorld( ply:OBBCenter() )
  10864.  
  10865. if AB.PlayerVisible( ply, lastresort ) then return lastresort end
  10866.  
  10867.  
  10868.  
  10869. return false
  10870.  
  10871. end
  10872.  
  10873.  
  10874.  
  10875.  
  10876.  
  10877.  
  10878.  
  10879.  
  10880.  
  10881. function AB.PlayerVisible( ply, testpos )
  10882.  
  10883. if !ply:IsValid() or !ply:IsPlayer() then return false end
  10884.  
  10885.  
  10886.  
  10887. local td = {start = LocalPlayer():GetShootPos(), endpos = testpos, filter = {LocalPlayer(), ply}, mask = MASK_SHOT}
  10888.  
  10889. local tr = util.TraceLine(td)
  10890.  
  10891.  
  10892.  
  10893. --if tr.Entity:IsValid() and tr.Entity == ply then return true end
  10894.  
  10895. if !tr.Hit then return true end
  10896.  
  10897. if AB.Vars.AimbotWallbanger and AB.CanWeaponPenetrate( tr, ply ) then return true end
  10898.  
  10899. return false
  10900.  
  10901.  
  10902.  
  10903. end
  10904.  
  10905.  
  10906.  
  10907. -- sorta like above but doesnt require a testpos
  10908.  
  10909. function AB.PlayerVisiblePK( source, ply )
  10910.  
  10911. if !ply:IsValid() or !ply:IsPlayer() then return false end
  10912.  
  10913.  
  10914.  
  10915. local td = {start = source, endpos = ply:LocalToWorld( ply:OBBCenter() ), filter = function( e ) return ( e != LocalPlayer() and e != ply and e:GetClass() != "prop_physics") end, mask = MASK_SHOT}
  10916.  
  10917. local tr = util.TraceLine(td)
  10918.  
  10919.  
  10920.  
  10921. --if tr.Entity:IsValid() and tr.Entity == ply then return true, tr.HitPos end
  10922.  
  10923. if !tr.Hit then return true, ply:LocalToWorld( ply:OBBCenter() ) end
  10924.  
  10925. return false, Vector( 0,0,0 )
  10926.  
  10927.  
  10928.  
  10929. end
  10930.  
  10931.  
  10932.  
  10933.  
  10934.  
  10935. -- returns the closest alive player, if visible is true then it will return the closest alive and visible player
  10936.  
  10937. function AB.GetClosestPlayer()
  10938.  
  10939. local nearestEnt = game.GetWorld()
  10940.  
  10941. local mypos = LocalPlayer():GetPos()
  10942.  
  10943. local plytab = player.GetAll()
  10944.  
  10945. table.sort( plytab, function( a, b ) return a:GetPos():Distance( mypos ) < b:GetPos():Distance( mypos ) end )
  10946.  
  10947.  
  10948.  
  10949. for _, ent in ipairs( plytab ) do
  10950.  
  10951. if ent == LocalPlayer() then continue end
  10952.  
  10953. if !ent:IsValid() or AB.IsDead( ent ) or !AB.CanTargetPlayer( ent ) or (AB.ToMetric( LocalPlayer():GetPos():Distance( ent:GetPos() ) ) >= AB.NumberVars.AimbotDist ) then continue end
  10954.  
  10955. nearestEnt = ent
  10956.  
  10957. break
  10958.  
  10959. end
  10960.  
  10961.  
  10962.  
  10963. return nearestEnt
  10964.  
  10965. end
  10966.  
  10967.  
  10968.  
  10969. -- returns the closest alive player to your crosshair, visible to return only visible players
  10970.  
  10971. function AB.GetClosestToCursor( visible )
  10972.  
  10973. local nearestEnt = game.GetWorld()
  10974.  
  10975. local fovtotal = AB.NumberVars.AimbotMaxFOV or 0
  10976.  
  10977. if fovtotal > 179 then return AB.GetClosestPlayer() end -- kick it into ragebot mode
  10978.  
  10979. local mypos = LocalPlayer():GetPos()
  10980.  
  10981. local plytab = player.GetAll()
  10982.  
  10983.  
  10984.  
  10985. table.sort( plytab, function( a, b ) return AB.GetDirtyAngleFromCrosshair( a ) < AB.GetDirtyAngleFromCrosshair( b ) end )
  10986.  
  10987.  
  10988.  
  10989. for _, ent in ipairs( plytab ) do
  10990.  
  10991. if ent == LocalPlayer() then continue end
  10992.  
  10993. -- we've exceeded our max fov so just stop looping here
  10994.  
  10995. if !AB.InFOV( ent ) then break end
  10996.  
  10997. -- save a bunch of useless calcs
  10998.  
  10999. if !ent:IsValid() or AB.IsDead( ent ) or !AB.CanTargetPlayer( ent ) or (AB.ToMetric( LocalPlayer():GetPos():Distance( ent:GetPos() ) ) >= AB.NumberVars.AimbotDist ) then continue end
  11000.  
  11001. nearestEnt = ent
  11002.  
  11003. break
  11004.  
  11005. end
  11006.  
  11007.  
  11008.  
  11009.  
  11010.  
  11011. return nearestEnt
  11012.  
  11013. end
  11014.  
  11015.  
  11016.  
  11017.  
  11018.  
  11019. gameevent.Listen( "entity_killed" )
  11020.  
  11021. hook.Add( "entity_killed", "ace_propkilldetector", function( data )
  11022.  
  11023. local inflictor_index = data.entindex_inflictor
  11024.  
  11025. local attacker_index = data.entindex_attacker
  11026.  
  11027. local damagebits = data.damagebits
  11028.  
  11029. local victim_index = data.entindex_killed
  11030.  
  11031.  
  11032.  
  11033. local ply = "nobody?"
  11034.  
  11035. local retard = game.GetWorld()
  11036.  
  11037. local atk = "the map"
  11038.  
  11039. local wep = "unknown weapon"
  11040.  
  11041. local killah = game.GetWorld()
  11042.  
  11043. local inflictor = ents.GetByIndex(inflictor_index)
  11044.  
  11045.  
  11046.  
  11047. for _, p in pairs(player.GetAll()) do
  11048.  
  11049. if p:EntIndex() == victim_index then ply = p:Nick() retard = p end
  11050.  
  11051. if p:EntIndex() == attacker_index then
  11052.  
  11053. atk = p:Nick()
  11054.  
  11055. killah = p
  11056.  
  11057. if p:GetActiveWeapon() and p:GetActiveWeapon():IsValid() then wep = p:GetActiveWeapon():GetPrintName() end
  11058.  
  11059. end
  11060.  
  11061. end
  11062.  
  11063.  
  11064.  
  11065. if AB.Vars.DeathTaunts and retard == LocalPlayer() then LocalPlayer():ConCommand( "ace_chatspam_once" ) end
  11066.  
  11067. if AB.Vars.NewLifeRule and retard == LocalPlayer() then LocalPlayer():ConCommand( "ace_random_rpname" ) end
  11068.  
  11069.  
  11070.  
  11071. if attacker_index == victim_index then AB.DebugLog( ply.." necked himself", Color(180,150,150) ) if AB.Vars.NotifyKills then AB.ChatText( ply.." necked himself", Color(255,155,105) ) end return end
  11072.  
  11073. if inflictor:IsValid() and inflictor:GetClass() == "prop_physics" then
  11074.  
  11075. AB.DebugLog( ply.." got crushed by a prop!", Color(180,150,150) )
  11076.  
  11077. if AB.Vars.NotifyKills then AB.ChatText( ply.." got crushed by a prop!", Color(255,155,105) ) end
  11078.  
  11079. return
  11080.  
  11081. end
  11082.  
  11083.  
  11084.  
  11085. AB.DebugLog( atk.." killed "..ply.." with a "..wep, Color(200,150,150) )
  11086.  
  11087. if AB.Vars.NotifyKills then AB.ChatText( atk.." killed "..ply.." with a "..wep, Color(255,155,105) ) end
  11088.  
  11089.  
  11090.  
  11091. if AB.Vars.KillTaunts and retard != LocalPlayer() and killah == LocalPlayer() then LocalPlayer():ConCommand( "say "..AB.GenerateInsult4() ) end
  11092.  
  11093. /*
  11094.  
  11095. local ply = "nobody"
  11096.  
  11097. local prop = "nothing"
  11098.  
  11099.  
  11100.  
  11101. for k, v in pairs(ents.GetAll()) do
  11102.  
  11103. if v:EntIndex() == victim_index then ply = v end
  11104.  
  11105. if (v:GetClass() == "prop_physics" or string.find(v:GetClass(), "gmod_") or string.find(v:GetClass(), "wire_") ) and v:EntIndex() == attacker_index then prop = v end
  11106.  
  11107. end
  11108.  
  11109.  
  11110.  
  11111. if !FPP then return end
  11112.  
  11113.  
  11114.  
  11115. if ply == "nobody" or prop == "nothing" then return end
  11116.  
  11117. if !FPP.entGetOwner( prop ):IsValid() then return end
  11118.  
  11119.  
  11120.  
  11121. AB.DebugLog( FPP.entGetOwner( prop ):Nick().." propkilled "..ply:Nick().." with a "..prop:GetClass().." ("..prop:GetModel()..")", Color(150,150,55) )
  11122.  
  11123. */
  11124.  
  11125.  
  11126.  
  11127. end )
  11128.  
  11129.  
  11130.  
  11131. gameevent.Listen( "player_connect" )
  11132.  
  11133. hook.Add( "player_connect", "ace_playerconnected", function( data )
  11134.  
  11135. AB.DebugLog( data.name .. " ( ".. data.networkid.." ) has connected to the server.", Color(150,150,150) )
  11136.  
  11137. end )
  11138.  
  11139.  
  11140.  
  11141. gameevent.Listen( "player_hurt" )
  11142.  
  11143. hook.Add( "player_hurt", "crosshair_readinjuries", function( data )
  11144.  
  11145. if data.attacker == LocalPlayer():UserID() then AB.CrossHairAlpha = 255 end
  11146.  
  11147. end )
  11148.  
  11149.  
  11150.  
  11151. gameevent.Listen( "player_disconnect" )
  11152.  
  11153. hook.Add( "player_disconnect", "ace_playerleave", function( data )
  11154.  
  11155. timer.Simple( 0.5, function() AB.RemoveInvalidFriends() end )
  11156.  
  11157. AB.DebugLog( data.name .. " ( ".. data.networkid.." ) has disconnected from the server. ( ".. data.reason .." )", Color(150,150,150) )
  11158.  
  11159. end )
  11160.  
  11161.  
  11162.  
  11163.  
  11164.  
  11165.  
  11166.  
  11167. AB.DebugLog( "Acebot multihack initialized...", Color(200,200,255) )
  11168.  
  11169. AB.DebugLog( "Version: "..AB.Version, Color(200,200,255) )
  11170.  
  11171.  
  11172.  
  11173. if ULib then
  11174.  
  11175. AB.DebugLog( "ULX overrides detected, repairing hook system...", Color(150,250,150) )
  11176.  
  11177. AB.DebugLog( "Hook system successfully repaired", Color(150,250,150) )
  11178.  
  11179. end
  11180.  
  11181.  
  11182.  
  11183. function AB.InitPostEntity()
  11184.  
  11185. -- need a timer to give the server time to send shit to us otherwise this only works on shit thats in the same PVS area as us
  11186.  
  11187.  
  11188.  
  11189. timer.Simple( 1, function()
  11190.  
  11191. AB.AddConnectedFriends()
  11192.  
  11193. if gmod.GetGamemode().Name == "Trouble in Terrorist Town" then
  11194.  
  11195. AB.IsTTT = true
  11196.  
  11197. hook.Add( "TTTBeginRound", "ab_clearTlist", AB.ClearTraitors)
  11198.  
  11199. end
  11200.  
  11201.  
  11202.  
  11203. end)
  11204.  
  11205.  
  11206.  
  11207. end
  11208.  
  11209. hook.Add( "InitPostEntity", "ab_init", AB.InitPostEntity)
  11210.  
  11211.  
  11212.  
  11213.  
  11214.  
  11215. concommand.Add("aegis_printlogs", function() AB.ChatText( "aegis_printlogs is deprecated, use aegis_view_anticheats instead", Color(255,205,205) ) end)
  11216.  
  11217.  
  11218.  
  11219. concommand.Add("aegis_dumpnwstrings", function()
  11220.  
  11221. local netstrings = {}
  11222.  
  11223. for i = 1, 9999 do
  11224.  
  11225. local s = util.NetworkIDToString( i )
  11226.  
  11227. if s then print( "[aegis] NetChannel "..i.." = "..s ) else break end
  11228.  
  11229. end
  11230.  
  11231. end)
  11232.  
  11233.  
  11234.  
  11235. function AB.DumpHookTable( p, cmd, args )
  11236.  
  11237. local hks = args[1]
  11238.  
  11239. local hooktable = hook.GetTable()
  11240.  
  11241. if !hks or hks == "" then
  11242.  
  11243. for k, v in pairs( hooktable ) do
  11244.  
  11245. print( k.." = "..table.Count( v ).." hooks" )
  11246.  
  11247. end
  11248.  
  11249. elseif !hooktable[hks] then print( "Bad hook name! get it right you stupid fucking faggot") return
  11250.  
  11251. else
  11252.  
  11253. for k, v in pairs( hooktable[hks] ) do
  11254.  
  11255. print( k.." = "..debug.getinfo( v ).source.." lines: "..debug.getinfo( v ).linedefined.." - "..debug.getinfo( v ).lastlinedefined )
  11256.  
  11257. end
  11258.  
  11259. end
  11260.  
  11261. end
  11262.  
  11263. concommand.Add( "aegis_dumphooks", AB.DumpHookTable )
  11264.  
  11265.  
  11266.  
  11267. /*
  11268.  
  11269. function AB.SetRotateAngle( p, cmd, arg )
  11270.  
  11271. if !arg[1] or !isnumber(arg[1]) then return end
  11272.  
  11273. AB.NumberVars.PKRotateAngle = tonumber(arg[1])
  11274.  
  11275. end
  11276.  
  11277.  
  11278.  
  11279. concommand.Add( "ace_180up_vertical_angle", AB.SetRotateAngle )
  11280.  
  11281. */
  11282.  
  11283.  
  11284.  
  11285. local namesf = {
  11286.  
  11287. "Joe",
  11288.  
  11289. "John",
  11290.  
  11291. "Jack",
  11292.  
  11293. "Barry",
  11294.  
  11295. "Chris",
  11296.  
  11297. "Christopher",
  11298.  
  11299. "Michael",
  11300.  
  11301. "David",
  11302.  
  11303. "Thomas",
  11304.  
  11305. "Paul",
  11306.  
  11307. "Tony",
  11308.  
  11309. "Mark",
  11310.  
  11311. "Cooper",
  11312.  
  11313. "Jared",
  11314.  
  11315. "James",
  11316.  
  11317. "Jimmy",
  11318.  
  11319. "Bob",
  11320.  
  11321. "Robert",
  11322.  
  11323. "Riley",
  11324.  
  11325. "William",
  11326.  
  11327. "Will",
  11328.  
  11329. "Donald",
  11330.  
  11331. "George",
  11332.  
  11333. "Ken",
  11334.  
  11335. "Steve",
  11336.  
  11337. "Bruce",
  11338.  
  11339. "Brian",
  11340.  
  11341. "Chad",
  11342.  
  11343. "Anthony",
  11344.  
  11345. "Tim",
  11346.  
  11347. "Eddie",
  11348.  
  11349. "Daniel",
  11350.  
  11351. "Larry",
  11352.  
  11353. "Jeff",
  11354.  
  11355. "Justin",
  11356.  
  11357. "Adam",
  11358.  
  11359. "Ralph",
  11360.  
  11361. "Brandon",
  11362.  
  11363. "Xavier",
  11364.  
  11365. "Greg",
  11366.  
  11367. "Gordon",
  11368.  
  11369. "Scott",
  11370.  
  11371. "Taine",
  11372.  
  11373. "Howie",
  11374.  
  11375. "Morgan",
  11376.  
  11377. "Curtis",
  11378.  
  11379. "Dwayne",
  11380.  
  11381. "Steven",
  11382.  
  11383. "Peter",
  11384.  
  11385. "Kevin",
  11386.  
  11387. "Coleman",
  11388.  
  11389. "Garry",
  11390.  
  11391. }
  11392.  
  11393.  
  11394.  
  11395. local namesfem = {
  11396.  
  11397. "Kate",
  11398.  
  11399. "Katie",
  11400.  
  11401. "Jane",
  11402.  
  11403. "Charlotte",
  11404.  
  11405. "Olivia",
  11406.  
  11407. "Chloe",
  11408.  
  11409. "Amelia",
  11410.  
  11411. "Isabel",
  11412.  
  11413. "Elise",
  11414.  
  11415. "Sophie",
  11416.  
  11417. "Scarlett",
  11418.  
  11419. "Lily",
  11420.  
  11421. "Lucy",
  11422.  
  11423. "Hannah",
  11424.  
  11425. "Evelyn",
  11426.  
  11427. "Willow",
  11428.  
  11429. "Anna",
  11430.  
  11431. "Sadie",
  11432.  
  11433. "Rose",
  11434.  
  11435. "Summer",
  11436.  
  11437. "Layla",
  11438.  
  11439. "Camille",
  11440.  
  11441. "Aylssa",
  11442.  
  11443. "Madeline",
  11444.  
  11445. "Morgan",
  11446.  
  11447. "Claire",
  11448.  
  11449. "Daisy",
  11450.  
  11451. "Alexis",
  11452.  
  11453. "Victoria",
  11454.  
  11455. "Paige",
  11456.  
  11457. "Bianca",
  11458.  
  11459. "Rhiannon",
  11460.  
  11461. "Hazel",
  11462.  
  11463. "Mia",
  11464.  
  11465. "Grace",
  11466.  
  11467. "Ada",
  11468.  
  11469. "Britney",
  11470.  
  11471. "Alanna",
  11472.  
  11473. "Fabienne",
  11474.  
  11475. "Claudia",
  11476.  
  11477. "Jacinta",
  11478.  
  11479. "Jackie",
  11480.  
  11481. "Heather",
  11482.  
  11483. "Margot",
  11484.  
  11485. }
  11486.  
  11487.  
  11488.  
  11489. local namesl = {
  11490.  
  11491. "Houston",
  11492.  
  11493. "Burch",
  11494.  
  11495. "Smith",
  11496.  
  11497. "Jones",
  11498.  
  11499. "Trump",
  11500.  
  11501. "Sanders",
  11502.  
  11503. "Abbott",
  11504.  
  11505. "Cruise",
  11506.  
  11507. "Brown",
  11508.  
  11509. "Hopgood",
  11510.  
  11511. "Davis",
  11512.  
  11513. "Miller",
  11514.  
  11515. "Wilson",
  11516.  
  11517. "Walker",
  11518.  
  11519. "Lee",
  11520.  
  11521. "Lions",
  11522.  
  11523. "Bryant",
  11524.  
  11525. "Hall",
  11526.  
  11527. "Adams",
  11528.  
  11529. "Green",
  11530.  
  11531. "Aldridge",
  11532.  
  11533. "Turner",
  11534.  
  11535. "Anderson",
  11536.  
  11537. "Morris",
  11538.  
  11539. "Howard",
  11540.  
  11541. "Swanson",
  11542.  
  11543. "Peterson",
  11544.  
  11545. "Powell",
  11546.  
  11547. "Keating",
  11548.  
  11549. "Rudd",
  11550.  
  11551. "Coleman",
  11552.  
  11553. "Cunningham",
  11554.  
  11555. "Donnell",
  11556.  
  11557. "Callaghan",
  11558.  
  11559. "Smithers",
  11560.  
  11561. "Burns",
  11562.  
  11563. "Bonds",
  11564.  
  11565. "Gonzales",
  11566.  
  11567. "Griffin",
  11568.  
  11569. "Woods",
  11570.  
  11571. "Gibson",
  11572.  
  11573. "Webb",
  11574.  
  11575. "Simpson",
  11576.  
  11577. "Freeman",
  11578.  
  11579. "Mcdonald",
  11580.  
  11581. "Butters",
  11582.  
  11583. "Masterson",
  11584.  
  11585. "Keefe",
  11586.  
  11587. "Sanderson",
  11588.  
  11589. "Badger",
  11590.  
  11591. "Cantrip",
  11592.  
  11593. "Williams",
  11594.  
  11595. "DontBanMe",
  11596.  
  11597. "Lopez",
  11598.  
  11599. "Clark",
  11600.  
  11601. "Campbell",
  11602.  
  11603. "King",
  11604.  
  11605. "Coleman",
  11606.  
  11607. "Chongs",
  11608.  
  11609. "Riviera",
  11610.  
  11611. "Ward",
  11612.  
  11613. "Gray",
  11614.  
  11615. "Ross",
  11616.  
  11617. }
  11618.  
  11619.  
  11620.  
  11621. function AB.GenerateRPName( p, cmd, arg )
  11622.  
  11623. if !DarkRP then AB.ChatText( "Random rpname only works on darkrp you dipshit!", Color(255,205,205) ) return end
  11624.  
  11625. RunConsoleCommand( "darkrp", "rpname", table.Random( namesf ).." "..table.Random( namesl ) )
  11626.  
  11627. end
  11628.  
  11629. concommand.Add( "ace_random_rpname_male", AB.GenerateRPName )
  11630.  
  11631.  
  11632.  
  11633. function AB.GenerateRPNameFemale( p, cmd, arg )
  11634.  
  11635. if !DarkRP then AB.ChatText( "Random rpname only works on darkrp you dipshit!", Color(255,205,205) ) return end
  11636.  
  11637. RunConsoleCommand( "darkrp", "rpname", table.Random( namesfem ).." "..table.Random( namesl ) )
  11638.  
  11639. end
  11640.  
  11641. concommand.Add( "ace_random_rpname_female", AB.GenerateRPNameFemale )
  11642.  
  11643.  
  11644.  
  11645. function AB.GenerateRPNameBoth( p, cmd, arg )
  11646.  
  11647. if !DarkRP then AB.ChatText( "Random rpname only works on darkrp you dipshit!", Color(255,205,205) ) return end
  11648.  
  11649. if math.random( 1, 100 ) > 55 then
  11650.  
  11651. RunConsoleCommand( "darkrp", "rpname", table.Random( namesfem ).." "..table.Random( namesl ) )
  11652.  
  11653. else
  11654.  
  11655. RunConsoleCommand( "darkrp", "rpname", table.Random( namesf ).." "..table.Random( namesl ) )
  11656.  
  11657. end
  11658.  
  11659. end
  11660.  
  11661. concommand.Add( "ace_random_rpname", AB.GenerateRPNameBoth )
  11662.  
  11663.  
  11664.  
  11665.  
  11666.  
  11667. function AB.RandomRPJob( p, cmd, arg )
  11668.  
  11669. if !DarkRP then AB.ChatText( "Random rp job only works on darkrp you dipshit!", Color(255,205,205) ) return end
  11670.  
  11671. local fag = DarkRP.getCategories()
  11672.  
  11673. local jcmds = {}
  11674.  
  11675. for k, v in pairs( fag.jobs ) do
  11676.  
  11677. for _, j in pairs( v.members ) do
  11678.  
  11679. if j.customCheck and !j.customCheck( LocalPlayer() ) then continue end
  11680.  
  11681. if j.vote then continue end
  11682.  
  11683. if j.NeedToChangeFrom then continue end
  11684.  
  11685. table.insert( jcmds, j.command )
  11686.  
  11687. end
  11688.  
  11689. end
  11690.  
  11691. RunConsoleCommand( "darkrp", table.Random( jcmds ) )
  11692.  
  11693. end
  11694.  
  11695. concommand.Add( "ace_random_rp_job", AB.RandomRPJob )
  11696.  
  11697.  
  11698.  
  11699.  
  11700.  
  11701. function AB.InnocentRoleplayer( p, cmd, arg )
  11702.  
  11703. LocalPlayer():ConCommand( "cl_weaponcolor "..math.Rand( 0, 1 ).." "..math.Rand( 0, 1 ).." "..math.Rand( 0, 1 ) )
  11704.  
  11705. LocalPlayer():ConCommand( "cl_playercolor "..math.Rand( 0, 1 ).." "..math.Rand( 0, 1 ).." "..math.Rand( 0, 1 ) )
  11706.  
  11707. RunConsoleCommand( "kill" )
  11708.  
  11709. AB.GenerateRPNameBoth()
  11710.  
  11711. AB.RandomRPJob()
  11712.  
  11713.  
  11714.  
  11715. end
  11716.  
  11717. concommand.Add( "ace_innocent_roleplayer", AB.InnocentRoleplayer )
  11718.  
  11719.  
  11720.  
  11721. local ctxlines = {
  11722.  
  11723. "Hi, my name is Crash Jackson.",
  11724.  
  11725. "I have access to 4 paid alts, each one of which allows me access to 5 other family shared steam alts.",
  11726.  
  11727. "I plan to crash your server repeatedly until every single alt is banned.",
  11728.  
  11729. "Then I'll buy some more alts and start over again.",
  11730.  
  11731. "I won't stop until your server is down forever.",
  11732.  
  11733. "Have a nice day.",
  11734.  
  11735. }
  11736.  
  11737.  
  11738.  
  11739. local ctxlines2 = {
  11740.  
  11741. "Hi, my name is Crash Bandicoot.",
  11742.  
  11743. "I have access to 4 hubwords, each one of which allows me access to 5 other levels.",
  11744.  
  11745. "I plan to find all the power crystals until every single one is mine.",
  11746.  
  11747. "Then I'll make a sequel game and start over again.",
  11748.  
  11749. "I won't stop until everybody stops buying my games.",
  11750.  
  11751. "Have a nice day.",
  11752.  
  11753. }
  11754.  
  11755.  
  11756.  
  11757. function AB.CrashJackson( p, cmd, arg )
  11758.  
  11759. for k, v in pairs( ctxlines ) do
  11760.  
  11761. if DarkRP then
  11762.  
  11763. timer.Simple( k * 2, function() RunConsoleCommand("say", "// "..v) end )
  11764.  
  11765. else
  11766.  
  11767. timer.Simple( k * 2, function() RunConsoleCommand("say", v) end )
  11768.  
  11769. end
  11770.  
  11771. end
  11772.  
  11773. end
  11774.  
  11775. concommand.Add( "ace_crashjackson", AB.CrashJackson )
  11776.  
  11777.  
  11778.  
  11779. function AB.CrashBandicoot( p, cmd, arg )
  11780.  
  11781. for k, v in pairs( ctxlines2 ) do
  11782.  
  11783. if DarkRP then
  11784.  
  11785. timer.Simple( k * 2, function() RunConsoleCommand("say", "// "..v) end )
  11786.  
  11787. else
  11788.  
  11789. timer.Simple( k * 2, function() RunConsoleCommand("say", v) end )
  11790.  
  11791. end
  11792.  
  11793. end
  11794.  
  11795. end
  11796.  
  11797. concommand.Add( "ace_crashbandicoot", AB.CrashBandicoot )
  11798.  
  11799.  
  11800.  
  11801. function AB.ErrorRape()
  11802.  
  11803. local str = "\n"
  11804.  
  11805. for i = 1, 512 do str = str.."\n" end
  11806.  
  11807. Error( str )
  11808.  
  11809. end
  11810.  
  11811.  
  11812.  
  11813. concommand.Add( "ace_exploit_rapeconsole", AB.ErrorRape )
  11814.  
  11815. /*
  11816.  
  11817. local cblockedcmds = {
  11818.  
  11819. ["connect"] = true,
  11820.  
  11821. ["disconnect"] = true,
  11822.  
  11823. ["impulse"] = true,
  11824.  
  11825. ["pp_texturize"] = true,
  11826.  
  11827. ["pp_texturize_scale"] = true,
  11828.  
  11829. ["demos"] = true,
  11830.  
  11831. ["kill"] = false,
  11832.  
  11833. ["say"] = false,
  11834.  
  11835. }
  11836.  
  11837.  
  11838.  
  11839. local function BlockedCMDMenu()
  11840.  
  11841. if CBMenu then return end
  11842.  
  11843.  
  11844.  
  11845. local CBMenu = vgui.Create("DFrame")
  11846.  
  11847. CBMenu:SetSize(500,455)
  11848.  
  11849. CBMenu:SetTitle("Manage Blocked ConCommands")
  11850.  
  11851. CBMenu:Center()
  11852.  
  11853. CBMenu:MakePopup()
  11854.  
  11855.  
  11856.  
  11857. CBMenu.Paint = function( s, w, h )
  11858.  
  11859. surface.SetDrawColor( Color(30, 30, 30, 255) )
  11860.  
  11861. surface.DrawRect( 0, 0, w, h )
  11862.  
  11863. surface.SetDrawColor( Color(55, 55, 55, 255) )
  11864.  
  11865. surface.DrawOutlinedRect( 0, 0, w, h )
  11866.  
  11867. surface.DrawOutlinedRect( 1, 1, w - 2, h - 2 )
  11868.  
  11869. surface.SetDrawColor( Color(0, 0, 0, 200) )
  11870.  
  11871. surface.DrawRect( 10, 25, w - 20, h - 35 )
  11872.  
  11873. end
  11874.  
  11875.  
  11876.  
  11877. local Plist = vgui.Create( "DPanelList", CBMenu )
  11878.  
  11879. Plist:SetSize( CBMenu:GetWide() - 20, CBMenu:GetTall() - 35 )
  11880.  
  11881. Plist:SetPadding( 5 )
  11882.  
  11883. Plist:SetSpacing( 5 )
  11884.  
  11885. Plist:EnableHorizontal( false )
  11886.  
  11887. Plist:EnableVerticalScrollbar( true )
  11888.  
  11889. Plist:SetPos( 10, 25 )
  11890.  
  11891. Plist:SetName( "" )
  11892.  
  11893.  
  11894.  
  11895. local function CreateCMDBlockPanel( cmd )
  11896.  
  11897. if !CBMenu then return end
  11898.  
  11899. local cmdp = vgui.Create( "DPanel" )
  11900.  
  11901. cmdp:SetSize( Plist:GetWide(), 30 )
  11902.  
  11903. cmdp.Cmd = cmd
  11904.  
  11905. cmdp.Paint = function( s, w, h )
  11906.  
  11907. surface.SetDrawColor( Color(50, 50, 50, 255) )
  11908.  
  11909. surface.DrawRect( 0, 0, w, h )
  11910.  
  11911. surface.SetDrawColor( Color(65, 65, 65, 255) )
  11912.  
  11913. surface.DrawOutlinedRect( 0, 0, w, h )
  11914.  
  11915. draw.DrawText( cmdp.Cmd, "DermaDefault", 10, 8, Color(255,255,255) )
  11916.  
  11917. end
  11918.  
  11919.  
  11920.  
  11921. local TButton = vgui.Create( "DButton", cmdp )
  11922.  
  11923. TButton:SetPos( 390, 2 )
  11924.  
  11925. TButton:SetText( "" )
  11926.  
  11927. TButton:SetTextColor( Color(255, 255, 255, 255) )
  11928.  
  11929. TButton:SetSize( 60, 26 )
  11930.  
  11931.  
  11932.  
  11933. TButton.Paint = function( self, w, h )
  11934.  
  11935. local dtx = "Block"
  11936.  
  11937. local dtc = Color(150, 30, 30, 255)
  11938.  
  11939. if !cblockedcmds[cmdp.Cmd] then dtx = "Allow" dtc = Color(20, 20, 20, 255) end
  11940.  
  11941. surface.SetDrawColor( dtc )
  11942.  
  11943. surface.DrawRect( 0, 0, w, h )
  11944.  
  11945. surface.SetDrawColor( Color(45, 45, 45, 255) )
  11946.  
  11947. surface.DrawOutlinedRect( 0, 0, w, h )
  11948.  
  11949. draw.DrawText( dtx, "DermaDefault", 30, 6, Color(255,255,255), 1 )
  11950.  
  11951. end
  11952.  
  11953.  
  11954.  
  11955. TButton.DoClick = function() cblockedcmds[cmdp.Cmd] = !cblockedcmds[cmdp.Cmd] end
  11956.  
  11957.  
  11958.  
  11959. Plist:AddItem( cmdp )
  11960.  
  11961. end
  11962.  
  11963.  
  11964.  
  11965.  
  11966.  
  11967. for k, v in pairs( cblockedcmds ) do
  11968.  
  11969. CreateCMDBlockPanel( k )
  11970.  
  11971. end
  11972.  
  11973.  
  11974.  
  11975. end
  11976.  
  11977. concommand.Add("aegis_blockedcmds", BlockedCMDMenu )
  11978.  
  11979. */
  11980.  
  11981.  
  11982.  
  11983. AB.WraithVision = false
  11984.  
  11985. function AB.ToggleWraithVision()
  11986.  
  11987. local mapmaterials = Entity( 0 ):GetMaterials()
  11988.  
  11989. for k, v in pairs( mapmaterials ) do
  11990.  
  11991. local m = Material( v )
  11992.  
  11993. if !AB.WraithVision then m:SetFloat( "$alpha", 0.75 ) else m:SetFloat( "$alpha", 1 ) end
  11994.  
  11995. end
  11996.  
  11997. AB.WraithVision = !AB.WraithVision
  11998.  
  11999. end
  12000.  
  12001. concommand.Add( "ace_wraith_vision", AB.ToggleWraithVision )
Add Comment
Please, Sign In to add comment