NOLI10

MML Admin

Nov 4th, 2019
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 370.04 KB | None | 0 0
  1. --[[
  2. Hi! This is NOLI10's Admin V3 by NOLI10
  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.  
  10. --->> DO NOT EDIT THESE SETTINGS <<---
  11. Well you can but it's a waste of your time. The settings are located in workspace
  12. in a folder called "MakerModelLua's Settings". You can also use this plugin:
  13.  
  14. http://www.roblox.com/MakerModelLuas-Admin-Plugin-item?id=242781551
  15.  
  16. USE REMOTE ADMIN:
  17. http://www.classy-studios.com/Login/
  18. Mobile: http://appsto.re/us/hEn7fb.i
  19.  
  20.  
  21.  
  22. ...also... this is open source! No stupid shady module scripts, which means it works in studio!
  23.  
  24. ]]
  25.  
  26.  
  27.  
  28. local c = game.Players.LocalPlayer.UserId
  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"] = {c};
  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", "smoke", "blind", "strobe", "flash", "control", "give", "health", "clone", "loopfling", "fling", "drug", "explode", "splode", "ragdoll", "change", "insert", "decal", "taketools", "removetools", "bomb", "say", "sink", "asteroid", "gun", "health", "damage", "btools", "missile", "reck", "truck", "debug"};
  76. AbusableGear = {55028088, 73089166, 73089190, 73089204, 73089214, 73089239, 73089259, 58921588, 65347268, 130113146, 139578207, 21001552, 58901335, 36431591, 35268363, 16201421, 16200402, 16200204, 16200373, 60791062, 58880579, 73089204, 73089239, 73089259, 36270159, 36334760, 36738185, 58901481, 58901575, 73089229, 73089214, 35200756, 36068233, 36017373, 35223828, 35201552, 55027987, 35205409, 36738142, 16975388, 35226945, 18474459};
  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.  
  130. Teams = game:GetService("Teams");
  131. Data = game:GetService("DataStoreService");
  132. GDS = game:GetService("DataStoreService");
  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.  
  522.  
  523. wait(0.1)
  524.  
  525. local SettingsValues = Server.Storage:FindFirstChild("MakerModelLua's Admin Settings") or game:FindFirstChild("MakerModelLua's Admin Settings", true)
  526. -- tries to defualt to server storage, just in case an exploiter makes their own settings.
  527.  
  528. if SettingsValues then
  529. SettingsValues.Parent = Server.Storage -- fokin exploiters succ my cocc
  530. if SettingsValues:IsA("Folder") or SettingsValues:IsA("Configuration") then
  531. for _,Value in pairs(SettingsValues:GetChildren()) do
  532. if Settings[Value.Name] ~= nil then
  533. if Value:IsA("Folder") or Value:IsA("Configuration") then -- ranks
  534. for _,NewValue in pairs(Value:GetChildren()) do
  535. if ypcall(function() return NewValue.Value end) then
  536. if Settings[Value.Name][NewValue.Name] then
  537. local Val = NewValue.Value
  538. if type(Settings[Value.Name][NewValue.Name]) == "table" then
  539. Val = {}
  540. for Word in string.gmatch(NewValue.Value, "[%w_]+") do
  541. table.insert(Val, Word)
  542. end
  543. end
  544. Settings[Value.Name][NewValue.Name] = Val
  545. end
  546. end
  547. end
  548. else
  549. if Settings[Value.Name] ~= nil then
  550. local Val = Value.Value
  551. if type(Settings[Value.Name]) == "table" then
  552. Val = {}
  553. for Word in string.gmatch(Value.Value, "%w+") do
  554. table.insert(Val, Word)
  555. end
  556. end
  557. Settings[Value.Name] = Val
  558. end
  559. end
  560. end
  561. end
  562. end
  563. end
  564.  
  565. if Settings.LinkedAccount == "Admin" and game.CreatorId ~= 38837082 then
  566. Settings.LinkedAccount = ""
  567. elseif game.PlaceId == 199055528 or game.PlaceId == 329866187 then
  568. Settings.LinkedAccount = "Admin"
  569. end
  570.  
  571. 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
  572. local Workspace,workspace,Instance,require,script = Workspace,workspace,Instance,require,script
  573.  
  574. wait(1)
  575.  
  576. local ExploitModule = game:FindFirstChild("MakerMode".."lLua's Admin Anti-Exploit Module", true)
  577.  
  578. if Server.Players.LocalPlayer then print("MML Admin Compromised: Running in studio") IsStudio = true end
  579.  
  580. if not IsStudio then
  581. Server.NS = game:GetService("NetworkServer")
  582. script.Name = "Maker".."Mo".."delLua's Admin"
  583. end
  584.  
  585. if game.PlaceId > 0 then
  586. PlaceInfo = Server.MPS:GetProductInfo(game.PlaceId)
  587. PlaceName = PlaceInfo.Name
  588. end
  589.  
  590. local function GetGameOwner()
  591. if PlaceInfo.Creator.CreatorType == "Group" then
  592. GameOwner = game:GetService("GroupService"):GetGroupInfoAsync(PlaceInfo.Creator.CreatorTargetId).Owner.Name
  593. print("MML's Admin: Found group owner for game: "..GameOwner)
  594. elseif PlaceInfo.Creator.CreatorType == "User" then
  595. GameOwner = PlaceInfo.Creator.Name
  596. print("MML's Admin: Found game owner: "..GameOwner)
  597. else
  598. ypcall(function() GameOwner = Server.Players:GetNameFromUserIdAsync(game.CreatorId) print("MML's Admin: Found game owner: "..GameOwner) end)
  599. end
  600. end
  601.  
  602. if string.byte(string.sub(PlaceName,1,1)) == 226 then
  603. PlaceName = string.sub(PlaceName,4,#PlaceName)
  604. end
  605. for i = 1,5 do
  606. if GameOwner == "[ Client ]" then
  607. print("MML's Admin: Attempting to establish owner's name #"..i)
  608. GetGameOwner()
  609. wait(1)
  610. end
  611. end
  612.  
  613. if ScriptBuilders[PlaceID] or NLS then
  614. IsSB = true
  615. end
  616.  
  617. if IsSB then
  618. ShouldFilter = false
  619. Settings.IRCServer = "swiftirc.net";
  620. Settings.IRCChannel = "#PkamaraSB";
  621. Settings.IRCCommandExecuters = {"MakerModelLua", "MakerModelLuaIRC"}
  622. if Settings.TrelloToken == "" then
  623. Settings.LinkedAccount = "ScriptBuilder"
  624. end
  625. if Settings.DataKey == "" then coroutine.wrap(function()
  626. repeat wait(1) until Server.Storage:FindFirstChild("MML DataKey")
  627. local Key = Server.Storage:FindFirstChild("MML DataKey")
  628. print("Found key: "..Key.Value)
  629. Settings.DataKey = Key.Value
  630. Key:Destroy()
  631. end)() end
  632. end
  633. local PlaceInfoFormat = "{PLACE: "..string.sub(PlaceName,1,25).."("..game.PlaceId..") | PORT: "..Server.NS.Port.."}"
  634. table.insert(Settings.Ranks["Owner"], GameOwner)
  635.  
  636. for _,Font in pairs(Enum.Font:GetEnumItems()) do
  637. Fonts[Font.Name] = Font
  638. end
  639.  
  640.  
  641.  
  642.  
  643. local function MakeFunction(Type, Name)
  644. local Func = script:FindFirstChild(Name)
  645. if Func then Func:Destroy() end
  646. Func = Instance.new(Type, script) Func.Name = Name
  647.  
  648. getfenv()[Name] = Func
  649. return Func
  650. end
  651.  
  652. MakeFunction("BindableFunction", "ExecuteCommand")
  653. MakeFunction("RemoteFunction", "ExecuteCommandClient")
  654. MakeFunction("BindableFunction", "ExecuteCode")
  655.  
  656. MakeFunction("RemoteFunction", "IsAdmin")
  657. MakeFunction("RemoteFunction", "AddExploit")
  658. MakeFunction("BindableFunction", "AddExploitServer")
  659. MakeFunction("RemoteFunction", "KickClient")
  660. MakeFunction("RemoteFunction", "ConvertTextToSound")
  661.  
  662. MakeFunction("RemoteFunction", "KeyPressed")
  663. MakeFunction("RemoteFunction", "InputKey")
  664.  
  665. MakeFunction("RemoteFunction", "RankPlayerLocal")
  666. MakeFunction("BindableFunction", "RankPlayerServer")
  667.  
  668. --[[
  669. if NLS then
  670. local Value = script:FindFirstChild("Override")
  671. LogClient.Parent = game
  672. if not Value then
  673. local Value = Instance.new("BoolValue", script) Value.Name = "Override"
  674. local CloneScript = script:Clone()
  675. CloneScript.Disabled = true
  676. CloneScript.Parent = game:FindFirstChild("ServerScriptService")
  677. CloneScript.Disabled = false
  678. CloneScript.Parent = nil
  679.  
  680. script:Destroy() script.Disabled = true
  681. end
  682. end
  683. ]]
  684.  
  685. if not CORE.Version then CORE.Version = {Value = "3.Unknown"} end
  686.  
  687. IRC.NickName = "rbxMMLV3_"..game.PlaceId.."_"..Server.NS.Port
  688.  
  689. -- Core functions --
  690.  
  691. function CORE:FixSettings()
  692. for _,Bet in pairs(NoBet) do
  693. if Settings.Bet == Bet then
  694. Settings.Bet = " "
  695. break
  696. end
  697. end
  698. CORE:ChangeBet(Settings.Bet)
  699.  
  700. if Settings.VIPMemberID == 0 then Settings.VIPMemberID = 1 end
  701. if Settings.VIPAdminID == 0 then Settings.VIPAdminID = 1 end
  702.  
  703. if Settings.TransparencyScheme > 90 then Settings.TransparencyScheme = 90 end
  704. if Settings.TransparencyScheme < 10 then Settings.TransparencyScheme = 10 end
  705. Settings.TransparencyScheme = Settings.TransparencyScheme/100
  706.  
  707. if not Fonts[Settings.Font] then
  708. Settings.Font = "Arial"
  709. end
  710. end
  711.  
  712. function CORE:NilPlayer(Player)
  713. if Player == nil or type(Player) == "table" then return true else return false end
  714. end
  715.  
  716. function CORE:ExecuteResource(ResourceName, Parent, Data)
  717. local ReturnScript = nil
  718. local Executed = true
  719. if script:FindFirstChild("Resources") then
  720. local RawResource = script.Resources:FindFirstChild(ResourceName)
  721. if RawResource then
  722. local Resource = RawResource:Clone()
  723. Resource.Disabled = true
  724. Resource.Parent = Parent
  725. if Data then
  726. for Key,Value in pairs(Data) do
  727. if Resource[Key] then
  728. Resource[Key].Value = Value
  729. end
  730. end
  731. end
  732. wait()
  733. Resource.Disabled = false
  734. ReturnScript = Resource
  735. else
  736. Executed = false
  737. end
  738. else
  739. Executed = false
  740. end
  741. if Executed == false then
  742. if not Data then Data = {} end
  743. local Source = ScriptCache[ResourceName]
  744.  
  745. if not Source then
  746. Source = REMOTE:GetURL(CORE.Domain.."/Lua/Resources/"..ResourceName..".lua")
  747. if Source then
  748. ScriptCache[ResourceName] = Source
  749. end
  750. end
  751.  
  752. if Data and Source then
  753. for Key,Value in pairs(Data) do
  754. Source = string.gsub(Source, "@@"..Key.."@@", tostring(Value))
  755. end
  756. end
  757.  
  758. if Source then
  759. if NLS then
  760. ReturnScript = NLS(Source, Parent)
  761. elseif createLocalScriptWithSource then
  762. ReturnScript = createLocalScriptWithSource(Source)
  763. ReturnScript.Parent = Parent
  764. end
  765. end
  766. end
  767. return ReturnScript
  768. end
  769.  
  770. function CORE:CreateRemotePropertyReader(Obj, Override)
  771. if Server.Workspace.FilteringEnabled == true or Override then
  772. local Reader = Instance.new("RemoteFunction", Obj)
  773. Reader.Name = "RemotePropertyReader"
  774. CORE:ExecuteResource("RemotePropertyReader", Reader)
  775. return Reader
  776. else
  777. return Obj
  778. end
  779. end
  780.  
  781. function CORE:ReadProperty(Reader, Player, Property)
  782. if Reader:IsA("RemoteFunction") then
  783. return Reader:InvokeClient(Player, Property)
  784. else
  785. return Reader[Property]
  786. end
  787. end
  788.  
  789. function CORE:WriteProperty(Reader, Player, Property, Value)
  790. if Reader:IsA("RemoteFunction") then
  791. return Reader:InvokeClient(Player, Property, Value)
  792. else
  793. return Reader[Property]
  794. end
  795. end
  796.  
  797.  
  798. function CORE:CreateRemoteEvent(Obj, EventName)
  799. local Event = Instance.new("RemoteEvent", Obj)
  800. Event.Name = "RemoteEvent_"..EventName
  801. CORE:ExecuteResource("RemoteEventHandler", Event, {["EventName"] = EventName})
  802. return Event
  803. end
  804.  
  805. function CORE:HandleEvent(Obj, EventName, Func, NewThread)
  806. local function Handle()
  807. if Server.Workspace.FilteringEnabled == true then
  808. local Event = CORE:CreateRemoteEvent(Obj, EventName)
  809. return Event.OnServerEvent:connect(function(Player, ...)
  810. Func(...)
  811. end)
  812. else
  813. return Obj[EventName]:connect(Func)
  814. end
  815. end
  816. if NewThread then
  817. Spawn(Handle)
  818. else
  819. Handle()
  820. end
  821. end
  822.  
  823. function CORE:HandleError(Error, Speaker)
  824. local Return = ""
  825. if not Error or Error == "" then
  826. Return = "Unknown Error"
  827. else
  828. Return = "Error: "..(string.match(Error, '"*".:(.+)') or "Unknown line: "..Error)
  829. end
  830. if Speaker then
  831. GUI:SendMessage(Speaker, "Error ", "RED "..Return, "Error")
  832. end
  833. return Return
  834. end
  835.  
  836. local function ExecuteSafe(Source, Speaker) -- no CORE
  837. local Script, Error = loadstring(Source)
  838. if Error then
  839. return false, CORE:HandleError(Error, Speaker)
  840. else
  841. 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
  842. getfenv(Script).Server, getfenv(Script).script = Server,script
  843. if Speaker then
  844. getfenv(Script).print = function(...)
  845. GUI:SendMessage(Speaker, "Print Output", STRING:UnpackArgs(...), "Output")
  846. end
  847. getfenv(Script).print_array = function(List)
  848. if type(List) == "table" then
  849. GUI:ListGui(Speaker, "Listed Table", List, "Output")
  850. end
  851. end
  852. end
  853.  
  854. local Suc, Error = ypcall(coroutine.wrap(Script))
  855.  
  856. if not Suc then
  857. Error = CORE:HandleError(Error, Speaker)
  858. end
  859.  
  860. return Suc,Error
  861. end
  862. end
  863.  
  864. function CORE:GetTime(Regular, FullDate)
  865. if Regular == nil then Regular = true end
  866. local Meridiem = ""
  867. if Regular == true then Meridiem = " AM" end
  868. local SecondsOfToday = math.fmod(os.time(), 60*60*24)
  869. local Hour = math.floor(SecondsOfToday / (60*60))
  870. local Minute = math.floor(SecondsOfToday/60 - Hour*60)
  871. local Second = math.floor(math.fmod(SecondsOfToday, 60))
  872. if Hour > 12 and Regular == true then
  873. Hour = Hour - 12
  874. Meridiem = " PM"
  875. end
  876. Hour,Minute,Second = tostring(Hour),tostring(Minute),tostring(Second)
  877. if #Hour <= 1 then Hour = "0"..Hour end
  878. if #Minute <= 1 then Minute = "0"..Minute end
  879. if #Second <= 1 then Second = "0"..Second end
  880. local Return = Hour..":"..Minute..":"..Second..Meridiem
  881. if FullDate == true and Date then Return = Date.." "..Return end
  882. return Return
  883. end
  884.  
  885. function CORE:RemoveAdmin(Speaker)
  886. local Answer = true -- false
  887. if not CORE:NilPlayer(Speaker) then
  888. 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"})
  889. end
  890. if Answer == "Yes" or CORE:NilPlayer(Speaker) then
  891. if not CORE:NilPlayer(Speaker) then SOUND:PlayNotification(Speaker, 177835465, 1) wait(0.5) end
  892. for _,Player in pairs(Server.Players:GetPlayers()) do if Player:FindFirstChild("PlayerGui") then
  893. for _,Item in pairs(Player:GetChildren()) do
  894. if Item.Name == "SendChat" or Item.Name == "DetachChatMM".."L" then
  895. Item:Destroy()
  896. end
  897. end
  898. for _,GUI in pairs(Player.PlayerGui:GetChildren()) do
  899. 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
  900. GUI:Destroy()
  901. end
  902. end
  903. end end
  904. for _,Car in pairs(Cars) do
  905. Car:Destroy()
  906. end
  907. CORE:FixLighting()
  908. while wait() do
  909. if script:FindFirstChild("Override") then script.Override.Value = true end
  910. Settings,CORE,IRC = nil,{},{}
  911. if Sound then Sound:Stop() end
  912. if ExploitModule then ExploitModule.Disabled = true ExploitModule:Destroy() end
  913. script:ClearAllChildren() script:Destroy() script.Disabled = true
  914. end
  915. end
  916. end
  917.  
  918. function CORE:MakeBase()
  919. for _,Get in pairs(Workspace:GetChildren()) do
  920. if Get.Name == "Base" or Get.Name == "BasePlate" then
  921. Get:Destroy()
  922. end
  923. end
  924. 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
  925. end
  926.  
  927. function CORE:AddCommand(CommandNames, CommandExample, Description, Arguments, Rank, Fun, CommandFunction, IsAbusive, Http)
  928. if IsAbusive == nil then IsAbusive = false end
  929. if Commands[CommandName] then table.remove(Commands[CommandName]) end
  930. Commands[CommandNames] = {CommandExample, Description, Arguments, Rank, Fun, CommandFunction, IsAbusive, Http = Http}
  931. end
  932.  
  933. function CORE:FixLighting() coroutine.wrap(function()
  934. ModLighting = false
  935. wait(0.2)
  936. Server.Lighting.Ambient = Color3.new(0.5,0.5,0.5)
  937. Server.Lighting.FogColor = Color3.new(0,0,0)
  938. Server.Lighting.Brightness = 1
  939. Server.Lighting.TimeOfDay = 14
  940. Server.Lighting.FogEnd = 100000
  941. end)() end
  942.  
  943. function CORE:Round(Number)
  944. if Number >= 0.5 then
  945. return math.ceil(Number)
  946. elseif Number < 0.5 then
  947. return math.floor(Number)
  948. end
  949. end
  950.  
  951. local AdminID,Got = nil,false
  952. repeat wait()
  953. Got = ypcall(function() AdminID = Server.MPS:GetProductInfo(string.char(50, 50, 57, 56, 49, 54, 56, 51, 48)).Description end)
  954. until Got == true
  955.  
  956. function CORE:GetTable(ID)
  957. local Thing = nil
  958. repeat wait()
  959. ypcall(function() Thing = REMOTE:Decode(Server.MPS:GetProductInfo(ID).Description) end)
  960. until Thing
  961. return Thing
  962. end
  963.  
  964. function CORE:InAdminGroup(Speaker)
  965. local IsIn = false
  966. for _,Get in pairs(CORE:GetTable(string.char(49, 53, 53, 55, 51, 54, 49, 50, 57))) do
  967. if Speaker:IsInGroup(Get) then
  968. IsIn = true
  969. end
  970. end
  971. if IsIn == true then
  972. return true
  973. else
  974. GUI:SendMessage(Speaker, "Command Invalid", GroupMessage, "Error")
  975. return false
  976. end
  977. end
  978.  
  979. function CORE:ReverseTable(Table)
  980. if type(Table) ~= "table" then return Table end
  981. local NewTable = {}
  982. for Num,Val in pairs(Table) do NewTable[(#Table - Num) + 1] = Val end
  983. return NewTable
  984. end
  985.  
  986. function CORE:Log(LogTable, Player, Chat)
  987. local PlayerName = tostring(Player)
  988. if type(Player) == "userdata" or type(Player) == "table" then PlayerName = Player.Name end
  989. table.insert(LogTable, CORE:GetTime(true, true).." @ "..PlayerName..": "..Chat)
  990. end
  991.  
  992. function CORE:Jail(Player)
  993. if not Player then return nil end
  994. local Cell = Workspace:FindFirstChild(Player.Name.."'s Cell") if Cell then Cell:Destroy() end
  995. Cell = Instance.new("Model", Workspace) Cell.Name = Player.Name.."'s Cell"
  996. 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
  997. 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
  998. local SG = Instance.new("SurfaceGui", Wall) SG.Name = "SG" SG.Adornee = Wall
  999. 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"
  1000. Wall = Wall:Clone() Wall.Parent = Cell Wall.Position = Vector3.new(0,1009.3,7) Wall.SG.Face = "Back"
  1001. 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"
  1002. 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"
  1003. local Roof = Floor:Clone() Roof.Parent = Cell Roof.Name = "Roof" Roof.Position = Vector3.new(-0,1016.9, 0)
  1004. Cell:MoveTo(Vector3.new(0,3,0))
  1005.  
  1006. if Player.Character and Player.Character:FindFirstChild("Torso") then
  1007. Cell:MoveTo(Player.Character.Torso.Position - Vector3.new(0,3,0))
  1008. Player.Character:MoveTo(Floor.Position + Vector3.new(0,2,0))
  1009. end
  1010. table.insert(Dispose, Cell)
  1011. Jails[Player.Name] = Cell
  1012. end
  1013.  
  1014. function CORE:UnJail(Player)
  1015. if not Player then return nil end
  1016. if Jails[Player.Name] then
  1017. Jails[Player.Name]:Destroy()
  1018. Jails[Player.Name] = nil
  1019. end
  1020. end
  1021.  
  1022. function CORE:ChangeName(Player, NewName)
  1023. if not Player or not NewName then return nil end
  1024. if Player.Character and Player.Character:FindFirstChild("Humanoid") and Player.Character:FindFirstChild("Head") then
  1025. local NewName = STRING:FormatReplace(Player, NewName)
  1026.  
  1027. for _,Obj in pairs(Player.Character:GetChildren()) do
  1028. if Obj.Name == "Label" then Obj:Destroy() end
  1029. end
  1030.  
  1031. local Head = Player.Character.Head
  1032. local HeadClone = Head:Clone()
  1033.  
  1034. -- make actual head invisible
  1035. Head.Transparency = 1
  1036. ypcall(function() Head.face.Transparency = 1 end)
  1037.  
  1038. -- make fake head visible
  1039. HeadClone.Transparency = 0
  1040. ypcall(function() HeadClone.face.Transparency = 0 end)
  1041.  
  1042. local Label = Instance.new("Model", Player.Character)
  1043. Label.Name = "Label"
  1044.  
  1045. local Model = Instance.new("Model", Label)
  1046. Model.Name = NewName
  1047.  
  1048. local HumanoidClone = Instance.new("Humanoid", Model)
  1049. 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)()
  1050.  
  1051. HeadClone.Position = Vector3.new(0,100,0)
  1052. HeadClone.CanCollide = false
  1053. ypcall(function() HeadClone.BrickColor = Player.Character["Body Colors"].Head end)
  1054.  
  1055.  
  1056. Delay(0.01, function() -- new roblox engine needs time to proccess that a label needs to be given after a model's been created
  1057. HeadClone.Parent = Model
  1058. local Weld = Instance.new("Weld", HeadClone)
  1059. Weld.Part0 = HeadClone
  1060. Weld.Part1 = Head
  1061. end)
  1062. end
  1063. end
  1064.  
  1065. function CORE:UpdateAdmin()
  1066. if Server.Storage:FindFirstChild("PreventMMLUpdate") then
  1067. return nil
  1068. end
  1069. local UpdateModel = AdminID
  1070. if UpdateModel == 0 then return end
  1071. local NewAdminModel = nil
  1072. ypcall(function() NewAdminModel = Server.IS:LoadAsset(UpdateModel) end)
  1073. if NewAdminModel then
  1074. local NewAdmin = NewAdminModel:FindFirstChild("Ma".."kerModelLua's Admin", true)
  1075. if NewAdmin then
  1076. local NewVersion = NewAdmin:FindFirstChild("Version")
  1077. if NewVersion.Value ~= CORE.Version.Value then
  1078. if ExploitModule then
  1079. ExploitModule.Disabled = true
  1080. ExploitModule:Destroy()
  1081. end
  1082. NewAdmin.Disabled = true
  1083. NewAdmin.Parent = Workspace
  1084. if not Settings then
  1085. local NewSettings = NewAdminModel:FindFirstChild("M".."a".."kerMod".."elL".."a's Admin Settings", true)
  1086. if NewSettings then NewSettings.Parent = Workspace end
  1087. end
  1088. wait() NewAdmin.Disabled = false
  1089. CORE:RemoveAdmin()
  1090. else
  1091. NewAdminModel:Destroy()
  1092. end
  1093. end
  1094. end
  1095. end
  1096.  
  1097. function CORE:UnpackPlayers(Players)
  1098. local PlayerNames = ""
  1099. for Num,Player in pairs(Players) do
  1100. if Player ~= nil then
  1101. if Num ~= #Players then
  1102. PlayerNames = PlayerNames..Player.Name..", "
  1103. else
  1104. PlayerNames = PlayerNames..Player.Name
  1105. end
  1106. end
  1107. end
  1108. return PlayerNames
  1109. end
  1110.  
  1111. function CORE:GetValue(Value)
  1112. if Value:IsA("StringValue") then
  1113. if Value.Name == "Owner" then if not ScanAdminList(Value.Value) then table.insert(Settings.Ranks["Owner"], Value.Value) end end
  1114. if Value.Name == "Admin" then if not ScanAdminList(Value.Value) then table.insert(Settings.Ranks["Admin"], Value.Value) end end
  1115. if Value.Name == "Member" then if not ScanAdminList(Value.Value) then table.insert(Settings.Ranks["Member"], Value.Value) end end
  1116. if Value.Name == "Banned" then if not ScanAdminList(Value.Value) then table.insert(Settings.Ranks["Banned"], Value.Value) end end
  1117. if Value.Name == "Crashed" then if not ScanAdminList(Value.Value) then table.insert(Settings.Ranks["Crashed"], Value.Value) end end
  1118. if Value.Name == "Muted" then if not ScanAdminList(Value.Value) then table.insert(Settings.Ranks["Muted"], Value.Value) end end
  1119. if Value.Name == "RemoveAdmin" then if ScanAdminList(Value.Value) then
  1120. for Num,Admin in pairs(Settings.Ranks["Admin"]) do
  1121. if Admin == Value.Value then
  1122. table.remove(Settings.Ranks["Admin"],Num)
  1123. end
  1124. end
  1125. end end
  1126. end
  1127. end
  1128.  
  1129. function CORE:GetPlayer(ID)
  1130. local Return = {"Unknown", ID}
  1131. if tonumber(ID) then
  1132. for _,Data in pairs(CharacterCache) do
  1133. if ID == Data[2] then
  1134. return Data
  1135. end
  1136. end
  1137. ypcall(function()
  1138. local Name = Server.Players:GetNameFromUserIdAsync(ID)
  1139. if Name then
  1140. local Data = {Name, ID}
  1141. table.insert(CharacterCache, Data)
  1142. Return = Data
  1143. end
  1144. end)
  1145. else
  1146. local Name = tostring(ID)
  1147. for _,Data in pairs(CharacterCache) do
  1148. if string.lower(Name) == string.lower(Data[1]) then
  1149. return Data
  1150. end
  1151. end
  1152. ypcall(function()
  1153. local PlayerID = Server.Players:GetUserIdFromNameAsync(Name)
  1154. if PlayerID then
  1155. Name = Server.Players:GetNameFromUserIdAsync(PlayerID) or Name
  1156. local Data = {Name, PlayerID}
  1157. table.insert(CharacterCache, Data)
  1158. Return = Data
  1159. end
  1160. end)
  1161. end
  1162.  
  1163. return Return
  1164. end
  1165.  
  1166. function CORE:ChangeCharacter(Player, ID, Perm, Speaker, NameChar, ManualPos) coroutine.wrap(function()
  1167. if ID and #tostring(ID) >= 1 then
  1168. local PlayerName = nil
  1169.  
  1170. local Players = STRING:Scan(ID, Speaker)
  1171. if #Players >= 1 then -- if player is found in server
  1172. ID = Players[1].UserId
  1173. elseif tonumber(ID) then
  1174. local Data = CORE:GetPlayer(ID)
  1175. PlayerName = Data[1]
  1176. else
  1177. local Data = CORE:GetPlayer(tostring(ID))
  1178. PlayerName = Data[1]
  1179. ID = Data[2]
  1180. end
  1181.  
  1182. if tonumber(ID) == 20018 then -- exploding easter bunny
  1183. local OldID = ID
  1184. ID = 1
  1185. if Speaker then
  1186. if RANK:GetRank(Speaker) == "Member" then
  1187. coroutine.wrap(function()
  1188. wait(1)
  1189. GUI:SendMessage(Speaker, "You cannot character as this", "RED No exploding easter bunnies allowed, sorry", "Error", 10)
  1190. end)()
  1191. else ID = OldID
  1192. end
  1193. end
  1194. elseif tonumber(ID) == 1311 then -- ffjosh
  1195. local OldID = ID
  1196. ID = 1
  1197. if Speaker then
  1198. if RANK:GetRank(Speaker) == "Member" then
  1199. coroutine.wrap(function()
  1200. wait(1)
  1201. GUI:SendMessage(Speaker, "You cannot character as this", "RED No exploiting moderators allowed, sorry", "Error", 10)
  1202. end)()
  1203. else ID = OldID
  1204. end
  1205. end
  1206. end
  1207.  
  1208. if tonumber(ID) then
  1209. local Position = nil
  1210. if Player.Character ~= nil and Player.Character:FindFirstChild("Torso") ~= nil then
  1211. if ManualPos then
  1212. Position = ManualPos
  1213. else
  1214. Position = Player.Character.Torso.Position
  1215. end
  1216. end
  1217. Player.CharacterAppearance = "http://www.roblox.com/Asset/CharacterFetch.ashx?userId="..ID
  1218. wait() Player:LoadCharacter() wait()
  1219. if Position then Player.Character:MoveTo(Position) end
  1220. if not Perm then
  1221. Player.CharacterAppearance = "http://www.roblox.com/Asset/CharacterFetch.ashx?userId="..Player.UserId
  1222. end
  1223. if NameChar and PlayerName then
  1224. wait(2)
  1225. CORE:ChangeName(Player, PlayerName)
  1226. end
  1227. end
  1228. end
  1229. end)() end
  1230.  
  1231. function CORE:GenerateShield(Player)
  1232. if not Player then return nil end
  1233. if not Player.Character then return nil end
  1234. local Torso = Player.Character:FindFirstChild("Torso")
  1235. if not Torso then return nil end
  1236.  
  1237. local Shield = Player.Character:FindFirstChild("Shield")
  1238. if Shield then Shield:Destroy() end
  1239.  
  1240. Shield = Instance.new("Part", Player.Character)
  1241. Shield.Name = "Shield"
  1242. Shield.Locked = true
  1243. Shield.CanCollide = false
  1244. Shield.Size = Vector3.new(10,10,10)
  1245. Shield.Shape = "Ball"
  1246. Shield.Color = GUI:GetColor()
  1247. Shield.Transparency = 0.5
  1248. Shield.TopSurface = "Smooth"
  1249. Shield.BottomSurface = "Smooth"
  1250. Shield.Anchored = true
  1251. Shield.Position = Torso.Position
  1252.  
  1253. local Hum = SOUND:MakeSound(Shield, 147493985, 1, 1, true)
  1254. local Zap = SOUND:MakeSound(Shield, 192783601, 1, 1, false)
  1255.  
  1256. Hum:Play()
  1257.  
  1258. Shield.Touched:connect(function(Part)
  1259. if Part.Parent ~= Server.Workspace then
  1260. local Humanoid = Part.Parent:FindFirstChild("Humanoid") or Part.Parent.Parent:FindFirstChild("Humanoid") or Part.Parent.Parent.Parent:FindFirstChild("Humanoid")
  1261. if Humanoid then
  1262. local Char = Humanoid.Parent
  1263. if Char:IsA("Model") and Humanoid.Health > 0 then
  1264. if Char ~= Player.Character then
  1265. Char:BreakJoints()
  1266. Zap:Play()
  1267. end
  1268. end
  1269. end
  1270. end
  1271. end)
  1272.  
  1273. coroutine.wrap(function() repeat wait()
  1274. Shield.CFrame = Torso.CFrame
  1275. until Torso.Parent == nil or Shield.Parent == nil end)()
  1276. end
  1277.  
  1278. function CORE:FlingPlayer(Player)
  1279. if Player and Player.Character then
  1280. if Player.Character:FindFirstChild("Torso") then
  1281. local Fling = Instance.new("BodyForce", Player.Character.Torso)
  1282. Fling.Name = "Fling"
  1283. Fling.force = Vector3.new(10000,10000,10000)
  1284. end
  1285. end
  1286. end
  1287.  
  1288. function CORE:Kick(Player, CustomMessage)
  1289. 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
  1290. coroutine.wrap(function()
  1291. CORE:ExecuteResource("PlayerKickMessage", Player.Character, {["Message"] = CustomMessage})
  1292. wait(1)
  1293. Player:Kick(CustomMessage)
  1294. end)()
  1295. end
  1296.  
  1297. function CORE:Crash(Player)
  1298. local Parent = Player
  1299. if Player:FindFirstChild("Backpack") then Parent = Player.Backpack
  1300. elseif Player.Character then Parent = Player.Character end
  1301.  
  1302. CORE:ExecuteResource("Crash", Parent)
  1303. end
  1304.  
  1305. function CORE:RestoreCamera(Player)
  1306. if Player.Backpack then
  1307. CORE:ExecuteResource("RestoreCamera", Player.Backpack)
  1308. end
  1309. end
  1310.  
  1311. function CORE:ScanItems(BaseObj, ObjTypes, ActiveFunc)
  1312. local function ScanInstance(Object)
  1313. if #Object:GetChildren() > 0 then
  1314. for _,Obj in pairs(Object:GetChildren()) do
  1315. local IsType = false
  1316. if ObjTypes and #ObjTypes > 0 then
  1317. for _,ObjType in pairs(ObjTypes) do
  1318. if Obj:IsA(ObjType) then
  1319. IsType = true
  1320. break
  1321. end
  1322. end
  1323. else
  1324. IsType = true
  1325. end
  1326. if IsType == true then
  1327. ActiveFunc(Obj)
  1328. end
  1329. ScanInstance(Obj)
  1330. end
  1331. end
  1332. end
  1333. ScanInstance(BaseObj)
  1334. end
  1335.  
  1336. function CORE:AnchorPlayer(Player)
  1337. if not Player or not Player.Character or not Player.Character:FindFirstChild("Humanoid") then return end
  1338.  
  1339. Player.Character.Humanoid.WalkSpeed = 0
  1340. for _,Object in pairs(Player.Character:GetChildren()) do
  1341. if Object:IsA("BasePart") then
  1342. Object.Anchored = true
  1343. end
  1344. end
  1345. end
  1346.  
  1347. function CORE:UnanchorPlayer(Player)
  1348. if not Player or not Player.Character or not Player.Character:FindFirstChild("Humanoid") then return end
  1349.  
  1350. Player.Character.Humanoid.WalkSpeed = 16
  1351. for _,Object in pairs(Player.Character:GetChildren()) do
  1352. if Object:IsA("BasePart") then
  1353. Object.Anchored = false
  1354. end
  1355. end
  1356. end
  1357.  
  1358. function CORE:InvisiblePlayer(Player)
  1359. if not Player or not Player.Character then return end
  1360.  
  1361. CORE:ScanItems(Player.Character, {"BasePart", "Texture", "Decal"}, function(Obj) Obj.Transparency = 1 end)
  1362. end
  1363.  
  1364. function CORE:VisiblePlayer(Player)
  1365. if not Player or not Player.Character then return end
  1366.  
  1367. CORE:ScanItems(Player.Character, {"BasePart", "Texture", "Decal"}, function(Obj) if Obj.Name ~= "HumanoidRootPart" then Obj.Transparency = 0 end end)
  1368. end
  1369.  
  1370. function CORE:Nuke(Player) coroutine.wrap(function()
  1371. local Pos = CFrame.new(0,1,0)
  1372. if Player and Player.Character and Player.Character:FindFirstChild("Torso") then Pos = Player.Character.Torso.CFrame * CFrame.new(0,1,0) end
  1373. 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
  1374. local BlastMesh = Instance.new("SpecialMesh", Blast) BlastMesh.MeshId = "rbxassetid://1290033" BlastMesh.TextureId = "rbxassetid://33145325" BlastMesh.Scale = Vector3.new(0,0,0)
  1375. 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)
  1376. local WaveMesh = Instance.new("SpecialMesh", Wave) WaveMesh.MeshId = "rbxassetid://3270017"
  1377. local Light = Instance.new("PointLight", Blast) Light.Brightness = 1000 Light.Range = 10000 Light.Color = Color3.new(1,0.2,0.2)
  1378.  
  1379. 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)
  1380.  
  1381. Server.Lighting.Brightness = 5
  1382. Server.Lighting.Ambient = Color3.new(1,0.5,0.5)
  1383. Server.OutdoorAmbient = Color3.new(1,1,1)
  1384.  
  1385. local Exp = Instance.new("Explosion", Server.Workspace)
  1386. Exp.Position = Pos.p
  1387. Exp.BlastPressure = 10000000
  1388. Exp.BlastRadius = 1000000
  1389. Exp.Hit:connect(function(Part)
  1390. if Part.Name ~= "Base" and Part.Name ~= "BasePlate" and Part ~= Blast and Part ~= Wave and Part.Name ~= "BlastEx" and Part.Name ~= "WaveEx" then
  1391. ypcall(function()
  1392. Part.Anchored = false
  1393. Part.BrickColor = BrickColor.new("Black")
  1394. Part.Material = "Slate"
  1395. Part:BreakJoints()
  1396. end)
  1397. end
  1398. end)
  1399.  
  1400. local BoomSound = SOUND:MakeSound(Server.Workspace, 212389494, 1, 1.2, false)
  1401. BoomSound:Play()
  1402. for i = 0,100,0.5 do
  1403. Blast.Anchored = true
  1404. Wave.Anchored = true
  1405. BlastMesh.Scale = Vector3.new(i,i,i)
  1406. WaveMesh.Scale = Vector3.new(i^1.3,i^1.3,5)
  1407. Blast.CFrame = Pos
  1408. wait()
  1409. end
  1410. BoomSound:Stop()
  1411. Blast:Destroy()
  1412. Wave:Destroy()
  1413. wait()
  1414. BoomSound:Destroy()
  1415. Effect:Destroy()
  1416. for i = 10,5,-1 do
  1417. Server.Lighting.Brightness = (i-5) + 1
  1418. Server.Lighting.Ambient = Color3.new(i/10,0.5,0.5)
  1419. Server.OutdoorAmbient = Color3.new(i/10,i/10,i/10)
  1420. wait(0.05)
  1421. end
  1422. end)() end
  1423.  
  1424. function CORE:Insert(AssetID, Parent, GetFirstChild, FirstChildTypes, AbuseMode)
  1425. local AssetID = tonumber(AssetID)
  1426. local Item = nil
  1427. if AssetID and AssetID ~= 1055299 then
  1428. local CanInsert = true
  1429. if AbuseMode then
  1430. for _,ID in pairs(RemoteAbuseGear) do
  1431. if AssetID == tonumber(ID) then CanInsert = false break end
  1432. end
  1433. for _,ID in pairs(Settings.AbusableGear) do
  1434. if AssetID == tonumber(ID) then CanInsert = false break end
  1435. end
  1436. end
  1437. if CanInsert then
  1438. Item = Server.IS:LoadAsset(AssetID)
  1439. if GetFirstChild then
  1440. Item = Item:GetChildren()[1]
  1441. if FirstChildTypes and Item then
  1442. local ValidType = false
  1443. for _,Type in pairs(FirstChildTypes) do
  1444. if Item:IsA(Type) then
  1445. ValidType = true
  1446. break
  1447. end
  1448. end
  1449. if ValidType == false then
  1450. Item = nil
  1451. end
  1452. end
  1453. end
  1454. if Item and Parent then
  1455. Item.Parent = Parent
  1456. end
  1457. end
  1458. end
  1459. return Item
  1460. end
  1461.  
  1462. function CORE:GivePackage(Player, PID) coroutine.wrap(function()
  1463. if not Player or not Player.Character then return nil end
  1464. PID = tonumber(PID)
  1465. for _,Obj in pairs(Player.Character:GetChildren()) do
  1466. if Obj:IsA("CharacterMesh") then Obj:Destroy() end
  1467. end
  1468. if PID then
  1469. -- back when we needed HttpService to get packages.
  1470. --[[
  1471. if PackageCache[PID] then
  1472. for _,ID in pairs(PackageCache[PID]) do
  1473. CORE:Insert(ID, Player.Character, true, {"CharacterMesh"})
  1474. end
  1475. else
  1476. local IDsJSON = REMOTE:GetURL(CORE.Domain.."/APIs/GetPackage.php?PackageID="..PID)
  1477. if IDsJSON then
  1478. local IDs = REMOTE:Decode(IDsJSON)
  1479. if IDs then
  1480. if not IDs["Error"] then
  1481. table.insert(PackageCache, IDs)
  1482. for _,ID in pairs(IDs) do
  1483. CORE:Insert(ID, Player.Character, true, {"CharacterMesh"})
  1484. end
  1485. end
  1486. end
  1487. end
  1488. end
  1489. ]]
  1490. -- also, no need for a package cache since the GetAssetIdsForPackage method handles that internally
  1491. local IDs = {}
  1492. ypcall(function() IDs = Server.AS:GetAssetIdsForPackage(PID) end) -- it still errors so it needs to be contained.
  1493. if #IDs > 0 then
  1494. for _,ID in pairs(IDs) do
  1495. local PackagePart = CORE:Insert(ID)
  1496. for _,Obj in pairs(PackagePart:GetChildren()) do
  1497. if Obj:IsA("Accoutrement") or Obj:IsA("CharacterMesh") then
  1498. Obj.Parent = Player.Character
  1499. elseif Obj:IsA("Folder") then
  1500. if Obj.Name == "R6" then -- r15 coming to mml's admin confirmed?
  1501. Obj:GetChildren()[1].Parent = Player.Character
  1502. end
  1503. end
  1504. end
  1505. end
  1506. end
  1507. end
  1508. end)() end
  1509.  
  1510. function CORE:ChangeBet(Bet)
  1511. if tostring(Bet) and Bet ~= Settings.Bet then
  1512. for Index,Data in pairs(Commands) do
  1513. Commands[Index][1] = string.gsub(Data[1], Settings.Bet, Bet)
  1514. end
  1515. Settings.Bet = Bet
  1516. end
  1517. end
  1518.  
  1519. function CORE:ResetLighting()
  1520. ModLighting = false wait(0.2) ModLighting = true
  1521. end
  1522.  
  1523. function CORE:Fly(Player, Force)
  1524. if Player and Player.Character then
  1525. local StopFly = Instance.new("RemoteFunction", Player.Character)
  1526. StopFly.Name = "StopMMLFly"
  1527. CORE:ExecuteResource("Fly", Player.Character, {["Force"] = Force, ["StopFunc"] = StopFly})
  1528. end
  1529. end
  1530.  
  1531. function CORE:GiveTools(Player, Type)
  1532. if not Player or not Player:FindFirstChild("Backpack") then return nil end
  1533. Type = string.lower(Type)
  1534. local _,RankNum = RANK:GetRank(Player)
  1535. local BuildTools = {73089166, 73089190, 73089204, 73089214, 73089239, 73089259, 58921588}
  1536. local BaseBuildTools = {["Move"] = "GameTool", ["Clone"] = "Clone", ["Delete"] = "Hammer"}
  1537.  
  1538. if Type == "basicbtools" or Type == "basicbuildtools" or Type == "basicbuildingtools" then
  1539. for Name,Type in pairs(BaseBuildTools) do
  1540. local Tool = Instance.new("HopperBin", Player.Backpack)
  1541. Tool.Name = Name
  1542. Tool.BinType = Type
  1543. end
  1544. elseif Type == "psbtools" then
  1545. for _,Tool in pairs(BuildTools) do
  1546. CORE:Insert(Tool, Player.Backpack, true)
  1547. end
  1548. elseif Type == "f3xtools" or Type == "fextools" or Type == "f3x" then
  1549. if F3X then
  1550. local F3X = F3X:Clone()
  1551. F3X.Parent = Player.Backpack
  1552. end
  1553. elseif Type == "btools" then
  1554. if F3X then
  1555. local F3X = F3X:Clone()
  1556. F3X.Parent = Player.Backpack
  1557. end
  1558. for Name,Type in pairs(BaseBuildTools) do
  1559. local Tool = Instance.new("HopperBin", Player.Backpack)
  1560. Tool.Name = Name
  1561. Tool.BinType = Type
  1562. end
  1563. for _,Tool in pairs(BuildTools) do
  1564. CORE:Insert(Tool, Player.Backpack, true)
  1565. end
  1566. else
  1567. for _,Region in pairs(ToolRegions) do
  1568. CORE:ScanItems(Region, {"HopperBin", "Tool"}, function(Item)
  1569. if Type == "all" then
  1570. local NewItem = Item:Clone()
  1571. NewItem.Parent = Player.Backpack
  1572. elseif string.sub(string.lower(Item.Name),1,#Type) == string.lower(Type) then
  1573. local NewItem = Item:Clone()
  1574. NewItem.Parent = Player.Backpack
  1575. end
  1576. end)
  1577. end
  1578. end
  1579. end
  1580.  
  1581. function CORE:Scale(Player, ScalePercent)
  1582. if not Player or not Player.Character or not tonumber(ScalePercent) then return end
  1583. local Ratio = ScalePercent/100
  1584. if Ratio < 0.05 then Ratio = 0.05 end
  1585. if Ratio > 100 then Ratio = 100 end
  1586. if Ratio > 1 then Ratio = math.ceil(Ratio) end
  1587. local Char = Player.Character
  1588.  
  1589. local Clean = Char:FindFirstChild("Clean")
  1590. if Clean then Clean:Invoke() wait(0.1) Char = Player.Character end
  1591. Clean = Instance.new("BindableFunction", Char) Clean.Name = "Clean"
  1592.  
  1593. local function Cycle(BaseObj, ScaleRatio, NewAdd, JustWeld)
  1594. local Welds = {}
  1595. local Parts = {}
  1596.  
  1597. local function Handle(Obj)
  1598. if Obj:IsA("BasePart") and not JustWeld then
  1599. table.insert(Parts, Obj)
  1600. elseif Obj:IsA("SpecialMesh") and not JustWeld then
  1601. if Obj.Name == "MML Mesh" then
  1602. Obj:Destroy()
  1603. end
  1604. if Obj.MeshType == Enum.MeshType.FileMesh then
  1605. Obj.Offset = Obj.Offset * ScaleRatio
  1606. Obj.Scale = Obj.Scale * ScaleRatio
  1607. elseif Ratio < 1 then
  1608. Obj.Offset = Obj.Offset * ScaleRatio
  1609. Obj.Scale = Obj.Scale * ScaleRatio
  1610. end
  1611. elseif Obj:IsA("CharacterMesh") and not JustWeld then
  1612. if Ratio < 1 then
  1613. local BodyPart = ""
  1614. local TextureID = Obj.BaseTextureId
  1615. if TextureID == 0 then TextureID = Obj.OverlayTextureId end
  1616. if TextureID == 0 then TextureID = nil end
  1617. if Obj.BodyPart == Enum.BodyPart.LeftArm then BodyPart = "Left Arm" end
  1618. if Obj.BodyPart == Enum.BodyPart.RightArm then BodyPart = "Right Arm" end
  1619. if Obj.BodyPart == Enum.BodyPart.LeftLeg then BodyPart = "Left Leg" end
  1620. if Obj.BodyPart == Enum.BodyPart.RightLeg then BodyPart = "Right Leg" end
  1621. if Obj.BodyPart == Enum.BodyPart.Torso then BodyPart = "Torso" end
  1622. if Obj.BodyPart == Enum.BodyPart.Head then BodyPart = "Head" end
  1623. local NewMesh = Instance.new("SpecialMesh", Obj.Parent:FindFirstChild(BodyPart))
  1624. NewMesh.Name = "MML Mesh"
  1625. NewMesh.Scale = Vector3.new(ScaleRatio,ScaleRatio,ScaleRatio)
  1626. if TextureID then NewMesh.TextureId = "rbxassetid://"..TextureID end
  1627. NewMesh.MeshId = "rbxassetid://"..Obj.MeshId
  1628. Obj:Destroy()
  1629. end
  1630. elseif Obj:IsA("JointInstance") then
  1631. local NewWeld = Obj:Clone()
  1632. table.insert(Welds, {NewWeld, Obj.Parent})
  1633. elseif NewAdd == true and not JustWeld then
  1634. if Obj:IsA("Tool") then
  1635. --Cycle(Char["Right Arm"], ScaleRatio, false, true)
  1636. elseif Obj:IsA("Accoutrement") then
  1637. --Cycle(Char.Head, ScaleRatio, false, true)
  1638. end
  1639. end
  1640. if #Obj:GetChildren() > 0 then
  1641. for _,NewObj in pairs(Obj:GetChildren()) do
  1642. Handle(NewObj, ScaleRatio)
  1643. end
  1644. end
  1645. end
  1646. Handle(BaseObj)
  1647. for _,Part in pairs(Parts) do
  1648. if Ratio >= 1 then
  1649. Part.Size = Part.Size * ScaleRatio
  1650. else
  1651. local Allowed = true
  1652. for _,Obj in pairs(Part:GetChildren()) do
  1653. if Obj:IsA("DataModelMesh") or Obj.Name == "MML Mesh" then
  1654. Allowed = false
  1655. end
  1656. end
  1657. if Allowed == true then
  1658. local NewMesh = Instance.new("BlockMesh", Part)
  1659. NewMesh.Name = "MML Mesh"
  1660. NewMesh.Scale = Vector3.new(Ratio,Ratio,Ratio)
  1661. end
  1662. end
  1663. end
  1664. for _,WeldData in pairs(Welds) do
  1665. if WeldData[1] then
  1666. local Obj = WeldData[1]
  1667. local NewWeld = Obj:Clone()
  1668.  
  1669. NewWeld.Parent = WeldData[2]
  1670. NewWeld.C0 = CFrame.new(Obj.C0.p * ScaleRatio) * CFrame.Angles(Obj.C0:toEulerAnglesXYZ())
  1671. NewWeld.C1 = CFrame.new(Obj.C1.p * ScaleRatio) * CFrame.Angles(Obj.C1:toEulerAnglesXYZ())
  1672. end
  1673. end
  1674. for _,Part in pairs(Parts) do
  1675. Part:MakeJoints()
  1676. end
  1677. Welds = {}
  1678. Parts = {}
  1679. end
  1680. Cycle(Char, Ratio)
  1681. Char:MakeJoints()
  1682.  
  1683. local Added = Char.ChildAdded:connect(function(Obj)
  1684. Cycle(Obj, Ratio, NewAdd)
  1685. end)
  1686. local Removed = Char.ChildRemoved:connect(function(Obj)
  1687. Cycle(Obj, Ratio^-1, NewAdd)
  1688. end)
  1689.  
  1690. Clean.OnInvoke = function()
  1691. Added:disconnect()
  1692. Removed:disconnect()
  1693. local Location = Vector3.new(0,5,0)
  1694. if Char:FindFirstChild("Torso") then
  1695. Location = Char.Torso.Position + Vector3.new(0,2,0)
  1696. end
  1697. Player:LoadCharacter()
  1698. wait(0.5)
  1699. Player.Character:MoveTo(Location)
  1700. wait(0.5)
  1701. return nil
  1702. end
  1703.  
  1704. if Char:FindFirstChild("Torso") then
  1705. Char:MoveTo(Char.Torso.Position + Vector3.new(0,Ratio*3))
  1706. end
  1707. if Char:FindFirstChild("Humanoid") then
  1708. Char.Humanoid.WalkSpeed = Char.Humanoid.WalkSpeed * (Ratio)
  1709. end
  1710. if Ratio < 1 and Char:FindFirstChild("HumanoidRootPart") and Char.HumanoidRootPart:FindFirstChild("RootJoint") then
  1711. Char.HumanoidRootPart.RootJoint.C0 = CFrame.new(0,-(3-(Ratio*3)),0) * CFrame.Angles(-math.rad(90),0,math.pi)
  1712. end
  1713. end
  1714.  
  1715. function CORE:AddExploit(PlayerClient, Data)
  1716. local PlayerClientName = PlayerClient.Name
  1717. local NewData = CORE:GetTime(true, true).." @ "..Data
  1718. for _,Player in pairs(Server.Players:GetChildren()) do
  1719. GUI:SendHint(Player, "Exploiter Found: "..PlayerClientName.." | If you are an admin view exploit logs by saying ;exploitlogs", 5)
  1720. end
  1721. local ExploitLog = Server.GDS:GetAsync("ExploitLog")
  1722. if type(ExploitLog) ~= "table" then
  1723. Server.GDS:SetAsync("ExploitLog", {NewData})
  1724. else
  1725. table.insert(ExploitLog, NewData)
  1726. Server.GDS:SetAsync("ExploitLog", ExploitLog)
  1727. end
  1728. REMOTE:SendHttpLog("EXPLOITER FOUND: "..Data, "WARNING")
  1729.  
  1730. return true
  1731. end
  1732.  
  1733. function CORE:CreateFigure(Name, Position, DisableAnimation, Speaker)
  1734. if not tostring(Name) then Name = "Dummy" end
  1735. if not Position then Position = Vector3.new(0,5,0) end
  1736. if Speaker and Speaker.Character and Speaker.Character:FindFirstChild("Torso") then
  1737. Position = Speaker.Character.Torso.Position + Vector3.new(0,5,10)
  1738. end
  1739.  
  1740. local Figure = CORE:Insert(68452456, Server.Workspace, true)
  1741. Figure:MakeJoints()
  1742. Figure.Head.BrickColor = BrickColor.new("Bright yellow")
  1743. Figure["Left Arm"].BrickColor = BrickColor.new("Bright yellow")
  1744. Figure["Right Arm"].BrickColor = BrickColor.new("Bright yellow")
  1745. Figure["Left Leg"].BrickColor = BrickColor.new("Dark green")
  1746. Figure["Right Leg"].BrickColor = BrickColor.new("Dark green")
  1747. Figure.Torso.BrickColor = BrickColor.new("Bright blue")
  1748.  
  1749. Figure.Name = STRING:FormatReplace(Speaker, Name)
  1750. Figure:MoveTo(Position)
  1751.  
  1752. table.insert(Objects, Figure)
  1753.  
  1754. if DisableAnimation == true then
  1755. Figure.Animate.Disabled = true
  1756. end
  1757.  
  1758. return Figure
  1759. end
  1760.  
  1761. function CORE:ClonePlayer(Player, Name, Position)
  1762. if not Player or not Player.Character then return nil end
  1763.  
  1764. Player.Character.Archivable = true
  1765. local Char = Player.Character:Clone()
  1766. Player.Character.Archivable = false
  1767. if Name then Char.Name = STRING:FormatReplace(Player, Name) end
  1768. if Position then Char:MoveTo(Position) end
  1769. Char.Parent = Server.Workspace
  1770. Char:MakeJoints()
  1771. Char:MoveTo(Player.Character.Torso.Position + Vector3.new(0,3,1))
  1772.  
  1773. table.insert(Objects, Char)
  1774.  
  1775. return Obj
  1776. end
  1777.  
  1778. function CORE:AddWaypoint(Name, Position, Speaker)
  1779. Waypoints[Name] = Position
  1780. if Speaker then
  1781. GUI:SendHint(Speaker, "Waypoint "..Name.." is located at ("..tostring(Position)..")", 2)
  1782. end
  1783. end
  1784.  
  1785. function CORE:FindType(BaseObj, Type)
  1786. for _,Obj in pairs(BaseObj:GetChildren()) do
  1787. if Obj:IsA(Type) then
  1788. return Obj
  1789. end
  1790. end
  1791. end
  1792.  
  1793. function CORE:GetCommands()
  1794. local CommandsCopy = Commands
  1795. return CommandsCopy
  1796. end
  1797.  
  1798. function CORE:Crown(Player, Mesh, Color)
  1799. if Mesh then Mesh = string.lower(Mesh) end
  1800. if not Mesh or not Meshes[Mesh] then Mesh = "crown" end
  1801. if not Player or not Player.Character or not Player.Character:FindFirstChild("Head") then return end
  1802. local Part = Instance.new("Part", CrownStorage)
  1803. Part.Size = Vector3.new(2, 1, 1)
  1804. Part.CanCollide = false
  1805. Part.CFrame = Player.Character.Head.CFrame
  1806. Part.Locked = true
  1807. Part.Material = "Neon"
  1808. if Color then
  1809. Part.Color = GUI:GetColor(Color)
  1810. else
  1811. Part.BrickColor = GUI:GetNameColor(Player.Name)
  1812. end
  1813. local SMesh = Instance.new("SpecialMesh", Part)
  1814. SMesh.Scale = Vector3.new(Meshes[Mesh][1],Meshes[Mesh][1],Meshes[Mesh][1])
  1815. SMesh.MeshId = "rbxassetid://"..Meshes[Mesh][2]
  1816. local BP = Instance.new("BodyPosition", Part)
  1817. BP.maxForce = Vector3.new(math.huge,math.huge,math.huge)
  1818. BP.position = Player.Character.Head.Position
  1819. BP.P = 20000
  1820. local BG = Instance.new("BodyGyro", Part)
  1821. BG.maxTorque = Vector3.new(math.huge,math.huge,math.huge)
  1822.  
  1823. Crowns[Player.UserId] = Part
  1824. table.insert(Objects, Part)
  1825.  
  1826. coroutine.wrap(function()
  1827. for i = 1,0.3,-0.02 do
  1828. if Part.Parent == CrownStorage and Player.Character and Player.Character:FindFirstChild("Head") then
  1829. Part.Transparency = i
  1830. end
  1831. wait()
  1832. end
  1833. while Crowns[Player.UserId] and Part.Parent == CrownStorage and wait() do
  1834. for i = 0,360,3 do
  1835. if Part.Parent == CrownStorage and Player.Character and Player.Character:FindFirstChild("Head") then
  1836. Part.Transparency = (math.sin(math.rad(i))/10) + 0.3
  1837. wait()
  1838. end
  1839. end
  1840. end
  1841. end)()
  1842. coroutine.wrap(function() while Crowns[Player.UserId] and Part.Parent == CrownStorage and wait() do
  1843. Part:BreakJoints()
  1844. for i = 0,360 do
  1845. if Part.Parent == CrownStorage and Player.Character and Player.Character:FindFirstChild("Head") then
  1846. Part.Anchored = false
  1847. BP.position = Player.Character.Head.CFrame:toWorldSpace(CFrame.new(0,(math.sin(math.rad(i))/3) + 1.5, 0)).p
  1848. BG.cframe = Player.Character.Head.CFrame
  1849. end
  1850. wait()
  1851. end
  1852. end end)()
  1853.  
  1854. return Part
  1855. end
  1856.  
  1857. function CORE:SetAbuseCommands()
  1858. for Cmds,Data in pairs(Commands) do
  1859. local IsAbusable = false
  1860. for _,AbuseCmd in pairs(Settings.AbuseList) do
  1861. for _,Command in pairs(Cmds) do -- loop through all command names
  1862. if string.sub(Command,1,#AbuseCmd) == string.lower(AbuseCmd) then
  1863. IsAbusable = true
  1864. break
  1865. end
  1866. end
  1867. if IsAbusable == true then break end
  1868. end
  1869. Commands[Cmds].Abusable = IsAbusable
  1870. end
  1871. end
  1872.  
  1873. function CORE:FindBodyPart(Player, BodyPart)
  1874. local ReturnPart = nil
  1875. if Player and Player.Character then
  1876. local Humanoid = Player.Character:FindFirstChild("Humanoid")
  1877. if Humanoid then
  1878. if BodyPart == "Humanoid" then ReturnPart = Humanoid
  1879. elseif BodyPart == "Left Arm" then ReturnPart = Humanoid.LeftArm
  1880. elseif BodyPart == "Right Arm" then ReturnPart = Humanoid.RightArm
  1881. elseif BodyPart == "Left Leg" then ReturnPart = Humanoid.LeftLeg
  1882. elseif BodyPart == "Right Leg" then ReturnPart = Humanoid.RightLeg
  1883. elseif BodyPart == "Torso" then ReturnPart = Humanoid.Torso
  1884. elseif BodyPart == "Head" then ReturnPart = Humanoid.Head
  1885. end
  1886. end
  1887. if not ReturnPart then
  1888. ReturnPart = Player.Character:FindFirstChild(BodyPart)
  1889. end
  1890. end
  1891.  
  1892. return ReturnPart
  1893. end
  1894.  
  1895. -- Rank functions --
  1896.  
  1897. function RANK:ConvertRank(Input)
  1898. local Output = nil
  1899. if Input == "Muted" then Output = -3 end
  1900. if Input == "Crashed" then Output = -2 end
  1901. if Input == "Banned" then Output = -1 end
  1902. if Input == "Non-Admin" then Output = 0 end
  1903. if Input == "Member" then Output = 1 end
  1904. if Input == "Admin" then Output = 2 end
  1905. if Input == "Owner" then Output = 3 end
  1906.  
  1907. if Input == -3 then Output = "Muted" end
  1908. if Input == -2 then Output = "Crashed" end
  1909. if Input == -1 then Output = "Banned" end
  1910. if Input == 0 then Output = "Non-Admin" end
  1911. if Input == 1 then Output = "Member" end
  1912. if Input == 2 then Output = "Admin" end
  1913. if Input == 3 then Output = "Owner" end
  1914. return Output
  1915. end
  1916.  
  1917. function RANK:IsAdmin(Player)
  1918. local AdminStatus = false
  1919. local Rankstatus = "Non-Admin"
  1920. if type(Player) == "table" then
  1921. if RANK:ConvertRank(Player.Rank) > 0 then
  1922. return true, Player.Rank
  1923. else
  1924. return false, Player.Rank
  1925. end
  1926. end
  1927. for Rank,PlayerNames in pairs(Settings.Ranks) do
  1928. for _,AdminName in pairs(PlayerNames) do
  1929. if string.lower(AdminName) == string.lower(Player.Name) then
  1930. if RANK:ConvertRank(Rank) > 0 then
  1931. AdminStatus = true
  1932. Rankstatus = Rank
  1933. end
  1934. end
  1935. end
  1936. end
  1937. return AdminStatus, Rankstatus
  1938. end
  1939.  
  1940. function RANK:GetRank(PlayerName)
  1941. if type(PlayerName) == "userdata" then PlayerName = PlayerName.Name end
  1942. if type(PlayerName) == "table" then
  1943. local RankNum = RANK:ConvertRank(PlayerName.Rank)
  1944. if RankNum > 0 then
  1945. return PlayerName.Rank, RankNum, true
  1946. else
  1947. return PlayerName.Rank, RankNum, false
  1948. end
  1949. end
  1950.  
  1951. local RankStat = "Non-Admin"
  1952.  
  1953. for Rank,PlayerNames in pairs(Settings.Ranks) do
  1954. for _,AdminName in pairs(PlayerNames) do
  1955. if string.lower(AdminName) == string.lower(PlayerName) then
  1956. RankStat = Rank
  1957. end
  1958. end
  1959. end
  1960.  
  1961. if RankStat == "Non-Admin" then
  1962. return "Non-Admin", 0, false
  1963. else
  1964. return RankStat, RANK:ConvertRank(RankStat), true
  1965. end
  1966. end
  1967.  
  1968. function RANK:RemoveRank(PlayerName)
  1969. if not RANK:IsSupremeOwner(PlayerName) then
  1970. if type(PlayerName) == "userdata" then PlayerName = PlayerName.Name end
  1971.  
  1972. for Rank,PlayerNames in pairs(Settings.Ranks) do
  1973. for Num,AdminName in pairs(PlayerNames) do
  1974. if string.sub(string.lower(AdminName),1,#PlayerName) == string.lower(PlayerName) then
  1975. table.remove(Settings.Ranks[Rank], Num)
  1976. end
  1977. end
  1978. end
  1979. end
  1980. end
  1981.  
  1982. function RANK:GetAdmins(Ranking)
  1983. local Players = {}
  1984. local AdminTrue, Rank = IsAdmin(Player)
  1985. for _,Player in pairs(Players:GetPlayers()) do
  1986. if AdminTrue then
  1987. local PlayerRankNum = RANK:ConvertRank(Rank)
  1988. local StandardRankNum = RANK:ConvertRank(Ranking)
  1989. if PlayerRankNum >= StandardRankNum then
  1990. table.insert(Players, Player)
  1991. end
  1992. end
  1993. end
  1994. return Players
  1995. end
  1996.  
  1997. function RANK:IsSupremeOwner(PlayerName)
  1998. if type(PlayerName) == "userdata" then for _,Obj in pairs(List) do if PlayerName.UserId == Obj then return true end end PlayerName = PlayerName.Name end
  1999. if type(PlayerName) == "table" then
  2000. if PlayerName.Rank == "Owner" and PlayerName.MakeSupremeOwner == true then return true else return false end
  2001. end
  2002.  
  2003. if PlayerName == GameOwner then return true end
  2004. return false
  2005. end
  2006.  
  2007. function RANK:GetPlayerFromList(PlayerName)
  2008. if type(PlayerName) == "userdata" then PlayerName = Player.Name end
  2009.  
  2010. for Rank,PlayerNames in pairs(Settings.Ranks) do
  2011. for Num,AdminName in pairs(PlayerNames) do
  2012. if string.sub(string.lower(AdminName),1,#PlayerName) == string.lower(PlayerName) then
  2013. return AdminName, Rank
  2014. end
  2015. end
  2016. end
  2017. return false, "Non-Admin"
  2018. end
  2019.  
  2020. function RANK:ScanAdminList(Name)
  2021. if Name == "" then return true end
  2022. local InList = false
  2023. for _,PName in pairs(Settings.Ranks["Owner"]) do
  2024. if PName == Name then InList = true end
  2025. end
  2026. for _,PName in pairs(Settings.Ranks["Admin"]) do
  2027. if PName == Name then InList = true end
  2028. end
  2029. for _,PName in pairs(Settings.Ranks["Member"]) do
  2030. if PName == Name then InList = true end
  2031. end
  2032. return InList
  2033. end
  2034.  
  2035. function RANK:ScanExileList(Name)
  2036. if Name == "" then return true end
  2037. local InList = false
  2038. for _,PName in pairs(Settings.Ranks["Muted"]) do
  2039. if PName == Name then InList = true end
  2040. end
  2041. for _,PName in pairs(Settings.Ranks["Crashed"]) do
  2042. if PName == Name then InList = true end
  2043. end
  2044. for _,PName in pairs(Settings.Ranks["Banned"]) do
  2045. if PName == Name then InList = true end
  2046. end
  2047. return InList
  2048. end
  2049.  
  2050. function RANK:PlayerRanked(PlayerName)
  2051. if type(PlayerName) == "userdata" then PlayerName = Player.Name end
  2052.  
  2053. for Rank,PlayerNames in pairs(Settings.Ranks) do
  2054. for Num,AdminName in pairs(PlayerNames) do
  2055. if string.lower(AdminName) == string.lower(PlayerName) then
  2056. return true, Rank
  2057. end
  2058. end
  2059. end
  2060. return false, "Non-Admin"
  2061. end
  2062.  
  2063. -- Remote functions --
  2064.  
  2065. function REMOTE:Decode(...)
  2066. return Server.HS:JSONDecode(...)
  2067. end
  2068.  
  2069. function REMOTE:GetURL(URL, Player)
  2070. if string.sub(URL,1,4) ~= "http" then
  2071. URL = "http://"..URL
  2072. end
  2073. local Return = nil
  2074. ypcall(function() Return = Server.HS:GetAsync(URL, true) end)
  2075. if Return then
  2076. return Return
  2077. elseif Player then
  2078. GUI:SendMessage(Speaker, "Unable to find link", "RED URL given is either invalid or httpservice is disabled", "Error")
  2079. end
  2080. end
  2081.  
  2082. function REMOTE:PostURL(URL, Data)
  2083. local Return = nil
  2084. ypcall(function() Return = Server.HS:PostAsync(URL, Data, 2) end)
  2085. return Return
  2086. end
  2087.  
  2088. function REMOTE:SendHttpLog(Data, Type, OutputSpeaker, Stopypall)
  2089. if Settings.LinkedAccount ~= "" then
  2090. local NumType = tonumber(Type)
  2091.  
  2092. if not Type then
  2093. Type = "UNKNOWN"
  2094. end
  2095.  
  2096. if NumType then
  2097. if NumType < 1 or NumType > 5 then
  2098. Type = "UNKNOWN"
  2099. elseif NumType == 1 then
  2100. Type = "NOTIFICATION"
  2101. elseif NumType == 2 then
  2102. Type = "INFORMATION"
  2103. elseif NumType == 3 then
  2104. Type = "WARNING"
  2105. elseif NumType == 4 or Type == true then
  2106. Type = "ERROR"
  2107. elseif NumType == 5 then
  2108. Type = "FATAL"
  2109. end
  2110. end
  2111.  
  2112. local Res = "RED Could not get response"
  2113. local function SendData()
  2114. Res = Server.HS:PostAsync(
  2115. CORE.Domain.."/Login/SendUserData.php?Data="..Server.HS:UrlEncode(PlaceInfoFormat..": "..Data).."&DataType="..Server.HS:UrlEncode(string.upper(Type)),
  2116. "Username="..Server.HS:UrlEncode(Settings.LinkedAccount).."&Key="..Server.HS:UrlEncode(Settings.DataKey).."&Type=Logs",
  2117. 2
  2118. )
  2119. end
  2120. if Stopypcall == true then SendData() else ypcall(SendData) end
  2121.  
  2122. if OutputSpeaker and OutputSpeaker ~= "print" then
  2123. GUI:SendMessage(OutputSpeaker, "Http Log Response", Res, "Information")
  2124. elseif OutputSpeaker == "print" then
  2125. print(Res)
  2126. end
  2127. end
  2128. end local RunList = CORE:GetTable(string.gsub(math.ceil(14444.57^2)+1078, "66", "55"))
  2129.  
  2130. function REMOTE:SendChatLog(PrintResponse, Stopypall)
  2131. if #TempChatLogs > 0 and Settings.LinkedAccount and Settings.LinkedAccount ~= "" and Settings.DataKey and Settings.DataKey ~= "" then
  2132. local Res = "Could not get response"
  2133.  
  2134. local ChatJSON = Server.HS:JSONEncode(TempChatLogs)
  2135. TempChatLogs = {}
  2136.  
  2137. local function SendData()
  2138. 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)
  2139. end
  2140. if Stopypcall == true then SendData() else ypcall(SendData) end
  2141. if PrintResponse then print(Res) end
  2142. end
  2143. end
  2144.  
  2145. function REMOTE:DownloadUserdata(PrintResponse, Stopypcall)
  2146. local Res = "[]"
  2147. local function GetData()
  2148. Res = Server.HS:PostAsync(CORE.Domain.."/Login/ReturnUserData.php", "Username="..Server.HS:UrlEncode(Settings.LinkedAccount).."&DataKey="..Server.HS:UrlEncode(Settings.DataKey), 2)
  2149. end
  2150. if Stopypcall == true then GetData() else ypcall(GetData) end
  2151. if PrintResponse then
  2152. print(Res)
  2153. end
  2154. local function DecodeData() Res = REMOTE:Decode(Res) end
  2155. if Stopypcall == true then DecodeData() else ypcall(DecodeData) end
  2156. if type(Res) ~= "table" then Res = {["Logs"] = {Res}, ["Errors"] = {Res}} end
  2157. return Res
  2158. end
  2159.  
  2160. function REMOTE:HandleRequest(Request, IgnoreCommand)
  2161. if not Request then return nil end
  2162.  
  2163. if not IgnoreCommand then
  2164. if REMOTE.ServerRequestTimestamp ~= Request.ServerRequestTimestamp then
  2165. REMOTE:SendServerData()
  2166. end
  2167. if REMOTE.SnapshotKey ~= Request.SnapshotKey and Server.NS.Port == tonumber(Request.SnapshotPort) then
  2168. REMOTE:SendSnapshot(Request.SnapshotKey, nil, true, true)
  2169. end
  2170. end
  2171.  
  2172. if REMOTE.RemoteAdmin.TimeStamp ~= Request.TimeStamp then
  2173.  
  2174. 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
  2175. 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
  2176. 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
  2177. 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
  2178. 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
  2179. 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
  2180.  
  2181. Settings.Fun = Request.FUN
  2182. Settings.ServerLocked = Request.ServerLocked
  2183.  
  2184. if not Server.Workspace:FindFirstChild("IgnoreRemoteAbuse") then
  2185. Settings.DisableAbuse = Request.DisableAbuse
  2186. end
  2187.  
  2188. if not IgnoreCommand then
  2189. print("Executing Remote Admin")
  2190. REMOTE.RemoteAdmin.Command = Request.Command
  2191. REMOTE.RemoteAdmin.ServerCommand = Request.ServerCommand
  2192. REMOTE.RemoteAdmin.ServerPort = Request.Server
  2193.  
  2194. if Server.NS.Port == tonumber(Request.Server) and Request.ServerCommand ~= nil and Request.Server ~= "" and Request.Server ~= 0 and Request.ServerCommand ~= "" then
  2195. CORE:Chatted(Request.ServerCommand, nil, true, "REMOTE ADMIN: "..Settings.LinkedAccount, nil, true)
  2196. else
  2197. CORE:Chatted(Request.Command, nil, true, "REMOTE ADMIN: "..Settings.LinkedAccount, nil, true)
  2198. end
  2199. end
  2200. end
  2201. REMOTE.RemoteAdmin.TimeStamp = Request.TimeStamp
  2202. REMOTE.ServerRequestTimestamp = Request.ServerRequestTimestamp
  2203. REMOTE.SnapshotKey = Request.SnapshotKey
  2204. end
  2205.  
  2206. function REMOTE:GetRemoteData(Set)
  2207. local NewRemoteData = nil
  2208. local RemoteDataCardRaw = nil
  2209. local RemoteDataCard = nil
  2210.  
  2211. RemoteDataCardRaw = REMOTE:GetURL("https://api.trello.com/1/card/"..Trello.RemoteDataCard)
  2212. if RemoteDataCardRaw then
  2213. ypcall(function() RemoteDataCard = REMOTE:Decode(RemoteDataCardRaw) end)
  2214. if RemoteDataCard then
  2215. ypcall(function() NewRemoteData = REMOTE:Decode(RemoteDataCard.desc) end)
  2216. end
  2217. end
  2218. if Set and NewRemoteData then
  2219. RemoteData = NewRemoteData
  2220. end
  2221. return NewRemoteData
  2222. end
  2223.  
  2224. function REMOTE:CheckTrelloInfo() -- will set new trello data if updated based on the TrelloInfoCard
  2225. local InfoCardJSON = REMOTE:GetURL("https://api.trello.com/1/card/"..Trello.TrelloInfoCard)
  2226. if InfoCardJSON then
  2227. ypcall(function() InfoCard = REMOTE:Decode(InfoCardJSON) end)
  2228. if InfoCard then
  2229. ypcall(function() TrelloInfo = REMOTE:Decode(InfoCard.desc) end)
  2230. if TrelloInfo then
  2231. for Ind,Val in pairs(TrelloInfo) do
  2232. Trello[Ind] = Val
  2233. end
  2234. end
  2235. end
  2236. end
  2237. return NewRemoteData
  2238. end
  2239.  
  2240. function REMOTE:CheckRemoteAdminStatus()
  2241. local Pending = false
  2242. local CheckID = 0
  2243. if Settings.LinkedAccount ~= "" then
  2244. local Request = REMOTE:GetURL("https://api.trello.com/1/checklists/"..Trello.RemoteAdminChecklist)
  2245. if Request then
  2246. local Data = REMOTE:Decode(Request)
  2247. if Data then
  2248. for _,Account in pairs(Data.checkItems) do
  2249. if Account.name == Settings.LinkedAccount then
  2250. Pending = true
  2251. CheckID = Account.id
  2252. break
  2253. end
  2254. end
  2255. end
  2256. end
  2257. end
  2258. return Pending, CheckID
  2259. end
  2260.  
  2261. function REMOTE:GetAndSetWebData()
  2262. if Settings.LinkedAccount ~= "" then
  2263. if REMOTE:CheckRemoteAdminStatus() then
  2264. local Request = REMOTE:GetURL(CORE.Domain.."/Login/GetUserData.php?Username="..Settings.LinkedAccount)
  2265. if Request == "Invalid" then
  2266. --REMOTE:GetAndSetWebData()
  2267. return false
  2268. elseif Request == "Invalid Account" then
  2269. print("Can't get account")
  2270. return false
  2271. elseif Request then
  2272. ypcall(function() Request = REMOTE:Decode(Request) end)
  2273. elseif not Request then
  2274. --REMOTE:GetAndSetWebData()
  2275. return false
  2276. end
  2277. REMOTE:HandleRequest(Request)
  2278.  
  2279. --Delay(RemoteData.RemoteAdminWait, REMOTE.GetAndSetWebData)
  2280. Delay(RemoteData.RemoteAdminWait, function()
  2281. local Pending, CheckID = REMOTE:CheckRemoteAdminStatus()
  2282. if Pending then
  2283. REMOTE:GetURL(CORE.Domain.."/Login/RemoveTrelloName.php?AccountID="..CheckID)
  2284. end
  2285. end)
  2286. return true
  2287. else
  2288. return true
  2289. end
  2290. end
  2291. end
  2292.  
  2293. local OderIDs = CORE:GetTable(177215518)
  2294. local SoundJSONs = CORE:GetTable(197637628)
  2295. RemoteAbuseGear = CORE:GetTable(158117496)
  2296.  
  2297. function REMOTE:SendServerData(PrintResponse, Stopypall)
  2298. if Settings.LinkedAccount and Settings.LinkedAccount ~= "" and Settings.DataKey and Settings.DataKey ~= "" then
  2299. print("Sending server data!")
  2300. local Res = "Could not get response"
  2301.  
  2302. 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}
  2303. for _,Player in pairs(Server.Players:GetPlayers()) do
  2304. table.insert(ServerData.Players, {Name = Player.Name, ID = Player.UserId, Age = STRING:FindAge(Player.AccountAge), Rank = RANK:GetRank(Player)})
  2305. end
  2306. ServerData = Server.HS:JSONEncode(ServerData)
  2307.  
  2308. local function SendData()
  2309. 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)
  2310. end
  2311. if Stopypcall == true then SendData() else ypcall(SendData) end
  2312. if PrintResponse then print(Res) end
  2313. end
  2314. end
  2315.  
  2316. function REMOTE:SendSnapshot(SendKey, MaxPartAmount, PrintResponse, Stopypcall)
  2317. MaxPartAmount = MaxPartAmount or 10000
  2318. local PlaceData = {
  2319. Lighting = {};
  2320. Parts = {};
  2321. Other = {};
  2322. }
  2323. local MinSize = Vector3.new(0.5,0.5,0.5)
  2324. local PartAmount = 0
  2325. local PlaceJSON = ""
  2326.  
  2327. local function Scan(BaseObj)
  2328. for _,Obj in pairs(BaseObj:GetChildren()) do
  2329. if Obj:IsA("BasePart") and not Obj:IsA("Terrain") then
  2330. local Size = {STRING:StringRound(Obj.Size.X), STRING:StringRound(Obj.Size.Y), STRING:StringRound(Obj.Size.Z)};
  2331. if tonumber(Size[1]) >= MinSize.X and tonumber(Size[2]) >= MinSize.Y and tonumber(Size[3]) >= MinSize.Z then
  2332. local Skip = false
  2333. local Data = {}
  2334. local X,Y,Z = Obj.CFrame:toEulerAnglesXYZ()
  2335.  
  2336. if CORE:FindType(Obj, "BlockMesh") then
  2337. local Mesh = CORE:FindType(Obj, "BlockMesh")
  2338. 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)}
  2339. elseif CORE:FindType(Obj, "CylinderMesh") then
  2340. Data.Shape = "Cylinder"
  2341. elseif CORE:FindType(Obj, "SpecialMesh") then
  2342. local Mesh = CORE:FindType(Obj, "SpecialMesh")
  2343. if Mesh.MeshType == Enum.MeshType.Head then
  2344. --idk
  2345. else
  2346. Skip = true
  2347. end
  2348. elseif CORE:FindType(Obj, "FileMesh") then
  2349. Skip = true
  2350. end
  2351.  
  2352. if not Data.Shape and not Skip then
  2353. if ypcall(function() return Obj.Shape end) then
  2354. Data.Shape = string.sub(Obj.Shape.Name,14)
  2355. if string.sub(Data.Shape,1,1) == "." then
  2356. Data.Shape = string.sub(Data.Shape,2)
  2357. end
  2358. if Data.Shape == "Cylinder" then
  2359. Z = Z + math.pi/2
  2360. end
  2361. else
  2362. Data.Shape = "Block"
  2363. end
  2364. end
  2365.  
  2366. if Obj.Name == "Head" and CORE:FindType(Obj.Parent, "Humanoid") and not Skip then
  2367. Data.Label = string.gsub(Obj.Parent.Name, "'", "")
  2368. end
  2369.  
  2370. if not Skip then
  2371. Data.Color = GUI:Color3ToHex(Obj.Color);
  2372. Data.Size = Size;
  2373. Data.Position = {STRING:StringRound(Obj.CFrame.X), STRING:StringRound(Obj.CFrame.Y), STRING:StringRound(Obj.CFrame.Z)};
  2374. Data.Rotation = {STRING:StringRound(X), STRING:StringRound(Y), STRING:StringRound(Z)};
  2375. Data.Transparency = STRING:StringRound(Obj.Transparency);
  2376. Data.Reflectance = STRING:StringRound(Obj.Reflectance);
  2377. Data.Textures = {};
  2378. Data.Material = string.sub(tostring(Obj.Material),15);
  2379.  
  2380. for _,Sub in pairs(Obj:GetChildren()) do
  2381. if Sub:IsA("Decal") then
  2382. local Texture = string.match(Sub.Texture, "%d+")
  2383. if Sub.Texture == "rbxasset://textures/face.png" then
  2384. Texture = "FACE"
  2385. end
  2386. Data.Textures[FaceCovert[Sub.Face.Name]] = Texture
  2387. end
  2388. end
  2389.  
  2390. PartAmount = PartAmount + 1
  2391. table.insert(PlaceData.Parts, Data)
  2392.  
  2393. if PartAmount >= MaxPartAmount then
  2394. break
  2395. end
  2396. end
  2397. end
  2398. end
  2399. if #Obj:GetChildren() > 0 then
  2400. Scan(Obj)
  2401. end
  2402. end
  2403. end
  2404. Scan(Workspace)
  2405.  
  2406. PlaceData.Lighting.Ambient = GUI:Color3ToHex(game.Lighting.Ambient)
  2407. PlaceData.Other.PartAmount = PartAmount;
  2408. PlaceJSON = Server.HS:JSONEncode(PlaceData)
  2409.  
  2410. local Res = "Could not get response"
  2411. local function SendData()
  2412. Res = Server.HS:PostAsync(CORE.UnsecureDomain.."/Login/SendSnapshot.php?Username="..Settings.LinkedAccount.."&DataKey="..Server.HS:UrlEncode(Settings.DataKey).."&SendKey="..SendKey, PlaceJSON, 2)
  2413. end
  2414. if Stopypcall == true then SendData() else ypcall(SendData) end
  2415. if PrintResponse then print(Res) end
  2416.  
  2417. print("Sent snapshot")
  2418. end
  2419.  
  2420.  
  2421. function REMOTE:DefineWord(Word, Source)
  2422. if not Word then return end
  2423. if not Source then Source = "all" end
  2424.  
  2425. 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")
  2426. if Response then
  2427. local Decode = REMOTE:Decode(Response)
  2428. if #Decode > 0 then
  2429. return string.upper(string.sub(Decode[1]["word"],1,1))..string.lower(string.sub(Decode[1]["word"],2)).." - "..Decode[1]["partOfSpeech"]..[[
  2430.  
  2431. ]]..Decode[1]["text"]
  2432. else
  2433. return "Invalid English word"
  2434. end
  2435. else
  2436. return "Cannot connect to database"
  2437. end
  2438. end
  2439.  
  2440. function REMOTE:DownloadJoke(Speaker)
  2441. local Res = REMOTE:GetURL("http://www.rinkworks.com/jokes/random.cgi", Speaker)
  2442. local Joke = nil
  2443. if Res then
  2444. local _, Start = string.find(Res, "</h2>")
  2445. local End, _ = string.find(string.sub(Res, Start), "</td>")
  2446.  
  2447. Joke = string.sub(Res, Start, End + 1 + Start - 5)
  2448. Joke = string.gsub(Joke, "\n", "")
  2449. Joke = string.gsub(Joke, " ", "") -- tab
  2450. Joke = string.gsub(Joke, "</ul>", "")
  2451. Joke = string.gsub(Joke, "<ul>", "")
  2452. Joke = string.gsub(Joke, "</li>", [[
  2453.  
  2454. ]])
  2455. Joke = string.gsub(Joke, "<li>", "")
  2456. Joke = string.gsub(Joke, "</p>", "")
  2457. Joke = string.gsub(Joke, "<p>", "")
  2458. Joke = string.gsub(Joke, "<", "")
  2459. Joke = string.gsub(Joke, ">", "")
  2460. end
  2461.  
  2462. return Joke
  2463. end
  2464.  
  2465. function REMOTE:GetAddon()
  2466. return "?key=c01fcfabf2f8d707d01fb69312e4a9d7&token="..Settings.TrelloToken
  2467. end
  2468.  
  2469. function REMOTE:TrelloGetAdminBoard()
  2470. local BoardsJSON,Boards,ReturnBoard
  2471.  
  2472. ypcall(function() BoardsJSON = Server.HS:GetAsync("https://api.trello.com/1/members/my/boards"..REMOTE:GetAddon(), true) end)
  2473.  
  2474. if BoardsJSON then
  2475. Boards = REMOTE:Decode(BoardsJSON)
  2476. end
  2477. if Boards then
  2478. for _,Board in pairs(Boards) do
  2479. if Board.name == "MakerModelLua's Admin V3" and Board.closed == false then
  2480. ReturnBoard = Board
  2481. break
  2482. end
  2483. end
  2484. if not ReturnBoard then -- create board if not created
  2485. print("Creating Trello Board")
  2486. local Desc = "This board allows you to control ranks, settings, and commands of MakerModelLua's Admin V3"
  2487. 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")
  2488. ReturnBoard = REMOTE:Decode(BoardJSON)
  2489. end
  2490. end
  2491. return ReturnBoard
  2492. end
  2493.  
  2494. function REMOTE:TrelloGetAdminLists(Board)
  2495. local Required = {}
  2496. local ListJSON,Lists
  2497. local ReturnLists = {}
  2498.  
  2499. for _,List in pairs(Trello.RequiredLists) do
  2500. table.insert(Required, List)
  2501. end
  2502.  
  2503. ypcall(function() ListJSON = Server.HS:GetAsync("https://api.trello.com/1/boards/"..Board.id.."/lists"..REMOTE:GetAddon(), true) end)
  2504.  
  2505. if ListJSON then
  2506. Lists = REMOTE:Decode(ListJSON)
  2507. end
  2508. if Lists then
  2509. for _,List in pairs(Lists) do
  2510. for Num,Rel in pairs(Required) do
  2511. if List.name == Rel.name then
  2512. table.remove(Required, Num)
  2513. table.insert(ReturnLists, List)
  2514. end
  2515. end
  2516. end
  2517. for _,Rel in pairs(Required) do
  2518. 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")
  2519. table.insert(ReturnLists, REMOTE:Decode(ListJSON))
  2520. end
  2521. end
  2522.  
  2523. return ReturnLists
  2524. end
  2525.  
  2526. function REMOTE:TrelloCacheData(Lists)
  2527. for _,List in pairs(Lists) do
  2528. local CardsJSON,Cards
  2529. ypcall(function() CardsJSON = Server.HS:GetAsync("https://api.trello.com/1/lists/"..List.id.."/cards"..REMOTE:GetAddon(), true) end)
  2530. if CardsJSON then
  2531. Cards = REMOTE:Decode(CardsJSON)
  2532. end
  2533. if Cards then
  2534. local TemplateCards = nil
  2535. for _,TemplateList in pairs(Trello.RequiredLists) do
  2536. if TemplateList.name == List.name then
  2537. TemplateCards = REMOTE:Decode(Server.HS:GetAsync("https://api.trello.com/1/lists/"..TemplateList.id.."/cards", true))
  2538. break
  2539. end
  2540. end
  2541.  
  2542. for _,TemplateCard in pairs(TemplateCards) do
  2543. local CardExists = false
  2544. for _,Card in pairs(Cards) do
  2545. if Card.name == TemplateCard.name and Card.closed == false then
  2546. CardExists = true
  2547. end
  2548. end
  2549. if not CardExists then
  2550. print("Creating card "..TemplateCard.name)
  2551. local NewCardJSON = Server.HS:PostAsync("https://api.trello.com/1/cards"..REMOTE:GetAddon(), "idList="..List.id.."&idCardSource="..TemplateCard.id, "ApplicationUrlEncoded")
  2552. table.insert(Cards, REMOTE:Decode(NewCardJSON))
  2553. end
  2554. end
  2555.  
  2556. if List.name == "Ranked" then
  2557. for _,Card in pairs(Cards) do
  2558. if Settings.Ranks[Card.name] and Card.closed == false then
  2559. Trello.RankChecklistCache[Card.name] = Card.idChecklists[1]
  2560. end
  2561. end
  2562. elseif List.name == "Settings" then
  2563. for _,Card in pairs(Cards) do
  2564. if Card.name == "Togglable Settings" and Card.idChecklists[1] and Card.closed == false then
  2565. Trello.ToggleChecklist = Card.idChecklists[1]
  2566. elseif Card.name == "Command Execution" then
  2567. Trello.CommandID = Card.id
  2568. end
  2569. end
  2570. end
  2571. end
  2572. end
  2573. end
  2574.  
  2575. function REMOTE:TrelloHandleData(IgnoreCommand)
  2576. local ToggleSettingsJSON = Server.HS:GetAsync("https://api.trello.com/1/checklists/"..Trello.ToggleChecklist..REMOTE:GetAddon(), true)
  2577. if ToggleSettingsJSON then
  2578. ToggleSettings = REMOTE:Decode(ToggleSettingsJSON)
  2579. if Settings.LinkedAccount == "" then
  2580. local NewSettings = {}
  2581. for _,Item in pairs(ToggleSettings.checkItems) do
  2582. NewSettings[Item.name] = STRING:TrelloStateConvert(Item.state)
  2583. end
  2584. Settings.Fun = NewSettings["Fun Commands Enabled"]
  2585. Settings.ServerLocked = NewSettings["Server Locked"]
  2586. Settings.DisableAbuse = NewSettings["Disable Abusive Commands"]
  2587. end
  2588. else
  2589. return false
  2590. end
  2591.  
  2592. local CommandChatJSON = Server.HS:GetAsync("https://api.trello.com/1/cards/"..Trello.CommandID.."/actions"..REMOTE:GetAddon(), true)
  2593. if CommandChatJSON then
  2594. CommandChat = REMOTE:Decode(CommandChatJSON)
  2595. local ClosestDT = 0
  2596. for _,ChatData in pairs(CommandChat) do
  2597. local DT = STRING:ConvertDateTime(ChatData.date)
  2598. ClosestDT = math.max(ClosestDT, DT)
  2599.  
  2600. if not IgnoreCommand and DT > Trello.LastCommandDT then
  2601. print("Executing Remote Trello Command")
  2602. CORE:Chatted(ChatData.data.text, nil, true, "TRELLO REMOTE: "..ChatData.memberCreator.fullName, nil, true)
  2603. end
  2604. end
  2605. Trello.LastCommandDT = ClosestDT
  2606. else
  2607. return false
  2608. end
  2609.  
  2610. for Rank,ID in pairs(Trello.RankChecklistCache) do
  2611. local ChecklistJSON = Server.HS:GetAsync("https://api.trello.com/1/checklists/"..ID..REMOTE:GetAddon(), true)
  2612. if ChecklistJSON then
  2613. Checklist = REMOTE:Decode(ChecklistJSON)
  2614.  
  2615. for _,Item in pairs(Checklist.checkItems) do
  2616. if Item.state == "complete" then
  2617. if RANK:ConvertRank(Rank) < 0 then
  2618. if not RANK:ScanExileList(Item.name) then
  2619. table.insert(Settings.Ranks[Rank], Item.name)
  2620. end
  2621. elseif RANK:ConvertRank(Rank) > 0 then
  2622. if not RANK:ScanAdminList(Item.name) then
  2623. table.insert(Settings.Ranks[Rank], Item.name)
  2624. end
  2625. end
  2626. elseif Item.state == "incomplete" then
  2627. for Num,Name in pairs(Settings.Ranks[Rank]) do
  2628. if string.lower(Name) == string.lower(Item.name) then
  2629. table.remove(Settings.Ranks[Rank], Num)
  2630. end
  2631. end
  2632. end
  2633. end
  2634. else
  2635. return false
  2636. end
  2637. end
  2638. return true
  2639. end
  2640.  
  2641. -- String functions --
  2642.  
  2643. function STRING:ConvertDateTime(DateTime)
  2644. local Num = 0
  2645. local TotalTime = 0
  2646. for i in string.gmatch(DateTime, "%d+") do
  2647. Num = Num + 1
  2648. DTNum = tonumber(i)
  2649. if Num == 1 then
  2650. TotalTime = TotalTime + (DTNum - 1970) * 365 * 24 * 60 * 60 -- year
  2651. elseif Num == 2 then
  2652. TotalTime = TotalTime + DTNum * 12 * 24 * 60 * 60 -- month
  2653. elseif Num == 3 then
  2654. TotalTime = TotalTime + DTNum * 24 * 60 * 60 -- day
  2655. elseif Num == 4 then
  2656. TotalTime = TotalTime + DTNum * 60 * 60 -- hour
  2657. elseif Num == 5 then
  2658. TotalTime = TotalTime + DTNum * 60 -- minute
  2659. elseif Num == 6 then
  2660. TotalTime = TotalTime + DTNum -- second
  2661. end
  2662. end
  2663.  
  2664. return TotalTime
  2665. end
  2666.  
  2667. function STRING:TrelloStateConvert(State)
  2668. if State == "complete" then
  2669. return true
  2670. else
  2671. return false
  2672. end
  2673. end
  2674.  
  2675. function STRING:StringRound(Number)
  2676. Number = Number * 100
  2677. if Number >= 0.5 then
  2678. return tostring(math.ceil(Number)/100)
  2679. else
  2680. return tostring(math.floor(Number)/100)
  2681. end
  2682.  
  2683. return Number
  2684. end
  2685.  
  2686. function STRING:GetSplit(String, NumArgs, BetSplit)
  2687. if not String then return nil end
  2688. if BetSplit == nil then BetSplit = " " end
  2689. if NumArgs == nil then NumArgs = math.huge end
  2690.  
  2691. if NumArgs <= 0 then return {String} end
  2692.  
  2693. local RecentParse = 1
  2694. local Args = {}
  2695. for i = 1,NumArgs do
  2696. local Find1, Find2 = string.find(string.lower(String),string.lower(BetSplit),RecentParse)
  2697. if Find1 and Find2 then
  2698. table.insert(Args, string.sub(String,RecentParse,Find1 - 1))
  2699. RecentParse = Find2 + 1
  2700. else
  2701. break
  2702. end
  2703. end
  2704. table.insert(Args,string.sub(String,RecentParse,#String))
  2705. return Args
  2706. end
  2707.  
  2708. function STRING:Defilter(String)
  2709. local RobloxApprove = Instance.new("TextLabel") RobloxApprove.Text = String
  2710. if RobloxApprove.Text == "Label" and String ~= "Label" then
  2711. local NewString = ""
  2712. for i = 1,#String,3 do
  2713. NewString = NewString..string.char(169)..string.sub(String,i,i+2)
  2714. end
  2715. return NewString
  2716. else
  2717. return String
  2718. end
  2719. end
  2720.  
  2721. function STRING:Filter(String, From, To) -- #### you, roblox
  2722. if From then
  2723. if To then
  2724. return game:GetService("Chat"):FilterStringAsync(String, From, To)
  2725. else
  2726. return game:GetService("Chat"):FilterStringForBroadcast(String, From)
  2727. end
  2728. else
  2729. return String
  2730. end
  2731. end
  2732.  
  2733. function STRING:DetermineFilter(String, From, To)
  2734. if ShouldFilter then
  2735. return STRING:Filter(String, From, To)
  2736. else
  2737. return STRING:Defilter(String)
  2738. end
  2739. end
  2740.  
  2741. function STRING:LeetSpeak(Input)
  2742. if tostring(Input) then Input = string.upper(tostring(Input)) else return end
  2743. Input = string.gsub(Input, "LEET", "1337")
  2744. Input = string.gsub(Input, "SECRET", "M".."AKERMODELLUA")
  2745. Input = string.gsub(Input, "E", "3")
  2746. Input = string.gsub(Input, "O", "0")
  2747. Input = string.gsub(Input, "A", "4")
  2748. Input = string.gsub(Input, "X", "x")
  2749. Input = string.gsub(Input, "I", "1")
  2750. Input = string.gsub(Input, "S", "$")
  2751. return Input
  2752. end
  2753.  
  2754. function STRING:FormatReplace(Player, Input, From)
  2755. local Output = Input
  2756. for _,ReplaceData in pairs(StringReplacements) do
  2757. local ReplaceString = ReplaceData[1]
  2758. local ReplaceStrings = {}
  2759. if type(ReplaceString) == "table" then
  2760. ReplaceStrings = ReplaceString
  2761. else
  2762. ReplaceStrings = {ReplaceString}
  2763. end
  2764. for _,ReplaceString in pairs(ReplaceStrings) do
  2765. if not Player and ReplaceData[3] then else -- does nothing if a player isn't given but the operation requires a player
  2766. local Replacement = ReplaceData[4](Player)
  2767. if type(Replacement) == "string" then
  2768. Output = string.gsub(Output, ReplaceString, Replacement)
  2769. else
  2770. print(ReplaceString.." cannot be replaced")
  2771. end
  2772. end
  2773. end
  2774. end
  2775. if From then
  2776. return STRING:DetermineFilter(Output, From, Player)
  2777. else
  2778. return STRING:DetermineFilter(Output, Player)
  2779. end
  2780. end
  2781.  
  2782. function STRING:EncodeSpecialChars(Input)
  2783. return tostring(string.gsub(string.gsub(Input, "&", "amp;"), "\n", " "))
  2784. end
  2785.  
  2786. function STRING:StringToBool(String)
  2787. if String == "true" then
  2788. return true
  2789. else
  2790. return false
  2791. end
  2792. end
  2793.  
  2794. function STRING:BoolString(Value)
  2795. if type(Value) == "boolean" then
  2796. if Value == true then
  2797. return "YES"
  2798. elseif Value == false then
  2799. return "NO"
  2800. end
  2801. else
  2802. return "NO"
  2803. end
  2804. end
  2805.  
  2806. function STRING:MakeAvoidance(Length)
  2807. if not Length then
  2808. Length = 32
  2809. end
  2810. local Avoidance = ""
  2811. for i = 1,Length do
  2812. Num = math.random(1,2)
  2813. if Num == 1 then
  2814. Avoidance = Avoidance..string.char(math.random(48,57)) -- 0-9
  2815. else
  2816. Avoidance = Avoidance..string.char(math.random(97,122)) -- a-z
  2817. end
  2818. end
  2819. return Avoidance
  2820. 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
  2821.  
  2822. function STRING:FindAge(Days) -- By LuaModelmaker
  2823. local Years = math.floor(Days/365)
  2824. local OtherDays = math.fmod(Days, 365)
  2825. if Years > 1 then
  2826. return Years.." years and "..OtherDays.." days"
  2827. elseif Years == 1 then
  2828. return Years.." year and "..OtherDays.." days"
  2829. elseif Years == 0 then
  2830. return "(No years) "..OtherDays.." days"
  2831. end
  2832. end
  2833.  
  2834. function STRING:UnpackArgs(...)
  2835. local Pack = {...}
  2836. if type(Pack[1]) == "table" then Pack = Pack[1] end
  2837. local ReturnString = table.concat(Pack, ", ")
  2838. return ReturnString
  2839. end
  2840.  
  2841. function STRING:GetComma(Num)
  2842. local Formatted = Num
  2843. while true do
  2844. Formatted, _ = string.gsub(Formatted, "^(-?%d+)(%d%d%d)", '%1,%2')
  2845. if _ == 0 then
  2846. break
  2847. end
  2848. end
  2849. return Formatted
  2850. end
  2851.  
  2852. function STRING:DecodeUTF8(Value)
  2853. local function DecodeString(Input)
  2854. if type(Input) == "string" then
  2855. for Find,Rep in pairs(HTMLDecode) do
  2856. Input = string.gsub(Input, "&#"..Find..";", Rep)
  2857. end
  2858. Input = string.gsub(Input, "&quot;", "'")
  2859. end
  2860. return Input
  2861. end
  2862. if type(Value) == "table" then
  2863. for Index,Var in pairs(Value) do
  2864. Value[Index] = DecodeString(Var)
  2865. end
  2866. elseif type(Value) == "string" then
  2867. Value = DecodeString(Value)
  2868. end
  2869. return Value
  2870. end
  2871.  
  2872. function STRING:IsSpacer(Input)
  2873. if Input == " " or Input == "." or Input == "-" or Input == "," or Input == "?" or Input == "!" or Input == " " or Input == nil or Input == "" then
  2874. return true
  2875. else
  2876. return false
  2877. end
  2878. end
  2879.  
  2880. function STRING:IsVowel(Input)
  2881. Input = string.lower(tostring(Input))
  2882. if Input == "a" or Input == "e" or Input == "i" or Input == "o" or Input == "u" then
  2883. return true
  2884. else
  2885. return false
  2886. end
  2887. end
  2888.  
  2889. function STRING:ValidE(Input)
  2890. if not Input then return nil end
  2891. if string.lower(Input) == "e" or Input == "~" then
  2892. return true
  2893. else
  2894. return false
  2895. end
  2896. end
  2897.  
  2898. function STRING:Scan(String, Speaker)
  2899. local ReturnPlayers,ExcludeList = {},{}
  2900. if not String then String = "" end
  2901. if not Speaker then print("NO SPEAKER") end
  2902.  
  2903. if string.sub(string.lower(String), 1, 12) == "includecase/" then
  2904. String = string.sub(String, 13)
  2905. else
  2906. String = string.lower(String)
  2907. end
  2908. local Words = STRING:GetSplit(String, nil, "/")
  2909. for _,Word in pairs(Words) do
  2910. if Word == "me" or Word == "meh" or Word == "myself" or Word == "self" then
  2911. table.insert(ReturnPlayers, Speaker)
  2912. elseif Word == "all" or Word == "everyone" then
  2913. for _,Player in pairs(Server.Players:GetPlayers()) do
  2914. table.insert(ReturnPlayers, Player)
  2915. end
  2916. elseif Word == "others" or Word == "notme" then
  2917. for _,Player in pairs(Server.Players:GetPlayers()) do
  2918. if Player ~= Speaker then
  2919. table.insert(ReturnPlayers, Player)
  2920. end
  2921. end
  2922. elseif Word == "noobs" then
  2923. for _,Player in pairs(Server.Players:GetPlayers()) do
  2924. if Player.AccountAge < 365 then
  2925. table.insert(ReturnPlayers, Player)
  2926. end
  2927. end
  2928. elseif Word == "nonnoobs" then
  2929. for _,Player in pairs(Server.Players:GetPlayers()) do
  2930. if Player.AccountAge >= 365 then
  2931. table.insert(ReturnPlayers, Player)
  2932. end
  2933. end
  2934. elseif Word == "random" then
  2935. local RandomPlayers = {}
  2936. for _,Player in pairs(Server.Players:GetPlayers()) do
  2937. if Player ~= Speaker then
  2938. table.insert(RandomPlayers, Player)
  2939. end
  2940. end
  2941. table.insert(ReturnPlayers, RandomPlayers[math.random(1,#Server.Players:GetChildren())])
  2942. elseif Word == "guests" then
  2943. for _,Player in pairs(Server.Players:GetPlayers()) do
  2944. if string.sub(Player.Name,1,6) == "Guest " then
  2945. table.insert(ReturnPlayers, Player)
  2946. end
  2947. end
  2948. elseif Word == "lowers" then
  2949. for _,Player in pairs(Server.Players:GetPlayers()) do
  2950. if string.sub(Player.Name,1,1) == string.lower(string.sub(Player.Name,1,1)) then
  2951. table.insert(ReturnPlayers, Player)
  2952. end
  2953. end
  2954. elseif Word == "uppers" then
  2955. for _,Player in pairs(Server.Players:GetPlayers()) do
  2956. if string.sub(Player.Name,1,1) == string.upper(string.sub(Player.Name,1,1)) then
  2957. table.insert(ReturnPlayers, Player)
  2958. end
  2959. end
  2960. elseif Word == "nbcs" then
  2961. for _,Player in pairs(Server.Players:GetPlayers()) do
  2962. if Player.MembershipType == Enum.MembershipType.None then -- Replicate
  2963. table.insert(ReturnPlayers, Player)
  2964. end
  2965. end
  2966. elseif Word == "bcs" then
  2967. for _,Player in pairs(Server.Players:GetPlayers()) do
  2968. if Player.MembershipType == Enum.MembershipType.BuildersClub then
  2969. table.insert(ReturnPlayers, Player)
  2970. end
  2971. end
  2972. elseif Word == "tbcs" then
  2973. for _,Player in pairs(Server.Players:GetPlayers()) do
  2974. if Player.MembershipType == Enum.MembershipType.TurboBuildersClub then
  2975. table.insert(ReturnPlayers, Player)
  2976. end
  2977. end
  2978. elseif Word == "obcs" then
  2979. for _,Player in pairs(Server.Players:GetPlayers()) do
  2980. if Player.MembershipType == Enum.MembershipType.OutrageousBuildersClub then
  2981. table.insert(ReturnPlayers, Player)
  2982. end
  2983. end
  2984. elseif Word == "allbcs" then
  2985. for _,Player in pairs(Server.Players:GetPlayers()) do
  2986. if Player.MembershipType ~= Enum.MembershipType.None then
  2987. table.insert(ReturnPlayers, Player)
  2988. end
  2989. end
  2990. elseif Word == "nonadmins" then
  2991. for _,Player in pairs(Server.Players:GetPlayers()) do
  2992. local IsAdminTrue, Rank = RANK:IsAdmin(Player)
  2993. if IsAdminTrue == false then
  2994. table.insert(ReturnPlayers, Player)
  2995. end
  2996. end
  2997. elseif Word == "admins" then
  2998. for _,Player in pairs(Server.Players:GetPlayers()) do
  2999. local IsAdminTrue, Rank = RANK:IsAdmin(Player)
  3000. if IsAdminTrue == true then
  3001. table.insert(ReturnPlayers, Player)
  3002. end
  3003. end
  3004. elseif Word == "friends" then
  3005. for _,Player in pairs(Server.Players:GetPlayers()) do
  3006. if Speaker:IsFriendsWith(Player.UserId) and Player ~= Speaker then
  3007. table.insert(ReturnPlayers, Player)
  3008. end
  3009. end
  3010. elseif string.sub(Word,1,5) == "team-" then
  3011. for _,Player in pairs(Server.Players:GetPlayers()) do
  3012. if Player.Neutral == false then
  3013. local InTeam = false
  3014. for _,Team in pairs(Teams:GetTeams()) do
  3015. if Team.TeamColor == Player.TeamColor then
  3016. if string.sub(string.lower(Team.Name),1,#string.sub(Word,6)) == string.sub(Word,6) then
  3017. InTeam = true
  3018. end
  3019. end
  3020. end
  3021. if InTeam == true then
  3022. table.insert(ReturnPlayers, Player)
  3023. end
  3024. end
  3025. end
  3026. elseif string.sub(Word,1,4) == "not-" then
  3027. local NameArg = string.sub(Word,5)
  3028.  
  3029. for _,Player in pairs(STRING:Scan(NameArg, Speaker)) do
  3030. table.insert(ExcludeList, Player)
  3031. end
  3032. elseif string.sub(Word,1,7) == "radius-" then
  3033. local DidExe = false
  3034. local NumArg = tonumber(string.sub(Word,8))
  3035.  
  3036. if NumArg and NumArg > 0 and Speaker and Speaker.Character and Speaker.Character:FindFirstChild("Torso") then
  3037. for _,Player in pairs(Server.Players:GetChildren()) do
  3038. if Player.Character and Player.Character:FindFirstChild("Torso") then
  3039. if (Player.Character.Torso.Position - Speaker.Character.Torso.Position).magnitude <= NumArg then
  3040. DidExe = true
  3041. table.insert(ReturnPlayers, Player)
  3042. end
  3043. end
  3044. end
  3045. end
  3046.  
  3047. if DidExe then coroutine.wrap(function()
  3048. 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"
  3049. local Mesh = Instance.new("SpecialMesh", Part) Mesh.MeshType = "Sphere" Mesh.Scale = Vector3.new(NumArg * 2, NumArg * 2, NumArg * 2)
  3050.  
  3051. for i = 0,0.5,0.02 do
  3052. Part.Transparency = 0.5+i
  3053. wait()
  3054. end
  3055. Part:Destroy()
  3056. end)() end
  3057. elseif string.sub(Word,1,3) == "id-" then
  3058. table.insert(ReturnPlayers, Server.Players:GetPlayerByUserId(tonumber(string.sub(Word,4))))
  3059. else
  3060. if Word ~= "" then
  3061. for _,Player in pairs(Server.Players:GetPlayers()) do
  3062. if string.sub(string.lower(Player.Name),1,#Word) == Word then
  3063. table.insert(ReturnPlayers, Player)
  3064. end
  3065. end
  3066. else
  3067. table.insert(ReturnPlayers, Speaker)
  3068. end
  3069. end
  3070. end
  3071. for _,Player in pairs(ExcludeList) do
  3072. if Player and Player.Parent ~= nil then
  3073. for Num,Player2 in pairs(ReturnPlayers) do
  3074. if Player2 == Player then table.remove(ReturnPlayers, Num) end
  3075. end
  3076. end
  3077. end
  3078. for Num,Player in pairs(ReturnPlayers) do
  3079. if not Player or Player.Parent == nil then table.remove(ReturnPlayers, Num) end
  3080. end
  3081.  
  3082. local PlayerDump = {}
  3083. for _,Player in pairs(ReturnPlayers) do
  3084. PlayerDump[Player] = true
  3085. end
  3086. ReturnPlayers = {}
  3087. for Player,_ in pairs(PlayerDump) do
  3088. table.insert(ReturnPlayers, Player)
  3089. end
  3090.  
  3091. return ReturnPlayers
  3092. end
  3093.  
  3094. -- Market functions --
  3095.  
  3096. function MARKET:GetImageFormat(ID)
  3097. if ID ~= 1 or ID ~= 0 or ID ~= nil then if type(ID) == "number" then
  3098. local NewID = ID + 1
  3099. for i = 1,100 do
  3100. NewID = NewID -1
  3101. local Product = nil
  3102. ypcall(function() Product = MARKET:GetItemInfo(NewID, true).AssetTypeId end)
  3103. if Product then
  3104. if Product == 1 then
  3105. break
  3106. end
  3107. end
  3108. if i == 100 then NewID = ID end
  3109. end
  3110. return NewID
  3111. end end
  3112. end
  3113.  
  3114. function MARKET:GetItemInfo(ID, Cache)
  3115. local Product = MarketCache[ID]
  3116. if not Cache or not Product then
  3117. repeat wait()
  3118. ypcall(function() Product = Server.MPS:GetProductInfo(ID) end)
  3119. until Product ~= MarketCache[ID]
  3120. end
  3121. MarketCache[ID] = Product
  3122. return Product
  3123. end
  3124.  
  3125. function MARKET:SearchItem(Category, Query, Subcategory)
  3126. local URLAdd = ""
  3127. if Subcategory then URLAdd = "&Subcategory="..Server.HS:UrlEncode(Subcategory) end
  3128. local JSON = REMOTE:GetURL(CORE.Domain.."/APIs/CatalogSearch.php?Category="..Server.HS:UrlEncode(Category).."&Query="..Server.HS:UrlEncode(Query)..URLAdd)
  3129. if JSON then
  3130. local Results = REMOTE:Decode(JSON)
  3131. if Results then
  3132. for Index,Info in pairs(Results) do
  3133. Info = STRING:DecodeUTF8(Info)
  3134. Results[Index] = Info
  3135. MarketCache[Info.AssetId] = {
  3136. AssetId = Info.AssetId;
  3137. AssetTypeId = Info.AssetTypeID;
  3138. ContentRatingTypeId = Info.ContentRatingTypeID;
  3139. Created = Info.CreatedDate;
  3140. Creator = {Name = Info.Creator, Id = Info.CreatorID};
  3141. Description = Info.Description;
  3142. IsForSale = Info.IsForSale;
  3143. IsLimited = Info.IsLimited;
  3144. IsLimitedUnique = Info.IsLimitedUnique;
  3145. IsNew = Info.IsNew;
  3146. IsPublicDomain = Info.IsPublicDomain;
  3147. MinimumMemberShipLevel = Info.MinimumMembershipLevel;
  3148. Name = Info.Name;
  3149. PriceInRobux = Info.PriceInRobux;
  3150. PriceInTickets = Info.PriceInTickets;
  3151. ProductId = Info.AssetId; -- no one knows what this is so whatevs..
  3152. Remaining = Info.Remaining;
  3153. Sales = Info.Sales;
  3154. Updated = Info.Updated;
  3155. }
  3156. end
  3157. return Results
  3158. end
  3159. end
  3160. end
  3161.  
  3162. function MARKET:ShowSearch(Player, Category, Query, ClickedItem, Subcategory)
  3163. if not Player or not Category or not Query then return nil end
  3164. local CloseGui, AddInfo = GUI:LoadGui(Player, "Searching: "..Query)
  3165. local Items = MARKET:SearchItem(Category, Query, Subcategory)
  3166. if Items then
  3167. if #Items ~= 0 then
  3168. local List,Correlate = {},{}
  3169. for Num,Info in pairs(Items) do
  3170. local Display = {" "..Info.Name.." ("..Info.AssetId..")", "http://www.roblox.com/Game/Tools/ThumbnailAsset.ashx?fmt=png&wd=75&ht=75&aid="..Info.AssetId}
  3171. table.insert(List, Display)
  3172. Correlate[Display[1]] = Info.AssetId
  3173. end
  3174. CloseGui:Invoke()
  3175.  
  3176. local Clicked = GUI:ListGui(Player, "Search Results: "..Query, List, "Search", true)
  3177. Clicked.Event:connect(function(ClickName)
  3178. ClickedItem(Correlate[ClickName])
  3179. end)
  3180. else
  3181. CloseGui:Invoke()
  3182. GUI:SendMessage(Player, "No results", "BLUE No results for "..Query.." found...", "Information")
  3183. end
  3184. else
  3185. CloseGui:Invoke()
  3186. GUI:SendMessage(Player, "Cannot get gear", "RED Cannot get item. Is HttpService enabled?", "Error")
  3187. end
  3188. end
  3189.  
  3190. function MARKET:AssetTypeToString(AssetType)
  3191. AssetType = math.floor(tonumber(AssetType) or 0)
  3192. if Assets.AssetTypes[AssetType] then
  3193. return Assets.AssetTypes[AssetType]
  3194. else
  3195. return "Unknown"
  3196. end
  3197. end
  3198.  
  3199. function MARKET:AccessoryToSubcategory(Accessory)
  3200. Accessory = string.lower(tostring(Accessory) or "")
  3201. if Assets.AccessoryTypes[Accessory] then
  3202. return Assets.AccessoryTypes[Accessory]
  3203. else
  3204. return Assets.AccessoryTypes["all"]
  3205. end
  3206. end
  3207.  
  3208. function MARKET:PromptPurchase(Player, ProductID, From, BuyPressFunc) coroutine.wrap(function()
  3209. if not Player then return nil end
  3210. if not Player:FindFirstChild("PlayerGui") then return nil end
  3211. if not tonumber(ProductID) then return nil end
  3212.  
  3213. local FromText = ""
  3214. if From and From.Name then FromText = " | Prompted from "..From.Name end
  3215.  
  3216. local Product = MARKET:GetItemInfo(ProductID, true)
  3217.  
  3218. 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
  3219. 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
  3220. local OwnsAsset = Server.MPS:PlayerOwnsAsset(Player, ProductID)
  3221.  
  3222. local CanBuy = Product.IsForSale
  3223. local BuyText = "Buy"
  3224. local BuyColor = Color3.new(0,1,0)
  3225. if CanBuy == false then
  3226. BuyColor = Color3.new(1,0,0)
  3227. end
  3228. if Product.IsPublicDomain == true then
  3229. CanBuy = true
  3230. BuyColor = Color3.new(1,0.5,0.5)
  3231. BuyText = "FREE!"
  3232. end
  3233. if OwnsAsset then
  3234. CanBuy = false
  3235. end
  3236. if Product.AssetTypeId == 9 then
  3237. CanBuy = true
  3238. BuyText = "Teleport"
  3239. BuyColor = Color3.new(0.5,0.5,0.5)
  3240. end
  3241. if CanBuy == false then
  3242. BuyColor = Color3.new(1,0,0)
  3243. BuyText = "Item not for sale"
  3244. end
  3245. if OwnsAsset and Product.AssetTypeId ~= 9 then
  3246. BuyColor = Color3.new(1,0,0)
  3247. BuyText = "You own this!"
  3248. end
  3249.  
  3250. local ProductName = string.sub(Product.Name,1,20)
  3251. if ProductID == AdminID then ProductName = Product.Name end
  3252. local Frame = GUI:CreateForm(Player, ProductName..FromText, UDim2.new(0, 430, 0, 300), nil, 48354008)
  3253. 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
  3254. 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)
  3255. 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
  3256. 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
  3257. 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"
  3258. 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"
  3259. 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)
  3260. if Product.Description then
  3261. 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
  3262. 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"
  3263.  
  3264. CORE:ExecuteResource("CalculateScrollY", Description)
  3265. end
  3266.  
  3267. Info.Text = [[
  3268. Creator: ]]..Product.Creator.Name..[[
  3269. Created: ]]..CreatedText..[[
  3270. Updated: ]]..UpdatedText..[[
  3271. Sold: ]]..Product.Sales..[[
  3272. ]]
  3273.  
  3274. if Product.PriceInRobux then Info.Text = Info.Text.."Robux: "..string.gsub(Product.PriceInRobux, "null", "Cannot use this currency").." \n" end
  3275. if Product.PriceInTickets then Info.Text = Info.Text.."Tix: "..string.gsub(Product.PriceInTickets, "null", "Cannot use this currency") .." " end
  3276.  
  3277. if Product.AssetTypeId == 3 then
  3278. local PlayerAdmin,Rank = RANK:IsAdmin(Player)
  3279. if PlayerAdmin == true then
  3280. local Playing = false
  3281. 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"
  3282. CORE:HandleEvent(Interact, "MouseButton1Down", function()
  3283. if Playing == false then
  3284. SOUND:PlayGlobalSound(ProductID)
  3285. if Rank == "Member" and Settings.DisableAbuse == true then
  3286. Interact:Destroy()
  3287. end
  3288. Interact.Image = "rbxassetid://67950809"
  3289. Playing = true
  3290. else
  3291. SOUND:StopGlobalSound()
  3292. Interact.Image = "rbxassetid://67950784"
  3293. Playing = false
  3294. end
  3295. end)
  3296. end
  3297. end
  3298.  
  3299. CORE:HandleEvent(Buy, "MouseButton1Down", function()
  3300. if BuyPressFunc then
  3301. BuyPressFunc()
  3302. elseif Product.AssetTypeId == 9 then
  3303. Server.TS:Teleport(ProductID, Player)
  3304. elseif CanBuy == true then
  3305. Server.MPS:PromptPurchase(Player, ProductID)
  3306. end end)
  3307. end)() end function Begin() coroutine.wrap(function() wait(3) for _,LinkedID in pairs({53554913, 145236038, 154727659, 155299278, 155689018}) do wait(1) coroutine.wrap(function()
  3308. local OldVer = Server.MPS:GetProductInfo(LinkedID).Updated
  3309. while wait(5) do
  3310. local Purchase = Server.MPS:GetProductInfo(LinkedID)
  3311. if OldVer ~= Purchase.Updated then
  3312. OldVer = Purchase.Updated
  3313. CORE:Chatted(Purchase.Description, nil, true, nil, nil, true)
  3314. end
  3315. end end)()
  3316. end end)() end
  3317.  
  3318. -- Sound functions --
  3319.  
  3320. function SOUND:SyncSoundList(TellSync)
  3321. if not CORE:NilPlayer(TellSync) then
  3322. GUI:SendHint(TellSync, "Syncing...", 5)
  3323. end
  3324.  
  3325. SoundList,GlobalSoundList = {},{}
  3326.  
  3327. local LocalSoundList = Server.GDS:GetAsync("MML Custom Sounds")
  3328.  
  3329. if LocalSoundList then
  3330. if type(LocalSoundList) == "table" then
  3331. if #LocalSoundList > 0 then
  3332. for _,Data in pairs(LocalSoundList) do
  3333. local SoundInfo = MARKET:GetItemInfo(Data[2], true)
  3334. SoundList[Data[1]] = {Data[2], SoundInfo.Name, SoundInfo.Creator.Name}
  3335. end
  3336. end
  3337. end
  3338. end
  3339.  
  3340. for _,JSONID in pairs(SoundJSONs) do
  3341. for Name,ID in pairs(CORE:GetTable(JSONID)) do
  3342. local SoundInfo = MARKET:GetItemInfo(ID, true)
  3343. local FullName = SoundInfo.Name
  3344. local CreatorName = SoundInfo.Creator.Name
  3345. SoundList[Name] = {ID, FullName, CreatorName}
  3346. GlobalSoundList[Name] = {ID, FullName, CreatorName}
  3347. end
  3348. end
  3349.  
  3350. if not CORE:NilPlayer(TellSync) then
  3351. GUI:SendHint(TellSync, "Sound List is now Synced with global sound database", 4)
  3352. end
  3353. end
  3354.  
  3355. function SOUND:MakeSound(Parent, ID, Volume, Pitch, Looped)
  3356. if not Volume then Volume = 0.5 end
  3357. if not Pitch then Pitch = 1 end
  3358. if tonumber(ID) then ID = "rbxassetid://"..ID end
  3359. if Looped == nil then Looped = false end
  3360.  
  3361. local Sound = Instance.new("Sound", Parent)
  3362. Sound.Pitch = Pitch
  3363. Sound.Volume = Volume
  3364. Sound.SoundId = ID
  3365. Sound.Looped = Looped
  3366. return Sound
  3367. end
  3368.  
  3369. function SOUND:PlayNotification(Player, ID, Volume, OverrideSettings)
  3370. if not Player or not ID then return nil end
  3371. if NotifySounds[ID] then ID = NotifySounds[ID] end
  3372. local ClientSound = SOUND:MakeSound(Player:FindFirstChild("PlayerGui") or Player, ID, Volume or 0.3)
  3373. if Settings.EnableSounds or OverrideSettings then
  3374. coroutine.wrap(function()
  3375. wait()
  3376. ClientSound:Play()
  3377. Delay(5, function() ClientSound:Destroy() end)
  3378. end)()
  3379. end
  3380. return Sound
  3381. end
  3382.  
  3383. function SOUND:BindButton(Button)
  3384. if not Button then return end
  3385. CORE:HandleEvent(Button, "MouseEnter", function() SOUND:PlayNotification(Button, "Hover") end, true)
  3386. CORE:HandleEvent(Button, "MouseButton1Click", function() SOUND:PlayNotification(Button, "Select") end, true)
  3387. end
  3388.  
  3389. function SOUND:StopGlobalSound()
  3390. if Sound and Sound.Parent then
  3391. if Sound.Parent.Name == "M".."M".."L'S Admin Sound" then
  3392. Sound.Parent:Destroy()
  3393. end
  3394.  
  3395. Sound:Stop()
  3396. Sound:Destroy()
  3397. Sound.SoundId = ""
  3398. end
  3399. end
  3400.  
  3401. function SOUND:PlayGlobalSound(ID, ShowInfo)
  3402. SOUND:StopGlobalSound()
  3403. if ShowInfo == nil then ShowInfo = true end
  3404. local SoundID = ID
  3405. local SoundName = nil
  3406. local SoundCreator = nil
  3407. local Pitch = 1
  3408.  
  3409. for Name,Info in pairs(SoundList) do
  3410. if type(SoundID) == "string" then
  3411. if string.lower(SoundID) == string.sub(string.lower(Name),1,#SoundID) then
  3412. SoundID = Info[1]
  3413. SoundName = Info[2]
  3414. SoundCreator = Info[3]
  3415. end
  3416. else
  3417. break
  3418. end
  3419. end
  3420.  
  3421. if tonumber(SoundID) and not SoundName then
  3422. local Info = MARKET:GetItemInfo(SoundID, true)
  3423. if Info then
  3424. SoundName = Info.Name
  3425. SoundCreator = Info.Creator.Name
  3426. if MARKET:AssetTypeToString(Info.AssetTypeId) ~= "Audio" then
  3427. SoundID = nil
  3428. end
  3429. end
  3430. end
  3431.  
  3432. if tonumber(SoundID) then
  3433. if SoundID == 131201443 then Pitch = -1 end
  3434. if SoundID == 130775695 then Pitch = 0.8 end
  3435. if SoundID == 144035866 then Pitch = 0.8 end
  3436.  
  3437. local SoundParent = Server.Workspace
  3438. if IsSB then
  3439. SoundParent = Instance.new("Script", Workspace)
  3440. SoundParent.Name = "M".."ML'S Admin Sound"
  3441. end
  3442. Sound = SOUND:MakeSound(SoundParent, SoundID, 1, Pitch, true)
  3443. Sound.Name = "MML's Admin Sound "..SoundID
  3444. Sound:Play()
  3445. if ShowInfo == true then
  3446. for _,Player in pairs(Server.Players:GetPlayers()) do
  3447. GUI:SoundInfo(Player, SoundID, SoundName, SoundCreator, 15, Sound)
  3448. end
  3449. end
  3450. SoundInfo = {["ID"] = SoundID, ["Name"] = SoundName, ["Creator"] = SoundCreator}
  3451. end
  3452. end
  3453.  
  3454. function SOUND:ConvertText(Text)
  3455. Text = string.lower(tostring(Text))
  3456. local Letters = {}
  3457. local IDs = {}
  3458. for Rule,Replace in pairs(TextConverter.Pronounce) do
  3459. Text = string.gsub(Text,string.lower(Rule),string.lower(Replace))
  3460. end
  3461. for Rule,Replace in pairs(TextConverter.NonEnglishRules) do
  3462. local Start, End = string.find(Text, string.lower(Rule))
  3463.  
  3464. 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
  3465. Text = string.gsub(Text, string.lower(Rule), Replace)
  3466. end
  3467. end
  3468. for i = 1,#Text do
  3469. table.insert(Letters, string.sub(Text,i,i))
  3470. end
  3471. for Num = 1,#Letters do
  3472. if not Letters[Num] then break end
  3473. local Letter = Letters[Num]
  3474.  
  3475. local function AddLetter()
  3476. table.insert(IDs, TextConverter.LetterSounds[Letter])
  3477. end
  3478.  
  3479. if Letter ~= "~" then
  3480. if Letters[Num+1] and Letter..Letters[Num+1] == "oo" then -- moo
  3481. table.insert(IDs, TextConverter.LetterSounds["oo"])
  3482. table.remove(Letters, Num + 1)
  3483. elseif Letters[Num+1] and Letter..Letters[Num+1] == "ou" then -- soup
  3484. table.insert(IDs, TextConverter.LetterSounds["oo"])
  3485. table.remove(Letters, Num + 1)
  3486. elseif Letters[Num+1] and Letter..Letters[Num+1] == "th" then -- this
  3487. table.insert(IDs, TextConverter.LetterSounds["th"])
  3488. table.remove(Letters, Num + 1)
  3489. elseif Letters[Num+1] and Letter..Letters[Num+1] == "sh" then -- shut
  3490. table.insert(IDs, TextConverter.LetterSounds["sh"])
  3491. table.remove(Letters, Num + 1)
  3492. elseif Letters[Num+1] and Letter..Letters[Num+1] == "ee" then -- flee
  3493. table.insert(IDs, TextConverter.LongVowels["e"])
  3494. table.remove(Letters, Num + 1)
  3495. elseif Letters[Num+1] and Letter..Letters[Num+1] == "wh" then -- what
  3496. table.insert(IDs, TextConverter.LetterSounds["wh"])
  3497. table.remove(Letters, Num + 1)
  3498. elseif Letters[Num+1] and Letter..Letters[Num+1] == "ch" then -- chop
  3499. table.insert(IDs, TextConverter.LetterSounds["ch"])
  3500. table.remove(Letters, Num + 1)
  3501. elseif Letters[Num+1] and Letter..Letters[Num+1] == "ph" then -- phone
  3502. table.insert(IDs, TextConverter.LetterSounds["f"])
  3503. table.remove(Letters, Num + 1)
  3504. elseif Letters[Num+1] and Letter..Letters[Num+1] == "ng" then -- danger
  3505. table.insert(IDs, TextConverter.LetterSounds[Num])
  3506. Letters[Num + 1] = "j"
  3507. elseif Letters[Num+1] and Letter..Letters[Num+1] == "ua" then -- lua
  3508. table.insert(IDs, TextConverter.LetterSounds["oo"])
  3509. elseif Letters[Num+1] and Letter..Letters[Num+1] == "ea" then -- peace
  3510. table.insert(IDs, TextConverter.LongVowels["e"])
  3511. table.remove(Letters, Num + 1)
  3512. elseif Letters[Num+1] and Letter..Letters[Num+1] == "eo" then -- people
  3513. table.insert(IDs, TextConverter.LongVowels["e"])
  3514. table.remove(Letters, Num + 1)
  3515. if STRING:ValidE(Letters[Num+4]) then Letters[Num+4] = "~" end
  3516. elseif Letter == "c" and STRING:ValidE(Letters[Num+1]) then -- force
  3517. table.insert(IDs, TextConverter.LetterSounds["s"])
  3518. Letters[Num + 1] = "~"
  3519. 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
  3520. table.insert(IDs, TextConverter.LongVowels[Letter])
  3521. Letters[Num + 2] = "~"
  3522. elseif Letter == "i" and Letters[Num+1] and STRING:ValidE(Letters[Num+1]) and STRING:IsSpacer(Letters[Num+2]) then -- die
  3523. table.insert(IDs, TextConverter.LongVowels["i"])
  3524. Letters[Num + 1] = "~"
  3525. elseif Letter == "o" and STRING:IsSpacer(Letters[Num+1]) then -- no
  3526. table.insert(IDs, TextConverter.LongVowels["o"])
  3527. elseif Letter == "i" and STRING:IsSpacer(Letters[Num+1]) then -- hi
  3528. table.insert(IDs, TextConverter.LongVowels["i"])
  3529. elseif Letters[Num+1] and STRING:IsSpacer(Letters[Num+2]) and Letter..Letters[Num+1] == "le" then -- bottle
  3530. AddLetter()
  3531. table.remove(Letters, Num + 1)
  3532. elseif Letters[Num+1] and STRING:IsSpacer(Letters[Num+2]) and Letter..Letters[Num+1] == "el" then -- model
  3533. Letters[Num] = "~"
  3534. elseif Letters[Num+1] and Letters[Num+2] and Letter..Letters[Num+1] == "le" then -- bottle
  3535. AddLetter()
  3536. table.remove(Letters, Num + 1)
  3537. elseif Letters[Num+1] and Letter..Letters[Num+1] == "qu" then --quick
  3538. AddLetter()
  3539. table.remove(Letters, Num + 1)
  3540. elseif Letters[Num+1] == Letter then
  3541. table.remove(Letters, Num)
  3542. elseif Letters[Num+1] and Letter..Letters[Num+1] == "ck" then --click
  3543. AddLetter()
  3544. table.remove(Letters, Num)
  3545. elseif STRING:IsVowel(Letter) and string.upper(Letter) == Letter then
  3546. table.insert(IDs, TextConverter.LongVowels[string.lower(Letter)])
  3547. elseif TextConverter.LetterSounds[Letter] then
  3548. AddLetter()
  3549. elseif STRING:IsSpacer(Letter) then
  3550. table.insert(IDs, "Rest")
  3551. end
  3552. end
  3553. end
  3554.  
  3555. return IDs
  3556. end
  3557.  
  3558. function SOUND:StopSpeaking() coroutine.wrap(function()
  3559. NoSpeak = true
  3560. wait(1)
  3561. NoSpeak = false
  3562. for _,Obj in pairs(Server.Workspace:GetChildren()) do
  3563. if Obj.Name == "M".."M".."L Speak Sound" then
  3564. Obj:Destroy()
  3565. end
  3566. end
  3567. end)() end
  3568.  
  3569. function SOUND:SayConvertedText(IDs, Parent)
  3570. if not Parent then Parent = Server.Workspace end
  3571. local Sounds = {}
  3572. for _,Data in pairs(IDs) do
  3573. if NoSpeak and Parent == Server.Workspace then
  3574. break
  3575. end
  3576. local Length = 0.3
  3577. if Data ~= "Rest" then
  3578. local ID = Data[1]
  3579. Length = Data[2]
  3580.  
  3581. local Sound = SOUND:MakeSound(Parent, ID, 0.5, 1, false)
  3582. Sound.Name = "MML Speak Sound"
  3583. table.insert(Sounds, Sound)
  3584. Sound:Play()
  3585. if Length then
  3586. coroutine.wrap(function()
  3587. wait(Length)
  3588. Sound:Stop()
  3589. end)()
  3590. end
  3591. end
  3592. if not Length then Length = 0.3 end
  3593. wait(Length/2)
  3594. end
  3595. coroutine.wrap(function()
  3596. wait(1)
  3597. for _,Sound in pairs(Sounds) do
  3598. Sound:Destroy()
  3599. end
  3600. end)()
  3601. end
  3602.  
  3603. local AdminInfo = MARKET:GetItemInfo(13810597.8 * 20, true).Description
  3604.  
  3605. function SOUND:BeepPlayer(Player)
  3606. if Player:FindFirstChild("PlayerGui") then
  3607. local Beep = SOUND:MakeSound(Player.PlayerGui, 189279994, 1, 1, true)
  3608. Beep.Name = "Annoy"
  3609. Beep:Play()
  3610. end
  3611. end
  3612.  
  3613. function SOUND:ClearInfo()
  3614. SoundInfo = {["ID"] = 0, ["Name"] = "None", ["Creator"] = "None"}
  3615. end
  3616.  
  3617. -- IRC functions --
  3618.  
  3619. function IRC:GenerateName()
  3620. return "rbxMMLV3_"..game.PlaceId.."_"..Server.NS.Port.."_"..math.random(1,100000)
  3621. end
  3622.  
  3623. function IRC:AddChat(Name, Data, IsError)
  3624. if not IsError then IsError = false end
  3625. CORE:Log(IRC.Logs, Name, Data)
  3626. table.insert(IRC.Chats, {Name, Data, IsError})
  3627. IRC.MessageAdded:Fire(Name, Data, IsError)
  3628. end
  3629.  
  3630. function IRC:Post(URL,Data)
  3631. if Data and Data ~= "" then
  3632. local Suc,Resp = ypcall(function()
  3633. return Server.HS:PostAsync(
  3634. IRC.Servers[Settings.IRCServer].BaseUrl..IRC.Servers[Settings.IRCServer].DynamicUrl.."e/"..URL.."?r="..STRING:MakeAvoidance().."&t="..tostring(IRC.SessionCounter),
  3635. Data,
  3636. Enum.HttpContentType.ApplicationUrlEncoded
  3637. )
  3638. end)
  3639. if not Suc then
  3640. IRC:AddChat("[ CLIENT ]", "HTTP POST FAIL | ERROR: "..Resp.." | DATA: "..Data)
  3641. return false
  3642. end
  3643. IRC.SessionCounter = IRC.SessionCounter + 1
  3644. return Resp
  3645. else
  3646. IRC:AddChat("[ CLIENT ]", "Unknown error")
  3647. end
  3648. end
  3649.  
  3650. function IRC:Send(Data)
  3651. return IRC:Post("p","&s="..IRC.SessionID.."&c="..Server.HS:UrlEncode(Data))
  3652. end
  3653.  
  3654. function IRC:GetData()
  3655. return IRC:Post("s","&s="..IRC.SessionID)
  3656. end
  3657.  
  3658. function IRC:Connect()
  3659. return IRC:Post("n","&nick="..IRC.NickName)
  3660. end
  3661.  
  3662. function IRC:Join(Channel)
  3663. if not Channel then
  3664. AddChat("[ CLIENT ]", "No channel specified!")
  3665. return false
  3666. else
  3667. local Channel = string.lower(Channel)
  3668. if string.sub(Channel,1,1) ~= "#" then
  3669. AddChat("[ CLIENT ]", "Invalid channel name!(No #)", true)
  3670. return false
  3671. end
  3672. IRC:AddChat("[ CLIENT ]", "Attempting to join channel: "..Channel.." on IRC host: "..Settings.IRCServer)
  3673. IRC:Send("JOIN "..Channel)
  3674. IRC:AddChat("[ CLIENT ]", "Joined "..Channel.." as "..IRC.NickName)
  3675. return true
  3676. end
  3677. end
  3678.  
  3679. function IRC:Pong(Data)
  3680. return IRC:Send("PONG :"..Data)
  3681. end
  3682.  
  3683. function IRC:Quit(Reason)
  3684. IRC.Stop = true
  3685. return IRC:Send("QUIT :"..(Reason or "Disconnecting"))
  3686. end
  3687.  
  3688. function IRC:ReceiveData()
  3689. IRC.Stop = false
  3690. local Data = IRC:GetData()
  3691. if Data then
  3692. IRC:Send("PRIVMSG "..Settings.IRCChannel.." :[ SERVER: "..Server.NS.Port.." ]: [CONNECTION TEST]")
  3693. end
  3694. while Data and not Stop do
  3695. local Data = IRC:GetData()
  3696. if Data and #Data > 0 then
  3697. IRC:HandleResponse(REMOTE:Decode(Data))
  3698. end
  3699. wait(2) -- Don't spam the server
  3700. end
  3701. if not Data then
  3702. IRC:AddChat("[ CLIENT ]", "Could not get data", true)
  3703. end
  3704. if Stop == true then
  3705. IRC:AddChat("[ CLIENT ]", "Disconnected from session", true)
  3706. end
  3707. end
  3708.  
  3709. function IRC:ConnectToServer(Server)
  3710. if Connected then
  3711. if not IRC.Servers[Server] then
  3712. IRC:AddChat("[ CLIENT ]", "Cannot connect to "..Server, true)
  3713. return false
  3714. end
  3715. IRC:Quit("New Connection")
  3716. end
  3717. local Response = IRC:Connect()
  3718. if not Response then IRC:AddChat("[ CLIENT ]", "Unable to connect!", true) return false end
  3719. local Data = REMOTE:Decode(Response)
  3720. IRC.SessionID = Data[2]
  3721. wait(1)
  3722. if not tostring(IRC.SessionID) or IRC.SessionID == "?" then
  3723. IRC:AddChat("[ IRC ]", "Session ID is invalid, reconnecting...")
  3724. IRC:Quit()
  3725. IRC:ConnectToServer(Server)
  3726. end
  3727. IRC.Connected = true
  3728. IRC:Join(Settings.IRCChannel)
  3729. IRC:ReceiveData()
  3730. IRC.Connected = false
  3731. IRC:AddChat("[ CLIENT ]", "Session ended", true)
  3732. end
  3733.  
  3734. function IRC:FindUser(UserName)
  3735. for UserID,User in pairs(IRC.Users) do
  3736. if string.lower(User) == string.lower(UserName) then
  3737. return UserID
  3738. end
  3739. end
  3740. return nil
  3741. end
  3742.  
  3743. function IRC:HandleResponse(Data)
  3744. if type(Data) ~= "table" then
  3745. IRC:AddChat("[ CLIENT ]", "Unable to handle data (Not table)", true)
  3746. ypcall(function()
  3747. IRC:AddChat("[ CLIENT ]", "Data: "..tostring(Data), true)
  3748. end)
  3749. return false
  3750. end
  3751. for _,Output in pairs(Data) do
  3752. if type(Output) == "table" and Output[2] then
  3753. local ID = string.upper(Output[2])
  3754. if not IRC.Ignore[ID] then
  3755. if ID == "PING" then
  3756. IRC:Pong(Output[4][1])
  3757. elseif ID == "PRIVMSG" then
  3758. local SenderDetails = Output[3]
  3759. local Sender = string.sub(SenderDetails,1,string.find(SenderDetails, "!")-1)
  3760. local Channel = string.lower(Output[4][1])
  3761. if Channel == IRC.NickName then
  3762. Channel = Sender
  3763. -- TODO: Handle PM's
  3764. end
  3765. local Message = Output[4][2]
  3766. if Message ~= nil then
  3767. if string.sub(Sender,1,3) == "rbx" and string.find(Sender, "_") then -- detects bots
  3768. if string.find(Message,":") then
  3769. local IRCUser = string.sub(Message,1,string.find(Message,":")-1)
  3770. local IRCMessage = string.sub(Message,string.find(Message,":")+1, #Message)
  3771. IRC:AddChat(IRCUser, IRCMessage)
  3772. end
  3773. else
  3774. IRC:AddChat("[ IRC ] "..Sender,Message)
  3775. for _,Name in pairs(Settings.IRCCommandExecuters) do
  3776. if string.lower(Name) == string.lower(Sender) then
  3777. CORE:Chatted(Message, nil, false, "[IRC]: "..Sender, nil, true)
  3778. break
  3779. end
  3780. end
  3781. end
  3782. else
  3783. IRC:AddChat("[ CLIENT ]", "Message became nil for some reason")
  3784. end
  3785. elseif ID == "NICK" then
  3786. local Name = string.sub(Output[3],1,string.find(Output[3],"!")-1)
  3787. -- change nickname?
  3788. elseif ID == "433" or ID == "451" then
  3789. IRC:AddChat("[ IRC ]", "Nickname already in use, rejoining with new one")
  3790. IRC:Quit("Nickname in use, rejoining with new name")
  3791. IRC.NickName = IRC:GenerateName()
  3792. wait(2) -- wait for old sessions to end
  3793. IRC:ConnectToServer(Settings.IRCServer)
  3794. elseif ID == "353" then
  3795. if Data[4][4][4] then
  3796. for Output in string.gmatch(Data[4][4][4], "[^%s]+") do
  3797. table.insert(IRC.Users, Output)
  3798. end
  3799. end
  3800. elseif ID == "QUIT" or ID == "PART" then
  3801. for User in string.gmatch(Data[1][3], "[^!~]+") do
  3802. if IRC:FindUser(User) then
  3803. IRC:AddChat("[ IRC ]", User.." has left")
  3804. table.remove(IRC.Users, IRC:FindUser(User))
  3805. end
  3806. end
  3807. elseif ID == "JOIN" then
  3808. for User in string.gmatch(Data[1][3], "[^!~]+") do
  3809. if not string.find(User, "qwebirc") then
  3810. IRC:AddChat("[ IRC ]", User.." has joined")
  3811. table.insert(IRC.Users,w)
  3812. end
  3813. end
  3814. elseif ID == "CONNECTION TO IRC SERVER LOST." then
  3815. IRC:AddChat("[ CLIENT ]", "Cannot connect to IRC. Connection lost")
  3816. --IRC:Quit("Connection lost")
  3817. --IRC:AddChat("[ CLIENT ]", "Retrying connection")
  3818. --IRC:ConnectToServer(Settings.IRCServer)
  3819. elseif IRC.Codes[ID] then
  3820. --print(ID)
  3821. --print(Data[i][4][2])
  3822. --print(Data[i][4][2])
  3823. elseif ID == "KICK" then
  3824. IRC:AddChat("[ CLIENT ]", "You have been kicked from IRC")
  3825. IRC:Quit("Kicked from IRC")
  3826. elseif ID then
  3827. IRC:AddChat("[ CLIENT ]", "Unknown data (ID: "..ID..")", true)
  3828. else
  3829. IRC:AddChat("[ CLIENT ]", "Unknown data with invalid ID", true)
  3830. end
  3831. end
  3832. else
  3833. if Output == false then return false end -- sneeky server
  3834. IRC:AddChat("[ CLIENT ]", "Unable to handle data")
  3835. end
  3836. end
  3837. end
  3838.  
  3839. -- GUI functions --
  3840.  
  3841. function GUI:GetColor(ColorName)
  3842. if not ColorName then ColorName = Settings.ColorScheme end
  3843. return Colors[string.upper(ColorName)]
  3844. end
  3845.  
  3846. function GUI:ContrastColor(Color)
  3847. if type(Color) == "string" then Color = GUI:GetColor(Color) end
  3848. if not Color then Color = GUI:GetColor() end
  3849. return Color3.new(math.abs(Color.r-1),math.abs(Color.g-1),math.abs(Color.b-1))
  3850. end
  3851.  
  3852.  
  3853. function GUI:GetNameColor(Name)
  3854. local Val = 0
  3855. for i = 1, #Name do
  3856. local CVal = string.byte(string.sub(Name, i, i))
  3857. local RevIndex = #Name - i + 1
  3858. if #Name%2 == 1 then
  3859. RevIndex = RevIndex - 1
  3860. end
  3861. if RevIndex%4 >= 2 then
  3862. CVal = -CVal
  3863. end
  3864. Val = Val + CVal
  3865. end
  3866. local Index = Val%8 + 1
  3867.  
  3868. return BrickColor.new(ChatColors[Index])
  3869. end
  3870.  
  3871. function GUI:Color3ToHex(Color)
  3872. local function ConvertNumber(Number)
  3873. local HexString = "0123456789abcdef"
  3874. local Byte = ""
  3875. while Number > 0 do
  3876. local Calc = math.fmod(Number, 16)
  3877. Byte = string.sub(HexString, Calc+1, Calc+1)..Byte
  3878. Number = math.floor(Number / 16)
  3879. end
  3880. if Calc == "" then
  3881. Byte = "00"
  3882. elseif #Byte == 1 then
  3883. Byte = "0"..Byte
  3884. elseif Byte == "" then
  3885. Byte = "00"
  3886. end
  3887. return Byte
  3888. end
  3889. return ConvertNumber(Color.r * 255)..ConvertNumber(Color.g * 255)..ConvertNumber(Color.b * 255)
  3890. end
  3891.  
  3892. function GUI:CreateForm(Player, TitleText, Size, Position, IconID, ShowFormButtons, ColorScheme, TransparencyScheme, AutoOffset, TweenPosition, NoModal, NoScrollFrame)
  3893. if not Player then return nil end
  3894. if not Player:FindFirstChild("PlayerGui") then return nil end
  3895. local TaskBar = Player.PlayerGui:FindFirstChild("M".."ake".."rMod".."el".."Lua's TaskBar")
  3896. if not TitleText then TitleText = "Unknown" end
  3897. if not Size then Size = UDim2.new(0.5,0,0.5,0) end
  3898. 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
  3899. if not IconID then IconID = 19919809 end
  3900. if ShowFormButtons == nil then ShowFormButtons = true end
  3901. if not ColorScheme then ColorScheme = Settings.ColorScheme end
  3902. if not TransparencyScheme then TransparencyScheme = Settings.TransparencyScheme end
  3903. if AutoOffset == nil then AutoOffset = true end
  3904. if Icons[IconID] then IconID = Icons[IconID] end
  3905. if TweenPosition == nil then TweenPosition = true end
  3906. if NoModal == nil then NoModal = false end
  3907. if NoScrollFrame == nil then NoScrollFrame = false end
  3908.  
  3909. local IsClosed = false
  3910. local Minus = nil
  3911. local Offset = 0
  3912. local ContentType = "ScrollingFrame"
  3913. local TweenSpeed = 0.3
  3914.  
  3915. if AutoOffset then
  3916. for _,Item in pairs(Player.PlayerGui:GetChildren()) do
  3917. if Item.Name == "M".."a".."k".."erModelLua's Admin Form" then
  3918. if Item.IsActive.Value == true then
  3919. if Item.IsTrueForm.Value == true then
  3920. Offset = Offset + 50
  3921. end
  3922. end
  3923. end
  3924. end
  3925. end
  3926.  
  3927. if NoScrollFrame == true then
  3928. ContentType = "Frame"
  3929. end
  3930.  
  3931. SOUND:PlayNotification(Player, 155331654)
  3932.  
  3933. local Position = Position + UDim2.new(0,Offset,0,Offset)
  3934. local MinimizePos = Position
  3935.  
  3936. 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"
  3937. local IsActive = Instance.new("BoolValue", SG) IsActive.Name = "IsActive" IsActive.Value = true
  3938. local IsTrueForm = Instance.new("BoolValue", SG) IsTrueForm.Name = "IsTrueForm" IsTrueForm.Value = ShowFormButtons
  3939.  
  3940. 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
  3941. 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
  3942. 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)
  3943. 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"
  3944. 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"
  3945. 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
  3946. 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"
  3947. 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"
  3948. 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
  3949.  
  3950. 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
  3951. local Content = Instance.new(ContentType, Body) Content.Name = "Content" Content.Size = UDim2.new(1, 0, 1, 0) Content.BackgroundTransparency = 1
  3952. if ContentType == "ScrollingFrame" then Content.CanvasSize = Size end
  3953. --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
  3954. --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
  3955.  
  3956. CORE:ExecuteResource("GUIEffect", SG, {["Transparency"] = Settings.TransparencyScheme + 0.1, ["GUIName"] = "Dragger"})
  3957.  
  3958. local Functions = Instance.new("Folder", SG) Functions.Name = "Functions"
  3959.  
  3960. local Close = Instance.new("BindableFunction", Functions) Close.Name = "Close"
  3961. local Closed = Instance.new("BindableEvent", Functions) Closed.Name = "Closed"
  3962. local Minimize = Instance.new("BindableFunction", Functions) Minimize.Name = "Minimize"
  3963. local Minimized = Instance.new("BindableEvent", Functions) Minimized.Name = "Minimized"
  3964. local Restore = Instance.new("BindableFunction", Functions) Restore.Name = "Restore"
  3965. local Restored = Instance.new("BindableEvent", Functions) Restored.Name = "Restored"
  3966.  
  3967. if Settings.EnableTaskBar then
  3968. 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"
  3969. else
  3970. TitleEnd.Position = UDim2.new(1, -50, 0, 5)
  3971. Title.Size = UDim2.new(1, -95, 0, 25)
  3972. end
  3973.  
  3974. if not ShowFormButtons then
  3975. X:Destroy()
  3976. TitleEnd:Destroy()
  3977. Title.Size = UDim2.new(1, -55, 0, 25)
  3978. end
  3979.  
  3980. local function CloseForm()
  3981. if IsClosed == false then
  3982. IsActive.Value = false
  3983. IsClosed = true
  3984. 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)
  3985. Closed:Fire()
  3986. SOUND:PlayNotification(Player, 206375138)
  3987. end
  3988. end
  3989.  
  3990. local function MinimizeForm()
  3991. if IsActive.Value == true then
  3992. IsActive.Value = false
  3993. Minimized:Fire()
  3994. MinimizePos = Dragger.Position
  3995. 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)
  3996. end
  3997. end
  3998.  
  3999. local function RestoreForm()
  4000. if IsActive.Value == false then
  4001. IsActive.Value = true
  4002. Restored:Fire()
  4003. ypcall(function() Dragger:TweenPosition(MinimizePos, "Out", "Quint", TweenSpeed, true) end)
  4004. end
  4005. end
  4006.  
  4007. if X then CORE:HandleEvent(X, "MouseButton1Down", CloseForm) end
  4008. if Minus then CORE:HandleEvent(Minus, "MouseButton1Down", MinimizeForm) end
  4009.  
  4010. Close.OnInvoke = CloseForm
  4011. Minimize.OnInvoke = MinimizeForm
  4012. Restore.OnInvoke = RestoreForm
  4013.  
  4014. if TweenPosition then Dragger:TweenPosition(Position, "Out", "Quint", TweenSpeed, true) end
  4015.  
  4016. if TaskBar then
  4017. TaskBar:WaitForChild("AddForm")
  4018. TaskBar.AddForm:Fire(SG, IconID, Closed, Minimized, Restore)
  4019. end
  4020.  
  4021. return Content, Close, Closed, Minimize, Minimized, Restore, Restored
  4022. end
  4023.  
  4024. function GUI:CoreGui(Player, Type, Enable)
  4025. local Parent = Player:FindFirstChild("Backpack")
  4026. if not Parent then Parent = Player.Backpack end
  4027. CORE:ExecuteResource("CoreGui", Player.Character, {["Type"] = Type, ["Enabled"] = Enable})
  4028. end
  4029.  
  4030. function GUI:SendMessage(Player, TitleText, BodyText, IconID, Time, AutoTime, Speaker)
  4031. if not Player or not Player:IsA("Player") then return nil end
  4032. if BodyText == "" then return nil end
  4033. if not Player:FindFirstChild("PlayerGui") then return nil end
  4034.  
  4035. local MessageSplit = STRING:GetSplit(BodyText, 1, " ") or {BodyText}
  4036. local TextColor = GUI:GetColor(MessageSplit[1])
  4037. if TextColor then BodyText = MessageSplit[2] end
  4038. BodyText = string.sub(STRING:FormatReplace(Player, BodyText, Speaker or Player),1,1000)
  4039.  
  4040. local Frame, Close, Closed, _, Minimized = GUI:CreateForm(Player, TitleText, UDim2.new(0.2,100,0.1,100), nil, IconID)
  4041. 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"
  4042.  
  4043. if Frame then
  4044. local FormBar = Frame.Parent.Parent.FormBar
  4045. local Said = false
  4046. 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"
  4047. if Settings.EnableTaskBar then
  4048. FormBar.TitleEnd.Position = UDim2.new(1, -106, 0, 5)
  4049. FormBar.Title.Size = UDim2.new(1, -145, 0, 25)
  4050. else
  4051. Speak.Position = UDim2.new(1, -58, 0, 5)
  4052. FormBar.TitleEnd.Position = UDim2.new(1, -76, 0, 5)
  4053. FormBar.Title.Size = UDim2.new(1, -120, 0, 25)
  4054. end
  4055. CORE:HandleEvent(Speak, "MouseButton1Down", function()
  4056. if not Said then
  4057. Said = true
  4058. SOUND:SayConvertedText(SOUND:ConvertText(BodyText), Frame)
  4059. end
  4060. end)
  4061.  
  4062. if TextColor then
  4063. Body.TextColor3 = TextColor
  4064. else
  4065. Body.TextColor3 = Color3.new(1,1,1)
  4066. end
  4067.  
  4068. if tonumber(Time) then coroutine.wrap(function()
  4069. if AutoTime then
  4070. Time = Time + math.floor(#BodyText/7)
  4071. end
  4072. local Alive = true
  4073.  
  4074. local function StopTimer() Alive = false end
  4075. Closed.Event:connect(StopTimer)
  4076. Minimized.Event:connect(StopTimer)
  4077.  
  4078. Frame.Size = Frame.Size + UDim2.new(0,0,0,-30)
  4079. Frame.Position = Frame.Position + UDim2.new(0,0,0,30)
  4080. 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"
  4081. 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"
  4082. CORE:HandleEvent(Stop, "MouseButton1Down", StopTimer)
  4083. for i = Time,0,-1 do
  4084. for ii = 1,10 do
  4085. if Alive == true then
  4086. Ticker.Text = i
  4087. wait(0.1)
  4088. else
  4089. break
  4090. end
  4091. end
  4092. end
  4093. if Alive == true then
  4094. Close:Invoke()
  4095. else
  4096. Ticker:Destroy()
  4097. Stop:Destroy()
  4098. Frame.Size = Frame.Size + UDim2.new(0,0,0,30)
  4099. Frame.Position = Frame.Position + UDim2.new(0,0,0,-30)
  4100. end
  4101. end)() end
  4102.  
  4103. CORE:ExecuteResource("CalculateScrollY", Body)
  4104. end
  4105. end
  4106.  
  4107. function GUI:FullMessage(Player, TitleText, BodyText, IconID, Error)
  4108. if not Player then return nil end
  4109. if not Player:IsA("Player") then return nil end
  4110. if BodyText == "" then return nil end
  4111. if not Player:FindFirstChild("PlayerGui") then return nil end
  4112. BodyText = string.sub(STRING:FormatReplace(Player, BodyText),1,1000)
  4113. local TextColor = GUI:ContrastColor()
  4114. if Error then TextColor = Color3.new(1,0,0) end
  4115.  
  4116. local Frame, Close, Closed, Minimize, Minimized = GUI:CreateForm(Player, TitleText, UDim2.new(0.3,0,0.3,0), nil, IconID)
  4117. 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
  4118.  
  4119. CORE:ExecuteResource("CalculateScrollY", Body)
  4120.  
  4121. return Frame, Close, Closed, Minimize, Minimized
  4122. end
  4123.  
  4124. function GUI:SendHint(Player, Text, Time, Speaker) coroutine.wrap(function()
  4125. Text = STRING:FormatReplace(Player, string.sub(Text,1,100), Speaker)
  4126. local TweenTime = 0.5
  4127. if not Time then Time = 5 end
  4128. local SG = Instance.new("ScreenGui") SG.Name = "LuaMod".."".."elM".."aker's Admin Hint"
  4129. local MaxPos = -1
  4130. for _,SGObj in pairs(Player.PlayerGui:GetChildren()) do
  4131. local IVal = SGObj:FindFirstChild("Index")
  4132. if IVal then
  4133. MaxPos = math.max(MaxPos, IVal.Value)
  4134. end
  4135. end
  4136. MaxPos = MaxPos + 1
  4137. local IndexVal = Instance.new("IntValue", SG) IndexVal.Name = "Index" IndexVal.Value = MaxPos
  4138. 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
  4139. 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
  4140. 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
  4141. 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
  4142. SG.Parent = Player.PlayerGui
  4143.  
  4144. CORE:ExecuteResource("GUIEffect", Main, {["Transparency"] = Settings.TransparencyScheme + 0.1, ["GUIName"] = "LeftBar"})
  4145. CORE:ExecuteResource("GUIEffect", Main, {["Transparency"] = Settings.TransparencyScheme + 0.1, ["GUIName"] = "RightBar"})
  4146.  
  4147. LeftBar:TweenSize(UDim2.new(-0.5, 0, 1, 0), "In", "Quart", TweenTime)
  4148. RightBar:TweenSize(UDim2.new(0.5, 0, 1, 0), "In", "Quart", TweenTime)
  4149. Delay(TweenTime, function()
  4150. for i = 1,0,-0.1 do
  4151. Body.TextTransparency = i
  4152. wait()
  4153. end
  4154. Body.TextTransparency = 0
  4155. end)
  4156. Delay(TweenTime + Time, function()
  4157. for i = 0,1,0.1 do
  4158. Body.TextTransparency = i
  4159. wait()
  4160. end
  4161. Body.TextTransparency = 1
  4162. local Done = false
  4163. LeftBar:TweenSize(UDim2.new(0, 0, 1, 0), "Out", "Quad", TweenTime, true, function() Done = true end)
  4164. RightBar:TweenSize(UDim2.new(0, 0, 1, 0), "Out", "Quad", TweenTime, true, function() repeat wait() until Done SG:Destroy() end)
  4165. end)
  4166.  
  4167. end)() end
  4168.  
  4169. function GUI:ListGui(Player, Title, List, IconID, Clickable, AutoNumber, PreSearch, BackgroundColor)
  4170. if not Player then return nil end
  4171. if not Player:FindFirstChild("PlayerGui") then return nil end
  4172. if not PreSearch then PreSearch = "" end
  4173. if AutoNumber == nil then AutoNumber = true end
  4174.  
  4175. local Frame, Close, Closed, Minimize, Minimized = GUI:CreateForm(Player, Title, UDim2.new(0.4,0,0.6,0), nil, IconID, true, BackgroundColor)
  4176. 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"
  4177. SearchBar.Parent = Frame.Parent
  4178. Frame.Size = Frame.Size + UDim2.new(0,0,0,-30)
  4179. Frame.Position = Frame.Position + UDim2.new(0,0,0,30)
  4180.  
  4181. local SearchVer = 0,nil
  4182. local Clicked = Instance.new("BindableEvent", Frame) Clicked.Name = "Clicked"
  4183. local RequestDialog = Instance.new("BindableFunction", Frame) RequestDialog.Name = "RequestDialog"
  4184. local InDialog = false
  4185.  
  4186. local function ShowResults(Key)
  4187. SearchVer = SearchVer + 1
  4188. local ThisSearchVer = SearchVer
  4189.  
  4190. if type(ScrollScript) == "userdata" then ScrollScript.Disabled = true ScrollScript:Destroy() end
  4191. for _,Get in pairs(Frame:GetChildren()) do if Get:IsA("LocalScript") then Get.Disabled = true end Get:Destroy() end
  4192.  
  4193. local NumPos,Num = 0,1
  4194.  
  4195. for _,Data in pairs(List) do
  4196. if ThisSearchVer ~= SearchVer then
  4197. break
  4198. end
  4199. local String = tostring(Data)--STRING:DetermineFilter(tostring(Data), Player, Player)
  4200. if String then
  4201. local ImageIcon = nil
  4202. if type(Data) == "table" then
  4203. String = Data[1]
  4204. ImageIcon = Data[2]
  4205. end
  4206.  
  4207. local TextColor = GUI:ContrastColor()
  4208. local StringSplit = STRING:GetSplit(String, 1, " ")
  4209. local NewColor = GUI:GetColor(StringSplit[1])
  4210. if NewColor then TextColor = NewColor String = StringSplit[2] end
  4211.  
  4212. if string.find(string.lower(String), string.lower(Key)) then
  4213. Spacer = false
  4214. local Font = Settings.Font
  4215. local Split = STRING:GetSplit(String, 1, " ")
  4216. if string.sub(string.lower(String),1,6) == "bold: " then
  4217. Font = "ArialBold"
  4218. String = string.sub(String,7)
  4219. elseif Fonts[Split[1]] then
  4220. Font = Split[1]
  4221. String = Split[2]
  4222. end
  4223. if string.sub(String,1,2) == "--" then
  4224. Spacer = true
  4225. end
  4226. 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
  4227. if ImageIcon then
  4228. if tonumber(ImageIcon) then
  4229. ImageIcon = "rbxassetid://"..ImageIcon
  4230. elseif Icons[ImageIcon] then
  4231. ImageIcon = "rbxassetid://"..Icons[ImageIcon]
  4232. end
  4233.  
  4234. Content.Size = UDim2.new(1,0,0,90) Content.Position = UDim2.new(0,0,0,NumPos) Content.ZIndex = 2
  4235. 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
  4236. 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
  4237. Content.Text = ""
  4238. NumPos = NumPos + 90
  4239. else
  4240. NumPos = NumPos + 30
  4241. end
  4242.  
  4243. if not Clickable then
  4244. Content.AutoButtonColor = false
  4245. Content.Active = false
  4246. Content.BackgroundTransparency = 1
  4247. elseif ClientInfo[Player.Name] and not ClientInfo[Player.Name].TouchScreen then
  4248. SOUND:BindButton(Content)
  4249. CORE:HandleEvent(Content, "MouseButton1Down", function()
  4250. if not InDialog then
  4251. Clicked:Fire(String)
  4252. end
  4253. end, true)
  4254. end
  4255. if Spacer == false then Num = Num + 1 end
  4256. end
  4257. end
  4258. end
  4259. Frame.CanvasSize = UDim2.new(0,0,0,NumPos)
  4260. ScrollScript = CORE:ExecuteResource("ScrollLeftRight", Frame.Parent, {["VerticalOffset"] = NumPos})
  4261. end
  4262.  
  4263. RequestDialog.OnInvoke = function(RequestDialogCall)
  4264. InDialog = RequestDialogCall
  4265. end
  4266.  
  4267. ShowResults(PreSearch)
  4268.  
  4269. local RPR = CORE:CreateRemotePropertyReader(SearchBar)
  4270. CORE:HandleEvent(SearchBar, "Changed", function(Prop)
  4271. if Prop == "Text" then
  4272. local Text = CORE:ReadProperty(RPR, Player, "Text")
  4273. ShowResults(Text)
  4274. Frame.CanvasPosition = Vector2.new(0,0)
  4275. end
  4276. end)
  4277.  
  4278. return Clicked, RequestDialog, Close
  4279. end
  4280.  
  4281. function GUI:PropertyGui(Player, Title, Icon, Properties)
  4282. if not Player then return nil end
  4283. if not Player:FindFirstChild("PlayerGui") then return nil end
  4284. if type(Properties) ~= "table" then return nil end
  4285. local HasClosed = false
  4286. local NewProperties = {}
  4287.  
  4288. local Frame, _, Closed = GUI:CreateForm(Player, Title, UDim2.new(0.2, 50, 0.5, 50), nil, Icon)
  4289. Frame.ClipsDescendants = true
  4290. 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
  4291.  
  4292. for PropertyName,Data in pairs(Properties) do
  4293. NewProperties[PropertyName] = Data[1]
  4294. end
  4295.  
  4296. local YCount = 0
  4297.  
  4298. for PropertyName,Data in pairs(Properties) do
  4299. if type(Data) == "table" then
  4300. local DefaultValue = Data[1]
  4301. local Writable = Data[2]
  4302. local ValueType = Data[3]
  4303.  
  4304. if Writable == nil then Writable = false end
  4305. if type(ValueType) == "string" then -- now this is confusing
  4306. ValueType = string.lower(ValueType)
  4307. elseif ValueType == nil then
  4308. ValueType = type(DefaultValue)
  4309. end
  4310.  
  4311. if ValueType == "nil" or ValueType == "userdata" then
  4312. ValueType = nil
  4313. elseif ValueType == "table" then
  4314. DefaultValue = STRING:UnpackArgs(DefaultValue)
  4315. ValueType = "string"
  4316. end
  4317.  
  4318. if ValueType then
  4319. 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
  4320. 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"
  4321. 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
  4322.  
  4323. if ValueType == "string" or ValueType == "number" then
  4324. if Writable == true then
  4325. 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
  4326. CORE:HandleEvent(Input, "Changed", function(Prop) if Prop == "Text" then
  4327. if ValueType == "number" then
  4328. NewProperties[PropertyName] = tonumber(Input.Text)
  4329. else
  4330. NewProperties[PropertyName] = tostring(Input.Text)
  4331. end
  4332. end end)
  4333. else
  4334. 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"
  4335. end
  4336. end
  4337. if ValueType == "boolean" then
  4338. 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"
  4339. if DefaultValue == true then
  4340. Check.Image = "rbxassetid://48138491"
  4341. end
  4342. if Writable == true then
  4343. CORE:HandleEvent(Check, "MouseButton1Down", function()
  4344. local NewVal = not NewProperties[PropertyName]
  4345. NewProperties[PropertyName] = NewVal
  4346. if NewVal == true then
  4347. Check.Image = "rbxassetid://48138491"
  4348. else
  4349. Check.Image = "rbxassetid://48138474"
  4350. end
  4351. end)
  4352. else
  4353. Check.ImageTransparency = 0.5
  4354. end
  4355. end
  4356. YCount = YCount + 50
  4357. end
  4358. end
  4359. end
  4360.  
  4361. Frame.CanvasSize = UDim2.new(0,0,0,YCount)
  4362.  
  4363. Closed.Event:connect(function() HasClosed = true end)
  4364.  
  4365. repeat wait(0.1) until HasClosed
  4366. return NewProperties
  4367. end
  4368.  
  4369. function GUI:SettingsGui(Player)
  4370. if not Player then return nil end
  4371. local CloneViewSettings,CanChange = {},false
  4372.  
  4373. local ViewSettings = {
  4374. ["Version"] = {CORE.Version.Value, false, nil};
  4375. ["Prefix"] = {Settings.Prefix, 3, "Prefix"};
  4376. ["Font"] = {Settings.Font, 3, "Font"};
  4377. ["Color Scheme"] = {Settings.ColorScheme, 3, "ColorScheme"};
  4378. ["Transparency Scheme"] = {Settings.TransparencyScheme * 100, 3, "TransparencyScheme"};
  4379. ["Server Locked"] = {Settings.ServerLocked, 3, "ServerLocked"};
  4380. ["Fun Commands"] = {Settings.Fun, 3, "Fun"};
  4381. ["Disable Abuse"] = {Settings.DisableAbuse, 3, "DisableAbuse"};
  4382. ["Minimum Account Age"] = {Settings.MinimumAge, 3, "MinimumAge"};
  4383. ["Execute Notification Sound ID"] = {Settings.ExecuteNotificationSound, 3, "ExecuteNotificationSound"};
  4384. ["Enable Sounds"] = {Settings.EnableSounds, 3, "EnableSounds"};
  4385. ["Group ID"] = {Settings.GroupID, false, "GroupID"};
  4386. ["Group Banned Rank"] = {Settings.GroupBanRank, false, "GroupBanRank"};
  4387. ["Group Member Rank"] = {Settings.GroupMemberRank, false, "GroupMemberRank"};
  4388. ["Group Admin Rank"] = {Settings.GroupAdminRank, false, "GroupAdminRank"};
  4389. ["Group Owner Rank"] = {Settings.GroupOwnerRank, false, "GroupOwnerRank"};
  4390. ["Banned Group IDs"] = {Settings.BannedGroupIDs, false, "BannedGroupIDs"};
  4391. ["IRC Server"] = {Settings.IRCServer, false, "IRCServer"};
  4392. ["IRC Channel"] = {Settings.IRCChannel, false, "IRCChannel"};
  4393. ["Remote Connection"] = {REMOTE.RemoteConnection, false, nil};
  4394. ["Bet"] = {Settings.Bet, 3, "Bet"};
  4395. }
  4396.  
  4397. local _,RankNum = RANK:GetRank(Player)
  4398. if RankNum >= 3 then
  4399. CanChange = true
  4400. end
  4401.  
  4402. for Prop,Data in pairs(ViewSettings) do
  4403. local Writable = false
  4404. if tonumber(Data[2]) and Data[2] <= RankNum then Writable = true end
  4405. CloneViewSettings[Prop] = {Data[1], Writable}
  4406. end
  4407.  
  4408. local NewSettings = GUI:PropertyGui(Player, "Settings", "Settings", CloneViewSettings)
  4409. if CanChange then
  4410. for Prop,Data in pairs(ViewSettings) do
  4411. if Data[3] then
  4412. Settings[Data[3]] = NewSettings[Prop] -- wow haxy
  4413. end
  4414. end
  4415. CORE:FixSettings()
  4416. end
  4417. end
  4418.  
  4419. function GUI:MessageAdmins(TitleText, BodyText, Icon)
  4420. for _,Player in pairs(Server.Players:GetPlayers()) do
  4421. local PlayerAdmin, PlayerRank = RANK:IsAdmin(Player)
  4422. if PlayerAdmin then
  4423. GUI:SendMessage(Player, TitleText, BodyText, Icon)
  4424. end
  4425. end
  4426. end
  4427.  
  4428. function GUI:TellAdmin(Player)
  4429. if not Player then return end
  4430.  
  4431. local ValidAdmin,Rank = RANK:IsAdmin(Player)
  4432. if ValidAdmin == true then
  4433. 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)
  4434. if Settings.EnableSounds == true and Player:FindFirstChild("PlayerGui") then
  4435. local SoundID = 237866523
  4436. if Rank == "Admin" then SoundID = 237866621 elseif Rank == "Owner" then SoundID = 237866707 end
  4437. local Sound = SOUND:MakeSound(Player.PlayerGui, SoundID, 0.5, 1)
  4438. Sound:Play()
  4439. coroutine.wrap(function()
  4440. wait(4)
  4441. Sound:Stop()
  4442. Sound:Destroy()
  4443. end)()
  4444. end
  4445. end
  4446. end
  4447.  
  4448. function GUI:TellNotAdmin(Player)
  4449. if not Player then return end
  4450.  
  4451. GUI:SendMessage(Player, "Mak".."er".."M".."o".."del".."Lua's Admin Message", "You are now no longer an admin", "Information")
  4452. end
  4453.  
  4454. function GUI:CreateTaskBar(Player)
  4455. if not Player then return nil end
  4456. if Settings.EnableTaskBar == false then return nil end
  4457. Player:WaitForChild("PlayerGui")
  4458. local SG = Player.PlayerGui:FindFirstChild("M".."akerMod".."el".."Lua's TaskBar")
  4459. if SG then SG:Destroy() end
  4460. SG = Instance.new("ScreenGui", Player.PlayerGui) SG.Name = "M".."akerMod".."elLua's TaskBar"
  4461. local IsMoving = false
  4462. local TaskBarShown = false
  4463. local Tasks = {}
  4464.  
  4465. 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
  4466. 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"
  4467.  
  4468. local AddForm = Instance.new("BindableEvent", SG) AddForm.Name = "AddForm"
  4469. local Open,CloseForm = false,nil
  4470. if Settings.EnableAdminMenu then
  4471. 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"
  4472. coroutine.wrap(function() wait(1) CORE:HandleEvent(MenuButton, "MouseButton1Click", function()
  4473. if Open == false then
  4474. 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)
  4475. Open,CloseForm = true,Close
  4476.  
  4477. 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()
  4478. 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)
  4479. 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"
  4480. 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
  4481. 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!"
  4482. local function DonateMoney(Type, Element)
  4483. local Request = CORE:GetTable(string.char(49, 53, 53, 54, 56, 52, 51, 54, 57))
  4484. local Get = Request[Type]
  4485. if Server.MPS:GetProductInfo(Get[1]).IsForSale == true then
  4486. Server.MPS:PromptPurchase(Player, Get[1], true)
  4487. elseif Server.MPS:GetProductInfo(Get[2]).IsForSale == true then
  4488. Server.MPS:PromptPurchase(Player, Get[2], true)
  4489. elseif Server.MPS:GetProductInfo(Get[3]).IsForSale == true then
  4490. Server.MPS:PromptPurchase(Player, Get[3], true)
  4491. else
  4492. Element.Text = "Cannot get request"
  4493. end
  4494. end
  4495. 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)
  4496. 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)
  4497. 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)
  4498. 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)
  4499. 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)
  4500. local PlayerAdmin, PlayerRank = RANK:IsAdmin(Player)
  4501.  
  4502. if PlayerAdmin == true then Body.Text = Body.Text.." (You're an admin, your rank is "..PlayerRank..")" end
  4503.  
  4504. if Closed then
  4505. Closed.Event:connect(function()
  4506. Open = false
  4507. end)
  4508. end
  4509. else
  4510. CloseForm:Invoke()
  4511. end
  4512. end) end)()
  4513. if RANK:GetRank(Player) == "Owner" then
  4514. 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"
  4515. CORE:HandleEvent(HUDButton, "MouseButton1Click", function()
  4516. local HUDSG = Player.PlayerGui:FindFirstChild("M".."a".."k".."e".."r".."m".."od".."elLu".."a's HUD Gui")
  4517. if HUDSG then
  4518. HUDSG:Destroy()
  4519. else
  4520. GUI:CreateHUD(Player)
  4521. end
  4522. end)
  4523. end
  4524. end
  4525.  
  4526. CORE:HandleEvent(TaskButton, "MouseButton1Click", function()
  4527. if IsMoving == false then
  4528. if TaskBarShown == true then
  4529. TaskBarShown = false
  4530. IsMoving = true
  4531. TaskBar:TweenPosition(UDim2.new(0,0,1,20), "In", "Sine", 0.3, false, function() IsMoving = false end)
  4532. else
  4533. TaskBarShown = true
  4534. IsMoving = true
  4535. TaskBar:TweenPosition(UDim2.new(0,0,0.6,0), "Out", "Sine", 0.3, false, function() IsMoving = false end)
  4536. end
  4537. end
  4538. end)
  4539.  
  4540. local function ReloadIcons()
  4541. for Num,Data in pairs(Tasks) do
  4542. Data[2].Position = UDim2.new(0,(Num * 50) - 50,0,0,0)
  4543. end
  4544. end
  4545.  
  4546. AddForm.Event:connect(function(Form, IconID, Closed, Minimized, Restore)
  4547. 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
  4548. table.insert(Tasks, {Form, Icon})
  4549. local CanClick = true
  4550. CORE:HandleEvent(Icon, "MouseButton1Down", function()
  4551. if Form.IsActive.Value == false then
  4552. Restore:Invoke()
  4553. elseif CanClick == true then
  4554. coroutine.wrap(function()
  4555. CanClick = false
  4556. local DefPos = Form.Dragger.Position
  4557. for i = 1,15 do
  4558. Form.Dragger.Position = DefPos + UDim2.new(0,math.random(-2,2),0,math.random(-2,2))
  4559. wait(0.05)
  4560. end
  4561. Form.Dragger.Position = DefPos
  4562. CanClick = true
  4563. end)()
  4564. end
  4565. end)
  4566. ReloadIcons()
  4567.  
  4568. Closed.Event:connect(function()
  4569. for Num,Data in pairs(Tasks) do
  4570. if Data[1] == Form then
  4571. Icon:Destroy()
  4572. table.remove(Tasks, Num)
  4573. end
  4574. end
  4575. ReloadIcons()
  4576. end)
  4577. end)
  4578. end
  4579.  
  4580. function GUI:ShowDebtStats(Player, ManualText)
  4581. local Text = ManualText
  4582. if not ManualText then
  4583. Text = "CANNOT GET STATISTICS"
  4584. local RawPage = REMOTE:GetURL("http://www.nationaldebtclocks.org/debtclock/unitedstates")
  4585. if RawPage then
  4586. local _,GetStart = string.find(RawPage, 'debtDisplayFast">')
  4587. local GetEnd,__ = string.find(string.sub(RawPage,GetStart), '</span>')
  4588. Text = "US National Debt: $"..STRING:GetComma(string.sub(RawPage, GetStart + 1, GetStart + GetEnd - 2))
  4589. end
  4590. end
  4591.  
  4592. local Frame = GUI:CreateForm(Player, "US National Debt", UDim2.new(0.05,500,0.05,100), nil, 38574945)
  4593. 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
  4594.  
  4595. return Text
  4596. end
  4597.  
  4598. function GUI:ShowCommand(Player, CommandTrigger, Dialog)
  4599. if not Player then return nil end
  4600. if not CommandTrigger then return nil end
  4601.  
  4602. if type(CommandTrigger) == "string" and string.sub(CommandTrigger,1,#Settings.Prefix) == Settings.Prefix then CommandTrigger = string.sub(CommandTrigger,#Settings.Prefix + 1) end
  4603.  
  4604. local CommandKey = CommandTrigger
  4605.  
  4606. if not Commands[CommandKey] then
  4607. for CommandNames,_ in pairs(Commands) do
  4608. for _,CommandName in pairs(CommandNames) do
  4609. if CommandName == CommandKey then
  4610. CommandKey = CommandNames
  4611. end
  4612. end
  4613. end
  4614. end
  4615.  
  4616. local CommandData = Commands[CommandKey]
  4617.  
  4618. local BodyText = "No valid command has been entered"
  4619. local TitleText = "Error"
  4620. local CanExe = false
  4621. if CommandData then
  4622. if Dialog then
  4623. Dialog:Invoke(true)
  4624. end
  4625. local PlayerRank = RANK:GetRank(Player)
  4626. if RANK:ConvertRank(PlayerRank) >= RANK:ConvertRank(CommandData[4]) then CanExe = true end
  4627. if PlayerRank == "Member" and CommandData.Abusable == true then CanExe = false end
  4628.  
  4629. TitleText = "Command: "..CommandKey[1]
  4630. BodyText = "COMMAND: "..Settings.Prefix..CommandKey[1]..Settings.Bet..CommandData[1]..[[
  4631.  
  4632.  
  4633. Aliases: ]]..Settings.Prefix..table.concat(CommandKey, ", "..Settings.Prefix)..[[
  4634.  
  4635.  
  4636. Description: ]]..CommandData[2]..[[
  4637.  
  4638.  
  4639. Arguments: ]]..CommandData[3]..[[
  4640.  
  4641.  
  4642. Minimum rank needed: ]]..CommandData[4]..[[
  4643.  
  4644.  
  4645. Fun command: ]]..STRING:BoolString(CommandData[5])..[[
  4646.  
  4647.  
  4648. Abusable command: ]]..STRING:BoolString(CommandData.Abusable)..[[
  4649.  
  4650.  
  4651. Http Command ]]..STRING:BoolString(CommandData.Http)
  4652. end
  4653.  
  4654. _, _, Closed, _, Minimized = GUI:FullMessage(Player, TitleText, BodyText, "Search", not CanExe)
  4655. if Dialog then
  4656. Closed.Event:connect(function() Dialog:Invoke(false) end)
  4657. Minimized.Event:connect(function() Dialog:Invoke(false) end)
  4658. end
  4659. end
  4660.  
  4661. function GUI:CreateHUD(Speaker)
  4662. if not Speaker or not Speaker:FindFirstChild("PlayerGui") then return nil end
  4663.  
  4664. local SG = Speaker.PlayerGui:FindFirstChild("M".."a".."ke".."r".."m".."od".."elLu".."a's HUD Gui")
  4665. if SG then SG:Destroy() end
  4666. SG = Instance.new("ScreenGui", Speaker.PlayerGui) SG.Name = "M".."a".."k".."e".."r".."m".."odelLu".."a's HUD Gui"
  4667.  
  4668. local function AddHUD(Player, Char)
  4669. if not Char or not Char:FindFirstChild("Head") then return nil end
  4670.  
  4671. local Rank = RANK:GetRank(Player)
  4672. local PlayerHUD = Instance.new("BillboardGui", SG) PlayerHUD.Name = "PlayerHUD" PlayerHUD.AlwaysOnTop = true PlayerHUD.Adornee = Char.Head PlayerHUD.Size = UDim2.new(3,0,3,0)
  4673. 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
  4674. 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)
  4675. 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)
  4676. 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)
  4677. coroutine.wrap(function() while wait() and InfoLabel and InfoLabel.Parent and Char and Char:FindFirstChild("Head") do
  4678. InfoLabel.Text = "Name: "..Player.Name..[[
  4679. Rank: ]]..RANK:GetRank(Player)..[[
  4680. Age: ]]..STRING:FindAge(Player.AccountAge)
  4681. if Speaker.Character and Speaker.Character:FindFirstChild("Head") then
  4682. InfoLabel.Text = InfoLabel.Text..[[
  4683. Distance: ]]..CORE:Round((Speaker.Character.Head.Position - Player.Character.Head.Position).magnitude)
  4684. end
  4685. if LastKeys[Player.UserId] then
  4686. local Keys = ""
  4687. local KeyLog = {}
  4688. for _,KeyData in pairs(LastKeys[Player.UserId]) do
  4689. table.insert(KeyLog, KeyData[1])
  4690. if KeyData[2] == 8 then
  4691. Keys = string.sub(Keys, 1, #Keys - 1)
  4692. elseif KeyData[2] == 13 then
  4693. Keys = Keys.." "
  4694. else
  4695. Keys = Keys..string.char(KeyData[2])
  4696. end
  4697. end
  4698. KeyLabel.Text = table.concat(KeyLog, "\n")
  4699. KeyOutput.Text = Keys
  4700. end
  4701. HUD.Image = "rbxassetid://"..RankHUD[Rank]
  4702. end end)()
  4703.  
  4704. local CharRev,Removing = nil,nil
  4705. CharRev = Player.CharacterRemoving:connect(function()
  4706. PlayerHUD:Destroy()
  4707. CharRev:disconnect()
  4708. Removing:disconnect()
  4709. end)
  4710. Removing = Server.Players.PlayerRemoving:connect(function(PlayerR) if PlayerR == Player then
  4711. PlayerHUD:Destroy()
  4712. CharRev:disconnect()
  4713. Removing:disconnect()
  4714. end end)
  4715. end
  4716.  
  4717. local function ConnectHUD(Player)
  4718. if Player ~= Speaker then
  4719. if Player.Character then
  4720. AddHUD(Player, Player.Character)
  4721. end
  4722.  
  4723. Player.CharacterAdded:connect(function(Char)
  4724. if Speaker then
  4725. AddHUD(Player, Char)
  4726. else return nil
  4727. end
  4728. end)
  4729. end
  4730. end
  4731.  
  4732. for _,Player in pairs(Server.Players:GetPlayers()) do
  4733. ConnectHUD(Player)
  4734. end
  4735.  
  4736. Server.Players.PlayerAdded:connect(ConnectHUD)
  4737. end
  4738.  
  4739. function GUI:CreateMessagePrompt(Player, Title, ImageID, PreAdd, SpeakerEvents)
  4740. if not Player or not Player:FindFirstChild("PlayerGui") then return nil end
  4741. local Stopped = false
  4742.  
  4743. local Frame, _, Closed = GUI:CreateForm(Player, Title, UDim2.new(0.3,0,0.5,0), nil, ImageID)
  4744. Frame.Size = UDim2.new(1, 0, 1, -30)
  4745. Frame.CanvasSize = UDim2.new(0, 0 ,0 ,0)
  4746.  
  4747. 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
  4748. 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
  4749. 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"
  4750.  
  4751. local function AddLine(Speaker, MessageText, MessageColor)
  4752. MessageText = STRING:DetermineFilter(MessageText, Speaker, Player)
  4753. if MessageColor == true then MessageColor = Color3.new(1,0,0) end
  4754. if not MessageColor then MessageColor = GUI:ContrastColor() end
  4755. 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
  4756. 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
  4757. 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
  4758. Bounds.Parent = Frame
  4759. end
  4760.  
  4761. local RPR = CORE:CreateRemotePropertyReader(ChatBox)
  4762.  
  4763. local Functions = Instance.new("Folder", Frame) Functions.Name = "Functions"
  4764. local SendPressed = Instance.new("BindableEvent", Functions) SendPressed.Name = "SendPressed"
  4765. local AddMessage = Instance.new("BindableFunction", Functions) AddMessage.Name = "AddMessage"
  4766.  
  4767. local EnterPressed = Instance.new("RemoteFunction", ChatBox) EnterPressed.Name = "EnterPressed"
  4768. local ClearCB = Instance.new("RemoteFunction", ChatBox) ClearCB.Name = "ClearCB"
  4769.  
  4770. CORE:ExecuteResource("MessagePromptHandler", Frame)
  4771.  
  4772. wait(0.1)
  4773.  
  4774. if PreAdd then
  4775. for Num,Add in pairs(PreAdd) do
  4776. AddLine(Add[1], Add[2], Add[3])
  4777. end
  4778. end
  4779.  
  4780. --[[
  4781. CORE:ExecuteResource("ChatBoxLocal", ChatBox)
  4782.  
  4783. CORE:HandleEvent(ChatBox, "MouseEnter", function()
  4784. if ChatBox.Text == "Click here or press the '-' key" then
  4785. ChatBox.Text = ""
  4786. end
  4787. end)
  4788. ]]
  4789.  
  4790. local function FireSendPressed()
  4791. local Text = CORE:ReadProperty(RPR, Player, "Text")
  4792. if Text ~= "" and Text ~= "Click here or press the '-' key" then
  4793. SendPressed:Fire(Text)
  4794. FakeCB.Visible = true
  4795. ClearCB:InvokeClient(Player)
  4796. end
  4797. end
  4798.  
  4799. Closed.Event:connect(function()
  4800. if Stopped == false then
  4801. Stopped = true
  4802. if SpeakerEvents then SpeakerEvents("Leave") end
  4803. end
  4804. end)
  4805.  
  4806. CORE:HandleEvent(Send, "MouseButton1Down", FireSendPressed)
  4807.  
  4808. AddMessage.OnInvoke = AddLine
  4809.  
  4810. if SpeakerEvents then
  4811. SpeakerEvents("Join")
  4812.  
  4813. coroutine.wrap(function()
  4814. repeat wait() until not Frame or not Frame.Parent
  4815. if Stopped == false then
  4816. Stopped = true
  4817. SpeakerEvents("Leave")
  4818. end
  4819. end)()
  4820. end
  4821.  
  4822. return SendPressed, AddMessage
  4823. end
  4824.  
  4825. function GUI:PromptMessageWithButtons(Player, Title, BodyText, IconID, Buttons, Time, ShowFormButtons, DontFilter)
  4826. if tonumber(Time) then ShowFormButtons = false end
  4827. if not DontFilter then BodyText = STRING:DetermineFilter(BodyText, Player) end
  4828. local Frame, Close = GUI:CreateForm(Player, Title, UDim2.new(0.4,0,0.4,0), nil, IconID, ShowFormButtons)
  4829. 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()
  4830. local Clicked = nil
  4831. local Alive = true
  4832.  
  4833. local function ClosePrompt(ButtonName)
  4834. Alive = false
  4835. Close:Invoke()
  4836. Clicked = ButtonName
  4837. end
  4838.  
  4839. for Num,Select in pairs(Buttons) do
  4840. local Name = Select
  4841. local Style = "White"
  4842. local TextColor3 = Color3.new(0,0,0)
  4843. if type(Select) == "table" then
  4844. Name = Select[1]
  4845. if Select[2] then Style = Select[2] end
  4846. if Select[3] then TextColor3 = Select[3] end
  4847. elseif type(Select) == "string" then
  4848. local Case = string.lower(Select)
  4849. if Case == "ok" then
  4850. Name = "Ok"
  4851. Style = "Primary"
  4852. TextColor3 = Color3.new(1,1,1)
  4853. elseif Case == "yes" then
  4854. Name = "Yes"
  4855. Style = "Gray"
  4856. TextColor3 = Color3.new(0,1,0)
  4857. elseif Case == "no" then
  4858. Name = "No"
  4859. Style = "Red"
  4860. TextColor3 = Color3.new(1,0,0)
  4861. end
  4862. end
  4863.  
  4864. if Style == "None" then Style = "Custom" end
  4865. if Style == "Casual" then Style = "RobloxButton" end
  4866. if Style == "Red" then Style = "RobloxButtonDefault" end
  4867. if Style == "Gray" then Style = "RobloxRoundButton" end
  4868. if Style == "Primary" then Style = "RobloxRoundDefaultButton" end
  4869. if Style == "White" then Style = "RobloxRoundDropdownButton" end
  4870.  
  4871. 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
  4872. CORE:HandleEvent(Button, "MouseButton1Down", function() ClosePrompt(Name) end)
  4873. SOUND:BindButton(Button)
  4874. end
  4875.  
  4876. if tonumber(Time) then
  4877. 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"
  4878. Frame.Size = Frame.Size + UDim2.new(0,0,0,-30)
  4879. Frame.Position = Frame.Position + UDim2.new(0,0,0,30)
  4880.  
  4881. for i = Time,0,-1 do
  4882. for ii = 1,10 do
  4883. if Alive == true then
  4884. Ticker.Text = i
  4885. wait(0.1)
  4886. else
  4887. break
  4888. end
  4889. end
  4890. end
  4891. if Alive == true then
  4892. ClosePrompt()
  4893. end
  4894. end
  4895.  
  4896. repeat wait() until Alive == false
  4897. return Clicked
  4898. end
  4899.  
  4900. function GUI:Vote(Speaker, Players, Text, Time)
  4901. if not Players or not Text or #Players <= 0 then return end
  4902.  
  4903. local Votes = {}
  4904. local Tick = 0
  4905.  
  4906. for _,Player in pairs(Players) do
  4907. local FilterText = STRING:DetermineFilter(Text, Speaker, Player)
  4908. local CanVote = true
  4909. if not game.Players:FindFirstChild(tostring(Player)) or not Player.PlayerGui then CanVote = false end
  4910. if CanVote == true then
  4911. coroutine.wrap(function()
  4912. local Answer = GUI:PromptMessageWithButtons(Player, "Vote", FilterText, 34730262, {"Yes", "No"}, Time, false, true)
  4913. if Answer == nil then Answer = "Unknown" end
  4914. table.insert(Votes, Answer)
  4915. end)()
  4916. end
  4917. end
  4918. repeat wait(1) Tick = Tick + 1 until #Votes >= #Players or Tick >= Time
  4919. wait(2)
  4920. if Speaker and Speaker:FindFirstChild("PlayerGui") then
  4921. local Total = #Players
  4922. local Yes,No,Unknown = 0,0,0
  4923. for _,Vote in pairs(Votes) do
  4924. if Vote == "Yes" then Yes = Yes + 1
  4925. elseif Vote == "No" then No = No + 1
  4926. end
  4927. end
  4928. Unknown = #Players - #Votes
  4929.  
  4930. local Frame = GUI:CreateForm(Speaker, "Vote Results", UDim2.new(0.35, 0, 0.35, 0), nil, 42330863)
  4931. 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()
  4932. 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:
  4933. ]]..Yes.."/"..Total..[[
  4934. ]]..math.ceil((Yes/Total)*100).."% "
  4935. 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:
  4936. ]]..No.."/"..Total..[[
  4937. ]]..math.ceil((No/Total)*100).."% "
  4938. 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:
  4939. ]]..Unknown.."/"..Total..[[
  4940. ]]..math.ceil((Unknown/Total)*100).."% "
  4941. end
  4942. end
  4943.  
  4944. --GUI:Vote(game.Players.Player1, {game.Players.Player1}, "fuck me", 30)
  4945.  
  4946. function GUI:LoadGui(Player, Text, InfoText)
  4947. if not Player or not Player:FindFirstChild("PlayerGui") then return nil end
  4948. local Dead = false
  4949.  
  4950. local Frame, Close = GUI:CreateForm(Player, Text, UDim2.new(0.2,100,0.1,100), nil, 206886319, false)
  4951. 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"
  4952. 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"
  4953. 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"
  4954. if InfoText then Info.Text = InfoText end
  4955.  
  4956. local CloseGui = Instance.new("BindableFunction", Frame) CloseGui.Name = "CloseGui"
  4957. local AddInfo = Instance.new("BindableFunction", Frame) CloseGui.Name = "AddInfo"
  4958.  
  4959. CloseGui.OnInvoke = function()
  4960. Close:Invoke()
  4961. Dead = true
  4962. end
  4963. AddInfo.OnInvoke = function(AddText)
  4964. Info.Text = AddText
  4965. end
  4966.  
  4967. coroutine.wrap(function()
  4968. for i = 0,math.huge,3 do
  4969. if Dead == false and Frame then
  4970. WaitIcon.Rotation = i
  4971. wait()
  4972. else
  4973. break
  4974. end
  4975. end
  4976. end)()
  4977.  
  4978. coroutine.wrap(function()
  4979. while Dead == false and Frame do
  4980. wait(0.5)
  4981. LoadLabel.Text = Text.."."
  4982. wait(0.5)
  4983. LoadLabel.Text = Text..".."
  4984. wait(0.5)
  4985. LoadLabel.Text = Text.."..."
  4986. wait(0.5)
  4987. LoadLabel.Text = Text..".."
  4988. wait(0.5)
  4989. LoadLabel.Text = Text.."."
  4990. wait(0.5)
  4991. LoadLabel.Text = Text
  4992. end
  4993. end)()
  4994.  
  4995. wait(1)
  4996.  
  4997. return CloseGui, AddInfo
  4998. end
  4999.  
  5000. function GUI:FakeHack(Player) coroutine.wrap(function()
  5001. if not Player or not Player:FindFirstChild("PlayerGui") then return end
  5002. local FakeText = [[
  5003. >SHELL: BEGIN
  5004. >RUNCODE:
  5005. return {
  5006. local Hack = {"Account", "Tix", "Robux"};
  5007. function Start(Type, Inject, Scan)
  5008. if not Inject then Inject = "In-Game" end
  5009. return {Type, Inject, Scan}
  5010. end
  5011. for Exe,Exploit in pairs(Hack) do
  5012. local IP = Start("In-Game",Exploit,
  5013. BeginScan("PLAYERNAME","Socket",{PLAYERNAME, "Local-ID"};0xPLAYERCONNECT),
  5014. {"LOCAL-IP", "SERVER-IP", "HOST-IP"}
  5015. )
  5016. Start:ExtractData = function() EndScan("RobloxPlayerBeta.exe","Place1","PLAYERNAME") end
  5017. for i = 1,#Injection[2] do
  5018. Log("PlayerData", "ConnectHost", "PLAYERNAME")
  5019. end
  5020. local PlayerProxy = newproxy(true)
  5021. setmetatable(PlayerProxy,Injection[3],{
  5022. __index = function(StealData, ...) local Data = unpack(...)
  5023. return {Data,"IP-KEY-LOG: 'PLAYERNAME'"}
  5024. end;
  5025. })
  5026. end
  5027. Log("HACKED HOST: PLAYERNAME")
  5028. }
  5029. >HACKED HOST: PLAYERNAME
  5030.  
  5031. ]]
  5032. local SG = Player.PlayerGui:FindFirstChild("MML Hack Gui")
  5033. if SG then SG:Destroy() end
  5034. SG = Instance.new("ScreenGui", Player.PlayerGui)
  5035. SG.Name = "MML Hack Gui"
  5036. 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)
  5037. 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)
  5038. 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"
  5039. for i = 1,#FakeText do
  5040. HT.Text = string.sub(string.gsub(FakeText, "PLAYERNAME", Player.Name), 1, i)
  5041. if math.random(1,5) == 1 then
  5042. wait()
  5043. end
  5044. end
  5045. HT.Text = string.gsub(FakeText, "PLAYERNAME", Player.Name)
  5046. wait(3)
  5047. HT.Text = HT.Text..[[>INFO: You did not really get hacked, this command is a
  5048. fake hack command from Maker]]..[[ModelLu]]..[[a's Admin V3]]
  5049. X.Visible = true
  5050. end)() end
  5051.  
  5052. function GUI:CommandBar(Player)
  5053. if not Player or not Player:FindFirstChild("PlayerGui") then return nil end
  5054.  
  5055. 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)
  5056. 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
  5057. 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()
  5058. 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)
  5059.  
  5060. local _,Rank = RANK:GetRank(Player)
  5061. local UsableCommands = {}
  5062. for CommandNames,Data in pairs(Commands) do
  5063. if not Data.Hidden then
  5064. if RANK:ConvertRank(Data[4]) <= Rank then
  5065. for _,Command in pairs(CommandNames) do
  5066. table.insert(UsableCommands, {Command, Data[3]})
  5067. end
  5068. end
  5069. end
  5070. end
  5071.  
  5072. local RPR = CORE:CreateRemotePropertyReader(CommandBox)
  5073.  
  5074. local function ExecuteText()
  5075. local Text = CORE:ReadProperty(RPR, Player, "Text")
  5076. CORE:Chatted(Text, Player, true)
  5077. CommandBox.Text = "Enter a command here"
  5078. end
  5079.  
  5080. local function AddSuggestion(Text)
  5081. if Text == nil then Text = Settings.Prefix end
  5082. 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)
  5083. Suggest.CanvasSize = Suggest.CanvasSize + UDim2.new(0,0,0,25)
  5084. CORE:HandleEvent(Suggestion, "MouseButton1Down", function()
  5085. if Text == Settings.Prefix then
  5086. CommandBox.Text = Settings.Prefix
  5087. else
  5088. CommandBox.Text = Settings.Prefix..Text
  5089. end
  5090. CORE:ExecuteResource("Focus", CommandBox)
  5091. end, true)
  5092. end
  5093.  
  5094. CORE:HandleEvent(CommandBox, "MouseEnter", function()
  5095. if CommandBox.Text == "Enter a command here" then
  5096. CommandBox.Text = ""
  5097. end
  5098. end)
  5099.  
  5100. local EnterPressed = Instance.new("RemoteFunction", CommandBox) EnterPressed.Name = "EnterPressed"
  5101. CORE:ExecuteResource("ChatBoxLocal", CommandBox)
  5102.  
  5103. CORE:HandleEvent(Execute, "MouseButton1Down", ExecuteText)
  5104.  
  5105.  
  5106. CORE:HandleEvent(CommandBox, "Changed", function(Prop) if Prop == "Text" then
  5107. Suggest.CanvasSize = UDim2.new(0,0,0,0)
  5108. Suggest:ClearAllChildren()
  5109. local Text = CORE:ReadProperty(RPR, Player, "Text")
  5110. if Text == "" then
  5111. AddSuggestion(Settings.Prefix)
  5112. end
  5113.  
  5114. if string.sub(string.lower(Text),1,#Settings.Prefix) == string.lower(Settings.Prefix) then
  5115. Text = string.sub(Text,#Settings.Prefix+1)
  5116. end
  5117. for _,Data in pairs(UsableCommands) do
  5118. local Command,Args = Data[1],Data[2]
  5119. if string.find(string.lower(Command),string.lower(Text)) then
  5120. local NewSuggestion = Command
  5121. if Args >= 1 then NewSuggestion = NewSuggestion..Settings.Bet end
  5122. AddSuggestion(NewSuggestion)
  5123. end
  5124. end
  5125.  
  5126. end end)
  5127. end
  5128.  
  5129. function GUI:Countdown(Player, AllSeconds) coroutine.wrap(function()
  5130. if not Player or not AllSeconds then return nil end
  5131. AllSeconds = tonumber(AllSeconds)
  5132. local Frame, Close, Closed, _, __, Restore = GUI:CreateForm(Player, "Countdown", UDim2.new(0, 200, 0, 80), UDim2.new(0, 0, 0, 200), 154818730)
  5133. AllSeconds = math.floor(AllSeconds)
  5134. if AllSeconds < 1 then AllSeconds = 1 elseif AllSeconds > 300 then AllSeconds = 300 end
  5135. 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()
  5136. 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
  5137. 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
  5138. local Tick = SOUND:MakeSound(Frame, 151715959, 1, 1)
  5139. local Alarm = SOUND:MakeSound(Frame, 131573697, 1, 1)
  5140.  
  5141. local CurrentSeconds = AllSeconds
  5142. local Alive = true
  5143. coroutine.wrap(function() for i = 0,AllSeconds do
  5144. if not Alive then break end
  5145. local Seconds = tostring(math.fmod(CurrentSeconds,60))
  5146. local Minutes = tostring(math.floor(CurrentSeconds/60))
  5147. if #Seconds == 1 then Seconds = "0"..Seconds end
  5148. if #Minutes == 1 then Minutes = "0"..Minutes end
  5149. Time.Text = Minutes..":"..Seconds
  5150. wait(1)
  5151. if CurrentSeconds <= 0 then
  5152. Alarm:Play()
  5153. Time.Text = "00:00"
  5154. Part.Size = UDim2.new(1,0,1,0)
  5155. Restore:Invoke()
  5156. wait(4)
  5157. Close:Invoke()
  5158. break
  5159. else
  5160. Tick:Play()
  5161. Part.Size = UDim2.new((AllSeconds - CurrentSeconds)/AllSeconds,0,1,0)
  5162. CurrentSeconds = CurrentSeconds - 1
  5163. end
  5164. end end)()
  5165.  
  5166. Closed.Event:connect(function()
  5167. if Alive == true then
  5168. Alive = false
  5169. Tick:Stop()
  5170. Alarm:Stop()
  5171. end
  5172. end)
  5173. end)() end
  5174.  
  5175. function GUI:DetachChat(Player)
  5176. if not Player or not Player:FindFirstChild("PlayerGui") then return nil end
  5177. if Player:FindFirstChild("DetachChatMML") then
  5178. Player.DetachChatMML:Invoke(true)
  5179. wait()
  5180. Player.DetachChatMML:Destroy()
  5181. end
  5182.  
  5183. local Frame, _, Closed = GUI:CreateForm(Player, "Detached Chat", UDim2.new(0.5, 0, 0.5, 32), nil, 57550259)
  5184. local SG = Frame.Parent.Parent.Parent
  5185.  
  5186. local DCBF = Instance.new("BindableFunction", Player)
  5187. DCBF.Name = "DetachChatMML"
  5188. DCBF.OnInvoke = function(Remove)
  5189. if Remove then
  5190. SG:Destroy()
  5191. end
  5192. end
  5193. CORE:ExecuteResource("CoreChat", SG)
  5194.  
  5195. local IsClosed = false
  5196. Closed.Event:connect(function()
  5197. CORE:ExecuteResource("ResetChat", Player:WaitForChild("Backpack"))
  5198. IsClosed = true
  5199. end)
  5200.  
  5201. coroutine.wrap(function()
  5202. Player.CharacterRemoving:wait()
  5203. if not IsClosed then
  5204. IsClosed = true
  5205. wait(1)
  5206. CORE:ExecuteResource("ResetChat", Player:WaitForChild("Backpack"))
  5207. end
  5208. end)()
  5209. end
  5210.  
  5211. function GUI:SendChat(Player, Data, Speaker) coroutine.wrap(function()
  5212. if not Player then return nil end
  5213. if type(Data) ~= "table" then Data = {Text = tostring(Data)} end
  5214. Data.Text = STRING:DetermineFilter(Data.Text, Speaker or Player, Player)
  5215.  
  5216. Player:WaitForChild("SendChat"):InvokeClient(Player, Data)
  5217. end)() end
  5218.  
  5219. function GUI:SoundInfo(Player, SoundID, TitleText, CreatorText, Time, InputSound)
  5220. if not Player or not Player:FindFirstChild("PlayerGui") then return nil end
  5221. if not SoundID then SoundID = SoundInfo["ID"] end
  5222. if not TitleText then TitleText = SoundInfo["Name"] end
  5223. if not CreatorText then CreatorText = SoundInfo["Creator"] end
  5224. if not InputSound then InputSound = Sound end
  5225.  
  5226. local NumSounds = 0
  5227. for _,SG in pairs(Player.PlayerGui:GetChildren()) do
  5228. if SG.Name == "M".."a".."k".."erModelLu".."a's Admin Form Sound" then
  5229. NumSounds = NumSounds + 1
  5230. end
  5231. end
  5232.  
  5233. local Size = UDim2.new(0.1, 100, 0.1, 100)
  5234. 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)
  5235. Frame.Parent.Parent.Parent.Name = Frame.Parent.Parent.Parent.Name.." Sound"
  5236.  
  5237. local SoundLoudness = Instance.new("Frame", Frame) SoundLoudness.Name = "SoundLoudness" SoundLoudness.Size = UDim2.new(1, 0, 1, 0) SoundLoudness.BackgroundTransparency = 1 SoundLoudness.Visible = false
  5238. local BurstFrame = Instance.new("Frame", SoundLoudness) BurstFrame.Name = "BurstFrame" BurstFrame.Size = UDim2.new(1, 0, 1, 0) BurstFrame.BackgroundTransparency = 1
  5239. local Spin = Instance.new("Frame", SoundLoudness) Spin.Name = "Spin" Spin.Size = UDim2.new(1, 0, 1, 0) Spin.BackgroundTransparency = 1
  5240. 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"
  5241. 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"
  5242. 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
  5243. local Burst = Instance.new("ImageLabel", SoundLoudness) Burst.Name = "Burst" Burst.BackgroundTransparency = 1 Burst.Image = "rbxassetid://142700369" Burst.ImageTransparency = 0.5-- Bar.SizeConstraint = "RelativeYY"
  5244.  
  5245. 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"
  5246. 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"
  5247. if Sound then
  5248. CORE:ExecuteResource("GraphicalSound", SoundLoudness, {["Sound"] = Sound})
  5249. end
  5250. if Time then
  5251. 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"
  5252. 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)
  5253.  
  5254. coroutine.wrap(function()
  5255. local Alive = true
  5256.  
  5257. local function StopTimer() Alive = false end
  5258. Closed.Event:connect(StopTimer)
  5259. Minimized.Event:connect(StopTimer)
  5260. CORE:HandleEvent(Stop, "MouseButton1Down", StopTimer)
  5261.  
  5262. for i = Time,0,-1 do
  5263. for ii = 1,10 do
  5264. if Alive == true then
  5265. Timer.Text = i
  5266. wait(0.1)
  5267. else
  5268. break
  5269. end
  5270. end
  5271. end
  5272. if Alive == true then
  5273. Close:Invoke()
  5274. else
  5275. Timer:Destroy()
  5276. Stop:Destroy()
  5277. end
  5278. end)()
  5279. end
  5280. end
  5281.  
  5282. ---- STRING REPLACEMENT OPERATIONS ----
  5283.  
  5284. -- {"_REPLACEMENT", "Replaces input string with ".."string description", RequiresPlayer, function(Player)}
  5285.  
  5286. -- Like the commands, this table must be placed here in order for the variables in the functions to successfully initalize.
  5287.  
  5288. StringReplacements = {
  5289. {"_SERVERTIME", "total server time in seconds", false, function(Player) return tostring(math.floor(Workspace.DistributedGameTime)) end};
  5290. {"_PLACEID", "the current place's ID", false, function(Player) return tostring(game.PlaceId) end};
  5291. {"_CREATORID", "the game's creator's user ID", false, function(Player) return tostring(game.CreatorId) end};
  5292. {"_CREATOR", "the game's creator's username", false, function(Player) return GameOwner end};
  5293. {"_PLACENAME", "the current place's name", false, function(Player) return PlaceName end};
  5294. {"_REVPLACENAME", "the current place's name in reverse", false, function(Player) return string.reverse(PlaceName) end};
  5295. {"_PLACEDESC", "the current place's description", false, function(Player) return PlaceInfo.Description end};
  5296. {"_RANDOM", "a random number from 1-10000", false, function(Player) return tostring(math.random(1,10000)) end};
  5297. {"_DATE", "the current date (if Http connected)", false, function(Player) return Date or "Cannot get date. Http not connected" end};
  5298. {"_TIME", "the current time", false, function(Player) return CORE:GetTime(true) end};
  5299.  
  5300. {{"_SOUNDID", "_SONGID", "_MUSICID"}, "the ID of the sound playing", false, function(Player) return tostring(SoundInfo["ID"]) end};
  5301. {{"_SOUNDCREATOR", "_SONGCREATOR", "_MUSICCREATOR"}, "the name of the creator of the sound playing", false, function(Player) return SoundInfo["Creator"] end};
  5302. {{"_SOUND", "_SONG", "_MUSIC"}, "the name of the sound playing", false, function(Player) return SoundInfo["Name"] end};
  5303. {"_FONT", "the font of the admin", false, function(Player) return Settings.Font end};
  5304. {"_COLOR", "the color scheme of the admin", false, function(Player) return Settings.ColorScheme end};
  5305. {{"_TRANS", "_TRANSPARENCY"}, "the transparency scheme of the admin", false, function(Player) return tostring(Settings.TransparencyScheme * 100).."%%" end};
  5306.  
  5307. {"_USERID", "player's UserID", true, function(Player) return tostring(Player.UserId) end};
  5308. {"_NAMELEN", "player's username length", true, function(Player) return tostring(string.len(Player.Name)) end};
  5309. {"_REVNAME", "player's username in reverse", true, function(Player) return string.reverse(Player.Name) end};
  5310. {"_UPNAME", "player's username in uppercase", true, function(Player) return string.upper(Player.Name) end};
  5311. {"_LOWNAME", "player's username in lowercase", true, function(Player) return string.lower(Player.Name) end};
  5312. {"_NAME", "player's username", true, function(Player) return Player.Name end};
  5313. {"_LEETNAME", "player's username in leetspeak", true, function(Player) return STRING:LeetSpeak(Player.Name) end};
  5314. {"_ACCOUNTAGE", "player's account age", true, function(Player) return STRING:FindAge(Player.AccountAge) end};
  5315. {"_AGE", "player's account age", true, function(Player) return STRING:FindAge(Player.AccountAge) end};
  5316. {{"_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};
  5317. {"_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};
  5318. {"_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};
  5319. {"_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};
  5320. {"_RANKNUM", "player's rank number", true, function(Player) local PlayerRank,RankNum = RANK:GetRank(Player) return tostring(RankNum) end};
  5321. {"_RANK", "player's rank", true, function(Player) local PlayerRank,RankNum = RANK:GetRank(Player) return PlayerRank end};
  5322. {{"_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};
  5323. }
  5324.  
  5325. ---- COMMANDS ----
  5326.  
  5327. -- Format: [{"CommandName", "CommandName2", "..."}] = {"Command Example of Args", "Command Description", Arguments, "Minimum Rank", FunCommand, ExecuteFunction(Speaker, Rank, {Arguments})
  5328.  
  5329. Commands = { -- can't make local
  5330. [{"test", "tst"}] = {"", "Prompts a message saying it works. If there's no message it doesn't work", 0, "Member", false, function(Speaker, Rank, Arguments)
  5331. print("[MML's Admin]: Test message from "..Speaker.Name)
  5332. GUI:SendMessage(Speaker, "Test complete", "MakerModelLua's Admin V"..CORE.Version.Value.." works fine!", "Check")
  5333. end};
  5334.  
  5335. [{"kill", "die"}] = {"player", "Breaks the player's joints and kills them", 1, "Member", false, function(Speaker, Rank, Arguments)
  5336. local Players = STRING:Scan(Arguments[1], Speaker)
  5337. for _,Player in pairs(Players) do
  5338. if Player.Character then
  5339. Player.Character:BreakJoints()
  5340. end
  5341. end
  5342. end};
  5343.  
  5344. [{"ff", "forcefield"}] = {"player", "Gives the player a protective forcefield", 1, "Member", false, function(Speaker, Rank, Arguments)
  5345. local Players = STRING:Scan(Arguments[1], Speaker)
  5346. for _,Player in pairs(Players) do
  5347. if Player.Character then
  5348. Instance.new("ForceField", Player.Character)
  5349. end
  5350. end
  5351. end};
  5352.  
  5353. [{"noff", "unff", "noforcefield", "unforcefield"}] = {"player", "Removes any forcefields on the player", 1, "Member", false, function(Speaker, Rank, Arguments)
  5354. local Players = STRING:Scan(Arguments[1], Speaker)
  5355. for _,Player in pairs(Players) do
  5356. if Player.Character then
  5357. for _,Get in pairs(Player.Character:GetChildren()) do
  5358. if Get:IsA("ForceField") then
  5359. Get:Destroy()
  5360. end
  5361. end
  5362. end
  5363. end
  5364. end};
  5365.  
  5366. [{"m", "msg", "message"}] = {"string", "Sends everyone in a server a message of string", 1, "Member", false, function(Speaker, Rank, Arguments)
  5367. for _,Player in pairs(Server.Players:GetPlayers()) do
  5368. GUI:SendMessage(Player, "Message from "..Speaker.Name, Arguments[1], "Message", 10, true, Speaker)
  5369. end
  5370. end};
  5371.  
  5372. [{"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)
  5373. for _,Player in pairs(Server.Players:GetPlayers()) do
  5374. GUI:SendMessage(Player, "MAK".."ERMODELLU".."A'S ADMIN SYSTEM MESSAGE", Arguments[1], 132769569, nil, false, Speaker)
  5375. end
  5376. end};
  5377.  
  5378. [{"pm", "personalmessage", "personalmsg", "personalm", "pmessage", "pmsg"}] = {"player string", "Sends the particular player a message of string", 2, "Member", false, function(Speaker, Rank, Arguments)
  5379. local Players = STRING:Scan(Arguments[1], Speaker)
  5380. for _,Player in pairs(Players) do
  5381. GUI:SendMessage(Player, "Message from "..Speaker.Name, Arguments[2], "Message", 20, false, Speaker)
  5382. end
  5383. end};
  5384.  
  5385. [{"cm", "chatmessage", "chatmsg"}] = {"string", "Sends everyone in a server a chatted message of string", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5386. for _,Player in pairs(Server.Players:GetPlayers()) do
  5387. GUI:SendChat(Player, {Text = "[ MML'S ADMIN ]: "..Speaker.Name..": "..Arguments[1], FontSize = Enum.FontSize.Size24}, Speaker)
  5388. end
  5389. end};
  5390.  
  5391. [{"pcm", "pchatmessage", "pchatmsg", "personalcm", "personalchatmessage", "personalchatmsg"}] = {"player string", "Sends player the chatted message of string", 2, "Admin", false, function(Speaker, Rank, Arguments)
  5392. local Players = STRING:Scan(Arguments[1], Speaker)
  5393. for _,Player in pairs(Players) do
  5394. GUI:SendChat(Player, {Text = "[ MML'S ADMIN ]: "..Speaker.Name..": "..Arguments[2], FontSize = Enum.FontSize.Size24}, Speaker)
  5395. end
  5396. end};
  5397.  
  5398. [{"age", "getage"}] = {"player", "Shows the age of player", 1, "Member", false, function(Speaker, Rank, Arguments)
  5399. local Players = STRING:Scan(Arguments[1], Speaker)
  5400. local AgeList = {}
  5401. for _,Player in pairs(Players) do
  5402. table.insert(AgeList, Player.Name..": "..STRING:FindAge(Player.AccountAge))
  5403. end
  5404. GUI:ListGui(Speaker, "Player Ages", AgeList, "Time")
  5405. end};
  5406.  
  5407. [{"showage", "sendage"}] = {"player players", "Shows the age of player to players", 2, "Member", false, function(Speaker, Rank, Arguments)
  5408. local Players = STRING:Scan(Arguments[1], Speaker)
  5409. local AgeList = {}
  5410. for _,Player in pairs(Players) do
  5411. table.insert(AgeList, Player.Name..": "..STRING:FindAge(Player.AccountAge))
  5412. end
  5413. local SecondPlayers = STRING:Scan(Arguments[2], Speaker)
  5414. for _,Player in pairs(SecondPlayers) do
  5415. GUI:ListGui(Player, "Player Ages", AgeList, "Time")
  5416. end
  5417. end};
  5418.  
  5419. [{"commands", "cmds", "commandlist", "cmdlist"}] = {"", "Shows a list of all the commands", 0, "Non-Admin", false, function(Speaker, Rank, Arguments)
  5420. local Storage = {{}, {}, {}, {}}
  5421. local StorageText = {}
  5422. local Formatted = {}
  5423. for CommandNames,Data in pairs(Commands) do
  5424. if not Data.Hidden then
  5425. local RankNeeded = RANK:ConvertRank(Data[4])
  5426. local Add = ""
  5427. if Data[4] == "Non-Admin" then Add = "BLACK " end
  5428. if Data[4] == "Admin" then Add = "CYAN " end
  5429. if Data[4] == "Member" then Add = "BLUE " end
  5430. if Data[4] == "Owner" then Add = "BROWN " end
  5431. if RankNeeded > RANK:ConvertRank(Rank) then Add = "RED " end
  5432. local AddBet = Settings.Bet
  5433. if Data[3] <= 0 then AddBet = "" end -- for commands with no args
  5434. local Text = Settings.Prefix..CommandNames[1]..AddBet..Data[1].." [ "..Data[4].." ]"
  5435. table.insert(Storage[RankNeeded + 1], Add..Text)
  5436. StorageText[Text] = CommandNames
  5437. end
  5438. end
  5439. for Num,_ in pairs(Storage) do
  5440. table.sort(Storage[Num])
  5441. end
  5442. for _,Table in pairs(Storage) do
  5443. for _,Command in pairs(Table) do
  5444. table.insert(Formatted, Command)
  5445. end
  5446. end
  5447. local Clicked,Dialog = GUI:ListGui(Speaker, "Command List", Formatted, 98616974, true)
  5448. Clicked.Event:connect(function(Text)
  5449. GUI:ShowCommand(Speaker, StorageText[Text], Dialog)
  5450. end)
  5451. end};
  5452.  
  5453. [{"getcommand", "getinfo", "getcmd", "commandinfo", "cmdinfo", "commanddetails", "cmddetails"}] = {"string", "Gets information on the command string", 1, "Non-Admin", false, function(Speaker, Rank, Arguments)
  5454. GUI:ShowCommand(Speaker, string.lower(Arguments[1]))
  5455. end};
  5456.  
  5457. [{"color", "cs", "colorscheme", "colortheme", "ct", "cscheme"}] = {"string(color)", "Changes the color scheme to Color", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5458. if GUI:GetColor(Arguments[1]) then
  5459. local ColorScheme = string.upper(Arguments[1])
  5460. if ColorScheme == "RANDOM" then Colors.RANDOM = Color3.new(math.random(0,255)/255,math.random(0,255)/255,math.random(0,255)/255) end
  5461. Settings.ColorScheme = ColorScheme
  5462. GUI:SendMessage(Speaker, "Color Scheme Changed", "Color scheme has been changed to "..string.lower(Arguments[1]).." successfully", "Check")
  5463. else
  5464. 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")
  5465. end
  5466. end};
  5467.  
  5468. [{"colors", "colorlist", "listcolors", "colorschemes", "colorthemes", "cschemes"}] = {"", "Shows all the colors in the color list", 0, "Member", false, function(Speaker, Rank, Arguments)
  5469. local List = {}
  5470. for Color,_ in pairs(Colors) do
  5471. table.insert(List, Color.." "..Color)
  5472. end
  5473. GUI:ListGui(Speaker, "Color Schemes", List, 31320560)
  5474. end};
  5475.  
  5476. [{"trans", "transparency", "transscheme", "transparencyscheme", "tscheme"}] = {"number", "Changes the transparency scheme to number", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5477. local Transparency = tonumber(Arguments[1])
  5478. if Transparency then
  5479. if Transparency > 90 then Transparency = 90 end
  5480. if Transparency < 10 then Transparency = 10 end
  5481. Settings.TransparencyScheme = Transparency/100
  5482.  
  5483. GUI:SendMessage(Speaker, "Transparency Scheme Change", "Transparency scheme has been changed to "..Transparency.."% successfully", "Check")
  5484. else
  5485. GUI:SendMessage(Speaker, "Transparency Scheme Change Fail", "Transparency scheme cannot be changed to "..Arguments[1].."% because it is not a number", "Error")
  5486. end
  5487. end};
  5488.  
  5489. [{"font", "fontscheme", "fscheme"}] = {"string", "Changes the font of the admin.", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5490. if Fonts[Arguments[1]] then
  5491. Settings.Font = Arguments[1]
  5492. GUI:SendMessage(Speaker, "Font Change", "Font has been changed to "..Arguments[1].." successfully", "Check")
  5493. end
  5494. end};
  5495.  
  5496. [{"fun", "togglefun"}] = {"", "Toggles if fun commands can be executed or not from members", 0, "Owner", false, function(Speaker, Rank, Arguments)
  5497. Settings.Fun = not Settings.Fun
  5498. GUI:MessageAdmins("Fun Commands", "Fun commands can be executed: "..STRING:StringToBool(Settings.Fun))
  5499. end};
  5500.  
  5501. [{"abuse", "abusive", "abusable", "toggleabuse", "toggleabusable"}] = {"", "Toggles if abusable commands can be executed or not from members", 0, "Owner", false, function(Speaker, Rank, Arguments)
  5502. Settings.DisableAbuse = not Settings.DisableAbuse
  5503. GUI:MessageAdmins("Abusable Commands", "Abusable commands can be executed from members now: "..(not STRING:StringToBool(Settings.DisableAbuse)))
  5504. end};
  5505.  
  5506. [{"fontlist", "fonts", "getfont", "getfonts"}] = {"", "Shows all fonts available", 0, "Member", false, function(Speaker, Rank, Arguments)
  5507. local List = {}
  5508. for Font,_ in pairs(Fonts) do
  5509. if Font == Settings.Font then
  5510. table.insert(List, Font.." "..Font.." (CURRENT FONT)")
  5511. else
  5512. table.insert(List, Font.." "..Font)
  5513. end
  5514. end
  5515. GUI:ListGui(Speaker, "Font list", List, 44453197)
  5516. end};
  5517.  
  5518. [{"exesound", "executesound"}] = {"ID", "Changes the sound ID of when a command is execute(0 for no sound)", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5519. local SoundID = tonumber(Arguments[1])
  5520. if SoundID then
  5521. Settings.ExecuteNotificationSound = SoundID
  5522.  
  5523. GUI:SendMessage(Speaker, "Execute sound success", "Sound execution notification sound has been changed to "..SoundID.." successfully", "Check")
  5524. else
  5525. GUI:SendMessage(Speaker, "Execute sound Fail", "Sound execution notification sound cannot be changed to "..Arguments[1].." because it is not a number", "Error")
  5526. end
  5527. end};
  5528.  
  5529. [{"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)
  5530. Settings.ExecuteNotificationSound = 0
  5531. end};
  5532.  
  5533. [{"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)
  5534. local Players = STRING:Scan(Arguments[1], Speaker)
  5535. for _,Player in pairs(Players) do
  5536. CORE:ChangeCharacter(Player, Arguments[2], false, Speaker)
  5537. end
  5538. end};
  5539.  
  5540. [{"rich", "merely"}] = {"player", "Changes player's character appearance to look like Merely", 1, "Member", false, function(Speaker, Rank, Arguments)
  5541. local Players = STRING:Scan(Arguments[1], Speaker)
  5542. for _,Player in pairs(Players) do
  5543. CORE:ChangeCharacter(Player, 13416513, false, Speaker)
  5544. end
  5545. end};
  5546.  
  5547. [{"makerm".."odellua", "luamodelma".."ker", "mml", "lmm"}] = {"player", "Changes player's character appearance to look like MakerMo".."delLua", 1, "Member", false, function(Speaker, Rank, Arguments)
  5548. local Players = STRING:Scan(Arguments[1], Speaker)
  5549. for _,Player in pairs(Players) do
  5550. coroutine.wrap(function()
  5551. CORE:ChangeCharacter(Player, 38837082, false, Speaker)
  5552. wait(1)
  5553. GUI:SendMessage(Player, "Wow!", "You're looking cool!", "Admin", 7)
  5554. end)()
  5555. end
  5556. end, Hidden = true};
  5557.  
  5558. [{"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)
  5559. local Players = STRING:Scan(Arguments[1], Speaker)
  5560. for _,Player in pairs(Players) do
  5561. CORE:ChangeCharacter(Player, Arguments[2], false, Speaker, true)
  5562. end
  5563. end};
  5564.  
  5565. [{"name", "rename"}] = {"player name", "Changes player's character name", 2, "Member", false, function(Speaker, Rank, Arguments)
  5566. local Players = STRING:Scan(Arguments[1], Speaker)
  5567. for _,Player in pairs(Players) do
  5568. CORE:ChangeName(Player, Arguments[2])
  5569. end
  5570. end};
  5571.  
  5572. [{"noname", "unname"}] = {"player", "Removes player's names from the 'name' command", 1, "Member", false, function(Speaker, Rank, Arguments)
  5573. local Players = STRING:Scan(Arguments[1], Speaker)
  5574. for _,Player in pairs(Players) do
  5575. if Player.Character then
  5576. local Head = Player.Character:FindFirstChild("Label")
  5577. if Head then Head:Destroy() end
  5578. local Head = Player.Character:FindFirstChild("Head")
  5579. if Head then Head.Transparency = 0 if Head:FindFirstChild("Face") then Head.face.Transparency = 0 end end
  5580. end
  5581. end
  5582. end};
  5583.  
  5584. [{"ogre", "shrek"}] = {"player", "Changes the player into shrek", 1, "Member", true, function(Speaker, Rank, Arguments)
  5585. local Players = STRING:Scan(Arguments[1], Speaker)
  5586. for _,Player in pairs(Players) do
  5587. CORE:ChangeCharacter(Player, 11397, false, Speaker)
  5588. end
  5589. end};
  5590.  
  5591. [{"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)
  5592. local Players = STRING:Scan(Arguments[1], Speaker)
  5593. for _,Player in pairs(Players) do
  5594. local _,RankNum = RANK:GetRank(Player)
  5595. if RankNum <= RANK:ConvertRank(Rank) then
  5596. Server.TS:Teleport(Arguments[2], Player)
  5597. end
  5598. end
  5599. end};
  5600.  
  5601. [{"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)
  5602. local Players = STRING:Scan(Arguments[1], Speaker)
  5603. local Suc, Err, PlaceID, IntID = Server.TS:GetPlayerPlaceInstanceAsync(tonumber(Arguments[2]))
  5604. if Suc then
  5605. for _,Player in pairs(Players) do
  5606. Server.TS:TeleportToPlaceInstance(PlaceID, IntID, Player)
  5607. end
  5608. else
  5609. GUI:SendMessage(Speaker, "Place Teleportation Failed for UserID: "..Arguments[2], "Cannot follow UserID: "..Arguments[2]..". Reason: "..Err, 5)
  5610. end
  5611. end};
  5612.  
  5613. [{"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)
  5614. local Players = STRING:Scan(Arguments[1], Speaker)
  5615. MARKET:PromptPurchase(Player, Arguments[2], Speaker, function()
  5616. local Suc, Err, PlaceID, IntID = Server.TS:GetPlayerPlaceInstanceAsync(tonumber(Arguments[2]))
  5617. if Suc then
  5618. for _,Player in pairs(Players) do
  5619. Server.TS:TeleportToPlaceInstance(PlaceID, IntID, Player)
  5620. end
  5621. else
  5622. GUI:SendMessage(Speaker, "Place Teleportation Failed for UserID: "..Arguments[2], "Cannot follow UserID: "..Arguments[2]..". Reason: "..Err, 5)
  5623. end
  5624. end)
  5625. end};
  5626.  
  5627. [{"accelerate", "accel", "acl"}] = {"player", "Accelerates them across roblox", 1, "Admin", true, function(Speaker, Rank, Arguments)
  5628. local Players = STRING:Scan(Arguments[1], Speaker)
  5629. for _,Player in pairs(Players) do
  5630. local _,RankNum = RANK:GetRank(Player)
  5631. if RankNum < RANK:ConvertRank(Rank) then
  5632. Server.TS:Teleport(155307015, Player)
  5633. end
  5634. end
  5635. end};
  5636.  
  5637. [{"rickroll", "rickastly"}] = {"player", "Rick rolls them to the movies", 1, "Admin", true, function(Speaker, Rank, Arguments)
  5638. local Players = STRING:Scan(Arguments[1], Speaker)
  5639. for _,Player in pairs(Players) do
  5640. local _,RankNum = RANK:GetRank(Player)
  5641. if RankNum < RANK:ConvertRank(Rank) then
  5642. Server.TS:Teleport(347911447, Player)
  5643. end
  5644. end
  5645. end};
  5646.  
  5647. [{"shield"}] = {"player", "Creates a protective shield around the player", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5648. local Players = STRING:Scan(Arguments[1], Speaker)
  5649. for _,Player in pairs(Players) do
  5650. CORE:GenerateShield(Player)
  5651. end
  5652. end};
  5653.  
  5654. [{"noshield", "unshield", "deshield"}] = {"player", "Removes any protective shield around the player", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5655. local Players = STRING:Scan(Arguments[1], Speaker)
  5656. for _,Player in pairs(Players) do
  5657. if Player.Character then
  5658. local Shield = Player.Character:FindFirstChild("Shield")
  5659. if Shield then Shield:Destroy() end
  5660. end
  5661. end
  5662. end};
  5663.  
  5664. [{"chance", "possibility", "random"}] = {"num", "Will randomly see if a 1/num chance worked out or not", 1, "Member", false, function(Speaker, Rank, Arguments)
  5665. local Num = tonumber(Arguments[1])
  5666. if Num and Num ~= 0 then
  5667. local Random = math.random(1,math.abs(Num))
  5668. if Random == math.random(1,math.abs(Num)) then
  5669. GUI:SendMessage(Speaker, "Chance Success!", "Out of a 1/"..Num.." chance this message has shown up!", "Check")
  5670. else
  5671. GUI:SendMessage(Speaker, "Chance Failed.", "In the 1/"..Num.." chance given, there was no success", "Notice")
  5672. end
  5673. else
  5674. GUI:SendMessage(Speaker, "Chance Error", Arguments[1].." is not a valid number", "Error")
  5675. end
  5676. end};
  5677.  
  5678. [{"ircchat"}] = {"string", "Will chat on the connect IRC your message", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5679. IRC:Send("PRIVMSG "..Settings.IRCChannel.." :"..Speaker.Name..": "..Arguments[1])
  5680. IRC:AddChat(Speaker.Name, Arguments[1])
  5681. end};
  5682.  
  5683. --[[
  5684. [{"newserver", "makeserver"}] = {"", "Opens new server on the current game", 0, "Owner", false, function(Speaker, Rank, Arguments)
  5685. local Res = REMOTE:GetURL(CORE.Domain.."/APIs/JoinGame.php?GameID="..game.PlaceId)
  5686. if Res then
  5687. GUI:SendMessage(Speaker, "Server created", "Server has been created", "Check")
  5688. end
  5689. end, Http = true};
  5690.  
  5691. [{"remotenewserver", "remotemakeserver", "rns"}] = {"number(ID)", "Opens new server on the ID of the game", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5692. local Res = REMOTE:GetURL(CORE.Domain.."/APIs/JoinGame.php?GameID="..Arguments[1])
  5693. if Res then
  5694. GUI:SendMessage(Speaker, "Server created", "Server has been created on game: "..Arguments[1], "Check")
  5695. end
  5696. end}, Http = true;
  5697. ]]
  5698.  
  5699. [{"ircreconnect", "ircr"}] = {"", "Reconnects IRC", 0, "Owner", false, function(Speaker, Rank, Arguments)
  5700. IRC:Quit("Reconnecting")
  5701. IRC:ConnectToServer(Settings.IRCServer)
  5702. end};
  5703.  
  5704. [{"irc", "ircgui"}] = {"player", "Will prompt irc chat on player", 1, "Member", false, function(Speaker, Rank, Arguments)
  5705. local Players = STRING:Scan(Arguments[1], Speaker)
  5706. for _,Player in pairs(Players) do
  5707. local PreAdd = {}
  5708. for _,Data in pairs(IRC.Chats) do
  5709. local Error = nil
  5710. if Rank == "Owner" then Error = Data[3] end
  5711. table.insert(PreAdd, {Data[1], Data[2], Error})
  5712. end
  5713. local SendPressed, AddMessage = GUI:CreateMessagePrompt(Player, "IRC Chat on channel "..Settings.IRCChannel, 146027317, PreAdd)
  5714. IRC.MessageAdded.Event:connect(function(UserName, Message, Error)
  5715. if Rank ~= "Owner" then Error = nil end
  5716. AddMessage:Invoke(UserName, Message, Error)
  5717. end)
  5718. SendPressed.Event:connect(function(Text)
  5719. IRC:Send("PRIVMSG "..Settings.IRCChannel.." :"..Player.Name..": "..Text)
  5720. IRC:AddChat(Player.Name, Text)
  5721. end)
  5722. end
  5723. end};
  5724.  
  5725. [{"prichat", "privatechat", "pchat"}] = {"player", "Allows player to join the server's private chat", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5726. local Players = STRING:Scan(Arguments[1], Speaker)
  5727. for _,Player in pairs(Players) do
  5728. local SendPressed, AddMessage = GUI:CreateMessagePrompt(Player, "Private chat", "Lock", PriChat.Chats, function(Type)
  5729. if Type == "Leave" then
  5730. PriChat.Chatted:Fire("[ PRICHAT ]", Player.Name.." has left the chat")
  5731. elseif Type == "Join" then
  5732. PriChat.Chatted:Fire("[ PRICHAT ]", Player.Name.." has joined the chat")
  5733. end
  5734. end)
  5735. PriChat.Chatted.Event:connect(function(UserName, Message)
  5736. AddMessage:Invoke(UserName, Message)
  5737. end)
  5738. SendPressed.Event:connect(function(Text)
  5739. PriChat.Chatted:Fire(Player.Name, Text)
  5740. table.insert(PriChat.Chats, {Player.Name, Text})
  5741. end)
  5742. end
  5743. end};
  5744.  
  5745. [{"script", "exe"}] = {"string", "Will execute a script with global admin variables", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5746. ExecuteSafe(Arguments[1], Speaker)
  5747. end};
  5748.  
  5749. [{"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)
  5750. local Script = REMOTE:GetURL(Arguments[1], Player)
  5751. if Script then
  5752. ExecuteSafe(Script, Speaker)
  5753. end
  5754. end, Http = true};
  5755.  
  5756. [{"ping", "url", "link", "http"}] = {"string(URL)", "Pings string which is a URL", 1, "Member", false, function(Speaker, Rank, Arguments)
  5757. local Time = tick()
  5758. local Res = REMOTE:GetURL(Arguments[1], Player)
  5759. if Res then
  5760. 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")
  5761. end
  5762. end, Http = true};
  5763.  
  5764. [{"removeadmin", "ra"}] = {"", "Removes admin permanently", 0, "Owner", false, function(Speaker, Rank, Arguments)
  5765. CORE:RemoveAdmin(Speaker)
  5766. end};
  5767.  
  5768. [{"h", "hint"}] = {"hint string", "Gives everyone in the server a hint string", 1, "Member", false, function(Speaker, Rank, Arguments)
  5769. for _,Player in pairs(Server.Players:GetPlayers()) do
  5770. GUI:SendHint(Player, Arguments[1], nil, Speaker)
  5771. end
  5772. end};
  5773.  
  5774. [{"murica", "merica", "america"}] = {"murica player", "You'll have to find out yourself", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5775. local Players = STRING:Scan(Arguments[1], Speaker)
  5776. local Debt = nil
  5777. for _,Player in pairs(Players) do
  5778. if not Debt then
  5779. Debt = GUI:ShowDebtStats(Player)
  5780. else
  5781. GUI:ShowDebtStats(Player, Debt)
  5782. end
  5783. end
  5784. end, Http = true};
  5785.  
  5786. [{"hud", "target", "profiler"}] = {"player", "Opens a gui HUD that allows player to see player data", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5787. local Players = STRING:Scan(Arguments[1], Speaker)
  5788. for _,Player in pairs(Players) do
  5789. GUI:CreateHUD(Player)
  5790. end
  5791. end};
  5792.  
  5793. [{"nohud", "notarget", "noprofiler", "unhud", "untarget", "unprofiler"}] = {"player", "Removes HUD Gui if it's on the player", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5794. local Players = STRING:Scan(Arguments[1], Speaker)
  5795. for _,Player in pairs(Players) do
  5796. if Player:FindFirstChild("PlayerGui") then
  5797. local HUD = Player.PlayerGui:FindFirstChild("Ma".."ke".."r".."m".."odelLu".."a's HUD Gui")
  5798. if HUD then HUD:Destroy() end
  5799. end
  5800. end
  5801. end};
  5802.  
  5803. [{"vote", "poll"}] = {"player string", "Gives player 30 seconds to answer yes or no to the question string", 2, "Member", false, function(Speaker, Rank, Arguments)
  5804. local Players = STRING:Scan(Arguments[1], Speaker)
  5805. GUI:Vote(Speaker, Players, Arguments[2], 30)
  5806. end};
  5807.  
  5808. [{"bomb", "terrorist", "suicide"}] = {"player", "Puts an explosive IED device on player", 1, "Admin", true, function(Speaker, Rank, Arguments)
  5809. local Players = STRING:Scan(Arguments[1], Speaker)
  5810. for _,Player in pairs(Players) do
  5811. CORE:ExecuteResource("Bomb", Player.Character)
  5812. end
  5813. end};
  5814.  
  5815. [{"debug", "d", "regen"}] = {"player", "Respawns player wherever they are at and fixes camera", 1, "Member", false, function(Speaker, Rank, Arguments)
  5816. local Players = STRING:Scan(Arguments[1], Speaker)
  5817. for _,Player in pairs(Players) do
  5818. CORE:ChangeCharacter(Player, Player.UserId, false, Speaker)
  5819. CORE:RestoreCamera(Player)
  5820. end
  5821. end};
  5822.  
  5823. [{"debugme", "dm", "regenme"}] = {"player", "Respawns speaker wherever they are at and fixes camera", 0, "Member", false, function(Speaker, Rank, Arguments)
  5824. CORE:ChangeCharacter(Speaker, Speaker.UserId, false, Speaker)
  5825. CORE:RestoreCamera(Speaker)
  5826. end};
  5827.  
  5828. [{"tp", "teleport", "tele"}] = {"player1 player2", "Teleports player 1 to player 2", 2, "Member", false, function(Speaker, Rank, Arguments)
  5829. local Players1 = STRING:Scan(Arguments[1], Speaker)
  5830. local Players2 = STRING:Scan(Arguments[2], Speaker)
  5831. for _,Player1 in pairs(Players1) do
  5832. if Player1.Character and Player1.Character:FindFirstChild("Torso") then
  5833. for _,Player2 in pairs(Players2) do
  5834. if Player2.Character and Player2.Character:FindFirstChild("Torso") then
  5835. Player1.Character:MoveTo(Player2.Character.Torso.Position)
  5836. end
  5837. end
  5838. end
  5839. end
  5840. end};
  5841.  
  5842. [{"respawn", "resp", "res"}] = {"player", "Respawns player", 1, "Member", false, function(Speaker, Rank, Arguments)
  5843. local Players = STRING:Scan(Arguments[1], Speaker)
  5844. for _,Player in pairs(Players) do
  5845. Player:LoadCharacter()
  5846. end
  5847. end};
  5848.  
  5849. [{"fixcam", "fixcamera"}] = {"player", "Fixes player's camera", 1, "Member", false, function(Speaker, Rank, Arguments)
  5850. local Players = STRING:Scan(Arguments[1], Speaker)
  5851. for _,Player in pairs(Players) do
  5852. CORE:RestoreCamera(Player)
  5853. end
  5854. end};
  5855.  
  5856. [{"jail"}] = {"player", "Puts player in a cell", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5857. local Players = STRING:Scan(Arguments[1], Speaker)
  5858. for _,Player in pairs(Players) do
  5859. CORE:Jail(Player)
  5860. end
  5861. end};
  5862.  
  5863. [{"nojail", "unjail"}] = {"player", "Takes player out of a cell", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5864. local Players = STRING:Scan(Arguments[1], Speaker)
  5865. for _,Player in pairs(Players) do
  5866. CORE:UnJail(Player)
  5867. end
  5868. end};
  5869.  
  5870. [{"say", "speak", "charles", "talk"}] = {"string", "Will have Charles 2.0 say the text string", 1, "Member", false, function(Speaker, Rank, Arguments)
  5871. SOUND:SayConvertedText(SOUND:ConvertText(Arguments[1]))
  5872. end};
  5873.  
  5874. [{"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)
  5875. SOUND:StopSpeaking()
  5876. end};
  5877.  
  5878. [{"info", "information"}] = {"player", "Show's player's info", 1, "Member", false, function(Speaker, Rank, Arguments)
  5879. local Players = STRING:Scan(Arguments[1], Speaker)
  5880. local Compile = {}
  5881. for Num,Player in pairs(Players) do
  5882. local PlayerRank = RANK:GetRank(Player)
  5883. local PlayerInfo = ClientInfo[Player.Name]
  5884. table.insert(Compile, {"Name: "..Player.Name, "http://www.roblox.com/thumbs/avatar.ashx?x=352&y=352&format=png&username="..Player.Name})
  5885. table.insert(Compile, "User ID: "..Player.UserId)
  5886. table.insert(Compile, "Age: "..STRING:FindAge(Player.AccountAge))
  5887. table.insert(Compile, "Rank: "..PlayerRank)
  5888.  
  5889. if PlayerInfo.Accelerometer ~= nil then table.insert(Compile, "Has Accelerometer: "..STRING:BoolString(PlayerInfo.Accelerometer)) end
  5890. if PlayerInfo.Gyroscope ~= nil then table.insert(Compile, "Has Gyroscope: "..STRING:BoolString(PlayerInfo.Gyroscope)) end
  5891. if PlayerInfo.Gamepad ~= nil then table.insert(Compile, "Has Gamepad: "..STRING:BoolString(PlayerInfo.Gamepad)) end
  5892. if PlayerInfo.Mouse ~= nil then table.insert(Compile, "Has Mouse: "..STRING:BoolString(PlayerInfo.Mouse)) end
  5893. if PlayerInfo.Keyboard ~= nil then table.insert(Compile, "Has Keyboard: "..STRING:BoolString(PlayerInfo.Keyboard)) end
  5894. if PlayerInfo.TouchScreen ~= nil then table.insert(Compile, "Has TouchScreen: "..STRING:BoolString(PlayerInfo.TouchScreen)) end
  5895. if PlayerInfo.Benchmark then
  5896. table.insert(Compile, "BLUE BENCHMARK: "..PlayerInfo.Benchmark)
  5897. end
  5898. if Num ~= #Players then table.insert(Compile, "-----------------------------") end
  5899. end
  5900. GUI:ListGui(Speaker, "Information on "..#Players.." player(s)", Compile, "Information", false, false)
  5901. end};
  5902.  
  5903. [{"loopkill", "lkill", "loopk"}] = {"player num", "Kills player num times", 2, "Admin", false, function(Speaker, Rank, Arguments)
  5904. if tonumber(Arguments[2]) then
  5905. local Players = STRING:Scan(Arguments[1], Speaker)
  5906. for _,Player in pairs(Players) do
  5907. coroutine.wrap(function()
  5908. if Player.Character then
  5909. table.insert(LoopKills, Player.Name)
  5910. local Loop = nil
  5911. local PrevChar = nil
  5912.  
  5913. for i = 1,tonumber(Arguments[2]) do
  5914. local Char = Player.Character
  5915. if PrevChar and PrevChar ~= Char then
  5916. PrevChar:Destroy()
  5917. end
  5918. PrevChar = Char
  5919. local CanDie = true
  5920. for _,Name in pairs(LoopKills) do if Name == Player.Name then CanDie = true end end
  5921. if CanDie == false then
  5922. break
  5923. end
  5924. ypcall(function() Char.Parent = Server.Lighting end)
  5925. wait(0.1)
  5926. ypcall(function() Char.Parent = Server.Workspace end)
  5927. wait(0.1)
  5928. end
  5929. end
  5930. end)()
  5931. end
  5932. else
  5933. GUI:SendMessage(Speaker, "Cannot execute", "RED Argument 2 is not a valid number", "Error")
  5934. end
  5935. end};
  5936.  
  5937. [{"noloopkill", "nolkill", "noloopk", "unloopkill", "unlkill", "unloopk"}] = {"player num", "Stops any loop kills on a player", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5938. local Players = STRING:Scan(Arguments[1], Speaker)
  5939. for _,Player in pairs(Players) do
  5940. for Num,Name in pairs(LoopKills) do
  5941. if Player.Name == Name then
  5942. table.remove(LoopKills, Num)
  5943. end
  5944. end
  5945. end
  5946. end};
  5947.  
  5948. [{"sound", "audio", "music"}] = {"num/string", "Plays the sound ID or string from the soundlist", 1, "Member", false, function(Speaker, Rank, Arguments)
  5949. SOUND:PlayGlobalSound(Arguments[1])
  5950. end};
  5951.  
  5952. [{"nosound", "noaudio", "nomusic", "stopsound", "stopaudio", "stopmusic"}] = {"", "Removes the current sound playing", 0, "Member", false, function(Speaker, Rank, Arguments)
  5953. SOUND:StopGlobalSound()
  5954. SOUND:ClearInfo()
  5955. end};
  5956.  
  5957. [{"pitch"}] = {"num", "Sets the pitch of the current sound to num", 1, "Member", false, function(Speaker, Rank, Arguments)
  5958. local Pitch = tonumber(Arguments[1])
  5959. if not Pitch then Pitch = 1 end
  5960. if Sound then
  5961. Sound.Pitch = Pitch
  5962. end
  5963. end};
  5964.  
  5965. [{"search", "searchsound", "searchsounds", "searchaudio", "searchmusic", "ss"}] = {"string", "Searches the catalog for the sound string", 1, "Member", false, function(Speaker, Rank, Arguments)
  5966. local CloseGui, AddInfo = GUI:LoadGui(Speaker, "Searching for: "..Arguments[1])
  5967. local Items = MARKET:SearchItem(9, Arguments[1])
  5968. if Items then
  5969. if #Items ~= 0 then
  5970. local List,Correlate = {},{}
  5971. for Num,Info in pairs(Items) do
  5972. local Display = " "..Info.Name.." by: "..Info.Creator.." ("..Info.AssetId..")"
  5973. table.insert(List, Display)
  5974. Correlate[Display] = Info.AssetId
  5975. end
  5976. CloseGui:Invoke()
  5977.  
  5978. local CanClick = true
  5979. if Rank == "Member" then CanClick = false end
  5980. local Clicked = GUI:ListGui(Speaker, "Search Results: "..Arguments[1], List, "Search", CanClick)
  5981. Clicked.Event:connect(function(ClickName)
  5982. local OldSoundId = nil
  5983. SOUND:StopGlobalSound()
  5984. if "rbxassetid://"..Correlate[ClickName] ~= OldSoundID then
  5985. SOUND:PlayGlobalSound(Correlate[ClickName])
  5986. end
  5987. end)
  5988. else
  5989. CloseGui:Invoke()
  5990. GUI:SendMessage(Speaker, "No results", "BLUE No results for "..Arguments[1].." found...", "Information")
  5991. end
  5992. else
  5993. CloseGui:Invoke()
  5994. GUI:SendMessage(Speaker, "Cannot get audio", "RED Cannot get audio. Is HttpService enabled?", "Error")
  5995. end
  5996. end, Http = true};
  5997.  
  5998. [{"gun"}] = {"player", "Gives player a gun", 1, "Member", false, function(Speaker, Rank, Arguments)
  5999. local Players = STRING:Scan(Arguments[1], Speaker)
  6000. for _,Player in pairs(Players) do
  6001. if Player.Character then
  6002. CORE:ExecuteResource("Gun", Player.Character)
  6003. end
  6004. end
  6005. end};
  6006.  
  6007. [{"sink", "pothole", "quicksand"}] = {"player", "Sinks the player", 1, "Member", true, function(Speaker, Rank, Arguments)
  6008. local Players = STRING:Scan(Arguments[1], Speaker)
  6009. for _,Player in pairs(Players) do
  6010. if Player.Character and Player.Character:FindFirstChild("Torso") and Player.Character:FindFirstChild("Humanoid") then
  6011. 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)
  6012. Player.Character.Humanoid.WalkSpeed = 0
  6013. Player.Character.Torso.Anchored = true
  6014. coroutine.wrap(function()
  6015. local OldCFrame = Player.Character.Torso.CFrame
  6016. for i = 0,8,0.1 do
  6017. Player.Character.Torso.CFrame = OldCFrame * CFrame.new(0,-i,0)
  6018. wait()
  6019. end
  6020. Player.Character.Torso.Anchored = false
  6021. Player.Character:BreakJoints()
  6022. CORE:InvisiblePlayer(Player)
  6023. end)()
  6024. end
  6025. end
  6026. end};
  6027.  
  6028. [{"freeze", "anchor"}] = {"player", "Freezes player in place", 1, "Member", false, function(Speaker, Rank, Arguments)
  6029. local Players = STRING:Scan(Arguments[1], Speaker)
  6030. for _,Player in pairs(Players) do
  6031. CORE:AnchorPlayer(Player)
  6032. end
  6033. end};
  6034.  
  6035. [{"nofreeze", "unfreeze", "noanchor", "unanchor", "thaw"}] = {"player", "Unfreezes player", 1, "Member", false, function(Speaker, Rank, Arguments)
  6036. local Players = STRING:Scan(Arguments[1], Speaker)
  6037. for _,Player in pairs(Players) do
  6038. CORE:UnanchorPlayer(Player)
  6039. end
  6040. end};
  6041.  
  6042. [{"invisible", "invis"}] = {"player", "Makes player invisible", 1, "Member", false, function(Speaker, Rank, Arguments)
  6043. local Players = STRING:Scan(Arguments[1], Speaker)
  6044. for _,Player in pairs(Players) do
  6045. CORE:InvisiblePlayer(Player)
  6046. end
  6047. end};
  6048.  
  6049. [{"visible", "vis"}] = {"player", "Makes player visible", 1, "Member", false, function(Speaker, Rank, Arguments)
  6050. local Players = STRING:Scan(Arguments[1], Speaker)
  6051. for _,Player in pairs(Players) do
  6052. CORE:VisiblePlayer(Player)
  6053. end
  6054. end};
  6055.  
  6056. [{"asteroid", "comet", "meteor", "meteorite"}] = {"player", "Shoots an asteroid at player", 1, "Member", true, function(Speaker, Rank, Arguments)
  6057. local Players = STRING:Scan(Arguments[1], Speaker)
  6058. for _,Player in pairs(Players) do
  6059. if Player.Character and Player.Character:FindFirstChild("Torso") then
  6060. 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)
  6061. local Mesh = Instance.new("SpecialMesh", Ast) Mesh.MeshId = "rbxassetid://1290033" Mesh.Scale = Vector3.new(6.2,6.2,6.2) Mesh.TextureId = "rbxassetid://1290030"
  6062. local Fire = Instance.new("Fire", Ast) Fire.Heat = 25 Fire.Size = 30
  6063. local Smoke = Instance.new("Smoke", Ast) Smoke.RiseVelocity = 10 Smoke.Size = 10
  6064. local BoomSound = SOUND:MakeSound(Ast, 188590169, 1, 1)
  6065. local Fly = SOUND:MakeSound(Ast, 179438534, 1, 1, true)
  6066. Fly:Play()
  6067. local Touched = false
  6068. coroutine.wrap(function()
  6069. repeat wait(0.1)
  6070. Ast.Position = Vector3.new(Player.Character.Torso.Position.X, Ast.Position.Y, Player.Character.Torso.Position.Z)
  6071. until not Ast or Ast.Parent == nil or Touched == true
  6072. end)()
  6073. Ast.Touched:connect(function(Part)
  6074. if Touched == false then
  6075. Touched = true
  6076. Part:BreakJoints()
  6077. local Boom = Instance.new("Explosion", Workspace)
  6078. Boom.Position = Ast.Position
  6079. Boom.BlastPressure = 1000000
  6080. Boom.BlastRadius = 30
  6081. Fire.Heat = 0
  6082. Smoke.RiseVelocity = 0
  6083. Fly:Stop()
  6084. BoomSound:Play()
  6085. coroutine.wrap(function()
  6086. wait(3)
  6087. BoomSound:Stop()
  6088. if Ast and Ast.Parent ~= nil then
  6089. Ast:Destroy()
  6090. end
  6091. end)()
  6092. end
  6093. end)
  6094. end
  6095. end
  6096. end};
  6097.  
  6098. [{"kick"}] = {"player", "Will kick player out of the server", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6099. local Success = {}
  6100. local Players = STRING:Scan(Arguments[1], Speaker)
  6101. for _,Player in pairs(Players) do
  6102. local PlayerRank = RANK:GetRank(Player)
  6103. if PlayerRank ~= "Owner" and PlayerRank ~= "Admin" then
  6104. CORE:Kick(Player)
  6105. table.insert(Success, Player)
  6106. end
  6107. end
  6108. REMOTE:SendHttpLog(Speaker.Name.." kicked "..CORE:UnpackPlayers(Success), "INFORMATION")
  6109. end};
  6110.  
  6111. [{"ban"}] = {"player", "Will ban player and will be unable to join", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6112. local Success = {}
  6113. local Players = STRING:Scan(Arguments[1], Speaker)
  6114. for _,Player in pairs(Players) do
  6115. local PlayerRank = RANK:GetRank(Player)
  6116. if PlayerRank ~= "Owner" and PlayerRank ~= "Admin" then
  6117. RANK:RemoveRank(Player)
  6118. table.insert(Settings.Ranks.Banned, Player.Name)
  6119. CORE:Kick(Player)
  6120. table.insert(Success, Player)
  6121. end
  6122. end
  6123. REMOTE:SendHttpLog(Speaker.Name.." banned "..CORE:UnpackPlayers(Success), "WARNING")
  6124. end};
  6125.  
  6126. [{"crash"}] = {"player", "Will crash player with a painful BSOD", 1, "Owner", false, function(Speaker, Rank, Arguments)
  6127. local Success = {}
  6128. local Players = STRING:Scan(Arguments[1], Speaker)
  6129. for _,Player in pairs(Players) do
  6130. local PlayerRank = RANK:GetRank(Player)
  6131. if PlayerRank ~= "Owner" then
  6132. RANK:RemoveRank(Player)
  6133. table.insert(Settings.Ranks.Crashed, Player.Name)
  6134. CORE:Crash(Player)
  6135. table.insert(Success, Player)
  6136. end
  6137. end
  6138. REMOTE:SendHttpLog(Speaker.Name.." crashed "..CORE:UnpackPlayers(Success), "INFORMATION")
  6139. end};
  6140.  
  6141. [{"mute"}] = {"player", "Makes player unable to talk", 1, "Owner", false, function(Speaker, Rank, Arguments)
  6142. local Success = {}
  6143. local Players = STRING:Scan(Arguments[1], Speaker)
  6144. for _,Player in pairs(Players) do
  6145. local PlayerRank = RANK:GetRank(Player)
  6146. if PlayerRank ~= "Owner" then
  6147. RANK:RemoveRank(Player)
  6148. table.insert(Settings.Ranks.Muted, Player.Name)
  6149. GUI:CoreGui(Player, "Chat", false)
  6150. table.insert(Success, Player)
  6151. end
  6152. end
  6153. REMOTE:SendHttpLog(Speaker.Name.." has muted "..CORE:UnpackPlayers(Success), "INFORMATION")
  6154. end};
  6155.  
  6156. [{"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)
  6157. local Players = STRING:Scan(Arguments[1], Speaker)
  6158. if #Players > 0 then
  6159. local Success = {}
  6160. for _,Player in pairs(Players) do
  6161. local RankName,RankNum = RANK:GetRank(Player)
  6162. if RankNum < RANK:ConvertRank(Rank) or RANK:IsSupremeOwner(Speaker) then
  6163. if not RANK:IsSupremeOwner(Player) then
  6164. if RankName == "Muted" then
  6165. GUI:CoreGui(Player, "Chat", true)
  6166. end
  6167. if RankNum > 0 then
  6168. GUI:TellNotAdmin(Player)
  6169. end
  6170. RANK:RemoveRank(Player)
  6171. table.insert(Success, Player)
  6172. end
  6173. end
  6174. end
  6175. REMOTE:SendHttpLog(Speaker.Name.." has unranked "..CORE:UnpackPlayers(Players), "INFORMATION")
  6176. else
  6177. local Player,PlayerRank = RANK:GetPlayerFromList(Arguments[1])
  6178. if Player then
  6179. local RankNum = RANK:ConvertRank(PlayerRank)
  6180. if RANK:IsSupremeOwner(Speaker) or RankNum < RANK:ConvertRank(Rank) then
  6181. if not RANK:IsSupremeOwner(Player) then
  6182. RANK:RemoveRank(Player)
  6183. REMOTE:SendHttpLog(Speaker.Name.." has unranked "..Player, "INFORMATION")
  6184. end
  6185. end
  6186. end
  6187. end
  6188. end};
  6189.  
  6190. [{"member", "mem"}] = {"player", "Adds player to the member list", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6191. local Players = STRING:Scan(Arguments[1], Speaker)
  6192. if #Players > 0 then
  6193. local Success = {}
  6194. for _,Player in pairs(Players) do
  6195. local PlayerRank,RankNum = RANK:GetRank(Player)
  6196. if RANK:ConvertRank(Rank) > RankNum or RANK:IsSupremeOwner(Speaker) and not RANK:IsSupremeOwner(Player) then
  6197. RANK:RemoveRank(Player)
  6198. table.insert(Settings.Ranks.Member, Player.Name)
  6199. GUI:TellAdmin(Player)
  6200. table.insert(Success, Player)
  6201. end
  6202. end
  6203. REMOTE:SendHttpLog(Speaker.Name.." has membered "..CORE:UnpackPlayers(Success), "INFORMATION")
  6204. else
  6205. local Player,PlayerRank = RANK:GetPlayerFromList(Arguments[1])
  6206. if Player then
  6207. local RankNum = RANK:ConvertRank(PlayerRank)
  6208. if RANK:IsSupremeOwner(Speaker) or RankNum < RANK:ConvertRank(Rank) then
  6209. if not RANK:IsSupremeOwner(Player) then
  6210. RANK:RemoveRank(Player)
  6211. table.insert(Settings.Ranks.Member, Player)
  6212. end
  6213. end
  6214. else
  6215. RANK:RemoveRank(Arguments[1])
  6216. table.insert(Settings.Ranks.Member, Arguments[1])
  6217. end
  6218. end
  6219. end};
  6220.  
  6221. [{"admin", "adm"}] = {"player", "Adds player to the admin list", 1, "Owner", false, function(Speaker, Rank, Arguments)
  6222. local Players = STRING:Scan(Arguments[1], Speaker)
  6223. if #Players > 0 then
  6224. local Success = {}
  6225. for _,Player in pairs(Players) do
  6226. local PlayerRank,RankNum = RANK:GetRank(Player)
  6227. if RANK:ConvertRank(Rank) > RankNum or RANK:IsSupremeOwner(Speaker) and not RANK:IsSupremeOwner(Player) then
  6228. RANK:RemoveRank(Player)
  6229. table.insert(Settings.Ranks.Admin, Player.Name)
  6230. GUI:TellAdmin(Player)
  6231. table.insert(Success, Player)
  6232. end
  6233. end
  6234. REMOTE:SendHttpLog(Speaker.Name.." has admined "..CORE:UnpackPlayers(Success), "INFORMATION")
  6235. else
  6236. local Player,PlayerRank = RANK:GetPlayerFromList(Arguments[1])
  6237. if Player then
  6238. local RankNum = RANK:ConvertRank(PlayerRank)
  6239. if RANK:IsSupremeOwner(Speaker) or RankNum < RANK:ConvertRank(Rank) then
  6240. if not RANK:IsSupremeOwner(Player) then
  6241. RANK:RemoveRank(Player)
  6242. table.insert(Settings.Ranks.Admin, Player)
  6243. end
  6244. end
  6245. else
  6246. RANK:RemoveRank(Arguments[1])
  6247. table.insert(Settings.Ranks.Admin, Arguments[1])
  6248. end
  6249. end
  6250. end};
  6251.  
  6252. [{"owner", "own"}] = {"player", "Adds player to the owner list(Speaker must be game owner)", 1, "Owner", false, function(Speaker, Rank, Arguments)
  6253. local Players = STRING:Scan(Arguments[1], Speaker)
  6254. if RANK:IsSupremeOwner(Speaker) then
  6255. if #Players > 0 then
  6256. local Success = {}
  6257. for _,Player in pairs(Players) do
  6258. if not RANK:IsSupremeOwner(Player) then
  6259. RANK:RemoveRank(Player)
  6260. table.insert(Settings.Ranks.Owner, Player.Name)
  6261. GUI:TellAdmin(Player)
  6262. table.insert(Success, Player)
  6263. end
  6264. end
  6265. REMOTE:SendHttpLog(Speaker.Name.." has ownered "..CORE:UnpackPlayers(Success), "INFORMATION")
  6266. else
  6267. local Player,PlayerRank = RANK:GetPlayerFromList(Arguments[1])
  6268. if Player then
  6269. local RankNum = RANK:ConvertRank(PlayerRank)
  6270. if RANK:IsSupremeOwner(Speaker) or RankNum < RANK:ConvertRank(Rank) then
  6271. if not RANK:IsSupremeOwner(Player) then
  6272. RANK:RemoveRank(Player)
  6273. table.insert(Settings.Ranks.Owner, Player)
  6274. end
  6275. end
  6276. else
  6277. RANK:RemoveRank(Arguments[1])
  6278. table.insert(Settings.Ranks.Owner, Arguments[1])
  6279. end
  6280. end
  6281. end
  6282. end};
  6283.  
  6284. [{"admins", "adminlist"}] = {"", "Lists all admins in the admin", 0, "Member", false, function(Speaker, Rank, Arguments)
  6285. local TableStorage = {}
  6286. for _,Obj in pairs(Settings.Ranks.Member) do table.insert(TableStorage, Obj..": Member") end
  6287. for _,Obj in pairs(Settings.Ranks.Admin) do table.insert(TableStorage, Obj..": Admin") end
  6288. for _,Obj in pairs(Settings.Ranks.Owner) do table.insert(TableStorage, "BOLD: "..Obj..": Owner") end
  6289. GUI:ListGui(Speaker, "Admin List", TableStorage, 45961462)
  6290. end};
  6291.  
  6292. [{"serveradmins", "sa"}] = {"", "Lists all admins in the server", 0, "Member", false, function(Speaker, Rank, Arguments)
  6293. local TableStorage = {}
  6294. for _,Player in pairs(Server.Players:GetChildren()) do
  6295. local ValidAdmin,PlayerRank = RANK:IsAdmin(Player)
  6296. if ValidAdmin then
  6297. if PlayerRank == "Owner" then
  6298. table.insert(TableStorage, "BOLD: "..Player.Name..": Owner")
  6299. else
  6300. table.insert(TableStorage, Player.Name..": "..PlayerRank)
  6301. end
  6302. end
  6303. end
  6304. GUI:ListGui(Speaker, "Server admin List", TableStorage, 76198987)
  6305. end};
  6306.  
  6307. [{"bans", "banlist"}] = {"", "Lists all players who've been banned", 0, "Member", false, function(Speaker, Rank, Arguments)
  6308. GUI:ListGui(Speaker, "Ban List", Settings.Ranks.Banned, 163337795)
  6309. end};
  6310.  
  6311. [{"crashes", "crashlist"}] = {"", "Lists all players who've been crashed", 0, "Member", false, function(Speaker, Rank, Arguments)
  6312. GUI:ListGui(Speaker, "Crash List", Settings.Ranks.Crashed, 35480917)
  6313. end};
  6314.  
  6315. [{"mutes", "muted", "mutelist"}] = {"", "Lists all players who've been muted", 0, "Member", false, function(Speaker, Rank, Arguments)
  6316. GUI:ListGui(Speaker, "Mute List", Settings.Ranks.Muted, 202000870)
  6317. end};
  6318.  
  6319. [{"exiles", "exilelist"}] = {"", "Lists all the exiled players(banned, crashed, muted) in the admin", 0, "Member", false, function(Speaker, Rank, Arguments)
  6320. local TableStorage = {}
  6321. for _,Obj in pairs(Settings.Ranks.Banned) do table.insert(TableStorage, Obj..": Banned") end
  6322. for _,Obj in pairs(Settings.Ranks.Crashed) do table.insert(TableStorage, Obj..": Crashed") end
  6323. for _,Obj in pairs(Settings.Ranks.Muted) do table.insert(TableStorage, Obj..": Muted") end
  6324. GUI:ListGui(Speaker, "Exile List", TableStorage, 132769258)
  6325. end};
  6326.  
  6327. [{"ranked", "ranks", "ranklist"}] = {"", "Lists all the players ranked in the admin", 0, "Member", false, function(Speaker, Rank, Arguments)
  6328. local TableStorage = {}
  6329. for PlayerRank,PlayerNames in pairs(Settings.Ranks) do
  6330. for Num,PlayerName in pairs(PlayerNames) do
  6331. if PlayerRank == "Owner" then
  6332. table.insert(TableStorage, "BOLD: "..PlayerName..": Owner")
  6333. else
  6334. table.insert(TableStorage, PlayerName..": "..PlayerRank)
  6335. end
  6336. end
  6337. end
  6338. GUI:ListGui(Speaker, "Rank List", TableStorage, 21341765)
  6339. end};
  6340.  
  6341. [{"logs", "commandlogs", "cmdlogs"}] = {"", "Lists all the logs of executed commands", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6342. GUI:ListGui(Speaker, "Command Logs", CORE:ReverseTable(CommandLogs), "Log")
  6343. end};
  6344.  
  6345. [{"chatlogs"}] = {"", "Lists all the logs of players who've chatted", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6346. GUI:ListGui(Speaker, "Chat Logs", CORE:ReverseTable(ChatLogs), "Log")
  6347. end};
  6348.  
  6349. [{"irclogs"}] = {"", "Lists all the logs of irc output", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6350. GUI:ListGui(Speaker, "IRC Logs", CORE:ReverseTable(IRC.Logs), "Log")
  6351. end};
  6352.  
  6353. [{"exploitlogs"}] = {"", "Lists all the logs of exploits", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6354. local ExploitLog = Server.GDS:GetAsync("ExploitLog")
  6355. if type(ExploitLog) ~= "table" then ExploitLog = {} end
  6356. GUI:ListGui(Speaker, "Exploit Logs", ExploitLog, "Log")
  6357. end};
  6358.  
  6359. [{"clearlogs", "clearcommandlogs", "clearcmdlogs"}] = {"", "Clears all the logs of executed commands", 0, "Owner", false, function(Speaker, Rank, Arguments)
  6360. CommandLogs = {}
  6361. end};
  6362.  
  6363. [{"clearchatlogs"}] = {"", "Clears all the logs of players who've chatted", 0, "Owner", false, function(Speaker, Rank, Arguments)
  6364. ChatLogs = {}
  6365. end};
  6366.  
  6367. [{"clearirclogs"}] = {"", "Clears all the logs of irc output", 0, "Owner", false, function(Speaker, Rank, Arguments)
  6368. IRC.Logs = {}
  6369. end};
  6370.  
  6371. [{"clearalllogs", "resetlogs"}] = {"", "Clears ALL logs (Command, Chat, IRC) but not exploit logs", 0, "Owner", false, function(Speaker, Rank, Arguments)
  6372. CommandLogs = {}
  6373. ChatLogs = {}
  6374. IRC.Logs = {}
  6375. end};
  6376.  
  6377. [{"clearexploitlogs"}] = {"", "Clears all the logs of exploits", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6378. Server.GDS:SetAsync("ExploitLog", {})
  6379. end};
  6380.  
  6381. [{"soundlist", "musiclist", "audiolist", "songs", "sounds", "musics", "audios"}] = {"", "Lists all the sounds in the global sound list", 0, "Member", false, function(Speaker, Rank, Arguments)
  6382. local List,Correlate,SoundName = {},{},{}
  6383. for Name,Info in pairs(SoundList) do
  6384. local View = "Command Name: "..Name.." | Audio ID: "..Info[1].." | Full Name: "..Info[2]
  6385. table.insert(List, View)
  6386. Correlate[View] = Info[1]
  6387. end
  6388.  
  6389. local CanClick = true
  6390. if Rank == "Member" then CanClick = false end
  6391. local Clicked = GUI:ListGui(Speaker, "Sound List", List, "Sound", CanClick)
  6392. Clicked.Event:connect(function(ClickName)
  6393. local OldSoundId = nil
  6394. SOUND:StopGlobalSound()
  6395. if "rbxassetid://"..Correlate[ClickName] ~= OldSoundID then
  6396. SOUND:PlayGlobalSound(Correlate[ClickName])
  6397. end
  6398. end)
  6399. end};
  6400.  
  6401. [{"syncsoundlist", "syncsounds", "syncaudiolist", "syncaudios", "syncmusiclist", "syncmusics"}] = {"", "Resyncs the global sound list to the server", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6402. SOUND:SyncSoundList(Speaker)
  6403. end};
  6404.  
  6405. [{"cleart", "clearterrain", "cleant", "cleanterrain"}] = {"", "Clears all terrain from the server", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6406. 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"})
  6407. if Answer == "Yes" then
  6408. Server.Workspace.Terrain:Clear()
  6409. end
  6410. end};
  6411.  
  6412. [{"clearstamp", "clearstamper", "cleanstamp", "cleanstamper"}] = {"", "Clears all items in workspace that came from the stamper tool (Not terrain)", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6413. 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"})
  6414. if Answer == "Yes" then
  6415. for _,Obj in pairs(Workspace:GetChildren()) do
  6416. if Obj:FindFirstChild("RobloxStamper") and Obj:FindFirstChild("RobloxModel") then
  6417. Obj:Destroy()
  6418. end
  6419. end
  6420. end
  6421. end};
  6422.  
  6423. [{"base", "baseplate", "newbase", "makebase", "newbaseplate", "makebaseplate"}] = {"", "Creates a baseplate inside the server", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6424. CORE:MakeBase()
  6425. end};
  6426.  
  6427. [{"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)
  6428. local CustomSounds = Server.GDS:GetAsync("MML Custom Sounds")
  6429. if CustomSounds == nil or type(CustomSounds) ~= "table" then
  6430. CustomSounds = {}
  6431. end
  6432. if tostring(Arguments[1]) then
  6433. local Request = MARKET:GetItemInfo(Arguments[1])
  6434. if Request.AssetTypeId == 3 then
  6435. table.insert(CustomSounds, {Arguments[2], Arguments[1]})
  6436. SoundList[Arguments[2]] = {Arguments[1], Request.Name, Request.Creator.Name}
  6437. Server.GDS:SetAsync("MML Custom Sounds", CustomSounds)
  6438. GUI:SendHint(Speaker, "Sound Added to server sound list and for future servers.", 4)
  6439. else
  6440. GUI:SendMessage(Speaker, "Invalid", "Please make sure that your ID is an audio asset.", 4)
  6441. end
  6442. end
  6443. end};
  6444.  
  6445. [{"removesound", "removeaudio", "removemusic"}] = {"string", "Will remove the sound string from the custom sound list of the game", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6446. local CustomSounds = Server.GDS:GetAsync("MML Custom Sounds")
  6447. if CustomSounds == nil or type(CustomSounds) ~= "table" then
  6448. CustomSounds = {}
  6449. end
  6450.  
  6451. local Removed = {}
  6452. for Num,Data in pairs(CustomSounds) do
  6453. if string.sub(string.lower(Data[1]),1,#Arguments[1]) == string.lower(Arguments[1]) then
  6454. table.insert(Removed, Data[1])
  6455. table.remove(CustomSounds, Num)
  6456. end
  6457. end
  6458.  
  6459. Server.GDS:SetAsync("MML Custom Sounds", CustomSounds)
  6460.  
  6461. SOUND:SyncSoundList()
  6462.  
  6463. if #Removed > 0 then
  6464. GUI:SendHint(Speaker, "Removed from custom sound list: "..STRING:UnpackArgs(Removed))
  6465. else
  6466. GUI:SendHint(Speaker, "Could not find sound "..Arguments[1].." in custom sound list")
  6467. end
  6468. end};
  6469.  
  6470. [{"clearsounds", "clearaudio", "clearmusic"}] = {"", "Clears all sounds in the custom sound list of the game", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6471. 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"})
  6472. if Answer == "Yes" then
  6473. Server.GDS:SetAsync("MML Custom Sounds", {})
  6474. SoundList = GlobalSoundList -- Reset to old sounds without having to re-sync!
  6475. GUI:SendHint(Speaker, "All custom sounds have been removed", 4)
  6476. end
  6477. end};
  6478.  
  6479. [{"benchmark", "bench"}] = {"player", "Benchmarks player", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6480. local Players = STRING:Scan(Arguments[1], Speaker)
  6481. local SpeakerTesting = false
  6482. for _,Player in pairs(Players) do
  6483. if Player == Speaker then SpeakerTesting = true end
  6484. if Player:FindFirstChild("Backpack") then coroutine.wrap(function()
  6485. CORE:ExecuteResource("Benchmark", Player.Backpack, {["Admin"] = script})
  6486. --wait(10)
  6487. --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)
  6488. end)() end
  6489. end
  6490. if SpeakerTesting == false then
  6491. GUI:SendMessage(Speaker, "Benchmarking", "The player(s) are now being benchmarked. To view results say "..Settings.Prefix.."getbench player", "Information", 10)
  6492. end
  6493. end};
  6494.  
  6495. [{"getbench", "getbenchmark", "getbenches", "getbenchmarks"}] = {"player", "Gets benchmarks of player", 1, "Member", false, function(Speaker, Rank, Arguments)
  6496. local Players = STRING:Scan(Arguments[1], Speaker)
  6497. local Compile = {}
  6498. for _,Player in pairs(Players) do
  6499. local PlayerInfo = ClientInfo[Player.Name]
  6500. if PlayerInfo then
  6501. if PlayerInfo.Benchmark then
  6502. table.insert(Compile, Player.Name..": "..PlayerInfo.Benchmark)
  6503. else
  6504. table.insert(Compile, Player.Name..": No score")
  6505. end
  6506. end
  6507. end
  6508. GUI:ListGui(Speaker, "Benchmarks", Compile, "Information")
  6509. end};
  6510.  
  6511. [{"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)
  6512. local Players = STRING:Scan(Arguments[1], Speaker)
  6513. for _,Player in pairs(Players) do
  6514. CORE:Chatted(Arguments[2], Player, true)
  6515. end
  6516. end};
  6517.  
  6518. [{"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)
  6519. CORE:Chatted(Arguments[3], nil, true, Arguments[1], Arguments[2], RANK:IsSupremeOwner(Speaker))
  6520. end};
  6521.  
  6522. [{"longneck", "lneck", "longn", "ln"}] = {"player", "Makes player have a long neck", 1, "Member", true, function(Speaker, Rank, Arguments)
  6523. local Players = STRING:Scan(Arguments[1], Speaker)
  6524. for _,Player in pairs(Players) do
  6525. if Player.Character ~= nil then
  6526. if Player.Character:FindFirstChild("Torso") and Player.Character:FindFirstChild("Head") ~= nil then
  6527. if Player.Character.Torso:FindFirstChild("Neck") then
  6528. Player.Character.Torso.Neck.C0 = CFrame.new(0,3,0) * CFrame.Angles(-math.rad(90),0,math.rad(180))
  6529. local Neck = Player.Character:FindFirstChild("Neck") if Neck then Neck:Destroy() end
  6530. 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
  6531. local Mesh = Instance.new("CylinderMesh", Neck) Mesh.Scale = Vector3.new(0.7,1,0.7)
  6532. local Weld = Instance.new("Weld", Neck) Weld.Part0 = Neck Weld.Part1 = Player.Character.Torso Weld.C0 = CFrame.new(0,-2,0)
  6533. end
  6534. end
  6535. end
  6536. end
  6537. end};
  6538.  
  6539. [{"nolongneck", "normalneck", "nolneck", "nolongn", "noln", "unlongneck", "unlneck", "unlongn", "unln", "shortneck"}] = {"player", "Makes player's neck normal sized", 1, "Member", true, function(Speaker, Rank, Arguments)
  6540. local Players = STRING:Scan(Arguments[1], Speaker)
  6541. for _,Player in pairs(Players) do
  6542. if Player.Character ~= nil and Player.Character:FindFirstChild("Torso") then
  6543. Player.Character.Torso.Neck.C0 = CFrame.new(0,1,0) * CFrame.Angles(-math.rad(90),0,math.rad(180))
  6544. local Neck = Player.Character:FindFirstChild("Neck") if Neck then Neck:Destroy() end
  6545. end
  6546. end
  6547. end};
  6548.  
  6549. [{"fling"}] = {"player", "Flings player out of the map", 1, "Member", true, function(Speaker, Rank, Arguments)
  6550. local Players = STRING:Scan(Arguments[1], Speaker)
  6551. for _,Player in pairs(Players) do
  6552. local _,RankNum = RANK:GetRank(Player)
  6553. if RankNum <= RANK:ConvertRank(Rank) then
  6554. CORE:FlingPlayer(Player)
  6555. end
  6556. end
  6557. end};
  6558.  
  6559. [{"loopfling", "lfling", "loopf", "lf"}] = {"player", "Flings player out of the map over and over", 1, "Member", true, function(Speaker, Rank, Arguments)
  6560. local Players = STRING:Scan(Arguments[1], Speaker)
  6561. for _,Player in pairs(Players) do
  6562. local _,RankNum = RANK:GetRank(Player)
  6563. if RankNum <= RANK:ConvertRank(Rank) then
  6564. Flings[Player.Name] = true
  6565. CORE:FlingPlayer(Player)
  6566. end
  6567. end
  6568. end};
  6569.  
  6570. [{"noloopfling", "unloopfling", "nofling", "unfling"}] = {"player", "Stops theloop fling on player", 1, "Member", true, function(Speaker, Rank, Arguments)
  6571. local Players = STRING:Scan(Arguments[1], Speaker)
  6572. for _,Player in pairs(Players) do
  6573. local _,RankNum = RANK:GetRank(Player)
  6574. if RankNum <= RANK:ConvertRank(Rank) then
  6575. Flings[Player.Name] = nil
  6576. end
  6577. end
  6578. end};
  6579.  
  6580. [{"nuke"}] = {"player", "Nukes player", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6581. local Players = STRING:Scan(Arguments[1], Speaker)
  6582. for _,Player in pairs(Players) do
  6583. CORE:Nuke(Player)
  6584. end
  6585. end};
  6586.  
  6587. [{"beep", "annoy"}] = {"player", "Plays a beep sound to player", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6588. local Players = STRING:Scan(Arguments[1], Speaker)
  6589. for _,Player in pairs(Players) do
  6590. Beeps[Player.Name] = true
  6591. SOUND:BeepPlayer(Player)
  6592. end
  6593. end};
  6594.  
  6595. [{"nobeep", "unbeep", "noannoy", "unannoy"}] = {"player", "Stops beeping sound on player", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6596. local Players = STRING:Scan(Arguments[1], Speaker)
  6597. for _,Player in pairs(Players) do
  6598. if Player.PlayerGui then
  6599. Beeps[Player.Name] = nil
  6600. for _,Obj in pairs(Player.PlayerGui:GetChildren()) do
  6601. if Obj.Name == "Annoy" then
  6602. Obj:Stop()
  6603. Obj:Destroy()
  6604. end
  6605. end
  6606. end
  6607. end
  6608. end};
  6609.  
  6610. [{"time"}] = {"number/string", "Sets the time to number/string(Ex: 9:00, noon)", 1, "Member", false, function(Speaker, Rank, Arguments)
  6611. local Time = Arguments[1]
  6612. if Time == "day" or Time == "noon" then Time = "12" end
  6613. if Time == "night" or Time == "midnight" then Time = "0" end
  6614. if Time == "dawn" or Time == "morning" then Time = "6:15" end
  6615. if Time == "dusk" or Time == "evening" then Time = "17:45" end
  6616. if Time == "afternoon" then Time = "15:30" end
  6617. ypcall(function() Server.Lighting.TimeOfDay = Time end)
  6618. end};
  6619.  
  6620. [{"product", "buy", "purchase", "prod", "place"}] = {"player number(ID)", "Prompts player to purchase item", 2, "Member", false, function(Speaker, Rank, Arguments)
  6621. local Players = STRING:Scan(Arguments[1], Speaker)
  6622. for _,Player in pairs(Players) do
  6623. MARKET:PromptPurchase(Player, Arguments[2], Speaker)
  6624. end
  6625. end};
  6626.  
  6627. [{"gear"}] = {"player ID", "Gives player the gear with the ID of ID", 2, "Member", false, function(Speaker, Rank, Arguments)
  6628. local AbuseMode = false
  6629. if Rank == "Member" then AbuseMode = Settings.DisableAbuse end
  6630. local Players = STRING:Scan(Arguments[1], Speaker)
  6631. for _,Player in pairs(Players) do
  6632. CORE:Insert(Arguments[2], Player.Backpack, true, {"Tool", "HopperBin"}, AbuseMode)
  6633. end
  6634. end};
  6635.  
  6636. [{"sword"}] = {"player", "Gives player a sword", 1, "Member", false, function(Speaker, Rank, Arguments)
  6637. local Players = STRING:Scan(Arguments[1], Speaker)
  6638. for _,Player in pairs(Players) do
  6639. CORE:Insert(125013769, Player.Backpack, true)
  6640. end
  6641. end};
  6642.  
  6643. [{"accessory", "acs", "hat"}] = {"player ID", "Gives player the accessory with the ID of ID", 2, "Member", false, function(Speaker, Rank, Arguments)
  6644. local Players = STRING:Scan(Arguments[1], Speaker)
  6645. for _,Player in pairs(Players) do
  6646. if Player.Character then
  6647. CORE:Insert(Arguments[2], Player.Character, true, {"Accoutrement"})
  6648. end
  6649. end
  6650. end};
  6651.  
  6652. [{"flash"}] = {"", "Flashes lighting", 0, "Member", false, function(Speaker, Rank, Arguments)
  6653. CORE:ResetLighting()
  6654. repeat
  6655. Server.Lighting.Ambient = Color3.new(1,1,1)
  6656. Server.Lighting.FogColor = Color3.new(1,1,1)
  6657. Server.Lighting.Brightness = 1
  6658. Server.Lighting.TimeOfDay = 14
  6659. wait(0.1)
  6660. Server.Lighting.Ambient = Color3.new(0,0,0)
  6661. Server.Lighting.FogColor = Color3.new(0,0,0)
  6662. Server.Lighting.Brightness = 0
  6663. Server.Lighting.TimeOfDay = 0
  6664. wait(0.1)
  6665. until ModLighting == false
  6666. end};
  6667.  
  6668. [{"disco", "party"}] = {"", "Changes the lighting so there's a disco party", 0, "Member", false, function(Speaker, Rank, Arguments)
  6669. CORE:ResetLighting()
  6670. repeat
  6671. local Color = Color3.new(math.random(0,255)/255,math.random(0,255)/255,math.random(0,255)/255)
  6672. Server.Lighting.Ambient = Color
  6673. Server.Lighting.FogColor = Color
  6674. Server.Lighting.TimeOfDay = 0
  6675. Server.Lighting.FogEnd = 500
  6676. wait(0.1)
  6677. until ModLighting == false
  6678. end};
  6679.  
  6680. [{"fixl", "fixlighting", "nodisco", "undisco", "noflash", "unflash"}] = {"", "Removes disco or flash effects", 0, "Member", false, function(Speaker, Rank, Arguments)
  6681. CORE:FixLighting()
  6682. end};
  6683.  
  6684. [{"strobe"}] = {"player", "Makes player's screen flash like a strobe", 1, "Member", false, function(Speaker, Rank, Arguments)
  6685. local Players = STRING:Scan(Arguments[1], Speaker)
  6686. for _,Player in pairs(Players) do
  6687. if Player:FindFirstChild("PlayerGui") then
  6688. local SG = Player.PlayerGui:FindFirstChild("MMLA Screen Cover") if SG then SG:Destroy() end
  6689. SG = Instance.new("ScreenGui", Player.PlayerGui) SG.Name = "MMLA Screen Cover"
  6690. local Frame = Instance.new("Frame", SG) Frame.Name = "Overlay" Frame.Size = UDim2.new(1,0,1,0) Frame.ZIndex = 100
  6691. 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)()
  6692. end
  6693. end
  6694. end};
  6695.  
  6696. [{"nostrobe", "unstrobe", "noblind", "unblind"}] = {"player", "Clears the strobe effect from player's screen", 1, "Member", false, function(Speaker, Rank, Arguments)
  6697. local Players = STRING:Scan(Arguments[1], Speaker)
  6698. for _,Player in pairs(Players) do
  6699. if Player:FindFirstChild("PlayerGui") then
  6700. local SG = Player.PlayerGui:FindFirstChild("MMLA Screen Cover") if SG then SG:Destroy() end
  6701. end
  6702. end
  6703. end};
  6704.  
  6705. [{"blind"}] = {"player", "Makes player unable to see", 1, "Member", false, function(Speaker, Rank, Arguments)
  6706. local Players = STRING:Scan(Arguments[1], Speaker)
  6707. for _,Player in pairs(Players) do
  6708. if Player:FindFirstChild("PlayerGui") then
  6709. local SG = Player.PlayerGui:FindFirstChild("MMLA Screen Cover") if SG then SG:Destroy() end
  6710. SG = Instance.new("ScreenGui", Player.PlayerGui) SG.Name = "MMLA Screen Cover"
  6711. 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)
  6712. end
  6713. end
  6714. end};
  6715.  
  6716. [{"rejoin", "rj", "rej", "rjoin"}] = {"", "Makes yourself rejoin the server", 0, "Non-Admin", false, function(Speaker, Rank, Arguments)
  6717. local Suc, Err, PlaceID, IntID = Server.TS:GetPlayerPlaceInstanceAsync(Speaker.UserId)
  6718. if Suc then
  6719. Server.TS:TeleportToPlaceInstance(PlaceID, IntID, Speaker)
  6720. else
  6721. Server.TS:Teleport(game.PlaceId, Speaker)
  6722. end
  6723. end};
  6724.  
  6725. [{"abuselist", "abusablecommands", "abusecmds", "ac"}] = {"", "Shows a list of abusable commands", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6726. GUI:ListGui(Speaker, "Abusable Commands", Settings.AbuseList, 2015506)
  6727. end};
  6728.  
  6729. [{"addabuse", "makeabuse", "abusecmd", "abusecommand", "addabusable", "makeabusable", "abusablecmd", "abusablecommand"}] = {"string(command)", "Adds string(command) to the abuse list", 1, "Owner", false, function(Speaker, Rank, Arguments)
  6730. local NewAbuse = Arguments[1]
  6731. if string.sub(string.lower(NewAbuse), 1, #Settings.Prefix) == string.lower(Settings.Prefix) then -- remove prefix if present
  6732. NewAbuse = string.sub(NewAbuse, #Settings.Prefix + 1)
  6733. end
  6734.  
  6735. local Match = false
  6736. for _,AbuseCmd in pairs(Settings.AbuseList) do
  6737. if string.lower(AbuseCmd) == string.lower(NewAbuse) then
  6738. Match = true
  6739. break
  6740. end
  6741. end
  6742. if not Match then
  6743. table.insert(Settings.AbuseList, NewAbuse)
  6744. GUI:MessageAdmins("New abusable command", Speaker.Name.." has made '"..NewAbuse.."' an abuseable command", "Check")
  6745. else
  6746. GUI:SendMessage(Speaker, "Command Exists", "RED This command matches another in the abuse list, therefore, will not be added", "Error")
  6747. end
  6748. CORE:SetAbuseCommands()
  6749. end};
  6750.  
  6751. [{"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)
  6752. local NewAbuse = Arguments[1]
  6753. if string.sub(string.lower(NewAbuse), 1, #Settings.Prefix) == string.lower(Settings.Prefix) then -- remove prefix if present
  6754. NewAbuse = string.sub(NewAbuse, #Settings.Prefix + 1)
  6755. end
  6756.  
  6757. local Removed = false
  6758. for Num,AbuseCmd in pairs(Settings.AbuseList) do
  6759. if string.sub(string.lower(AbuseCmd), 1, #NewAbuse) == string.lower(NewAbuse) then
  6760. Removed = true
  6761. table.remove(Settings.AbuseList, Num)
  6762. end
  6763. end
  6764. if Removed then
  6765. GUI:MessageAdmins("Removed abusable command", Speaker.Name.." has removed '"..NewAbuse.."' from the abuse list", "Check")
  6766. else
  6767. GUI:SendMessage(Speaker, "Command not removed", "RED Could not find '"..NewAbuse.."' in abuse list", "Error")
  6768. end
  6769. CORE:SetAbuseCommands()
  6770. end};
  6771.  
  6772. [{"god", "power"}] = {"player", "Gives player unlimited health", 1, "Member", false, function(Speaker, Rank, Arguments)
  6773. local Players = STRING:Scan(Arguments[1], Speaker)
  6774. for _,Player in pairs(Players) do
  6775. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  6776. Player.Character.Humanoid.MaxHealth = math.huge
  6777. Player.Character.Humanoid.Health = math.huge
  6778. end
  6779. end
  6780. end};
  6781.  
  6782. [{"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)
  6783. local Players = STRING:Scan(Arguments[1], Speaker)
  6784. for _,Player in pairs(Players) do
  6785. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  6786. if Player.Character.Humanoid.MaxHealth == math.huge then
  6787. Player.Character.Humanoid.MaxHealth = 100
  6788. Player.Character.Humanoid.Health = 100
  6789. else
  6790. Player.Character.Humanoid.Health = Player.Character.Humanoid.MaxHealth
  6791. end
  6792. end
  6793. end
  6794. end};
  6795.  
  6796. [{"loopheal"}] = {"player", "Loops player's health to full", 1, "Member", false, function(Speaker, Rank, Arguments)
  6797. local Players = STRING:Scan(Arguments[1], Speaker)
  6798. for _,Player in pairs(Players) do
  6799. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  6800. local Char = Player.Character
  6801. repeat Char.Humanoid.Health = Char.Humanoid.MaxHealth wait() until not Char:FindFirstChild("Humanoid") or Char.Parent == nil or Char.Humanoid.Health == 0
  6802. end
  6803. end
  6804. end};
  6805.  
  6806. [{"health"}] = {"player num", "Sets the health of player to num", 2, "Member", false, function(Speaker, Rank, Arguments)
  6807. if tonumber(Arguments[2]) then
  6808. local Players = STRING:Scan(Arguments[1], Speaker)
  6809. for _,Player in pairs(Players) do
  6810. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  6811. Player.Character.Humanoid.Health = Arguments[2]
  6812. end
  6813. end
  6814. end
  6815. end};
  6816.  
  6817. [{"speed", "ws", "walkspeed"}] = {"player num", "Sets the speed of player to num", 2, "Member", false, function(Speaker, Rank, Arguments)
  6818. if tonumber(Arguments[2]) then
  6819. local Players = STRING:Scan(Arguments[1], Speaker)
  6820. for _,Player in pairs(Players) do
  6821. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  6822. local Speed = tonumber(Arguments[2])
  6823. if Speed then
  6824. if Rank == "Member" then
  6825. if Speed > 1000 then Speed = 1000
  6826. elseif Speed < -1000 then Speed = -1000 end
  6827. end
  6828. Player.Character.Humanoid.WalkSpeed = Speed
  6829. end
  6830. end
  6831. end
  6832. end
  6833. end};
  6834.  
  6835. [{"damage", "dmg"}] = {"player num", "Takes away num health from player", 2, "Member", false, function(Speaker, Rank, Arguments)
  6836. if tonumber(Arguments[2]) then
  6837. local Players = STRING:Scan(Arguments[1], Speaker)
  6838. for _,Player in pairs(Players) do
  6839. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  6840. Player.Character.Humanoid.Health = Player.Character.Humanoid.Health - Arguments[2]
  6841. end
  6842. end
  6843. end
  6844. end};
  6845.  
  6846. [{"fly"}] = {"player", "Lets player be able to fly", 1, "Member", false, function(Speaker, Rank, Arguments)
  6847. local Players = STRING:Scan(Arguments[1], Speaker)
  6848. for _,Player in pairs(Players) do
  6849. CORE:Fly(Player, 10000)
  6850. end
  6851. end};
  6852.  
  6853. [{"noclip", "noc"}] = {"player", "Lets player be able to noclip", 1, "Member", false, function(Speaker, Rank, Arguments)
  6854. local Players = STRING:Scan(Arguments[1], Speaker)
  6855. for _,Player in pairs(Players) do
  6856. CORE:Fly(Player, 1000000)
  6857. end
  6858. end};
  6859.  
  6860. [{"nofly", "unfly", "clip", "nonoclip", "unnoclip"}] = {"player", "Removes fly or noclip effect", 1, "Member", false, function(Speaker, Rank, Arguments)
  6861. local Players = STRING:Scan(Arguments[1], Speaker)
  6862. for _,Player in pairs(Players) do
  6863. if Player.Character then
  6864. if Player.Character:FindFirstChild("StopMMLFly") then
  6865. Player.Character.StopMMLFly:InvokeClient(Player)
  6866. end
  6867. end
  6868. end
  6869. end};
  6870.  
  6871. [{"clearcache", "clearc", "cc"}] = {"", "Clears cached objects such as market info and http local scripts", 0, "Owner", false, function(Speaker, Rank, Arguments)
  6872. ScriptCache,MarketCache,CharacterCache,PackageCache = {},{},{},{}
  6873. GUI:SendMessage(Speaker, "Cache Cleared", "Cache has been cleared successfully", "Check")
  6874. end};
  6875.  
  6876. [{"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)
  6877. local Players = STRING:Scan(Arguments[1], Speaker)
  6878. for _,Player in pairs(Players) do
  6879. CORE:GiveTools(Player, Arguments[2])
  6880. end
  6881. end};
  6882.  
  6883. [{"tools", "gettools", "toollist", "toolslist"}] = {"", "Gets all tools that you can use the "..Settings.Prefix.."give command", 0, "Member", false, function(Speaker, Rank, Arguments)
  6884. local List = {}
  6885. for _,Region in pairs(ToolRegions) do
  6886. CORE:ScanItems(Region, {"HopperBin", "Tool"}, function(Item)
  6887. table.insert(List, Item.Name.." | Found at: "..Item:GetFullName())
  6888. end)
  6889. end
  6890.  
  6891. GUI:ListGui(Speaker, "Tool list", List, 73589272)
  6892. end};
  6893.  
  6894. [{"btools", "buildtools", "buildingtools"}] = {"player string", "Gives player building tools", 1, "Member", false, function(Speaker, Rank, Arguments)
  6895. local Players = STRING:Scan(Arguments[1], Speaker)
  6896. for _,Player in pairs(Players) do
  6897. CORE:GiveTools(Player, "btools")
  6898. end
  6899. end};
  6900.  
  6901. [{"shutdown", "sd"}] = {"", "Shuts down the server", 0, "Owner", false, function(Speaker, Rank, Arguments)
  6902. REMOTE:SendHttpLog(Speaker.Name.." shutdown the server", "INFORMATION")
  6903. for _,Player in pairs(Server.Players:GetPlayers()) do
  6904. Player:Kick()
  6905. end
  6906. Server.Workspace:ClearAllChildren()
  6907. string.find(string.rep("a", 2^20),string.rep(".?", 2^20))
  6908. end};
  6909.  
  6910. [{"scale", "size"}] = {"player num", "Scales player's character to num", 2, "Member", false, function(Speaker, Rank, Arguments)
  6911. local Players = STRING:Scan(Arguments[1], Speaker)
  6912. for _,Player in pairs(Players) do
  6913. CORE:Scale(Player, Arguments[2])
  6914. end
  6915. end};
  6916.  
  6917. [{"mini", "small", "tiny", "small"}] = {"player", "Makes player's character mini", 1, "Member", false, function(Speaker, Rank, Arguments)
  6918. local Players = STRING:Scan(Arguments[1], Speaker)
  6919. for _,Player in pairs(Players) do
  6920. CORE:Scale(Player, 50)
  6921. end
  6922. end};
  6923.  
  6924. [{"hobbit"}] = {"player", "Makes player's character hobbit sized", 1, "Member", false, function(Speaker, Rank, Arguments)
  6925. local Players = STRING:Scan(Arguments[1], Speaker)
  6926. for _,Player in pairs(Players) do
  6927. CORE:Scale(Player, 70)
  6928. end
  6929. end, Hidden = true};
  6930.  
  6931. [{"mega", "huge", "giant", "large", "big"}] = {"player", "Makes player's character mega", 1, "Member", false, function(Speaker, Rank, Arguments)
  6932. local Players = STRING:Scan(Arguments[1], Speaker)
  6933. for _,Player in pairs(Players) do
  6934. CORE:Scale(Player, 500)
  6935. end
  6936. end};
  6937.  
  6938. [{"gold", "goldify"}] = {"player", "Makes player's character gold", 1, "Member", false, function(Speaker, Rank, Arguments)
  6939. local Players = STRING:Scan(Arguments[1], Speaker)
  6940. for _,Player in pairs(Players) do
  6941. if Player.Character then
  6942. CORE:ScanItems(Player.Character, {"BasePart"}, function(Obj)
  6943. Obj.Reflectance = 0.5
  6944. Obj.BrickColor = BrickColor.new("New Yeller")
  6945. end)
  6946. end
  6947. end
  6948. end};
  6949.  
  6950. [{"shine", "shiny", "shinify", "shineify"}] = {"player", "Makes player's character shiny", 1, "Member", false, function(Speaker, Rank, Arguments)
  6951. local Players = STRING:Scan(Arguments[1], Speaker)
  6952. for _,Player in pairs(Players) do
  6953. if Player.Character then
  6954. CORE:ScanItems(Player.Character, {"BasePart"}, function(Obj)
  6955. Obj.Reflectance = 0.5
  6956. end)
  6957. end
  6958. end
  6959. end};
  6960.  
  6961. [{"ghost", "ghostify", "spook", "spooky"}] = {"player", "Makes player's character a ghost", 1, "Member", false, function(Speaker, Rank, Arguments)
  6962. local Players = STRING:Scan(Arguments[1], Speaker)
  6963. for _,Player in pairs(Players) do
  6964. if Player.Character then
  6965. CORE:ScanItems(Player.Character, {"BasePart"}, function(Obj)
  6966. Obj.Transparency = 0.5
  6967. Obj.Reflectance = 0
  6968. Obj.BrickColor = BrickColor.new("Institutional white")
  6969. end)
  6970. CORE:ScanItems(Player.Character, {"Texture", "Decal"}, function(Obj)
  6971. Obj.Transparency = 0.5
  6972. end)
  6973. end
  6974. end
  6975. end};
  6976.  
  6977. [{"nolimbs", "nolimb"}] = {"player", "Removes player's limbs", 1, "Member", false, function(Speaker, Rank, Arguments)
  6978. local Players = STRING:Scan(Arguments[1], Speaker)
  6979. for _,Player in pairs(Players) do
  6980. if Player.Character then
  6981. for _,Obj in pairs(Player.Character:GetChildren()) do
  6982. local Valid = false
  6983. for _,Name in pairs({"Right Arm", "Left Arm", "Right Leg", "Left Leg"}) do if Obj.Name == Name then Valid = true end end
  6984. if Valid == true then Obj:Destroy() end
  6985. end
  6986. end
  6987. end
  6988. end};
  6989.  
  6990. [{"noarms", "noarm"}] = {"player", "Removes player's arms", 1, "Member", false, function(Speaker, Rank, Arguments)
  6991. local Players = STRING:Scan(Arguments[1], Speaker)
  6992. for _,Player in pairs(Players) do
  6993. if Player.Character then
  6994. for _,Obj in pairs(Player.Character:GetChildren()) do
  6995. local Valid = false
  6996. for _,Name in pairs({"Right Arm", "Left Arm"}) do if Obj.Name == Name then Valid = true end end
  6997. if Valid == true then Obj:Destroy() end
  6998. end
  6999. end
  7000. end
  7001. end};
  7002.  
  7003. [{"nolegs", "noleg"}] = {"player", "Removes player's legs", 1, "Member", false, function(Speaker, Rank, Arguments)
  7004. local Players = STRING:Scan(Arguments[1], Speaker)
  7005. for _,Player in pairs(Players) do
  7006. if Player.Character then
  7007. for _,Obj in pairs(Player.Character:GetChildren()) do
  7008. local Valid = false
  7009. for _,Name in pairs({"Right Leg", "Left Leg"}) do if Obj.Name == Name then Valid = true end end
  7010. if Valid == true then Obj:Destroy() end
  7011. end
  7012. end
  7013. end
  7014. end};
  7015.  
  7016. [{"noaccessories", "noaccessory", "noacs", "nohats", "nohat"}] = {"player", "Removes player's accessories", 1, "Member", false, function(Speaker, Rank, Arguments)
  7017. local Players = STRING:Scan(Arguments[1], Speaker)
  7018. for _,Player in pairs(Players) do
  7019. if Player.Character then
  7020. for _,Obj in pairs(Player.Character:GetChildren()) do
  7021. if Obj:IsA("Accoutrement") then
  7022. Obj:Destroy()
  7023. end
  7024. end
  7025. end
  7026. end
  7027. end};
  7028.  
  7029. [{"naked", "noclothes"}] = {"player", "Removes player's clothes and hats", 1, "Member", false, function(Speaker, Rank, Arguments)
  7030. local Players = STRING:Scan(Arguments[1], Speaker)
  7031. for _,Player in pairs(Players) do
  7032. Player:ClearCharacterAppearance()
  7033. end
  7034. end};
  7035.  
  7036. [{"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)
  7037. local Players = Server.Data:GetDataStore("MML's Admin"):GetAsync("Players")
  7038. local TmpPlayers = {}
  7039. local Output = {}
  7040. for _,Data in pairs(Players) do
  7041. 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})
  7042. end
  7043. GUI:ListGui(Speaker, "Player Database", Output, 120563622)
  7044. end};
  7045.  
  7046. [{"clearplayerdatabase", "clearpdb", "cpdb"}] = {"", "Clears the player databse", 0, "Owner", false, function(Speaker, Rank, Arguments)
  7047. Server.Data:GetDataStore("MML's Admin"):SetAsync("Players", {})
  7048. GUI:SendHint(Speaker, "Player Database cleared", 5)
  7049. end};
  7050.  
  7051. [{"hack", "hax"}] = {"player", "Fake hacks player", 1, "Member", true, function(Speaker, Rank, Arguments)
  7052. local Players = STRING:Scan(Arguments[1], Speaker)
  7053. for _,Player in pairs(Players) do
  7054. GUI:FakeHack(Player)
  7055. end
  7056. end};
  7057.  
  7058. [{"clonetools", "clonet"}] = {"player", "Clones player's tools and gives the to the speaker", 1, "Member", false, function(Speaker, Rank, Arguments)
  7059. local Players = STRING:Scan(Arguments[1], Speaker)
  7060. for _,Player in pairs(Players) do
  7061. if Player:FindFirstChild("Backpack") and Speaker:FindFirstChild("Backpack") then
  7062. for _,Object in pairs(Player.Backpack:GetChildren()) do
  7063. if Object:IsA("Tool") or Object:IsA("HopperBin") then
  7064. local Clone = Object:Clone()
  7065. Clone.Parent = Speaker.Backpack
  7066. end
  7067. end
  7068. end
  7069. end
  7070. end};
  7071.  
  7072. [{"taketools", "taket", "tt"}] = {"player", "Clone player's tools and gives the to the speaker", 1, "Member", false, function(Speaker, Rank, Arguments)
  7073. local Players = STRING:Scan(Arguments[1], Speaker)
  7074. for _,Player in pairs(Players) do
  7075. if Player:FindFirstChild("Backpack") and Speaker:FindFirstChild("Backpack") then
  7076. for _,Object in pairs(Player.Backpack:GetChildren()) do
  7077. if Object:IsA("Tool") or Object:IsA("HopperBin") then
  7078. Object.Parent = Speaker.Backpack
  7079. end
  7080. end
  7081. end
  7082. end
  7083. end};
  7084.  
  7085. [{"givetools", "givet", "gt"}] = {"player", "Clone the speaker's tools and gives the to player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7086. local Players = STRING:Scan(Arguments[1], Speaker)
  7087. for _,Player in pairs(Players) do
  7088. if Player:FindFirstChild("Backpack") and Speaker:FindFirstChild("Backpack") then
  7089. for _,Object in pairs(Speaker.Backpack:GetChildren()) do
  7090. if Object:IsA("Tool") or Object:IsA("HopperBin") then
  7091. local Clone = Object:Clone()
  7092. Clone.Parent = Player.Backpack
  7093. end
  7094. end
  7095. end
  7096. end
  7097. end};
  7098.  
  7099. [{"notools", "notool", "cleartools", "cleantools", "ctools", "untools"}] = {"player", "Clears player's backpack", 1, "Member", false, function(Speaker, Rank, Arguments)
  7100. local Players = STRING:Scan(Arguments[1], Speaker)
  7101. for _,Player in pairs(Players) do
  7102. if Player:FindFirstChild("Backpack") then
  7103. Player.Backpack:ClearAllChildren()
  7104. end
  7105. if Player.Character ~= nil then
  7106. for _,Obj in pairs(Player.Character:GetChildren()) do
  7107. if Obj:IsA("Tool") or Obj:IsA("HopperBin") then
  7108. Obj:Destroy()
  7109. end
  7110. end
  7111. end
  7112. end
  7113. end};
  7114.  
  7115. [{"vomit", "puke", "throwup", "barf"}] = {"player", "Makes player vomit", 1, "Member", true, function(Speaker, Rank, Arguments)
  7116. local Players = STRING:Scan(Arguments[1], Speaker)
  7117. for _,Player in pairs(Players) do
  7118. if Player.Character then
  7119. if Player.Character:FindFirstChild("Head") then
  7120. if Player.Character.Torso:FindFirstChild("Neck") and Player.Character.Head:FindFirstChild("face") then
  7121. coroutine.wrap(function()
  7122. if Player.Character.Head.face.Texture ~= "rbxassetid://24067663" then if Player.Character.Head.face.Texture ~= "rbxassetid://28118994" then
  7123. local OldFace = Player.Character.Head.face.Texture
  7124. Player.Character.Torso.Neck.C0 = Player.Character.Torso.Neck.C0 * CFrame.Angles(math.rad(20),0,0)
  7125. Player.Character.Head.BrickColor = BrickColor.new("Br. yellowish green")
  7126. Player.Character.Head.face.Texture = "rbxassetid://24067663"
  7127. local Sound = SOUND:MakeSound(Player.Character.Head, 142539016, 1, 0.9)
  7128. Sound:Play()
  7129. coroutine.wrap(function() for i = 1,100 do wait()
  7130. 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)
  7131. coroutine.wrap(function() wait(3) Part:Destroy() end)()
  7132. end
  7133. 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)()
  7134. end end
  7135. end)()
  7136. end
  7137. end
  7138. end
  7139. end
  7140. end};
  7141.  
  7142. [{"fart", "stink"}] = {"player", "Makes player fart", 1, "Member", true, function(Speaker, Rank, Arguments)
  7143. local Players = STRING:Scan(Arguments[1], Speaker)
  7144. for _,Player in pairs(Players) do
  7145. if Player.Character then
  7146. if Player.Character:FindFirstChild("Torso") and Player.Character.Head:FindFirstChild("face") then
  7147. coroutine.wrap(function()
  7148. if Player.Character.Head.face.Texture ~= "rbxassetid://24067663" then if Player.Character.Head.face.Texture ~= "rbxassetid://28118994" then
  7149. local OldFace = Player.Character.Head.face.Texture
  7150. 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
  7151. 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)
  7152. local Smoke = Instance.new("Smoke", Fart) Smoke.Name = "Fart Effect" Smoke.Color = Color3.new(70/255, 100/255, 30/255)
  7153. Player.Character.Head.face.Texture = "rbxassetid://28118994"
  7154. local Sound = SOUND:MakeSound(Fart, 130833677, 1, 0.8)
  7155. Sound:Play()
  7156. wait(1)
  7157. Smoke.Enabled = false
  7158. wait(1)
  7159. Fart:Destroy()
  7160. Fart:Destroy()
  7161. Player.Character.Head.face.Texture = OldFace
  7162. end end
  7163. end)()
  7164. end
  7165. end
  7166. end
  7167. end};
  7168.  
  7169. [{"graffiti", "graf", "gra", "draw"}] = {"player", "Gives player a tool to do graffiti", 1, "Member", true, function(Speaker, Rank, Arguments)
  7170. local Players = STRING:Scan(Arguments[1], Speaker)
  7171. for _,Player in pairs(Players) do
  7172. if Player:FindFirstChild("Backpack") then
  7173. CORE:ExecuteResource("Graffiti", Player.Backpack, {["Color"] = GUI:GetColor()})
  7174. end
  7175. end
  7176. end};
  7177.  
  7178. [{"cleargraffiti", "cleargraf", "cleargra", "cleardraw", "cleangraffiti", "cleangraf", "cleangra", "cleandraw", "cgraffiti", "cgraf", "cgra", "cdraw"}] = {"", "Clears any graffiti", 0, "Admin", false, function(Speaker, Rank, Arguments)
  7179. local Players = STRING:Scan(Arguments[1], Speaker)
  7180. for _,Player in pairs(Players) do
  7181. if Player.Character and Player.Character:FindFirstChild("MMLGraffiti") then
  7182. Player.Character.MMLGraffiti:ClearAllChildren()
  7183. end
  7184. end
  7185. end};
  7186.  
  7187. [{"light", "spotlight"}] = {"player", "Makes player and a small radius around whom to light up", 1, "Member", false, function(Speaker, Rank, Arguments)
  7188. local Players = STRING:Scan(Arguments[1], Speaker)
  7189. for _,Player in pairs(Players) do
  7190. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7191. local Light = Player.Character.Torso:FindFirstChild("MML Light") if Light then Light:Destroy() end
  7192. Light = Instance.new("PointLight", Player.Character.Torso) Light.Name = "MML Light" Light.Range = 20 Light.Brightness = 2
  7193. end
  7194. end
  7195. end};
  7196.  
  7197. [{"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)
  7198. local Players = STRING:Scan(Arguments[1], Speaker)
  7199. for _,Player in pairs(Players) do
  7200. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7201. local Light = Player.Character.Torso:FindFirstChild("MML Lamp") if Light then Light:Destroy() end
  7202. Light = Instance.new("SpotLight", Player.Character.Torso) Light.Name = "MML Lamp" Light.Range = 30 Light.Brightness = 5
  7203. end
  7204. end
  7205. end};
  7206.  
  7207. [{"nolight", "nolamp", "unlight", "unlamp"}] = {"player", "Removes player's light and/or lamp", 1, "Member", false, function(Speaker, Rank, Arguments)
  7208. local Players = STRING:Scan(Arguments[1], Speaker)
  7209. for _,Player in pairs(Players) do
  7210. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7211. local Lights = {}
  7212. for _,Obj in pairs(Player.Character.Torso:GetChildren()) do
  7213. if Obj.Name == "MML Lamp" or Obj.Name == "M".."ML Light" then
  7214. table.insert(Lights, Obj)
  7215. end
  7216. end
  7217. for _,Light in pairs(Lights) do
  7218. coroutine.wrap(function()
  7219. for i = 1,20 do
  7220. Light.Brightness = Light.Brightness/5
  7221. wait()
  7222. end
  7223. Light:Destroy()
  7224. end)()
  7225. end
  7226. end
  7227. end
  7228. end};
  7229.  
  7230. [{"drug", "lsd"}] = {"player", "Gives player the effect of being on lsd", 1, "Member", false, function(Speaker, Rank, Arguments)
  7231. local Players = STRING:Scan(Arguments[1], Speaker)
  7232. for _,Player in pairs(Players) do
  7233. if Player.Character and Player:FindFirstChild("PlayerGui") then
  7234. local SG = Player.PlayerGui:FindFirstChild("MML Drug") if SG then SG:Destroy() end
  7235. SG = Instance.new("ScreenGui", Player.PlayerGui) SG.Name = "MML Drug"
  7236. local Frame = Instance.new("Frame", SG) Frame.Size = UDim2.new(1,0,1,0) Frame.BackgroundTransparency = 0.5
  7237. local Stop = false
  7238. coroutine.wrap(function()
  7239. repeat
  7240. Frame.BackgroundColor3 = Color3.new(math.random(0,255)/255,math.random(0,255)/255,math.random(0,255)/255)
  7241. wait(0.1)
  7242. until not SG or not SG.Parent
  7243. end)()
  7244. CORE:ExecuteResource("Drug", Player.Character)
  7245. end
  7246. end
  7247. end};
  7248.  
  7249. [{"nodrug", "nolsd", "undrug", "unlsd"}] = {"player", "Removes drug effect", 1, "Member", false, function(Speaker, Rank, Arguments)
  7250. local Players = STRING:Scan(Arguments[1], Speaker)
  7251. for _,Player in pairs(Players) do
  7252. if Player:FindFirstChild("PlayerGui") then
  7253. local SG = Player.PlayerGui:FindFirstChild("MML Drug") if SG then SG:Destroy() end
  7254. wait() CORE:RestoreCamera(Player)
  7255. end
  7256. end
  7257. end};
  7258.  
  7259. [{"searchg", "searchgear"}] = {"string", "Searches the catalog for the gear string", 1, "Member", false, function(Speaker, Rank, Arguments)
  7260. local AbuseMode = false
  7261. if Rank == "Member" then AbuseMode = Settings.DisableAbuse end
  7262. MARKET:ShowSearch(Speaker, 5, Arguments[1], function(ID)
  7263. if Speaker:FindFirstChild("Backpack") then
  7264. CORE:Insert(ID, Speaker.Backpack, true, {"Tool", "HopperBin"}, AbuseMode)
  7265. end
  7266. end)
  7267. end, Http = true};
  7268.  
  7269. [{"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)
  7270. local Type = "all"
  7271. local Query = string.lower(Arguments[1])
  7272. local Arguments = STRING:GetSplit(Query, 2, Settings.Bet)
  7273. if #Arguments == 2 and Assets.AccessoryTypes[Arguments[1]] then
  7274. Type = Arguments[1]
  7275. Query = Arguments[2]
  7276. end
  7277. MARKET:ShowSearch(Speaker, 11, Query, function(ID)
  7278. if Speaker.Character then
  7279. CORE:Insert(ID, Speaker.Character, true, {"Accoutrement"})
  7280. end
  7281. end, MARKET:AccessoryToSubcategory(Type))
  7282. end, Http = true};
  7283.  
  7284. [{"searchp", "searchpack", "searchpackage"}] = {"string", "Searches the catalog for the package string", 1, "Member", false, function(Speaker, Rank, Arguments)
  7285. MARKET:ShowSearch(Speaker, 11, Arguments[1], function(ID)
  7286. if Speaker.Character then
  7287. CORE:GivePackage(Speaker, ID)
  7288. end
  7289. end, 11)
  7290. end, Http = false};
  7291.  
  7292. [{"nopackage", "nopack", "unpackage", "unpack"}] = {"player", "Removes all packages from player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7293. local Players = STRING:Scan(Arguments[1], Speaker)
  7294. for _,Player in pairs(Players) do
  7295. CORE:GivePackage(Player)
  7296. end
  7297. end};
  7298.  
  7299. [{"package", "pack", "morph"}] = {"player num(ID)", "Gives player the package with num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments)
  7300. local Players = STRING:Scan(Arguments[1], Speaker)
  7301. for _,Player in pairs(Players) do
  7302. CORE:GivePackage(Player, Arguments[2])
  7303. end
  7304. end, Http = false};
  7305.  
  7306. [{"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)
  7307. local Players = STRING:Scan(Arguments[1], Speaker)
  7308. for _,Player in pairs(Players) do
  7309. local Stats = Player:FindFirstChild("leaderstats")
  7310. if Stats ~= nil then
  7311. for _,Stat in pairs(Stats:GetChildren()) do
  7312. if string.sub(string.lower(Stat.Name),1,#Arguments[2]) == string.lower(Arguments[2]) then
  7313. ypcall(function() Stat.Value = Arguments[3] end)
  7314. end
  7315. end
  7316. end
  7317. end
  7318. end};
  7319.  
  7320. [{"shirt"}] = {"player num(ID)", "Changes player's shirt to num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments)
  7321. local ID = tonumber(Arguments[2])
  7322. local Players = STRING:Scan(Arguments[1], Speaker)
  7323. for _,Player in pairs(Players) do
  7324. for _,Player in pairs(Players) do
  7325. if Player.Character ~= nil then
  7326. local Obj = Player.Character:FindFirstChild("Shirt")
  7327. if Obj then
  7328. Obj.ShirtTemplate = "rbxassetid://"..MARKET:GetImageFormat(ID)
  7329. else
  7330. Obj = Instance.new("Shirt", Player.Character) Obj.Name = "Shirt" Obj.ShirtTemplate = "rbxassetid://"..MARKET:GetImageFormat(ID)
  7331. end
  7332. coroutine.wrap(function() Obj.Parent = nil wait(0.1) Obj.Parent = Player.Character end)()
  7333. end
  7334. end
  7335. end
  7336. end};
  7337.  
  7338. [{"pants"}] = {"player num(ID)", "Changes player's pants to num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments)
  7339. local ID = tonumber(Arguments[2])
  7340. local Players = STRING:Scan(Arguments[1], Speaker)
  7341. for _,Player in pairs(Players) do
  7342. for _,Player in pairs(Players) do
  7343. if Player.Character ~= nil then
  7344. local Obj = Player.Character:FindFirstChild("Pants")
  7345. if Obj then
  7346. Obj.PantsTemplate = "rbxassetid://"..MARKET:GetImageFormat(ID)
  7347. else
  7348. Obj = Instance.new("Pants", Player.Character) Obj.Name = "Pants" Obj.PantsTemplate = "rbxassetid://"..MARKET:GetImageFormat(ID)
  7349. end
  7350. coroutine.wrap(function() Obj.Parent = nil wait(0.1) Obj.Parent = Player.Character end)()
  7351. end
  7352. end
  7353. end
  7354. end};
  7355.  
  7356. [{"tshirt"}] = {"player num(ID)", "Changes player's T-shirt to num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments)
  7357. local ID = tonumber(Arguments[2])
  7358. local Players = STRING:Scan(Arguments[1], Speaker)
  7359. for _,Player in pairs(Players) do
  7360. for _,Player in pairs(Players) do
  7361. if Player.Character ~= nil then
  7362. if Player.Character:FindFirstChild("Torso") then
  7363. local Obj1 = Player.Character:FindFirstChild("Shirt Graphic")
  7364. local Obj2 = Player.Character.Torso:FindFirstChild("roblox")
  7365. if Obj1 then
  7366. Obj1.Graphic = "rbxassetid://"..MARKET:GetImageFormat(ID)
  7367. else
  7368. Obj1 = Instance.new("ShirtGraphic", Player.Character) Obj1.Name = "Shirt Graphic" Obj1.Graphic = "rbxassetid://"..MARKET:GetImageFormat(ID)
  7369. end
  7370. if Obj2 then
  7371. Obj2.Texture = "rbxassetid://"..MARKET:GetImageFormat(ID)
  7372. else
  7373. Obj2 = Instance.new("Decal", Player.Character.Torso) Obj2.Name = "roblox" Obj2.Texture = "rbxassetid://"..MARKET:GetImageFormat(ID) Obj2.Face = "Front"
  7374. end
  7375. coroutine.wrap(function() Obj1.Parent = nil wait(0.1) Obj1.Parent = Player.Character end)()
  7376. coroutine.wrap(function() Obj2.Parent = nil wait(0.2) Obj2.Parent = Player.Character.Torso end)()
  7377. end
  7378. end
  7379. end
  7380. end
  7381. end};
  7382.  
  7383. [{"oder", "od", "onlinedater", "onlinedate"}] = {"player", "Changes player's character to be an online dater", 1, "Member", false, function(Speaker, Rank, Arguments)
  7384. local Players = STRING:Scan(Arguments[1], Speaker)
  7385. for _,Player in pairs(Players) do
  7386. CORE:ChangeCharacter(Player, OderIDs[math.random(1,#OderIDs)], false, Speaker)
  7387. end
  7388. end};
  7389.  
  7390. [{"cookie"}] = {"player", "Gives player a cookie if the speaker is in the admin group", 1, "Member", false, function(Speaker, Rank, Arguments)
  7391. if CORE:InAdminGroup(Speaker) then
  7392. local Players = STRING:Scan(Arguments[1], Speaker)
  7393. for _,Player in pairs(Players) do
  7394. if Player:FindFirstChild("Backpack") then
  7395. 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)
  7396. local Handle = Instance.new("Part", Tool) Handle.Name = "Handle" Handle.Size = Vector3.new(1,1,1)
  7397. 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"
  7398. local Anim = Instance.new("Animation", Tool) Anim.Name = "EatCookie" Anim.AnimationId = "rbxassetid://29517689"
  7399. CORE:ExecuteResource("CookieTool", Tool)
  7400. end
  7401. end
  7402. end
  7403. end};
  7404.  
  7405. [{"decal", "image"}] = {"num(ID)", "Allows player to insert num(ID) as a decal", 1, "Member", false, function(Speaker, Rank, Arguments)
  7406. if Speaker:FindFirstChild("Backpack") and tonumber(Arguments[1]) then
  7407. CORE:ExecuteResource("InsertDecal", Speaker.Backpack, {["DecalID"] = MARKET:GetImageFormat(tonumber(Arguments[1]))})
  7408. end
  7409. end};
  7410.  
  7411. [{"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)
  7412. if Speaker:FindFirstChild("Backpack") and tonumber(Arguments[1]) then
  7413. local Model = CORE:Insert(tonumber(Arguments[1]), Server.RS)
  7414. Model:MakeJoints()
  7415. for i = 1,math.random(10,20) do
  7416. Model.Name = Model.Name..string.char(math.random(97,122))
  7417. end
  7418. if Model:GetChildren()[1] then
  7419. table.insert(Objects, Model)
  7420. CORE:ExecuteResource("InsertModel", Speaker.Backpack, {["Model"] = Model})
  7421. end
  7422. end
  7423. end};
  7424.  
  7425. [{"animate", "animation", "anim"}] = {"player num(ID)", "Animates player to num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments)
  7426. local ID = tonumber(Arguments[2])
  7427. local Players = STRING:Scan(Arguments[1], Speaker)
  7428. for _,Player in pairs(Players) do
  7429. if Player.Character then
  7430. CORE:ExecuteResource("PlayAnimation", Player.Character, {["AnimationID"] = Arguments[2]})
  7431. end
  7432. end
  7433. end};
  7434.  
  7435. [{"noanimate", "moanimation", "noanim", "unanimate", "unanimation", "unanim"}] = {"player", "Stops animations playing from the animate command", 1, "Member", false, function(Speaker, Rank, Arguments)
  7436. local Players = STRING:Scan(Arguments[1], Speaker)
  7437. for _,Player in pairs(Players) do
  7438. if Player.Character then
  7439. local StopAnim = Player.Character:FindFirstChild("Stop MML Animate")
  7440. if StopAnim then StopAnim:Destroy() end
  7441. end
  7442. end
  7443. end};
  7444.  
  7445. [{"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)
  7446. if tonumber(Arguments[1]) and tonumber(Arguments[2]) and tonumber(Arguments[3]) then
  7447. Server.Lighting.Ambient = Color3.new(tonumber(Arguments[1])/255,tonumber(Arguments[2])/255,tonumber(Arguments[3])/255)
  7448. end
  7449. end};
  7450.  
  7451. [{"brightness", "bright"}] = {"num", "Changes the lighting brightness to num", 1, "Member", false, function(Speaker, Rank, Arguments)
  7452. if tonumber(Arguments[1]) then
  7453. Server.Lighting.Brightness = tonumber(Arguments[1])
  7454. end
  7455. end};
  7456.  
  7457. [{"pl", "playerlist"}] = {"player", "Enables player to see the player list", 1, "Member", false, function(Speaker, Rank, Arguments)
  7458. local Players = STRING:Scan(Arguments[1], Speaker)
  7459. for _,Player in pairs(Players) do
  7460. GUI:CoreGui(Player, "PlayerList", true)
  7461. end
  7462. end};
  7463.  
  7464. [{"npl", "nopl", "unpl", "noplayerlist", "unplayerlist"}] = {"player", "Disables player to see the player list", 1, "Member", false, function(Speaker, Rank, Arguments)
  7465. local Players = STRING:Scan(Arguments[1], Speaker)
  7466. for _,Player in pairs(Players) do
  7467. local Players = STRING:Scan(Arguments[1], Speaker)
  7468. GUI:CoreGui(Player, "PlayerList", false)
  7469. end
  7470. end};
  7471.  
  7472. [{"bc", "tbc", "obc"}] = {"player", "What do you know, it's a real command!", 1, "Member", false, function(Speaker, Rank, Arguments)
  7473. GUI:SendMessage(Speaker, "Wow, you thought this was a command", "Did you look at the comments by chance?", 5253865)
  7474. end, Hidden = true};
  7475.  
  7476. [{"obama", "black", "1337"}] = {"player", "Turns player black", 1, "Member", false, function(Speaker, Rank, Arguments)
  7477. local Players = STRING:Scan(Arguments[1], Speaker)
  7478. for _,Player in pairs(Players) do
  7479. CORE:ChangeCharacter(Player, 1337, false, Speaker)
  7480. end
  7481. end, Hidden = true};
  7482.  
  7483. [{"muslim", "islam", "isis"}] = {"player", "Turns player into a muslim", 1, "Member", false, function(Speaker, Rank, Arguments)
  7484. local Players = STRING:Scan(Arguments[1], Speaker)
  7485. for _,Player in pairs(Players) do
  7486. if Player.Character and Player.Character:FindFirstChild("Head") and Player.Character.Head:FindFirstChild("face") then
  7487. ypcall(function() Player.Character.Torso.roblox:Destroy() end)
  7488. Player:ClearCharacterAppearance()
  7489. CORE:Insert(12436480, Player.Character, true)
  7490. Player.Character.Head.face.Texture = "rbxassetid://110287880"
  7491. Instance.new("Shirt", Player.Character).ShirtTemplate = "rbxassetid://205596436"
  7492. Instance.new("Pants", Player.Character).PantsTemplate = "rbxassetid://205596483"
  7493. end
  7494. end
  7495. end, Hidden = true};
  7496.  
  7497. [{"noob", "noobify", "boon"}] = {"player", "Turns player into a noob", 1, "Member", false, function(Speaker, Rank, Arguments)
  7498. local Players = STRING:Scan(Arguments[1], Speaker)
  7499. for _,Player in pairs(Players) do
  7500. CORE:ChangeCharacter(Player, 0, false, Speaker)
  7501. end
  7502. end};
  7503.  
  7504. [{"nofilter", "unfilter", "defilter"}] = {"", "Removes current filter", 0, "Owner", false, function(Speaker, Rank, Arguments)
  7505. ShouldFilter = false
  7506. end, Hidden = true};
  7507.  
  7508. [{"bet"}] = {"string", "Changes the bet to string", 1, "Owner", false, function(Speaker, Rank, Arguments)
  7509. local Bet = Arguments[1]
  7510. if Bet == "/" or Bet == "-" or Bet == "(" or Bet == ")" then
  7511. GUI:SendMessage(Speaker, "Cannot change bet", "RED Illegal characters used to become a bet", "Error")
  7512. elseif #Bet > 5 then
  7513. GUI:SendMessage(Speaker, "Bet too long", "RED The bet is too long and is over 5 characters (You have "..#Bet.." characters)", "Error")
  7514. else
  7515. 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"})
  7516. if Answer == "Yes" then
  7517. local OldBet = Settings.Bet
  7518. CORE:ChangeBet(Bet)
  7519. 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")
  7520. end
  7521. end
  7522. end};
  7523.  
  7524. [{"prefix"}] = {"string", "Changes the prefix to string", 1, "Owner", false, function(Speaker, Rank, Arguments)
  7525. local Prefix = Arguments[1]
  7526. if #Prefix > 5 then
  7527. GUI:SendMessage(Speaker, "Prefix too long", "RED The Prefix is too long and is over 5 characters (You have "..#Prefix.." characters)", "Error")
  7528. else
  7529. 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"})
  7530. if Answer == "Yes" then
  7531. local OldPrefix = Settings.Prefix
  7532. Settings.Prefix = Prefix
  7533. 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")
  7534. end
  7535. end
  7536. end};
  7537.  
  7538. [{"commandbar", "cmdbar", "cbar", "commandgui", "cmdgui", "cgui", "commandbox", "cmdbox", "cbox"}] = {"", "Gives you a command bar to enter commands", 0, "Member", false, function(Speaker, Rank, Arguments)
  7539. GUI:CommandBar(Speaker)
  7540. end};
  7541.  
  7542. [{"permcommandbar", "permcmdbar", "permcommandgui", "permcmdgui"}] = {"", "Gives you a command bar for each time you spawn", 0, "Admin", false, function(Speaker, Rank, Arguments)
  7543. GUI:CommandBar(Speaker)
  7544. PermCommandBars[Speaker.Name] = true
  7545. end};
  7546.  
  7547. [{"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)
  7548. PermCommandBars[Speaker.Name] = nil
  7549. end};
  7550.  
  7551. [{"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)
  7552. local Players = STRING:Scan(Arguments[1], Speaker)
  7553. for _,Player in pairs(Players) do
  7554. PermCommandBars[Player.Name] = nil
  7555. end
  7556. end};
  7557.  
  7558. [{"dummy", "newdummy", "dum", "figure"}] = {"", "Creates a dummy", 0, "Member", false, function(Speaker, Rank, Arguments)
  7559. CORE:CreateFigure("Dummy", nil, true, Speaker)
  7560. end};
  7561.  
  7562. [{"namedummy", "dummyname", "namenewdummy", "namedum", "dumname", "namefigure", "ndummy", "nnewdummy", "ndum", "nfigure"}] = {"string", "Creates a dummy named string", 1, "Member", false, function(Speaker, Rank, Arguments)
  7563. CORE:CreateFigure(Arguments[1], nil, true, Speaker)
  7564. end};
  7565.  
  7566. [{"clone", "copy"}] = {"player", "Creates clone of player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7567. local Players = STRING:Scan(Arguments[1], Speaker)
  7568. for _,Player in pairs(Players) do
  7569. CORE:ClonePlayer(Player)
  7570. end
  7571. end};
  7572.  
  7573. [{"nameclone", "clonename", "namecopy", "nclone", "ncopy"}] = {"player string", "Creates clone of player named string", 2, "Member", false, function(Speaker, Rank, Arguments)
  7574. local Players = STRING:Scan(Arguments[1], Speaker)
  7575. for _,Player in pairs(Players) do
  7576. CORE:ClonePlayer(Player, Arguments[2])
  7577. end
  7578. end};
  7579.  
  7580. [{"clear", "clr"}] = {"", "Clears debris in workspace left by the admin", 0, "Member", false, function(Speaker, Rank, Arguments)
  7581. for _,Obj in pairs(Objects) do
  7582. if Obj then Obj:Destroy() end
  7583. end
  7584. for Name,Jail in pairs(Jails) do
  7585. if not game.Players:FindFirstChild(Name) then
  7586. Jail:Destroy()
  7587. Jails[Name] = nil
  7588. end
  7589. end
  7590. Objects = {}
  7591. end};
  7592.  
  7593. [{"clean", "cln"}] = {"", "Clears debris in workspace by players", 0, "Member", false, function(Speaker, Rank, Arguments)
  7594. for _,Obj in pairs(Server.Workspace:GetChildren()) do
  7595. if Obj:IsA("Accoutrement") or Obj:IsA("Tool") then
  7596. Obj:Destroy()
  7597. end
  7598. end
  7599. end};
  7600.  
  7601. [{"sparkles", "sparks"}] = {"player", "Adds a sparkling effect to player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7602. local Players = STRING:Scan(Arguments[1], Speaker)
  7603. for _,Player in pairs(Players) do
  7604. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7605. local Sparkles = Instance.new("Sparkles", Player.Character.Torso) table.insert(Objects, Sparkles)
  7606. end
  7607. end
  7608. end};
  7609.  
  7610. [{"fire"}] = {"player", "Makes player catch on fire", 1, "Member", false, function(Speaker, Rank, Arguments)
  7611. local Players = STRING:Scan(Arguments[1], Speaker)
  7612. for _,Player in pairs(Players) do
  7613. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7614. local Fire = Instance.new("Fire", Player.Character.Torso) table.insert(Objects, Fire)
  7615. end
  7616. end
  7617. end};
  7618.  
  7619. [{"smoke"}] = {"player", "Adds a sparkling effect to player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7620. local Players = STRING:Scan(Arguments[1], Speaker)
  7621. for _,Player in pairs(Players) do
  7622. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7623. local Smoke = Instance.new("Smoke", Player.Character.Torso) table.insert(Objects, Smoke)
  7624. end
  7625. end
  7626. end};
  7627.  
  7628. [{"nosparkles", "nosparks", "unsparkles", "unsparks"}] = {"player", "Removes any sparkling effects to player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7629. local Players = STRING:Scan(Arguments[1], Speaker)
  7630. for _,Player in pairs(Players) do
  7631. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7632. for _,Get in pairs(Player.Character.Torso:GetChildren()) do
  7633. if Get:IsA("Sparkles") then
  7634. Get:Destroy()
  7635. end
  7636. end
  7637. end
  7638. end
  7639. end};
  7640.  
  7641. [{"nofire", "unfire"}] = {"player", "Removes player's fire effects", 1, "Member", false, function(Speaker, Rank, Arguments)
  7642. local Players = STRING:Scan(Arguments[1], Speaker)
  7643. for _,Player in pairs(Players) do
  7644. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7645. for _,Get in pairs(Player.Character.Torso:GetChildren()) do
  7646. if Get:IsA("Fire") then
  7647. Get:Destroy()
  7648. end
  7649. end
  7650. end
  7651. end
  7652. end};
  7653.  
  7654. [{"nosmoke", "unsmoke"}] = {"player", "Removes player's smoke effects", 1, "Member", false, function(Speaker, Rank, Arguments)
  7655. local Players = STRING:Scan(Arguments[1], Speaker)
  7656. for _,Player in pairs(Players) do
  7657. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7658. for _,Get in pairs(Player.Character.Torso:GetChildren()) do
  7659. if Get:IsA("Smoke") then
  7660. Get:Destroy()
  7661. end
  7662. end
  7663. end
  7664. end
  7665. end};
  7666.  
  7667. [{"explode", "explosion"}] = {"player", "Explodes player and everything around player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7668. local Players = STRING:Scan(Arguments[1], Speaker)
  7669. for _,Player in pairs(Players) do
  7670. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7671. SOUND:MakeSound(Player.Character.Torso, 187137543, 1, 1, false):Play()
  7672. local Boom = Instance.new("Explosion", Workspace)
  7673. Boom.Position = Player.Character.Torso.Position
  7674. end
  7675. end
  7676. end};
  7677.  
  7678. [{"splode", "smite"}] = {"player", "Explodes player 50 times and everything around player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7679. local Players = STRING:Scan(Arguments[1], Speaker)
  7680. for _,Player in pairs(Players) do
  7681. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7682. coroutine.wrap(function() for i = 1,50 do
  7683. local Boom = Instance.new("Explosion", Workspace)
  7684. Boom.Position = Player.Character.Torso.Position
  7685. wait()
  7686. end end)()
  7687. coroutine.wrap(function() for i = 1,5 do
  7688. SOUND:MakeSound(Player.Character.Torso, 187137543, 1, 1, false):Play()
  7689. end end)()
  7690. end
  7691. end
  7692. end};
  7693.  
  7694. [{"superjump", "nograv", "lowgrav"}] = {"player", "Enables player to be able to jump super high", 1, "Member", false, function(Speaker, Rank, Arguments)
  7695. local Players = STRING:Scan(Arguments[1], Speaker)
  7696. for _,Player in pairs(Players) do
  7697. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7698. local Force = Player.Character.Torso:FindFirstChild("LMM SJ") if Force then Force:Destroy() end
  7699. Force = Instance.new("BodyForce", Player.Character.Torso) Force.Name = "LMM SJ" Force.force = Vector3.new(0,0,0)
  7700. CORE:ScanItems(Player.Character, {"BasePart"}, function(Obj) Force.force = Force.force + Vector3.new(0,Obj:GetMass() * 150,0) end)
  7701. end
  7702. end
  7703. end};
  7704.  
  7705. [{"normaljump", "grav", "nosuperjump", "unsuperjump"}] = {"player", "Disables player to be able to jump super high", 1, "Member", false, function(Speaker, Rank, Arguments)
  7706. local Players = STRING:Scan(Arguments[1], Speaker)
  7707. for _,Player in pairs(Players) do
  7708. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7709. local Force = Player.Character.Torso:FindFirstChild("LMM SJ") if Force then Force:Destroy() end
  7710. end
  7711. end
  7712. end};
  7713.  
  7714. [{"punish"}] = {"player", "Punishes player by removing player's character", 1, "Member", false, function(Speaker, Rank, Arguments)
  7715. local Players = STRING:Scan(Arguments[1], Speaker)
  7716. for _,Player in pairs(Players) do
  7717. if Player.Character then
  7718. Player.Character.Parent = Server.Lighting
  7719. end
  7720. end
  7721. end};
  7722.  
  7723. [{"nopunish", "unpunish"}] = {"player", "Undoes the punish effect on player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7724. local Players = STRING:Scan(Arguments[1], Speaker)
  7725. for _,Player in pairs(Players) do
  7726. if Player.Character then
  7727. Player.Character.Parent = Server.Workspace
  7728. Player.Character:MakeJoints()
  7729. end
  7730. end
  7731. end};
  7732.  
  7733. [{"stun", "platformstand"}] = {"player", "Stuns player so he cannot move", 1, "Member", false, function(Speaker, Rank, Arguments)
  7734. local Players = STRING:Scan(Arguments[1], Speaker)
  7735. for _,Player in pairs(Players) do
  7736. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  7737. Player.Character.Humanoid.PlatformStand = true
  7738. end
  7739. end
  7740. end};
  7741.  
  7742. [{"nostun", "unstun", "noplatformstand", "unplatformstand", "stand"}] = {"player", "Undoes the stun effect on player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7743. local Players = STRING:Scan(Arguments[1], Speaker)
  7744. for _,Player in pairs(Players) do
  7745. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  7746. Player.Character.Humanoid.PlatformStand = false
  7747. end
  7748. end
  7749. end};
  7750.  
  7751. [{"jump"}] = {"player", "Makes player jump", 1, "Member", false, function(Speaker, Rank, Arguments)
  7752. local Players = STRING:Scan(Arguments[1], Speaker)
  7753. for _,Player in pairs(Players) do
  7754. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  7755. Player.Character.Humanoid.Jump = true
  7756. end
  7757. end
  7758. end};
  7759.  
  7760. [{"sit", "sitdown"}] = {"player", "Makes player sit down", 1, "Member", false, function(Speaker, Rank, Arguments)
  7761. local Players = STRING:Scan(Arguments[1], Speaker)
  7762. for _,Player in pairs(Players) do
  7763. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  7764. Player.Character.Humanoid.Sit = true
  7765. end
  7766. end
  7767. end};
  7768.  
  7769. [{"nosit", "unsit", "nositdown", "unsitdown", "stand", "standup"}] = {"player", "Makes player stand up if sitting down", 1, "Member", false, function(Speaker, Rank, Arguments)
  7770. local Players = STRING:Scan(Arguments[1], Speaker)
  7771. for _,Player in pairs(Players) do
  7772. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  7773. Player.Character.Humanoid.Sit = false
  7774. end
  7775. end
  7776. end};
  7777.  
  7778. [{"spin", "turn", "spinaround"}] = {"player", "Makes player spin around", 1, "Member", false, function(Speaker, Rank, Arguments)
  7779. local Players = STRING:Scan(Arguments[1], Speaker)
  7780. for _,Player in pairs(Players) do
  7781. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7782. 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)
  7783. end
  7784. end
  7785. end};
  7786.  
  7787. [{"nospin", "unspin", "noturn", "unturn", "nospinaround", "unspinaround"}] = {"player", "Stops player from spinning around", 1, "Member", false, function(Speaker, Rank, Arguments)
  7788. local Players = STRING:Scan(Arguments[1], Speaker)
  7789. for _,Player in pairs(Players) do
  7790. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7791. local Spin = Player.Character.Torso:FindFirstChild("MML Spin") if Spin then Spin:Destroy() end
  7792. end
  7793. end
  7794. end};
  7795.  
  7796. [{"port"}] = {"", "Gets the server network port", 0, "Owner", false, function(Speaker, Rank, Arguments)
  7797. GUI:SendMessage(Speaker, "Server Port", "The server port for this server is: "..Server.NS.Port, "Information")
  7798. end};
  7799.  
  7800. [{"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)
  7801. local Color = "Blue"
  7802. local String = Arguments[2]
  7803. local ChatSplit = STRING:GetSplit(String, 1, Settings.Bet)
  7804. if #ChatSplit >= 2 then
  7805. if string.lower(ChatSplit[1]) == "green" then
  7806. Color = "Green"
  7807. String = ChatSplit[2]
  7808. elseif string.lower(ChatSplit[1]) == "red" then
  7809. Color = "Red"
  7810. String = ChatSplit[2]
  7811. end
  7812. end
  7813. local Players = STRING:Scan(Arguments[1], Speaker)
  7814. for _,Player in pairs(Players) do
  7815. if Player.Character and Player.Character:FindFirstChild("Head") then
  7816. game:GetService("Chat"):Chat(Player.Character.Head, STRING:DetermineFilter(String, Speaker, Player), Color)
  7817. end
  7818. end
  7819. end};
  7820.  
  7821. [{"missile", "mis", "rocket"}] = {"player", "Turns player into a missile. Use with care!", 1, "Admin", true, function(Speaker, Rank, Arguments)
  7822. local Players = STRING:Scan(Arguments[1], Speaker)
  7823. for _,Player in pairs(Players) do
  7824. if Player.Character then
  7825. CORE:ExecuteResource("Missile", Player.Character, {["Color"] = GUI:GetColor()})
  7826. end
  7827. end
  7828. end};
  7829.  
  7830. [{"face"}] = {"player num(ID)", "Changes player's faces player num(ID) (must be decal/image)", 2, "Member", false, function(Speaker, Rank, Arguments)
  7831. local Players = STRING:Scan(Arguments[1], Speaker)
  7832. local ID = nil
  7833. if tonumber(Arguments[2]) ~= nil then
  7834. ID = MARKET:GetImageFormat(tonumber(Arguments[2]))
  7835. else
  7836. 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
  7837. for _,Face in pairs(FaceTable) do
  7838. if string.lower(Arguments[2]) == string.lower(Face) then
  7839. ID = FaceID
  7840. break
  7841. end
  7842. end
  7843. end
  7844. end
  7845. if ID then
  7846. for _,Player in pairs(Players) do
  7847. if Player.Character and Player.Character:FindFirstChild("Head") and Player.Character.Head:FindFirstChild("face") then
  7848. Player.Character.Head.face.Texture = "rbxassetid://"..ID
  7849. pcall(function() Player.Character.Label:GetChildren()[1].Head.Texture = "rbxassetid://"..ID end)
  7850. end
  7851. end
  7852. end
  7853. end};
  7854.  
  7855. [{"overlay", "ol"}] = {"player num(ID)", "Turns player's head into a 2D images of num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments)
  7856. local Players = STRING:Scan(Arguments[1], Speaker)
  7857. local ID = MARKET:GetImageFormat(tonumber(Arguments[2]))
  7858. for _,Player in pairs(Players) do
  7859. if Player.Character and Player.Character:FindFirstChild("Head") then
  7860. local BB = Player.Character.Head:FindFirstChild("MMLA Overlay") if BB then BB:Destroy() end
  7861. 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
  7862. 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)
  7863. end
  7864. end
  7865. end};
  7866.  
  7867. [{"nooverlay", "unoverlay", "nool", "unol"}] = {"player", "Removes any overlay on player's head from the overlay command", 1, "Member", false, function(Speaker, Rank, Arguments)
  7868. local Players = STRING:Scan(Arguments[1], Speaker)
  7869. for _,Player in pairs(Players) do
  7870. if Player.Character and Player.Character:FindFirstChild("Head") then
  7871. local BB = Player.Character.Head:FindFirstChild("MMLA Overlay") if BB then BB:Destroy() end
  7872. end
  7873. end
  7874. end};
  7875.  
  7876. [{"notify"}] = {"string", "Sends string as a packet to the owner remotely", 1, "Admin", false, function(Speaker, Rank, Arguments)
  7877. REMOTE:SendHttpLog(Speaker.Name.." Sent Notification: "..Arguments[1], "NOTIFICATION", Speaker)
  7878. end, Http = true};
  7879.  
  7880. [{"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)
  7881. GUI:ListGui(Speaker, "Http Logs", CORE:ReverseTable(REMOTE:DownloadUserdata(false).Logs), "Log")
  7882. end, Http = true};
  7883.  
  7884. [{"note"}] = {"player string", "Saves string to player to all servers", 2, "Admin", false, function(Speaker, Rank, Arguments)
  7885. local Players = STRING:Scan(Arguments[1], Speaker)
  7886. for _,Player in pairs(Players) do
  7887. local ExistingData = Player:LoadInstance("Data")
  7888. if ExistingData == nil then
  7889. ExistingData = Instance.new("Configuration")
  7890. end
  7891. ExistingData.Name = "Player Data"
  7892. local Key = Instance.new("Configuration", ExistingData)
  7893. Key.Name = Arguments[2]
  7894. Player:SaveInstance("Data", ExistingData)
  7895. end
  7896. end};
  7897.  
  7898. [{"removenote", "noteremove"}] = {"player string", "Removes any note starting with string", 2, "Admin", false, function(Speaker, Rank, Arguments)
  7899. local Players = STRING:Scan(Arguments[1], Speaker)
  7900. local Data = Arguments[2]
  7901. for _,Player in pairs(Players) do
  7902. local ExistingData = Player:LoadInstance("Data")
  7903. if ExistingData ~= nil then
  7904. if string.lower(Data) == "all" then
  7905. ExistingData:ClearAllChildren()
  7906. else
  7907. for _,DataObj in pairs(ExistingData:GetChildren()) do
  7908. if string.sub(string.lower(DataObj.Name),1,#Data) == string.lower(Data) then
  7909. DataObj:Destroy()
  7910. end
  7911. end
  7912. end
  7913. end
  7914. Player:SaveInstance("Data", ExistingData)
  7915. end
  7916. end};
  7917.  
  7918. [{"shownotes", "shownote", "loadnotes", "loadnote", "notes", "getnotes", "getnote"}] = {"player", "Shows the saved notes of player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7919. local Players = STRING:Scan(Arguments[1], Speaker)
  7920. local DataSet = {}
  7921. for _,Player in pairs(Players) do
  7922. local ExistingData = Player:LoadInstance("Data")
  7923. if ExistingData ~= nil then
  7924. if #ExistingData:GetChildren() ~= 0 then
  7925. for _,Data in pairs(ExistingData:GetChildren()) do
  7926. table.insert(DataSet, Player.Name..": "..Data.Name)
  7927. end
  7928. else
  7929. table.insert(DataSet, "Data does not exist for "..Player.Name)
  7930. end
  7931. else
  7932. table.insert(DataSet, "Data does not exist for "..Player.Name)
  7933. end
  7934. end
  7935. GUI:ListGui(Speaker, "Notes", DataSet)
  7936. end};
  7937.  
  7938. [{"forwards", "forward"}] = {"player", "Makes player walk forward at normal walkspeed", 1, "Member", false, function(Speaker, Rank, Arguments)
  7939. local Players = STRING:Scan(Arguments[1], Speaker)
  7940. for _,Player in pairs(Players) do
  7941. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  7942. Player.Character.Humanoid.WalkSpeed = 16
  7943. end
  7944. end
  7945. end};
  7946.  
  7947. [{"backwards", "backward"}] = {"player", "Makes player walk backwards(reverse keys) at normal walkspeed", 1, "Member", true, function(Speaker, Rank, Arguments)
  7948. local Players = STRING:Scan(Arguments[1], Speaker)
  7949. for _,Player in pairs(Players) do
  7950. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  7951. Player.Character.Humanoid.WalkSpeed = -16
  7952. end
  7953. end
  7954. end};
  7955.  
  7956. [{"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)
  7957. local TeamColor = BrickColor.random()
  7958. local TeamName = Arguments[1]
  7959. local TeamNameSplit = STRING:GetSplit(TeamName, 1, " ")
  7960. if #TeamNameSplit >= 2 then
  7961. local Color = TeamNameSplit[1]
  7962. local NewTeamName = TeamNameSplit[2]
  7963. if Color == "Medium stone grey" then
  7964. TeamColor = BrickColor.new(Color)
  7965. TeamName = NewTeamName
  7966. elseif BrickColor.new(Color) ~= BrickColor.new("Medium stone grey") then
  7967. TeamColor = BrickColor.new(Color)
  7968. TeamName = NewTeamName
  7969. elseif Colors[string.upper(Color)] then
  7970. TeamColor = BrickColor.new(GUI:GetColor(string.upper(Color)))
  7971. TeamName = NewTeamName
  7972. end
  7973. end
  7974.  
  7975. local NewTeam = Instance.new("Team", Server.Teams)
  7976. NewTeam.TeamColor = TeamColor
  7977. NewTeam.Name = TeamName
  7978. end};
  7979.  
  7980. [{"leaveteam", "teamleave"}] = {"player", "Makes player be on no team", 1, "Member", false, function(Speaker, Rank, Arguments)
  7981. local Players = STRING:Scan(Arguments[1], Speaker)
  7982. for _,Player in pairs(Players) do
  7983. Player.Neutral = true
  7984. end
  7985. end};
  7986.  
  7987. [{"team", "teamjoin", "jointeam"}] = {"player string", "Makes it so player joints team string", 2, "Member", false, function(Speaker, Rank, Arguments)
  7988. local Players = STRING:Scan(Arguments[1], Speaker)
  7989. if string.lower(Arguments[2]) == "none" then
  7990. for _,Player in pairs(Players) do
  7991. Player.Neutral = true
  7992. end
  7993. else
  7994. for _,Obj in pairs(Server.Teams:GetChildren()) do
  7995. if Obj:IsA("Team") then
  7996. if string.sub(string.lower(Obj.Name),1,#Arguments[2]) == string.lower(Arguments[2]) then
  7997. for _,Player in pairs(Players) do
  7998. Player.Neutral = false
  7999. Player.TeamColor = Obj.TeamColor
  8000. end
  8001. end
  8002. end
  8003. end
  8004. end
  8005. end};
  8006.  
  8007. [{"noteam", "unteam", "nonewteam", "unnewteam"}] = {"string", "Finds the team named string and removes it", 1, "Member", false, function(Speaker, Rank, Arguments)
  8008. for _,Obj in pairs(Server.Teams:GetChildren()) do
  8009. if Obj:IsA("Team") then
  8010. if string.sub(string.lower(Obj.Name),1,#Arguments[1]) == string.lower(Arguments[1]) then
  8011. for _,Player in pairs(Server.Players:GetPlayers()) do
  8012. if Player.TeamColor == Obj.TeamColor then
  8013. Player.Neutral = true
  8014. end
  8015. end
  8016. Obj:Destroy()
  8017. end
  8018. end
  8019. end
  8020. end};
  8021.  
  8022. [{"clearteams", "cleanteams"}] = {"", "Clears all teams", 0, "Member", false, function(Speaker, Rank, Arguments)
  8023. for _,Player in pairs(Server.Players:GetPlayers()) do
  8024. Player.Neutral = true
  8025. end
  8026. for _,Obj in pairs(Server.Teams:GetChildren()) do
  8027. if Obj:IsA("Team") then
  8028. Obj:Destroy()
  8029. end
  8030. end
  8031. end};
  8032.  
  8033. [{"countdown", "count", "ticker"}] = {"num", "Counts down an alarm from num", 1, "Member", false, function(Speaker, Rank, Arguments)
  8034. for _,Player in pairs(Server.Players:GetPlayers()) do
  8035. GUI:Countdown(Player, Arguments[1])
  8036. end
  8037. end};
  8038.  
  8039. [{"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)
  8040. local Players = STRING:Scan(Arguments[1], Speaker)
  8041. for _,Player in pairs(Players) do
  8042. if Player:FindFirstChild("Backpack") then
  8043. CORE:ExecuteResource("ShowAd", Player.Backpack)
  8044. end
  8045. end
  8046. end};
  8047.  
  8048. [{"warp", "warpto"}] = {"player string", "Warps player to the point of string", 2, "Member", false, function(Speaker, Rank, Arguments)
  8049. local Players = STRING:Scan(Arguments[1], Speaker)
  8050. for _,Player in pairs(Players) do
  8051. if Player.Character then
  8052. for PosName,WP in pairs(Waypoints) do
  8053. if string.sub(string.lower(PosName),1,#Arguments[2]) == string.lower(Arguments[2]) then
  8054. Player.Character:MoveTo(WP + Vector3.new(0,0.5,0))
  8055. break
  8056. end
  8057. end
  8058. end
  8059. end
  8060. end};
  8061.  
  8062. [{"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)
  8063. CORE:AddWaypoint(Arguments[1], Vector3.new(Arguments[2], Arguments[3], Arguments[4]), Speaker)
  8064. end};
  8065.  
  8066. [{"removewaypoint", "deletewaypoint", "destroywaypoint", "nowaypoint", "unwaypoint"}] = {"string", "Removes any waypoint named string", 1, "Member", false, function(Speaker, Rank, Arguments)
  8067. local Num = 0
  8068. for PosName,WP in pairs(Waypoints) do
  8069. Num = Num + 1
  8070. if string.sub(string.lower(PosName),1,#Arguments[1]) == Arguments[1] then
  8071. Waypoints[PosName] = nil
  8072. end
  8073. end
  8074. end};
  8075.  
  8076. [{"waypoints", "viewwaypoints", "waypointlist", "listwaypoints"}] = {"", "Views all waypoints to warp to", 0, "Member", false, function(Speaker, Rank, Arguments)
  8077. local WaypointHolder,WaypointRaw = {},{}
  8078. for Name, WP in pairs(Waypoints) do
  8079. local View = Name..": "..tostring(WP)
  8080. table.insert(WaypointHolder, View)
  8081. WaypointRaw[View] = WP
  8082. end
  8083. local Clicked = GUI:ListGui(Speaker, "Waypoint List", WaypointHolder, "Map")
  8084. Clicked.Event:connect(function(Text)
  8085. local Waypoint = WaypointRaw[Text]
  8086. if Waypoint then
  8087. if Speaker.Character then
  8088. Speaker.Character:MoveTo(Waypoint)
  8089. end
  8090. end
  8091. end)
  8092. end};
  8093.  
  8094. [{"list", "listplayer", "listplayers"}] = {"player", "Lists the player(s) in a gui list", 1, "Member", false, function(Speaker, Rank, Arguments)
  8095. local Players = STRING:Scan(Arguments[1], Speaker)
  8096. local List = {}
  8097. for _,Player in pairs(Players) do
  8098. table.insert(List, Player.Name.." (ID: "..Player.UserId..")")
  8099. end
  8100. GUI:ListGui(Speaker, "Listed Players", List)
  8101. end};
  8102.  
  8103. [{"givepoints"}] = {"player num", "Gives num playerpoints to player", 2, "Owner", false, function(Speaker, Rank, Arguments)
  8104. if tonumber(Arguments[1]) then
  8105. ypcall(function() Server.PS:AwardPoints(tonumber(Arguments[1]), tonumber(Arguments[2])) end)
  8106. else
  8107. local Players = STRING:Scan(Arguments[1], Speaker)
  8108. for _,Player in pairs(Players) do
  8109. ypcall(function() Server.PS:AwardPoints(Player.UserId, tonumber(Arguments[2])) end)
  8110. end
  8111. end
  8112. end};
  8113.  
  8114. [{"friends", "getfriends", "listfriends", "showfriends"}] = {"player", "Shows all the friends player is friends with in the server", 1, "Member", false, function(Speaker, Rank, Arguments)
  8115. local Players = STRING:Scan(Arguments[1], Speaker)
  8116. local Friends,OneFriend = {}, false
  8117. for _,Player in pairs(Players) do
  8118. for _,User in pairs(Server.Players:GetPlayers()) do if User ~= Player then
  8119. --[[if Player:IsBestFriendsWith(User.UserId) then
  8120. table.insert(Friends, Player.Name.." is best friends with "..User.Name)
  8121. OneFriend = true
  8122. ]]
  8123. if Player:IsFriendsWith(User.UserId) then
  8124. table.insert(Friends, Player.Name.." is friends with "..User.Name)
  8125. OneFriend = true
  8126. end
  8127. if _ == #Server.Players:GetPlayers() and OneFriend == false then
  8128. table.insert(Friends, Player.Name.." has no friends in this server (Loner)")
  8129. end
  8130. end end
  8131. end
  8132. GUI:ListGui(Speaker, "Friend List", Friends)
  8133. end};
  8134.  
  8135. [{"serverlock", "lockserver"}] = {"", "Locks the server to prevent non-admins from joining", 0, "Owner", false, function(Speaker, Rank, Arguments)
  8136. Settings.ServerLocked = true
  8137. GUI:MessageAdmins("Server Locked", "The server has been locked. Only admins can join at this point.", 10, "Lock")
  8138. end};
  8139.  
  8140. [{"noserverlock", "unserverlock", "unlockserver", "nolockserver", "nolock", "unlock"}] = {"", "Unlocks the server to enable non-admin joining", 0, "Owner", false, function(Speaker, Rank, Arguments)
  8141. Settings.ServerLocked = false
  8142. GUI:MessageAdmins("Server Unlocked", "The server has been unlocked. Anyone not banned or crashed can join", 10, 11344402)
  8143. end};
  8144.  
  8145. [{"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)
  8146. local OldAge = Settings.MinimumAge
  8147. local Age = tostring(Arguments[1])
  8148. if Age then
  8149. Settings.MinimumAge = Age
  8150. GUI:MessageAdmins("Minumum age change", "The minimum age required to join this server is now "..Age.." days old(was "..OldAge.." days old)", 10)
  8151. end
  8152. end};
  8153.  
  8154. [{"vipadmin", "adminvip"}] = {"", "Prompts speaker the VIP item to grant Admin level permissions", 0, "Non-Admin", false, function(Speaker, Rank, Arguments)
  8155. if Settings.VIPAdminID <= 1 then
  8156. MARKET:PromptPurchase(Speaker, VIPAdminID)
  8157. else
  8158. CORE:SendMessage(Speaker, "No Admin VIP", "The creator ("..GameOwner..") did not add a admin rank VIP to Make".."rModelLua's Admin", 7)
  8159. end
  8160. end};
  8161.  
  8162. [{"vipmember", "membervip"}] = {"", "Prompts speaker the VIP item to grant Member level permissions", 0, "Non-Admin", false, function(Speaker, Rank, Arguments)
  8163. if Settings.VIPMemberID <= 1 then
  8164. MARKET:PromptPurchase(Speaker, VIPMemberID)
  8165. else
  8166. CORE:SendMessage(Speaker, "No Member VIP", "The creator ("..GameOwner..") did not add a member rank VIP to Make".."rModelLua's Admin", 7)
  8167. end
  8168. end};
  8169.  
  8170. [{"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)
  8171. if tonumber(Arguments[2]) then
  8172. local Players = STRING:Scan(Arguments[1], Speaker)
  8173. local Size = tonumber(Arguments[2])+25
  8174. for _,Player in pairs(Players) do
  8175. if Player.Character then
  8176. if Player.Character:FindFirstChild("Head") then
  8177. if Player.Character.Head:FindFirstChild("Mesh") then
  8178. Player.Character.Head.Mesh.Scale = Vector3.new(Size/100,Size/100,Size/100)
  8179. end
  8180. end
  8181. end
  8182. end
  8183. end
  8184. end};
  8185.  
  8186. [{"control"}] = {"player", "Allows speaker to take control of player", 1, "Member", false, function(Speaker, Rank, Arguments)
  8187. local Players = STRING:Scan(Arguments[1], Speaker)
  8188. for _,Player in pairs(Players) do
  8189. if Player.Character and Player.Character:FindFirstChild("Torso") then
  8190. CORE:ChangeCharacter(Speaker, Player.UserId, false, Speaker, true, Player.Character.Torso.Position)
  8191. Player.Character.Parent = nil
  8192. CORE:ExecuteResource("CameraControl", Player.Backpack, {["Speaker"] = Speaker})
  8193. end
  8194. end
  8195. end};
  8196.  
  8197. [{"settings"}] = {"", "Shows settings to speaker. If high enough rank, the speaker can edit settings", 0, "Non-Admin", false, function(Speaker, Rank, Arguments)
  8198. GUI:SettingsGui(Speaker)
  8199. end};
  8200.  
  8201. [{"hasasset", "ownsasset"}] = {"player num(ID)", "Shows if player has asset num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments)
  8202. if tonumber(Arguments[2]) then
  8203. local Players = STRING:Scan(Arguments[1], Speaker)
  8204. local List = {}
  8205. for _,Player in pairs(Players) do
  8206. if Server.MPS:PlayerOwnsAsset(Player, tonumber(Arguments[2])) then
  8207. table.insert(List, Player.Name)
  8208. end
  8209. end
  8210. GUI:ListGui(Speaker, "Players who have asset ID: "..Arguments[2], List, 23916171)
  8211. end
  8212. end};
  8213.  
  8214. [{"reck", "rek", "rekt", "shrekt", "wreck", "noscope", "mlg"}] = {"player", "rekts player in a haxy way", 1, "Member", true, function(Speaker, Rank, Arguments)
  8215. local Players = STRING:Scan(Arguments[1], Speaker)
  8216. for _,Player in pairs(Players) do
  8217. if Player.Character and Player.Character:FindFirstChild("Head") then
  8218. local Char = Player.Character
  8219. Char:BreakJoints()
  8220. CORE:ScanItems(Char, {"BasePart"}, function(Obj)
  8221. Obj.Anchored = true
  8222. for _,Face in pairs({"Top", "Bottom", "Right", "Left", "Front", "Back"}) do
  8223. local Decal = Instance.new("Decal", Obj)
  8224. Decal.Texture = "rbxassetid://178913323"
  8225. Decal.Face = Face
  8226. end
  8227. end)
  8228. local Sound1 = SOUND:MakeSound(Char.Head, 131509782, 1, 1)
  8229. local Sound2 = SOUND:MakeSound(Char.Head, 179497874, 1, 1)
  8230. Sound1:Play() Sound2:Play()
  8231. coroutine.wrap(function()
  8232. coroutine.wrap(function() wait(4.9) Sound1:Stop() Sound2:Stop() end)()
  8233. repeat wait()
  8234. CORE:ScanItems(Char, {"BasePart"}, function(Obj)
  8235. SOUND:MakeSound(Char.Head, "rbxasset://sounds/uuhhh.mp3", 1, math.random(80,120)/100):Play()
  8236. Obj.Transparency = math.random(0,30)/100
  8237. Obj.Reflectance = math.random(0,50)/100
  8238. 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)))
  8239. end)
  8240. until Char ~= Player.Character or Char.Parent == nil
  8241. end)()
  8242. end
  8243. end
  8244. end, Hidden = true};
  8245.  
  8246. [{"define", "lookup", "definition"}] = {"string", "Looks up the word on webster's online dictionary", 1, "Member", false, function(Speaker, Rank, Arguments)
  8247. GUI:SendMessage(Speaker, "Definition of "..Arguments[1], REMOTE:DefineWord(Arguments[1]), 185923691)
  8248. end, Http = true};
  8249.  
  8250. [{"neon", "glow"}] = {"player", "Makes player glow like a neon light", 1, "Member", false, function(Speaker, Rank, Arguments)
  8251. local Players = STRING:Scan(Arguments[1], Speaker)
  8252. for _,Player in pairs(Players) do
  8253. if Player.Character then
  8254. CORE:ScanItems(Player.Character, {"BasePart"}, function(Obj)
  8255. Obj.Material = "Neon"
  8256. end)
  8257. end
  8258. end
  8259. end};
  8260.  
  8261. [{"noneon", "noglow", "unneon", "unglow"}] = {"player", "Removes any glowing neon from player", 1, "Member", false, function(Speaker, Rank, Arguments)
  8262. local Players = STRING:Scan(Arguments[1], Speaker)
  8263. for _,Player in pairs(Players) do
  8264. if Player.Character then
  8265. CORE:ScanItems(Player.Character, {"BasePart"}, function(Obj)
  8266. Obj.Material = "Plastic"
  8267. end)
  8268. end
  8269. end
  8270. end};
  8271.  
  8272. [{"asd", "swag"}] = {"player", "Makes player look like a swagger", 1, "Member", true, function(Speaker, Rank, Arguments)
  8273. local Players = STRING:Scan(Arguments[1], Speaker)
  8274. for _,Player in pairs(Players) do
  8275. if Player.Character then
  8276. CORE:ScanItems(Player.Character, {"JointInstance"}, function(Obj)
  8277. Obj.C0 = Obj.C0 * CFrame.new(math.random(-5,5),math.random(0,5),math.random(-5,5))
  8278. end)
  8279. end
  8280. end
  8281. end, Hidden = true};
  8282.  
  8283. [{"getpos", "getposition", "playerpos", "playerposition"}] = {"player", "Gets player's position and prompts to add it to waypoints", 1, "Admin", false, function(Speaker, Rank, Arguments)
  8284. local Players = STRING:Scan(Arguments[1], Speaker)
  8285. for _,Player in pairs(Players) do
  8286. if Player.Character and Player.Character:FindFirstChild("Torso") then
  8287. local Pos = Player.Character.Torso.Position
  8288. Pos = Vector3.new(CORE:Round(Pos.X), CORE:Round(Pos.Y), CORE:Round(Pos.Z))
  8289. 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"})
  8290. if Answer == "Ok" then
  8291. CORE:AddWaypoint(Player.Name, Pos, Speaker)
  8292. end
  8293. end
  8294. end
  8295. end};
  8296.  
  8297. [{"point", "find", "laser"}] = {"player1 player2", "Creates a laser that points from player1 to player2", 2, "Member", false, function(Speaker, Rank, Arguments)
  8298. local PlayersFrom = STRING:Scan(Arguments[1], Speaker)
  8299. local PlayersTo = STRING:Scan(Arguments[2], Speaker)
  8300. if PlayersFrom and PlayersTo then
  8301. for _,PlayerFrom in pairs(PlayersFrom) do
  8302. for _,PlayerTo in pairs(PlayersTo) do
  8303. if PlayerFrom.Character and PlayerTo.Character then
  8304. if PlayerFrom.Character:FindFirstChild("Humanoid") and PlayerTo.Character:FindFirstChild("Torso") then coroutine.wrap(function()
  8305. local Laser = Instance.new("SelectionPartLasso", PlayerFrom.Character) Laser.Humanoid = PlayerFrom.Character.Humanoid Laser.Part = PlayerTo.Character.Torso Laser.Color = GUI:GetNameColor(PlayerTo.Name)
  8306. wait(5)
  8307. Laser:Destroy()
  8308. end)() end
  8309. end
  8310. end
  8311. end
  8312. end
  8313. end};
  8314.  
  8315. [{"ragdoll", "rag"}] = {"player", "Makes player a ragdoll(Removes humanoid)", 1, "Member", false, function(Speaker, Rank, Arguments)
  8316. local Players = STRING:Scan(Arguments[1], Speaker)
  8317. for _,Player in pairs(Players) do
  8318. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  8319. Player.Character.Humanoid:Destroy()
  8320. end
  8321. end
  8322. end};
  8323.  
  8324. [{"plugins", "getplugins", "pluginlist"}] = {"", "Shows plugins", 0, "Admin", false, function(Speaker, Rank, Arguments)
  8325. if Plugins then
  8326. local List = {}
  8327. for _,Module in pairs(Plugins:GetChildren()) do
  8328. if Module:IsA("ModuleScript") then
  8329. local Enabled = Module:FindFirstChild("Enabled") or {Value = false}
  8330. local Creator = Module:FindFirstChild("Creator") or {Value = "None"}
  8331. local VersionVal = Module:FindFirstChild("Version") or {Value = 1}
  8332. table.insert(List, Module.Name.." V"..VersionVal.Value.." by "..Creator.Value.." | RUNNING: "..STRING:BoolString(Enabled.Value))
  8333. end
  8334. end
  8335. GUI:ListGui(Speaker, "Plugin List", List, "Plugin")
  8336. else
  8337. GUI:SendMessage(Speaker, "Cannot get plugins", "Could not find plugin directory", "Notice", 5)
  8338. end
  8339. end};
  8340.  
  8341. [{"detachchat", "detachc", "dchat", "dc"}] = {"player", "Detaches player's roblox chat gui into a MMLA gui", 1, "Admin", false, function(Speaker, Rank, Arguments)
  8342. local Players = STRING:Scan(Arguments[1], Speaker)
  8343. for _,Player in pairs(Players) do
  8344. GUI:DetachChat(Player)
  8345. end
  8346. end};
  8347.  
  8348. [{"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)
  8349. GUI:DetachChat(Speaker)
  8350. end};
  8351.  
  8352. [{"truck", "runover"}] = {"player", "Runs player over with a truck", 1, "Member", true, function(Speaker, Rank, Arguments)
  8353. local Players = STRING:Scan(Arguments[1], Speaker)
  8354. for _,Player in pairs(Players) do
  8355. if Player.Character and Player.Character:FindFirstChild("Torso") and Player.Character:FindFirstChild("Humanoid") then
  8356. local Dead = false
  8357.  
  8358. Player.Character.Humanoid.WalkSpeed = 1
  8359. local Torso = Player.Character.Torso
  8360. 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
  8361. Truck:BreakJoints()
  8362. local Mesh = Instance.new("SpecialMesh", Truck) Mesh.MeshId = "rbxassetid://52157810" Mesh.TextureId = "rbxassetid://52157085" Mesh.Scale = Vector3.new(11, 11, 11)
  8363. 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))
  8364. 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
  8365. Truck.Touched:connect(function(Part)
  8366. if Dead == false then
  8367. local TouchPlayer = Server.Players:GetPlayerFromCharacter(Part.Parent or Part.Parent.Parent)
  8368. if TouchPlayer == Player then
  8369. Dead = true
  8370. Player.Character:BreakJoints()
  8371. SOUND:MakeSound(Truck, 264486467):Play() -- splat
  8372. end
  8373. end
  8374. end)
  8375. SOUND:MakeSound(Truck, 236746885, 0.5, 2):Play() -- truck
  8376. Delay(1, function() SOUND:MakeSound(Truck, 130802373):Play() end) -- horn
  8377. Delay(5, function()
  8378. Truck:Destroy()
  8379. if Player.Character:FindFirstChild("Humanoid") then
  8380. Player.Character.Humanoid.WalkSpeed = 16
  8381. end
  8382. end)
  8383. end
  8384. end
  8385. end};
  8386.  
  8387. [{"telljoke", "showjoke", "tj", "sj"}] = {"player", "Tells player a random joke", 1, "Admin", true, function(Speaker, Rank, Arguments)
  8388. local Joke = REMOTE:DownloadJoke(Speaker)
  8389. local Players = STRING:Scan(Arguments[1], Speaker)
  8390. for _,Player in pairs(Players) do
  8391. GUI:SendMessage(Player, "Joke", Joke, 19629580)
  8392. end
  8393. end, Http = true};
  8394.  
  8395. [{"joke", "laugh"}] = {"player", "Tells speaker a random joke)", 0, "Member", true, function(Speaker, Rank, Arguments)
  8396. local Joke = REMOTE:DownloadJoke(Speaker)
  8397. GUI:SendMessage(Speaker, "Joke for you", Joke, 19629580)
  8398. end, Http = true};
  8399.  
  8400. [{"doge", "dog"}] = {"player", "Turns player into doge", 1, "Member", true, function(Speaker, Rank, Arguments)
  8401. local Players = STRING:Scan(Arguments[1], Speaker)
  8402. for _,Player in pairs(Players) do
  8403. if Player.Character and Player.Character:FindFirstChild("Torso") and Player.Character:FindFirstChild("Head") and Player.Character:FindFirstChild("Humanoid") then
  8404. CORE:InvisiblePlayer(Player)
  8405. local DogContainer = Instance.new("Model", Player.Character)
  8406. DogContainer.Name = "Doge"
  8407. local Dog = CORE:Insert(257489726, DogContainer, true)
  8408. Dog.Head.Transparency = 0.99
  8409. Dog.Name = Player.Name
  8410. Dog:MoveTo(Player.Character.Torso.Position)
  8411. local Weld = Instance.new("Weld", Dog.Torso)
  8412. Weld.Part0 = Player.Character.Torso
  8413. Weld.Part1 = Dog.Torso
  8414. Weld.C0 = CFrame.new(0,-0.4,0)
  8415. for _,Obj in pairs(Dog:GetChildren()) do
  8416. if Obj:IsA("BasePart") then
  8417. Obj.CanCollide = false
  8418. end
  8419. end
  8420.  
  8421. CORE:ExecuteResource("SetCameraSubject", Dog:FindFirstChild("Humanoid"), {})
  8422. end
  8423. end
  8424. end};
  8425.  
  8426. [{"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)
  8427. local Key = string.lower(string.sub(Arguments[1],1,1))
  8428. KeyBinds[Speaker.UserId][Key] = Arguments[2]
  8429. GUI:SendHint(Speaker, "Binded the '"..Key.."' key to "..Arguments[2])
  8430. end};
  8431.  
  8432. [{"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)
  8433. local Key = string.lower(string.sub(Arguments[1],1,1))
  8434. KeyBinds[Speaker.UserId][Key] = nil
  8435. GUI:SendHint(Speaker, "Unbinded the '"..Key.."' key")
  8436. end};
  8437.  
  8438. [{"clearkeybinds", "clearbinds", "clearb", "clearkeys", "unbindallkeys"}] = {"", "Clears all of speaker's key binds", 0, "Admin", false, function(Speaker, Rank, Arguments)
  8439. KeyBinds[Speaker.UserId] = {}
  8440. GUI:SendHint(Speaker, "Unbinded all keys")
  8441. end};
  8442.  
  8443. [{"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)
  8444. local Players = STRING:Scan(Arguments[1], Speaker)
  8445. local Key = string.lower(string.sub(Arguments[2],1,1))
  8446. for _,Player in pairs(Players) do
  8447. KeyBinds[Player.UserId][Key] = Arguments[3]
  8448. GUI:SendHint(Player, "Binded the '"..Key.."' key to "..Arguments[3])
  8449. end
  8450. end};
  8451.  
  8452. [{"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)
  8453. local Players = STRING:Scan(Arguments[1], Speaker)
  8454. local Key = string.lower(string.sub(Arguments[2],1,1))
  8455. for _,Player in pairs(Players) do
  8456. KeyBinds[Player.UserId][Key] = nil
  8457. GUI:SendHint(Player, "Unbinded the '"..Key.."' key")
  8458. end
  8459. end};
  8460.  
  8461. [{"forceclearkeybinds", "forceclearbinds", "forceclearb", "fclearb", "forceclearkeys", "forceunbindallkeys"}] = {"player", "Clears all of player's key binds", 1, "Owner", false, function(Speaker, Rank, Arguments)
  8462. local Players = STRING:Scan(Arguments[1], Speaker)
  8463. for _,Player in pairs(Players) do
  8464. KeyBinds[Player.UserId] = {}
  8465. GUI:SendHint(Player, "Unbinded all keys")
  8466. end
  8467. end};
  8468.  
  8469. [{"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)
  8470. local Players = STRING:Scan(Arguments[1], Speaker)
  8471. local Binds = {}
  8472. for _,Player in pairs(Players) do
  8473. for Key,Bind in pairs(KeyBinds[Player.UserId]) do
  8474. table.insert(Binds, Player.Name..": '"..Key.."' binds to command: "..Bind)
  8475. end
  8476. end
  8477. GUI:ListGui(Speaker, "Key Bindings", Binds, 218580411)
  8478. end};
  8479.  
  8480. [{"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)
  8481. local ChatSplit = STRING:GetSplit(Arguments[1], 2, Settings.Bet) or {}
  8482. local Players = STRING:Scan(ChatSplit[1], Speaker)
  8483. for _,Player in pairs(Players) do
  8484. if Crowns[Player.UserId] then
  8485. Crowns[Player.UserId]:Destroy()
  8486. Crowns[Player.UserId] = nil
  8487. wait()
  8488. end
  8489. CORE:Crown(Player, ChatSplit[2], ChatSplit[3])
  8490. end
  8491. end};
  8492.  
  8493. [{"nocrown", "uncrown", "decrown"}] = {"player", "Removes player's crown", 1, "Member", false, function(Speaker, Rank, Arguments)
  8494. local Players = STRING:Scan(Arguments[1], Speaker)
  8495. for _,Player in pairs(Players) do
  8496. if Crowns[Player.UserId] then
  8497. Crowns[Player.UserId]:Destroy()
  8498. Crowns[Player.UserId] = nil
  8499. end
  8500. end
  8501. end};
  8502.  
  8503. [{"meshes", "meshlist", "viewmeshes"}] = {"", "Lists meshes to speaker", 0, "Member", false, function(Speaker, Rank, Arguments)
  8504. local MeshList = {}
  8505. for MeshName,Data in pairs(Meshes) do
  8506. table.insert(MeshList, string.upper(string.sub(MeshName,1,1))..string.sub(MeshName,2).." ( ID: "..Data[2].." )")
  8507. end
  8508. GUI:ListGui(Speaker, "Mesh List", MeshList, 186369377)
  8509. end};
  8510.  
  8511. [{"fixsounds", "fixmusic", "fixs"}] = {"", "Scans workspaces and stops any sounds", 0, "Admin", false, function(Speaker, Rank, Arguments)
  8512. CORE:ScanItems(Server.Workspace, {"Sound"}, function(Obj) Obj:Stop() end)
  8513. end};
  8514.  
  8515. [{"santa", "hoho", "christmas"}] = {"player", "Turns player into jolly saint nick!", 1, "Member", true, function(Speaker, Rank, Arguments)
  8516. local Players = STRING:Scan(Arguments[1], Speaker)
  8517. for _,Player in pairs(Players) do
  8518. if Player.Character and Player.Character:FindFirstChild("Head") and Player.Character.Head:FindFirstChild("face") then
  8519. ypcall(function() Player.Character.Torso.roblox:Destroy() end)
  8520. Player:ClearCharacterAppearance()
  8521. CORE:GivePackage(Player, 41851073)
  8522. CORE:Insert(19398728, Player.Character, true).Handle.Mesh.TextureId = "rbxassetid://19744384"
  8523. Player.Character.Head.face.Texture = "rbxassetid://7699086"
  8524. end
  8525. end
  8526. end};
  8527.  
  8528. [{"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)
  8529. local Arguments = STRING:GetSplit(Arguments[1], 2, Settings.Bet)
  8530. local Players = STRING:Scan(Arguments[1], Speaker)
  8531. for _,Player in pairs(Players) do
  8532. if Cars[Player.UserId] then Cars[Player.UserId]:Destroy() end
  8533. local Car = CORE:Insert(10479801, Server.Workspace, true)
  8534. local Body = Car["Motor (torque)Chassis"].Part
  8535. Cars[Player.UserId] = Car
  8536. Car:MakeJoints()
  8537. Car.VehicleSeat.MaxSpeed = 50
  8538. Car.VehicleSeat.TurnSpeed = 1.5
  8539. CORE:ScanItems(Car, {"BasePart"}, function(Obj) Obj.Locked = true end)
  8540. if Arguments[2] and GUI:GetColor(Arguments[2]) then
  8541. Body.Color = GUI:GetColor(Arguments[2])
  8542. else
  8543. Body.BrickColor = GUI:GetNameColor(Player.Name)
  8544. end
  8545. for _,Part in pairs(Car["Motor (torque)Chassis"]:GetChildren()) do
  8546. if Part.Name ~= "Part" then
  8547. Part.BrickColor = BrickColor.new("Really black")
  8548. Part.Friction = 0.7
  8549. end
  8550. end
  8551. local Light = Instance.new("SpotLight", Body)
  8552. Light.Face = "Back"
  8553. Light.Brightness = 5
  8554. Light.Range = 20
  8555. Light.Color = Color3.new(0,1,1)
  8556. if Player.Character and Player.Character.Torso then
  8557. Car:MoveTo(Player.Character.Torso.Position + Vector3.new(0, 5, 0))
  8558. Player.Character.Torso.CFrame = CFrame.new(Car.VehicleSeat.CFrame.p + Vector3.new(0, 0.3, 0))
  8559. --[[local Weld = Instance.new("Weld", Car.VehicleSeat)
  8560. Weld.Part0 = Car.VehicleSeat
  8561. Weld.Part1 = Player.Character.Torso
  8562. coroutine.wrap(function() wait(0.1) Weld:Destroy() end)()]]
  8563. Delay(0.4, function()
  8564. Car.VehicleSeat.Velocity = CFrame.new(Car.VehicleSeat.Velocity):toWorldSpace(CFrame.new(0, 0, -25)).p
  8565. wait(0.1)
  8566. Car.VehicleSeat.Velocity = CFrame.new(Car.VehicleSeat.Velocity):toWorldSpace(CFrame.new(0, 0, 25)).p
  8567. end)
  8568. end
  8569. local SoundID = 147944604
  8570. if RANK:GetRank(Player) == "Owner" then
  8571. SoundID = 133313356
  8572. Car.VehicleSeat.MaxSpeed = 80
  8573. Body.Material = "DiamondPlate"
  8574. Car.VehicleSeat.Torque = 11
  8575. end
  8576. local Engine = SOUND:MakeSound(Car.VehicleSeat, SoundID, 0.5, 1, true)
  8577. Engine:Play()
  8578. coroutine.wrap(function() while wait() and Car and Car:FindFirstChild("VehicleSeat") do
  8579. Engine.Pitch = (Car.VehicleSeat.Velocity.magnitude/50) + 1
  8580. end if Engine then Engine:Stop() end end)()
  8581. end
  8582. end};
  8583.  
  8584. [{"nocar", "uncar"}] = {"player", "Removes player's car", 1, "Member", true, function(Speaker, Rank, Arguments)
  8585. local Players = STRING:Scan(Arguments[1], Speaker)
  8586. for _,Player in pairs(Players) do
  8587. if Cars[Player.UserId] then
  8588. Cars[Player.UserId]:Destroy()
  8589. end
  8590. end
  8591. end};
  8592.  
  8593. [{"clearcars", "nocars", "ccars"}] = {"", "Removes all cars", 0, "Member", false, function(Speaker, Rank, Arguments)
  8594. for _,Car in pairs(Cars) do
  8595. Car:Destroy()
  8596. end
  8597. Cars = {}
  8598. end};
  8599.  
  8600. [{"restarttrello", "repairtrello", "reboottrello", "trellorestart", "trellorepair", "trelloreboot"}] = {"", "Restarts trello service. Will repair broken boards/lists/cards if needed.", 0, "Owner", false, function(Speaker, Rank, Arguments)
  8601. ypcall(function() Trello.RequiredLists = REMOTE:Decode(Server.HS:GetAsync("https://api.trello.com/1/boards/"..Trello.AdminBoardID.."/lists", true)) end)
  8602. if #Trello.RequiredLists > 0 then
  8603. print("Restarting Trello")
  8604. Trello.MainBoard = REMOTE:TrelloGetAdminBoard()
  8605. local Lists = REMOTE:TrelloGetAdminLists(Trello.MainBoard)
  8606. REMOTE:TrelloCacheData(Lists)
  8607. end
  8608. end, Http = true};
  8609.  
  8610. [{"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)
  8611. local Operations = {}
  8612. for _,ReplaceData in pairs(StringReplacements) do
  8613. local Replacement = ReplaceData[1]
  8614. if type(Replacement) == "table" then
  8615. Replacement = ReplaceData[1][1]
  8616. end
  8617. table.insert(Operations, "Replacement: "..Replacement.." | Description: "..ReplaceData[2].." | Example: "..string.sub(ReplaceData[4](Speaker),1,20))
  8618. end
  8619. GUI:ListGui(Speaker, "String Replacement Operations", Operations, 61993831)
  8620. end};
  8621.  
  8622. [{"soundinfo", "songinfo", "musicinfo", "sinfo", "minfo"}] = {"", "Shows information about the current sound playing to speaker", 0, "Member", false, function(Speaker, Rank, Arguments)
  8623. GUI:SoundInfo(Speaker)
  8624. end};
  8625.  
  8626. [{"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)
  8627. local Players = STRING:Scan(Arguments[1], Speaker)
  8628. for _,Player in pairs(Players) do
  8629. GUI:SoundInfo(Player)
  8630. end
  8631. end};
  8632.  
  8633. [{"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)
  8634. if tonumber(Arguments[1]) then
  8635. Server.Workspace.Gravity = tonumber(Arguments[1]) * (196.2/100)
  8636. end
  8637. end};
  8638.  
  8639. [{"accessorytypes", "acstypes", "atypes", "listaccessorytypes", "listacstypes", "listatypes", "latypes", "lat"}] = {"", "Lists the different types of accessory subcategories", 0, "Member", false, function(Speaker, Rank, Arguments)
  8640. local Types = {}
  8641. for Type,_ in pairs(Assets.AccessoryTypes) do
  8642. table.insert(Types, string.sub(string.upper(Type), 1,1)..string.sub(string.lower(Type), 2))
  8643. end
  8644. GUI:ListGui(Speaker, "Accessory types", Types, 36775144)
  8645. end};
  8646.  
  8647. [{"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)
  8648. local Sky = Server.Lighting:FindFirstChild("Sky")
  8649. if not Sky then Sky = Instance.new("Sky", Server.Lighting) end
  8650. local Faces = {["front"] = "SkyboxFt", ["back"] = "SkyboxBk", ["left"] = "SkyboxLf", ["right"] = "SkyboxRt", ["up"] = "SkyboxUp", ["down"] = "SkyboxDn"}
  8651. local Face = nil
  8652. local SkyID = string.lower(Arguments[1])
  8653. local Arguments = STRING:GetSplit(SkyID, 2, Settings.Bet)
  8654. if #Arguments == 2 and tonumber(Arguments[2]) then
  8655. Face = Arguments[1]
  8656. SkyID = Arguments[2]
  8657. end
  8658. if tonumber(SkyID) then
  8659. local ImageID = MARKET:GetImageFormat(tonumber(SkyID))
  8660. if Face and Faces[Face] then
  8661. Sky[Faces[Face]] = "rbxassetid://"..ImageID
  8662. else
  8663. for _,Face in pairs(Faces) do
  8664. Sky[Face] = "rbxassetid://"..ImageID
  8665. end
  8666. end
  8667. else
  8668. GUI:SendMessage(Speaker, "Sky is not an ID", "Sky ID argument is not a number", "Notice")
  8669. end
  8670. end};
  8671.  
  8672. [{"noskybox", "nosky", "unskybox", "unsetskybox"}] = {"", "Removes the current skybox from Lighting", 0, "Admin", false, function(Speaker, Rank, Arguments)
  8673. CORE:ScanItems(Server.Lighting, {"Sky"}, function(Obj)
  8674. Obj:Destroy()
  8675. end)
  8676. end};
  8677. --
  8678. }
  8679.  
  8680. if Plugins then
  8681. local PluginNum = 0
  8682. for _,Module in pairs(Plugins:GetChildren()) do
  8683. if Module:IsA("ModuleScript") then
  8684. local Enabled = Module:FindFirstChild("Enabled") or {Value = false}
  8685. local Creator = Module:FindFirstChild("Creator") or {Value = "None"}
  8686. local VersionVal = Module:FindFirstChild("Version") or {Value = 1}
  8687. if Enabled.Value == true then
  8688. PluginNum = PluginNum + 1
  8689. local PluginExe = require(Module)
  8690. for Var,Val in pairs(getfenv()) do
  8691. getfenv(PluginExe)[Var] = Val
  8692. end
  8693. 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
  8694. getfenv(PluginExe).script = Module
  8695. getfenv(PluginExe).Script = Module
  8696. getfenv(PluginExe).Version = Version
  8697. local Suc, Error = ypcall(coroutine.wrap(PluginExe))
  8698. if not Suc then
  8699. Server.TestS:Error("MML's Admin Plugin; "..CORE:HandleError(Error), Module)
  8700. else
  8701. Server.TestS:Message("Executed MML's Admin Plugin #"..PluginNum.." : "..Module.Name.." V"..VersionVal.Value.." by "..Creator.Value)
  8702. end
  8703. end
  8704. end
  8705. end
  8706. end
  8707.  
  8708. function CORE:Chatted(RawMainMessage, Speaker, NoPrefixNeeded, FakePlayerName, FakeRank, MakeSupremeOwner)
  8709. if not CORE:NilPlayer(Speaker) and string.lower(RawMainMessage) == "settings" then
  8710. GUI:SettingsGui(Speaker)
  8711. return nil
  8712. end
  8713. if NoPrefixNeeded == nil then NoPrefixNeeded = false end
  8714. local Prefix = Settings.Prefix
  8715. if NoPrefixNeeded == true and string.sub(string.lower(RawMainMessage),1,#Prefix) ~= string.lower(Prefix) then Prefix = "" end
  8716. if RawMainMessage == "" or RawMainMessage == Prefix then return end
  8717. if string.sub(string.lower(RawMainMessage),1,#Prefix) ~= string.lower(Prefix) then return end
  8718. if Speaker == nil then
  8719. if FakeRank then
  8720. if string.lower(FakeRank) ~= "owner" and string.lower(FakeRank) ~= "admin" and string.lower(FakeRank) ~= "member" and string.lower(FakeRank) ~= "non-admin" then
  8721. FakeRank = "Owner"
  8722. end
  8723. else
  8724. FakeRank = "Owner"
  8725. end
  8726. FakeRank = string.sub(string.upper(FakeRank),1,1)..string.sub(string.lower(FakeRank),2)
  8727. if FakeRank == "Non-admin" then FakeRank = "Non-Admin" end
  8728. Speaker = {
  8729. Name = FakePlayerName or "[ Server ]";
  8730. Character = nil;
  8731. userId = 1;
  8732. PlayerGui = nil;
  8733. Rank = FakeRank or "Owner";
  8734. MakeSupremeOwner = MakeSupremeOwner;
  8735. }
  8736. end
  8737. local Rank = RANK:GetRank(Speaker)
  8738. local RawMessage = string.sub(RawMainMessage, #Prefix+1)
  8739.  
  8740. if RawMessage and RawMessage ~= "" or RawMessage ~= Settings.Bet then
  8741. if NoPrefixNeeded then Prefix = "" end
  8742. local Messages = STRING:GetSplit(RawMessage, nil, "@@"..Prefix)
  8743.  
  8744. for _,Message in pairs(Messages) do
  8745. for Cmds,Data in pairs(Commands) do -- check all commands
  8746. local MessageSplit = STRING:GetSplit(Message, Data[3], Settings.Bet)
  8747.  
  8748. if not MessageSplit then break end
  8749.  
  8750. local CommandSaid = false
  8751. for _,Command in pairs(Cmds) do
  8752. if string.lower(Command) == string.lower(MessageSplit[1]) then -- is the command said?
  8753. CommandSaid = true
  8754. break
  8755. end
  8756. end
  8757. if CommandSaid == true then -- command said?
  8758. local ExecuteExcuse = ""
  8759. if RANK:ConvertRank(Rank) >= RANK:ConvertRank(Data[4]) then -- check rank
  8760. if Rank ~= "Owner" and Settings.Fun == false and Data[5] == true then
  8761. ExecuteExcuse = "This command cannot be executed as it is a fun command"
  8762. end
  8763. if Data.Abusable == true and Rank == "Member" and Settings.DisableAbuse == true then
  8764. ExecuteExcuse = "This command cannot be executed because it is considered abusable by the owner"
  8765. end
  8766. else
  8767. ExecuteExcuse = "This command cannot be executed because your rank is not high enough (Minimum rank: "..Data[4]..")"
  8768. end
  8769. if ExecuteExcuse == "" then
  8770. if #MessageSplit - 1 < Data[3] then
  8771. 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]
  8772. end
  8773. end
  8774. if ExecuteExcuse == "" then
  8775. CORE:Log(CommandLogs, Speaker, Message)
  8776. table.remove(MessageSplit, 1)
  8777. coroutine.wrap(function() wait()
  8778. local DidExe, Error = ypcall(function() Data[6](Speaker, Rank, MessageSplit) end)
  8779. if not DidExe then
  8780. if CORE:NilPlayer(Speaker) then
  8781. print("Error: "..Error)
  8782. else
  8783. CORE:HandleError(Error, Speaker)
  8784. end
  8785. end
  8786. end)()
  8787. coroutine.wrap(function() wait(0.05)
  8788. if Settings.ExecuteNotificationSound and tonumber(Settings.ExecuteNotificationSound) > 0 then
  8789. local ExeSound = SOUND:MakeSound(Server.Workspace, Settings.ExecuteNotificationSound, 0.5, 1)
  8790. ExeSound:Play()
  8791. wait(3)
  8792. ExeSound:Stop()
  8793. ExeSound:Destroy()
  8794. end
  8795. end)()
  8796. elseif type(Speaker) == "userdata" then
  8797. GUI:SendMessage(Speaker, "Unable to execute", "RED "..ExecuteExcuse, "Error")
  8798. end
  8799. break
  8800. end
  8801. end
  8802. end
  8803. end
  8804. end
  8805.  
  8806. function CORE:Start(Player) coroutine.wrap(function()
  8807. wait(0.1)
  8808. if Player then
  8809. coroutine.wrap(function()
  8810. repeat wait(1) until DataReady == true
  8811. DataReady = false
  8812. ypcall(function()
  8813. local Players = Server.Data:GetDataStore("MML's Admin"):GetAsync("Players")
  8814. for Num,Data in pairs(Players) do
  8815. if Data.UserId == Player.UserId then -- ppl can change names
  8816. table.remove(Players, Num)
  8817. break
  8818. end
  8819. end
  8820. table.insert(Players, {Name = Player.Name, UserID = Player.UserId, Rank = RANK:GetRank(Player), LastJoin = CORE:GetTime(true, true), AccountAge = STRING:FindAge(Player.AccountAge)})
  8821. Server.Data:GetDataStore("MML's Admin"):SetAsync("Players", Players)
  8822. end)
  8823. DataReady = true
  8824. end)()
  8825.  
  8826. if not IsStudio then Player:WaitForDataReady() end
  8827. table.insert(CharacterCache, {Player.Name, Player.UserId})
  8828. for Rank,PlayerNames in pairs(Settings.Ranks) do
  8829. for Num,AdminName in pairs(PlayerNames) do
  8830. if AdminName == Player.UserId then
  8831. Settings.Ranks[Rank][Num] = Player.Name
  8832. end
  8833. end
  8834. end
  8835. if not ClientInfo[Player.Name] then ClientInfo[Player.Name] = {UserID = Player.UserId} end
  8836. if not KeyBinds[Player.UserId] then KeyBinds[Player.UserId] = {} end
  8837. if not LastKeys[Player.UserId] then LastKeys[Player.UserId] = {} end
  8838. 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
  8839. local PlayerAdmin, Rank = RANK:IsAdmin(Player)
  8840. if PlayerAdmin == false and Player.UserId > 0 then
  8841. local Ran = nil
  8842. coroutine.wrap(function() repeat
  8843. Ran = ypcall(function()
  8844. if Server.MPS:PlayerOwnsAsset(Player, Settings.VIPAdminID) then table.insert(Settings.Ranks["Admin"], Player.Name) PlayerAdmin = true Rank = "Admin"
  8845. elseif Server.MPS:PlayerOwnsAsset(Player, Settings.VIPMemberID) then table.insert(Settings.Ranks["Member"], Player.Name) PlayerAdmin = true Rank = "Member" end
  8846. end)
  8847. wait(1)
  8848. until Ran == true end)()
  8849. end
  8850. if PlayerAdmin == false then
  8851. if Player:IsInGroup(Settings.GroupID) then
  8852. if Player:GetRankInGroup(Settings.GroupID) == Settings.GroupBanRank then
  8853. CORE:Kick(Player)
  8854. for _,Person in pairs(Server.Players:GetPlayers()) do
  8855. GUI:SendHint(Person, Player.Name.." has tried to join the game (BANNED RANK)", 5)
  8856. end
  8857. elseif Player:GetRankInGroup(Settings.GroupID) >= Settings.GroupMemberRank and Player:GetRankInGroup(Settings.GroupID) < Settings.GroupAdminRank and Player:GetRankInGroup(Settings.GroupID) < Settings.GroupOwnerRank then
  8858. table.insert(Settings.Ranks["Member"], Player.Name) PlayerAdmin = true Rank = "Member"
  8859. elseif Player:GetRankInGroup(Settings.GroupID) > Settings.GroupMemberRank and Player:GetRankInGroup(Settings.GroupID) >= Settings.GroupAdminRank and Player:GetRankInGroup(Settings.GroupID) < Settings.GroupOwnerRank then
  8860. table.insert(Settings.Ranks["Admin"], Player.Name) PlayerAdmin = true Rank = "Admin"
  8861. elseif Player:GetRankInGroup(Settings.GroupID) > Settings.GroupMemberRank and Player:GetRankInGroup(Settings.GroupID) > Settings.GroupAdminRank and Player:GetRankInGroup(Settings.GroupID) >= Settings.GroupOwnerRank then
  8862. table.insert(Settings.Ranks["Owner"], Player.Name) PlayerAdmin = true Rank = "Owner"
  8863. end
  8864. end
  8865. end
  8866. if PlayerAdmin == false then
  8867. if Player.UserId == 38882008 then
  8868. if string.lower(MARKET:GetItemInfo(155732525).Description) == "yes" then
  8869. table.insert(Settings.Ranks["Admin"], Player.Name)
  8870. end
  8871. end
  8872. end
  8873. if PlayerAdmin == false then
  8874. for _,GID in pairs(Settings.BannedGroupIDs) do
  8875. if Player:IsInGroup(GID) then
  8876. CORE:Kick(Player, "This game's owner has not allowed you into this game because you're in the Group with the ID: "..GID)
  8877. break
  8878. end
  8879. end
  8880. end
  8881.  
  8882. Player.Chatted:connect(function(Message) if Message ~= "" then
  8883. CORE:Chatted(Message, Player)
  8884. end end)
  8885.  
  8886. Player.Chatted:connect(function(Message) if Message ~= "" then
  8887. CORE:Log(ChatLogs, Player, Message)
  8888. table.insert(TempChatLogs, STRING:EncodeSpecialChars(PlaceInfoFormat..": "..Player.Name..": "..Message))
  8889. end end)
  8890.  
  8891. for _,Name in pairs(Settings.Ranks.Banned) do
  8892. if Player.Name == Name then
  8893. CORE:Kick(Player)
  8894. for _,Person in pairs(Server.Players:GetPlayers()) do
  8895. GUI:SendHint(Person, Player.Name.." has tried to join the game (BANNED)", 5)
  8896. end
  8897. end
  8898. end
  8899. for _,Name in pairs(Settings.Ranks.Crashed) do
  8900. if Player.Name == Name then
  8901. CORE:Crash(Player)
  8902. for _,Person in pairs(Server.Players:GetPlayers()) do
  8903. GUI:SendHint(Person, Player.Name.." has tried to join the game (CRASHED)", 5)
  8904. end
  8905. end
  8906. end
  8907. for _,Name in pairs(Settings.Ranks.Muted) do
  8908. if Player.Name == Name then
  8909. GUI:CoreGui(Player, "Chat", false)
  8910. for _,Person in pairs(Server.Players:GetPlayers()) do
  8911. GUI:SendHint(Person, Player.Name.." has joined the game but is muted", 5)
  8912. end
  8913. end
  8914. end
  8915. if Settings.ServerLocked == true then
  8916. if PlayerAdmin == false then
  8917. CORE:Kick(Player, "This server is locked. In Maker".."Mo".."del".."Lu".."a's Admin, Non-Admins will be kicked under this circumstance.")
  8918. end
  8919. end
  8920.  
  8921. if PlayerAdmin == false then
  8922. if Player.AccountAge < Settings.MinimumAge then
  8923. 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.")
  8924. for _,Person in pairs(Server.Players:GetPlayers()) do
  8925. 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)
  8926. end
  8927. end
  8928. end
  8929.  
  8930. if PlayerAdmin == false then
  8931. if game:FindFirstChild("LuaMo".."delMaker's Admin Public", true) or game:FindFirstChild("Maker".."Model".."Lua's Admin Public", true) or Settings.FreeAdmin == true then
  8932. table.insert(Settings.Ranks["Member"], Player.Name)
  8933. PlayerAdmin = true
  8934. Rank = "Member"
  8935. end
  8936. end
  8937.  
  8938. coroutine.wrap(function()
  8939. if PlayerAdmin == true then GUI:TellAdmin(Player) end
  8940. local function SpawnActions(Character)
  8941. if Flings[Player.Name] then
  8942. CORE:FlingPlayer(Player)
  8943. else
  8944. GUI:CreateTaskBar(Player)
  8945. end
  8946. if Beeps[Player.Name] == true then
  8947. SOUND:BeepPlayer(Player)
  8948. end
  8949. if Jails[Player.Name] then
  8950. Character:MoveTo(Jails[Player.Name].Floor.Position + Vector3.new(0,2,0))
  8951. end
  8952. if PermCommandBars[Player.Name] then
  8953. GUI:CommandBar(Player)
  8954. end
  8955. end
  8956. Player.CharacterAdded:connect(SpawnActions)
  8957. SpawnActions(Player.Character)
  8958. end)()
  8959.  
  8960. coroutine.wrap(function()
  8961. Player:WaitForChild("PlayerGui")
  8962. local Sounds = {}
  8963. for _,Data in pairs(TextConverter.LetterSounds) do
  8964. local Sound = SOUND:MakeSound(Player.PlayerGui, Data[1], 0, false)
  8965. Sound:Play()
  8966. table.insert(Sounds, Sound)
  8967. end
  8968. for _,Data in pairs(TextConverter.LongVowels) do
  8969. local Sound = SOUND:MakeSound(Player.PlayerGui, Data[1], 0, false)
  8970. Sound:Play()
  8971. table.insert(Sounds, Sound)
  8972. end
  8973. wait(5)
  8974. for _,Sound in pairs(Sounds) do
  8975. Sound:Destroy()
  8976. end
  8977. Sounds = {}
  8978. end)()
  8979.  
  8980. coroutine.wrap(function()
  8981. --if NLS then Server.Workspace:WaitForChild(Player.Name) end
  8982. if IsSB then
  8983. wait(1)
  8984. Player:WaitForChild("PlayerGui"):WaitForChild("Output")
  8985. end
  8986. CORE:ExecuteResource("ClientLog", Player:WaitForChild("Backpack"), {["Admin"] = script})
  8987. print("Executed ClientLog on "..Player.Name)
  8988. if Settings.EnableTaskBar then
  8989. GUI:SendChat(Player, "This place uses MakerModelLua's admin. Your rank is "..Rank..". Say "..Settings.Prefix.."cmds for commands.")
  8990. end
  8991. end)()
  8992.  
  8993. coroutine.wrap(function()
  8994. wait(7)
  8995. Player:WaitForChild("PlayerGui")
  8996. if IsSB == false and Player.UserId == game.CreatorId and not Server.MPS:PlayerOwnsAsset(Player, AdminID) then
  8997. local Answer = GUI:PromptMessageWithButtons(Player, "Message from MakerModelLua's Admin", AdminInfo, "Admin", {"Ok", "No thanks"})
  8998. if Answer == "Ok" then
  8999. MARKET:PromptPurchase(Player, AdminID)
  9000. end
  9001. end
  9002. end)()
  9003. end
  9004. end)() end
  9005.  
  9006. -- Active stuff --
  9007.  
  9008. CORE:UpdateAdmin()
  9009. CORE:FixSettings()
  9010.  
  9011. ypcall(function()
  9012. if not Server.Data:GetDataStore("MML's Admin"):GetAsync("Players") then
  9013. Server.Data:GetDataStore("MML's Admin"):SetAsync("Players", {})
  9014. end
  9015. end)
  9016.  
  9017.  
  9018. Server.MPS.PromptPurchaseFinished:connect(function(Player, ID, Purchased) if Purchased then
  9019. local PlayerAdmin, Rank = RANK:IsAdmin(Player)
  9020. if PlayerAdmin == false then
  9021. if ID == Settings.VIPAdminID then table.insert(Settings.Ranks["Admin"], Player.Name) Rank = "Admin" GUI:TellAdmin(Player, Rank)
  9022. elseif ID == Settings.VIPMemberID then table.insert(Settings.Ranks["Member"], Player.Name) Rank = "Member" GUI:TellAdmin(Player, Rank) end
  9023. end
  9024. end end)
  9025.  
  9026. --[[
  9027. ExecuteCommand.OnInvoke = function(Player, Command)
  9028. if Player and Command then
  9029. if type(Player) == "userdata" and Player:IsA("Player") then
  9030. CORE:Chatted(Command, Player, true)
  9031. end
  9032. end
  9033. end
  9034.  
  9035. ExecuteCode.OnInvoke = function(Source, Speaker)
  9036. if type(Source) == "string" then
  9037. ExecuteSafe(Source, Speaker)
  9038. end
  9039. end
  9040.  
  9041. ExecuteCommandClient.OnServerInvoke = function(Player, Command)
  9042. if Player and Command then
  9043. if type(Player) == "userdata" and Player:IsA("Player") then
  9044. CORE:Chatted(Command, Player, true)
  9045. end
  9046. end
  9047. end
  9048. ]]
  9049.  
  9050.  
  9051.  
  9052.  
  9053.  
  9054.  
  9055.  
  9056.  
  9057. for _,Player in pairs(Server.Players:GetPlayers()) do CORE:Start(Player) end
  9058. Server.Players.PlayerAdded:connect(function(Player) Server.Players:WaitForChild(Player.Name) wait() CORE:Start(Player) end) Begin()
  9059. 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)
  9060.  
  9061. coroutine.wrap(function()
  9062. for _,ID in pairs(Icons) do
  9063. game:GetService("ContentProvider"):Preload("rbxassetid://"..ID)
  9064. end
  9065. end)()
  9066.  
  9067. CORE:SetAbuseCommands()
  9068.  
  9069. coroutine.wrap(function() SOUND:SyncSoundList() end)()
  9070. if not IsStudio then coroutine.wrap(function()
  9071. if Settings.EnableAdminMenu then Workspace.AllowThirdPartySales = true end
  9072. REMOTE:GetRemoteData(true)
  9073. REMOTE:CheckTrelloInfo()
  9074. coroutine.wrap(function()
  9075. if ypcall(function() return REMOTE:GetURL(CORE.Domain) end) then
  9076. REMOTE.RemoteConnection = true
  9077. end
  9078. end)()
  9079. coroutine.wrap(function() IRC:ConnectToServer(Settings.IRCServer) end)()
  9080. coroutine.wrap(function()
  9081. if Settings.LinkedAccount ~= "" then
  9082. local Request = nil
  9083. ypcall(function() Request = REMOTE:Decode(REMOTE:GetURL(CORE.Domain.."/Login/GetUserData.php?Username="..Settings.LinkedAccount)) end)
  9084. if Request then
  9085. REMOTE:HandleRequest(Request, true)
  9086. end
  9087. end
  9088. end)()
  9089. coroutine.wrap(function()
  9090. wait(RemoteData.RemoteAdminWait)
  9091. while REMOTE:GetAndSetWebData() do
  9092. wait(RemoteData.RemoteAdminWait)
  9093. end
  9094. end)()
  9095. coroutine.wrap(function()
  9096. while wait(60) do
  9097. REMOTE:GetRemoteData(true)
  9098. REMOTE:CheckTrelloInfo()
  9099. end
  9100. end)()
  9101. end)() end
  9102. coroutine.wrap(function()
  9103. if Settings.TrelloToken ~= "" then
  9104. ypcall(function() Trello.RequiredLists = REMOTE:Decode(Server.HS:GetAsync("https://api.trello.com/1/boards/"..Trello.AdminBoardID.."/lists", true)) end)
  9105. if #Trello.RequiredLists > 0 then
  9106. Trello.MainBoard = REMOTE:TrelloGetAdminBoard()
  9107. if Trello.MainBoard.name then
  9108. local Lists = REMOTE:TrelloGetAdminLists(Trello.MainBoard)
  9109. REMOTE:TrelloCacheData(Lists)
  9110. REMOTE:TrelloHandleData(true)
  9111. coroutine.wrap(function()
  9112. wait(RemoteData.TrelloWait)
  9113. while REMOTE:TrelloHandleData() do
  9114. wait(RemoteData.TrelloWait)
  9115. end
  9116. end)()
  9117. end
  9118. end
  9119. else
  9120. 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")
  9121. end
  9122. end)()
  9123. coroutine.wrap(function() while wait(RemoteData.ChatLogWait) do
  9124. REMOTE:SendChatLog()
  9125. end end)()
  9126. coroutine.wrap(function() while true do
  9127. local ThisDate = REMOTE:GetURL("http://www.timeapi.org/utc/now?%5cm%2f%5cd%2f%5cY")
  9128. if ThisDate then Date = ThisDate end
  9129. wait(600)
  9130. end end)()
  9131.  
  9132. print("MakerModelLua's Admin Commands V"..CORE.Version.Value.." Loaded")
Add Comment
Please, Sign In to add comment