· 9 years ago · Feb 01, 2017, 04:22 AM
1/*
2
3 snixzz3 - snixzz.net official Garry's Mod cheat
4 by 0xymoron
5
6 !!! You do not have permission to redistribute this. !!!
7 !!! You do not have permission to modify this, use any of this, or manipulate it in any way. !!!
8
9 -----------------
10
11 Credits
12
13 -----------------
14
15 fr1kin <3 - for teaching me Lua in the first place & tons of help along the way.
16 ethos - TONS of help with optimization & finding my mistakes
17
18 -----------------------------------
19
20 Interesting functions/ideas
21
22 -----------------------------------
23
24 gcinfo() - Get Lua memory usage in KB
25 AngRand() - Generates a random pitch, yaw, & roll -90 to 90 & -180 to 180
26 JoinServer( ip ) - menu state only
27 HSVToColor( RealTime() * 120 % 360, 1, 1 ) - Rainbow! ~ I forgot who gave me this, but thanks.
28
29 -------------------------------------
30
31 Potential APIs to integrate
32
33 -------------------------------------
34
35 http://tambal.azurewebsites.net/joke/random - A nice joke generator API output: {"joke":"joke string"}
36
37*/
38
39if _G.snixzz then chat.AddText( Color( 255, 0, 0 ), "\n\n\n\n\nsnixzz3 cannot be reloaded! Reconnect then re-load it." ) return end
40if game.SinglePlayer() then chat.AddText( Color( 255, 0, 0 ), "\n\n\n\n\nsnixzz3 will not load in singleplayer!" ) return end
41
42local snixzz = {}
43
44snixzz.IsDev = function( ply ) return ply:SteamID64() == "76561198040553376" end -- I am not proud of myself.
45
46if string.find( GetHostName(), "SidewaysGaming.net" ) && !snixzz.IsDev( LocalPlayer() ) then chat.AddText( Color( 255, 0, 0 ), "\n\n\n\n\nsnixzz3 will not load on the developer's servers!" ) return end
47
48snixzz.Panic = false
49
50snixzz.DataFolder = "snixzz3_beta"
51
52snixzz.Info = {
53 ["Version"] = "build 1.3.4b",
54 ["Updated"] = "1/31/17",
55 ["Size"] = "153kb",
56 ["Lines"] = "6,200",
57}
58
59// Data cache
60snixzz.Cache = {}
61snixzz.ConsoleHistory = {}
62snixzz.ChatCache = {}
63snixzz.ChatHistory = {}
64
65local G = table.Copy( _G )
66local _R = G.debug.getregistry()
67local hookGetTableCopy = G.table.Copy( hook.GetTable() )
68
69local EntM = G.FindMetaTable( "Entity" )
70local MatM = G.FindMetaTable( "IMaterial" )
71
72-- Gamemode checks
73snixzz.IsTTT = G.GAMEMODE.Name == "Trouble in Terrorist Town"
74snixzz.IsDarkRP = ( -- Wow look at all these garbage DarkRP renames.
75G.GAMEMODE.Name == "DarkRP" or G.GAMEMODE.Name == "MethRP" or
76G.GAMEMODE.Name == "The Purge" or G.GAMEMODE.Name == "starwarsrp" or
77G.GAMEMODE.Name == "KingdomRP" or G.GAMEMODE.Name == "MilitaryRP" or
78G.GAMEMODE.Name == "SlaveRP" or G.GAMEMODE.Name == "1942RP" or
79G.GAMEMODE.Name == "ZombieRP" or G.GAMEMODE.Name == "SchoolRP" or
80G.GAMEMODE.Name == "PrisonRP" or G.GAMEMODE.Name == "HaloRP" or
81G.GAMEMODE.Name == "PonyRP" or G.GAMEMODE.Name == "MexicanBorderRPP" or G.GAMEMODE.Name == "HogwartsRP" -- end my suffering. what the fuck is this shit.
82)
83snixzz.IsSandbox = G.GAMEMODE.Name == "Sandbox"
84snixzz.IsMurder = G.GAMEMODE.Name == "Murder"
85snixzz.IsProphunt = G.GAMEMODE.Name == "Prop Hunt" or G.GAMEMODE.Name == "Prophunt"
86
87snixzz.Detours = {
88 ["net.Start"] = {
89 ["checksaum"] = true,
90 ["checksum"] = true,
91 ["gcontrolled_vars"] = true,
92 ["controlled_vars"] = true,
93 ["quack"] = true,
94 ["leyac_cmd"] = true, -- old but blocks old versions
95 },
96 ["Commands"] = {
97 "GetTheTime",
98 },
99}
100
101snixzz["Spoof"] = {
102 ["sv_allowcslua"] = 0,
103 ["sv_cheats"] = 0,
104 ["host_timescale"] = 1,
105 ["host_framerate"] = 0,
106}
107
108// Aimbot vars nd shit
109snixzz.Target = nil
110snixzz.Typing = false
111snixzz.Locked = false
112
113snixzz.Bools = {
114
115 -- Load settings
116 ["load_unhooked"] = false,
117
118 -- Aimbot & view settings
119 ["aim_toggle"] = false,
120 ["aim_autoshoot"] = true,
121 ["aim_silent"] = true,
122 ["aim_psilent"] = false,
123 ["aim_anti"] = false,
124 ["aim_badshots"] = false,
125 ["aim_nospread"] = true,
126 ["aim_norecoil"] = true,
127 ["aim_prediction"] = true,
128 ["aim_antiantiaim"] = false,
129 ["aim_checkfov"] = false,
130 ["aim_ignorelos"] = false,
131 ["aim_ignoresteam"] = true,
132 ["aim_ignoreadmins"] = false,
133 ["aim_ignorebots"] = false,
134 ["aim_ignoreteam"] = false,
135 ["aim_ignorefriends"] = true,
136 ["aim_ignoretraitors"] = false,
137 ["aim_onlytraitors"] = false,
138 ["aim_holdtarget"] = false,
139
140 -- ESP settings
141 ["esp_enabled"] = true,
142 ["esp_name"] = true,
143 ["esp_health_text"] = true,
144 ["esp_health_bar"] = true,
145 ["esp_chams"] = true,
146 ["esp_chams_weapon"] = true,
147 ["esp_weapon"] = true,
148 ["esp_box"] = true,
149 ["esp_crosshair"] = false,
150 ["esp_crosshair_box"] = false,
151 ["esp_laser"] = true,
152 ["esp_nohands"] = true,
153 ["esp_status"] = true,
154 ["esp_list"] = true,
155 ["esp_snaplines"] = false,
156 ["esp_distance"] = false,
157 ["esp_dynamiclight"] = false,
158 ["esp_wireweapon"] = false,
159 ["esp_aimpos"] = false,
160 ["esp_asus_walls"] = false,
161 ["esp_bullet_trace"] = false,
162 ["esp_hitbox"] = false,
163
164 ["misc_bhop"] = true,
165 ["misc_triggerbot"] = false,
166 ["misc_triggerbot_nospread"] = true,
167 ["misc_thirdperson"] = false,
168 ["misc_traitor_finder"] = false,
169 ["misc_murder_finder"] = false,
170 ["misc_prophunt_finder"] = false,
171 ["misc_chat_spam"] = false,
172 ["misc_autostrafe"] = false,
173 ["misc_rapidfire"] = false,
174 ["misc_autoreload"] = false, -- todo
175
176}
177
178snixzz.Vars = {
179
180 -- Aimbot Vars
181 ["aim_distance"] = 2147483647,
182 ["aim_fov"] = 180,
183 ["aim_offset"] = 0,
184 ["aim_method"] = "Hitbox",
185 ["aim_anti_method"] = "Classic",
186 ["aim_hitbox"] = "Head",
187 ["aim_bone"] = "Head",
188 ["aim_target_method"] = "Distance",
189 ["aim_prediction_method"] = "Engine Velocity",
190 ["aim_anti_spin_speed"] = 10,
191 ["aim_target_type"] = "Players",
192
193 -- ESP Vars
194 ["esp_distance"] = 3000,
195 ["esp_chams_material"] = "Solid",
196 ["esp_asus_alpha"] = 0.95,
197 ["esp_box_width"] = 1.5,
198 ["esp_fov"] = 90,
199 ["esp_laser_attachment"] = "Iron Sights",
200 ["esp_type"] = "Players",
201
202 -- Misc Vars
203 ["speedhack_speed"] = 3.5,
204 ["speedhack_type"] = "pSpeed",
205
206 ["misc_triggerbot_method"] = "Hitbox",
207 ["misc_triggerbot_type"] = "Players",
208 ["misc_menucolor"] = Color( 99, 99, 99, 163 ),
209 ["misc_menucolor2"] = Color( 0, 221, 225, 145 ),
210 ["misc_lasercolor"] = Color( 255, 0, 0, 255 ),
211 ["misc_thirdperson_distance"] = 90,
212
213 ["misc_chat_spam_method"] = "Advertise",
214 ["misc_chat_spam_message"] = "Visit www.snixzz.net to download the best Garry's Mod Multi-Hack of 2017", -- TODO: add menu for dis
215
216}
217
218snixzz.Binds = {
219 ["+aimbot"] = KEY_F,
220 ["+menu"] = KEY_INSERT,
221 ["+speedhack"] = KEY_B,
222 ["+triggerbot"] = KEY_G,
223 ["chat"] = KEY_T,
224}
225
226snixzz.Entities = {}
227snixzz.Friends = {}
228
229snixzz.BadEntities = {
230
231 ["env_sprite"] = true,
232 ["player"] = true,
233 ["prop_physics"] = true,
234 ["prop_door_rotating"] = true,
235 ["prop_dynamic"] = true,
236 ["viewmodel"] = true,
237 ["weapon_physgun"] = true,
238 ["weapon_physcannon"] = true,
239 ["keys"] = true,
240 ["pocket"] = true,
241 ["gmod_tool"] = true,
242 ["physgun_beam"] = true,
243 ["func_door_rotating"] = true,
244 ["func_breakable_surf"] = true,
245 ["worldspawn"] = true,
246 ["func_door"] = true,
247 ["class C_Sun"] = true,
248 ["func_useableladder"] = true,
249 ["class C_BaseEntity"] = true,
250 ["class C_PlayerResource"] = true,
251 ["class C_GMODGameRulesProxy"] = true,
252 ["class C_WaterLODControl"] = true,
253 ["class C_ShadowControl"] = true,
254 ["class C_EnvTonemapController"] = true,
255 ["class C_PhysPropClientside"] = true,
256 ["class C_HL2MPRagdoll"] = true,
257 ["class C_BaseFlex"] = true,
258 ["class C_ParticleSystem"] = true,
259 ["class C_RopeKeyframe"] = true,
260 ["env_skypaint"] = true,
261 ["manipulate_bone"] = true,
262
263}
264
265snixzz.Keys = {
266 [1] = { Name = "A", Key = KEY_A },
267 [2] = { Name = "B", Key = KEY_B },
268 [3] = { Name = "C", Key = KEY_C },
269 [4] = { Name = "D", Key = KEY_D },
270 [5] = { Name = "E", Key = KEY_E },
271 [6] = { Name = "F", Key = KEY_F },
272 [7] = { Name = "G", Key = KEY_G },
273 [8] = { Name = "H", Key = KEY_H },
274 [9] = { Name = "I", Key = KEY_I },
275 [10] = { Name = "J", Key = KEY_J },
276 [11] = { Name = "K", Key = KEY_K },
277 [12] = { Name = "L", Key = KEY_L },
278 [13] = { Name = "M", Key = KEY_M },
279 [14] = { Name = "N", Key = KEY_N },
280 [15] = { Name = "O", Key = KEY_O },
281 [16] = { Name = "P", Key = KEY_P },
282 [17] = { Name = "Q", Key = KEY_Q },
283 [18] = { Name = "R", Key = KEY_R },
284 [19] = { Name = "S", Key = KEY_S },
285 [20] = { Name = "T", Key = KEY_T },
286 [21] = { Name = "U", Key = KEY_U },
287 [22] = { Name = "V", Key = KEY_V },
288 [23] = { Name = "W", Key = KEY_W },
289 [24] = { Name = "X", Key = KEY_X },
290 [25] = { Name = "Y", Key = KEY_Y },
291 [26] = { Name = "Z", Key = KEY_Z },
292 [27] = { Name = "SPACE", Key = KEY_SPACE },
293 [28] = { Name = "TAB", Key = KEY_TAB },
294 [29] = { Name = "Left Shift", Key = KEY_LSHIFT },
295 [30] = { Name = "Right Shift", Key = KEY_RSHIFT },
296 [31] = { Name = "Left Alt", Key = KEY_LALT },
297 [32] = { Name = "Right Alt", Key = KEY_RALT },
298 [33] = { Name = "Delete", Key = KEY_DELETE },
299 [34] = { Name = ".", Key = KEY_PERIOD },
300 [35] = { Name = "/", Key = KEY_SLASH },
301 [36] = { Name = "[", Key = KEY_LBRACKET },
302 [37] = { Name = ";", Key = KEY_SEMICOLON },
303 [38] = { Name = "'", Key = KEY_APOSTROPHE },
304 [39] = { Name = ",", Key = KEY_COMMA },
305 [40] = { Name = "Insert", Key = KEY_INSERT },
306 //[41] = { Name = "Middle Mouse", Key = MOUSE_MIDDLE },
307}
308
309snixzz.DefaultConfig = G.file.Read( snixzz.DataFolder .. "/defaultconfig.txt", "DATA" ) or "default"
310
311// nospread shit
312snixzz.RecoilBackup = {}
313snixzz.Bullets = {}
314
315snixzz.BadWeapons = {
316 ["gmod_tool"] = true,
317 ["gmod_camera"] = true,
318 ["weapon_physgun"] = true,
319 ["weapon_crowbar"] = true,
320 ["keys"] = true,
321 ["pocket"] = true,
322}
323
324snixzz["Colors"] = {
325 ["White"] = Color( 255, 255, 255, 255 ),
326 ["Black"] = Color( 0, 0, 0, 255 ),
327 ["Green"] = Color( 0, 255, 0, 255 ),
328 ["Red"] = Color( 255, 0, 0, 255 ),
329 ["DarkRed"] = Color( 200, 50, 50, 255 ),
330 ["Cyan"] = Color( 0, 255, 255, 255 ),
331 ["Purple"] = Color( 255, 0, 255 ),
332}
333
334snixzz.AdminGroups = {
335 ["trialmod"] = true,
336 ["tmod"] = true,
337 ["trial-mod"] = true,
338 ["trialmoderator"] = true,
339 ["t-mod"] = true,
340 ["mod"] = true,
341 ["moderator"] = true,
342 ["operator"] = true,
343 ["vipmod"] = true,
344 ["vipmoderator"] = true,
345 ["admin"] = true,
346 ["vipadmin"] = true,
347 ["head-admin"] = true,
348 ["headadmin"] = true,
349 ["manager"] = true,
350 ["developer"] = true,
351 ["dev"] = true,
352 ["superadmin"] = true,
353 ["sadmin"] = true,
354 ["super"] = true,
355 ["vipsuperadmin"] = true, -- i cry
356 ["owner"] = true,
357 ["root_user"] = true,
358 ["vipowner"] = true, -- wouldn't be surprised it
359 ["doubleadmin"] = true, -- what the fuck is this
360}
361
362G.surface.CreateFont( "snixzz_status", { font = "coolvetica", size = 20, antialias = true } ) -- HudHintTextLarge
363G.surface.CreateFont( "snixzz_logo", { size = 25, weight = 0, antialias = true, shadow = false, font = "Tahoma" } )
364G.surface.CreateFont( "snixzz_logo_small", { size = 13, weight = 0, antialias = true, shadow = false, font = "Tahoma" } )
365G.surface.CreateFont( "ESPFont", { size = 14, weight = 200, antialias = false, shadow = true, font = "Arial" } )
366
367/* General notification/display functions */
368
369local sound
370function snixzz.Sound( Error )
371
372 if Error then
373
374 sound = G.Sound( "/HL1/fvox/buzz.wav" )
375
376 else
377
378 sound = G.Sound( "/buttons/button17.wav" )
379
380 end
381
382 local createSound = G.CreateSound( G.LocalPlayer(), sound )
383 createSound:Play()
384
385end
386
387function snixzz.AddToConsole( str )
388
389 if snixzz.ConsoleOpen && snixzz.cHistory && str != nil then
390
391 snixzz.cHistory:AddLine( str )
392
393 snixzz.cHistory:PerformLayout()
394 snixzz.cHistory.VBar:SetScroll( snixzz.cHistory.VBar.CanvasSize )
395
396 end
397
398 G.table.insert( snixzz.ConsoleHistory, str )
399
400end
401
402function snixzz.Message( col, text )
403
404 G.MsgC( snixzz.Colors.Cyan, "[snixzz3]: " )
405 G.MsgC( col, text .. "\n" )
406
407 snixzz.AddToConsole( text )
408
409end
410
411function snixzz.Chat( col, text, bool )
412
413 G.chat.AddText(
414
415 col, "[snixzz3]: ",
416 color_white, text
417
418 )
419
420 if !bool then
421
422 snixzz.AddToConsole( text )
423
424 end
425
426end
427
428function snixzz.ACNotify( text )
429
430 snixzz.Chat( snixzz.Colors.Red, text )
431
432 snixzz.logEvent( "anticheat", text )
433 snixzz.Sound( Error )
434
435end
436
437function snixzz.Debug( text )
438
439 snixzz.AddToConsole( text )
440
441 snixzz.logEvent( "Debug", text )
442
443end
444
445function snixzz.LogDetour( text )
446
447 snixzz.AddToConsole( text )
448
449 snixzz.logEvent( "Detour", text )
450
451end
452
453/* Detour function */
454function snixzz.Detour( Old, New )
455
456 snixzz.Detours[New] = Old
457 snixzz.AddToConsole( "Detouring function " .. G.tostring( Old ) .. "." )
458
459 return New
460end
461
462/* Module Loading */
463snixzz.Functions = {}
464snixzz.LoadedModules = {}
465
466function snixzz.IsInstalled( mod )
467
468 return G.file.Exists( "lua/bin/gmcl_" .. mod .. "_win32.dll", "GAME" )
469
470end
471
472-- ghetto module-less loading
473function snixzz.LoadModules()
474
475 -- Attempt to load modules
476 if G.system.IsWindows() then
477
478 --if snixzz.IsInstalled( "bsendpacket" ) then G.require( "bSendPacket" ) snixzz.LoadedModules["bSendPacket"] = true end
479 if snixzz.IsInstalled( "snixzz2" ) then G.require( "snixzz2" ) snixzz.LoadedModules["snixzz2"] = true end
480
481 end
482
483 -- Check & notify if the module successfully loaded
484 /*if bSendPacket != nil or !G.system.IsWindows() then
485
486 bSendPacket = true
487
488 snixzz.AddToConsole( "Successfully loaded module 'gmcl_bSendPacket_win32.dll'" )
489
490 else
491
492 bSendPacket = nil
493
494 snixzz.Chat( snixzz.Colors.Red, "Unable to load module 'gmcl_bSendPacket_win32.dll', disabling module features." )
495
496 end*/
497
498 if _G.NHTable != nil or !G.system.IsWindows() then
499
500 snixzz.Functions.PredictSpread = _G.NHTable.ZeroSpread
501 snixzz.Functions.LocalPlayer = _G.NHTable.SetLPIndex
502 snixzz.Functions.ConCommand = _G.NHTable.ClientCMD
503 snixzz.Functions.SetViewAngles = _G.NHTable.SetViewAngles
504 snixzz.Functions.NoDraw = _G.NHTable.NoDraw
505 snixzz.Functions.IsDormant = _G.NHTable.IsDormant
506 snixzz.Functions.IsVisible = _G.NHTable.IsVisible
507
508 -- C++ IsVisible func
509 snixzz.IsVisible = function( v, pos )
510
511 /*if snixzz.Bools["aim_antiantiaim"] then
512
513 snixzz.FixAngle( v )
514
515 end*/
516
517 return snixzz.Functions.IsVisible( G.LocalPlayer():GetShootPos(), pos, v:EntIndex() )
518 end
519
520 snixzz.AddToConsole( "Successfully loaded module 'gmcl_snixzz2_win32.dll'" )
521
522 _G.NHTable = nil
523
524 else
525
526 snixzz.Functions.PredictSpread = function( cmd, ang, vec ) return ang end
527 snixzz.Functions.LocalPlayer = G.LocalPlayer()
528 snixzz.Functions.ConCommand = function( cmd ) G.LocalPlayer():ConCommand( cmd ) end
529 snixzz.Functions.NoDraw = function( mat, bool ) end
530 snixzz.Functions.SetViewAngles = function( cmd, ang ) cmd:SetViewAngles( ang ) end
531 snixzz.Functions.IsDormant = function( index ) return false end
532
533 -- Lua IsVisible func
534 snixzz.Functions.IsVisible = function( shootpos, pos, v ) return false end
535
536 snixzz.IsVisible = function( v, pos )
537
538 /*if snixzz.Bools["aim_antiantiaim"] then
539
540 snixzz.FixAngle( v )
541
542 end*/
543
544 local traceTab = { start = G.LocalPlayer():GetShootPos(), endpos = pos, mask = MASK_SHOT, filter = function( entity ) return !entity:IsPlayer() end }
545 local trace = G.util.TraceLine( traceTab )
546 return !trace.Hit
547
548 end
549
550 snixzz.Chat( snixzz.Colors.Red, "Unable to load module 'gmcl_snixzz2_win32.dll', disabling module features." )
551
552 end
553
554end
555
556/*
557
558 VIP/Advertisement System/Stats
559 Fuck you, I put a lot of work into this & got like 1 $5 donation, which doesn't even cover 1% of the hosting costs.
560
561 This system is constantly being worked on.
562 I like tracking stats, there's really no reason for it I just enjoy seeing who's actually using my work.
563
564*/
565
566snixzz.Membership = "nil"
567
568function snixzz.Login( ply )
569
570 gui.EnableScreenClicker( true )
571
572 snixzz.loadFrame = G.vgui.Create( "DFrame" )
573 snixzz.loadFrame:SetTitle( "Logging in as '" .. ply:SteamID64() .. "'" )
574 snixzz.loadFrame:SetSize( 250, 50 )
575 snixzz.loadFrame:Center()
576 snixzz.loadFrame:ShowCloseButton( false )
577 snixzz.loadFrame:SetBackgroundBlur( true )
578 snixzz.loadFrame:SetDraggable( false )
579
580 snixzz.loadFrame.Paint = function( self )
581
582 G.draw.RoundedBox( 0, 0, 0, self:GetWide(), self:GetTall(), Color( 0, 0, 0, 100 ) )
583 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
584 G.surface.DrawOutlinedRect( 0, 0, self:GetWide(), self:GetTall() )
585 end
586
587 snixzz.loadProgress = G.vgui.Create( "DProgress", snixzz.loadFrame )
588 snixzz.loadProgress:SetPos( 5, 22.5 )
589 snixzz.loadProgress:SetSize( snixzz.loadFrame:GetWide() - 10, snixzz.loadFrame:GetTall() - 27.5 )
590 snixzz.loadProgress:SetFraction( 0.1 )
591
592 local oSystem = "Unknown"
593 local oIP = "Unknown"
594
595 if system.IsWindows() then oSystem = "Windows" elseif system.IsLinux() then oSystem = "Linux" elseif system.IsOSX() then oSystem = "OSX" else oSystem = "Unknon" end
596
597 snixzz.loadProgress:SetFraction( 0.2 )
598
599 snixzz.loadFrame:SetTitle( "Connecting to login server" )
600
601 G.http.Fetch( "http://snixzz.net/cheats/snixzz3/register.php?steamid=" .. ply:SteamID64() .. "&os=" .. oSystem, -- stop spamming this faggots
602
603 function( body )
604
605 snixzz.loadFrame:SetTitle( "Connected, getting user info." )
606
607 if body == "Error: Banned" then
608
609 snixzz.Ban( ply, "ip" )
610
611 return
612
613 end
614
615 local tab = util.JSONToTable( body )
616
617 if istable( tab ) then
618
619 if tab.group == "dev" then
620
621 snixzz.Membership = "dev"
622
623 elseif tab.group == "vip" then
624
625 snixzz.Membership = "vip"
626
627 elseif tab.group == "user" then
628
629 snixzz.Membership = "user"
630
631 elseif tab.group == "banned" then
632
633 snixzz.Membership = "banned"
634 snixzz.Banned = true
635
636 elseif body == "Error: Invalid SteamID64" then
637
638 snixzz.Chat( Color( 255, 0, 0 ), "There was a problem with your login ID, if you believe this is an error contact 0xymoron @ http://steamcommunity.com/id/sidewaysgamingdotnet/" )
639
640 snixzz.Membership = "user"
641
642 else
643
644 snixzz.Chat( Color( 255, 0, 0 ), "Failed to fetch user data from login server, running as guest." )
645
646 snixzz.Membership = "guest"
647
648 end
649
650 snixzz.loadProgress:SetFraction( 0.3 )
651
652 snixzz.LoadCheat()
653
654 elseif string.find( body, "Error: " ) then
655
656 snixzz.Chat( Color( 255, 255, 0 ), "\n\n\n\nFailed to load, please see below for reason." )
657 snixzz.Chat( Color( 255, 0, 0 ), body )
658
659 if snixzz.loadFrame then snixzz.loadFrame:Close() gui.EnableScreenClicker( false ) end
660
661 return
662
663 else
664
665 snixzz.loadFrame:SetTitle( "Received bad login info." )
666
667 snixzz.Membership = "guest"
668
669 snixzz.Chat( Color( 255, 0, 0 ), "Received bad login response, running as guest." )
670
671 snixzz.LoadCheat()
672
673 end
674
675 end,
676
677 function( error )
678
679 snixzz.loadFrame:SetTitle( "Failed to connect to login server." )
680
681 snixzz.Membership = "guest"
682
683 snixzz.LoadCheat( true )
684
685 end
686
687 )
688
689end
690
691function snixzz.IsVIP()
692
693 return snixzz.Membership == "vip" or snixzz.Membership == "dev"
694
695end
696
697function snixzz.Stats( ply, loading, func )
698
699 G.http.Fetch( "http://snixzz.net/cheats/snixzz3/stats.php?steamid=" .. ply:SteamID64() .. "&load=" .. tostring( loading ),
700
701 function( body )
702
703 if loading && snixzz.loadProgress then
704
705 snixzz.loadProgress:SetFraction( 0.7 )
706
707 end
708
709 if !string.find( body, "Error:" ) then
710
711 G.http.Fetch( "http://snixzz.net/cheats/snixzz3/stats/totalruns.txt",
712
713 function( statsbody )
714
715 if loading && snixzz.loadProgress then
716
717 snixzz.loadProgress:SetFraction( 0.8 )
718
719 func()
720
721 end
722
723 snixzz.AddToConsole( "Successfully posted stats, snixzz3 has now been ran " .. string.Comma( statsbody ) .. " times." )
724
725 end,
726
727 function( error )
728
729 snixzz.Chat( Color( 255, 0, 0 ), "Failed to receive stats." )
730
731 if loading && snixzz.loadProgress then
732
733 snixzz.loadProgress:SetFraction( 0.8 )
734
735 func()
736
737 end
738
739 end
740
741 )
742
743 else
744
745 snixzz.Chat( Color( 255, 0, 0 ), "Failed to post stats. (" .. body .. ")" )
746
747 end
748
749 end,
750
751 function( error )
752
753 snixzz.Chat( Color( 255, 0, 0 ), "Failed to post stats." )
754
755 end
756
757 )
758
759end
760
761function snixzz.OpenMOTDgdAd( bool )
762
763 local frame = vgui.Create( "DFrame" )
764 frame:SetTitle( "snixzz3 [MOTDgd.com] Advertisement | Consider donating to remove ads." )
765 frame:SetSize( ScrW() - 5, ScrH() - 80 )
766 frame:SetPos( 5, 5 )
767 frame:MakePopup()
768 frame:ShowCloseButton( false )
769 frame:SetDraggable( false )
770
771 frame.Paint = function( self )
772
773 G.draw.RoundedBox( 0, 0, 0, self:GetWide(), self:GetTall(), Color( 0, 0, 0, 150 ) )
774 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
775 G.surface.DrawOutlinedRect( 0, 0, self:GetWide(), self:GetTall() )
776
777 end
778
779 local html = vgui.Create( "HTML", frame )
780 html:SetSize( frame:GetWide() - 5, frame:GetTall() - 60 )
781 html:Dock( FILL )
782 //html:OpenURL( "-snip-" )
783
784 local close = vgui.Create( "DButton" )
785 close:SetSize( ScrW() - 10, 60 )
786 close:SetPos( 5, ScrH() - 65 )
787 close:SetText( "Consider donating ($5 minimum) @ snixzz.net for VIP to remove ads!" )
788 close:SetTextColor( color_white )
789 close:SetFont( "CloseCaption_Bold" )
790 close:SetEnabled( false )
791
792 close.Paint = function( self )
793
794 G.draw.RoundedBox( 0, 0, 0, self:GetWide(), self:GetTall(),
795 self:GetDisabled() == true && Color( 168, 62, 62, 255 ) or self:GetDisabled() == false && Color( 62, 168, 62, 255 )
796 )
797
798 end
799
800 close.DoClick = function( self ) frame:Close() self:Remove() end
801
802 timer.Simple( 20, function()
803
804 close:SetEnabled( true )
805 close:SetText( "Close" )
806 frame:ShowCloseButton( true )
807
808 if bool then
809
810 snixzz.LoadAllFunctions()
811
812 end
813
814 end )
815
816end
817
818snixzz.ACStatus = { -- this is outdated
819 ["CAC"] = "DETECTED",
820 ["LeyAC"] = "DETECTED",
821 ["TAC v4"] = "UNDETECTED",
822 ["HERP-AC"] = "BYPASSED",
823 ["TAC v2"] = "BYPASSED",
824 ["QAC"] = "BYPASSED",
825 ["VAC"] = "UNDETECTED", -- Shut up, it does exist. it's a tiny blacklist.
826 ["GAC"] = "UNDETECTED",
827 ["Kevlar"] = "UNDETECTED",
828 ["Daz's AC"] = "UNDETECTED",
829 ["GModZ AC"] = "UNDETECTED",
830 ["VBAC"] = "UNDETECTED",
831 ["DivinityRP AC"] = "BYPASSED",
832}
833
834/*
835 Logging system
836*/
837snixzz.NoLog = { -- Types of logs to not save in data/
838 ["Setting"] = true,
839 ["Load"] = true,
840 ["Detours"] = true,
841 ["Config"] = true,
842 ["Info"] = true,
843 ["debug"] = true,
844 ["Timer"] = true,
845 ["Hook"] = true,
846 ["Main"] = true,
847}
848
849snixzz.Lines = {}
850function snixzz.logEvent( Type, str )
851
852 G.table.insert( snixzz.Lines, str )
853 if snixzz.LogTab then
854 snixzz.LogTab:AddLine( str )
855 end
856
857 if !snixzz.NoLog[Type] then
858 local logFile = "[" .. G.os.date() .. "] " .. str .. "\n"
859 G.file.Append( snixzz.DataFolder .. "/logs/" .. Type .. ".txt", logFile )
860 end
861
862end
863
864/* Anti-Cheat bypass functions */
865-- This is all really outdated. TODO: Update thhis
866snixzz.Backup = {}
867function snixzz.AntiCheats()
868
869 -- HERP-AC c+p shitty ac
870 if _G.CheckVars then
871
872 snixzz.ACNoitfy( "function CheckVars exists, detouring the scan." )
873
874 _G.CheckVars = snixzz.Detour( _G.CheckVars, function()
875
876 snixzz.Chat( Color( 50, 255, 50 ), "HERP-AC attempted to scan cvars, stopping that..." )
877
878 end )
879
880 end
881
882 -- Tyler's Anti-Cheat v2 (shameless bypass of my own anti-cheat)
883 if _G.RunCheck then
884
885 snixzz.ACNoitfy( "function RunCheck exists, detouring." )
886
887 _G.RunCheck = snixzz.Detour( _G.RunCheck, function()
888
889 snixzz.Chat( Color( 50, 255, 50 ), "TAC attempted to run a check, returning no information." )
890
891 end )
892
893 end
894
895 -- Some shitty PERP anti-cheat
896 G.concommand.Remove( "0_u_found" )
897 G.concommand.Add( "0_u_found", function()
898
899 snixzz.ACNoitfy( "anti-cheat concommand 0_u_found blocked" )
900
901 end )
902
903 G.hook.Remove( "InitPostEntity", "detrp" )
904
905 -- Anti-cheat current detection status
906 /*for k, v in G.pairs( snixzz.ACStatus ) do
907
908 G.MsgC( Color( 255, 150, 0 ), "[snixzz3]: " )
909 G.MsgC( Color( 255, 255, 255 ), k .. ": " )
910
911 if v == "DETECTED" then
912
913 G.MsgC( Color( 255, 0, 0 ), v .. "\n" )
914
915 elseif v == "BYPASSED" then
916
917 G.MsgC( Color( 255, 255, 0 ), v .. "\n" )
918
919 elseif v == "UNDETECTED" then
920
921 G.MsgC( Color( 0, 255, 0 ), v .. "\n" )
922
923 end
924
925 end*/
926
927 G.hook.Remove( "OnGamemodeLoaded", "___scan_g_init" )
928 G.hook.GetTable()["OnGamemodeLoaded"]["___scan_g_init"] = function() end
929
930end
931
932-- TODO: Add runstring section to menu
933local compiledString
934function snixzz.RunString( str )
935
936 compiledString = G.CompileString( str, "[C]", false )
937
938 if G.type( compiledString ) == "string" then
939
940 snixzz.Chat( Color( 0, 255, 255 ), "Failed to run Lua. '" .. str .. "'" )
941
942 return
943 end
944
945 compiledString()
946
947end
948
949local Name
950snixzz.Hooks = {}
951function snixzz.AddHook( Type, Func )
952
953 Name = G.tostring( Func )
954 snixzz.AddToConsole( "Adding unsecure hook '" .. Name .. "'" )
955 snixzz.Hooks[Type] = Name
956
957 return G.hook.Add( Type, Name, Func )
958end
959
960snixzz.TimerCache = {}
961function snixzz.RegisterTimer( delay, rep, func )
962
963 Name = G.tostring( func )
964 snixzz.AddToConsole( "Adding timer " .. Name .. " with delay '" .. G.tostring( delay ) .. "'" )
965 G.table.insert( snixzz.TimerCache, Name )
966
967 return G.timer.Create( Name, delay, rep, func )
968end
969
970/*
971
972 Settings & Menu backend.
973 Config system recycled from hake v2
974 Re-wrote a bit of it.
975
976*/
977
978function snixzz.CreateOption( dtype, parent, oText, oBool, xPos, yPos, oWide, xPos2, yPos2, oDec, func )
979
980 local addx, addy = 3, 3.5
981
982 if dtype == "Checkbox" then
983 dtype = "DCheckBoxLabel"
984 local text, bool, x, y = oText, oBool, xPos, yPos
985 local checkbox = G.vgui.Create( dtype, parent )
986 checkbox:SetText( text )
987 checkbox:SetPos( x + addx, y + addy )
988 checkbox:SizeToContents()
989 checkbox:SetTextColor( G.color_white )
990 checkbox:SetChecked( snixzz.Bools[bool] )
991 checkbox.OnChange = function( check )
992 snixzz.Bools[bool] = checkbox:GetChecked()
993 end
994
995 elseif dtype == "Slider" then
996 dtype = "DNumSlider"
997 local text, var, min, max, wide, x, y, Dec = oText, oBool, xPos, yPos, oWide, xPos2, yPos2, oDec
998 local slider = G.vgui.Create( dtype, parent )
999 slider:SetPos( x + addx, y + addy )
1000 slider:SetWide( wide )
1001 slider:SetText( text )
1002 slider:SetMin( min )
1003 slider:SetMax( max )
1004 slider:SetDecimals( Dec )
1005 slider:SetValue( snixzz.Vars[var] )
1006 slider.OnValueChanged = function( p, v )
1007 snixzz.Vars[var] = v
1008 end
1009
1010 elseif dtype == "Label" then
1011 dtype = "DLabel"
1012 local text, x, y = oText, oBool, xPos
1013 local label = G.vgui.Create( dtype, parent )
1014 label:SetPos( x, y )
1015 label:SetText( text )
1016 label:SizeToContents()
1017 label:SetTextColor( G.color_white )
1018
1019 end
1020
1021end
1022
1023function snixzz.ConfigExists( cfg )
1024
1025 if G.file.Exists( snixzz.DataFolder .. "/configs/" .. cfg .. ".txt", "DATA" ) then
1026
1027 return true
1028
1029 else
1030
1031 return false
1032
1033 end
1034end
1035
1036function snixzz.SaveConfig( cfg )
1037
1038 local save = {}
1039 save.Vars = snixzz.Vars
1040 save.Bools = snixzz.Bools
1041 save.Binds = snixzz.Binds
1042 save.Entities = snixzz.Entities
1043 save.Friends = snixzz.Friends
1044 cfg = G.string.gsub( cfg, " ", "_" )
1045
1046 if !snixzz.ConfigExists( cfg ) then
1047
1048 G.table.insert( snixzz.Configs, cfg )
1049 G.file.Write( snixzz.DataFolder .. "/configs/" .. cfg .. ".txt", G.util.TableToJSON( save ) )
1050 snixzz.Chat( snixzz.Colors.Green, "Created config " .. cfg .. "!" )
1051
1052 snixzz.LoadConfig( cfg )
1053
1054 else
1055
1056 snixzz.Chat( snixzz.Colors.Red, "Config " .. cfg .. " already exists!" )
1057
1058 end
1059
1060end
1061
1062function snixzz.UpdateConfig()
1063
1064 local cfg = snixzz.CurrentConfig
1065
1066 if cfg != "default" then
1067
1068 if snixzz.ConfigExists( cfg ) then
1069
1070 local save = {}
1071 save.Vars = snixzz.Vars
1072 save.Bools = snixzz.Bools
1073 save.Binds = snixzz.Binds
1074 save.Entities = snixzz.Entities
1075 save.Friends = snixzz.Friends
1076 G.file.Write( snixzz.DataFolder .. "/configs/" .. cfg .. ".txt", G.util.TableToJSON( save ) )
1077 snixzz.Chat( snixzz.Colors.Green, "Updated '" .. cfg .. "' with current settings" )
1078
1079 else
1080
1081 snixzz.Chat( snixzz.Colors.Red, "Config " .. cfg .. " wasn't found!" )
1082
1083 end
1084
1085 else
1086
1087 snixzz.Chat( snixzz.Colors.Red, "You can't modify 'default' config!" )
1088
1089 end
1090
1091end
1092
1093function snixzz.LoadConfig( cfg, bool )
1094
1095 cfg = G.string.lower( cfg )
1096
1097 if snixzz.CurrentConfig != cfg then
1098
1099 if snixzz.ConfigExists( cfg ) then
1100
1101 local ToRead = G.util.JSONToTable( G.file.Read( snixzz.DataFolder .. "/configs/" .. cfg .. ".txt", "DATA" ) )
1102 snixzz.Vars = ToRead.Vars
1103 snixzz.Bools = ToRead.Bools
1104 snixzz.Binds = ToRead.Binds
1105 snixzz.Entities = ToRead.Entities
1106 snixzz.Friends = ToRead.Friends
1107 snixzz.CurrentConfig = cfg
1108
1109 if !bool then -- ignore chat on first load
1110 snixzz.Chat( snixzz.Colors.Green, "Loaded config '" .. cfg .. "'" )
1111 end
1112
1113 else
1114
1115 snixzz.LoadConfig( "default" )
1116 snixzz.CurrentConfig = "default"
1117 snixzz.Chat( Color( 255, 0, 0 ), "Invalid config file! '" .. cfg .. "' Loading default!" )
1118
1119 end
1120
1121 else
1122
1123 snixzz.Chat( snixzz.Colors.Red, "Config " .. cfg .. " is already loaded!" )
1124
1125 end
1126
1127end
1128
1129function snixzz.DeleteConfig( cfg )
1130
1131 cfg = G.string.lower( cfg )
1132
1133 if cfg != snixzz.DefaultConfig then
1134
1135 if G.file.Exists( snixzz.DataFolder .. "/configs/" .. cfg .. ".txt", "DATA" ) then
1136
1137 G.file.Delete( snixzz.DataFolder .. "/configs/" .. cfg .. ".txt" )
1138 snixzz.Chat( snixzz.Colors["DarkRed"], "Deleted config '" .. cfg .. "'" )
1139
1140 else
1141
1142 snixzz.Chat( Color( 255, 0, 0 ), "Unable to find config " .. cfg "!" )
1143
1144 end
1145
1146 else
1147
1148 snixzz.Chat( snixzz.Colors["Red"], "You cannot delete the default config!" )
1149
1150 end
1151end
1152
1153function snixzz.RenameConfig( Old, New )
1154
1155 New = G.string.gsub( New, " ", "_" )
1156 New = G.string.lower( New )
1157
1158 if Old != snixzz.DefaultConfig then
1159
1160 if !snixzz.ConfigExists( New ) then
1161
1162 local OldConfig = G.file.Read( snixzz.DataFolder .. "/configs/" .. Old .. ".txt", "DATA" )
1163
1164 if snixzz.ConfigExists( Old ) then
1165
1166 G.file.Delete( snixzz.DataFolder .. "/configs/" .. Old .. ".txt", "DATA" )
1167
1168 end
1169
1170 G.file.Write( snixzz.DataFolder .. "/configs/" .. New .. ".txt", OldConfig )
1171 snixzz.Chat( snixzz.Colors["DarkRed"], "Renamed " .. Old .. " to " .. New .. "." )
1172
1173 else
1174
1175 snixzz.Chat( Color( 255, 0, 0 ), "Config " .. New .. " already exists! Pick a different name." )
1176
1177 end
1178
1179 else
1180
1181 snixzz.Chat( snixzz.Colors["Red"], "You cannot rename the default config!" )
1182
1183 end
1184
1185end
1186
1187function snixzz.SetDefaultConfig( cfg )
1188
1189 if cfg != snixzz.DefaultConfig then
1190
1191 if snixzz.ConfigExists( cfg ) then
1192
1193 snixzz.DefaultConfig = cfg
1194 G.file.Write( snixzz.DataFolder .. "/defaultconfig.txt", snixzz.DefaultConfig )
1195 snixzz.Chat( Color( 255, 255, 0 ), "Set '" .. cfg .. "' as the default config." )
1196
1197 else
1198
1199 snixzz.Chat( Color( 255, 0, 0 ), "'" .. cfg .. "' is not a valid config!" )
1200
1201 end
1202
1203 else
1204
1205 snixzz.Chat( Color( 255, 0, 0 ), "'" .. cfg .. "' is already the default config!" )
1206
1207 end
1208
1209end
1210
1211function snixzz.BindKey( Bind, Key, bool )
1212
1213 -- Console binding, ignore checks.
1214 if bool then
1215
1216 if G[Key] then
1217
1218 if snixzz.Binds[Bind] then
1219
1220 snixzz.Binds[Bind] = G[Key]
1221 snixzz.Chat( snixzz.Colors.Green, "Bound " .. Bind .. " to " .. Key .. "!" )
1222
1223 else
1224
1225 snixzz.Chat( snixzz.Colors.Red, "'" .. Bind .. "' is an unknown command!" )
1226
1227 end
1228
1229 else
1230
1231 snixzz.Chat( snixzz.Colors.Red, "'" .. Key .. "' is an unknown key!" )
1232
1233 end
1234
1235 return
1236
1237 end
1238
1239 if snixzz.Binds[Bind] then
1240
1241 for _, v in G.pairs( snixzz.Keys ) do
1242
1243 if Key == v.Name then
1244
1245 snixzz.Binds[Bind] = v.Key
1246 snixzz.Chat( snixzz.Colors.Green, "Bound " .. Bind .. " to " .. Key .. "!" )
1247
1248 end
1249
1250 end
1251
1252 end
1253
1254end
1255
1256-- TODO: use this somewhere
1257function snixzz.Unbind( Bind )
1258
1259 if snixzz.Binds[Bind] then
1260
1261 snixzz.Binds[Bind] = KEY_NONE
1262 snixzz.Chat( snixzz.Colors.Green, "Unbound " .. Bind .. "!" )
1263
1264 else
1265
1266 snixzz.Chat( snixzz.Colors.Red, "Failed to find command '" .. Bind .. "'" )
1267
1268 end
1269
1270end
1271
1272function snixzz.GetConfigs()
1273
1274 local files = G.file.Find( snixzz.DataFolder .. "/configs/*.txt", "DATA")
1275
1276 for k, v in G.pairs( files ) do
1277
1278 files[k] = G.string.Replace( v, ".txt", "" )
1279
1280 end
1281
1282 return files
1283end
1284
1285-- Update all configs to work with the newest version of the cheat.
1286snixzz.UpdatedCfgs = {}
1287function snixzz.UpdateAllConfigs() -- Update outdated configs to the new version.
1288
1289 for _, cfg in G.next, snixzz.Configs do
1290
1291 if snixzz.ConfigExists( cfg ) then
1292
1293 local json = G.util.JSONToTable( G.file.Read( snixzz.DataFolder .. "/configs/" .. cfg .. ".txt", "DATA" ) )
1294
1295 -- Check Binds
1296 for k, v in G.next, snixzz.Binds do
1297
1298 if json.Binds[k] == nil then
1299
1300 json.Binds[k] = v
1301
1302 snixzz.Message( snixzz.Colors.White, "Added bind '" .. k .. "' to config '" .. cfg .. "'" )
1303
1304 if !snixzz.UpdatedCfgs[cfg] then snixzz.UpdatedCfgs[cfg] = true end
1305
1306 end
1307
1308 end
1309
1310 -- Check Bools
1311 for k, v in G.next, snixzz.Bools do
1312
1313 if json.Bools[k] == nil then
1314
1315 json.Bools[k] = v
1316
1317 snixzz.Message( snixzz.Colors.White, "Added bool '" .. k .. "' to config '" .. cfg .. "'" )
1318
1319 if !snixzz.UpdatedCfgs[cfg] then snixzz.UpdatedCfgs[cfg] = true end
1320
1321 end
1322
1323 end
1324
1325 -- Check Vars
1326 for k, v in G.next, snixzz.Vars do
1327
1328 if json.Vars[k] == nil then
1329
1330 json.Vars[k] = v
1331
1332 snixzz.Message( snixzz.Colors.White, "Added var '" .. k .. "' to config '" .. cfg .. "'" )
1333
1334 if !snixzz.UpdatedCfgs[cfg] then snixzz.UpdatedCfgs[cfg] = true end
1335
1336 end
1337
1338 end
1339
1340 if snixzz.UpdatedCfgs[cfg] then
1341
1342 G.file.Write( snixzz.DataFolder .. "/configs/" .. cfg .. ".txt", G.util.TableToJSON( json ) )
1343
1344 snixzz.Chat( snixzz.Colors.Green, "Successfully updated config '" .. cfg .. "' with the newest settings." )
1345
1346 end
1347
1348 end
1349
1350 end
1351
1352end
1353
1354/*
1355
1356 filesystem
1357
1358*/
1359
1360snixzz.DataFiles = {
1361 "defaultconfig.txt",
1362 "logs/Main.txt",
1363 "logs/AntiCheat.txt",
1364 "logs/Detour.txt",
1365 "logs/Debug.txt",
1366}
1367snixzz.DataFolders = {
1368 "configs",
1369 "logs",
1370}
1371
1372function snixzz.FileSystem()
1373
1374 if !G.file.IsDir( snixzz.DataFolder, "DATA" ) then
1375
1376 G.file.CreateDir( snixzz.DataFolder )
1377 snixzz.Message( Color( 0, 255, 0 ), "Creating '" .. snixzz.DataFolder .. "' main data folder." )
1378
1379 end
1380
1381 for k, v in G.next, snixzz.DataFolders do
1382
1383 if !G.file.IsDir( snixzz.DataFolder .. "/" .. v, "DATA" ) then
1384
1385 G.file.CreateDir( snixzz.DataFolder .. "/" .. v )
1386 snixzz.Message( Color( 0, 255, 0 ), "Creating '" .. snixzz.DataFolder .. "/" .. v .. "' data folder." )
1387
1388 end
1389
1390 end
1391
1392 for k, v in G.next, snixzz.DataFiles do
1393
1394 if !G.file.Exists( snixzz.DataFolder .. "/" .. v, "DATA" ) then
1395
1396 G.file.Write( snixzz.DataFolder .. "/" .. v, G.Either( v == "defaultconfig.txt", snixzz.DefaultConfig, "=== snixzz3 by 0xymoron ===\n\n" ) ) -- This is a cool function.
1397
1398 snixzz.Message( Color( 0, 255, 0 ), "Creating '" .. snixzz.DataFolder .. "/" .. v .. "' data file." )
1399
1400 end
1401
1402 end
1403
1404end
1405
1406/*
1407 ESP functions
1408*/
1409
1410-- borrowed from snipwnage2's cheat with permission
1411function snixzz.GetBounds( v )
1412
1413 local eyePos = v:EyeAngles()
1414 local min = v:OBBMins()
1415 local max = v:OBBMaxs()
1416
1417 local corners = {
1418
1419 G.Vector( min.x, min.y, min.z ),
1420 G.Vector( min.x, min.y, max.z ),
1421 G.Vector( min.x, max.y, min.z ),
1422 G.Vector( min.x, max.y, max.z ),
1423 G.Vector( max.x, min.y, min.z ),
1424 G.Vector( max.x, min.y, max.z ),
1425 G.Vector( max.x, max.y, min.z ),
1426 G.Vector( max.x, max.y, max.z ),
1427
1428 }
1429
1430 local minx = G.math.huge
1431 local miny = G.math.huge
1432 local maxx = -G.math.huge
1433 local maxy = -G.math.huge
1434
1435 for _, corner in G.next, corners do
1436
1437 local screen = v:LocalToWorld( corner ):ToScreen()
1438 minx = G.math.min( minx, screen.x )
1439 miny = G.math.min( miny, screen.y )
1440 maxx = G.math.max( maxx, screen.x )
1441 maxy = G.math.max( maxy, screen.y )
1442
1443 end
1444
1445 return minx, miny, maxx, maxy
1446end
1447
1448-- Thanks gmod wiki!
1449function snixzz.DrawOutlinedBox( x, y, w, h, thickness, color )
1450
1451 G.surface.SetDrawColor( color )
1452
1453 for i = 0, thickness - 1 do
1454
1455 G.surface.DrawOutlinedRect( x + i, y + i, w - i * 2, h - i * 2 )
1456
1457 end
1458
1459end
1460
1461function snixzz.IsAdmin( v )
1462
1463 if v:IsAdmin() then
1464
1465 return true
1466
1467 end
1468
1469 if snixzz.AdminGroups[v:GetUserGroup()] then
1470
1471 return true
1472
1473 end
1474
1475end
1476
1477function snixzz.ShouldDraw( v )
1478
1479 // better fps maybe
1480 local distance = v:GetPos():Distance( G.LocalPlayer():GetPos() )
1481
1482 if snixzz.Vars["esp_distance"] != 0 && distance >= snixzz.Vars["esp_distance"] then
1483
1484 return false
1485
1486 end
1487
1488 if !v:IsPlayer() or !v:Alive() or v == G["LocalPlayer"]() then
1489
1490 return false
1491
1492 end
1493
1494 if ( v:Team() == TEAM_SPECTATOR or G.string.find( G.team.GetName( v:Team() ), "spectator" ) ) then
1495
1496 return false
1497
1498 end
1499
1500 if snixzz.Functions.IsDormant( v:EntIndex() ) then
1501
1502 return false
1503
1504 end
1505
1506 return true
1507end
1508
1509/********************/
1510/* */
1511/* Aimbot functions */
1512/* */
1513/********************/
1514
1515
1516-- sloppy ass isvalid function
1517function snixzz.IsValid( v, Type )
1518
1519 if !G.IsValid( v ) or v == G.LocalPlayer() then
1520
1521 return false
1522
1523 end
1524
1525 if Type then
1526
1527 if Type == "Aimbot" then
1528
1529 if snixzz.IsProphunt && snixzz.Bools["misc_prophunt_finder"] then
1530
1531 if v:IsPlayer() then
1532
1533 if v:Team() == TEAM_SPECTATOR or v:Team() == TEAM_UNASSIGNED then return false end
1534
1535 if v == LocalPlayer() then return false end -- Duh
1536
1537 elseif snixzz.IsProp( v ) then
1538
1539 local owner = v:GetOwner()
1540
1541 if owner == LocalPlayer() then return false end
1542
1543 end
1544
1545 if LocalPlayer():GetClass() == "ph_prop" then
1546
1547 return false
1548
1549 end
1550
1551 if !snixzz.IsProp( v ) && !v:IsPlayer() then
1552
1553 return false
1554
1555 end
1556
1557 if v:IsPlayer() && v:Team() == TEAM_HUNTERS then
1558
1559 return false
1560
1561 end
1562
1563 elseif snixzz.Vars["aim_target_type"] == "NPC" && !v:IsNPC() then
1564
1565 return false
1566
1567 elseif snixzz.Vars["aim_target_type"] == "Players" && !v:IsPlayer() then
1568
1569 return false
1570
1571 elseif snixzz.Vars["aim_target_type"] == "Both" && !v:IsPlayer() && !v:IsNPC() then
1572
1573 return false
1574
1575 end
1576
1577 elseif Type == "Triggerbot" then
1578
1579 if snixzz.Vars["misc_triggerbot_type"] == "NPC" && !v:IsNPC() then
1580
1581 return false
1582
1583 elseif snixzz.Vars["misc_triggerbot_type"] == "Players" && !v:IsPlayer() then
1584
1585 return false
1586
1587 elseif snixzz.Vars["misc_triggerbot_type"] == "Both" && !v:IsPlayer() && !v:IsNPC() then
1588
1589 return false
1590
1591 end
1592
1593 elseif Type == "ESP" then
1594
1595 if snixzz.IsProphunt && snixzz.Bools["misc_prophunt_finder"] then
1596
1597 if v:IsPlayer() then
1598
1599 if v:Team() == TEAM_SPECTATOR or v:Team() == TEAM_UNASSIGNED then return false end
1600
1601 if v == LocalPlayer() then return false end -- Duh
1602
1603 elseif snixzz.IsProp( v ) then
1604
1605 local owner = v:GetOwner()
1606
1607 if owner == LocalPlayer() then return false end
1608
1609 end
1610
1611 if !snixzz.IsProp( v ) && !v:IsPlayer() then
1612
1613 return false
1614
1615 end
1616
1617 if v:IsPlayer() && !snixzz.IsProp( v ) && v:Team() == TEAM_PROPS then
1618
1619 return false
1620
1621 end
1622
1623 elseif snixzz.Vars["esp_type"] == "NPC" && !v:IsNPC() then
1624
1625 return false
1626
1627 elseif snixzz.Vars["esp_type"] == "Players" && !v:IsPlayer() then
1628
1629 return false
1630
1631 elseif snixzz.Vars["esp_type"] == "Entities" && !snixzz.Entities[v:GetClass()] then
1632
1633 return false
1634
1635 elseif snixzz.Vars["esp_type"] == "All" && !snixzz.Entities[v:GetClass()] && !v:IsPlayer() && !v:IsNPC() then
1636
1637 return false
1638
1639 end
1640
1641 local distance = v:GetPos():Distance( G.LocalPlayer():GetPos() )
1642
1643 if snixzz.Vars["esp_distance"] != 0 && distance >= snixzz.Vars["esp_distance"] then
1644
1645 return false
1646
1647 end
1648
1649 end
1650
1651 end
1652
1653 -- IsDormant check
1654 if snixzz["IsDormant"]( v:EntIndex() ) && !snixzz.IsProp( v ) then
1655
1656 return false
1657
1658 end
1659
1660 if Type == nil or Type != "ESP" then
1661
1662 if v:GetMoveType() == 0 && !snixzz.IsProp( v ) then
1663
1664 return false
1665
1666 end
1667
1668 // visible check
1669 if !snixzz.Bools["aim_ignorelos"] then
1670
1671 if !snixzz.IsVisible( v, snixzz.GetPos( v ) ) then
1672
1673 return false
1674
1675 end
1676
1677 end
1678
1679 -- field of view
1680 if snixzz.Bools["aim_checkfov"] then
1681
1682 if !snixzz.InFov( v ) then
1683
1684 return false
1685
1686 end
1687
1688 end
1689
1690 end
1691
1692 if snixzz.IsProphunt && snixzz.Bools["misc_prophunt_finder"] then
1693
1694 if snixzz.IsProp( v ) && v:Health() < 0 then
1695
1696 return false
1697
1698 elseif v:IsPlayer() && !v:Alive() then
1699
1700 return false
1701
1702 end
1703
1704 elseif v:IsNPC() then
1705
1706 if v:Health() < 1 then
1707
1708 return false
1709
1710 end
1711
1712 elseif v:IsPlayer() then
1713
1714 if Type == nil or Type != "ESP" then
1715
1716 -- ignore admins
1717 if snixzz.Bools["aim_ignoreadmins"] then
1718
1719 if snixzz.IsAdmin( v ) then
1720
1721 return false
1722
1723 end
1724
1725 end
1726
1727 -- ignore friends
1728 if snixzz.Bools["aim_ignorefriends"] then
1729
1730 if snixzz.Friends[v:Nick()] then
1731
1732 return false
1733
1734 end
1735
1736 end
1737
1738 -- Ignore bots
1739 if snixzz.Bools["aim_ignorebots"] && v:IsBot() then
1740
1741 return false
1742
1743 end
1744
1745 if v:InVehicle() then
1746
1747 return false
1748
1749 end
1750
1751 -- No noclip glitchers please
1752 if G.GetConVarNumber( "sbox_noclip" ) == 0 && v:GetMoveType() == MOVETYPE_NOCLIP then
1753
1754 return false
1755
1756 end
1757
1758 -- Ignore Steam friends
1759 if snixzz.Bools["aim_ignoresteam"] then
1760
1761 if v:GetFriendStatus() == "friend" then
1762
1763 return false
1764
1765 end
1766
1767 end
1768
1769 -- Friendly Fire
1770 if snixzz.Bools["aim_ignoreteam"] then
1771
1772 if ( v:Team() == G.LocalPlayer():Team() ) then
1773
1774 return false
1775
1776 end
1777
1778 end
1779
1780 // ignore T buddies
1781 if snixzz.Bools["aim_ignoretraitors"] && snixzz.IsTTT then
1782
1783 if ( G.LocalPlayer():IsTraitor() && v:IsTraitor() ) then
1784
1785 return false
1786
1787 end
1788
1789 end
1790
1791 // Target only traitors
1792 if snixzz.Bools["aim_onlytraitors"] && snixzz.IsTTT then
1793
1794 if !snixzz.IsTraitor( v ) then
1795
1796 return false
1797
1798 end
1799
1800 end
1801
1802
1803 // spawn protection
1804 local col = v:GetColor()
1805
1806 if col.a < 255 then
1807
1808 return false
1809
1810 end
1811
1812 if G.LocalPlayer():GetColor().a < 255 then
1813
1814 return false
1815
1816 end
1817
1818 end
1819
1820 if !v:Alive() then
1821
1822 return false
1823
1824 end
1825
1826 -- Spectator check
1827 if v:GetMoveType() == MOVETYPE_OBSERVER or v:Team() == TEAM_SPECTATOR then
1828
1829 return false
1830
1831 end
1832
1833 end
1834
1835 return true
1836end
1837
1838
1839snixzz.Cones = {
1840
1841 ["HL2"] = {
1842 ["weapon_pistol"] = G.Vector( 0.01, 0.01, 0.01 ),
1843 ["weapon_smg1"] = G.Vector( 0.04362, 0.04362, 0.04362 ),
1844 ["weapon_ar2"] = G.Vector( 0.02618, 0.02618, 0.02618 ),
1845 ["weapon_shotgun"] = G.Vector( 0.08716, 0.08716, 0.08716 ),
1846 },
1847
1848 ["Normal"] = {}
1849
1850}
1851
1852snixzz.SimpleSpread = {
1853
1854 ["weapon_cs_base"] = true,
1855 ["weapon_zs_base"] = true,
1856
1857}
1858
1859local wepCone
1860function snixzz.GetCone( wep )
1861
1862 if !G.IsValid( wep ) then
1863
1864 return 0
1865
1866 end
1867
1868 if snixzz.Cones.Normal[wep:GetClass()] then
1869
1870 return snixzz.Cones.Normal[wep:GetClass()]
1871
1872 elseif snixzz.SimpleSpread[wep.Base] then
1873
1874 return wep.Cone or wep.Primary.Cone or 0
1875
1876 elseif snixzz.Cones.HL2[wep:GetClass()] then
1877
1878 return snixzz.Cones.HL2[wep:GetClass()]
1879
1880 else
1881
1882 wepCone = wep.Cone
1883
1884 if !wepCone then
1885
1886 wepCone = wep.Primary && wep.Primary.Cone or 0
1887
1888 end
1889
1890 end
1891
1892 return wepCone or 0
1893
1894end
1895
1896local spreadCone = G.Vector( 0, 0, 0 )
1897local getCone = G.Vector( 0, 0, 0 )
1898
1899function snixzz.PredictSpread( cmd, ang )
1900
1901 local wep = G.LocalPlayer():GetActiveWeapon() or NULL
1902
1903 if !G.IsValid( wep ) then
1904
1905 return ang
1906
1907 end
1908
1909 if G.type( wep.Initialize ) == "function" then
1910
1911 getCone = snixzz.GetCone( wep )
1912
1913 if G.type( getCone ) == "number" then
1914
1915 spreadCone = G.Vector( -getCone, -getCone, -getCone )
1916
1917 elseif G.type( getCone ) == "Vector" then
1918
1919 spreadCone = getCone * -1
1920
1921 end
1922
1923 else
1924
1925 if snixzz.Cones.HL2[wep:GetClass()] then
1926
1927 spreadCone = snixzz.Cones.HL2[wep:GetClass()]
1928
1929 end
1930
1931 end
1932
1933 return snixzz.Functions.PredictSpread( cmd, ang, spreadCone )
1934end
1935
1936
1937local wep
1938local punchAngle
1939
1940function snixzz.CorrectRecoil( ucmd )
1941
1942 wep = G.LocalPlayer():GetActiveWeapon()
1943
1944 if G.IsValid( wep ) then
1945
1946 if snixzz.Cones.HL2[wep:GetClass()] then
1947
1948 punchAngle = ucmd:GetViewAngles() - G.LocalPlayer():GetPunchAngle()
1949 snixzz.Functions.SetViewAngles( ucmd, punchAngle )
1950
1951 end
1952
1953 end
1954
1955end
1956
1957snixzz.NPCModels = {
1958
1959 ["models/combine_scanner.mdl"] = "Scanner.Body",
1960 ["models/hunter.mdl"] = "MiniStrider.body_joint",
1961 ["models/combine_turrets/floor_turret.mdl"] = "Barrel",
1962 ["models/dog.mdl"] = "Dog_Model.Eye",
1963 ["models/antlion.mdl"] = "Antlion.Body_Bone",
1964 ["models/antlion_guard.mdl"] = "Antlion_Guard.Body",
1965 ["models/antlion_worker.mdl"] = "Antlion.Head_Bone",
1966 ["models/zombie/fast_torso.mdl"] = "ValveBiped.HC_BodyCube",
1967 ["models/zombie/fast.mdl"] = "ValveBiped.HC_BodyCube",
1968 ["models/headcrabclassic.mdl"] = "HeadcrabClassic.SpineControl",
1969 ["models/headcrabblack.mdl"] = "HCBlack.body",
1970 ["models/headcrab.mdl"] = "HCFast.body",
1971 ["models/zombie/poison.mdl"] = "ValveBiped.Headcrab_Cube1",
1972 ["models/zombie/classic.mdl"] = "ValveBiped.HC_Body_Bone",
1973 ["models/zombie/classic_torso.mdl"] = "ValveBiped.HC_Body_Bone",
1974 ["models/zombie/zombie_soldier.mdl"] = "ValveBiped.HC_Body_Bone",
1975 ["models/combine_strider.mdl"] = "Combine_Strider.Body_Bone",
1976 ["models/lamarr.mdl"] = "HeadcrabClassic.SpineControl",
1977
1978}
1979
1980snixzz.Bones = {
1981
1982 ["Head"] = "ValveBiped.Bip01_Head1",
1983 ["Neck"] = "ValveBiped.Bip01_Neck1",
1984 ["Spine"] = "ValveBiped.Bip01_Spine",
1985 ["Spine2"] = "ValveBiped.Bip01_Spine2",
1986 ["Spine4"] = "ValveBiped.Bip01_Spine4",
1987 ["Pelvis"] = "ValveBiped.Bip01_Pelvis",
1988 ["R Upperarm"] = "ValveBiped.Bip01_R_UpperArm",
1989 ["R Forearm"] = "ValveBiped.Bip01_R_Forearm",
1990 ["R Hand"] = "ValveBiped.Bip01_R_Hand",
1991 ["L Upperarm"] = "ValveBiped.Bip01_L_UpperArm",
1992 ["L Forearm"] = "ValveBiped.Bip01_L_Forearm",
1993 ["L Hand"] = "ValveBiped.Bip01_L_Hand",
1994 ["R Thigh"] = "ValveBiped.Bip01_R_Thigh",
1995 ["R Calf"] = "ValveBiped.Bip01_R_Calf",
1996 ["R Foot"] = "ValveBiped.Bip01_R_Foot",
1997 ["R Toes"] = "ValveBiped.Bip01_R_Toe0",
1998 ["L Thigh"] = "ValveBiped.Bip01_L_Thigh",
1999 ["L Calf"] = "ValveBiped.Bip01_L_Calf",
2000 ["L Foot"] = "ValveBiped.Bip01_L_Foot",
2001 ["L Toes"] = "ValveBiped.Bip01_L_Toe0",
2002
2003}
2004
2005snixzz.Hitboxes = {
2006
2007 ["Head"] = 0,
2008 ["L Upperarm"] = 1,
2009 ["L Forearm"] = 2,
2010 ["L Hand"] = 3,
2011 ["R Upperarm"] = 4,
2012 ["R Forearm"] = 5,
2013 ["R Hand"] = 6,
2014 ["L Thigh"] = 7,
2015 ["L Calf"] = 8,
2016 ["F Foot"] = 9,
2017 ["L Toe"] = 10,
2018 ["R Thigh"] = 11,
2019 ["R Calf"] = 12,
2020 ["R Foot"] = 13,
2021 ["R Toe"] = 14,
2022 ["Pelvis"] = 15,
2023 ["Spine"] = 16,
2024
2025}
2026
2027snixzz.Hitscans = {
2028 0, -- head
2029 16, -- spine
2030 4, -- r upper arm
2031 1, -- l upper arm
2032 5, -- r forearm
2033 2, -- l forearm
2034 6, -- r hand
2035 3, -- l hand
2036 15, -- pelvis
2037 11, -- r thigh
2038 7, -- l thigh
2039 12, -- r calf
2040 8, -- l calf
2041 13, -- r foot
2042 9, -- l foot
2043}
2044
2045snixzz.Hitgroups = {
2046 [HITGROUP_HEAD] = "Head",
2047 [HITGROUP_CHEST] = "Chest",
2048 [HITGROUP_STOMACH] = "Stomach",
2049 [HITGROUP_LEFTARM] = "Left Arm",
2050 [HITGROUP_RIGHTARM] = "Right Arm",
2051 [HITGROUP_LEFTLEG] = "Left Leg",
2052 [HITGROUP_RIGHTLEG] = "Right Leg",
2053}
2054
2055local Hitbox
2056local HitboxPos
2057local Bone
2058local BonePos
2059local Hitscan
2060local HitscanPos
2061local HitMin, HitMax
2062function snixzz.GetPos( v )
2063
2064 if snixzz.IsProphunt && snixzz.Bools["misc_prophunt_finder"] && snixzz.IsProp( v ) then
2065
2066 return v:LocalToWorld( v:OBBCenter() )
2067
2068 elseif snixzz.Vars["aim_target_type"] == "NPC" or snixzz.Vars["aim_target_type"] == "Both" && v:IsNPC() then
2069
2070 local bones = snixzz.NPCModels[v:GetModel()]
2071
2072 if !bones then
2073
2074 for k, v in G.next, snixzz.Bones do
2075
2076 if v[1] == snixzz.Vars["aim_bone"] then
2077
2078 bones = v[2]
2079
2080 end
2081
2082 end
2083
2084 bones = bones or "ValveBiped.Bip01_Head1"
2085
2086 end
2087
2088 local bone = v:LookupBone( bones )
2089
2090 if bone then
2091
2092 local pos, ang = v:GetBonePosition( bone )
2093
2094 return pos, ang
2095
2096 end
2097
2098 elseif snixzz.Vars["aim_target_type"] == "Players" or snixzz.Vars["aim_target_type"] == "Both" && v:IsPlayer() then
2099
2100 if snixzz.Vars["aim_method"] == "Hitbox" then
2101
2102 Hitbox = v:GetHitBoxBone( snixzz.Hitboxes[snixzz.Vars["aim_hitbox"]], 0 )
2103 HitboxPos = v:GetBonePosition( Hitbox )
2104
2105 local min, max = v:GetHitBoxBounds( snixzz.Hitboxes[snixzz.Vars["aim_hitbox"]], 0 )
2106
2107 return HitboxPos + ( min + max ) / 2
2108
2109 elseif snixzz.Vars["aim_method"] == "Bone" then
2110
2111 Bone = snixzz.Bones[snixzz.Vars["aim_bone"]]
2112 BonePos = v:LookupBone( Bone )
2113
2114 if BonePos then
2115
2116 local pos, ang = v:GetBonePosition( BonePos )
2117 return pos, ang
2118
2119 end
2120
2121 elseif snixzz.Vars["aim_method"] == "Hitscan" then
2122
2123 for k, e in G.next, snixzz.Hitscans do
2124
2125 Hitscan = v:GetHitBoxBone( snixzz.Hitscans[k], 0 )
2126
2127 if Hitscan != nil then
2128
2129 HitscanPos = v:GetBonePosition( Hitscan )
2130 HitMin, HitMax = v:GetHitBoxBounds( snixzz.Hitscans[k], 0 )
2131
2132 if snixzz.IsVisible( v, HitscanPos + ( HitMin + HitMax ) / 2 ) then
2133
2134 snixzz.TargetBone = Hitscan
2135
2136 return HitscanPos + ( HitMin + HitMax ) / 2
2137
2138 end
2139
2140 end
2141
2142 end
2143
2144 end
2145
2146 end
2147
2148 return v:LocalToWorld( v:OBBCenter() )
2149end
2150
2151function snixzz.InFov( v )
2152 -- wip
2153 return true
2154end
2155
2156-- thanks asutorea
2157function snixzz.CanFire()
2158
2159 local wep = G.LocalPlayer():GetActiveWeapon()
2160
2161 if snixzz.properCurTime == nil then return false end
2162
2163 return G.IsValid( wep ) && !snixzz.BadWeapons[wep:GetClass()] && wep:GetActivity() != ACT_RELOAD && wep:GetNextPrimaryFire() < snixzz.properCurTime && G.LocalPlayer():Alive()
2164end
2165
2166-- pAntiAnti Aim
2167function snixzz.FixAngle( v )
2168
2169 local eyeAngles = _R.Entity.EyeAngles( v )
2170
2171 if eyeAngles.p < -89 then
2172
2173 _R.Entity.SetPoseParameter( v, "aim_pitch", eyeAngles.p + 180 )
2174 _R.Entity.InvalidateBoneCache( v )
2175
2176 elseif eyeAngles.p > 89 then
2177
2178 _R.Entity.SetPoseParameter( v, "aim_pitch", eyeAngles.p - 180 )
2179 _R.Entity.InvalidateBoneCache( v )
2180
2181 end
2182
2183end
2184
2185function snixzz.OnScreen( v )
2186
2187 local a, f = _R.Player.GetAimVector( G.LocalPlayer() ):Angle() - ( v:GetPos() - G.LocalPlayer():GetShootPos() ):Angle(), _R.Player.GetFOV( G.LocalPlayer() )
2188
2189 return ( G.math.NormalizeAngle( a.y ) < f + 2 && G.math.NormalizeAngle( a.p ) < f + 2 )
2190end
2191
2192function snixzz.IsDormant( index )
2193
2194 return snixzz.Functions.IsDormant( index )
2195
2196end
2197
2198function snixzz.FixMove( ucmd, aa )
2199
2200 local fixAngle = G.Vector( ucmd:GetForwardMove(), ucmd:GetSideMove(), 0 )
2201 fixAngle = (( fixAngle:GetNormal() ):Angle() + ( ucmd:GetViewAngles() - G.Angle( 0, snixzz.Silent.y, 0 ) ) ):Forward() * fixAngle:Length()
2202
2203 if aa then
2204
2205 ucmd:SetForwardMove( fixAngle.x )
2206 ucmd:SetSideMove( fixAngle.y * -1 )
2207
2208 return
2209 end
2210
2211 ucmd:SetForwardMove( fixAngle.x )
2212 ucmd:SetSideMove( fixAngle.y )
2213
2214end
2215
2216function snixzz.NormalizeAngles( ang )
2217
2218 ang.p = G.math.NormalizeAngle( ang.p )
2219 ang.y = G.math.NormalizeAngle( ang.y )
2220 ang.r = 0
2221
2222 return ang
2223end
2224
2225snixzz.PredPositions = {}
2226local tbl = snixzz.PredPositions[v] or {}
2227
2228function snixzz.GetPredictionPos( v, pos )
2229
2230 tbl.pos = tbl.pos or pos or _R.Entity.GetPos( v )
2231
2232 local realTime = G.RealTime()
2233
2234 if tbl.realTime != realTime then
2235
2236 tbl.realTime = realTime
2237 tbl.pos = pos or _R.Entity.GetPos( v )
2238
2239 end
2240
2241 tbl.velocity = v:GetVelocity()
2242 snixzz.PredPositions = tbl
2243
2244 return tbl.pos
2245end
2246
2247snixzz.PredictionMethods = { "Velocity 0.0075", "Engine Velocity", "Classic", "Herpes", "ColdFire", "FapHack", "fr1kin" }
2248snixzz.PredWeapons = {
2249
2250 ["weapon_crossbow"] = 3110,
2251 ["weapon_frag"] = 3110,
2252
2253}
2254
2255local tPos, lVelocity, tVelocity, tDistance, predTime
2256-- Some methods are BASED on other cheat's methods, I suck at prediction.
2257function snixzz.Prediction( Pos, v )
2258
2259 local wep = G.LocalPlayer():GetActiveWeapon()
2260 lVelocity = _R.Entity.GetVelocity( G.LocalPlayer() )
2261 tVelocity = _R.Entity.GetVelocity( v )
2262 tPos = _R.Entity.GetPos( v )
2263 lPos = _R.Entity.GetPos( G.LocalPlayer() )
2264 tDistance = lPos:Distance( tPos )
2265
2266 if G.IsValid( v ) && G.type( tVelocity ) == "Vector" && G.type( tPos ) == "Vector" then
2267
2268 if wep && G.IsValid( wep ) && snixzz.PredWeapons[wep:GetClass()] then
2269
2270 predTime = distance / snixzz.PredWeapons[wep:GetClass()]
2271 Pos = Pos + tVelocity * predTime
2272
2273 else
2274
2275 if snixzz.Vars["aim_prediction_method"] == "Velocity 0.0075" then
2276
2277 Pos = Pos + lVelocity * 0.0075 + tVelocity * 0.0075
2278
2279 elseif snixzz.Vars["aim_prediction_method"] == "Engine Velocity" then
2280
2281 Pos = Pos + tVelocity * G.engine.TickInterval() - lVelocity * G.engine.TickInterval()
2282
2283 elseif snixzz.Vars["aim_prediction_method"] == "Classic" then
2284
2285 Pos = Pos + tVelocity / 45 - lVelocity / 45
2286
2287 elseif snixzz.Vars["aim_prediction_method"] == "Herpes" then
2288
2289 tPos = snixzz.GetPredictionPos( v, Pos ) - Pos
2290 Pos = Pos + ( tPos * 2 ) - ( lVelocity / 50 )
2291
2292 elseif snixzz.Vars["aim_prediction_method"] == "ColdFire" then
2293
2294 Pos = Pos - tVelocity:GetNormal() / 5.8 + lVelocity:GetNormal() / 3
2295
2296 elseif snixzz.Vars["aim_prediction_method"] == "FapHack" then
2297
2298 Pos = Pos + tVelocity * 0.02 - lVelocity * 0.05
2299
2300 elseif snixzz.Vars["aim_prediction_method"] == "fr1kin" then
2301
2302 local targetFrames = RealFrameTime() / 25
2303 local plyFrames = RealFrameTime() / 66
2304
2305 Pos = Pos + ( ( tVelocity * targetFrames ) - ( tVelocity * plyFrames ) ) - ( ( lVelocity * targetFrames ) + ( lVelocity * plyFrames ) )
2306
2307 end
2308
2309 end
2310
2311 end
2312
2313 return Pos
2314end
2315
2316function snixzz.GetTarget()
2317
2318 local x, y = G.ScrW(), G.ScrH()
2319 local vPos
2320 local oldPos = G.LocalPlayer():EyePos():ToScreen()
2321 local distance = G.math.huge
2322 local AngA
2323 local AngB
2324 //local target
2325
2326 local Method
2327
2328 if snixzz.IsProphunt && snixzz.Bools["misc_prophunt_finder"] then
2329
2330 Method = G.ents.GetAll()
2331
2332 elseif snixzz.Vars["aim_target_type"] == "NPC" then
2333
2334 Method = G.ents.GetAll()
2335
2336 elseif snixzz.Vars["aim_target_type"] == "Players" then
2337
2338 Method = G.player.GetAll()
2339
2340 elseif snixzz.Vars["aim_target_type"] == "Both" then
2341
2342 Method = G.ents.GetAll()
2343
2344 end
2345
2346 for k, v in G.next, Method do
2347
2348 vPos = v:GetPos():ToScreen()
2349 distance2 = v:GetPos():DistToSqr( G.LocalPlayer():GetPos() )
2350 AngA = G.math.Dist( x / 2, y / 2, oldPos.x, oldPos.y )
2351 AngB = G.math.Dist( x / 2, y / 2, vPos.x, vPos.y )
2352
2353 if snixzz.IsValid( v, "Aimbot" ) then
2354
2355 if snixzz.Vars["aim_target_method"] == "Distance" then
2356
2357 if distance2 < distance then
2358
2359 distance = distance2
2360 return v
2361
2362 end
2363
2364 elseif snixzz.Vars["aim_target_method"] == "Crosshair" then
2365
2366 if AngB <= AngA then
2367
2368 return v
2369
2370 end
2371
2372 end
2373
2374 else
2375
2376 continue
2377
2378 end
2379
2380 end
2381
2382 return nil
2383end
2384
2385snixzz.Firing = false
2386function snixzz.Fire( ucmd )
2387
2388 if snixzz.Firing then
2389
2390 ucmd:RemoveKey( G.IN_ATTACK )
2391 snixzz.Firing = false
2392
2393 else
2394
2395 ucmd:SetButtons( G.bit.bor( ucmd:GetButtons(), G.IN_ATTACK ) )
2396 snixzz.Firing = true
2397
2398 end
2399
2400end
2401
2402snixzz.FakeSwitch = false
2403snixzz.FakeAngle = G.Angle()
2404snixzz.AntiAimMethods = { "Classic", "Classic Inverted", "Static", "Jitter", "Random Pitch",/* "Fake Angles", "Fake Jitter", */"Spin", /*"Fake Spin"*/ }
2405function snixzz.AntiAim( ucmd )
2406
2407 local pitches = { -181, 541, 262 }
2408 local yaws = { 262, -262, 181, -181, 541, -541 }
2409
2410 -- OG anti-aim
2411 if snixzz.Vars["aim_anti_method"] == "Classic" then
2412
2413 snixzz.Functions.SetViewAngles( ucmd, G.Angle( 181, ucmd:GetViewAngles().y, 180 ) )
2414 snixzz.FixMove( ucmd )
2415
2416 -- Looking down instead of up
2417 elseif snixzz.Vars["aim_anti_method"] == "Classic Inverted" then
2418
2419 snixzz.Functions.SetViewAngles( ucmd, G.Angle( -181, ucmd:GetViewAngles().y, 180 ) )
2420 snixzz.FixMove( ucmd )
2421
2422 -- Static
2423 elseif snixzz.Vars["aim_anti_method"] == "Static" then
2424
2425 snixzz.Functions.SetViewAngles( ucmd, G.Angle( -snixzz.Angles.p + 900, snixzz.Angles.y + 180, 0 ) )
2426 snixzz.FixMove( ucmd, true )
2427
2428 -- Jitter - credits to cdriza
2429 elseif snixzz.Vars["aim_anti_method"] == "Jitter" then
2430
2431 snixzz.Functions.SetViewAngles( ucmd, G.Angle( G.table.Random( pitches ), G.table.Random( yaws ), 0 ) )
2432 snixzz.FixMove( ucmd, true )
2433
2434 -- Randomized pitch
2435 elseif snixzz.Vars["aim_anti_method"] == "Random Pitch" then
2436
2437 snixzz.Functions.SetViewAngles( ucmd, G.Angle( G.math.random( -180, -186.49999 ), ucmd:GetViewAngles().y, 180 ) )
2438 snixzz.FixMove( ucmd )
2439
2440 -- bSendPacket Fake Angles
2441 /*elseif snixzz.Vars["aim_anti_method"] == "Fake Angles" then
2442
2443 snixzz.FakeAngle = ucmd:GetViewAngles()
2444
2445 if snixzz.FakeSwitch then
2446
2447 bSendPacket = true
2448 //snixzz.Functions.SendPacket( true )
2449 snixzz.Functions.SetViewAngles( ucmd, G.Angle( -192, snixzz.FakeAngle.y + 90, 0 ) )
2450
2451 else
2452
2453 bSendPacket = false
2454 snixzz.Functions.SetViewAngles( ucmd, G.Angle( -192, snixzz.FakeAngle.y - 90, 0 ) )
2455
2456 end
2457
2458 snixzz.FixMove( ucmd, true )
2459 snixzz.FakeSwitch = !snixzz.FakeSwitch
2460
2461 -- bSendPacket Fake Jitter
2462 elseif snixzz.Vars["aim_anti_method"] == "Fake Jitter" then
2463
2464 snixzz.FakeAngle = ucmd:GetViewAngles()
2465
2466 if snixzz.FakeSwitch then
2467
2468 bSendPacket = true
2469 snixzz.Functions.SetViewAngles( ucmd, G.Angle( G.math.random( -180, -186.49999 ), snixzz.FakeAngle.y + 90, 0 ) )
2470
2471 else
2472
2473 bSendPacket = false
2474 snixzz.Functions.SetViewAngles( ucmd, G.Angle( G.math.random( -180, -186.49999 ), snixzz.FakeAngle.y - 90, 0 ) )
2475
2476 end
2477
2478 snixzz.FixMove( ucmd, true )
2479 snixzz.FakeSwitch = !snixzz.FakeSwitch
2480
2481 */
2482
2483 -- Simple spinbot with -192 pitch
2484 elseif snixzz.Vars["aim_anti_method"] == "Spin" then
2485
2486 snixzz.Functions.SetViewAngles( ucmd, ucmd:GetViewAngles() + G.Angle( 0, G.math.fmod( G.CurTime() / .1 * 2 * snixzz.Vars["aim_anti_spin_speed"], 360 ), 0 ) )
2487 snixzz.FixMove( ucmd, false )
2488
2489 -- bSendPacket Spinbot
2490 /*elseif snixzz.Vars["aim_anti_method"] == "Fake Spin" then
2491
2492 snixzz.FakeAngle = ucmd:GetViewAngles()
2493
2494 if FakeSwitch then
2495
2496 bSendPacket = true
2497 snixzz.Functions.SetViewAngles( ucmd, ucmd:GetViewAngles() + G.Angle( 0, G.math.fmod( G.CurTime() / .1 * 2 * snixzz.Vars["aim_anti_spin_speed"], 360 ), 0 ) )
2498
2499 else
2500
2501 bSendPacket = false
2502 snixzz.Functions.SetViewAngles( ucmd, ucmd:GetViewAngles() + G.Angle( 0, -G.math.fmod( G.CurTime() / .1 * 2 * snixzz.Vars["aim_anti_spin_speed"], 360 ), 0 ) )
2503
2504 end
2505
2506 snixzz.FixMove( ucmd, false )
2507 */
2508 end
2509
2510end
2511
2512-- To shorten up my aimbot checks a bit.
2513function snixzz.ShouldAim( ucmd, isToggled )
2514
2515 return snixzz.Target && snixzz.IsValid( snixzz.Target, "Aimbot" ) && ucmd:CommandNumber() != 0// && snixzz.CanFire()
2516
2517end
2518
2519function snixzz.InMenu()
2520
2521 return snixzz.Typing && snixzz.ChatboxOpen && G.gui.IsConsoleVisible() && G.gui.IsGameUIVisible()
2522
2523end
2524
2525/*=======================
2526
2527
2528Hooked functions below
2529
2530
2531=========================*/
2532snixzz.Status = "Waiting..."
2533snixzz.StatusColor = Color( 255, 255, 0, 150 )
2534snixzz.Silent = G.Angle()
2535snixzz.BulletTime = true
2536snixzz.StuckSwitch = false
2537snixzz.StuckTicks = 0
2538snixzz.pDelay = 0
2539//snixzz.SpreadPos = G.Vector( 0, 0, 0 )
2540
2541function snixzz.CreateMove( ucmd )
2542
2543 // Silent aim
2544 snixzz.Silent = snixzz.Silent + G.Angle( ucmd:GetMouseY() * 0.022, -ucmd:GetMouseX() * 0.022, 0 )
2545 snixzz.Silent.p = G.math.Clamp( snixzz.Silent.p, -89, 89 )
2546 snixzz.Silent.y = G.math.NormalizeAngle( snixzz.Silent.y )
2547
2548 ucmd:SetViewAngles( snixzz.Silent )
2549
2550 if ucmd:CommandNumber() == 0 then
2551
2552 return
2553 end
2554
2555 if !snixzz.Bools["aim_holdtarget"] then
2556
2557 snixzz.Target = snixzz.GetTarget()
2558
2559 end
2560
2561 snixzz.Offset = G.Vector( 0, 0, snixzz.Vars["aim_offset"] )
2562
2563 snixzz.Angles = snixzz.Silent
2564
2565 // Aimbot core
2566 if ( snixzz.Binds["+aimbot"] != nil && G.input.IsKeyDown( snixzz.Binds["+aimbot"] ) && !snixzz.ChatboxOpen && !snixzz.Typing or snixzz.Bools["aim_toggle"] ) then
2567
2568 if snixzz.Bools["aim_holdtarget"] then
2569
2570 if snixzz.Target == nil or snixzz.Target != nil && !snixzz.IsValid( snixzz.Target, "Aimbot" ) then
2571
2572 snixzz.Target = snixzz.GetTarget()
2573
2574 end
2575
2576 end
2577
2578 if snixzz.ShouldAim( ucmd, snixzz.Bools["aim_toggle"] ) then
2579
2580 snixzz.Angles = snixzz.GetPos( snixzz.Target ) - snixzz.Offset
2581
2582 if snixzz.Bools["aim_prediction"] then
2583
2584 snixzz.Angles = snixzz.Prediction( snixzz.Angles, snixzz.Target )
2585
2586 end
2587
2588 snixzz.Angles = ( snixzz.Angles - G.LocalPlayer():GetShootPos() ):Angle()
2589
2590 -- View punch fix
2591 if snixzz.Bools["aim_norecoil"] then
2592
2593 snixzz.CorrectRecoil( ucmd )
2594
2595 end
2596
2597 -- Spread Prediction
2598 if snixzz.Bools["aim_nospread"] then
2599
2600 if snixzz.Bools["aim_badshots"] then
2601
2602 if G.math.random( 1, 5 ) == 1 then
2603
2604 snixzz.Angles = snixzz.Angles
2605
2606 else
2607
2608 snixzz.Angles = snixzz.PredictSpread( ucmd, G.Angle( snixzz.Angles.p, snixzz.Angles.y, 0 ) )
2609
2610 end
2611
2612 else
2613
2614 snixzz.Angles = snixzz.PredictSpread( ucmd, G.Angle( snixzz.Angles.p, snixzz.Angles.y, 0 ) )
2615
2616 end
2617
2618 end
2619
2620 snixzz.NormalizeAngles( snixzz.Angles )
2621
2622 -- Set angles
2623 snixzz.Functions.SetViewAngles( ucmd, snixzz.Angles )
2624
2625 -- autofire
2626 if snixzz.Bools["aim_autoshoot"] then
2627
2628 snixzz.Fire( ucmd )
2629
2630 end
2631
2632 -- Silent aim view & move correction
2633 if snixzz.Bools["aim_silent"] then
2634
2635 snixzz.FixMove( ucmd )
2636
2637 else
2638
2639 snixzz.Silent = snixzz.Angles
2640
2641 end
2642
2643 -- ghetto aimbot status
2644 if snixzz.Target:IsPlayer() then
2645
2646 snixzz.Status = "Locked! (" .. snixzz.Target:Nick() .. ")"
2647
2648 snixzz.StatusColor = Color( 255, 0, 0, 150 )
2649 snixzz.Locked = true
2650
2651 elseif snixzz.Target:IsNPC() then
2652
2653 snixzz.Status = "Locked! (" .. snixzz.Target:GetModel() .. ")"
2654
2655 snixzz.StatusColor = Color( 255, 0, 0, 150 )
2656 snixzz.Locked = true
2657
2658 elseif snixzz.IsProphunt && snixzz.IsProp( snixzz.Target ) && snixzz.IsProp( snixzz.Target ) then
2659
2660 snixzz.Status = "Locked! (" .. snixzz.Target:GetOwner():Name() .. ")"
2661
2662 snixzz.StatusColor = Color( 255, 0, 0, 150 )
2663 snixzz.Locked = true
2664
2665 end
2666
2667 else
2668
2669 snixzz.Target = nil
2670 snixzz.Status = "Searching..."
2671 snixzz.StatusColor = Color( 0, 255, 0, 150 )
2672 snixzz.Locked = false
2673
2674 end
2675
2676 else
2677
2678 snixzz.Target = nil
2679 snixzz.Status = "Searching..."
2680 snixzz.StatusColor = Color( 0, 255, 0, 150 )
2681 snixzz.Locked = false
2682
2683 end
2684
2685 -- Rapid-Fire
2686 if snixzz.Bools["misc_rapidfire"] && ucmd:KeyDown( IN_ATTACK ) && !snixzz.Locked then
2687
2688 snixzz.Fire( ucmd )
2689
2690 end
2691
2692 -- Triggerbot
2693 if snixzz.Binds["+triggerbot"] != nil && snixzz.Bools["misc_triggerbot"] or G.input.IsKeyDown( snixzz.Binds["+triggerbot"] ) then
2694
2695 snixzz.StatusColor = Color( 255, 255, 0, 150 )
2696 snixzz.Status = "Triggerbot Searching.."
2697 local hitgroup = G.LocalPlayer():GetEyeTrace().HitGroup
2698 local entity = G.LocalPlayer():GetEyeTrace().Entity
2699 snixzz.SpreadPos = G.LocalPlayer():GetEyeTrace().HitPos
2700
2701 if snixzz.Vars["misc_triggerbot_type"] == "NPC" or snixzz.Vars["misc_triggerbot_type"] == "Both" && entity:IsNPC() then
2702
2703 if snixzz.IsValid( entity, "Triggerbot" ) then
2704
2705 if snixzz.Bools["misc_triggerbot_nospread"] then
2706
2707 snixzz.NoSpreadAng = ( snixzz.SpreadPos - G.LocalPlayer():GetShootPos() ):GetNormal():Angle()
2708 snixzz.NoSpreadAng = snixzz.PredictSpread( ucmd, snixzz.NoSpreadAng )
2709 snixzz.Functions.SetViewAngles( ucmd, snixzz.NoSpreadAng )
2710
2711 end
2712
2713 snixzz.StatusColor = Color( 255, 0, 0, 150 )
2714 snixzz.Status = "Firing! (" .. entity:GetModel() .. ")"
2715
2716 snixzz.Fire( ucmd )
2717
2718 end
2719
2720 elseif snixzz.Vars["misc_triggerbot_method"] == "Body" then
2721
2722 if snixzz.IsValid( entity, "Triggerbot" ) then
2723
2724 if snixzz.Bools["misc_triggerbot_nospread"] then
2725
2726 snixzz.NoSpreadAng = ( snixzz.SpreadPos - G.LocalPlayer():GetShootPos() ):GetNormal():Angle()
2727 snixzz.NoSpreadAng = snixzz.PredictSpread( ucmd, snixzz.NoSpreadAng )
2728 snixzz.Functions.SetViewAngles( ucmd, snixzz.NoSpreadAng )
2729
2730 end
2731
2732 snixzz.StatusColor = Color( 255, 0, 0, 150 )
2733 snixzz.Status = "Firing! (" .. entity:Nick() .. ")"
2734
2735 snixzz.Fire( ucmd )
2736
2737 end
2738
2739 elseif snixzz.Vars["misc_triggerbot_method"] == "Hitbox" then
2740
2741 if snixzz.Hitgroups[hitgroup] != nil && snixzz.IsValid( entity, "Triggerbot" ) then
2742
2743 if snixzz.Bools["misc_triggerbot_nospread"] then
2744
2745 snixzz.NoSpreadAng = ( snixzz.SpreadPos - G.LocalPlayer():GetShootPos() ):GetNormal():Angle()
2746 snixzz.NoSpreadAng = snixzz.PredictSpread( ucmd, snixzz.NoSpreadAng )
2747 snixzz.Functions.SetViewAngles( ucmd, snixzz.NoSpreadAng )
2748
2749 end
2750
2751 snixzz.StatusColor = Color( 255, 0, 0, 150 )
2752 snixzz.Status = "Firing! (" .. entity:Nick() .. ")"
2753
2754 snixzz.Fire( ucmd )
2755
2756 end
2757
2758 end
2759
2760 end
2761
2762 -- Anti-Aim
2763 if snixzz.Bools["aim_anti"] && !snixzz.Locked && !ucmd:KeyDown( IN_ATTACK ) && !ucmd:KeyDown( IN_USE ) && G.LocalPlayer():GetMoveType() != MOVETYPE_LADDER then
2764
2765 snixzz.AntiAim( ucmd )
2766
2767 end
2768
2769 // Bunnyhop & autostrafe
2770 if snixzz.Bools["misc_bhop"] then
2771
2772 if !G.LocalPlayer():GetMoveType() != MOVETYPE_NOCLIP && G.LocalPlayer():GetMoveType() != MOVETYPE_LADDER && !snixzz.Typing then
2773
2774 if !G.LocalPlayer():OnGround() && ucmd:KeyDown( IN_JUMP )then
2775
2776 ucmd:SetButtons( G.bit.band( ucmd:GetButtons(), G.bit.bnot( IN_JUMP ) ) )
2777
2778 -- Autostrafe shamelessly ripped from "public hvh v1".
2779 -- i don't understand this shit.
2780 if snixzz.Bools["misc_autostrafe"] then
2781
2782 if ucmd:GetMouseX() > 1 or ucmd:GetMouseX() < - 1 then
2783
2784 ucmd:SetSideMove( ucmd:GetMouseX() > 1 && 400 or -400 )
2785
2786 else
2787
2788 ucmd:SetForwardMove( 5850 / G.LocalPlayer():GetVelocity():Length2D() )
2789 ucmd:SetSideMove( ( ucmd:CommandNumber() % 2 == 0 ) && -400 or 400 ) -- what the fuck. who thought of this shit.
2790
2791 end
2792
2793 end
2794
2795 elseif ucmd:KeyDown( IN_JUMP ) && snixzz.Bools["misc_autostrafe"] then
2796
2797 ucmd:SetForwardMove( 10000 )
2798
2799 end
2800
2801 end
2802
2803 end
2804
2805end
2806
2807function snixzz.CalcView( ply, origin, angles, fov )
2808
2809 local ply = G.LocalPlayer()
2810 local wep = ply:GetActiveWeapon()
2811 local view = {}
2812
2813 // Advanced NoRecoil. TODO: Recoil Control System
2814 if snixzz.Bools["aim_norecoil"] then
2815
2816 if wep.Primary then
2817
2818 if !snixzz.RecoilBackup[wep:GetClass()] then
2819 snixzz.RecoilBackup[wep:GetClass()] = wep.Primary.Recoil
2820 end
2821
2822 wep.Primary.Recoil = 0
2823
2824 elseif wep.Secondary then
2825
2826 if !snixzz.RecoilBackup then
2827
2828 snixzz.RecoilBackup[wep:GetClass()] = wep.Secondary.Recoil
2829
2830 end
2831
2832 wep.Secondary.Recoil = 0
2833
2834 end
2835 else
2836
2837 if wep.Primary then
2838
2839 if wep.Primary.Recoil == 0 then
2840
2841 wep.Primary.Recoil = snixzz.RecoilBackup[wep:GetClass()]
2842
2843 end
2844
2845 else
2846
2847 if wep.Secondary then
2848
2849 if wep.Secondary.Recoil == 0 then
2850
2851 wep.Secondary.Recoil = snixzz.RecoilBackup[wep:GetClass()]
2852
2853 end
2854
2855 end
2856
2857 end
2858
2859 end
2860
2861 view.angles = ( snixzz.Bools["aim_silent"] or snixzz.Bools["aim_anti"] ) && snixzz.Silent or angles
2862
2863 view.fov = snixzz.Vars["esp_fov"]
2864
2865 view.origin = snixzz.Bools["misc_thirdperson"] && ( origin - snixzz.Silent:Forward() * snixzz.Vars["misc_thirdperson_distance"] ) or origin
2866
2867 return view
2868end
2869
2870// GetColor func
2871function snixzz.GetESPColor( v )
2872
2873 if snixzz.Bools["misc_murder_finder"] && snixzz.IsMurder then
2874
2875 if snixzz.IsMurderer( v ) then
2876
2877 return G.Color( 255, 0, 0 )
2878
2879 elseif snixzz.HasMagnum( v ) then
2880
2881 return G.Color( 0, 255, 255 )
2882
2883 else
2884
2885 return G.Color( 0, 255, 0 )
2886
2887 end
2888
2889 elseif snixzz.Bools["misc_prophunt_finder"] && snixzz.IsProphunt then
2890
2891 if snixzz.IsProp( v ) then
2892
2893 return G.Color( 255, 0, 0 )
2894
2895 else
2896
2897 return G.Color( 0, 255, 0 )
2898
2899 end
2900
2901 end
2902
2903 if v:IsNPC() then
2904
2905 return G.Color( 0, 255, 0 )
2906
2907 end
2908
2909 if snixzz.Entities[v:GetClass()] then
2910
2911 return G.Color( 255, 255, 255 )
2912
2913 end
2914
2915 if snixzz.Bools["misc_traitor_finder"] && snixzz.IsTTT && snixzz.IsTraitor( v ) then
2916
2917 return G.Color( 255, 0, 0 )
2918
2919 else
2920
2921 return G.team.GetColor( v:Team() )
2922
2923 end
2924
2925 return G.Color( 255, 255, 255 )
2926
2927end
2928
2929function snixzz.HUDPaint()
2930
2931 local textpos;
2932 local x1, y1, x2, y2;
2933 local diff;
2934 local diff2;
2935 local color;
2936 local startx;
2937 local starty;
2938 local endpos;
2939 local pos;
2940 local wep = G.LocalPlayer():GetActiveWeapon()
2941 local viewmodel = G.LocalPlayer():GetViewModel()
2942 local weapon
2943 local dynLight
2944 local playerPos
2945 local targetPos
2946 local mats = EntM.GetMaterials( game.GetWorld() )
2947
2948 -- Menu header
2949 if snixzz.MenuOpen then
2950
2951 G.surface.SetDrawColor( snixzz.Vars["misc_menucolor2"] )
2952 G.surface.DrawRect( 20, 50, 420, 60 )
2953
2954 G.surface.SetDrawColor( Color( 0, 0, 0, 255 ) )
2955 G.surface.DrawOutlinedRect( 20, 50, 420, 60, 2 )
2956
2957 G.draw.SimpleTextOutlined( "snixzz3", "snixzz_logo", 25, 55, snixzz.Colors.White, TEXT_ALIGN_LEFT,TEXT_ALIGN_LEFT, 1.5, Color( 0, 0, 0 ) )
2958 G.draw.SimpleTextOutlined( "by 0xymoron", "snixzz_logo_small", G.surface.GetTextSize( "snixzz3" ) + 30, 65, snixzz.Colors.White, TEXT_ALIGN_LEFT,TEXT_ALIGN_LEFT, 1, Color( 0, 0, 0 ) )
2959
2960 -- Is VIP?
2961 G.draw.SimpleTextOutlined( "VIP:", "snixzz_logo_small",
2962 //190, 65,
2963 snixzz.Frame:GetWide() / 2 - surface.GetTextSize( "VIP:" ) / 2, 65,
2964 snixzz.Colors.White, TEXT_ALIGN_LEFT,TEXT_ALIGN_LEFT, 1, Color( 0, 0, 0 )
2965 )
2966
2967 -- Texture
2968 G.surface.SetMaterial( Material( snixzz.IsVIP() == true && "icon16/accept.png" or snixzz.IsVIP() == false && "icon16/cancel.png" ) )
2969 G.surface.SetDrawColor( color_white )
2970 G.surface.DrawTexturedRect( snixzz.Frame:GetWide() / 2 - surface.GetTextSize( "VIP:" ) / 2 + 22, 65, 16, 16 )
2971
2972 -- Big ass shit
2973 G.draw.SimpleTextOutlined(
2974 snixzz.Info.Version .. " Last Updated: " .. snixzz.Info.Updated,
2975 "snixzz_logo_small",
2976 snixzz.Frame:GetWide() + 15, snixzz.Frame:GetTall() - 352,
2977 snixzz.Colors.White, TEXT_ALIGN_RIGHT, TEXT_ALIGN_BOTTOM, 1, Color( 30, 30, 30, 255 )
2978 )
2979
2980 end
2981
2982 if snixzz.Panic then return end
2983 if !snixzz.Bools["esp_enabled"] then return end
2984
2985 -- Watermark
2986 if !snixzz.IsVIP() then
2987
2988 G.draw.SimpleTextOutlined( "snixzz3 " .. snixzz.Info.Version .. " - snixzz.net", "snixzz_logo", G.ScrW() - 10, 25, G.HSVToColor( G.RealTime() * 120 % 360, 1, 1 ), TEXT_ALIGN_RIGHT, TEXT_ALIGN_BOTTOM, 1, G.Color( 0, 0, 0 ) )
2989
2990 end
2991
2992 -- Laser Sight
2993 if snixzz.Bools["esp_laser"] then
2994
2995 if viewmodel && G.IsValid( wep ) && G.IsValid( viewmodel ) then
2996
2997 if wep:GetClass() != "weapon_physgun" then
2998
2999 local muzzle = viewmodel:LookupAttachment( "muzzle" )
3000
3001 if muzzle == 0 then
3002
3003 muzzle = viewmodel:LookupAttachment( "1" )
3004
3005 end
3006
3007 local trace = G.LocalPlayer():GetEyeTrace().HitPos
3008
3009 if viewmodel:GetAttachment( muzzle ) then
3010
3011 G.cam.Start3D( G.EyePos(), G.EyeAngles() )
3012
3013 local startpos = viewmodel:GetAttachment( muzzle ).Pos
3014 local endpos = trace
3015
3016 if snixzz.Bools["aim_silent"] && snixzz.Locked && G.IsValid( snixzz.Target ) then
3017
3018 endpos = snixzz.GetPos( snixzz.Target )
3019
3020 else
3021
3022 endpos = trace
3023
3024 end
3025
3026 -- Laser
3027 G.render.SetMaterial( G.Material( "trails/laser" ) )
3028 G.render.DrawBeam( startpos, endpos, 4, 0, 0, snixzz.Vars["misc_lasercolor"] )
3029
3030 -- HitPos Dot
3031 G.render.SetMaterial( G.Material( "Sprites/light_glow02_add_noz" ) )
3032
3033 G.render.DrawQuadEasy(
3034 endpos, -- trace
3035 ( G.EyePos() - trace ):GetNormal(),
3036 25, 25,
3037 Color( 255, 255, 255, 255 ), 0
3038
3039 )
3040
3041 G.cam.End3D()
3042
3043 end
3044
3045 end
3046
3047 end
3048
3049 end
3050
3051 for k, v in G.next, mats do
3052
3053 local mat = G.Material( v )
3054
3055 if !snixzz.Bools["esp_asus_walls"] then
3056
3057 MatM.SetFloat( mat, "$alpha", 1 )
3058
3059 continue
3060
3061 end
3062
3063 MatM.SetFloat( mat, "$alpha", .56 )
3064
3065 end
3066
3067 -- Dynamic Light around player
3068 if snixzz.Bools["esp_dynamiclight"] then
3069
3070 dynLight = G.DynamicLight( G.LocalPlayer():EntIndex() )
3071 dynLight.pos = G.LocalPlayer():GetShootPos()
3072 dynLight.r = 255
3073 dynLight.g = 255
3074 dynLight.b = 255
3075 dynLight.brightness = 1.75
3076 dynLight.Decay = 850
3077 dynLight.Size = 250
3078 dynLight.DieTime = G.CurTime() + 1
3079
3080 end
3081
3082 if G.IsValid( viewmodel ) then
3083
3084 if snixzz.Bools["esp_wireweapon"] then
3085
3086 _R.Entity.SetMaterial( viewmodel, "models/wireframe" )
3087 _R.Entity.SetColor( viewmodel, snixzz.Vars["misc_lasercolor"] )
3088
3089 else
3090
3091 _R.Entity.SetMaterial( viewmodel, "" )
3092 _R.Entity.SetColor( viewmodel, Color( 255, 255, 255 ) )
3093
3094 end
3095
3096 end
3097
3098 local Method
3099
3100 if snixzz.IsProphunt && snixzz.Bools["misc_prophunt_finder"] then
3101
3102 Method = G.ents.GetAll()
3103
3104 elseif snixzz.Vars["esp_type"] == "NPC" or snixzz.Vars["esp_type"] == "All" or snixzz.Vars["esp_type"] == "Entities" then
3105
3106 Method = G.ents.GetAll()
3107
3108 elseif snixzz.Vars["esp_type"] == "Players" then
3109
3110 Method = G.player.GetAll()
3111
3112 end
3113
3114 for k, v in G.next, Method do
3115
3116 if snixzz.IsValid( v, "ESP" ) then
3117
3118 textpos = 0 -- -2
3119
3120 x1, y1, x2, y2 = snixzz.GetBounds( v )
3121 diff = G.math.abs( x2 - x1 )
3122 diff2 = G.math.abs( y2 - y1 )
3123
3124 playerPos = snixzz.GetPos( v )
3125 color = snixzz.GetESPColor( v )
3126
3127 if v:IsPlayer() or v:IsNPC() then
3128
3129 if G.IsValid( v:GetActiveWeapon() ) then
3130
3131 weapon = v:GetActiveWeapon():GetPrintName()
3132
3133 else
3134
3135 weapon = "Unknown"
3136
3137 end
3138
3139 else
3140
3141 weapon = "nil"
3142
3143 end
3144
3145 if v:IsPlayer() or snixzz.IsProphunt && snixzz.IsProp( v ) then
3146
3147 if snixzz.IsMurder then
3148
3149 if snixzz.Bools["esp_name"] then
3150
3151 G.draw.SimpleText( v:GetBystanderName() .. " (" .. v:Nick() .. ")", "ESPFont", x2 + 2, y1 + textpos, color, TEXT_ALIGN_LEFT, TEXT_ALIGN_LEFT )
3152 textpos = textpos + 12
3153
3154 end
3155
3156 elseif snixzz.IsProphunt && snixzz.Bools["misc_prophunt_finder"] then
3157
3158 if snixzz.IsProp( v ) then
3159
3160 G.draw.SimpleText( v:GetOwner():Name(), "ESPFont", x2 + 2, y1 + textpos, color, TEXT_ALIGN_LEFT, TEXT_ALIGN_LEFT )
3161 textpos = textpos + 12
3162
3163 elseif v:Team() != TEAM_PROPS && v:GetClass() != "ph_prop" then
3164
3165 G.draw.SimpleText( v:Nick(), "ESPFont", x2 + 2, y1 + textpos, color, TEXT_ALIGN_LEFT, TEXT_ALIGN_LEFT )
3166 textpos = textpos + 12
3167
3168 end
3169
3170 else
3171
3172 if snixzz.Bools["esp_name"] then
3173
3174 G.draw.SimpleText( v:Nick(), "ESPFont", x2 + 2, y1 + textpos, color, TEXT_ALIGN_LEFT, TEXT_ALIGN_LEFT )
3175 textpos = textpos + 12
3176
3177 end
3178
3179 end
3180
3181 elseif v:IsNPC() then
3182
3183 G.draw.SimpleText( v:GetModel(), "ESPFont", x2 + 2, y1 + textpos, color, TEXT_ALIGN_LEFT, TEXT_ALIGN_LEFT )
3184 textpos = textpos + 12
3185
3186 elseif snixzz.Entities[v:GetClass()] then
3187
3188 G.draw.SimpleText( v:GetClass(), "ESPFont", x2 + 2, y1 + textpos, color, TEXT_ALIGN_LEFT, TEXT_ALIGN_LEFT )
3189 textpos = textpos + 12
3190
3191 end
3192
3193 if snixzz.Bools["esp_health_text"] then
3194
3195 if snixzz.IsProphunt && snixzz.Bools["misc_prophunt_finder"] && snixzz.IsProp( v ) then
3196
3197 G.draw.SimpleText( "HP: " .. v:GetOwner():Health(), "ESPFont", x2 + 2, y1 + textpos, color, TEXT_ALIGN_LEFT, TEXT_ALIGN_LEFT )
3198 textpos = textpos + 12
3199
3200 elseif !snixzz.Entities[v:GetClass()] then
3201
3202 G.draw.SimpleText( "HP: " .. v:Health(), "ESPFont", x2 + 2, y1 + textpos, color, TEXT_ALIGN_LEFT, TEXT_ALIGN_LEFT )
3203 textpos = textpos + 12
3204
3205 end
3206
3207 end
3208
3209 -- Health Bar
3210 if snixzz.Bools["esp_health_bar"] && !snixzz.Entities[v:GetClass()] then
3211
3212 local health = v:Health()
3213
3214 if snixzz.IsProphunt && snixzz.Bools["misc_prophunt_finder"] && snixzz.IsProp( v ) then
3215
3216 health = v:GetOwner():Health()
3217
3218 end
3219
3220 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
3221 G.surface.DrawRect( x1 -6, y1, 3, diff2 )
3222 G.surface.SetDrawColor( Color( 0, 255, 0 ) )
3223 G.surface.DrawRect( x1 - 6, y2 - diff2 / 100 * health, 3, diff2 / 100 * health )
3224
3225 end
3226
3227 -- ESP weapon
3228 if v:IsPlayer() or v:IsNPC() then
3229
3230 if snixzz.Bools["esp_weapon"] then
3231
3232 G.draw.SimpleText( weapon, "ESPFont", x2 + 2, y1 + textpos, color, TEXT_ALIGN_LEFT, TEXT_ALIGN_LEFT )
3233 textpos = textpos + 12
3234
3235 end
3236
3237 -- Snaplines
3238 if snixzz.Bools["esp_snaplines"] then
3239
3240 startx = G.ScrW() / 2
3241 starty = G.ScrH() / 2
3242 endpos = playerPos:ToScreen()
3243
3244 G.surface.SetDrawColor( color )
3245 G.surface.DrawLine( startx, starty, endpos.x, endpos.y )
3246
3247 end
3248
3249 end
3250
3251 -- Distance ESP
3252 if snixzz.Bools["esp_distance"] then
3253
3254 G.draw.SimpleText( "D: " .. G.math.Round( v:GetPos():Distance( G.LocalPlayer():GetPos() ) ), "ESPFont", x2 + 2, y1 + textpos, color, TEXT_ALIGN_LEFT, TEXT_ALIGN_LEFT )
3255 textpos = textpos + 12
3256
3257 end
3258
3259
3260 // Box ESP
3261 if snixzz.Bools["esp_box"] then
3262
3263 snixzz.DrawOutlinedBox( x1, y1, diff, diff2, snixzz.Vars["esp_box_width"], color )
3264
3265 end
3266
3267 -- taken from newsbot for debug purposes
3268 if snixzz.Bools["esp_hitbox"] then
3269
3270 for group = 0, EntM.GetHitBoxGroupCount( v ) do
3271
3272 local count = EntM.GetHitBoxCount( v, group ) - 1
3273
3274 for hitbox = 0, count do
3275
3276 local bone = EntM.GetHitBoxBone( v, hitbox, group )
3277
3278 if !bone then continue end
3279
3280 local min, max = EntM.GetHitBoxBounds( v, hitbox, group )
3281
3282 local bonepos, boneang = EntM.GetBonePosition( v, bone )
3283
3284 G.cam.Start3D()
3285
3286 if snixzz.Vars["aim_target_method"] == "Hitscan" && snixzz.TargetBone != nil && bone == snixzz.TargetBone then
3287
3288 G.render.DrawWireframeBox( bonepos, boneang, min, max, Color( 255, 0, 0 ), true )
3289
3290 else
3291
3292 G.render.DrawWireframeBox( bonepos, boneang, min, max, Color( 255, 255, 255 ), true )
3293
3294 end
3295
3296 G.cam.End3D()
3297
3298 end
3299
3300 end
3301
3302 end
3303
3304 -- Chams! Much faster than RenderScreenSpaceEffects
3305 if snixzz.Bools["esp_chams"] then
3306
3307 G.cam.Start3D()
3308
3309 if snixzz.Vars["esp_chams_material"] == "Solid" then
3310
3311 v:SetMaterial( "models/debug/debugwhite" )
3312
3313 elseif snixzz.Vars["esp_chams_material"] == "Wireframe" then
3314
3315 v:SetMaterial( "models/wireframe" )
3316
3317 elseif snixzz.Vars["esp_chams_material"] == "XQZ" then
3318
3319 v:SetMaterial( "" )
3320
3321 end
3322
3323 -- Weapon Chams
3324 if v:IsPlayer() or v:IsNPC() then
3325
3326 if G.IsValid( v:GetActiveWeapon() ) then
3327
3328 v:GetActiveWeapon():DrawModel()
3329
3330 end
3331
3332 end
3333
3334 -- Player chams
3335 if snixzz.Vars["esp_chams_material"] != "XQZ" then
3336
3337 G.render.SetColorModulation( color.r / 255, color.g / 255, color.b / 255 )
3338
3339 end
3340
3341 v:DrawModel()
3342 //v:SetColor( Color( 255, 255, 255 ) )
3343 v:SetMaterial( "" )
3344
3345 G.cam.End3D()
3346
3347 end
3348
3349 -- For prediction testing & shit
3350 if snixzz.Bools["esp_aimpos"] then
3351
3352 local predictedPos = snixzz.Prediction( playerPos, v ):ToScreen()
3353
3354 G.draw.RoundedBox( 4, predictedPos.x, predictedPos.y, 7, 7, Color( 255, 0, 0, 255 ) )
3355
3356 end
3357
3358 else
3359
3360 continue
3361
3362 end
3363
3364 end
3365
3366 // Aim status & shit
3367 if snixzz.Bools["esp_status"] then
3368
3369 G.draw.DrawText( snixzz.Status, "snixzz_status", G.ScrW() / 2, G.ScrH() * 0.5 + 50, snixzz.StatusColor, TEXT_ALIGN_CENTER )
3370
3371 end
3372
3373 // Crosshair
3374 local x = ScrW() / 2
3375 local y = ScrH() / 2
3376
3377 local crosscolor = Color( 0, 0, 0, 255 )
3378 local crosslength = 50
3379 local gap = 2
3380
3381 local boxsize = 5
3382
3383 -- Box
3384 if snixzz.Bools["esp_crosshair_box"] then
3385
3386 G.surface.SetDrawColor( Color( 255, 255, 255 ) )
3387 G.surface.DrawOutlinedRect( x - boxsize - 2, y - boxsize - 2, ( boxsize + 2 ) * 2 + 1, ( boxsize + 2 ) * 2 + 1 )
3388
3389 end
3390
3391 -- Crosshair
3392 if snixzz.Bools["esp_crosshair"] then
3393
3394 G.surface.SetDrawColor( 0, 0, 0, 255 )
3395 G.surface.DrawLine( x - crosslength, y, x - gap, y )
3396 G.surface.DrawLine( x + crosslength, y, x + gap, y )
3397
3398 G.surface.DrawLine( x, y - crosslength, x, y - gap )
3399 G.surface.DrawLine( x, y + crosslength, x, y + gap )
3400
3401 end
3402
3403 -- Menu opening
3404 if snixzz.Binds["+menu"] != nil then
3405
3406 if G.input.IsKeyDown( snixzz.Binds["+menu"] ) && !snixzz.Typing && !snixzz.MenuOpen && !G.gui.IsConsoleVisible() then
3407
3408 snixzz.Menu()
3409 snixzz.MenuOpen = true
3410
3411 end
3412
3413 end
3414
3415 -- Console Opening
3416 if G.input.IsKeyDown( KEY_Q ) && G.input.IsKeyDown( KEY_TAB ) && !snixzz.Typing && !snixzz.ConsoleOpen && !G.gui.IsConsoleVisible() then
3417
3418 snixzz.Console()
3419 snixzz.ConsoleOpen = true
3420
3421 end
3422
3423 -- Chat opening
3424 if !snixzz.ChatboxOpen && !snixzz.Typing && !snixzz.ConsoleOpen && !G.gui.IsConsoleVisible() then
3425
3426 if G.input.IsKeyDown( snixzz.Binds["chat"] ) then
3427
3428 snixzz.OpenChat()
3429 snixzz.ChatboxOpen = true
3430
3431 end
3432
3433 end
3434
3435end
3436
3437snixzz.properCurTime = 0
3438snixzz.LagVar = 12
3439snixzz.LagTicks = 0
3440local dynLight
3441function snixzz.Move()
3442
3443 if G.IsFirstTimePredicted() then return end
3444 snixzz.properCurTime = G.CurTime() + G.engine.TickInterval()
3445
3446 // No hands
3447 if snixzz.Bools["esp_nohands"] then
3448
3449 snixzz.Functions.NoDraw( G.Material( "models/weapons/v_models/hands/v_hands" ), true )
3450
3451 else
3452
3453 snixzz.Functions.NoDraw( G.Material( "models/weapons/v_models/hands/v_hands" ), false )
3454
3455 end
3456
3457end
3458
3459function snixzz.Namechanger()
3460
3461 /*if snixzz.Bools["misc_namechanger"] then
3462
3463 snixzz.NextName = G.table.Random( G.player.GetAll() ):Nick()
3464 G.chat.AddText( Color( 0, 255, 255 ), "[snixzz3] Changed your name to " .. snixzz.NextName )
3465
3466 if snixzz.IsDarkRP then
3467
3468 -- Overly comlpicated Steam name stealer & RP name stealer. Accuse 2 different people at once.
3469 snixzz.NextName = G.table.Random( G.player.GetAll() ):Nick()
3470 //snixzz.Functions.ConCommand( "name " .. snixzz.NextName .. " %" )
3471 //snixzz.Functions.SetName( snixzz.NextName .. " %" )
3472
3473 G.timer.Simple( 0.5, function()
3474 snixzz.NextName = G.table.Random( G.player.GetAll() ):Nick()
3475 snixzz.Functions.ConCommand( "darkrp rpname " .. snixzz.NextName .. "q" ) -- ** TODO: CHANGE q TO SOMETHING ELSE.
3476 end )
3477
3478 else
3479
3480 snixzz.NextName = G.table.Random( G.player.GetAll() ):Nick()
3481 //snixzz.Functions.ConCommand( "name " .. snixzz.NextName .. " %" )
3482 //snixzz.Functions.SetName( snixzz.NextName .. " %" )
3483
3484 end
3485
3486 end*/
3487
3488end
3489
3490function snixzz.ChatSpam()
3491
3492 if snixzz.Bools["misc_chat_spam"] then
3493
3494 if snixzz.Vars["misc_chat_spam_method"] == "Advertise" then
3495
3496 G.RunConsoleCommand( "say", G.Either( snixzz.IsDarkRP, "/ooc " .. snixzz.Vars["misc_chat_spam_message"], snixzz.Vars["misc_chat_spam_message"] ) )
3497
3498 elseif snixzz.Vars["misc_chat_spam_method"] == "Jokes" then
3499
3500 G.http.Fetch( "http://tambal.azurewebsites.net/joke/random",
3501
3502 function( body )
3503
3504 if body && body != "" then
3505
3506 G.RunConsoleCommand( "say", G.Either( snixzz.IsDarkRP, "/ooc " .. util.JSONToTable( body )["joke"], util.JSONToTable( body )["joke"] ) )
3507
3508 end
3509
3510 end,
3511
3512 function( error )
3513
3514 snixzz.Chat( snixzz.Colors.Red, "Unable to grab joke from API! (" .. error .. ")" )
3515
3516 end
3517
3518 )
3519
3520 end
3521
3522 end
3523
3524end
3525
3526snixzz.CorrectAngles = {}
3527
3528function snixzz.AAA()
3529
3530 for k, v in G.next, G.player.GetAll() do
3531
3532 if v == G.LocalPlayer() then continue end
3533
3534 local pitch, yaw = v:EyeAngles().x, v:EyeAngles().y
3535 local sid = v:SteamID()
3536
3537 if !snixzz.CorrectAngles[sid] then
3538
3539 snixzz.CorrectAngles[sid] = { ["p"] = 0, ["y"] = 0 }
3540
3541 end
3542
3543 -- pitch
3544 if snixzz.CorrectAngles[sid]["p"] == 1 then
3545
3546 pitch = 89
3547
3548 elseif snixzz.CorrectAngles[sid]["p"] == 2 then
3549
3550 pitch = -89
3551
3552 end
3553
3554 -- yaw
3555 if snixzz.CorrectAngles["y"] == 1 then
3556
3557 yaw = yaw - 45
3558
3559 elseif snixzz.CorrectAngles["y"] == 2 then
3560
3561 yaw = yaw + 45
3562
3563 else
3564
3565 yaw = yaw - 180
3566
3567 end
3568
3569 _R.Entity.SetPoseParameter( v, "aim_pitch", pitch )
3570 _R.Entity.SetPoseParameter( v, "body_yaw", 0 )
3571 _R.Entity.SetPoseParameter( v, "aim_yaw", 0 )
3572 _R.Entity.InvalidateBoneCache( v )
3573 _R.Entity.SetRenderAngles( v, G.Angle( 0, G.math.NormalizeAngle( yaw ), 0 ) )
3574
3575 end
3576
3577end
3578
3579/*
3580
3581
3582 Traitor, Prophunt, & Murder Finders.
3583
3584
3585*/
3586snixzz.Traitors = {}
3587snixzz.Murderers = {}
3588snixzz.ClearedMurderers = false
3589snixzz.ClearedTraitors = false
3590local t
3591
3592function snixzz.IsMurderer( v )
3593
3594 if v:HasWeapon( "weapon_mu_knife" ) then
3595
3596 return true
3597
3598 end
3599
3600 if G.table.HasValue( snixzz.Murderers, v ) then
3601
3602 return true
3603
3604 end
3605
3606 return false
3607
3608end
3609
3610function snixzz.HasMagnum( v )
3611
3612 if v:HasWeapon( "weapon_mu_magnum" ) then
3613
3614 return true
3615
3616 end
3617
3618 return false
3619
3620end
3621
3622local testtab = {}
3623function snixzz.IsProp( v )
3624
3625 if v:GetOwner() != nil then
3626
3627 local owner = v:GetOwner()
3628
3629 else
3630
3631 return false
3632
3633 end
3634
3635 if v:GetClass() == "ph_prop" && owner != G.LocalPlayer() then
3636
3637 return true
3638
3639 end
3640
3641 return false
3642
3643end
3644
3645function snixzz.IsTraitor( v )
3646
3647 if G.table.HasValue( snixzz.Traitors, v ) or G.LocalPlayer():IsTraitor() && v:IsTraitor() then
3648
3649 return true
3650
3651 end
3652
3653 return false
3654end
3655
3656function snixzz.GetTraitors()
3657
3658 if !snixzz.IsTTT then return end
3659
3660 if !snixzz.Bools["misc_traitor_finder"] then return end
3661
3662 for k, v in G.next, G.ents.GetAll() do
3663
3664 if _G.GetRoundState() == 3 && v:IsWeapon() && v:GetOwner():IsPlayer() && v.Buyer == nil && v.CanBuy && G.table.HasValue( v.CanBuy, 1 ) && !G.table.HasValue( snixzz.Traitors, v:GetOwner() ) then
3665
3666 local t = v:GetOwner()
3667
3668 if t:GetRole() == 2 then
3669
3670 v.Buyer = t
3671
3672 snixzz.ClearedTraitors = false
3673
3674 else
3675
3676 G.table.insert( snixzz.Traitors, t )
3677
3678 snixzz.ClearedTraitors = false
3679
3680 snixzz.Chat( G.Color( 255, 0, 0 ), t:Nick() .. " bought traitor weapon '" .. v:GetClass() .. "'" )
3681
3682 end
3683
3684 elseif GetRoundState() != 3 then
3685
3686 if !snixzz.ClearedTraitors then
3687
3688 snixzz.Traitors = {}
3689 snixzz.Chat( color_white, "Cleared traitors table." )
3690 snixzz.ClearedTraitors = true
3691
3692
3693 end
3694
3695 end
3696
3697 end
3698
3699end
3700
3701
3702/*
3703 DETOURS
3704*/
3705
3706function snixzz.CreateDetours()
3707
3708 debug.getinfo = snixzz.Detour( debug.getinfo, function()
3709
3710 return {
3711 what = "C",
3712 source = "[C]",
3713 source_src = "[C]",
3714 linedefined = -1,
3715 currentline = -1,
3716 lastlinedefined = -1,
3717 short_src = "[C]",
3718 }
3719
3720 end )
3721
3722 _R.Entity.FireBullets = snixzz.Detour( _R.Entity.FireBullets, function( e, bullet )
3723
3724 snixzz.Cones.Normal[ G.LocalPlayer():GetActiveWeapon():GetClass() ] = bullet["Spread"]
3725
3726 return snixzz.Detours[ _R.Entity.FireBullets ]( e, bullet )
3727 end )
3728
3729 render.Capture = snixzz.Detour( render.Capture, function( data )
3730
3731 snixzz.ACNotify( "An anti-cheat attempted to capture your screen, disabling visuals for 5 seconds." )
3732
3733 snixzz.Panic = true
3734
3735 if snixzz.MenuOpen == true then
3736
3737 snixzz.Frame:SetVisible( false )
3738 snixzz.MenuOpen = false
3739
3740 end
3741
3742 G.timer.Simple( 5, function() snixzz.Panic = false end )
3743
3744 return data
3745 end )
3746
3747 file.Exists = snixzz.Detour( file.Exists, function( filename, dir )
3748
3749 snixzz.LogDetour( "file.Exists( '" .. filename .. "', '" .. dir .. "' )" )
3750
3751 if G.string.find( filename, "snixzz" ) then
3752
3753 snixzz.ACNotify( "An anti-cheat attempted to search for snixzz" )
3754 return false
3755
3756 else
3757
3758 return snixzz.Detours[ file.Exists ]( filename, dir )
3759
3760 end
3761
3762 end )
3763
3764 file.Read = snixzz.Detour( file.Read, function( filename, dir )
3765
3766 snixzz.LogDetour( "file.Read( '" .. filename .. "', '" .. dir .. "' )" )
3767
3768 if G.string.find( filename, ".lua" ) then
3769
3770 snixzz.ACNotify( "An anti-cheat attempted to search for a .lua file '" .. filename .. "'" )
3771 return "print( 'Hello World' )"
3772
3773 else
3774
3775 return snixzz.Detours[ file.Read ]( filename, dir )
3776
3777 end
3778
3779 end )
3780
3781 snixzz.FakeFiles = {
3782 "demo_recording.lua",
3783 "vgui/dbutton.lua",
3784 "vgui/dgrid.lua",
3785 "menu/menu.lua",
3786 "menu/mainmenu.lua",
3787 "menu/loading.lua",
3788 "menu/video.lua",
3789 "menu/errors.lua",
3790 }
3791
3792 file.Find = snixzz.Detour( file.Find, function( filename, dir )
3793
3794 snixzz.LogDetour( "file.Find( '" .. filename .. "', '" .. dir .. "' )" )
3795
3796 if G.string.find( filename, "snixzz" ) then
3797
3798 return G.table.Random( snixzz.FakeFiles )
3799
3800 else
3801
3802 return snixzz.Detours[ file.Find ]( filename, dir )
3803
3804 end
3805
3806 end )
3807
3808 net.Receive = snixzz.Detour( net.Receive, function( name, func )
3809
3810 snixzz.LogDetour( "net.Receive( '" .. name .. "' )" )
3811
3812 return snixzz.Detours[ net.Receive ]( name, func )
3813 end )
3814
3815 net.Start = snixzz.Detour( net.Start, function( name )
3816
3817 if snixzz.Detours["net.Start"][name] then
3818
3819 snixzz.ACNotify( "Blocked net.Start ( '" .. name .. "' )" )
3820 return
3821
3822 else
3823
3824 snixzz.LogDetour( "net.Start( '" .. name .. "' )" )
3825 return snixzz.Detours[ net.Start ]( name )
3826
3827 end
3828
3829 end )
3830
3831 net.SendToServer = snixzz.Detour( net.SendToServer, function()
3832
3833 //snixzz.LogDetour( "net.SendToServer()" )
3834
3835 return snixzz.Detours[net.SendToServer]()
3836 end )
3837
3838 net.WriteString = snixzz.Detour( net.WriteString, function( str )
3839
3840 if G.string.find( str, "snixzz" ) then
3841
3842 snixzz.ACNotify( "Blocked net.WriteString ( '" .. str .. "' )" )
3843 return "nil"
3844
3845 else
3846
3847 snixzz.LogDetour( "net.WriteString( '" .. str .. "' )" )
3848 return snixzz.Detours[ net.WriteString ]( str )
3849
3850 end
3851
3852 end )
3853
3854 net.WriteTable = snixzz.Detour( net.WriteTable, function( tab )
3855
3856 //local theTab = G.table.concat( tab, ", " )
3857
3858 //snixzz.LogDetour( "net.WriteTable( { " .. theTab .. " } )" )
3859
3860 return snixzz.Detours[net.WriteTable]( tab )
3861
3862 end )
3863
3864 _R.Player.ConCommand = snixzz.Detour( _R.Player.ConCommand, function( ply, args )
3865
3866 snixzz.LogDetour( ply:Nick() .. " - _R.Player.ConCommand( '" .. args .. "' ) " )
3867
3868 if !snixzz.Detours["Commands"][args] then
3869
3870 return snixzz.Detours[ _R.Player.ConCommand ]( ply, args )
3871
3872 else
3873
3874 snixzz.ACNotify( "Blocked _R.Player.ConCommand( '" .. args .. "' )" )
3875 return
3876
3877 end
3878
3879 end )
3880
3881 /*
3882 _R.ConVar.GetBool = snixzz.Detour( _R.Convar.GetBool, function( cvar )
3883 snixzz.LogDetour( "_R.ConVar.GetBool( '" .. cvar:GetName() .. "'" )
3884 for k, v in G.pairs( snixzz.Spoof ) do
3885 if cvar:GetName() == k then
3886 snixzz.ACNotify( "_R.ConVar.GetBool( '" .. cvar:GetName() .. "' ) returning " .. G.tostring( v ) )
3887 return v
3888 else
3889 return snixzz.Detours[_R.ConVar.GetBool]( cvar )
3890 end
3891 end
3892 end )*/
3893
3894 GetConVarNumber = snixzz.Detour( GetConVarNumber, function( cvar )
3895
3896 if snixzz.Spoof[cvar] != nil then
3897
3898 return snixzz.Spoof[cvar]
3899
3900 else
3901
3902 return snixzz.Detours[GetConVarNumber]( cvar )
3903
3904 end
3905
3906 end )
3907
3908 snixzz.IgnoreCMDs = {
3909 ["hvh_playheadshotsound"] = true,
3910 ["hvh_hitsound"] = true,
3911 ["r_cleardecals"] = true,
3912 ["ulx_showmotd"] = true,
3913 }
3914
3915 RunConsoleCommand = snixzz.Detour( RunConsoleCommand, function( cmd, ... )
3916
3917 local str = cmd
3918
3919 if !snixzz.IgnoreCMDs[cmd] then
3920
3921 if ... then
3922
3923 local args = { ... }
3924 str = str .. ", " .. ( ... )
3925
3926 snixzz.LogDetour( "RunConsoleCommand( '" .. cmd .. ", '" .. G.table.concat( args, "', '" ) .. "' )" )
3927
3928 else
3929
3930 snixzz.LogDetour( "RunConsoleCommand( '" .. cmd .. "' )")
3931
3932 end
3933
3934 end
3935
3936 if !snixzz.Detours["Commands"][cmd] then
3937
3938 return snixzz.Detours[ RunConsoleCommand ]( cmd, ... )
3939
3940 else
3941
3942 snixzz.ACNotify( "Blocked RunConsoleCommand( '" .. cmd .. "' )" )
3943 return
3944
3945 end
3946
3947 end )
3948
3949 hook.GetTable = snixzz.Detour( hook.GetTable, function()
3950
3951 //snixzz.LogDetour( "hook.GetTable() was checked, returning bullshit." )
3952
3953 return hookGetTableCopy
3954 end )
3955
3956end
3957
3958/*
3959
3960 Menu Core
3961
3962*/
3963
3964
3965/***************
3966
3967 Changelog
3968
3969****************/
3970snixzz.UpdateLog = "Loading..."
3971
3972function snixzz.UpdateChangelog()
3973
3974 G.http.Fetch( "http://snixzz.net/cheats/snixzz3/changelog.txt",
3975
3976 function( body, len, headers, code )
3977
3978 snixzz.UpdateLog = body
3979
3980 if !G.file.Exists( snixzz.DataFolder .. "/changelog.txt", "DATA" ) then
3981
3982 G.file.Write( snixzz.DataFolder .. "/changelog.txt", body )
3983
3984 snixzz.Chat( Color( 0, 255, 0 ), "The changelog has been updated!" )
3985
3986 snixzz.CMenu()
3987
3988 else
3989
3990 local log = G.file.Read( snixzz.DataFolder .. "/changelog.txt", "DATA" )
3991
3992 if log != body then
3993
3994 G.file.Write( snixzz.DataFolder .. "/changelog.txt", body )
3995
3996 snixzz.Chat( Color( 0, 255, 0 ), "The changelog has been updated!" )
3997
3998 snixzz.CMenu()
3999
4000 end
4001
4002 end
4003
4004 end,
4005
4006 function( error )
4007
4008 snixzz.UpdateLog = error
4009 snixzz.Chat( snixzz.Colors.Red, "Failed to update changelog '" .. error .. "'" )
4010
4011 end
4012
4013 )
4014
4015end
4016
4017function snixzz.CMenu()
4018
4019 snixzz.CFrame = G.vgui.Create( "DFrame" )
4020 snixzz.CFrame:SetPos( 20, 80 )
4021 snixzz.CFrame:SetSize( 430, 420 )
4022 snixzz.CFrame:SetTitle( "snixzz3 " .. snixzz.Info.Version .. " Changelog :: by 0xymoron" )
4023 snixzz.CFrame:SetVisible( true )
4024 snixzz.CFrame:SetDraggable( true )
4025 snixzz.CFrame:ShowCloseButton( false )
4026 snixzz.CFrame:MakePopup()
4027 snixzz.CFrame.Paint = function()
4028
4029 G.draw.RoundedBox( 0, 0, 0, snixzz.CFrame:GetWide(), snixzz.CFrame:GetTall(), snixzz.Vars["misc_menucolor2"] )
4030 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
4031 G.surface.DrawOutlinedRect( 0, 0, snixzz.CFrame:GetWide(), snixzz.CFrame:GetTall() )
4032
4033 end
4034
4035 local close = G.vgui.Create( "DButton", snixzz.CFrame )
4036 close:SetSize( 50, 20 )
4037 close:SetPos( snixzz.CFrame:GetWide() - 51, 1 )
4038 close:SetText( "x" )
4039 close:SetTextColor( G.Color( 255, 255, 255 ) )
4040 close:SetFont( "Trebuchet18" )
4041
4042 close.Paint = function()
4043
4044 G.draw.RoundedBox( 0, 0, 0, close:GetWide(), close:GetTall(), Color( 168, 62, 62, 255 ) )
4045
4046 end
4047
4048 close.DoClick = function()
4049
4050 snixzz.CFrame:Close()
4051 snixzz.Sound()
4052 snixzz.CFrame = nil
4053
4054 end
4055
4056 local ChangelogText = G.vgui.Create( "DTextEntry", snixzz.CFrame )
4057 ChangelogText:SetPos( 5, 35 )
4058 ChangelogText:SetSize( snixzz.CFrame:GetWide() - 10, snixzz.CFrame:GetTall() - 40 )
4059 ChangelogText:SetText( snixzz.UpdateLog )
4060 ChangelogText:SetEditable( false )
4061 ChangelogText:SetMultiline( true )
4062
4063end
4064
4065/*
4066
4067 snixzz3 "IRC" (Chatbox)
4068
4069*/
4070
4071local function urlencode( str ) -- thanks random github guy
4072
4073 if ( str ) then
4074
4075 str = string.gsub (str, "\n", "\r\n")
4076
4077 str = string.gsub (str, "([^%w ])", function( c )
4078
4079 return string.format( "%%%02X", string.byte( c ) )
4080
4081 end )
4082
4083 str = string.gsub ( str, " ", "+" )
4084
4085 end
4086
4087 return str
4088
4089end
4090
4091function snixzz.GetChatData( ply, func )
4092
4093 G.http.Fetch( "http://snixzz.net/cheats/snixzz3/data/chat.json",
4094
4095 function( body )
4096
4097 local tab = util.JSONToTable( body )
4098
4099 snixzz.ChatCache = tab
4100
4101 if func then
4102
4103 return func()
4104
4105 end
4106
4107 end,
4108
4109 function( error )
4110
4111 snixzz.Chat( Color( 255, 0, 0 ), "Failed to get chat data." )
4112
4113 end
4114
4115 )
4116
4117end
4118
4119function snixzz.SendChatMessage( ply, msg, func )
4120
4121 local oldMsg = msg
4122
4123 msg = urlencode( msg )
4124
4125 G.http.Fetch( "http://snixzz.net/cheats/snixzz3/chat.php?steamid=" .. ply:SteamID64() .. "&msg=" .. msg,
4126
4127 function( body )
4128
4129 if body != "sent" then
4130
4131 snixzz.Chat( Color( 255, 0, 0 ), "Failed to send chat message. '" .. body .. "'" )
4132
4133 else
4134
4135 if func then
4136
4137 func()
4138
4139 end
4140
4141 snixzz.AddToConsole( "Sent chat message '" .. oldMsg .. "'" )
4142
4143 end
4144
4145 end,
4146
4147 function( error )
4148
4149 snixzz.Chat( Color( 255, 0, 0 ), "Failed to send message, try again. '" .. error .. "'" )
4150
4151 end
4152
4153 )
4154
4155end
4156
4157function snixzz.UpdateChatbox( bool, func )
4158
4159 if !snixzz.ChatDisplay then return end
4160
4161 for k, v in G.next, snixzz.ChatCache do
4162
4163 local nick = v["nick"]
4164 local sid = v["sid"]
4165 local message = v["message"]
4166
4167 if !snixzz.ChatHistory[sid] then
4168
4169 snixzz.ChatHistory[sid] = {}
4170
4171 end
4172
4173 if !G.table.HasValue( snixzz.ChatHistory[sid], message ) or bool == true then
4174
4175 if sid == "nil" then
4176
4177 snixzz.ChatDisplay:InsertColorChange( 255, 0, 0, 255 )
4178
4179 elseif sid == "76561198040553376" then
4180
4181 snixzz.ChatDisplay:InsertColorChange( 0, 255, 255, 255 )
4182
4183 else
4184
4185 snixzz.ChatDisplay:InsertColorChange( 185, 185, 185, 255 )
4186
4187 end
4188
4189 snixzz.ChatDisplay:AppendText( nick )
4190
4191 snixzz.ChatDisplay:InsertColorChange( 255, 255, 255, 255 )
4192 snixzz.ChatDisplay:AppendText( ": " .. message .. "\n" )
4193
4194 if bool == false then
4195
4196 snixzz.Sound()
4197
4198 end
4199
4200 G.table.insert( snixzz.ChatHistory[sid], message )
4201
4202 end
4203
4204 end
4205
4206 if func then
4207
4208 func()
4209
4210 end
4211
4212end
4213
4214function snixzz.UpdateWhosOnline( bool, func )
4215
4216 if !snixzz.IsVIP() then return end
4217
4218 G.http.Fetch( "http://snixzz.net/cheats/snixzz3/getonline.php",
4219
4220 function( body )
4221
4222 snixzz.WhosOnline = G.util.JSONToTable( body )
4223
4224 if func then
4225
4226 func()
4227
4228 end
4229
4230 end,
4231
4232 function( error )
4233
4234 snixzz.WhosOnline = { ["fail"] = "Failed to update" }
4235
4236 end
4237
4238 )
4239
4240end
4241
4242snixzz.ChatboxOpen = false
4243snixzz.ChatUpdateData = 0
4244snixzz.WhosOnline = {}
4245
4246function snixzz.OpenChat()
4247
4248 if snixzz.Chatbox && snixzz.Chatbox:IsVisible() or snixzz.ChatboxOpen then return end
4249
4250 snixzz.Chatbox = G.vgui.Create( "DFrame" )
4251 snixzz.Chatbox:SetTitle( "snixzz3 Chat (Experimental)" )
4252 snixzz.Chatbox:SetSize( 600, 240 )
4253 snixzz.Chatbox:SetPos( 20, ScrH() / 2 - snixzz.Chatbox:GetTall() )
4254 snixzz.Chatbox:ShowCloseButton( true )
4255 snixzz.Chatbox:SetDraggable( true )
4256
4257 snixzz.Chatbox.Paint = function( self )
4258
4259 G.draw.RoundedBox( 0, 0, 0, self:GetWide(), self:GetTall(), Color( 0, 0, 0, 150 ) )
4260 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
4261 G.surface.DrawOutlinedRect( 0, 0, self:GetWide(), self:GetTall() )
4262
4263 end
4264
4265 snixzz.Chatbox.Think = function( self )
4266
4267 snixzz.ChatUpdateData = snixzz.ChatUpdateData + 1
4268
4269 if snixzz.ChatUpdateData == 3300 then
4270
4271 snixzz.GetChatData( LocalPlayer(), function()
4272
4273 snixzz.UpdateChatbox( false, function()
4274
4275 snixzz.ChatUpdateData = 0
4276
4277 end )
4278
4279 end )
4280
4281 end
4282
4283 if G.input.IsKeyDown( KEY_ESCAPE ) then
4284
4285 self:Close()
4286
4287 end
4288
4289 end
4290
4291 snixzz.Chatbox.OnClose = function( self )
4292
4293 snixzz.ChatHistory = {}
4294 snixzz.ChatCache = {}
4295 snixzz.ChatboxOpen = false
4296
4297 if snixzz.OnlineFrame && snixzz.OnlineFrame:IsVisible() then
4298
4299 snixzz.OnlineFrame:SetVisible( false )
4300 snixzz.OnlineFrame = nil
4301
4302 end
4303
4304 end
4305
4306 snixzz.ChatEntry = vgui.Create( "DTextEntry", snixzz.Chatbox )
4307 snixzz.ChatEntry:SetPos( 5, snixzz.Chatbox:GetTall() - 25 )
4308 snixzz.ChatEntry:SetSize( snixzz.Chatbox:GetWide() - 35, 20 )
4309
4310 snixzz.ChatEntry.OnEnter = function( self )
4311
4312 local oldMsg = self:GetValue()
4313
4314 if oldMsg == "" then snixzz.Chatbox:Close() return end
4315
4316 self:SetEnabled( false )
4317 self:SetEditable( false )
4318
4319 self:SetText( "Sending message..." )
4320
4321 snixzz.SendChatMessage( LocalPlayer(), oldMsg, function()
4322
4323 self:SetText( "Updating chat..." )
4324
4325 snixzz.GetChatData( LocalPlayer(), function()
4326
4327 snixzz.UpdateChatbox( false, function()
4328
4329 self:SetText( "Sent! Please wait 10 seconds before sending another message." )
4330
4331 G.timer.Simple( 10, function() if IsValid( self ) then self:SetEnabled( true ) self:SetEditable( true ) self:SetText( "" ) end end )
4332
4333 end )
4334
4335 end )
4336
4337 end )
4338
4339 end
4340
4341 snixzz.ChatDisplay = vgui.Create( "RichText", snixzz.Chatbox )
4342 snixzz.ChatDisplay:SetPos( 5, 25 )
4343 snixzz.ChatDisplay:SetSize( snixzz.Chatbox:GetWide() - 10, snixzz.Chatbox:GetTall() - 45 )
4344
4345 snixzz.ChatDisplay.PerformLayout = function( self )
4346
4347 self:SetFontInternal( "ChatFont" )
4348
4349 end
4350
4351 snixzz.GetChatData( LocalPlayer(), function()
4352
4353 snixzz.UpdateChatbox( true, function()
4354
4355 snixzz.Chatbox:MakePopup()
4356
4357 snixzz.ChatboxOpen = true
4358
4359 end )
4360
4361 end )
4362
4363 if snixzz.IsVIP() then
4364
4365 snixzz.UpdateWhosOnline( true, function()
4366
4367 if !snixzz.Chatbox:IsVisible() then return end
4368
4369 snixzz.OnlineFrame = G.vgui.Create( "DFrame" )
4370 snixzz.OnlineFrame:SetSize( 200, 120 )
4371 snixzz.OnlineFrame:SetTitle( "Online Users (" .. table.Count( snixzz.WhosOnline ) .. ")" )
4372 snixzz.OnlineFrame:SetPos( 20, ScrH() / 2 - snixzz.Chatbox:GetTall() - snixzz.OnlineFrame:GetTall() - 10 )
4373 snixzz.OnlineFrame:ShowCloseButton( false )
4374 snixzz.OnlineFrame:SetDraggable( false )
4375
4376 snixzz.OnlineFrame.Paint = function( self )
4377
4378 G.draw.RoundedBox( 0, 0, 0, self:GetWide(), self:GetTall(), Color( 0, 0, 0, 125 ) )
4379 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
4380 G.surface.DrawOutlinedRect( 0, 0, self:GetWide(), self:GetTall() )
4381
4382 end
4383
4384 snixzz.OnlineList = G.vgui.Create( "DListLayout", snixzz.OnlineFrame )
4385 snixzz.OnlineList:SetPos( 5, 25 )
4386 snixzz.OnlineList:SetSize( snixzz.OnlineFrame:GetWide() - 10, snixzz.OnlineFrame:GetTall() - 35 )
4387
4388
4389 if table.Count( snixzz.WhosOnline ) >= 1 then
4390
4391 for k, v in G.next, snixzz.WhosOnline do
4392
4393 local pButton = snixzz.OnlineList:Add( "DButton" )
4394 pButton:SetText( v )
4395 pButton:SetSize( snixzz.OnlineList:GetWide() - 10, 15 )
4396 pButton:SetTextColor( color_white )
4397 pButton:SetFont( "ChatFont" )
4398
4399 pButton.Paint = function( self )
4400
4401 G.draw.RoundedBox( 0, 0, 0, self:GetWide(), self:GetTall(), Color( 0, 0, 0, 50 ) )
4402 G.surface.SetDrawColor( color_white )
4403 G.surface.DrawOutlinedRect( 0, 0, self:GetWide(), self:GetTall() )
4404
4405 end
4406
4407 pButton.DoClick = function( self )
4408
4409 gui.OpenURL( "http://steamcommunity.com/profiles/" .. util.NiceFloat( k ) )
4410
4411 end
4412
4413 end
4414
4415 else
4416
4417 local pButton = snixzz.OnlineList:Add( "DButton" )
4418 pButton:SetText( "No one :(" )
4419 pButton:SetSize( snixzz.OnlineList:GetWide() - 10, 15 )
4420 pButton:SetTextColor( Color( 255, 0, 0 ) )
4421 pButton:SetFont( "ChatFont" )
4422
4423 pButton.Paint = function( self )
4424
4425 G.draw.RoundedBox( 0, 0, 0, self:GetWide(), self:GetTall(), Color( 0, 0, 0, 50 ) )
4426 G.surface.SetDrawColor( Color( 255, 0, 0 ) )
4427 G.surface.DrawOutlinedRect( 0, 0, self:GetWide(), self:GetTall() )
4428
4429 end
4430
4431 end
4432
4433
4434 end )
4435
4436 end
4437
4438end
4439
4440/*
4441
4442
4443 Custom Console
4444
4445
4446*/
4447
4448snixzz.Cmds = {}
4449
4450snixzz.CmdDesc = {
4451
4452 ["bind"] = "bind: proper usage: bind <key> <command>",
4453 ["unbind"] = "unbind: proper usage: unbind <command>",
4454 ["binds"] = "binds: Displays a list of bindable commands",
4455 ["convars"] = "convars: Displays a list of changable convars",
4456 ["server"] = "server: Displays server information",
4457 ["players"] = "players: Displays a list of players & SteamIDs",
4458 ["lua_run"] = "lua_run: Run a Lua string",
4459 ["connect"] = "connect: Connect to the provided IP",
4460 ["clear"] = "clear: Clears the console",
4461
4462}
4463
4464function snixzz.ConsoleCommand( str )
4465
4466 if !snixzz.ConFrame then return end
4467
4468 local args = G.string.Explode( " ", str )
4469 local cmd = args[1]
4470 local cmdArgs = args[2]
4471
4472 G.table.remove( args, 1 )
4473
4474 snixzz.AddToConsole( "] " .. str )
4475
4476 -- Console Commands
4477 if snixzz.Cmds[cmd] then
4478
4479 snixzz.Cmds[cmd]( G.LocalPlayer(), cmd, args )
4480
4481 -- ConVars
4482 elseif snixzz.Bools[cmd] != nil then
4483
4484 cmdArgs = G.tobool( cmdArgs )
4485
4486 if cmdArgs != nil then
4487
4488 snixzz.Bools[cmd] = cmdArgs
4489 snixzz.Chat( snixzz.Colors.Green, "Set ConVar '" .. cmd .. "' to '" .. G.tostring( cmdArgs ) .. "'" )
4490
4491 else
4492
4493 snixzz.Chat( snixzz.Colors.Red, "Failed to set ConVar '" .. cmd .. "' to '" .. G.tostring( cmdArgs ) or "nil" )
4494
4495 end
4496
4497 elseif snixzz.Vars[cmd] != nil then
4498
4499 if cmdArgs != nil then
4500
4501 snixzz.Vars[cmd] = cmdArgs
4502 snixzz.Chat( snixzz.Colors,Green, "Set ConVar '" .. cmd .. "' to '" .. G.tostring( cmdArgs ) .. "'" )
4503
4504 else
4505
4506 snixzz.Chat( snixzz.Colors.Red, "Failed to set ConVar '" .. cmd .. "' to '" .. G.tostring( cmdArgs ) or "nil" )
4507
4508 end
4509
4510 elseif cmd == "lua_run" then
4511
4512 local lua_String = G.string.gsub( str, "lua_run ", "" )
4513
4514 snixzz.AddToConsole( "Running Lua String '" .. lua_String .. "'" )
4515
4516 snixzz.RunString( lua_String )
4517
4518 else
4519
4520 snixzz.AddToConsole( "Unknown command '" .. cmd .. "'" )
4521
4522 end
4523
4524 snixzz.cEntry:SetText( "" )
4525
4526end
4527
4528function snixzz.AddConsoleCommand( cmd, func )
4529
4530 snixzz.Cmds[cmd] = func
4531
4532end
4533
4534snixzz.AddConsoleCommand( "help", function( ply, cmd, args )
4535
4536 for k, v in G.next, snixzz.Cmds do
4537
4538 snixzz.AddToConsole( snixzz.CmdDesc[k] )
4539
4540 end
4541
4542end )
4543
4544snixzz.AddConsoleCommand( "ping", function( ply, cmd, args )
4545
4546 if snixzz.Membership == "dev" then
4547
4548 snixzz.PingServer( ply )
4549
4550 else
4551
4552 snixzz.AddToConsole( "You must be a developer to use this command." )
4553
4554 end
4555
4556end )
4557
4558snixzz.AddConsoleCommand( "chat", function( ply, cmd, args )
4559
4560 if snixzz.ConFrame then
4561
4562 snixzz.ConsoleOpen = false
4563 snixzz.ConFrame:Remove()
4564
4565 end
4566
4567 snixzz.OpenChat()
4568
4569end )
4570
4571
4572snixzz.AddConsoleCommand( "say", function( ply, cmd, args )
4573
4574 if snixzz.Membership == "dev" then
4575
4576 snixzz.SendChatMessage( ply, tostring( table.concat( args, " " ) ) )
4577
4578 else
4579
4580 snixzz.AddToConsole( "You must be a developer to use this command." )
4581
4582 end
4583
4584end )
4585
4586snixzz.AddConsoleCommand( "bind", function( ply, cmd, args )
4587
4588 if !args[1] or !args[2] then snixzz.AddToConsole( snixzz.CmdDesc["bind"] ) return end
4589
4590 local key = "KEY_" .. G.string.upper( args[1] )
4591 local cmd = args[2]
4592
4593 snixzz.BindKey( cmd, key, true )
4594
4595end )
4596
4597snixzz.AddConsoleCommand( "unbind", function( ply, cmd, args )
4598
4599 if !args[1] then snixzz.AddToConsole( "Unbind proper usage: unbind <command>" ) return end
4600
4601 local command = args[1]
4602
4603 snixzz.Unbind( command )
4604
4605end )
4606
4607snixzz.AddConsoleCommand( "convars", function( ply, cmd, args )
4608
4609 for k, v in G.next, snixzz.Bools do
4610
4611 snixzz.AddToConsole( "ConVar: " .. k .. " | Enabled: " .. G.tostring( v ) )
4612
4613 end
4614
4615 for k, v in G.next, snixzz.Vars do
4616
4617 snixzz.AddToConsole( "ConVar: " .. k .. " | Value: " .. G.tostring( v ) )
4618
4619 end
4620
4621end )
4622
4623snixzz.AddConsoleCommand( "binds", function( ply, cmd, args )
4624
4625 for k, v in G.next, snixzz.Binds do
4626
4627 snixzz.AddToConsole( "Command: " .. k .. " | Bound to: " .. G.input.GetKeyName( v ) )
4628
4629 end
4630
4631end )
4632
4633snixzz.AddConsoleCommand( "clear", function( ply, cmd, args )
4634
4635 if snixzz.ConFrame && snixzz.cHistory then
4636
4637 snixzz.cHistory:Clear()
4638
4639 end
4640
4641 snixzz.ConsoleHistory = {}
4642
4643 snixzz.AddToConsole( "Cleared console history." )
4644
4645end )
4646
4647snixzz.AddConsoleCommand( "connect", function( ply, cmd, args )
4648
4649 if args[1] != nil then
4650
4651 snixzz.AddToConsole( "Connecting to '" .. args[1] .. "'" )
4652
4653 G.RunConsoleCommand( "connect", args[1] )
4654
4655 else
4656
4657 snixzz.AddToConsole( "Unknown IP" )
4658
4659 end
4660
4661end )
4662
4663snixzz.ConsoleOpen = false
4664
4665function snixzz.Console()
4666
4667 snixzz.ConFrame = G.vgui.Create( "DFrame" )
4668 snixzz.ConFrame:SetSize( 700, 450 )
4669 snixzz.ConFrame:SetPos( 30, 30 )
4670 snixzz.ConFrame:SetTitle( "snixzz3 Console :: by 0xymoron" )
4671 snixzz.ConFrame:ShowCloseButton( false )
4672 snixzz.ConFrame:MakePopup()
4673 snixzz.ConFrame.Paint = function( self )
4674
4675 G.draw.RoundedBox( 0, 0, 0, self:GetWide(), self:GetTall(), snixzz.Vars["misc_menucolor2"] )
4676 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
4677 G.surface.DrawOutlinedRect( 0, 0, self:GetWide(), self:GetTall() )
4678
4679 end
4680 snixzz.ConFrame.Think = function( self )
4681
4682 if G.input.IsKeyDown( KEY_ESCAPE ) then
4683
4684 snixzz.ConsoleOpen = false
4685 self:Remove()
4686
4687 end
4688
4689 end
4690
4691 local close = G.vgui.Create( "DButton", snixzz.ConFrame )
4692 close:SetSize( 50, 20 )
4693 close:SetPos( snixzz.ConFrame:GetWide() - 51, 1 )
4694 close:SetText( "x" )
4695 close:SetTextColor( G.Color( 255, 255, 255 ) )
4696 close:SetFont( "Trebuchet18" )
4697
4698 close.Paint = function( self )
4699
4700 G.draw.RoundedBox( 0, 0, 0, self:GetWide(), self:GetTall(), G.Color( 168, 62, 62, 255 ) )
4701
4702 end
4703
4704 close.DoClick = function()
4705
4706 snixzz.ConsoleOpen = false
4707 snixzz.ConFrame:Remove()
4708 snixzz.Sound()
4709
4710 end
4711
4712 snixzz.cHistory = G.vgui.Create( "DListView", snixzz.ConFrame )
4713 snixzz.cHistory:SetPos( 5, 27 )
4714 snixzz.cHistory:SetSize( 690, 397 )
4715 snixzz.cHistory:SetSortable( false )
4716 snixzz.cHistory:AddColumn( "" )
4717 snixzz.cHistory:SetMultiSelect( false )
4718
4719 for k, v in pairs( snixzz.ConsoleHistory ) do
4720
4721 snixzz.cHistory:AddLine( v )
4722
4723 end
4724
4725 snixzz.cHistory.OnClickLine = function( prnt, line, self )
4726
4727 G.SetClipboardText( line:GetValue( 1 ) )
4728
4729 snixzz.Chat( snixzz.Colors.Green, "Copied selected line to clipboard.", true )
4730
4731 end
4732
4733 snixzz.cHistory:PerformLayout()
4734 snixzz.cHistory.VBar:SetScroll( snixzz.cHistory.VBar.CanvasSize )
4735
4736 -- command entry
4737 snixzz.cEntry = G.vgui.Create( "DTextEntry", snixzz.ConFrame )
4738 snixzz.cEntry:SetMultiline( false )
4739 snixzz.cEntry:SetSize( 690, 20 )
4740 snixzz.cEntry:SetPos( 5, 427 )
4741
4742 snixzz.cEntry.OnEnter = function( self )
4743
4744 snixzz.ConsoleCommand( self:GetValue() )
4745
4746 end
4747
4748 snixzz.cEntry.Think = function( self )
4749
4750 self:RequestFocus()
4751
4752 end
4753
4754end
4755
4756snixzz.MenuToggle = false
4757
4758function snixzz.DoMenuToggle()
4759
4760 snixzz.MenuOpen = true
4761 snixzz.Frame:SetVisible( true )
4762
4763end
4764
4765function snixzz.Menu()
4766
4767 local tabs, menuheight, menuwidth, w, h = {}, 430, 420, ScrW() / 2, ScrH() / 2
4768
4769 snixzz.Frame = G.vgui.Create( "DPropertySheet" )
4770 snixzz.Frame:SetParent( snixzz.Frame )
4771 snixzz.Frame:SetPos( 20, 80 )
4772 snixzz.Frame:SetSize( menuwidth, menuheight )
4773 snixzz.Frame:SetVisible( true )
4774 snixzz.Frame:MakePopup()
4775 snixzz.Frame.Think = function()
4776
4777 if snixzz.Binds["+menu"] == nil then return end
4778
4779 if !G.input.IsKeyDown( snixzz.Binds["+menu"] ) && !snixzz.MenuToggle then
4780
4781 snixzz.MenuOpen = false
4782 //snixzz.Changelog:SetVisible( false )
4783 //snixzz.LinksButton:SetVisible( false )
4784 snixzz.Frame:SetVisible( false )
4785
4786 end
4787
4788 end
4789 snixzz.Frame.Paint = function()
4790
4791 G.draw.RoundedBox( 0, 0, 30, snixzz.Frame:GetWide(), snixzz.Frame:GetTall(), snixzz.Vars["misc_menucolor"] )
4792 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
4793 G.surface.DrawOutlinedRect( 0, 0, snixzz.Frame:GetWide(), snixzz.Frame:GetTall() )
4794
4795 end
4796
4797 -- Menu Toggle button
4798 local Toggle = G.vgui.Create( "DButton" )
4799 Toggle:SetParent( snixzz.Frame )
4800 Toggle:SetText( "Hold Open" )
4801 Toggle:SetTextColor( snixzz.Colors.Green )
4802 Toggle:SetPos( 0, 0 )
4803 Toggle:SetPos( snixzz.Frame:GetWide() - 60, 0 )
4804 Toggle:SetSize( 60, 30 )
4805 Toggle.DoClick = function()
4806
4807 snixzz.MenuToggle = !snixzz.MenuToggle
4808 snixzz.DoMenuToggle()
4809
4810 if snixzz.MenuToggle == true then
4811
4812 Toggle:SetText( "Close" )
4813 Toggle:SetTextColor( Color( 255, 255, 0 ) )
4814 snixzz.Sound()
4815
4816 else
4817
4818 Toggle:SetText( "Hold Open" )
4819 Toggle:SetTextColor( snixzz.Colors.Green )
4820 snixzz.Sound()
4821
4822 end
4823
4824 end
4825 Toggle.Paint = function()
4826
4827 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
4828 G.surface.DrawOutlinedRect( 0, 0, Toggle:GetWide(), Toggle:GetTall() )
4829
4830 end
4831
4832 /*snixzz.LinksButton = G.vgui.Create( "DButton" )
4833 snixzz.LinksButton:SetText( "Links" )
4834 snixzz.LinksButton:SetPos( snixzz.Frame:GetWide() - 205, 60 )
4835 snixzz.LinksButton:SetSize( 35, 18 )
4836 snixzz.LinksButton:SetFont( "snixzz_logo_small" )
4837 snixzz.LinksButton:SetTextColor( color_white )
4838
4839 snixzz.LinksButton.DoClick = function()
4840
4841 if !snixzz.linksMenu then
4842
4843 snixzz.Sound()
4844 snixzz.OpenLinksMenu()
4845
4846 end
4847
4848 end
4849 snixzz.LinksButton.Paint = function()
4850
4851 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
4852 G.surface.DrawOutlinedRect( 0, 0, snixzz.LinksButton:GetWide(), snixzz.LinksButton:GetTall() )
4853
4854 end*/
4855
4856 -- Parents for the tabs
4857 tabs.aimbot = G.vgui.Create( "DLabel", snixzz.Frame )
4858 tabs.aimbot:SetPos( 0, 0 )
4859 tabs.aimbot:SetText( "" )
4860
4861 tabs.esp = G.vgui.Create( "DLabel", snixzz.Frame )
4862 tabs.esp:SetPos( 0, 0 )
4863 tabs.esp:SetText( "" )
4864
4865 tabs.misc = G.vgui.Create( "DLabel", snixzz.Frame )
4866 tabs.misc:SetPos( 0, 0 )
4867 tabs.misc:SetText( "" )
4868
4869 tabs.lists = G.vgui.Create( "DLabel", snixzz.Frame )
4870 tabs.lists:SetPos( 0, 0 )
4871 tabs.lists:SetText( "" )
4872
4873 tabs.log = G.vgui.Create( "DLabel", snixzz.Frame )
4874 tabs.log:SetPos( 0, 0 )
4875 tabs.log:SetText( "" )
4876
4877 tabs.config = G.vgui.Create( "DLabel", snixzz.Frame )
4878 tabs.config:SetPos( 0, 0 )
4879 tabs.config:SetText( "" )
4880
4881 snixzz.Frame:AddSheet( "Aimbot", tabs.aimbot, "icon16/lightning.png", false, false )
4882 snixzz.Frame:AddSheet( "Visual", tabs.esp, "icon16/eye.png", false, false )
4883 snixzz.Frame:AddSheet( "Misc", tabs.misc, "icon16/plugin.png", false, false )
4884 snixzz.Frame:AddSheet( "Lists", tabs.lists, "icon16/user_add.png", false, false )
4885 snixzz.Frame:AddSheet( "Detours", tabs.log, "icon16/application_xp_terminal.png", false, false )
4886 snixzz.Frame:AddSheet( "Config", tabs.config, "icon16/wrench.png", false, false )
4887
4888 -- Aimbot Settings
4889 snixzz.CreateOption( "Checkbox", tabs.aimbot, "Aimbot Toggle", "aim_toggle", 5, 5 )
4890 snixzz.CreateOption( "Checkbox", tabs.aimbot, "Autoshoot", "aim_autoshoot", 5, 25 )
4891 snixzz.CreateOption( "Checkbox", tabs.aimbot, "Silent Aim", "aim_silent", 5, 45 )
4892 snixzz.CreateOption( "Checkbox", tabs.aimbot, "Spread Prediction", "aim_nospread", 5, 65 )
4893 snixzz.CreateOption( "Checkbox", tabs.aimbot, "Aim Prediction", "aim_prediction", 5, 85 )
4894 snixzz.CreateOption( "Checkbox", tabs.aimbot, "Remove Recoil", "aim_norecoil", 5, 105 )
4895 snixzz.CreateOption( "Checkbox", tabs.aimbot, "Miss random shots", "aim_badshots", 5, 125 )
4896 snixzz.CreateOption( "Checkbox", tabs.aimbot, "Hold Target", "aim_holdtarget", 5, 145 )
4897
4898 snixzz.CreateOption( "Checkbox", tabs.aimbot, "Ignore Team", "aim_ignoreteam", 130, 5 )
4899 snixzz.CreateOption( "Checkbox", tabs.aimbot, "Ignore Admins", "aim_ignoreadmins", 130, 25 )
4900 snixzz.CreateOption( "Checkbox", tabs.aimbot, "Ignore Steam Friends", "aim_ignoresteam", 130, 45 )
4901 snixzz.CreateOption( "Checkbox", tabs.aimbot, "Ignore Bots", "aim_ignorebots", 130, 65 )
4902 snixzz.CreateOption( "Checkbox", tabs.aimbot, "Ignore LOS", "aim_ignorelos", 130, 85 )
4903 snixzz.CreateOption( "Checkbox", tabs.aimbot, "Ignore Friends", "aim_ignorefriends", 130, 105 )
4904 snixzz.CreateOption( "Checkbox", tabs.aimbot, "Ignore Friendly Traitors", "aim_ignoretraitors", 130, 125 )
4905 snixzz.CreateOption( "Checkbox", tabs.aimbot, "Target Only Traitors", "aim_onlytraitors", 130, 145 )
4906
4907 snixzz.CreateOption( "Checkbox", tabs.aimbot, "Anti Anti-Aim", "aim_antiantiaim", 275, 5 )
4908 snixzz.CreateOption( "Checkbox", tabs.aimbot, "Anti-Aim", "aim_anti", 275, 25 )
4909
4910 snixzz.CreateOption( "Slider", tabs.aimbot, "Spinbot Speed", "aim_anti_spin_speed", 10, 50, 420, 5, 325, 0 )
4911 snixzz.CreateOption( "Slider", tabs.aimbot, "Field of View", "aim_fov", 1, 180, 420, 5, 345, 0 )
4912 snixzz.CreateOption( "Slider", tabs.aimbot, "Aimspot Offset", "aim_offset", -20, 20, 425, 5, 365, 0 )
4913
4914
4915 snixzz.CreateOption( "Label", tabs.aimbot, "Prediction Method", 115, 250 )
4916
4917 local PredictionMethod = G.vgui.Create( "DComboBox", tabs.aimbot )
4918 PredictionMethod:SetPos( 115, 265 )
4919 PredictionMethod:SetSize( 105, 20 )
4920 PredictionMethod:SetText( snixzz.Vars["aim_prediction_method"] )
4921 PredictionMethod:SetTextColor( color_white )
4922
4923 for k, v in G.next, snixzz.PredictionMethods do
4924
4925 PredictionMethod:AddChoice( v )
4926
4927 end
4928
4929 PredictionMethod.OnSelect = function( self )
4930
4931 snixzz.Vars["aim_prediction_method"] = self:GetValue()
4932 snixzz.Chat( Color( 0, 255, 255 ), "Set prediction method to '" .. self:GetValue() .. "'" )
4933 snixzz.Sound()
4934
4935 end
4936
4937 PredictionMethod.Paint = function()
4938
4939 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
4940 G.surface.DrawOutlinedRect( 0, 0, PredictionMethod:GetWide(), PredictionMethod:GetTall() )
4941
4942 end
4943
4944 snixzz.CreateOption( "Label", tabs.aimbot, "Target Type", 225, 250 )
4945
4946 local TargetType = G.vgui.Create( "DComboBox", tabs.aimbot )
4947 TargetType:SetPos( 225, 265 )
4948 TargetType:SetSize( 105, 20 )
4949 TargetType:SetText( snixzz.Vars["aim_target_type"] )
4950 TargetType:SetTextColor( color_white )
4951
4952 for k, v in G.next, { "Players", "NPC", "Both" } do
4953
4954 TargetType:AddChoice( v )
4955
4956 end
4957
4958 TargetType.OnSelect = function( self )
4959
4960 snixzz.Vars["aim_target_type"] = self:GetValue()
4961 snixzz.Chat( Color( 0, 255, 255 ), "Set target type to '" .. self:GetValue() .. "'" )
4962 snixzz.Sound()
4963
4964 end
4965
4966 TargetType.Paint = function()
4967
4968 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
4969 G.surface.DrawOutlinedRect( 0, 0, TargetType:GetWide(), TargetType:GetTall() )
4970
4971 end
4972
4973 // AntiAim Method
4974 snixzz.CreateOption( "Label", tabs.aimbot, "Anti-Aim Method", 5, 250 )
4975 local AntiAimMethod = G.vgui.Create( "DComboBox", tabs.aimbot )
4976 AntiAimMethod:SetPos( 5, 265 )
4977 AntiAimMethod:SetSize( 105, 20 )
4978 AntiAimMethod:SetText( snixzz.Vars["aim_anti_method"] )
4979 AntiAimMethod:SetTextColor( color_white )
4980
4981 for k, v in G.next, snixzz.AntiAimMethods do
4982
4983 AntiAimMethod:AddChoice( v )
4984
4985 end
4986
4987 AntiAimMethod.OnSelect = function( self )
4988
4989 snixzz.Vars["aim_anti_method"] = self:GetValue()
4990 snixzz.Chat( Color( 0, 255, 255 ), "Set anti-aim method to '" .. self:GetValue() .. "'" )
4991 snixzz.Sound()
4992
4993 end
4994
4995 AntiAimMethod.Paint = function()
4996
4997 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
4998 G.surface.DrawOutlinedRect( 0, 0, AntiAimMethod:GetWide(), AntiAimMethod:GetTall() )
4999
5000 end
5001
5002 -- Aimbot hitbox/bone method & spot selection
5003 snixzz.CreateOption( "Label", tabs.aimbot, "Aimbot Method", 5, 290 )
5004
5005 local AimbotMethod = G.vgui.Create( "DComboBox", tabs.aimbot )
5006 AimbotMethod:SetPos( 5, 305 )
5007 AimbotMethod:SetSize( 105, 20 )
5008 AimbotMethod:SetText( snixzz.Vars["aim_method"] )
5009 AimbotMethod:AddChoice( "Hitbox" )
5010 AimbotMethod:AddChoice( "Bone" )
5011 AimbotMethod:AddChoice( "Hitscan" )
5012 AimbotMethod:SetTextColor( color_white )
5013 AimbotMethod.OnSelect = function( self )
5014
5015 snixzz.Vars["aim_method"] = self:GetValue()
5016 snixzz.Chat( Color( 0, 255, 255 ), "Set aimbot method to '" .. self:GetValue() .. "'" )
5017 snixzz.Sound()
5018
5019 -- Close to menu to avoid bugs.
5020 snixzz.Frame:SetVisible( false )
5021 //snixzz.Changelog:SetVisible( false )
5022 //snixzz.LinksButton:SetVisible( false )
5023 snixzz.MenuOpen = false
5024 snixzz.MenuToggle = false
5025
5026 end
5027
5028 AimbotMethod.Paint = function()
5029
5030 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
5031 G.surface.DrawOutlinedRect( 0, 0, AimbotMethod:GetWide(), AimbotMethod:GetTall() )
5032
5033 end
5034
5035 -- Aimspot & aim method selection
5036 snixzz.CreateOption( "Label", tabs.aimbot, "Aim Spot", 115, 290 )
5037
5038 local Aimspot = G.vgui.Create( "DComboBox", tabs.aimbot )
5039 Aimspot:SetPos( 115, 305 )
5040 Aimspot:SetSize( 105, 20 )
5041 Aimspot:SetTextColor( color_white )
5042
5043 if snixzz.Vars["aim_method"] == "Hitbox" then
5044
5045 Aimspot:SetText( snixzz.Vars["aim_hitbox"] )
5046
5047 Aimspot:SetDisabled( false )
5048
5049 for k, v in G.next, snixzz.Hitboxes do
5050
5051 Aimspot:AddChoice( k )
5052
5053 end
5054
5055 elseif snixzz.Vars["aim_method"] == "Bone" then
5056
5057 Aimspot:SetText( snixzz.Vars["aim_bone"] )
5058
5059 Aimspot:SetDisabled( false )
5060
5061 for k, v in G.next, snixzz.Bones do
5062
5063 Aimspot:AddChoice( k )
5064
5065
5066 end
5067
5068 elseif snixzz.Vars["aim_method"] == "Hitscan" then
5069
5070 Aimspot:SetText( "Auto" )
5071 Aimspot:SetDisabled( true )
5072
5073 end
5074
5075 Aimspot.OnSelect = function( self )
5076
5077 if snixzz.Vars["aim_method"] == "Hitbox" then
5078
5079 snixzz.Vars["aim_hitbox"] = self:GetValue()
5080 snixzz.Chat( Color( 0, 255, 255 ), "Set aimbot hitbox to '" .. self:GetValue() .. "'" )
5081
5082 elseif snixzz.Vars["aim_method"] == "Bone" then
5083
5084 snixzz.Vars["aim_bone"] = self:GetValue()
5085 snixzz.Chat( Color( 0, 255, 255 ), "Set aimbot bone to '" .. self:GetValue() .. "'" )
5086
5087 end
5088
5089 snixzz.Sound()
5090 end
5091
5092 Aimspot.Paint = function()
5093
5094 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
5095 G.surface.DrawOutlinedRect( 0, 0, Aimspot:GetWide(), Aimspot:GetTall() )
5096
5097 end
5098
5099 // Target method
5100 snixzz.CreateOption( "Label", tabs.aimbot, "Target Method", 225, 290 )
5101
5102 local TargetMethod = G.vgui.Create( "DComboBox", tabs.aimbot )
5103 TargetMethod:SetPos( 225, 305 )
5104 TargetMethod:SetSize( 105, 20 )
5105 TargetMethod:SetText( snixzz.Vars["aim_target_method"] )
5106 TargetMethod:SetTextColor( color_white )
5107 TargetMethod:AddChoice( "Distance" )
5108 TargetMethod:AddChoice( "Crosshair" )
5109 TargetMethod.OnSelect = function( self )
5110
5111 snixzz.Vars["aim_target_method"] = self:GetValue()
5112 snixzz.Chat( Color( 0, 255, 255 ), "Set target method to '" .. self:GetValue() .. "'" )
5113 snixzz.Sound()
5114
5115 end
5116
5117 TargetMethod.Paint = function()
5118
5119 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
5120 G.surface.DrawOutlinedRect( 0, 0, TargetMethod:GetWide(), TargetMethod:GetTall() )
5121
5122 end
5123
5124 -- Visual Settings
5125 snixzz.CreateOption( "Checkbox", tabs.esp, "Enable Visuals", "esp_enabled", 5, 5 )
5126 snixzz.CreateOption( "Checkbox", tabs.esp, "Name Text", "esp_name", 5, 45 )
5127 snixzz.CreateOption( "Checkbox", tabs.esp, "Health Text", "esp_health_text", 5, 65 )
5128 snixzz.CreateOption( "Checkbox", tabs.esp, "Weapon Text", "esp_weapon", 5, 85 )
5129 snixzz.CreateOption( "Checkbox", tabs.esp, "Distance Text", "esp_distance", 5, 105 )
5130 snixzz.CreateOption( "Checkbox", tabs.esp, "Bounding Box", "esp_box", 5, 125 )
5131 snixzz.CreateOption( "Checkbox", tabs.esp, "Chams", "esp_chams", 5, 145 )
5132 snixzz.CreateOption( "Checkbox", tabs.esp, "Health Bar", "esp_health_bar", 5, 165 )
5133 snixzz.CreateOption( "Checkbox", tabs.esp, "Hitbox ESP", "esp_hitbox", 5, 185 )
5134
5135 snixzz.CreateOption( "Checkbox", tabs.esp, "Crosshair", "esp_crosshair", 130, 5 )
5136 snixzz.CreateOption( "Checkbox", tabs.esp, "Crosshair Box", "esp_crosshair_box", 130, 25 )
5137 snixzz.CreateOption( "Checkbox", tabs.esp, "Remove Hands", "esp_nohands", 130, 45 )
5138 snixzz.CreateOption( "Checkbox", tabs.esp, "Aimbot Status", "esp_status", 130, 65 )
5139 snixzz.CreateOption( "Checkbox", tabs.esp, "Laser Sights", "esp_laser", 130, 85 )
5140 snixzz.CreateOption( "Checkbox", tabs.esp, "Aim Snaplines", "esp_snaplines", 130, 105 )
5141 snixzz.CreateOption( "Checkbox", tabs.esp, "Dynamic Light", "esp_dynamiclight", 130, 125 )
5142 snixzz.CreateOption( "Checkbox", tabs.esp, "Wireframe Weapon", "esp_wireweapon", 130, 145 )
5143 snixzz.CreateOption( "Checkbox", tabs.esp, "Draw Aimbot Position", "esp_aimpos", 130, 165 )
5144 snixzz.CreateOption( "Checkbox", tabs.esp, "ASUS Walls", "esp_asus_walls", 130, 185 )
5145 snixzz.CreateOption( "Checkbox", tabs.esp, "Draw Bullet Trace", "esp_bullet_trace", 130, 205 )
5146
5147 snixzz.CreateOption( "Slider", tabs.esp, "Field of View", "esp_fov", 90, 140, 420, 5, 325, 1 )
5148 snixzz.CreateOption( "Slider", tabs.esp, "Box Width", "esp_box_width", 1, 2.5, 420, 5, 345, 1 )
5149 snixzz.CreateOption( "Slider", tabs.esp, "Render Distance", "esp_distance", 0, 7500, 415, 5, 365, 0 )
5150
5151
5152 snixzz.CreateOption( "Label", tabs.esp, "Chams Material", 5, 290 )
5153
5154 local ChamsType = G.vgui.Create( "DComboBox", tabs.esp )
5155 ChamsType:SetPos( 5, 305 )
5156 ChamsType:SetSize( 105, 20 )
5157 ChamsType:SetText( snixzz.Vars["esp_chams_material"] )
5158 ChamsType:AddChoice( "Solid" )
5159 ChamsType:AddChoice( "Wireframe" )
5160 ChamsType:AddChoice( "XQZ" )
5161 ChamsType:SetTextColor( color_white )
5162 ChamsType.OnSelect = function( self )
5163
5164 snixzz.Vars["esp_chams_material"] = self:GetValue()
5165 snixzz.Chat( Color( 0, 255, 255 ), "Set chams material to '" .. self:GetValue() .. "'" )
5166 snixzz.Sound()
5167
5168 end
5169
5170 ChamsType.Paint = function()
5171
5172 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
5173 G.surface.DrawOutlinedRect( 0, 0, ChamsType:GetWide(), ChamsType:GetTall() )
5174
5175 end
5176
5177 snixzz.CreateOption( "Label", tabs.esp, "ESP Type", 115, 290 )
5178
5179 local ESPType = G.vgui.Create( "DComboBox", tabs.esp )
5180 ESPType:SetPos( 115, 305 )
5181 ESPType:SetSize( 105, 20 )
5182 ESPType:SetText( snixzz.Vars["esp_type"] )
5183 ESPType:AddChoice( "Players" )
5184 ESPType:AddChoice( "NPC" )
5185 ESPType:AddChoice( "Entities" )
5186 ESPType:AddChoice( "All" )
5187 ESPType:SetTextColor( color_white )
5188 ESPType.OnSelect = function( self )
5189
5190 snixzz.Vars["esp_type"] = self:GetValue()
5191 snixzz.Chat( Color( 0, 255, 255 ), "Set ESP type to '" .. self:GetValue() .. "'" )
5192 snixzz.Sound()
5193
5194 end
5195
5196 ESPType.Paint = function()
5197
5198 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
5199 G.surface.DrawOutlinedRect( 0, 0, ESPType:GetWide(), ESPType:GetTall() )
5200
5201 end
5202
5203 --------------
5204 -- Misc tab --
5205 --------------
5206 snixzz.CreateOption( "Checkbox", tabs.misc, "Bunnyhop", "misc_bhop", 5, 5 )
5207 snixzz.CreateOption( "Checkbox", tabs.misc, "Autostrafe", "misc_autostrafe", 5, 25 )
5208 snixzz.CreateOption( "Checkbox", tabs.misc, "Triggerbot", "misc_triggerbot", 5, 45 )
5209 snixzz.CreateOption( "Checkbox", tabs.misc, "Triggerbot NoSpread", "misc_triggerbot_nospread", 5, 65 )
5210 snixzz.CreateOption( "Checkbox", tabs.misc, "Thirdperson", "misc_thirdperson", 5, 85 )
5211 snixzz.CreateOption( "Checkbox", tabs.misc, "Traitor Finder", "misc_traitor_finder", 5, 105 )
5212 snixzz.CreateOption( "Checkbox", tabs.misc, "Murder Finder", "misc_murder_finder", 5, 125 )
5213 snixzz.CreateOption( "Checkbox", tabs.misc, "Prophunt Finder", "misc_prophunt_finder", 5, 145 )
5214 snixzz.CreateOption( "Checkbox", tabs.misc, "Chat Spam", "misc_chat_spam", 5, 165 )
5215 snixzz.CreateOption( "Checkbox", tabs.misc, "Rapid Fire", "misc_rapidfire", 5, 185 )
5216 snixzz.CreateOption( "Slider", tabs.misc, "Thirdperson Distance", "misc_thirdperson_distance", 50, 180, 415, 5, 345, 1 )
5217
5218 snixzz.CreateOption( "Label", tabs.misc, "Triggerbot Method", 5, 290 )
5219
5220 local Trigmethod = G.vgui.Create( "DComboBox", tabs.misc )
5221 Trigmethod:SetPos( 5, 305 )
5222 Trigmethod:SetSize( 105, 20 )
5223 Trigmethod:SetText( snixzz.Vars["misc_triggerbot_method"] )
5224 Trigmethod:AddChoice( "Body" )
5225 Trigmethod:AddChoice( "Hitbox" )
5226 Trigmethod:SetTextColor( color_white )
5227 Trigmethod.OnSelect = function( self )
5228
5229 snixzz.Vars["misc_triggerbot_method"] = self:GetValue()
5230 snixzz.Chat( Color( 0, 255, 255 ), "Set triggerbot method to '" .. self:GetValue() .. "'" )
5231 snixzz.Sound()
5232
5233 end
5234 Trigmethod.Paint = function()
5235
5236 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
5237 G.surface.DrawOutlinedRect( 0, 0, Trigmethod:GetWide(), Trigmethod:GetTall() )
5238
5239 end
5240
5241 snixzz.CreateOption( "Label", tabs.misc, "Triggerbot Type", 115, 290 )
5242
5243 local TrigType = G.vgui.Create( "DComboBox", tabs.misc )
5244 TrigType:SetPos( 115, 305 )
5245 TrigType:SetSize( 105, 20 )
5246 TrigType:SetText( snixzz.Vars["misc_triggerbot_type"] )
5247 TrigType:AddChoice( "Players" )
5248 TrigType:AddChoice( "NPC" )
5249 TrigType:AddChoice( "Both" )
5250 TrigType:SetTextColor( color_white )
5251 TrigType.OnSelect = function( self )
5252
5253 snixzz.Vars["misc_triggerbot_type"] = self:GetValue()
5254 snixzz.Chat( Color( 0, 255, 255 ), "Set triggerbot type to '" .. self:GetValue() .. "'" )
5255 snixzz.Sound()
5256
5257 end
5258 TrigType.Paint = function()
5259
5260 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
5261 G.surface.DrawOutlinedRect( 0, 0, TrigType:GetWide(), TrigType:GetTall() )
5262
5263 end
5264
5265 snixzz.CreateOption( "Label", tabs.misc, "Chat Spam Method", 225, 290 )
5266
5267 local SpamMethod = G.vgui.Create( "DComboBox", tabs.misc )
5268 SpamMethod:SetPos( 225, 305 )
5269 SpamMethod:SetSize( 105, 20 )
5270 SpamMethod:SetText( snixzz.Vars["misc_chat_spam_method"] )
5271 SpamMethod:AddChoice( "Advertise" )
5272 SpamMethod:AddChoice( "Jokes" )
5273 SpamMethod:SetTextColor( color_white )
5274 SpamMethod.OnSelect = function( self )
5275
5276 snixzz.Vars["misc_chat_spam_method"] = self:GetValue()
5277 snixzz.Chat( Color( 0, 255, 255 ), "Set chat spam method to '" .. self:GetValue() .. "'" )
5278 snixzz.Sound()
5279
5280 end
5281
5282 SpamMethod.Paint = function()
5283
5284 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
5285 G.surface.DrawOutlinedRect( 0, 0, SpamMethod:GetWide(), SpamMethod:GetTall() )
5286
5287 end
5288
5289 ---------------
5290 -- Lists Tab --
5291 ---------------
5292
5293 -- Friends/enemies
5294
5295 local Enemies = G.vgui.Create( "DListView", tabs.lists )
5296 Enemies:SetPos( 5, 5 )
5297 Enemies:SetSize( 170, 180 )
5298 Enemies:AddColumn( "Enemies" )
5299
5300 for k, v in G.next, G.player.GetAll() do
5301
5302 if !snixzz.Friends[v:Nick()] && v != G.LocalPlayer() then
5303
5304 Enemies:AddLine( v:Nick() )
5305
5306 end
5307
5308 end
5309
5310 local Friends = G.vgui.Create( "DListView", tabs.lists )
5311 Friends:SetPos( 230, 5 )
5312 Friends:SetSize( 170, 180 )
5313 Friends:AddColumn( "Friends" )
5314
5315 for k, v in G.next, snixzz.Friends do
5316
5317 Friends:AddLine( k )
5318
5319 end
5320
5321 local AddFriend = G.vgui.Create( "DButton", tabs.lists )
5322 AddFriend:SetText( "-->" )
5323 AddFriend:SetSize( 30, 20 )
5324 AddFriend:SetPos( 187.5, 140 )
5325 AddFriend:SetTextColor( color_white )
5326 AddFriend.DoClick = function()
5327
5328 local line = Enemies:GetSelectedLine()
5329
5330 if line != nil then
5331
5332 local ply = Enemies:GetLine( line ):GetValue(1)
5333
5334 if !snixzz.Friends[ply] then
5335
5336 snixzz.Friends[ply] = true
5337 snixzz.Chat( snixzz.Colors.Green, "Added '" .. ply .. "' to friends list." )
5338 Friends:AddLine( ply )
5339 Enemies:RemoveLine( line )
5340 snixzz.Sound()
5341
5342 end
5343
5344 end
5345
5346 end
5347
5348 AddFriend.Paint = function()
5349
5350 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
5351 G.surface.DrawOutlinedRect( 0, 0, AddFriend:GetWide(), AddFriend:GetTall() )
5352
5353 end
5354
5355 local RemoveFriend = G.vgui.Create( "DButton", tabs.lists )
5356 RemoveFriend:SetText("<--")
5357 RemoveFriend:SetSize( 30, 20 )
5358 RemoveFriend:SetPos( 187.5, 165 )
5359 RemoveFriend:SetTextColor( color_white )
5360 RemoveFriend.DoClick = function()
5361
5362 local line = Friends:GetSelectedLine()
5363
5364 if line != nil then
5365
5366 local ply = Friends:GetLine( line ):GetValue( 1 )
5367
5368 if snixzz.Friends[ply] then
5369
5370 for k, v in G.next, snixzz.Friends do
5371
5372 if k == ply then
5373
5374 snixzz.Friends[k] = nil
5375 snixzz.Chat( snixzz.Colors.Red, "Removed '" .. ply .. "' from the friends list." )
5376 snixzz.Sound()
5377
5378 end
5379
5380 end
5381
5382 Enemies:AddLine( ply )
5383 Friends:RemoveLine( line )
5384
5385 end
5386
5387 end
5388
5389 end
5390
5391 RemoveFriend.Paint = function()
5392
5393 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
5394 G.surface.DrawOutlinedRect( 0, 0, RemoveFriend:GetWide(), RemoveFriend:GetTall() )
5395
5396 end
5397
5398 local AllEnts = G.vgui.Create( "DListView", tabs.lists )
5399 AllEnts:SetPos( 5, 190 )
5400 AllEnts:SetSize( 170, 180 )
5401 AllEnts:AddColumn( "All Entities" )
5402
5403 local addedEnts = {}
5404
5405 for k, v in G.next, G.ents.GetAll() do
5406
5407 if !addedEnts[v:GetClass()] && !v:IsPlayer() && !v:IsNPC() && !snixzz.Entities[v:GetClass()] && !snixzz.BadEntities[v:GetClass()] then
5408
5409 AllEnts:AddLine( v:GetClass() )
5410 addedEnts[v:GetClass()] = true
5411
5412 end
5413
5414 end
5415
5416 local DrawEnts = G.vgui.Create( "DListView", tabs.lists )
5417 DrawEnts:SetPos( 230, 190 )
5418 DrawEnts:SetSize( 170, 180 )
5419 DrawEnts:AddColumn( "Entities to Draw" )
5420
5421 for k, v in G.next, snixzz.Entities do
5422
5423 DrawEnts:AddLine( k )
5424
5425 end
5426
5427 local AddEntity = G.vgui.Create( "DButton", tabs.lists )
5428 AddEntity:SetText( "-->" )
5429 AddEntity:SetSize( 30, 20 )
5430 AddEntity:SetPos( 187.5, 315 )
5431 AddEntity:SetTextColor( color_white )
5432 AddEntity.DoClick = function()
5433
5434 local line = AllEnts:GetSelectedLine()
5435
5436 if line != nil then
5437
5438 local ent = AllEnts:GetLine( line ):GetValue(1)
5439
5440 if !snixzz.Entities[ply] then
5441
5442 snixzz.Entities[ent] = true
5443 snixzz.Chat( snixzz.Colors.Green, "Added '" .. ent .. "' to entities list." )
5444 DrawEnts:AddLine( ent )
5445 AllEnts:RemoveLine( line )
5446 snixzz.Sound()
5447
5448 end
5449
5450 end
5451
5452 end
5453
5454 AddEntity.Paint = function()
5455
5456 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
5457 G.surface.DrawOutlinedRect( 0, 0, AddEntity:GetWide(), AddEntity:GetTall() )
5458
5459 end
5460
5461 local RemoveEntity = G.vgui.Create( "DButton", tabs.lists )
5462 RemoveEntity:SetText("<--")
5463 RemoveEntity:SetSize( 30, 20 )
5464 RemoveEntity:SetPos( 187.5, 350 )
5465 RemoveEntity:SetTextColor( color_white )
5466 RemoveEntity.DoClick = function()
5467
5468 local line = DrawEnts:GetSelectedLine()
5469
5470 if line != nil then
5471
5472 local ent = DrawEnts:GetLine( line ):GetValue( 1 )
5473
5474 if snixzz.Entities[ent] then
5475
5476 for k, v in G.next, snixzz.Entities do
5477
5478 if k == ent then
5479
5480 snixzz.Entities[k] = nil
5481 snixzz.Chat( snixzz.Colors.Red, "Removed '" .. ent .. "' from the entities list." )
5482 snixzz.Sound()
5483
5484 end
5485
5486 end
5487
5488 AllEnts:AddLine( ent )
5489 DrawEnts:RemoveLine( line )
5490
5491 end
5492
5493 end
5494
5495 end
5496
5497 RemoveEntity.Paint = function()
5498
5499 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
5500 G.surface.DrawOutlinedRect( 0, 0, RemoveEntity:GetWide(), RemoveEntity:GetTall() )
5501
5502 end
5503
5504 -----------------
5505 -- Log Tab --
5506 -----------------
5507
5508 snixzz.LogTab = G.vgui.Create( "DListView", tabs.log )
5509 snixzz.LogTab:SetPos( 5, 5 )
5510 snixzz.LogTab:SetSize( snixzz.Frame:GetWide() - 25, snixzz.Frame:GetTall() - 70 )
5511 snixzz.LogTab:AddColumn( "snixzz3 Logs" )
5512 snixzz.LogTab:SetSortable( false )
5513 snixzz.LogTab:SetMultiSelect( false )
5514
5515 for k, v in G.next, snixzz.Lines do
5516 snixzz.LogTab:AddLine( v )
5517
5518 end
5519
5520 snixzz.LogTab.OnClickLine = function( parent, line, isselected )
5521
5522 G.SetClipboardText( line:GetValue( 1 ) )
5523
5524 end
5525
5526 local ConsoleClear = G.vgui.Create( "DButton", tabs.log )
5527 ConsoleClear:SetText( "Clear Log" )
5528 ConsoleClear:SetSize( snixzz.Frame:GetWide() - 25, 23 )
5529 ConsoleClear:SetPos( 5, 370 )
5530 ConsoleClear:SetTextColor( color_white )
5531
5532 ConsoleClear.DoClick = function()
5533
5534 snixzz.Lines = {}
5535 snixzz.LogTab:Clear()
5536
5537 end
5538
5539 ConsoleClear.Paint = function()
5540
5541 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
5542 G.surface.DrawOutlinedRect( 0, 0, ConsoleClear:GetWide(), ConsoleClear:GetTall() )
5543
5544 end
5545
5546 ----------------
5547 -- Config Tab --
5548 ----------------
5549 --Menu Settings
5550 snixzz.CreateOption( "Label", tabs.config, "Menu Color", 230, 5 )
5551
5552 local MenuColor = G.vgui.Create( "DColorMixer", tabs.config )
5553 MenuColor:SetPos( 230, 20 )
5554 MenuColor:SetSize( 170, 100 )
5555 MenuColor:SetPalette( false )
5556 MenuColor:SetAlphaBar( true )
5557 MenuColor:SetWangs( false )
5558 MenuColor:SetColor( snixzz.Vars["misc_menucolor"] )
5559
5560 MenuColor.ValueChanged = function()
5561
5562 snixzz.Vars["misc_menucolor"] = MenuColor:GetColor()
5563
5564 end
5565
5566 snixzz.CreateOption( "Label", tabs.config, "Secondary Menu Color", 230, 125 )
5567
5568 local MenuColor2 = G.vgui.Create( "DColorMixer", tabs.config )
5569 MenuColor2:SetPos( 230, 140 )
5570 MenuColor2:SetSize( 170, 100 )
5571 MenuColor2:SetPalette( false )
5572 MenuColor2:SetAlphaBar( true )
5573 MenuColor2:SetWangs( false )
5574 MenuColor2:SetColor( snixzz.Vars["misc_menucolor2"] )
5575
5576 MenuColor2.ValueChanged = function()
5577
5578 snixzz.Vars["misc_menucolor2"] = MenuColor2:GetColor()
5579
5580 end
5581
5582 snixzz.CreateOption( "Label", tabs.config, "Laser Color", 230, 245 )
5583
5584 local LaserCol = G.vgui.Create( "DColorMixer", tabs.config )
5585 LaserCol:SetPos( 230, 260 )
5586 LaserCol:SetSize( 170, 100 )
5587 LaserCol:SetPalette( false )
5588 LaserCol:SetAlphaBar( false )
5589 LaserCol:SetWangs( false )
5590 LaserCol:SetColor( snixzz.Vars["misc_lasercolor"] )
5591
5592 LaserCol.ValueChanged = function()
5593
5594 snixzz.Vars["misc_lasercolor"] = LaserCol:GetColor()
5595
5596 end
5597
5598 local CfgList = G.vgui.Create( "DListView", tabs.config )
5599 CfgList:SetPos( 5, 5 )
5600 CfgList:SetMultiSelect( false )
5601 CfgList:SetSize( 220, 80 )
5602 CfgList:AddColumn( "Config" )
5603
5604 for k, v in G.next, snixzz.Configs do
5605
5606 CfgList:AddLine( v )
5607
5608 end
5609
5610 CfgList.DoDoubleClick = function()
5611
5612 local line = CfgList:GetSelectedLine()
5613
5614 if line != nil then
5615
5616 local config = CfgList:GetLine( line ):GetValue( 1 )
5617 snixzz.LoadConfig( config )
5618 snixzz.Sound()
5619
5620 end
5621
5622 end
5623
5624 -- Right from gInject. Im lazy with menus. I'll re-write it later
5625 local CreateConfig = G.vgui.Create( "DButton", tabs.config )
5626 CreateConfig:SetText( "Create New" )
5627 CreateConfig:SetSize( 105, 30 )
5628 CreateConfig:SetPos( 5, 90 )
5629 CreateConfig:SetTextColor( color_white )
5630 CreateConfig.DoClick = function()
5631
5632 G.Derma_StringRequest( "New Config", "Name of the new config", "", function( txt )
5633
5634 snixzz.SaveConfig( txt )
5635 snixzz.Sound()
5636
5637 end )
5638
5639 end
5640
5641 CreateConfig.Paint = function()
5642
5643 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
5644 G.surface.DrawOutlinedRect( 0, 0, CreateConfig:GetWide(), CreateConfig:GetTall() )
5645
5646 end
5647
5648 local RenameConfig = G.vgui.Create( "DButton", tabs.config )
5649 RenameConfig:SetText( "Rename" )
5650 RenameConfig:SetSize( 105, 30 )
5651 RenameConfig:SetPos( 5, 125 )
5652 RenameConfig:SetTextColor( color_white )
5653 RenameConfig.DoClick = function()
5654
5655 G.Derma_StringRequest( "Rename Config", "Name of the new config", "", function( NewConfig )
5656
5657 local line = CfgList:GetSelectedLine()
5658
5659 if line != nil then
5660
5661 local OldConfig = CfgList:GetLine( line ):GetValue( 1 )
5662
5663 if OldConfig != "default" then
5664
5665 snixzz.RenameConfig( OldConfig, NewConfig )
5666 G.table.remove( snixzz.Configs, CfgList:GetSelectedLine() )
5667 G.table.insert( snixzz.Configs, NewConfig )
5668 snixzz.Sound()
5669
5670 end
5671
5672 end
5673
5674 end )
5675
5676 end
5677
5678 RenameConfig.Paint = function()
5679
5680 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
5681 G.surface.DrawOutlinedRect( 0, 0, RenameConfig:GetWide(), RenameConfig:GetTall() )
5682
5683 end
5684
5685 local DeleteConfig = G.vgui.Create( "DButton", tabs.config )
5686 DeleteConfig:SetText( "Delete" )
5687 DeleteConfig:SetSize( 105, 30 )
5688 DeleteConfig:SetPos( 118, 90 )
5689 DeleteConfig:SetTextColor( color_white )
5690 DeleteConfig.DoClick = function()
5691
5692 local line = CfgList:GetSelectedLine()
5693
5694 if line != nil then
5695
5696 local config = CfgList:GetLine( line ):GetValue( 1 )
5697 if config != "default" then
5698
5699 for k, v in G.next, snixzz.Configs do
5700
5701 if v == config then
5702
5703 snixzz.DeleteConfig( config )
5704 G.table.remove( snixzz.Configs, k )
5705 snixzz.Sound()
5706
5707 end
5708
5709 end
5710
5711 end
5712
5713 end
5714
5715 end
5716
5717 DeleteConfig.Paint = function()
5718
5719 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
5720 G.surface.DrawOutlinedRect( 0, 0, DeleteConfig:GetWide(), DeleteConfig:GetTall() )
5721
5722 end
5723
5724
5725 local LoadConfig = G.vgui.Create( "DButton", tabs.config )
5726 LoadConfig:SetText( "Load" )
5727 LoadConfig:SetSize( 105, 30 )
5728 LoadConfig:SetPos( 118, 125 )
5729 LoadConfig:SetTextColor( color_white )
5730 LoadConfig.DoClick = function()
5731
5732 local line = CfgList:GetSelectedLine()
5733
5734 if line != nil then
5735 local config = CfgList:GetLine( line ):GetValue( 1 )
5736 snixzz.LoadConfig( config )
5737 snixzz.Frame:SetVisible( false )
5738 //snixzz.Changelog:SetVisible( false )
5739 //snixzz.LinksButton:SetVisible( false )
5740 snixzz.MenuOpen = false
5741 snixzz.MenuToggle = false
5742 snixzz.Sound()
5743
5744 end
5745
5746 end
5747
5748 LoadConfig.Paint = function()
5749
5750 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
5751 G.surface.DrawOutlinedRect( 0, 0, LoadConfig:GetWide(), LoadConfig:GetTall() )
5752
5753 end
5754
5755 local SetDefaultCfg = G.vgui.Create( "DButton", tabs.config )
5756 SetDefaultCfg:SetText( "Set Default" )
5757 SetDefaultCfg:SetSize( 105, 30 )
5758 SetDefaultCfg:SetPos( 118, 160 )
5759 SetDefaultCfg:SetTextColor( color_white )
5760 SetDefaultCfg.DoClick = function()
5761
5762 local line = CfgList:GetSelectedLine()
5763
5764 if line != nil then
5765
5766 local config = CfgList:GetLine( line ):GetValue( 1 )
5767
5768 snixzz.SetDefaultConfig( config )
5769 snixzz.LoadConfig( config )
5770 snixzz.Sound()
5771
5772 end
5773
5774 end
5775
5776 SetDefaultCfg.Paint = function()
5777
5778 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
5779 G.surface.DrawOutlinedRect( 0, 0, SetDefaultCfg:GetWide(), SetDefaultCfg:GetTall() )
5780
5781 end
5782
5783 local UpdateConfig = G.vgui.Create( "DButton", tabs.config )
5784 UpdateConfig:SetText( "Save Changes" )
5785 UpdateConfig:SetSize( 105, 35 )
5786 UpdateConfig:SetPos( 118, 195 )
5787 UpdateConfig:SetTextColor( color_white )
5788 UpdateConfig.DoClick = function()
5789
5790 snixzz.Sound()
5791 snixzz.UpdateConfig()
5792
5793 end
5794
5795 UpdateConfig.Paint = function()
5796
5797 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
5798 G.surface.DrawOutlinedRect( 0, 0, UpdateConfig:GetWide(), UpdateConfig:GetTall() )
5799
5800 end
5801
5802 // Binds
5803 local BindCommands = G.vgui.Create( "DComboBox", tabs.config )
5804 BindCommands:SetPos( 5, 160 )
5805 BindCommands:SetSize( 105, 20 )
5806 BindCommands:SetTextColor( color_white )
5807
5808 for k, v in G.next, snixzz.Binds do
5809
5810 BindCommands:AddChoice( k )
5811
5812 end
5813
5814 BindCommands.Paint = function()
5815
5816 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
5817 G.surface.DrawOutlinedRect( 0, 0, BindCommands:GetWide(), BindCommands:GetTall() )
5818
5819 end
5820
5821 local BindKeys = G.vgui.Create( "DComboBox", tabs.config )
5822 BindKeys:SetPos( 5, 185 )
5823 BindKeys:SetSize( 105, 20 )
5824 BindKeys:SetTextColor( color_white )
5825
5826 for k, v in G.next, snixzz.Keys do
5827
5828 BindKeys:AddChoice( v.Name )
5829
5830 end
5831
5832 BindKeys.Paint = function()
5833
5834 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
5835 G.surface.DrawOutlinedRect( 0, 0, BindKeys:GetWide(), BindKeys:GetTall() )
5836
5837 end
5838
5839 local RebindKey = G.vgui.Create( "DButton", tabs.config )
5840 RebindKey:SetText( "Bind" )
5841 RebindKey:SetSize( 105, 20 )
5842 RebindKey:SetPos( 5, 210 )
5843 RebindKey:SetTextColor( color_white )
5844 RebindKey.DoClick = function()
5845
5846 local Key = BindKeys:GetValue()
5847 local Command = BindCommands:GetValue()
5848
5849 if ( BindKeys:GetValue() != "" && BindCommands:GetValue() != "" ) then
5850
5851 snixzz.Frame:SetVisible( false )
5852 //snixzz.Changelog:SetVisible( false )
5853 //snixzz.LinksButton:SetVisible( false )
5854 snixzz.MenuOpen = false
5855 snixzz.MenuToggle = false
5856 snixzz.BindKey( Command, Key )
5857 snixzz.Sound()
5858
5859 end
5860
5861 end
5862
5863 RebindKey.Paint = function()
5864
5865 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
5866 G.surface.DrawOutlinedRect( 0, 0, RebindKey:GetWide(), RebindKey:GetTall() )
5867
5868 end
5869
5870 local JoinHvH = G.vgui.Create( "DButton", tabs.config )
5871 JoinHvH:SetText( "Join OFFICIAL Hack VS Hack Server" )
5872 JoinHvH:SetSize( 218, 30 )
5873 JoinHvH:SetPos( 5, 235 )
5874 JoinHvH:SetTextColor( color_white )
5875 JoinHvH:SetFont( "snixzz_logo_small" )
5876 JoinHvH.DoClick = function()
5877
5878 Derma_Query(
5879
5880 "Would you like to join Hack VS Hack?", "Join Hack VS Hack",
5881
5882 "Yes", function()
5883
5884 snixzz.Chat( Color( 255, 0, 0 ), "Connecting in 15 seconds. If you're missing the map you can simply Google 'aim_ag_texture2' & download it anywhere." )
5885
5886 timer.Simple( 15, function()
5887
5888 G.LocalPlayer():ConCommand( "connect 66.150.164.192:27015" )
5889
5890 end )
5891
5892 end,
5893
5894 "No", function()
5895
5896 snixzz.Chat( Color( 0, 255, 255 ), "Hack VS Hack is a great place to test & configure your cheat or compete against other cheaters!" )
5897
5898 end )
5899
5900 end
5901
5902 JoinHvH.Paint = function()
5903
5904 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
5905 G.surface.DrawOutlinedRect( 0, 0, JoinHvH:GetWide(), JoinHvH:GetTall() )
5906
5907 end
5908
5909 snixzz.Changelog = G.vgui.Create( "DButton", tabs.config )
5910 snixzz.Changelog:SetText( "Changelog and News" )
5911 snixzz.Changelog:SetPos( 5, 270 )
5912 snixzz.Changelog:SetSize( 218, 30 )
5913 snixzz.Changelog:SetFont( "snixzz_logo" )
5914 snixzz.Changelog:SetTextColor( color_white )
5915
5916 snixzz.Changelog.DoClick = function()
5917
5918 if !snixzz.CFrame then
5919
5920 snixzz.Sound()
5921 snixzz.CMenu()
5922
5923 end
5924
5925 end
5926 snixzz.Changelog.Paint = function()
5927
5928 //G.draw.RoundedBox( 0, 0, 0, snixzz.Changelog:GetWide(), snixzz.Changelog:GetTall(), Color( 40, 40, 40, 145 ) )
5929 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
5930 G.surface.DrawOutlinedRect( 0, 0, snixzz.Changelog:GetWide(), snixzz.Changelog:GetTall() )
5931
5932 end
5933
5934 snixzz.CreateOption( "Checkbox", tabs.config, "Load with GAMEMODE hooks (Buggy, may break parts of gamemode)", "load_unhooked", 5, 375 )
5935
5936end
5937
5938/*
5939
5940 Open Steam Group & Forum once
5941
5942*/
5943
5944/*
5945function snixzz.RequestLinks()
5946
5947 G.Derma_Query( "snixzz.net is expanding!\nWe've re-opened our forums and a Steam group, please take a look & consider joining!", "[snixzz.net] Join us!",
5948 "Okay!", function()
5949
5950 snixzz.OpenLinksMenu()
5951
5952 end )
5953
5954end
5955
5956function snixzz.OpenLinksMenu()
5957
5958 snixzz.linksMenu = G.vgui.Create( "DFrame" )
5959 snixzz.linksMenu:SetSize( 260, 60 )
5960 snixzz.linksMenu:Center()
5961 snixzz.linksMenu:SetTitle( "Links" )
5962 snixzz.linksMenu:ShowCloseButton( false )
5963 snixzz.linksMenu:MakePopup()
5964 snixzz.linksMenu.Paint = function( self )
5965
5966 G.draw.RoundedBox( 0, 0, 0, self:GetWide(), self:GetTall(), snixzz.Vars["misc_menucolor2"] )
5967 G.surface.SetDrawColor( Color( 0, 0, 0 ) )
5968 G.surface.DrawOutlinedRect( 0, 0, self:GetWide(), self:GetTall() )
5969
5970 end
5971
5972 local close = G.vgui.Create( "DButton", snixzz.linksMenu )
5973 close:SetSize( 50, 20 )
5974 close:SetPos( snixzz.linksMenu:GetWide() - 51, 1 )
5975 close:SetText( "x" )
5976 close:SetTextColor( G.Color( 255, 255, 255 ) )
5977 close:SetFont( "Trebuchet18" )
5978
5979 close.Paint = function()
5980
5981 G.draw.RoundedBox( 0, 0, 0, close:GetWide(), close:GetTall(), Color( 168, 62, 62, 255 ) )
5982
5983 end
5984
5985 close.DoClick = function()
5986
5987 snixzz.linksMenu:Close()
5988 snixzz.Sound()
5989 snixzz.linksMenu = nil
5990
5991 end
5992
5993 local website = G.vgui.Create( "DButton", snixzz.linksMenu )
5994 website:SetSize( 120, 30 )
5995 website:SetPos( 5, 25 )
5996 website:SetText( "Forums" )
5997 website:SetTextColor( color_white )
5998
5999 website.Paint = function()
6000
6001 G.surface.SetDrawColor( Color( 230, 30, 30 ) )
6002 G.surface.DrawOutlinedRect( 0, 0, website:GetWide(), website:GetTall() )
6003
6004 end
6005
6006 website.DoClick = function( self )
6007
6008 G.gui.OpenURL( "https://bit.ly/1UiOwAC" )
6009
6010 end
6011
6012 local group = G.vgui.Create( "DButton", snixzz.linksMenu )
6013 group:SetSize( 120, 30 )
6014 group:SetPos( 130, 25 )
6015 group:SetText( "Steam Group" )
6016 group:SetTextColor( color_white )
6017
6018 group.Paint = function()
6019
6020 G.surface.SetDrawColor( Color( 0, 255, 153 ) )
6021 G.surface.DrawOutlinedRect( 0, 0, group:GetWide(), group:GetTall() )
6022
6023 end
6024
6025 group.DoClick = function( self )
6026
6027 G.gui.OpenURL( "https://bit.ly/1VzMroY" )
6028
6029 end
6030
6031end
6032
6033if !G.file.Exists( snixzz.DataFolder .. "/asktojoin.txt", "DATA" ) then
6034
6035 snixzz.RequestLinks()
6036
6037 file.Write( snixzz.DataFolder .. "/asktojoin.txt", "Confirmed, asked to join website/steam group on " .. G.os.date() .. "\n" )
6038
6039end
6040*/
6041
6042/*
6043
6044 Hooking & loading.
6045
6046*/
6047
6048function snixzz.LoadHooks()
6049
6050 snixzz.GMHooks = { -- Return the server's original hooks for selected types
6051
6052 ["CreateMove"] = GAMEMODE.CreateMove,
6053 ["HUDPaint"] = GAMEMODE.HUDPaint,
6054 ["StartChat"] = GAMEMODE.StartChat,
6055 ["FinishChat"] = GAMEMODE.FinishChat,
6056 ["PlayerTraceAttack"] = GAMEMODE.PlayerTraceAttack,
6057 ["RenderScene"] = GAMEMODE.RenderScene,
6058
6059 }
6060
6061 function GAMEMODE:RenderScene()
6062
6063 if snixzz.Bools["aim_antiantiaim"] then
6064
6065 snixzz.AAA()
6066
6067 end
6068
6069 end
6070
6071 function GAMEMODE:PlayerTraceAttack( ent, dmg, dir, trace )
6072
6073 local hit = trace.HitPos
6074 local start = trace.StartPos
6075
6076 G.table.insert( snixzz.Bullets, { hit, start, 5, Color( 255, 0, 0, 255 ), snixzz.Angles } )
6077
6078 return snixzz.GMHooks["PlayerTraceAttack"]( ent, dmg, dir, trace )
6079
6080 end
6081
6082 function GAMEMODE:PostDraw2DSkyBox()
6083
6084 if !snixzz.Bools["esp_asus_walls"] then return end
6085
6086 G.render.Clear( 0, 0, 0, 255 )
6087
6088 end
6089
6090 function GAMEMODE:PreDrawSkyBox()
6091
6092 if !snixzz.Bools["esp_asus_walls"] then return end
6093
6094 G.render.Clear( 0, 0, 0, 255 )
6095
6096 return true
6097
6098 end
6099
6100 function GAMEMODE:StartChat()
6101
6102 snixzz.Typing = true
6103
6104 return snixzz.GMHooks.StartChat()
6105 end
6106
6107 function GAMEMODE:FinishChat()
6108
6109 snixzz.Typing = false
6110
6111 return snixzz.GMHooks.FinishChat()
6112 end
6113
6114 function GAMEMODE:ShouldDrawLocalPlayer( ply )
6115
6116 return snixzz.Bools["misc_thirdperson"]
6117
6118 end
6119
6120 if snixzz.Bools["load_unhooked"] then
6121
6122 function GAMEMODE:CreateMove( ucmd )
6123
6124 snixzz.CreateMove( ucmd )
6125
6126 return snixzz.GMHooks.CreateMove( ucmd )
6127 end
6128
6129 function GAMEMODE:HUDPaint( self, ... )
6130
6131 snixzz.HUDPaint()
6132
6133 return snixzz.GMHooks.HUDPaint( self, ... )
6134 end
6135
6136 function GAMEMODE:CalcView( ply, origin, angles, fov )
6137
6138 return snixzz.CalcView( ply, origin, angles, fov )
6139
6140 end
6141
6142 function GAMEMODE:Move()
6143
6144 return snixzz.Move()
6145
6146 end
6147
6148 snixzz.AddToConsole( "Hooking functions into the gamemode's hook system." )
6149
6150 else
6151
6152 snixzz.AddHook( "CreateMove", snixzz.CreateMove )
6153 snixzz.AddHook( "HUDPaint", snixzz.HUDPaint )
6154 snixzz.AddHook( "CalcView", snixzz.CalcView )
6155 snixzz.AddHook( "Move", snixzz.Move )
6156
6157 snixzz.AddToConsole( "Loading unsecured hooks. More detectable but more reliable." )
6158
6159 end
6160
6161end
6162
6163function snixzz.PingServer( ply ) -- This was overly complicated & I ended up having to do it a really dumb way for now.
6164
6165 snixzz.AddToConsole( "Attempting to ping snixzz server" )
6166
6167 G.http.Fetch( "http://snixzz.net/cheats/snixzz3/ping.php?steamid=" .. ply:SteamID64(),
6168
6169 function( body )
6170
6171 snixzz.AddToConsole( "snixzz server responded to ping with '" .. body .. "'" )
6172
6173 if body == "Error: Retry" then
6174
6175 snixzz.PingServer( LocalPlayer() )
6176
6177 end
6178
6179 end,
6180
6181 function( error )
6182
6183 snixzz.AddToConsole( "ping received, pinging server again in 250 seconds." )
6184
6185 G.timer.Simple( 250, function()
6186
6187 snixzz.PingServer( LocalPlayer() )
6188
6189 end )
6190
6191 end
6192
6193 )
6194
6195end
6196
6197function snixzz.CreateTimers()
6198
6199 if snixzz.IsTTT then
6200
6201 snixzz.RegisterTimer( 10, 0, snixzz.GetTraitors )
6202
6203 end
6204
6205 /*if snixzz.IsDarkRP then
6206
6207 snixzz.RegisterTimer( 10, 0, snixzz.Namechanger )
6208
6209 else
6210
6211 snixzz.RegisterTimer( G.GetConVarNumber( "sv_namechange_cooldown_seconds" ) + 0.5, 0, snixzz.Namechanger )
6212
6213 end*/
6214
6215 snixzz.RegisterTimer( 1, 0, snixzz.ChatSpam )
6216
6217end
6218
6219function snixzz.LoadAllFunctions()
6220
6221 snixzz.UpdateChangelog()
6222
6223 snixzz.FileSystem()
6224
6225 snixzz.Configs = snixzz.GetConfigs()
6226
6227 if !snixzz.ConfigExists( "default" ) then
6228
6229 snixzz.SaveConfig( "default" )
6230
6231 end
6232
6233 snixzz.UpdateAllConfigs()
6234
6235 snixzz.LoadConfig( snixzz.DefaultConfig, true )
6236
6237 snixzz.AntiCheats()
6238 snixzz.CreateDetours()
6239 snixzz.LoadModules()
6240 snixzz.CreateTimers()
6241 snixzz.LoadHooks()
6242
6243 snixzz.PingServer( LocalPlayer() )
6244
6245end
6246
6247function snixzz.Ban( ply, bantype )
6248
6249 if bantype == "ip" then
6250
6251 snixzz.Chat( Color( 255, 0, 0 ), "You have been IP banned from the snixzz.net services." )
6252
6253 elseif bantype == "id" then
6254
6255 snixzz.Chat( Color( 255, 0, 0 ), "You have been banned from the snixzz.net services." )
6256
6257 end
6258
6259 if snixzz.loadFrame && snixzz.loadProgress then
6260
6261 snixzz.loadProgress:SetFraction( 1 )
6262
6263 snixzz.loadFrame:SetTitle( "Banned." )
6264
6265 snixzz.loadFrame:Close()
6266 snixzz.loadProgress = nil
6267 snixzz.loadFrame = nil
6268
6269 gui.EnableScreenClicker( false )
6270
6271 end
6272
6273
6274 if _G.snixzz then _G.snixzz = nil end
6275
6276end
6277
6278function snixzz.LoadCheat( bool )
6279
6280 if snixzz.loadProgress then
6281
6282 snixzz.loadProgress:SetFraction( 0.4 )
6283 snixzz.loadFrame:SetTitle( "Logged in, sending stats." )
6284
6285 end
6286
6287 if snixzz.Banned then
6288
6289 snixzz.Ban( LocalPlayer(), "id" )
6290
6291 return
6292
6293 end
6294
6295 snixzz.Stats( LocalPlayer(), true, function()
6296
6297 G.chat.AddText( "\n\n\n\n" )
6298
6299 if bool then
6300
6301 snixzz.Chat( Color( 255, 0, 0 ), "Failed to connect to login server, running as guest." )
6302
6303 end
6304
6305 snixzz.logEvent( "Load", "Playing " .. GAMEMODE.Name .. " on " .. GetHostName() )
6306
6307 snixzz.Chat( snixzz.Colors.Green, "Press '" .. G.input.GetKeyName( snixzz.Binds["+menu"] ) .. "' to open the menu & hold TAB+Q to open the console." )
6308
6309 G.chat.AddText(
6310 snixzz.Colors.DarkRed, "[snixzz3] ",
6311 snixzz.Colors.Cyan, "Loaded lua. ",
6312 snixzz.Colors.Purple, snixzz.Info.Version .. ", ",
6313 snixzz.Colors.White, "Last updated ",
6314 snixzz.Colors.Green, snixzz.Info.Updated .. ", ",
6315 Color( 255, 255, 0 ), snixzz.Info.Size .. ", ",
6316 Color( 0, 100, 240 ), snixzz.Info.Lines .. " ",
6317 snixzz.Colors.White, "lines long. ",
6318 snixzz.Colors.Green, "Membership Status: ",
6319 color_white, snixzz.Membership )
6320
6321 snixzz.Chat( snixzz.Colors.Cyan, "Try out our new chat system by pressing '" .. G.input.GetKeyName( snixzz.Binds["chat"] ) .. "' or typing 'chat' in your snixzz3 console." )
6322
6323 snixzz.Sound()
6324
6325 snixzz.Users = {}
6326
6327 // Some shit
6328 for k, v in G.next, G.player.GetAll() do
6329
6330 if v != G.LocalPlayer() then
6331
6332 if snixzz.IsDev( v ) then
6333
6334 snixzz.Chat( Color( 0, 255, 255 ), "The developer of snixzz3 is on the server! Suck " .. v:Nick() .. "'s cock!" ) -- im a faggot
6335
6336 end
6337
6338 end
6339
6340 end
6341
6342
6343 snixzz.loadProgress:SetFraction( 1 )
6344
6345 snixzz.loadFrame:SetTitle( "Done!" )
6346
6347 G.timer.Simple( 0.5, function()
6348
6349 snixzz.loadFrame:Close()
6350 snixzz.loadProgress = nil
6351 snixzz.loadFrame = nil
6352
6353 gui.EnableScreenClicker( false )
6354
6355 //if !snixzz.IsVIP() then
6356
6357 // snixzz.OpenMOTDgdAd( true ) -- Cheat is loaded after the ad
6358
6359 //else
6360
6361 snixzz.LoadAllFunctions()
6362
6363 //end
6364
6365 end )
6366
6367 end )
6368
6369end
6370
6371snixzz.Login( LocalPlayer() )