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