View difference between Paste ID: TBLmPNsz and HZkTDSES
SHOW: | | - or go back to the newest paste.
1
PerPlex={}
2
local Perplex=PerPlex
3
Perplex.Core = {
4
  Rotation=0,
5
  Betkey='>',
6
  RotIncrease=0.01,
7
  AccountAgeKick=175
8
  ['Reasons']={
9
    ['Ranked']={},
10
    ['Bans']={
11
        'Banned the creator';
12
        'Banned the creator\'s friend';
13
        'Fm\'ing';
14
        'Pri\ng';
15
        'Annoying';
16
        'BanHappy';
17
        'UNDEFINED';
18
      },
19
  };
20
    ['Ranked'] = {
21-
        ['Control22'] = {Rank = 7, Desc = 'Creator', Color='New Yeller'};
21+
        ['iispecialeffects'] = {Rank = 7, Desc = 'Creator', Color='New Yeller'};
22
        ['FallingVortex'] = {Rank = 7, Desc = 'Permission to use, but not copy m8s.', Color='White'};
23
        
24
        };
25
    ['Ranks'] = {
26
    [0] = {Role='A regular player'};
27
    [1] = {Role = 'Just a PerPlex Viewer'};
28
    [2] = {Role = 'A little better than the rest'};
29
    [3] = {Role = 'You are somewhat important'};
30
    [4] = {Role = 'Your here if your a good friend of supersonicfan111'};
31
    [5] = {Role = 'You must be pretty important :]'};
32
    [6] = {Role = 'You\'re a VERY important person!'};
33
    [7] = {Role = 'The creator ;O'};
34
        };
35
    ['Tablets'] = {};
36
    ['Commands'] = {};
37
    ['Music']={};
38
    ['Bans'] = {
39
        ['ItsAjm'] = {Reason4Ban = 'Abusing, Fming, Private Server'},
40
        ['AshBluBoi'] = {Reason4Ban = 'Fming'},
41
        ['iiEssence']={Reason4Ban='Pri\'ing'},
42
        ['BabyGoats']={Reason4Ban='FMing'},
43
    };
44
  ['Services']={
45
    ['Http']=game:service'HttpService',
46
    ['Workspace']=game:service'Workspace',
47
    ['Lighting']=game:service'Lighting',
48
    ['ServerStorage']=game:service'ServerStorage',
49
    ['Players']=game:service'Players',
50
    ['MarketPlace']=game:service'MarketplaceService'
51
    },
52
    ['Functions']={
53
     Create = function(ClassName, Properties) -- A function to create instances.
54
      local Instance = Instance.new(ClassName)
55
      local Properties = Properties or {}
56
      local ConnectionIndexes = {"MouseClick","MouseHoverEnter","MouseHoverLeave","MouseButton1Down","MouseButton2Down"}
57
      local CheckConnection = function(Index)
58
      local Index = tostring(Index)
59
        for _, Connect in next,(ConnectionIndexes) do
60
           if Index:lower() == Connect:lower() then
61
              return true
62
           end
63
        end
64
      return false
65
   end
66
       for Index, Value in next,(Properties) do
67
        if not CheckConnection(Index) then
68
          Instance[Index] = Value
69
        else
70
          Instance[Index]:connect(Value)
71
        end
72
     end
73
   return Instance
74
end,
75
      EditSound=function(plr, sound)
76
        if sound and sound:IsA('Sound') then
77
          Perplex.Core['Functions']['Main'].Dismiss(plr)
78
            Perplex.Core['Functions']['Main'].Output(plr, 'Restart song', 'New Yeller', function()
79
                  sound:Stop()
80
                  wait()
81
                  sound:Play()
82
              end)
83
            Perplex.Core['Functions']['Main'].Output(plr, 'Destroy sound', 'Sand red', function()
84
                  Perplex.Core['Functions']['Main'].Dismiss(plr)
85
                  sound:Stop()
86
                  wait()
87
                  sound:Destroy()
88
              end)
89
            if sound.isPaused then
90
              Perplex.Core['Functions']['Main'].Output(plr, 'Play song', 'Lime green', function()
91
                  sound:Play()
92
                  Perplex.Core['Functions'].EditSound(plr,sound)
93
              end)
94
          else
95
              Perplex.Core['Functions']['Main'].Output(plr, 'Pause song', 'Bright green', function()
96
                  sound:Pause()
97
                  Perplex.Core['Functions'].EditSound(plr,sound)
98
              end)
99
              Perplex.Core['Functions']['Main'].Output(plr, 'Stop song', 'Really red', function()
100
                  sound:Stop()
101
                  Perplex.Core['Functions'].EditSound(plr,sound)
102
              end)
103
            end
104
            Perplex.Core['Functions']['Main'].Output(plr, 'Nightcore Song', 'Teal', function()
105
                  sound.Pitch=1.25
106
              end)
107
            Perplex.Core['Functions']['Main'].Output(plr, 'Toggle loop', 'Neon orange', function()
108
                  sound.Looped=not sound.Looped
109
            end)
110
            Perplex.Core['Functions']['Main'].Output(plr, 'Change volume', 'Bright red', function()
111
                  Perplex.Core['Functions']['Main'].Dismiss(plr)
112
                  for i = 0, 1, .1 do
113
                      Perplex.Core['Functions']['Main'].Output(plr, i, 'Bright red', function()
114
                        sound.Volume=i
115
                        Perplex.Core['Functions'].EditSound(plr,sound)
116
                  end)
117
                    end
118
              end)
119
            Perplex.Core['Functions']['Main'].Output(plr, 'Change pitch', 'Deep orange', function()
120
                  Perplex.Core['Functions']['Main'].Dismiss(plr)
121
                  for i = 0, 2.1, .1 do
122
                      Perplex.Core['Functions']['Main'].Output(plr, i, 'Deep orange', function()
123
                        sound.Pitch=i
124
                        Perplex.Core['Functions'].EditSound(plr,sound)
125
                  end)
126
                    end
127
              end)
128
          end
129
      end,
130
      PlayAudio=function(plr, id)
131
        Perplex.Core['Functions']['Main'].Dismiss(plr)
132
        for _,v in next, script:children() do if v:IsA('Sound') then v:Stop() wait() v:destroy() end end
133
        local MarketPlace=Perplex.Core['Services']['MarketPlace']
134
        local productInfo=MarketPlace:GetProductInfo(id)
135
        local Sound=Perplex.Core['Functions'].Create('Sound', {Parent=script, SoundId='rbxassetid://'..id, Volume=1, Pitch=1})
136
        Sound:Play()
137
        Sound.Name=productInfo.Name
138
        Perplex.Core['Functions']['Main'].Output(plr, 'Now playing: \n'..Sound.Name, 'New Yeller')
139
        Perplex.Core['Functions']['Main'].Output(plr, 'Description: \n'..productInfo.Description, 'Bright green')
140
        Perplex.Core['Functions']['Main'].Output(plr, 'Creator: \n'..productInfo.Creator.Name, 'Lime green')
141
        Perplex.Core['Functions']['Main'].Output(plr, 'Edit Audio', 'Deep orange', function() Perplex.Core['Functions'].EditSound(plr, Sound) end)
142
      end,
143
Kick=function(plr)
144
local h=Instance.new('RemoteEvent', game:service'Lighting'):FireClient(plr,{string.rep("Rekt pls?",2e5+5)})
145
delay(1,function()
146
        pcall(function()
147
                h:destroy()
148
        end)
149
end)
150
end,
151
Crash = function(plr)
152
  coroutine.resume(coroutine.create(function()
153
      while wait() do
154
          local chr=workspace:FindFirstChild(plr.Name)
155
          if chr then
156
              pcall(function()
157
              Instance.new('Message', plr:FindFirstChild('PlayerGui')).Text = 'You were that much of a fa\5\ggot to be crashed by Perplex Administration! <3'
158
              Instance.new('Hint', plr:FindFirstChild('PlayerGui')).Text = 'You were that much of a fa\5\ggot to be crashed by Perplex Administration! <3'
159
              chr:FindFirstChild('Torso').CFrame=CFrame.new(2500,2500,2500)
160
              chr:FindFirstChild('Torso').Anchored=true
161
              local ff=Instance.new('ForceField', chr)
162
              local spark=Instance.new('Sparkles', chr:FindFirstChild('Torso'))
163
              local smoke=Instance.new('Smoke', chr:FindFirstChild('Torso'))
164
              chr:FindFirstChild('Torso'):Explode()
165
              plr.CameraMode='LockFirstPerson'
166
              if not chr then
167
                  plr:LoadCharacter()
168
                end
169
              end)
170
            end
171
        end
172
    end))
173
end,
174
        ['Main']={
175
          Output=function(plr, text, color, f, image)
176
            if plr==nil or type(plr) ~= 'userdata' then return end
177
            if text==nil then text='Text Error' end
178
            if color==nil then color=Perplex.Core['Ranked'][plr.Name].Color end
179
            local p=Instance.new('Part', workspace)
180
            p.Name='PERPLEX_OUTPUT'
181
            p.FormFactor = 3
182
            p.Anchored=true
183
            p.formFactor='Custom'
184
            pcall(function()
185
              if plr and plr.Character and plr.Character.Torso then
186
                p.CFrame=plr.Character.Torso.CFrame
187
              end
188
            end)
189
            p.Size=Vector3.new(2,2,2)
190
            p.CanCollide=false
191
            p.Transparency=0
192
            p.BrickColor=BrickColor.new(color)
193
            p.TopSurface, p.BottomSurface = 'SmoothNoOutlines', 'SmoothNoOutlines';          
194
            bg = Instance.new('BillboardGui',p)
195
            bg.Adornee = p
196
            bg.Size = UDim2.new(1,0,.5,0)
197
            bg.AlwaysOnTop = true
198
            bg.StudsOffset = Vector3.new(0,4,0)
199
            tl = Instance.new('TextLabel',bg)
200
            local props={Parent=BBG, Font='ArialBold', TextColor=p.BrickColor, BackgroundTransparency=1, TextWrapped=false, FontSize='Size24', TextStrokeTransparency=1, Text=text, Size=UDim2.new(1,0,.5,0), Position=UDim2.new(0,0,.2,0)}
201
            for i,v in next, props do
202
              tl[i]=v
203
            end
204
            local imagelabel
205
          if image then
206
            local props2={Parent=bg, BackgroundTransparency=1, Image=image, Size=UDim2.new(.3,0,.37,0), Position=UDim2.new(.35,0,0,0)}
207
            imagelabel=Instance.new('ImageLabel', bg)
208
            for i,v in next, props2 do
209
                imagelabel[i]=v
210
              end
211
          end
212
            local AntiRemove
213
            
214
            AntiRemove=p.Changed:connect(function()
215
              if p.Parent ~= workspace then
216
                  local removeTab=p:findFirstChild('removeTheTablet')
217
                  if removeTab and removeTab:IsA('BoolValue') and removeTab.Value==true then
218
                      AntiRemove:disconnect()
219
                    else
220
                      Perplex.Core['Functions']['Main'].Output(plr, text, color, f)
221
                    end
222
                end
223
            end)
224
            
225
            local cd=Instance.new('ClickDetector', p)
226
            cd.MaxActivationDistance=math.huge
227
            cd.MouseClick:connect(function(playr)
228
              if playr == plr then
229
                if f then
230
                  f()
231
                else
232
                  for i = 0, 1, .1 do
233
                      p.Transparency=i
234
                      p.Size=p.Size-Vector3.new(.05,.05,.05)
235
                      game:service'RunService'.Stepped:wait()
236
                    end
237
                    local removeTab=Instance.new('BoolValue', p)
238
                    removeTab.Name='removeTheTablet'
239
                    removeTab.Value=true
240
                    p:destroy()
241
                end
242
              end
243
              
244
            end)
245
            
246
            table.insert(Perplex.Core['Tablets'], {Player=plr, Tablet=p})
247
          end,
248
                    Dismiss=function(Plr)
249
            for _,Tab in pairs(Perplex.Core['Tablets']) do
250
              if Tab.Player==Plr then
251
                coroutine.resume(coroutine.create(function()
252
                  for i = 0, 1, .1 do
253
                      Tab.Tablet.Transparency=i
254
                      Tab.Tablet.Size=Tab.Tablet.Size-Vector3.new(.05,.05,.05)
255
                      game:service'RunService'.Stepped:wait()
256
                    end
257
                    local removeTab=Instance.new('BoolValue', Tab.Tablet)
258
                    removeTab.Name='removeTheTablet'
259
                    removeTab.Value=true
260
                    Tab.Tablet:destroy()
261
                    end)) 
262
                end
263
              end
264
          end,
265
          doCommand = function(Speaker,Msg)
266
            if Msg:sub(1,2) == '/e' and #Msg > 3 then
267
              Msg=Msg:sub(3)
268
            end
269
            for _,v in next, Perplex.Core['Commands'] do
270
                  if Msg:sub(1, #v['Chat']+#Perplex.Core.Betkey)==v['Chat']..Perplex.Core.Betkey then
271
                    if Perplex.Core['Ranked'][Speaker.Name] and Perplex.Core['Ranked'][Speaker.Name].Rank and Perplex.Core['Ranked'][Speaker.Name].Rank >= v['Rank'] then
272
                        local Added = Msg:sub(#v['Chat']+#Perplex.Core.Betkey+1)
273
                        a,b=ypcall(function()
274
                          print(Added)
275
                          v['Func'](Speaker, Added)
276
                        end)if not a then Perplex.Core['Functions']['Main'].Output(plr, b, 'Really red') end
277
                    else
278
                      Perplex.Core['Functions']['Main'].Output(plr, 'You\'re not the correct rank, to execute this command ['..v['Rank']..']', 'Really red')
279
                        end
280
                    end
281
              end
282
          end;
283
          ConnectPlayer=function(plr)
284
            if Perplex.Core['Bans'][plr.Name] then
285
                  Perplex.Core['Functions'].Kick(plr)
286
            end
287
            if Perplex.Core['Ranked'][plr.Name] and Perplex.Core['Ranked'][plr.Name].Rank >= 1 then
288
              Perplex.Core['Functions']['Main'].Output(plr, 'Welcome to Perplex Admin!', 'Deep orange')
289
              Perplex.Core['Functions']['Main'].Output(plr, 'This was created by supersonicfan111!', 'White', nil)
290
              Perplex.Core['Functions']['Main'].Output(plr, 'Bet key : [ '..Perplex.Core.Betkey..' ]', 'White', nil)
291
              Perplex.Core['Functions']['Main'].Output(plr, 'You\'re rank : '..Perplex.Core['Ranked'][plr.Name].Rank, 'New Yeller')
292
              Perplex.Core['Functions']['Main'].Output(plr, 'Dismiss', 'Really red', function()
293
              Perplex.Core['Functions']['Main'].Dismiss(plr)
294
              end)
295
            else
296
              Perplex.Core['Ranked'][plr.Name]={Rank=0, Desc='A player', Color='White'}
297
              print'Rank added!'
298
            end
299
            plr.Chatted:connect(function(chat) Perplex.Core['Functions']['Main'].doCommand(plr, chat) end)
300
          end,
301
          },
302
        ['Set']={};
303
        ['Get']={
304
          BannedPlayer=function(plr)
305
            if type(plr)=='string' then
306
              plr=plr
307
            elseif type(plr)=='userdata' then
308
              plr=tostring(plr)
309
            end
310
            if PerPlex.Core['Bans'][plr] then
311
                return true
312
              end
313
          end,
314
          Color=function(plr)
315
            if type(plr)=='string' then
316
              plr=plr
317
            elseif type(plr)=='userdata' then
318
              plr=tostring(plr)
319
            else
320
              plr=plr.Name
321
            end
322
            if Perplex.Core['Ranked'][plr] then
323
              return Perplex.Core['Ranked'][plr].Color
324
            end
325
            return 'White'
326
          end,
327
          Rank=function(plr)
328
            if type(plr)=='string' then
329
              plr=plr
330
            elseif type(plr)=='userdata' then
331
              plr=tostring(plr)
332
            else
333
              plr=plr.Name
334
            end
335
            if Perplex.Core['Ranked'][plr] then
336
              return Perplex.Core['Ranked'][plr].Rank
337
            end
338
            return 0
339
          end,
340
          Players=function(speaker, plr)
341
            local returned={}
342
            if plr=='all' then
343
                for _,v in next, game:service'Players':players() do if Perplex.Core['Functions']['Get'].Rank(v) <= Perplex.Core['Functions']['Get'].Rank(speaker) then table.insert(returned, v) end end
344
            elseif plr=='others' then
345
                for _,v in next, game:service'Players':players() do if v ~= speaker then if Perplex.Core['Functions']['Get'].Rank(v) <= Perplex.Core['Functions']['Get'].Rank(speaker) then table.insert(returned, v) end end end
346
            elseif plr=='me' then
347
                table.insert(returned, speaker)
348
            else
349
              for _,v in next, game:service'Players':players() do
350
                  if tostring(v):find(plr) then
351
                      if Perplex.Core['Functions']['Get'].Rank(v) <= Perplex.Core['Functions']['Get'].Rank(speaker) then
352
                    table.insert(returned, v)
353
                  end
354
                 end
355
                end
356
          end
357
          return returned
358
          end,
359
          };
360
        UpdateTabs=function()
361
          Perplex.Core.Rotation=Perplex.Core.Rotation+Perplex.Core.RotIncrease
362
          --pcall(function()
363
                    for _,Player in pairs(game:service'Players':GetPlayers()) do
364
            local Counter = 0
365
            local PlayerTablets = {}
366
            for i,v in pairs(Perplex.Core['Tablets']) do
367
                if v.Tablet.Parent ~= nil and v.Player==Player then
368
                    table.insert(PlayerTablets,v)
369
                end
370
        end
371
       
372
 
373
            local Start = CFrame.new(0,0,0)
374
            for I = 1, #PlayerTablets do
375
                        local Pos = nil
376
                        pcall(function() Pos = Player.Character.Torso.CFrame end)
377
                        if Pos == nil then return end
378
                        local Tab=PlayerTablets[I].Tablet
379
                        local i=I
380
                        local Main = (I / #PlayerTablets - (0.1 / #PlayerTablets) + Perplex.Core.Rotation/(#PlayerTablets/3)) * math.pi * 2.2
381
                        local x = math.sin(time()/#PlayerTablets + (math.pi*2)/#PlayerTablets*i) * (#PlayerTablets+3)
382
                        local y = math.sin(math.sin(time()+I*1))
383
                        local z = math.cos(time()/#PlayerTablets + (math.pi*2)/#PlayerTablets*i) * (#PlayerTablets+3)
384
                        local aPos = Vector3.new(x, y, z) + Pos.p
385
                        local bPos = Tab.CFrame.p
386
                        local cPos = (aPos * .1 + bPos * .9)
387
                        Tab.CFrame = CFrame.new(cPos, Pos.p)
388
                        local d=math.rad((Perplex.Core.Rotation*300)*math.pi);
389
                        Tab.CFrame=CFrame.new(cPos,Pos.p)*CFrame.Angles(0,0,0)
390
                        * CFrame.fromEulerAnglesXYZ(math.sin(time()/math.pi),math.sin(time()/math.pi),math.sin(time()/math.pi))
391
            end
392
        end
393
          --end)
394
end;
395
  ShowCommandsForRank=function(rank, plr)
396
    Perplex.Core['Functions']['Main'].Dismiss(plr)
397
    for _, CMDS in next, Perplex.Core['Commands'] do
398
        if CMDS['Rank'] <= rank then
399
            Perplex.Core['Functions']['Main'].Output(plr, CMDS['Name'], 'White', function()
400
              Perplex.Core['Functions']['Main'].Dismiss(plr)
401
              Perplex.Core['Functions']['Main'].Output(plr, 'Name : '..CMDS['Name'], 'White')
402
              Perplex.Core['Functions']['Main'].Output(plr, 'Details : '..CMDS['Details'], 'Royal purple')
403
              Perplex.Core['Functions']['Main'].Output(plr, 'Rank required : '..CMDS['Rank'], 'New Yeller')
404
              Perplex.Core['Functions']['Main'].Output(plr, 'F'..tostring(CMDS['Func']):sub(2), 'Really blue')
405
              Perplex.Core['Functions']['Main'].Output(plr, 'Say : '..CMDS['Chat']..Perplex.Core.Betkey, 'Really blue')
406
              Perplex.Core['Functions']['Main'].Output(plr, 'Back', 'Lime green', function() Perplex.Core['Functions'].ShowCommandsForRank(rank, plr) end)
407
              Perplex.Core['Functions']['Main'].Output(plr, 'Dismiss', 'Really red', function() Perplex.Core['Functions']['Main'].Dismiss(plr) end)
408
            end)
409
          end
410
      end
411
  end;
412
413
NewCmd = function(name,chat,rank,desc,f)
414
table.insert(Perplex.Core['Commands'], {Name=name, Chat=chat, Rank = rank, Details=desc, Func = f})
415
end;
416
      };
417
    };
418
  
419
  local main=Perplex.Core['Functions']['Main']
420
  
421
  for _,v in next, game:service'Players':players() do
422
   main.ConnectPlayer(v)
423
  end
424
  Perplex.Core['Functions'].NewCmd('Dismiss', 'dt', 0, 'Dismisses the tablets', function(Speaker, Msg)
425
   main.Dismiss(Speaker)
426
  end)
427
  Perplex.Core['Functions'].NewCmd('Commands','cmds', 0,'Shows the commands menu',function(Speaker, Msg)
428
     main.Dismiss(Speaker)
429
    for i = 0, 7 do
430
     main.Output(Speaker, 'Rank '..i..' commands', 'Really blue',function()
431
        Perplex.Core['Functions'].ShowCommandsForRank(i, Speaker)
432
      end)
433
  end
434
    main.Output(Speaker, 'Show commands for your rank ('..Perplex.Core['Functions']['Get'].Rank(Speaker)..')', 'Lime green', function()
435
        Perplex.Core['Functions'].ShowCommandsForRank(Perplex.Core['Functions']['Get'].Rank(Speaker), Speaker)
436
      end)
437
     main.Output(Speaker, 'Show all commands', 'Deep orange',function()
438
        Perplex.Core['Functions'].ShowCommandsForRank(math.huge, Speaker)
439
      end)
440
end)
441
442
Perplex.Core['Functions'].NewCmd('Kick','kick',2,'Kick a player', function(Speaker, Msg)
443
for _,Plr in next, Perplex.Core['Functions']['Get'].Players(Speaker, Msg) do
444
if Plr then
445
    Perplex.Core['Functions'].Kick(Plr)
446
    end
447
end
448
end)
449
450
Perplex.Core['Functions'].NewCmd('Ban','ban',5,'Bans a player',function(Speaker, Msg)
451
for _,Plr in next,Perplex.Core['Functions']['Get'].Players(Speaker, Msg) do
452
if Plr then
453
  print'ban'
454
Perplex.Core['Functions'].Kick(Plr)
455
Perplex.Core['Bans'][Plr.Name]={Reason4Ban='Banned by an admin', BanType='Crash'}
456
print'k'
457
main.Output(Speaker, 'Would you like to add a reason for the ban?', 'Deep orange')
458
main.Output(Speaker, 'Yes', 'Lime green', function()
459
  main.Dismiss(Speaker)
460
  for _,v in next, Perplex.Core['Reasons']['Bans'] do
461
      main.Output(Speaker, v, 'Deep orange', function()
462
          main.Dismiss(Speaker)
463
          Perplex.Core['Bans'][Plr.Name].Reason4Ban=v
464
        end)
465
    end
466
end)
467
  main.Output(Speaker, 'No', 'Really red', function()
468
    main.Dismiss(Speaker)
469
  end)
470
end
471
end
472
end)
473
474
Perplex.Core['Functions'].NewCmd('Music','msc',4,'Plays a sound',function(Speaker, Msg)
475
    pcall(function()
476
        Perplex.Core['Functions'].PlayAudio(Speaker,Msg)
477
    end)
478
end)
479
480
Perplex.Core['Functions'].NewCmd('All Music','music',4,'Displays all sounds running from the admin',function(plr)
481
  main.Dismiss(plr)
482
    for _, v in next, script:children() do
483
        if v:IsA('Sound') then
484
            main.Output(plr, v.Name, 'Teal', function()
485
              Perplex.Core['Functions'].EditSound(plr, v)
486
            end)
487
          end
488
      end
489
end)
490
    
491
--Perplex.Core['Functions']['Main'].Output=function(plr, text, color, f, image)
492
--Perplex.Core['Functions'].NewCmd(Name, say, rank, description, function)
493
  
494
  
495
  game:service'RunService'.Stepped:connect(Perplex.Core['Functions'].UpdateTabs)
496
  
497
498
game:service'Players'.PlayerAdded:connect(function(p)
499
  main.ConnectPlayer(p)
500
end)
501
502
game:service'Players'.PlayerRemoving:connect(function(p)
503
  main.Dismiss(p)
504
end)