Guest User

Untitled

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