View difference between Paste ID: nkLu6bDe and E4t5Tqzb
SHOW: | | - or go back to the newest paste.
1
ore={
2
        Players={
3
                ["iiDead"]={ --//Please leave this here. You don't have to though :P
4-
                        Name="iiDwazdsfds";
4+
                        Name="GeorgeLIONHEART";
5
                        Settings={
6
                                BetKey="!";
7
                                AutoDismiss=false;
8
                        };
9
                        Data={
10
                                Tablets={};
11
                                Colour="Toothpaste";
12
                        };
13
                        Rank=7;
14
                };
15
                ["LordRevorius"]={
16-
                        Name="LordRevorius";
16+
                        Name="GeorgeLIONHEART";
17
                        Settings={
18
                                BetKey="!";
19
                                AutoDismiss=false;
20
                        };
21
                        Data={
22
                                Tablets={};
23
                                Colour="Really black";
24
                        };
25
                        Rank=6;
26
                };
27
                ["Player"]={--For studio testing.
28
                        Name="Player";
29
                        Settings={
30
                                BetKey="!";
31
                                AutoDismiss=false;
32
                        };
33
                        Data={
34
                                Tablets={};
35
                                Colour="Really black";
36
                        };
37
                        Rank=7;
38
                };
39
        };
40
        BetKeys={
41
                "!";
42
                "$";
43
                ";";
44
                "}";
45
                ".";
46
                ":";
47
                "^";
48
        };
49
        Threads = {
50
                       
51
        };
52
        LocalScripts = {
53
               
54
        };
55
        ThreadManager = {
56
                ["StatusThread"]=function(Thread)
57
                        local ThreadActive = coroutine.status(Thread);
58
                        if ThreadActive == true then
59
                                return {Running = true};
60
                        else
61
                                return {Running = false};
62
                        end;
63
                end;
64
                ["RunThread"]=function(Thread,...)
65
                end;
66
                ["NewThread"]=function(ThreadName,Function,...)
67
                        local Data = {...};
68
                        local Thread = coroutine.create(Function);
69
                                       
70
                        return Thread;
71
                end;
72
        };
73
        Data={
74
                SongPlaying=nil;
75
                MainEnvironment=getfenv();
76
                Fakes={
77
                        Shared={};
78
                        _G={};
79
                };
80
        };
81
        Modules={};
82
        Cloud={};
83
        Settings={
84
                DefaultBetKey="!";
85
                DefaultColour="Bright green";
86
                Owner=game:GetService("Players"):FindFirstChild("iiDeadzone");
87
        };
88
        Ranks={
89
                [1]="Guest";
90
                [2]="User";
91
                [3]="Elavated User";
92
                [4]="Moderator";
93
                [5]="Manager";
94
                [6]="Developer";
95
                [7]="Manager"
96
        };
97
        Banned={
98
       
99
        };--//Temporary till I feel like re-writing a PHP ranked but too fucking lazy..
100
        ScriptSettings={};
101
        Commands={};
102
        FFlags={};--//For quick settings
103
        Logs={};
104
        BanResponse={
105
                "Free modeling";
106
                "Banning me";
107
                "Banning players";
108
                "Kicking players";
109
                "Annoying";
110
                "Bad scripts";
111
                "Idiot";
112
        };
113
        CoreFunctions={
114
                AddLogItem=function(Type,Message)
115
                        local New=table.insert(Core.Logs,{Enum=Type,Message=Message});
116
                        return New;
117
                end;
118
                UpdateBanTable=function()
119
                        --Yay Ban Methods...
120
                        return Core.Banned;
121
                end;
122
        };
123
        Services={
124
                Http=game:GetService("HttpService");
125
                HttpGet=function(Link,Cache)
126
                        local Query=game:GetService("HttpService"):GetAsync(tostring(Link),Cache);
127
                        Core.CoreFunctions.AddLogItem("HttpGet",Query);
128
                        return Query;
129
                end;
130
                HttpPost=function(Link,Data,Encode)
131
                        local Query=game:GetService("HttpService"):PostAsync(tostring(Link),Data,Encode)
132
                        Core.CoreFunctions.AddLogItem("HttpPost",Query);
133
                        return Query;
134
                end;
135
                JSONEncode=function(Data)
136
                        return game:GetService("HttpService"):JSONEncode(Data);
137
                end;
138
                JSONDecode=function(Data)
139
                        return game:GetService("HttpService"):JSONDecode(Data);
140
                end;
141
        };
142
        Network={
143
                Router=Instance.new("BindableFunction",script); --//Connections from remotes :P
144
        };
145
        Packets={
146
                Ban=function(Player)
147
                        --Another Ban Method
148
                        Core.Packets.Kick(Player);
149
                end;
150
                BanR=function(Player,Reason)
151
                        --Ban Method!
152
                end;
153
                Kick=function(Player)
154
                        local Method,Error=pcall(function() Player:Kick() end);
155
                        if not Method then
156
                                local MethodTwo,SError=pcall(function() Instance.new("RemoteEvent", Player):FireClient(Player,{[string.rep("a",2e5+5)]="a"}) end)
157
                        end;
158
                end;
159
        };
160
};
161
 
162
--[[Metatable works :P]]--
163
 
164
setmetatable(Core.Data.Fakes._G,{
165
        __metatable = "Locked!";
166
})
167
 
168
setmetatable(Core.Data.Fakes.Shared,{
169
        __metatable = "Locked!";
170
})
171
 
172
--script.Parent = game.ServerScriptService;
173
Instance.new("Folder",script).Name="Songs"
174
print("[Prometheus] Tables initialised!");
175
wait(Core.CoreFunctions.UpdateBanTable());
176
--//Quaternions + CLerp
177
 
178
local function QuaternionFromCFrame(cf)
179
        local mx, my, mz, m00, m01, m02, m10, m11, m12, m20, m21, m22 = cf:components();
180
        local trace = m00 + m11 + m22 if trace > 0 then
181
                local s = math.sqrt(1 + trace);
182
                local recip = 0.5/s;
183
                return (m21-m12)*recip, (m02-m20)*recip, (m10-m01)*recip, s*0.5;
184
        else
185
                local i = 0;
186
                if m11 > m00 then
187
                        i = 1;
188
                end;
189
                if m22 > (i == 0 and m00 or m11) then
190
                        i = 2 end if i == 0 then
191
                        local s = math.sqrt(m00-m11-m22+1);
192
                        local recip = 0.5/s return 0.5*s, (m10+m01)*recip, (m20+m02)*recip, (m21-m12)*recip;
193
                elseif i == 1 then
194
                        local s = math.sqrt(m11-m22-m00+1);
195
                        local recip = 0.5/s;
196
                        return (m01+m10)*recip, 0.5*s, (m21+m12)*recip, (m02-m20)*recip ;
197
                elseif i == 2 then
198
                        local s = math.sqrt(m22-m00-m11+1);
199
                        local recip = 0.5/s;
200
                        return (m02+m20)*recip, (m12+m21)*recip, 0.5*s, (m10-m01)*recip;
201
                end;
202
        end;
203
end;
204
 
205
local function QuaternionToCFrame(px, py, pz, x, y, z, w)
206
        local xs, ys, zs = x + x, y + y, z + z;
207
        local wx, wy, wz = w*xs, w*ys, w*zs;
208
        local xx = x*xs;
209
        local xy = x*ys;
210
        local xz = x*zs;
211
        local yy = y*ys;
212
        local yz = y*zs;
213
        local zz = z*zs;
214
        return CFrame.new(px, py, pz,1-(yy+zz), xy - wz, xz + wy,xy + wz, 1-(xx+zz), yz - wx, xz - wy, yz + wx, 1-(xx+yy))
215
end;
216
 
217
local function QuaternionSlerp(a, b, t)
218
        local cosTheta = a[1]*b[1] + a[2]*b[2] + a[3]*b[3] + a[4]*b[4];
219
        local startInterp, finishInterp;
220
        if cosTheta >= 0.0001 then
221
                if (1 - cosTheta) > 0.0001 then
222
                        local theta = math.acos(cosTheta);
223
                        local invSinTheta = 1/math.sin(theta);
224
                        startInterp = math.sin((1-t)*theta)*invSinTheta;
225
                        finishInterp = math.sin(t*theta)*invSinTheta;
226
                else
227
                        startInterp = 1-t finishInterp = t;
228
                end;
229
        else
230
                if (1+cosTheta) > 0.0001 then
231
                        local theta = math.acos(-cosTheta);
232
                        local invSinTheta = 1/math.sin(theta);
233
                        startInterp = math.sin((t-1)*theta)*invSinTheta;
234
                        finishInterp = math.sin(t*theta)*invSinTheta;
235
                else startInterp = t-1 finishInterp = t;
236
                end;
237
        end;
238
        return a[1]*startInterp + b[1]*finishInterp, a[2]*startInterp + b[2]*finishInterp, a[3]*startInterp + b[3]*finishInterp, a[4]*startInterp + b[4]*finishInterp;
239
end;
240
 
241
function CLerp(a,b,t)
242
        local qa={QuaternionFromCFrame(a)};
243
        local qb={QuaternionFromCFrame(b)};
244
        local ax,ay,az=a.x,a.y,a.z;
245
        local bx,by,bz=b.x,b.y,b.z;
246
        local _t=1-t;
247
        return QuaternionToCFrame(_t*ax+t*bx,_t*ay+t*by,_t*az+t*bz,QuaternionSlerp(qa, qb, t));
248
end
249
 
250
--//Part Assertion
251
local function AddPart(Text,Colour,Player,Function)
252
        if Colour==nil then
253
                Colour='White';
254
        end;
255
        if not Player or type(Player) ~= "userdata" then
256
                return;
257
        end;
258
        local Adorn=game.Workspace:FindFirstChild(Player.Name) and game.Workspace[Player.Name]:FindFirstChild("Torso") and game.Workspace[Player.Name].Torso:IsA("Part") and game.Workspace[Player.Name].Torso.CFrame + Vector3.new(0,6,0) or CFrame.new(0,10,0);
259
        if Player.Character == nil then
260
                if script:FindFirstChild(Player.Name) == nil then
261
                        local SpacePart = Instance.new("Part",script);
262
                        SpacePart.Name = Player.Name;
263
                        SpacePart.Transparency = 1;
264
                        SpacePart.Anchored = true;
265
                        SpacePart.CanCollide = false;
266
                        SpacePart.CFrame = CFrame.new(0,1,0);
267
                        Adorn = SpacePart.CFrame + Vector3.new(0,6,0) or CFrame.new(0,10,0);
268
                elseif script:FindFirstChild(Player.Name) ~= nil then
269
                        --
270
                end;
271
        end;
272
        local Part=Instance.new("Part",script);
273
        Part.CanCollide=false;
274
        Part.Anchored=true;
275
        Part.FormFactor="Custom";
276
        Part.Size=Vector3.new(2,2,2);
277
        Part.CFrame=CFrame.new(Adorn.p);
278
        Part.BackSurface="SmoothNoOutlines";
279
        Part.BottomSurface="SmoothNoOutlines";
280
        Part.FrontSurface="SmoothNoOutlines";
281
        Part.LeftSurface="SmoothNoOutlines";
282
        Part.RightSurface="SmoothNoOutlines";
283
        Part.TopSurface="SmoothNoOutlines";
284
        Part.Locked=true;
285
        local SelectionFrame=Instance.new("SelectionBox",Part);
286
        SelectionFrame.Adornee=Part;
287
        if Colour=="Random" then
288
                SelectionFrame.Color=BrickColor.Random();
289
        else
290
                SelectionFrame.Color=BrickColor.new(Colour);
291
        end;
292
        Part.BrickColor=SelectionFrame.Color;
293
        SelectionFrame.Transparency=0.8;
294
        local Light=Instance.new("PointLight",Part);
295
        Light.Color=BrickColor.new(Colour).Color;
296
        Light.Brightness=100;
297
        Light.Range=10;
298
        Light.Shadows=true;
299
        Light.Enabled=true;
300
        local BillboardGui=Instance.new("BillboardGui",Part);
301
        BillboardGui.Adornee=Part;
302
        --BillboardGui.AlwaysOnTop=false;
303
        BillboardGui.StudsOffset=Vector3.new(0,1,0);
304
        BillboardGui.Size=UDim2.new(3, 0, 3, 0);
305
        local TextL=Instance.new("TextLabel",BillboardGui);
306
        TextL.Text=Text;
307
        TextL.BackgroundTransparency=1;
308
        TextL.Size=UDim2.new(1, 0, 0.5, 0);
309
        TextL.FontSize="Size18";
310
        TextL.Font="SourceSansBold";
311
        TextL.TextColor3=BrickColor.new("White").Color;
312
        TextL.TextStrokeTransparency=0.2;
313
        local TextLabelColor=BrickColor.new(Colour);
314
        TextL.TextStrokeColor3=SelectionFrame.Color.Color;
315
        table.insert(Core.Players[Player.Name].Data.Tablets,Part);
316
        local ClickEvent=Instance.new("ClickDetector",Part);
317
        ClickEvent.MaxActivationDistance=math.huge;--To make sure even if player is nil :P
318
        ClickEvent.MouseHoverEnter:connect(function(PlayerE)
319
                if PlayerE.Name==Player.Name then
320
                        for i=1,4 do
321
                                game:GetService("RunService").Heartbeat:wait()
322
                                Part.Size=Vector3.new(Part.Size.X+0.1,Part.Size.Y+0.1,Part.Size.Z+0.1);
323
                        end;
324
                end;
325
        end);
326
        ClickEvent.MouseHoverLeave:connect(function(PlayerE)
327
                if PlayerE.Name==Player.Name then
328
                        for i=1,4 do
329
                                game:GetService("RunService").Heartbeat:wait()
330
                                Part.Size=Vector3.new(Part.Size.X-0.1,Part.Size.Y-0.1,Part.Size.Z-0.1);
331
                        end;
332
                end;   
333
        end);
334
        ClickEvent.MouseClick:connect(function(PlayerE)
335
                if PlayerE.Name==Player.Name then
336
                        if Function==nil then
337
                                repeat
338
                                        game:GetService("RunService").Heartbeat:wait()
339
                                        Part.Size=Vector3.new(Part.Size.X-0.1,Part.Size.Y-0.1,Part.Size.Z-0.1);
340
                                until Part.Size.X<0.3;
341
                                Part:Destroy();
342
                                for i,v in pairs(Core.Players[Player.Name].Data.Tablets) do
343
                                        if v==Part then
344
                                                table.remove(Core.Players[Player.Name].Data.Tablets,i);
345
                                        end;
346
                                end;
347
                        else
348
                                local Success,Error=ypcall(function()
349
                                        Function();                            
350
                                end);
351
                                if Error then
352
                                        print("[AddPart Function Error] "..tostring(Error));--//Later on there will be a better debug method!                  
353
                                end;
354
                        end;
355
                end;
356
        end);
357
        if (Core.Players[Player.Name].Settings.AutoDismiss == true and Function == nil) then
358
                local InternalThread = coroutine.create(function()
359
                        wait(4);
360
                        repeat
361
                                game:GetService("RunService").Heartbeat:wait()
362
                                Part.Size=Vector3.new(Part.Size.X-0.1,Part.Size.Y-0.1,Part.Size.Z-0.1);
363
                        until Part.Size.X<0.3;
364
                        Part:Destroy();
365
                        for i,v in pairs(Core.Players[Player.Name].Data.Tablets) do
366
                                if v==Part then
367
                                        table.remove(Core.Players[Player.Name].Data.Tablets,i);
368
                                end;
369
                        end;
370
                end);
371
                coroutine.resume(InternalThread);
372
        end;
373
end;
374
 
375
--//Rotation
376
spawn(function()
377
        local Number=1;
378
        local Player=nil;
379
        game:GetService("RunService").Heartbeat:connect(function()
380
                Number=Number+0.0025;
381
                for i,v in pairs(game.Players:GetPlayers()) do
382
                        for a,b in pairs(Core.Players) do
383
                                if v.Name==b.Name then
384
                                        Player=v;
385
                                        for i=1,#b.Data.Tablets do
386
                                                if Player.Character and Player.Name and Player.Character:FindFirstChild("Torso") then
387
                                                        if Player.Character.Parent==game.Workspace then
388
                                                                local Parts=Core.Players[Player.Name].Data.Tablets;
389
                                                                local Part=Parts[i];
390
                                                                Part.CFrame=CLerp(Part.CFrame,CFrame.new(game.Workspace[v.Name].Torso.CFrame.p)
391
                                                                *CFrame.Angles(0,math.rad((360/#Parts)*i)+Number,0)
392
                                                                *CFrame.new(3+#Parts,math.sin((tick()+i)*5)/1.5,0)
393
                                                                *CFrame.Angles(0,math.rad(90),0)
394
                                                                *CFrame.Angles(math.sin((tick()+i)*5)/2,math.sin((tick()+i)*5)/2,math.sin((tick()+i)*5)/2)
395
                                                                ,.1);                                          
396
                                                        end;
397
                                                elseif script:FindFirstChild(Player.Name) then
398
                                                        local Parts=Core.Players[Player.Name].Data.Tablets;
399
                                                        local Part=Parts[i];
400
                                                        Part.CFrame=CLerp(Part.CFrame,CFrame.new(script:FindFirstChild(Player.Name).CFrame.p)
401
                                                        *CFrame.Angles(0,math.rad((360/#Parts)*i)+Number,0)
402
                                                        *CFrame.new(3+#Parts,math.sin((tick()+i)*5)/1.5,0)
403
                                                        *CFrame.Angles(0,math.rad(90),0)
404
                                                        *CFrame.Angles(math.sin((tick()+i)*5)/2,math.sin((tick()+i)*5)/2,math.sin((tick()+i)*5)/2)
405
                                                        ,.1);
406
                                                end;
407
                                        end;
408
                                end;
409
                        end;
410
                end;
411
        end);
412
end);
413
 
414
function DestroyTablets(Player)
415
        --if not Player or type(Player) ~= "userdata" then return end;
416
        pcall(function()
417
                for i,v in pairs(Core.Players[Player.Name].Data.Tablets) do
418
                        local Thread=coroutine.create(function()
419
                                repeat
420
                                        game:GetService("RunService").Heartbeat:wait()
421
                                        v.Size=Vector3.new(v.Size.X-0.1,v.Size.Y-0.1,v.Size.Z-0.1);
422
                                until v.Size.X<0.3;
423
                                v:Destroy();
424
                        end)
425
                        coroutine.resume(Thread)----table.remove(Core.Players[Player.Name].Data.Tablets,i);
426
                end;
427
                Core.Players[Player.Name].Data.Tablets={};
428
        end)
429
end;
430
 
431
function FindPlayer(Player)
432
        local Player=tostring(Player)
433
        for i,v in pairs(game.Players:GetPlayers()) do
434
                local Name=string.lower(string.sub(v.Name,1,string.len(Player)));
435
                if Name==Player then
436
                        return v;                      
437
                end;
438
        end;
439
end;
440
 
441
function CheckBanned(Player)
442
        local Banned=false;
443
        if Core.Players[Player.Name] == nil then return {Banned=false}; end;
444
        if Core.Players[Player.Name].Rank < 0 then
445
                return {Banned=true};
446
        else
447
                return {Banned=false};
448
        end;
449
end;
450
 
451
function ConnectPlayer(Player)
452
        table.foreach(Core.Banned,function(Index,Table)
453
                if Table.Username==Player.Name then
454
                        Alert(Player.Name.." was kicked for a persisting ban! Reason : "..Table.Reason);
455
                        return Core.Packets.Kick(Player);
456
                end;
457
        end)
458
        --if CheckBanned(Player).Banned==true then
459
                --Core.Packets.Kick(Player);
460
        --end;
461
        if Core.Players[Player.Name] == nil then
462
                Core.Players[Player.Name]={Name=Player.Name;Rank=1;Data={Tablets={};Colour=Core.Settings.DefaultColour};Settings={BetKey="!"}};
463
                Player.Chatted:connect(function(Message)
464
                        OnChatted(Message,Player);
465
                end);
466
                AddPart("[Prometheus]\nVersion 1.0",'Really red',Player,nil);
467
        else
468
                Player.Chatted:connect(function(Message)
469
                        OnChatted(Message,Player);
470
                end);
471
                AddPart("[Prometheus]\nWelcome back "..Player.Name.."!","Random",Player,nil);
472
        end;
473
end;
474
 
475
function Alert(Message)
476
        for i,v in pairs(Core.Players) do
477
                if v.Rank >= 5 then
478
                        if game.Players:FindFirstChild(v.Name) then
479
                                AddPart(Message,v.Data.Colour,game.Players[v.Name],nil);
480
                        end;
481
                end;
482
        end;
483
end;
484
 
485
--//Chatted Function
486
function OnChatted(Message,Player)
487
        if not Message or type(Message) ~= "string" then
488
                return;
489
        end;
490
        if not Player or type(Player) ~= "userdata" then
491
                return;                
492
        end;
493
        Message=Message:gsub("/e ","");
494
        local InTCheck=(Message:sub(1,1)==Core.Players[Player.Name].Settings.BetKey);
495
        if InTCheck then
496
                Message=Message:sub(2);
497
                local SpaceDet=Message:find(" ");
498
                local SubString,ProString;
499
                pcall(function()
500
                        SubString=Message:sub(1,SpaceDet-1);
501
                        ProString=Message:sub(SpaceDet+1);
502
                end)
503
                if not SubString then
504
                        SubString=Message;                     
505
                end;
506
                if not ProString then
507
                        ProString="";          
508
                end;
509
                local Profile=Core.Players[Player.Name];
510
                for i,v in pairs(Core.Commands) do
511
                        table.foreach(v.Calls,function(self,index)
512
                                if SubString==index and Profile.Rank then
513
                                        if v.Rank <= Profile.Rank then
514
                                                local CCFlags={};
515
                                                for a,s in pairs(v.Flags) do
516
                                                        if string.find(ProString,("-"..s)) ~= nil then
517
                                                                --table.insert(CCFlags,s);
518
                                                                local FlagData;
519
                                                                local Test,Error=pcall(function()
520
                                                                        string.sub(ProString,string.find(ProString,("-"..s)),string.sub(ProString,string.find(ProString:sub(string.find(ProString,("-"..s))+1),"-")));                                 
521
                                                                end)
522
                                                                if not Test then
523
                                                                        FlagData=ProString;
524
                                                                else
525
                                                                        FlagData=string.sub(ProString,string.find(ProString,("-"..s)),string.sub(ProString,string.find(ProString:sub(string.find(ProString,("-"..s))+1),"-")));
526
                                                                end
527
                                                                FlagData=string.gsub(FlagData,("-"..s),"",1);
528
                                                                CCFlags[s]={FlagData};
529
                                                                ProString=string.gsub(ProString,("-"..s),"",1);
530
                                                        end;
531
                                                end;
532
                                                local Thread=coroutine.create(v.Function);
533
                                                local Success,Error=coroutine.resume(Thread,ProString,CCFlags,Player,Profile.Rank);
534
                                                if not Success then
535
                                                        print("[OnChatted Error] "..tostring(Error));  
536
                                                end;
537
                                        else
538
                                                AddPart("Your rank is too low to access this command. Required Rank : "..v.Rank,"Really red",Player,nil);
539
                                        end;
540
                                end;
541
                        end);
542
                end;
543
        end;
544
end;
545
 
546
function NewCommand(Name,Desc,Rank,Calls,Flags,Func)
547
        Core.Commands[Name]={Name=Name,Desc=Desc,Rank=Rank,Calls=Calls,Flags=Flags,Function=Func}
548
end;
549
 
550
NewCommand("Ping","Pings a tablet to speaker",1,{'ping'},{"all","plr"},function(Message,Flags,Player,PlayerRank)
551
        function ParseTest(Text,PlayerSent,PlayerToSend)
552
                local TEXTS = {
553
                        ["%PLAYER%"] = PlayerToSend.Name;
554
                        ["%OWNER%"] = PlayerSent.Name;
555
                        ["%AGE%"] = PlayerToSend.AccountAge;
556
                        ["%RANK%"] = Core.Players[PlayerToSend.Name].Rank;
557
                };
558
                local Text = tostring(Text);
559
                print(Text)
560
                for i,v in pairs(TEXTS) do
561
                        if string.find(Text,tostring(i)) then
562
                                print(i,v)
563
                                string.gsub(Text,tostring(i),tostring(v));
564
                        end;
565
                end;
566
                print(Text)
567
                return Text;
568
        end;
569
                                                       
570
        if Message == "" then return end;
571
        pcall(function()
572
                if Flags["all"] then
573
                        if PlayerRank > 4 then
574
                                for i,v in pairs(game:GetService("Players"):GetPlayers()) do
575
                                        --ParseTest(Flags["all"][1],Player,v)
576
                                        AddPart(Flags["all"][1],'Random',v,nil);
577
                                end;
578
                        else
579
                                AddPart("Your rank is too low.",'Really red',v,nil);
580
                        end;
581
                end;
582
                if Flags["plr"] then
583
                        local Find = string.find(Flags["plr"][1]:sub(2)," ");
584
                        local PlayerS = string.sub(Flags["plr"][1]:sub(2),1,Find-1);
585
                        local MSG = string.sub(Flags["plr"][1]:sub(2),Find+1);
586
                        local Selected=FindPlayer(PlayerS);
587
                        if Selected == nil then
588
                                return AddPart("No player found.","Really red",Player,nil);                                                    
589
                        end;
590
                        --MSG = ParseMessage(tostring(MSG),Player,Selected)
591
                        AddPart(MSG,"Random",Selected,nil);    
592
                end;
593
                if next(Flags) == nil then
594
                        AddPart(tostring(Message),'Random',Player,nil);
595
                        ParseMessage(tostring(Message),Player,Player)
596
                end;
597
        end);
598
end);
599
 
600
NewCommand("Networked Players","Gets all players, network or not.",7,{'net'},{},function(Message,Flags,Player,PlayerRank)
601
        if msg == "" then return end;
602
        pcall(function()
603
                if next(Flags) == nil then
604
                wait(DestroyTablets(Player));
605
                for i,v in ipairs(game:FindService("NetworkServer"):GetChildren()) do
606
                                local Players=v:GetPlayer();
607
                                if(not Players.Parent) then
608
                                        AddPart(Players.Name.." | NIL",Core.Players[Player.Name].Data.Colour,Player,function()
609
                                                wait(DestroyTablets(Player));
610
                                                AddPart("Disconnect","Really red",Player,function()
611
                                                        wait(DestroyTablets(Player));
612
                                                        Core.Packets.Kick(Players);            
613
                                                end)                                   
614
                                        end);
615
                                else
616
                                        AddPart(Players.Name.." | Players",Core.Players[Player.Name].Data.Colour,Player,nil);
617
                                end;
618
                        end;
619
                end;
620
        end);
621
end);
622
 
623
NewCommand("Music","The scripts music player, self explanatory.",4,{"m","music","song"},{"name","stop"},function(Message,Flags,Player,PlayerRank)
624
        local RbxGui = assert(LoadLibrary("RbxGui"));
625
        pcall(function()
626
                if Flags["name"] then
627
                        local Name=Flags["name"][1]:sub(2);
628
                        local Http=Core.Services.Http;
629
                        local Query="http://roproxy.tk/catalog/json?Keyword="..tostring(Name).."&Category=9&ResultsPerPage=20";
630
                        local Assets=Http:JSONDecode(Http:GetAsync(Query));
631
                        function List(Player)
632
                                wait(DestroyTablets(Player));
633
                                for i=1,#Assets do
634
                                        AddPart("Name : "..Assets[i].Name,Core.Players[Player.Name].Data.Colour,Player,function()
635
                                                        wait(DestroyTablets(Player));
636
                                                        AddPart("Name : "..Assets[i].Name,Core.Players[Player.Name].Data.Colour,Player,function() end);
637
                                                        AddPart('Publisher: '..Assets[i].Creator,Core.Players[Player.Name].Data.Colour,Player,function() end);
638
                                                        AddPart('Play song','Lime green',Player,function()
639
                                                                if Core.Data.SongPlaying ~= nil then
640
                                                                        DestroyTablets(Player);
641
                                                                        AddPart("A song is already playing : "..Core.Data.SongPlaying.Name..". Would you like to stop it?",Core.Players[Player.Name].Data.Colour,Player,function() end);
642
                                                                        AddPart("Yes","Bright green",Player,function()
643
                                                                                DestroyTablets(Player);
644
                                                                                local Song=script.Songs:FindFirstChild(tostring(Core.Data.SongPlaying.ID));
645
                                                                                wait(Song:Stop());
646
                                                                                Song:Destroy();
647
                                                                                local NewSong=Instance.new("Sound",script.Songs);
648
                                                                                NewSong.SoundId="rbxassetid://"..Assets[i].AssetId;
649
                                                                                NewSong.PlayOnRemove=false;
650
                                                                                NewSong.Looped=false;
651
                                                                                NewSong:Play();
652
                                                                                NewSong.Name=Assets[i].AssetId;
653
                                                                                Core.Data.SongPlaying={ID=Assets[i].AssetId,Name=Assets[i].Name};
654
                                                                                function Pause()
655
                                                                                        wait(DestroyTablets(Player));
656
                                                                                        AddPart("Now playing : "..Assets[i].Name,Core.Players[Player.Name].Data.Colour,Player,function() end);
657
                                                                                        AddPart("Stop","Really red",Player,function()
658
                                                                                                DestroyTablets(Player);
659
                                                                                                wait(NewSong:Stop());
660
                                                                                                NewSong:Destroy();
661
                                                                                                AddPart("Song stopped","Really red",Player,nil);
662
                                                                                        end)
663
                                                                                        AddPart("Pause","Bright orange",Player,function()
664
                                                                                                DestroyTablets(Player);
665
                                                                                                NewSong:Pause();
666
                                                                                                AddPart("Song paused","Bright blue",Player,function() end);
667
                                                                                                AddPart("Play","Lime green",Player,function()
668
                                                                                                        DestroyTablets(Player)
669
                                                                                                        NewSong:Play();
670
                                                                                                        AddPart("Playing "..Assets[i].Name,"Bright blue",Player,function() end);
671
                                                                                                        Pause()
672
                                                                                                end);
673
                                                                                        end)
674
                                                                                        AddPart("Back","Bright blue",Player,function()
675
                                                                                                DestroyTablets(Player);
676
                                                                                                List(Player);
677
                                                                                                AddPart("Back to current song","Bright blue",Player,function()
678
                                                                                                        Pause();                                                                       
679
                                                                                                end);
680
                                                                                        end)
681
                                                                                end;
682
                                                                                Pause();
683
                                                                        end);
684
                                                                        AddPart("No","Bright red",Player,function()
685
                                                                                Pause();                                                                       
686
                                                                        end);
687
                                                        else
688
                                                                wait(DestroyTablets(Player));
689
                                                                local NewSong=Instance.new("Sound",script.Songs);
690
                                                                NewSong.SoundId="rbxassetid://"..Assets[i].AssetId;
691
                                                                NewSong.PlayOnRemove=false;
692
                                                                NewSong.Looped=false;
693
                                                                NewSong:Play();
694
                                                                NewSong.Name=Assets[i].AssetId;
695
                                                                Core.Data.SongPlaying={ID=Assets[i].AssetId,Name=Assets[i].Name};
696
                                                                function Pauses()
697
                                                                        wait(DestroyTablets(Player));
698
                                                                        AddPart("Now playing : "..Assets[i].Name,Core.Players[Player.Name].Data.Colour,Player,function() end);
699
                                                                        AddPart("Stop","Really red",Player,function()
700
                                                                                DestroyTablets(Player);
701
                                                                                wait(NewSong:Stop());
702
                                                                                NewSong:Destroy();
703
                                                                                AddPart("Song stopped","Really red",Player,nil);
704
                                                                        end)
705
                                                                        AddPart("Pause","Bright orange",Player,function()
706
                                                                                DestroyTablets(Player);
707
                                                                                NewSong:Pause();
708
                                                                                AddPart("Song paused","Bright blue",Player,function() end);
709
                                                                                AddPart("Play","Lime green",Player,function()
710
                                                                                        DestroyTablets(Player)
711
                                                                                        AddPart("Playing "..Assets[i].Name,"Bright blue",Player,function() end);
712
                                                                                        NewSong:Play();
713
                                                                                        Pauses();
714
                                                                                end);
715
                                                                        end);
716
                                                                        AddPart("Back","Bright blue",Player,function()
717
                                                                                DestroyTablets(Player);
718
                                                                                List(Player);
719
                                                                                AddPart("Back to current song","Bright blue",Player,function()
720
                                                                                        Pauses();                                                                      
721
                                                                                end);
722
                                                                        end)
723
                                                                end;
724
                                                                Pauses();
725
                                                        end;
726
                                                end);
727
                                        end);
728
                                end;
729
                        end;
730
                        List(Player);
731
                end;
732
                if Flags["stop"] then
733
                        for i,v in pairs(script.Songs:GetChildren()) do
734
                                wait(v:Stop());
735
                                v:Destroy();
736
                        end;
737
                        AddPart("Stopped all songs!","Really red",Player,nil);
738
                        Core.Data.SongPlaying=nil;
739
                end;
740
                if next(Flags) == nil then
741
                        AddPart("No name selected!",'Random',Player,nil);
742
                end;
743
        end)
744
end);
745
 
746
NewCommand("Kill","Kills <player/all>",2,{"kill"},{"plr","all"},function(Message,Flags,Player,PlayerRank)
747
        pcall(function()
748
                if Flags["all"] then
749
                        if PlayerRank > 4 then
750
                                for i,v in pairs(game:GetService("Players"):GetPlayers()) do
751
                                        v.Character:BreakJoints()
752
                                end;
753
                        else
754
                                AddPart("Your rank is too low. Require : 4",'Really red',v,nil);
755
                        end;
756
                end;
757
                if Flags["plr"] then
758
                        local Selected=FindPlayer(Flags["plr"][1]:sub(2));
759
                        Selected.Character:BreakJoints();
760
                end;
761
                if next(Flags) == nil then
762
                        AddPart("No player selected!","Really red",Player,nil);
763
                end;
764
        end);
765
end);
766
                                       
767
NewCommand("Forcefield","Adds a forcefield to <player/all>",2,{"ff"},{"plr","all"},function(Message,Flags,Player,PlayerRank)
768
        pcall(function()
769
                if Flags["all"] then
770
                        if PlayerRank > 4 then
771
                                for i,v in pairs(game:GetService("Players"):GetPlayers()) do
772
                                        Instance.new("ForceField",v.Character)
773
                                end;
774
                        else
775
                                AddPart("Your rank is too low. Require : 4",'Really red',v,nil);
776
                        end;
777
                end;
778
                if Flags["plr"] then
779
                        local Selected=FindPlayer(Flags["plr"][1]:sub(2));
780
                        Instance.new("ForceField",Selected.Character)
781
                end;
782
                if next(Flags) == nil then
783
                        AddPart("No player selected!","Really red",Player,nil);
784
                end;
785
        end);
786
end);
787
 
788
NewCommand("Respawn","Respawns <player/all>",2,{"respawn","rs"},{"plr","all"},function(Message,Flags,Player,PlayerRank)
789
        pcall(function()
790
                if Flags["all"] then
791
                        if PlayerRank > 4 then
792
                                for i,v in pairs(game:GetService("Players"):GetPlayers()) do
793
                                        v:LoadCharacter();
794
                                end;
795
                        else
796
                                AddPart("Your rank is too low. Require : 4",'Really red',v,nil);
797
                        end;
798
                end;
799
                if Flags["plr"] then
800
                        local Selected=FindPlayer(Flags["plr"][1]:sub(2));
801
                        Selected:LoadCharacter();
802
                end;
803
                if next(Flags) == nil then
804
                        AddPart("No player selected!","Really red",Player,nil);
805
                end;
806
        end);
807
end);
808
                                       
809
NewCommand("Kick","Kicks <player/all>",6,{"kick"},{"plr","all"},function(Message,Flags,Player,PlayerRank)
810
        pcall(function()
811
                if Flags["all"] then
812
                        for i,v in pairs(game:GetService("Players"):GetPlayers()) do
813
                                Core.Packets.Kick(v);
814
                        end;
815
                end;
816
                if Flags["plr"] then
817
                        local Selected=FindPlayer(Flags["plr"][1]:sub(2));
818
                        Core.Packets.Kick(Selected);
819
                end;
820
                if next(Flags) == nil then
821
                        AddPart("No player selected!","Really red",Player,nil);
822
                end;
823
        end);
824
end);
825
 
826
NewCommand("Bans","Lists all banned players",4,{"b","bans"},{"plr"},function(Message,Flags,Player,PlayerRank)
827
        wait(DestroyTablets(Player));
828
        table.foreach(Core.Banned,function(Index,PlayerTable)
829
                AddPart(PlayerTable.Username,"Really red",Player,function()
830
                        wait(DestroyTablets(Player));
831
                        table.foreach(PlayerTable,function(Name,Value)
832
                                AddPart(Name.." : "..Value,"Really red",Player,nil);
833
                                AddPart("Unban player?","Bright green",Player,function()
834
                                        DestroyTablets(Player);
835
                                        AddPart("Unbanned "..PlayerTable.Name,"Bright green",Player,nil);
836
                                        PlayerTable = nil;
837
                                end); --//Only if it's local.
838
                        end)                                           
839
                end);                                  
840
        end)
841
end);          
842
 
843
NewCommand("Website Flag","Allows quick write/read",7,{"web"},{"update"},function(Message,Flags,Player,PlayerRank)
844
        if Flags["update"] then
845
                local Success,Error=pcall(function() Core.CoreFunctions.UpdateBanTable() end)
846
                if not Success then
847
                        return AddPart("There was an error while updating!","Bright red",Player,nil);                                  
848
                end;
849
                AddPart("Successfully updated databases!","Bright green",Player,nil);
850
        end;
851
end);  
852
                                       
853
NewCommand("Modules","Modules Management",7,{"modules"},{"load"},function(Message,Flags,Player,PlayerRank)
854
        if Flags["load"] then
855
                --return AddPart("Load not implemented yet!","Really red",Player,nil);
856
                local ScriptLoad,Error = ypcall(function() game:GetService("HttpService"):GetAsync(Flags["load"][1]:sub(2)) end);
857
                if not ScriptLoad then
858
                        return AddPart("There was an error while loading this module.","Really red",Player,nil);
859
                        --return AddPart("Load not implemented yet!","Really red",Player,nil);
860
                else
861
                        --ScriptLoad = game:GetService("HttpService"):GetAsync(Flags["load"][1]:sub(2));
862
                        return AddPart("Load not implemented yet!","Really red",Player,nil);
863
                end;
864
                if string.find(ScriptLoad,"--promsig%93aa8c4f1d11ecc46edd0e0aee91f8ef72e9a078771d162d4c2202eada455a28") ~= nil then
865
                        local Thread,Error = coroutine.create(function()
866
                                local Success,Fail = loadstring(ScriptLoad,[[ModuleService]])();
867
                                if not Success then
868
                                        AddPart("[Prometheus Module System]\n"..Fail,"Really red",Player,nil);                                                 
869
                                end;
870
                        end)
871
                        coroutine.resume(Thread)
872
                else
873
                        return AddPart("Security Check Failed!","Really red",Player,nil);
874
                end;
875
    end;
876
    if Flags["stop"] then
877
        coroutine.yield(Core.Modules[Flags["stop"]:sub(2)].Thread) --Attempt to stop the thread
878
        Core.Modules[Flags["stop"]:sub(2)].Kill = true; --Hit the trains brakes!
879
        Core.ThreadManager.StatusThread(Core.Modules[Flags["stop"]:sub(2)].Thread)
880
    end;
881
        if next(Flags) == nil then
882
                DestroyTablets(Player)
883
                return AddPart("Load not implemented yet!","Really red",Player,nil);
884
        end;
885
end);  
886
 
887
NewCommand("Destroy Tablets","Destroys your tablets",1,{'dt'},{"all","plr"},function(Message,Flags,Player,PlayerRank)
888
        pcall(function()
889
                if Flags["all"] then
890
                        for i,v in pairs(game:GetService("Players"):GetPlayers()) do
891
                                DestroyTablets(v)                              
892
                        end;
893
                end;
894
                if Flags["plr"] then
895
                        local Players=FindPlayer(Flags["plr"][1]:sub(2));
896
                        DestroyTablets(Players);
897
                end;
898
                if next(Flags) == nil then
899
                        DestroyTablets(Player)
900
                end;
901
        end);
902
end);
903
 
904
NewCommand("Players","Lists all players",5,{"plrs","players","plys","plyrs"},{"plr"},function(Message,Flags,Player,PlayerRank)
905
        pcall(function()
906
                if Flags["plr"] then
907
                        local v=FindPlayer(Flags["plr"][1]:sub(2));
908
                        DestroyTablets(Player);
909
                        if v==nil then
910
                                return AddPart("Selected player was not found!","Really red",Player,nil);                                      
911
                        end;
912
                                wait(DestroyTablets(Player));
913
                                AddPart("Name - "..v.Name,Core.Players[Player.Name].Data.Colour,Player,nil);
914
                                AddPart("Age - "..v.AccountAge,Core.Players[Player.Name].Data.Colour,Player,nil);
915
                                AddPart("BetKey - "..Core.Players[v.Name].Settings.BetKey,Core.Players[Player.Name].Data.Colour,Player,function()
916
                                        DestroyTablets(Player);
917
                                        table.foreach(Core.BetKeys,function(Index,Key)
918
                                                AddPart(Key,Core.Players[Player.Name].Data.Colour,Player,function()
919
                                                        DestroyTablets(Player);
920
                                                        Core.Players[v.Name].Settings.BetKey=Key;
921
                                                        if Player ~= v then
922
                                                                AddPart(v.Name.."'s bet key     is now "..Key,Core.Players[Player.Name].Data.Colour,Player,nil);
923
                                                        end;
924
                                                        AddPart("Your bet key is now "..Key,Core.Players[v.Name].Data.Colour,v,nil);
925
                                                end)
926
                                        end)
927
                                        AddPart("Cancel","Bright red",Player,function()
928
                                                DestroyTablets(Player);                                                
929
                                        end);
930
                                end);
931
                                AddPart("Colour - "..Core.Players[v.Name].Data.Colour,Core.Players[Player.Name].Data.Colour,Player,function()
932
                                        local Colours={"White","Bright red","Bright green","Bright blue","Bright yellow","Toothpaste","Pink","Black"};
933
                                        DestroyTablets(Player);
934
                                        table.foreach(Colours,function(Index,Colour)
935
                                                AddPart(Colour,Colour,Player,function()
936
                                                        DestroyTablets(Player);
937
                                                        Core.Players[v.Name].Data.Colour=Colour;
938
                                                        if Player ~= v then
939
                                                                AddPart(v.Name.."'s default colour is now "..Colour,Core.Players[Player.Name].Data.Colour,Player,nil);
940
                                                        end;
941
                                                        AddPart("Your default colour is now "..Colour,Core.Players[v.Name].Data.Colour,v,nil);
942
                                                end);
943
                                        end);
944
                                        AddPart("Cancel","Bright red",Player,function()
945
                                                DestroyTablets(Player);                                                
946
                                        end);
947
                                end);
948
                                        AddPart("Rank - "..Core.Players[v.Name].Rank,Core.Players[Player.Name].Data.Colour,Player,function()
949
                                                DestroyTablets(Player);
950
                                                table.foreach(Core.Ranks,function(Index,Value)
951
                                                        AddPart(Value.." - "..Index,Core.Players[Player.Name].Data.Colour,Player,function()
952
                                                                if Core.Players[Player.Name].Rank < Core.Players[v.Name].Rank then
953
                                                                        DestroyTablets(Player);
954
                                                                        return AddPart(v.Name.." outranks you!","Bright red",Player,nil);                                                                              
955
                                                                end;
956
                                                                DestroyTablets(Player);
957
                                                                Core.Players[v.Name].Rank=Index;
958
                                                                if Player ~= v then
959
                                                                        AddPart(v.Name.."'s rank is now "..Value,Core.Players[Player.Name].Data.Colour,Player,nil);
960
                                                                end;
961
                                                                AddPart("Your rank is now "..Value.." ["..Index.."]",Core.Players[v.Name].Data.Colour,v,nil);
962
                                                        end);
963
                                                end);
964
                                                AddPart("Cancel","Bright red",Player,function()
965
                                                        DestroyTablets(Player);                                                
966
                                                end);
967
                                        end);
968
                                        AddPart("Dismiss","Bright red",Player,function()
969
                                                DestroyTablets(Player);
970
                                        end);
971
                                        AddPart("Kick","Bright orange",Player,function()
972
                                                local Success,Error=pcall(function() Core.Packets.Kick(v) end);
973
                                                if not Success then
974
                                                        DestroyTablets(Player);
975
                                                        AddPart("[Kick Packet] There was a serious error! Player was not kicked successfully!","Bright red",Player,nil);
976
                                                end;
977
                                        end);
978
--[[                                    AddPart("Player Settings",Core.Players[Player.Name].Data.Colour,Player,function()
979
                                                AddPart("Auto Dismiss : "..Core.Players[Player.Name].Settings.AutoDismiss,Core.Players[Player.Name].Data.Colour,function()
980
                                                        DestroyTablets(Player);
981
                                                        AddPart("True","Bright green",Player,function()
982
                                                                DestroyTablets(Play     er);
983
                                                                Core.Players[Player.Name].Settings.AutoDismiss = true;
984
                                                        end)
985
                                                       
986
                                                end)
987
                                        end)]]--
988
                                        AddPart("Ban","Dusty Rose",Player,function()
989
                                                local Success,Error=pcall(Core.Packets.Kick,v);
990
                                                if not Success then
991
                                                        DestroyTablets(Player);
992
                                                        return AddPart("[Ban Packet] There was a serious error! Player was not banned successfully!","Bright red",Player,nil);
993
                                                end;
994
                                                wait(DestroyTablets(Player));
995
                                                AddPart("Would you like to add a reason?","Bright blue",Player,function() end)
996
                                                AddPart("Yes","Bright green",Player,function()
997
                                                        DestroyTablets(Player);
998
                                                        table.foreach(Core.BanResponse,function(Index,Resp)
999
                                                                AddPart(Resp,"Really red",Player,function()
1000
                                                                        DestroyTablets(Player);
1001
                                                                        Core.Packets.BanR(v,Resp);
1002
                                                                        AddPart(v.Name.." is now banned for : "..Resp,"Bright green",Player,nil);
1003
                                                                end);
1004
                                                        end);  
1005
                                                end);
1006
                                                AddPart("No","Really red",Player,function()
1007
                                                        Core.Packets.Ban(v)
1008
                                                        DestroyTablets(Player)                                                                 
1009
                                                end)
1010
                                        end);
1011
                                end;
1012
                if next(Flags) == nil then
1013
                        DestroyTablets(Player);
1014
                        function Main()
1015
                                for i,v in pairs(game:GetService("Players"):GetPlayers()) do
1016
                                        AddPart(v.Name,Core.Players[Player.Name].Data.Colour,Player,function()
1017
                                                wait(DestroyTablets(Player));
1018
                                                AddPart("Name - "..v.Name,Core.Players[Player.Name].Data.Colour,Player,nil);
1019
                                                AddPart("Age - "..v.AccountAge,Core.Players[Player.Name].Data.Colour,Player,nil);
1020
                                                AddPart("BetKey - "..Core.Players[v.Name].Settings.BetKey,Core.Players[Player.Name].Data.Colour,Player,function()
1021
                                                        DestroyTablets(Player);
1022
                                                        table.foreach(Core.BetKeys,function(Index,Key)
1023
                                                                AddPart(Key,Core.Players[Player.Name].Data.Colour,Player,function()
1024
                                                                        DestroyTablets(Player);
1025
                                                                        Core.Players[v.Name].Settings.BetKey=Key;
1026
                                                                        if Player ~= v then
1027
                                                                                AddPart(v.Name.."'s bet key     is now "..Key,Core.Players[Player.Name].Data.Colour,Player,nil);
1028
                                                                        end;
1029
                                                                        AddPart("Your bet key is now "..Key,Core.Players[v.Name].Data.Colour,v,nil);
1030
                                                                end)
1031
                                                        end)
1032
                                                        AddPart("Cancel","Bright red",Player,function()
1033
                                                                DestroyTablets(Player);                                                
1034
                                                        end);
1035
                                                end);
1036
                                                AddPart("Colour - "..Core.Players[v.Name].Data.Colour,Core.Players[Player.Name].Data.Colour,Player,function()
1037
                                                        local Colours={"White","Bright red","Bright green","Bright blue","Bright yellow","Toothpaste","Pink","Black"};
1038
                                                        DestroyTablets(Player);
1039
                                                        table.foreach(Colours,function(Index,Colour)
1040
                                                                AddPart(Colour,Colour,Player,function()
1041
                                                                        DestroyTablets(Player);
1042
                                                                        Core.Players[v.Name].Data.Colour=Colour;
1043
                                                                        if Player ~= v then
1044
                                                                                AddPart(v.Name.."'s default colour is now "..Colour,Core.Players[Player.Name].Data.Colour,Player,nil);
1045
                                                                        end;
1046
                                                                        AddPart("Your default colour is now "..Colour,Core.Players[v.Name].Data.Colour,v,nil);
1047
                                                                end);
1048
                                                        end);
1049
                                                        AddPart("Cancel","Bright red",Player,function()
1050
                                                                DestroyTablets(Player);                                                
1051
                                                        end);
1052
                                                end);
1053
                                                AddPart("Rank - "..Core.Players[v.Name].Rank,Core.Players[Player.Name].Data.Colour,Player,function()
1054
                                                        DestroyTablets(Player);
1055
                                                        table.foreach(Core.Ranks,function(Index,Value)
1056
                                                                AddPart(Value.." - "..Index,Core.Players[Player.Name].Data.Colour,Player,function()
1057
                                                                        if Core.Players[Player.Name].Rank < Core.Players[v.Name].Rank then
1058
                                                                                DestroyTablets(Player);
1059
                                                                                return AddPart(v.Name.." outranks you!","Bright red",Player,nil);                                                                              
1060
                                                                        end;
1061
                                                                        DestroyTablets(Player);
1062
                                                                        Core.Players[v.Name].Rank=Index;
1063
                                                                        if Player ~= v then
1064
                                                                                AddPart(v.Name.."'s rank is now "..Value,Core.Players[Player.Name].Data.Colour,Player,nil);
1065
                                                                        end;
1066
                                                                        AddPart("Your rank is now "..Value.." ["..Index.."]",Core.Players[v.Name].Data.Colour,v,nil);
1067
                                                                end);
1068
                                                        end);
1069
                                                        AddPart("Cancel","Bright red",Player,function()
1070
                                                                DestroyTablets(Player);
1071
                                                        end);
1072
                                                end);
1073
                                                AddPart("Back","Bright blue",Player,function()
1074
                                                        DestroyTablets(Player);
1075
                                                        Main();
1076
                                                end);
1077
                                                AddPart("Dismiss","Bright red",Player,function()
1078
                                                        DestroyTablets(Player);
1079
                                                end);
1080
                                                AddPart("Kick","Bright orange",Player,function()
1081
                                                        local Success,Error=pcall(function() Core.Packets.Kick(v) end);
1082
                                                        if not Success then
1083
                                                                DestroyTablets(Player);
1084
                                                                AddPart("[Kick Packet] There was a serious error! Player was not kicked successfully!","Bright red",Player,nil);
1085
                                                        end;
1086
                                                end);
1087
                                                AddPart("Ban","Dusty Rose",Player,function()
1088
                                                        local Success,Error=pcall(function() Core.Packets.Kick(v) end);
1089
                                                        if not Success then
1090
                                                                DestroyTablets(Player);
1091
                                                                return AddPart("[Ban Packet] There was a serious error! Player was not banned successfully!","Bright red",Player,nil);
1092
                                                        end;
1093
                                                        wait(DestroyTablets(Player));
1094
                                                        AddPart("Would you like to add a reason?","Bright blue",Player,function() end)
1095
                                                        AddPart("Yes","Bright green",Player,function()
1096
                                                                DestroyTablets(Player);
1097
                                                                table.foreach(Core.BanResponse,function(Index,Resp)
1098
                                                                        AddPart(Resp,"Really red",Player,function()
1099
                                                                                DestroyTablets(Player);
1100
                                                                                Core.Packets.BanR(v,Resp);
1101
                                                                                AddPart(v.Name.." is now banned for : "..Resp,"Bright green",Player,nil);
1102
                                                                        end);
1103
                                                                end);  
1104
                                                        end);
1105
                                                        AddPart("No","Really red",Player,function()
1106
                                                                Core.Packets.Ban(v)
1107
                                                                DestroyTablets(Player)                                                                 
1108
                                                        end)
1109
                                                end);
1110
                                        end);
1111
                                end;
1112
                        end;
1113
                        Main();
1114
                end;
1115
        end);
1116
end);
1117
 
1118
NewCommand("Commands","Lists commands",1,{"cmds","commands"},{"rank","cmd"},function(Message,Flags,Player,PlayerRank)
1119
        function Ranks(Player)
1120
                local Player=Player;
1121
                wait(DestroyTablets(Player));
1122
                for i,v in pairs(Core.Ranks) do
1123
                        Colours={"White","Dusty Rose","Bright green","Bright blue","Bright yellow","Toothpaste","Pink","Bright violet"};
1124
                        AddPart("Rank "..i,Colours[i],Player,function()
1125
                                wait(DestroyTablets(Player));
1126
                                for a,b in pairs(Core.Commands) do
1127
                                        if b.Rank==tonumber(i) then --{Name=Name,Desc=Desc,Rank=Rank,Calls=Calls,Flags=Flags,Function=Func}
1128
                                                AddPart(b.Name,Colours[i],Player,function()
1129
                                                        wait(DestroyTablets(Player));
1130
                                                        AddPart("Min Rank : "..b.Rank,"Bright violet",Player,nil);
1131
                                                        AddPart("Name : "..b.Name,Colours[i],Player,nil);
1132
                                                        AddPart("Calls : "..string.gsub(unpack(b.Calls)," ","; "),"Royal purple",Player,nil);
1133
                                                        pcall(function() AddPart("Flags : "..string.gsub(unpack(b.Flags)," ","; "),"Teal",Player,nil) end);
1134
                                                        AddPart("Description : "..b.Desc,"Sand green",Player,nil);
1135
                                                        AddPart("Back","Bright red",Player,function()
1136
                                                                Ranks(Player);
1137
                                                        end)
1138
                                                end);
1139
                                        end;
1140
                                end;
1141
                                AddPart("Back","Bright red",Player,function()
1142
                                        Ranks(Player);                                         
1143
                                end)
1144
                        end)   
1145
                end;
1146
                AddPart("Your Rank : "..Core.Players[Player.Name].Rank,"Dark green",Player,function() end)
1147
        end;
1148
        Ranks(Player);
1149
end);
1150
                                       
1151
NewCommand("Remove/Stop/Kill","Stops Prometheus",7,{"remove","nos"},{},function(Message,Flags,Player,PlayerRank)
1152
        pcall(function()
1153
                AddPart("[Prometheus]\nPrometheus is shutting down, please wait...","Bright green",Player,nil)
1154
                wait(3);
1155
                script:Destroy();
1156
        end);
1157
end);
1158
 
1159
NewCommand("Explore","Sweep scans the game",5,{"explore","e"},{},function(Message,Flags,Player,PlayerRank)
1160
        local Search
1161
        local List
1162
        local ObjectFunctions = (function()
1163
                local NewData = {}     
1164
                for ClassName, Data in next, {
1165
                        Player = {
1166
                                Kick = function(Player)
1167
                                        Core.Packets.Kick(Player)
1168
                                end
1169
                        };
1170
                        ["Part,WedgePart,Script,Model"] = {
1171
                                Destroy = function(Self,Object)
1172
                                        if Object ~= script then
1173
                                                return Self.Destroy(Object);
1174
                                        else
1175
                                                return AddPart("Can not destroy script","Really red",Player,nil);
1176
                                        end
1177
                                end;
1178
                                Remove = function(Self,Object)
1179
                                        return Self.Destroy(Object);                                                   
1180
                                end;
1181
                        };
1182
                } do
1183
                        for NewClassName in tostring(ClassName):gmatch("[^,]+") do
1184
                                NewData[NewClassName] = Data;
1185
                        end;
1186
                end;
1187
                return NewData
1188
        end)()
1189
        function List(Object)
1190
                DestroyTablets(Player);
1191
                Object = Object or pcall(AddPart,"Can not explore out of DataModel","Really red",Player,nil) and game;
1192
                if ObjectFunctions[Object.ClassName] then
1193
                        AddPart("View functions","Toothpaste",Player,function()
1194
                                DestroyTablets(Player);
1195
                                for Name, Function in next, ObjectFunctions[Object.ClassName] do
1196
                                        AddPart(Name,"Toothpaste",Player,function()
1197
                                                pcall(Function, Object);
1198
                                        end);
1199
                                end;
1200
                                AddPart("Back","Really red",Player,function()
1201
                                        List(Object);
1202
                                end);
1203
                        end);
1204
                else
1205
                        AddPart("No functions found","Really red",Player,nil);
1206
                end;
1207
                AddPart("Explore: "..tostring(Object),"Toothpaste",Player,function()
1208
                        Search(Object);
1209
                        AddPart("View settings","Really red",Player,function()
1210
                                List(Object);
1211
                        end);
1212
                end);
1213
                AddPart("View parent","Really red",Player,function()
1214
                        List(Object.Parent);
1215
                end);
1216
        end;
1217
        function Search(Parent)
1218
                DestroyTablets(Player);
1219
                for _, v in pairs(Parent:GetChildren()) do
1220
                        pcall(AddPart,tostring(v),"Toothpaste",Player,function()
1221
                                List(v);
1222
                        end);
1223
                end;
1224
        end;
1225
        List(game);
1226
end)
1227
 
1228
NewCommand("Execute","Executes/Compiles Lua Code",1,{"exe"},{"http"},function(Message,Flags,Player,PlayerRank)
1229
        local Source = Message;
1230
        if Flags["http"] then
1231
                local success,error = ypcall(function() game:GetService("HttpService"):GetAsync(Flags["http"][1]:sub(2)) end);
1232
                if not success then
1233
                        return AddPart("There was an error while loading your script.","Really red",Player,nil);
1234
                end;
1235
                Source = Core.Services.HttpGet(Flags["http"][1]:sub(2))
1236
        end
1237
        if next(Flags) == nil then
1238
                Source = Message;
1239
        end;
1240
        local game=game;
1241
        local error=error;
1242
        local print=print;
1243
        local ypcall=ypcall;
1244
        local pcall=pcall;
1245
        local Spawn=Spawn;
1246
        local coroutine=coroutine;
1247
        local setmetatable=setmetatable;
1248
        local loadstring=loadstring;
1249
        local getmetatable=getmetatable;
1250
        local setfenv=setfenv;
1251
        local getfenv=getfenv;
1252
        local env = {};
1253
        local envs = {};
1254
        local newproxy=newproxy;
1255
        Execute,Error=loadstring(tostring(Source),"[Prometheus Execute]");
1256
       
1257
        local scriptS = newproxy(true);
1258
        local meta = getmetatable(scriptS);
1259
                                               
1260
        meta.__metatable=getmetatable(script);
1261
                                               
1262
        function meta:__tostring()
1263
                return tostring(script);
1264
        end;
1265
                       
1266
        function getmember(item,index)
1267
                return item[index];
1268
        end;
1269
                               
1270
        function setmember(item,index,value)
1271
                item[index]=value;
1272
        end;
1273
                                               
1274
        function meta:__index(index)
1275
                local suc,res=pcall(getmember,script,index);
1276
                if(not suc)then
1277
                        error(index..' is not a valid member of Script',2);
1278
                else
1279
                        if index:lower() == "destroy" then
1280
                                return function()
1281
                                        error'You cannot destroy this script';                                 
1282
                                end;
1283
                        elseif index:lower() == "remove" then
1284
                                return function()
1285
                                        error'You cannot remove this script';
1286
                                end;
1287
                        end;
1288
                        if type(res)=='function' then
1289
                                return function(self,...)
1290
                                                return self[index](self,...)
1291
                                end;
1292
                        else
1293
                                return res;
1294
                        end;
1295
                end;
1296
        end;
1297
                                               
1298
        function meta:__newindex(index,value)
1299
                suc,res=pcall(setmember,script,index,value);
1300
                return scriptS;
1301
        end;
1302
                                               
1303
        for i,v in next, {
1304
            ["restart"]=function()
1305
                --Future function.
1306
            end;
1307
                ["print"]=function(...)
1308
                        local Data={...};
1309
                        for CurrentEntry,Table_Pos in next,Data do
1310
                                if not pcall(function()Data[CurrentEntry]=tostring(Table_Pos);end)then
1311
                                        Data[CurrentEntry]='__TOSTRING_EDIT';
1312
                                end;
1313
                        end;
1314
                        AddPart(tostring(table.concat(Data,' ')),'White',Player,nil);
1315
                end;
1316
                ["error"]=function(...)
1317
                        local Data={...};
1318
                        for CurrentEntry,Table_Pos in next,Data do
1319
                                if not pcall(function()Data[CurrentEntry]=tostring(Table_Pos);end)then
1320
                                        Data[CurrentEntry]='__TOSTRING_EDIT';
1321
                                end;
1322
                        end;
1323
                        AddPart(tostring(table.concat(Data,' ')),'Really red',Player,nil);
1324
                end;
1325
                ["warn"]=function(...)
1326
                        local Data={...};
1327
                        for CurrentEntry,Table_Pos in next,Data do
1328
                                if not pcall(function()Data[CurrentEntry]=tostring(Table_Pos);end)then
1329
                                        Data[CurrentEntry]='__TOSTRING_EDIT';
1330
                                end;
1331
                        end;
1332
                        AddPart(tostring(table.concat(Data,' ')),'Bright orange',Player,nil);
1333
                end;
1334
                ['loadstring']=function(str,...)
1335
                        if str == nil then return error("Argument #1 (string expected, got nil)") end
1336
                        local rtn={};
1337
                        local fArgs={...};
1338
                        local succ,res=ypcall(function()
1339
                                rtn={loadstring(str,unpack(fArgs))};
1340
                        end);
1341
                        if(not succ)then return Execute.error(res) end;
1342
                        local func,err=unpack(rtn);
1343
                        if(func)then
1344
                                func=setfenv(func,NewEnvironment);
1345
                        end;
1346
                        return func,err
1347
                end;
1348
                Core = "Hide";
1349
                Alert = "Hide";
1350
                owner = Player;
1351
                NewEnvironment = "Hide";
1352
                FindPlayer = "Hide";
1353
                NewCommand = "Hide";
1354
                DestroyTablets = "Hide";
1355
                CheckBanned = "Hide";
1356
                OnChatted = "Hide";
1357
                Execute = "Hide";
1358
                CLerp = "Hide";
1359
                ["script"] = scriptS;
1360
        }do
1361
        for str in i:gmatch'([^,]+)'do
1362
                env[str]=v;
1363
        end;
1364
end;
1365
       
1366
        NewEnvironment = {
1367
                _SANDBOX = "PK_SANDBOX v1.0";                          
1368
        };
1369
        if (Execute) then
1370
                --setfenv(0,NewEnvironment);
1371
                        local Success,Result=ypcall(setfenv(Execute,setmetatable(NewEnvironment,{
1372
                                __index=function(Self,Index)
1373
                                        local Return = env[Index];
1374
                                        local OldReturn = getfenv()[Index];
1375
                                        if Return == "Hide" then
1376
                                                return Core.Data.Fakes._G[Index];
1377
                                        elseif Return == nil then
1378
                                                return OldReturn;
1379
                                        else
1380
                                                return Return;
1381
                                        end;
1382
                                end;
1383
                                __metatable="Locked!";
1384
                        })));
1385
                if (not Success) then
1386
                        AddPart(Result,"Really red",Player,nil);               
1387
                end;
1388
        else
1389
                AddPart(Error,"Really red",Player,nil);
1390
        end;
1391
end);
1392
 
1393
for i,v in pairs(game:GetService("Players"):GetPlayers()) do
1394
        ConnectPlayer(v);
1395
        if Core.Cloud ~= nil then      
1396
                AddPart("The Cloud is active","Bright blue",v,nil);                            
1397
        end
1398
end;
1399
 
1400
game:GetService("Players").PlayerAdded:connect(function(Player)
1401
        ConnectPlayer(Player);
1402
        Alert(Player.Name.." has joined the game!");
1403
end);
1404
 
1405
game:GetService("Players").PlayerRemoving:connect(function(Player)
1406
        DestroyTablets(Player);
1407
        Alert(Player.Name.." has left the game!");
1408
end);