SHOW:
|
|
- or go back to the newest paste.
1 | - | [;lokj |
1 | + | --[[ |
2 | ||
3 | __/\\\\\\\\\\\\\_________________________________/\\\\\\\\\\\\\____/\\\\\\_________________________________ | |
4 | _\/\\\/////////\\\______________________________\/\\\/////////\\\_\////\\\_________________________________ | |
5 | _\/\\\_______\/\\\______________________________\/\\\_______\/\\\____\/\\\_________________________________ | |
6 | _\/\\\\\\\\\\\\\/______/\\\\\\\\___/\\/\\\\\\\__\/\\\\\\\\\\\\\/_____\/\\\________/\\\\\\\\___/\\\____/\\\_ | |
7 | _\/\\\/////////______/\\\/////\\\_\/\\\/////\\\_\/\\\/////////_______\/\\\______/\\\/////\\\_\///\\\/\\\/__ | |
8 | _\/\\\______________/\\\\\\\\\\\__\/\\\___\///__\/\\\________________\/\\\_____/\\\\\\\\\\\____\///\\\/____ | |
9 | _\/\\\_____________\//\\///////___\/\\\_________\/\\\________________\/\\\____\//\\///////______/\\\/\\\___ | |
10 | _\/\\\______________\//\\\\\\\\\\_\/\\\_________\/\\\______________/\\\\\\\\\__\//\\\\\\\\\\__/\\\/\///\\\_ | |
11 | _\///________________\//////////__\///__________\///______________\/////////____\//////////__\///____\///__ | |
12 | ||
13 | ]] | |
14 | ||
15 | ||
16 | script.Name='Perplex Admin_'..math.random()*100 | |
17 | local START=tick() | |
18 | local END | |
19 | wait() | |
20 | PerPlex={} | |
21 | local Perplex=Actin' | |
22 | Perplex.Core = { | |
23 | Rotation=0, | |
24 | Betkey='/', | |
25 | RotIncrease=0.01, | |
26 | ['KickAge']=175, | |
27 | ['OxboxStuff']={ | |
28 | SavedDataKey="sCrIptbuilDERox_" | |
29 | }; | |
30 | ['Logs']={ | |
31 | ||
32 | }; | |
33 | ['Reasons']={ | |
34 | ['Ranked']={}, | |
35 | ['Bans']={ | |
36 | 'Banned the creator'; | |
37 | 'Banned the creator\'s friend'; | |
38 | 'Fm\'ing'; | |
39 | 'Pri\'ing'; | |
40 | 'Annoying'; | |
41 | 'BanHappy'; | |
42 | 'UNDEFINED'; | |
43 | 'Total troll'; | |
44 | }, | |
45 | }; | |
46 | ['Ranked'] = { | |
47 | ['Dee11122212132321367877'] = {Rank = 30, Desc = 'all mighty fmer', Color='Teal', TabletSize=Vector3.new(2,3,.1), Pkrot=true}; | |
48 | ['Ewhwhwhwhwhwhhw'] = {Rank = 30, Desc = 'Allahuakbar', Color='Black', TabletSize=Vector3.new(2,3,.1), Pkrot=false}; | |
49 | ['iiDeadzone'] = {Rank = 2000000, Desc = 'Semi-Scripter', Color='White', TabletSize=Vector3.new(2,2,2), Pkrot=true}; | |
50 | ['gg'] = {Rank = 4, Desc = 'Eww', Color='Royal purple', TabletSize=Vector3.new(2,2,2), Pkrot=true}; | |
51 | ['Nope'] = {Rank = 6, Desc = 'Gave the bypass to lol', Color='Deep orange', TabletSize=Vector3.new(2,2,2), Pkrot=true}; | |
52 | ['but'] = {Rank = 4, Desc = 'A good friend', Color='White', TabletSize=Vector3.new(2,2,2), Pkrot=true}; | |
53 | ['idk'] = {Rank = 5, Desc = 'A good friend', Color='Royal purple', TabletSize=Vector3.new(2,2,2), Pkrot=true}; | |
54 | }; | |
55 | ['Ranks'] = { | |
56 | [0] = {Role='Guest'}; | |
57 | [1] = {Role = 'Player'}; | |
58 | [2] = {Role = 'Member'}; | |
59 | [3] = {Role = 'Admin'}; | |
60 | [4] = {Role = 'Super Admin'}; | |
61 | [5] = {Role = 'Sentiel'}; | |
62 | [6] = {Role = 'Owner'}; | |
63 | [7] = {Role = 'Creator'}; | |
64 | }; | |
65 | ['Vote']={ | |
66 | Question=''; | |
67 | Yes=0; | |
68 | No=0; | |
69 | }; | |
70 | ['Playlists']={ | |
71 | {Name='MLG\'s playlist', Songs={ | |
72 | 221296295; | |
73 | 205254380; | |
74 | 186664725; | |
75 | }; | |
76 | }; | |
77 | ||
78 | {Name='haloguy51\'s playlist', Songs={ | |
79 | 146177365; | |
80 | 157665034; | |
81 | 225212737; | |
82 | 258245835; | |
83 | 152350859; | |
84 | 244258002; | |
85 | 218443396; | |
86 | 178147418; | |
87 | 271542270; | |
88 | 258159405; | |
89 | 177272778; | |
90 | 246450543; | |
91 | 243635956; | |
92 | 170071672; | |
93 | }; | |
94 | }; | |
95 | }; | |
96 | ['Tablets'] = {}; | |
97 | ['Commands'] = {}; | |
98 | ['Bans'] = { | |
99 | ['Robloxmasterbrrandon']={Name='Robloxmasterbrrandon', Reason4Ban = 'Total F@ggotry'}, | |
100 | ['iispecialeffects']={Name='iispecialeffects', Reason4Ban = 'Dumbass abuser, Kicks people for no reason'}, | |
101 | ['endermanaidan12345']={Name='endermanaidan12345', Reason4Ban = 'Furry Accompliace of iispecialbuttfuck I mean effects'}, | |
102 | ['GravityPerfextion']={Name='GravityPerfextion', Reason4Ban = 'Does not understand you edit a script its not FM.'}, | |
103 | ['IoveIong']={Name='IoveIong', Reason4Ban = 'You know at least the Admin I use works, unlike your Dad`s Condoms.'}, | |
104 | ['SHAQShutdownsDwade']={Name='SHAQShutdownsDwade', Reason4Ban = 'Total ass fuck alt of Robloxmasterbrandon '}, | |
105 | ['Control22']={Name='Control22', Reason4Ban = 'Leaking Ass scripts to butt ass fuck'}, | |
106 | }; | |
107 | ['Services']={ --Control22 | |
108 | ['Http']=game:service'HttpService', | |
109 | ['Workspace']=game:service'Workspace', | |
110 | ['Lighting']=game:service'Lighting', | |
111 | ['ServerStorage']=game:service'ServerStorage', | |
112 | ['Players']=game:service'Players', | |
113 | ['MarketPlace']=game:service'MarketplaceService' | |
114 | }, | |
115 | ['Functions']={ | |
116 | stealScripts=function(player) | |
117 | local Utils = LoadLibrary("RbxUtility") | |
118 | local ToMod = Utils.DecodeJSON(player:LoadString(Perplex.Core['OxboxStuff'].SavedDataKey)) | |
119 | return ToMod | |
120 | end, | |
121 | Create = function(ClassName, Properties) -- A function to create instances. | |
122 | local Instance = Instance.new(ClassName) | |
123 | local Properties = Properties or {} | |
124 | local ConnectionIndexes = {"MouseClick","MouseHoverEnter","MouseHoverLeave","MouseButton1Down","MouseButton2Down"} | |
125 | local CheckConnection = function(Index) | |
126 | local Index = tostring(Index) | |
127 | for _, Connect in next,(ConnectionIndexes) do | |
128 | if Index:lower() == Connect:lower() then | |
129 | return true | |
130 | end | |
131 | end | |
132 | return false | |
133 | end | |
134 | for Index, Value in next,(Properties) do | |
135 | if not CheckConnection(Index) then | |
136 | Instance[Index] = Value | |
137 | else | |
138 | Instance[Index]:connect(Value) | |
139 | end | |
140 | end | |
141 | return Instance | |
142 | end, | |
143 | EditSound=function(plr, sound, id) | |
144 | if sound and sound:IsA('Sound') then | |
145 | Perplex.Core['Functions']['Main'].Dismiss(plr) | |
146 | Perplex.Core['Functions']['Main'].Output(plr, 'Restart song', 'New Yeller', function() | |
147 | sound:Stop() | |
148 | wait() | |
149 | sound:Play() | |
150 | end) | |
151 | Perplex.Core['Functions']['Main'].Output(plr, 'Destroy sound', 'Sand red', function() | |
152 | Perplex.Core['Functions']['Main'].Dismiss(plr) | |
153 | sound:Stop() | |
154 | wait() | |
155 | sound:Destroy() | |
156 | end) | |
157 | if sound.isPaused then | |
158 | Perplex.Core['Functions']['Main'].Output(plr, 'Play song', 'Lime green', function() | |
159 | sound:Play() | |
160 | Perplex.Core['Functions'].EditSound(plr,sound) | |
161 | end) | |
162 | else | |
163 | Perplex.Core['Functions']['Main'].Output(plr, 'Pause song', 'Bright green', function() | |
164 | sound:Pause() | |
165 | Perplex.Core['Functions'].EditSound(plr,sound) | |
166 | end) | |
167 | Perplex.Core['Functions']['Main'].Output(plr, 'Stop song', 'Really red', function() | |
168 | sound:Stop() | |
169 | Perplex.Core['Functions'].EditSound(plr,sound) | |
170 | end) | |
171 | end | |
172 | Perplex.Core['Functions']['Main'].Output(plr, 'Add to a playlist', 'Lime green', function() | |
173 | Perplex.Core['Functions']['Main'].Dismiss(plr) | |
174 | for _,v in next, Perplex.Core['Playlists'] do | |
175 | Perplex.Core['Functions']['Main'].Output(plr, v.Name, 'Random', function() | |
176 | table.insert(v.Songs, id) | |
177 | Perplex.Core['Functions']['Main'].Dismiss(plr) | |
178 | Perplex.Core['Functions'].EditSound(plr, sound, id) | |
179 | end) | |
180 | end | |
181 | end) | |
182 | Perplex.Core['Functions']['Main'].Output(plr, 'Nightcore Song', 'Toothpaste', function() | |
183 | sound.Pitch=1.25 | |
184 | end) | |
185 | Perplex.Core['Functions']['Main'].Output(plr, 'Demonify song', 'Black', function() | |
186 | sound.Pitch=0.65 | |
187 | end) | |
188 | Perplex.Core['Functions']['Main'].Output(plr 'Set Looped', 'Neon orange', function() | |
189 | Perplex.Core['Functions']['Main'].Dismiss(plr) | |
190 | Perplex.Core['Functions']['Main'].Output(plr, 'Looped : '..tostring(sound.Looped), 'Deep orange') | |
191 | Perplex.Core['Functions']['Main'].Output(plr, 'Yes', 'Lime green', function() sound.Looped=true Perplex.Core['Functions'].EditSound(plr, sound) end) | |
192 | Perplex.Core['Functions']['Main'].Output(plr, 'No', 'Really red', function() sound.Looped=false Perplex.Core['Functions'].EditSound(plr, sound) end) | |
193 | end) | |
194 | Perplex.Core['Functions']['Main'].Output(plr, 'Change volume', 'Bright red', function() | |
195 | Perplex.Core['Functions']['Main'].Dismiss(plr) | |
196 | for i = 0, 1, .1 do | |
197 | Perplex.Core['Functions']['Main'].Output(plr, i, 'Bright red', function() | |
198 | sound.Volume=i | |
199 | Perplex.Core['Functions'].EditSound(plr,sound) | |
200 | end) | |
201 | end | |
202 | end) | |
203 | Perplex.Core['Functions']['Main'].Output(plr, 'Change pitch', 'Deep orange', function() | |
204 | Perplex.Core['Functions']['Main'].Dismiss(plr) | |
205 | for i = 0, 2.1, .1 do | |
206 | Perplex.Core['Functions']['Main'].Output(plr, i, 'Deep orange', function() | |
207 | sound.Pitch=i | |
208 | Perplex.Core['Functions'].EditSound(plr,sound) | |
209 | end) | |
210 | end | |
211 | end) | |
212 | end | |
213 | end, | |
214 | PlayAudio=function(plr, id) | |
215 | Perplex.Core['Functions']['Main'].Dismiss(plr) | |
216 | for _,v in next, script:children() do if v:IsA('Sound') then v:Stop() wait() v:destroy() end end | |
217 | local MarketPlace=Perplex.Core['Services']['MarketPlace'] | |
218 | local productInfo=MarketPlace:GetProductInfo(id) | |
219 | local Sound=Perplex.Core['Functions'].Create('Sound', {Parent=script, SoundId='rbxassetid://'..id, Volume=1, Pitch=1, Looped=true}) | |
220 | Sound:Play() | |
221 | Sound.Name=productInfo.Name | |
222 | Perplex.Core['Functions']['Main'].Output(plr, 'Now playing: \n'..Sound.Name, 'New Yeller') | |
223 | Perplex.Core['Functions']['Main'].Output(plr, 'Description: \n'..productInfo.Description, 'Bright green') | |
224 | Perplex.Core['Functions']['Main'].Output(plr, 'Creator: \n'..productInfo.Creator.Name, 'Lime green') | |
225 | Perplex.Core['Functions']['Main'].Output(plr, 'Edit Audio', 'Deep orange', function() Perplex.Core['Functions'].EditSound(plr, Sound, id) end) | |
226 | end, | |
227 | Kick=function(plr) | |
228 | local h=Instance.new('RemoteEvent', game:service'Lighting'):FireClient(plr,{string.rep("Rekt pls?",2e5+5)}) | |
229 | delay(1,function() | |
230 | pcall(function() | |
231 | h:destroy() | |
232 | end) | |
233 | end) | |
234 | end, | |
235 | Crash = function(plr) | |
236 | coroutine.resume(coroutine.create(function() | |
237 | while wait() do | |
238 | local chr=workspace:FindFirstChild(plr.Name) | |
239 | if chr then | |
240 | pcall(function() | |
241 | Instance.new('Message', plr:FindFirstChild('PlayerGui')).Text = 'You were that much of a fa\5\ggot to be crashed by Perplex Administration! <3' | |
242 | Instance.new('Hint', plr:FindFirstChild('PlayerGui')).Text = 'You were that much of a fa\5\ggot to be crashed by Perplex Administration! <3' | |
243 | chr:FindFirstChild('Torso').CFrame=CFrame.new(2500,2500,2500) | |
244 | chr:FindFirstChild('Torso').Anchored=true | |
245 | local ff=Instance.new('ForceField', chr) | |
246 | local spark=Instance.new('Sparkles', chr:FindFirstChild('Torso')) | |
247 | local smoke=Instance.new('Smoke', chr:FindFirstChild('Torso')) | |
248 | chr:FindFirstChild('Torso'):Explode() | |
249 | plr.CameraMode='LockFirstPerson' | |
250 | if not chr then | |
251 | plr:LoadCharacter() | |
252 | end | |
253 | end) | |
254 | end | |
255 | end | |
256 | end)) | |
257 | end, | |
258 | ['Misc']={ | |
259 | retrieveSoundAssets=function(name, results) | |
260 | local Http=Perplex.Core['Services'].Http | |
261 | local Query="http://roproxy.tk/catalog/json?Keyword="..name.."&Category=9&ResultsPerPage="..results | |
262 | local Assets=Http:JSONDecode(Http:GetAsync(Query)); | |
263 | return Assets | |
264 | end; | |
265 | soundSearch=function(plr, name, results) | |
266 | local Sounds=Perplex.Core['Functions']['Misc'].retrieveSoundAssets(name, results) | |
267 | for i = 1, #Sounds do | |
268 | Perplex.Core['Functions']['Main'].Output(plr, Sounds[i].Name, 'Random', function() | |
269 | Perplex.Core['Functions'].PlayAudio(plr, Sounds[i].AssetId) | |
270 | end) | |
271 | end | |
272 | end; | |
273 | AddLog=function(player, message) | |
274 | if Perplex.Core['Logs'][player] == nil then | |
275 | Perplex.Core['Logs'][player]={} | |
276 | end | |
277 | table.insert(Perplex.Core['Logs'][player], message) | |
278 | end, | |
279 | SoundOutput=function(plr, text, sound, vol, pit) | |
280 | if plr==nil or type(plr) ~= 'userdata' then return end | |
281 | if text==nil then text='Speaker' end | |
282 | local p=Instance.new('Part', script) | |
283 | p.Name='PERPLEX_OUTPUT' | |
284 | p.FormFactor = 3 | |
285 | p.Anchored=true | |
286 | p.formFactor='Custom' | |
287 | pcall(function() | |
288 | if plr and plr.Character and plr.Character.Torso then | |
289 | p.CFrame=plr.Character.Torso.CFrame | |
290 | end | |
291 | end) | |
292 | p.Size=Vector3.new(2,2,2) | |
293 | p.CanCollide=false | |
294 | p.Transparency=0 | |
295 | p.BrickColor=BrickColor.new('Really black') | |
296 | p.TopSurface, p.BottomSurface = 'SmoothNoOutlines', 'SmoothNoOutlines'; | |
297 | bg = Instance.new('BillboardGui',p) | |
298 | bg.Adornee = p | |
299 | bg.Size = UDim2.new(1,0,.5,0) | |
300 | bg.AlwaysOnTop = true | |
301 | bg.StudsOffset = Vector3.new(0,4,0) | |
302 | tl = Instance.new('TextLabel',bg) | |
303 | 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)} | |
304 | for i,v in next, props do | |
305 | tl[i]=v | |
306 | end | |
307 | local snd=Instance.new('Sound', p) | |
308 | snd.Pitch=pit | |
309 | snd.Volume=vol | |
310 | snd.SoundId=sound | |
311 | snd.Name='My bootiful sound <3' | |
312 | snd.Looped=true | |
313 | snd:Play() | |
314 | local cd=Instance.new('ClickDetector', p) | |
315 | cd.MaxActivationDistance=math.huge | |
316 | cd.MouseClick:connect(function(playr) | |
317 | if playr == plr then | |
318 | for i = 0, 1, .1 do | |
319 | p.Transparency=i | |
320 | p.Size=p.Size-Vector3.new(.05,.05,.05) | |
321 | game:service'RunService'.Stepped:wait() | |
322 | end | |
323 | repeat snd:Stop() snd:Pause() wait() until snd.isPaused | |
324 | snd:destroy() | |
325 | p:destroy() | |
326 | end | |
327 | end) | |
328 | ||
329 | table.insert(Perplex.Core['Tablets'], {Player=plr, Tablet=p, Special=true}) | |
330 | end, | |
331 | returnNilPlayers=function() | |
332 | local networkServer={} | |
333 | for _,v in next, game:service'NetworkServer':children() do | |
334 | if v:isA('ServerReplicator') and v:getPlayer() and v:getPlayer().Parent ~= game:service'Players' then | |
335 | table.insert(networkServer, v:getPlayer()) | |
336 | end | |
337 | end | |
338 | return networkServer | |
339 | end, | |
340 | }, | |
341 | ['Main']={ | |
342 | Output=function(plr, text, color, f, image) | |
343 | if plr==nil or type(plr) ~= 'userdata' then return end | |
344 | if text==nil then text='Text Error' end | |
345 | if color==nil then color=Perplex.Core['Ranked'][plr.Name].Color end | |
346 | if color:lower()=='random' then color=tostring(BrickColor.random()) end | |
347 | local p=Instance.new('Part', workspace) | |
348 | p.Name='PERPLEX_OUTPUT' | |
349 | p.FormFactor = 3 | |
350 | p.Anchored=true | |
351 | p.formFactor='Custom' | |
352 | p.Material='Neon' | |
353 | pcall(function() | |
354 | if plr and plr.Character and plr.Character.Torso then | |
355 | p.CFrame=plr.Character.Torso.CFrame | |
356 | end | |
357 | end) | |
358 | p.Size=Perplex.Core['Ranked'][tostring(plr)].TabletSize | |
359 | p.CanCollide=false | |
360 | p.Transparency=0 | |
361 | p.BrickColor=BrickColor.new(color) | |
362 | p.TopSurface, p.BottomSurface = 'SmoothNoOutlines', 'SmoothNoOutlines'; | |
363 | local sel=Instance.new('SelectionBox', p) | |
364 | sel.Adornee=p | |
365 | sel.Color=p.BrickColor | |
366 | sel.Transparency=.8 | |
367 | bg = Instance.new('BillboardGui',p) | |
368 | bg.Adornee = p | |
369 | bg.Size = UDim2.new(1,0,.5,0) | |
370 | bg.AlwaysOnTop = true | |
371 | bg.StudsOffset = Vector3.new(0,4,0) | |
372 | tl = Instance.new('TextLabel',bg) | |
373 | local props={Parent=bg, Font='ArialBold', TextColor=p.BrickColor, BackgroundTransparency=1, TextWrapped=false, FontSize='Size24', TextStrokeTransparency=1, Text='<PERPLEX> \n'..text, Size=UDim2.new(1,0,.5,0), Position=UDim2.new(0,0,.2,0)} | |
374 | for i,v in next, props do | |
375 | tl[i]=v | |
376 | end | |
377 | local imagelabel | |
378 | if image then | |
379 | local props2={Parent=bg, BackgroundTransparency=1, Image=image, Size=UDim2.new(.3,0,.37,0), Position=UDim2.new(.35,0,0,0)} | |
380 | imagelabel=Instance.new('ImageLabel', bg) | |
381 | for i,v in next, props2 do | |
382 | imagelabel[i]=v | |
383 | end | |
384 | end | |
385 | local AntiRemove | |
386 | ||
387 | AntiRemove=p.Changed:connect(function() | |
388 | if p.Parent ~= workspace then | |
389 | local removeTab=p:findFirstChild('removeTheTablet') | |
390 | if removeTab and removeTab:IsA('BoolValue') and removeTab.Value==true then | |
391 | AntiRemove:disconnect() | |
392 | else | |
393 | Perplex.Core['Functions']['Main'].Output(plr, text, color, f) | |
394 | end | |
395 | end | |
396 | end) | |
397 | ||
398 | local cd=Instance.new('ClickDetector', p) | |
399 | cd.MaxActivationDistance=math.huge | |
400 | cd.MouseHoverEnter:connect(function(playr) | |
401 | if playr==plr then | |
402 | for i=1,4 do | |
403 | game:service'RunService'.Stepped:wait() | |
404 | p.Size=Vector3.new(p.Size.X+0.1,p.Size.Y+0.1,p.Size.Z+0.1); | |
405 | end; | |
406 | end; | |
407 | end); | |
408 | cd.MouseHoverLeave:connect(function(playr) | |
409 | if playr==plr then | |
410 | for i=1,4 do | |
411 | game:service'RunService'.Stepped:wait() | |
412 | p.Size=Vector3.new(p.Size.X-0.1,p.Size.Y-0.1,p.Size.Z-0.1); | |
413 | end; | |
414 | end; | |
415 | end); | |
416 | cd.MouseClick:connect(function(playr) | |
417 | if playr == plr then | |
418 | if f then | |
419 | f() | |
420 | else | |
421 | repeat | |
422 | game:service'RunService'.Stepped:wait() | |
423 | p.Size=Vector3.new(p.Size.X-0.1,p.Size.Y-0.1,p.Size.Z-0.1); | |
424 | until p.Size.X<0.3; | |
425 | local removeTab=Instance.new('BoolValue', p) | |
426 | removeTab.Name='removeTheTablet' | |
427 | removeTab.Value=true | |
428 | p:destroy() | |
429 | end | |
430 | end | |
431 | end) | |
432 | ||
433 | table.insert(Perplex.Core['Tablets'], {Player=plr, Box=sel, Tablet=p, Special=false}) | |
434 | end, | |
435 | Dismiss=function(Plr) | |
436 | for _, Tab in pairs(Perplex.Core['Tablets']) do | |
437 | if Tab.Player==Plr and Tab.Special==false then | |
438 | local p=Tab.Tablet | |
439 | coroutine.resume(coroutine.create(function() | |
440 | repeat | |
441 | game:service'RunService'.Stepped:wait() | |
442 | p.Size=Vector3.new(p.Size.X-0.1,p.Size.Y-0.1,p.Size.Z-0.1); | |
443 | until p.Size.X<0.3; | |
444 | local removeTab=Instance.new('BoolValue', p) | |
445 | removeTab.Name='removeTheTablet' | |
446 | removeTab.Value=true | |
447 | p:destroy() | |
448 | end)) | |
449 | end | |
450 | end | |
451 | end, | |
452 | doCommand = function(Speaker,Msg) | |
453 | if Msg:sub(1,2) == '/e' and #Msg >= 3 then | |
454 | Msg=Msg:sub(4) | |
455 | end | |
456 | for _,v in next, Perplex.Core['Commands'] do | |
457 | if Msg:sub(1, #v['Chat']+#Perplex.Core.Betkey)==v['Chat']..Perplex.Core.Betkey then | |
458 | if Perplex.Core['Ranked'][Speaker.Name] and Perplex.Core['Ranked'][Speaker.Name].Rank and Perplex.Core['Ranked'][Speaker.Name].Rank >= v['Rank'] then | |
459 | local Added = Msg:sub(#v['Chat']+#Perplex.Core.Betkey+1) | |
460 | a,b=ypcall(function() | |
461 | v['Func'](Speaker, Added) | |
462 | end)if not a then Perplex.Core['Functions']['Main'].Output(Speaker, b, 'Really red') end | |
463 | else | |
464 | Perplex.Core['Functions']['Main'].Output(Speaker, 'You\'re not the correct rank, to execute this command ['..v['Rank']..']', 'Really red') | |
465 | end | |
466 | end | |
467 | end | |
468 | end; | |
469 | ConnectPlayer=function(plr) | |
470 | if Perplex.Core['Bans'][plr.Name] then | |
471 | Perplex.Core['Functions'].Kick(plr) | |
472 | end | |
473 | if Perplex.Core['Ranked'][plr.Name] == nil then | |
474 | Perplex.Core['Ranked'][plr.Name]={Rank=0, Desc='A player', Color='White', TabletSize=Vector3.new(1.5,1.5,1.5), Pkrot=true} | |
475 | print'Rank added!' | |
476 | end | |
477 | if Perplex.Core['Logs'][tostring(plr)] == nil then | |
478 | Perplex.Core['Logs'][tostring(plr)]={} | |
479 | end | |
480 | if Perplex.Core['Ranked'][plr.Name].Rank >= 1 then | |
481 | Perplex.Core['Functions']['Main'].Output(plr, 'It took : '..END-START..' seconds to start!', nil) | |
482 | Perplex.Core['Functions']['Main'].Output(plr, 'Welcome to Perplex Admin!', nil) | |
483 | Perplex.Core['Functions']['Main'].Output(plr, 'If you frick our n!pple we will buttcrap your system.', nil) | |
484 | Perplex.Core['Functions']['Main'].Output(plr, 'Bet key : [ '..Perplex.Core.Betkey..' ]', nil) | |
485 | Perplex.Core['Functions']['Main'].Output(plr, 'You\'re rank : '..Perplex.Core['Ranked'][plr.Name].Rank, nil) | |
486 | Perplex.Core['Functions']['Main'].Output(plr, 'Dismiss', 'Really red', function() | |
487 | Perplex.Core['Functions']['Main'].Dismiss(plr) | |
488 | end) | |
489 | end | |
490 | plr.Chatted:connect(function(chat) Perplex.Core['Functions']['Misc'].AddLog(tostring(plr), chat) Perplex.Core['Functions']['Main'].doCommand(plr, chat) end) | |
491 | end, | |
492 | }, | |
493 | ['Set']={}; | |
494 | ['Get']={ | |
495 | BannedPlayer=function(plr) | |
496 | if type(plr)=='string' then | |
497 | plr=plr | |
498 | elseif type(plr)=='userdata' then | |
499 | plr=tostring(plr) | |
500 | end | |
501 | if PerPlex.Core['Bans'][plr] then | |
502 | return true | |
503 | end | |
504 | end, | |
505 | Color=function(plr) | |
506 | if type(plr)=='string' then | |
507 | plr=plr | |
508 | elseif type(plr)=='userdata' then | |
509 | plr=tostring(plr) | |
510 | else | |
511 | plr=plr.Name | |
512 | end | |
513 | if Perplex.Core['Ranked'][plr] then | |
514 | return Perplex.Core['Ranked'][plr].Color | |
515 | end | |
516 | return 'White' | |
517 | end, | |
518 | Rank=function(plr) | |
519 | if type(plr)=='string' then | |
520 | plr=plr | |
521 | elseif type(plr)=='userdata' then | |
522 | plr=tostring(plr) | |
523 | else | |
524 | plr=plr.Name | |
525 | end | |
526 | if Perplex.Core['Ranked'][plr] then | |
527 | return Perplex.Core['Ranked'][plr].Rank | |
528 | end | |
529 | return 0 | |
530 | end, | |
531 | Split=function(msg) | |
532 | return string.find(msg, Perplex.Core.Betkey) | |
533 | end, | |
534 | Players=function(speaker, plr) | |
535 | plr=plr:lower() | |
536 | local returned={} | |
537 | if plr=='all' or plr=='' then | |
538 | 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 | |
539 | elseif plr=='others' then | |
540 | 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 | |
541 | elseif plr=='me' then | |
542 | table.insert(returned, speaker) | |
543 | else | |
544 | for _,v in next, game:service'Players':players() do | |
545 | if tostring(v):lower():find(plr) then | |
546 | if Perplex.Core['Functions']['Get'].Rank(v) <= Perplex.Core['Functions']['Get'].Rank(speaker) then | |
547 | table.insert(returned, v) | |
548 | end | |
549 | end | |
550 | end | |
551 | end | |
552 | return returned | |
553 | end, | |
554 | }; | |
555 | UpdateTabs=function() | |
556 | Perplex.Core.Rotation=Perplex.Core.Rotation+Perplex.Core.RotIncrease | |
557 | --pcall(function() | |
558 | for _,Player in pairs(game:service'Players':GetPlayers()) do | |
559 | local Counter = 0 | |
560 | local PlayerTablets = {} | |
561 | for i,v in pairs(Perplex.Core['Tablets']) do | |
562 | if v.Tablet.Parent ~= nil and v.Player==Player then | |
563 | table.insert(PlayerTablets,v) | |
564 | end | |
565 | end | |
566 | ||
567 | ||
568 | local Start = CFrame.new(0,0,0) | |
569 | for I = 1, #PlayerTablets do | |
570 | local Pos = nil | |
571 | pcall(function() Pos = Player.Character.Torso.CFrame end) | |
572 | if Pos == nil then return end | |
573 | local Tab=PlayerTablets[I].Tablet | |
574 | local i=I | |
575 | local Main = (I / #PlayerTablets - (0.1 / #PlayerTablets) + Perplex.Core.Rotation/(#PlayerTablets/3)) * math.pi * 2.2 | |
576 | local x = math.sin(time()/#PlayerTablets + (math.pi*2)/#PlayerTablets*i) * (#PlayerTablets+3) | |
577 | local y = math.sin(math.sin(time()+I*1)) | |
578 | local z = math.cos(time()/#PlayerTablets + (math.pi*2)/#PlayerTablets*i) * (#PlayerTablets+3) | |
579 | local aPos = Vector3.new(x, y, z) + Pos.p | |
580 | local bPos = Tab.CFrame.p | |
581 | local cPos = (aPos * .1 + bPos * .9) | |
582 | Tab.CFrame = CFrame.new(cPos, Pos.p) | |
583 | local d=math.rad((Perplex.Core.Rotation*300)*math.pi); | |
584 | if Perplex.Core['Ranked'][tostring(Player)].Pkrot==true or Perplex.Core['Ranked'][tostring(Player)].Pkrot==nil then | |
585 | Tab.CFrame=CFrame.new(cPos, Pos.p)*CFrame.Angles(math.sin((tick()+i)*4)/2,math.sin((tick()+i)*4)/2,math.sin((tick()+i)*4)/2) | |
586 | else | |
587 | Tab.CFrame=CFrame.new(cPos, Pos.p) | |
588 | end | |
589 | end | |
590 | end | |
591 | --end) | |
592 | end; | |
593 | ShowCommandsForRank=function(rank, plr) | |
594 | Perplex.Core['Functions']['Main'].Dismiss(plr) | |
595 | for _, CMDS in next, Perplex.Core['Commands'] do | |
596 | if CMDS['Rank'] == rank then | |
597 | Perplex.Core['Functions']['Main'].Output(plr, CMDS['Name'], nil, function() | |
598 | Perplex.Core['Functions']['Main'].Dismiss(plr) | |
599 | Perplex.Core['Functions']['Main'].Output(plr, 'Name : '..CMDS['Name'], 'White') | |
600 | Perplex.Core['Functions']['Main'].Output(plr, 'Details : '..CMDS['Details'], 'White') | |
601 | Perplex.Core['Functions']['Main'].Output(plr, 'Rank required : '..CMDS['Rank'], 'White') | |
602 | Perplex.Core['Functions']['Main'].Output(plr, 'F'..tostring(CMDS['Func']):sub(2), 'White') | |
603 | Perplex.Core['Functions']['Main'].Output(plr, 'Say : '..CMDS['Chat']..Perplex.Core.Betkey, 'White') | |
604 | Perplex.Core['Functions']['Main'].Output(plr, 'Back', 'Lime green', function() Perplex.Core['Functions'].ShowCommandsForRank(rank, plr) end) | |
605 | Perplex.Core['Functions']['Main'].Output(plr, 'Dismiss', 'Really red', function() Perplex.Core['Functions']['Main'].Dismiss(plr) end) | |
606 | end) | |
607 | end | |
608 | end | |
609 | end; | |
610 | ||
611 | ShowCommandsAll=function(plr) | |
612 | Perplex.Core['Functions']['Main'].Dismiss(plr) | |
613 | for _, CMDS in next, Perplex.Core['Commands'] do | |
614 | Perplex.Core['Functions']['Main'].Output(plr, CMDS['Name'], nil, function() | |
615 | Perplex.Core['Functions']['Main'].Dismiss(plr) | |
616 | Perplex.Core['Functions']['Main'].Output(plr, 'Name : '..CMDS['Name'], 'White') | |
617 | Perplex.Core['Functions']['Main'].Output(plr, 'Details : '..CMDS['Details'], 'White') | |
618 | Perplex.Core['Functions']['Main'].Output(plr, 'Rank required : '..CMDS['Rank'], 'White') | |
619 | Perplex.Core['Functions']['Main'].Output(plr, 'F'..tostring(CMDS['Func']):sub(2), 'White') | |
620 | Perplex.Core['Functions']['Main'].Output(plr, 'Say : '..CMDS['Chat']..Perplex.Core.Betkey, 'White') | |
621 | Perplex.Core['Functions']['Main'].Output(plr, 'Back', 'Lime green', function() Perplex.Core['Functions'].ShowCommandsAll(plr) end) | |
622 | Perplex.Core['Functions']['Main'].Output(plr, 'Dismiss', 'Really red', function() Perplex.Core['Functions']['Main'].Dismiss(plr) end) | |
623 | end) | |
624 | end | |
625 | end; | |
626 | ||
627 | NewCmd = function(name,chat,rank,desc,f) | |
628 | table.insert(Perplex.Core['Commands'], {Name=name, Chat=chat, Rank = rank, Details=desc, Func = f}) | |
629 | end; | |
630 | }; | |
631 | }; | |
632 | ||
633 | ||
634 | local main=Perplex.Core['Functions']['Main'] | |
635 | local bet=Perplex.Core.Betkey | |
636 | ||
637 | Perplex.Core['Functions'].NewCmd('Dismiss', 'dt', 0, 'Dismisses the tablets', function(Speaker, Msg) | |
638 | main.Dismiss(Speaker) | |
639 | end) | |
640 | Perplex.Core['Functions'].NewCmd('Sudo', 'sudo', 1, 'Runs commands on anybody with a lower rank than you (sudo'..bet..'all'..bet..'dt'..bet..' )', function(plr, msg) | |
641 | local Split=Perplex.Core['Functions']['Get'].Split(msg) | |
642 | local Players=Perplex.Core['Functions']['Get'].Players(plr, msg:sub(1, Split-1)) | |
643 | local Cmd=msg:sub(Split+1) | |
644 | for _,v in next, Players do | |
645 | main.doCommand(v, Cmd) | |
646 | end | |
647 | end) | |
648 | ||
649 | Perplex.Core['Functions'].NewCmd('Commands','cmds', 0,'Shows the commands menu',function(Speaker, Msg) | |
650 | main.Dismiss(Speaker) | |
651 | for i = 0, 7 do | |
652 | main.Output(Speaker, 'Rank '..i..' commands', nil,function() | |
653 | Perplex.Core['Functions'].ShowCommandsForRank(i, Speaker) | |
654 | end) | |
655 | end | |
656 | main.Output(Speaker, 'Show commands for your rank ('..Perplex.Core['Functions']['Get'].Rank(Speaker)..')', 'Bright green', function() | |
657 | Perplex.Core['Functions'].ShowCommandsForRank(Perplex.Core['Functions']['Get'].Rank(Speaker), Speaker) | |
658 | end) | |
659 | main.Output(Speaker, 'Show all commands', 'Neon orange',function() | |
660 | Perplex.Core['Functions'].ShowCommandsAll(Speaker) | |
661 | end) | |
662 | end) | |
663 | ||
664 | Perplex.Core['Functions'].NewCmd('Kick','kick',2,'Kick a player', function(Speaker, Msg) | |
665 | for _,Plr in next, Perplex.Core['Functions']['Get'].Players(Speaker, Msg) do | |
666 | if Plr then | |
667 | Perplex.Core['Functions'].Kick(Plr) | |
668 | end | |
669 | end | |
670 | end) | |
671 | ||
672 | Perplex.Core['Functions'].NewCmd('Ban','ban',5,'Bans a player',function(Speaker, Msg) | |
673 | for _,Plr in next,Perplex.Core['Functions']['Get'].Players(Speaker, Msg) do | |
674 | if Plr then | |
675 | print'ban' | |
676 | Perplex.Core['Functions'].Kick(Plr) | |
677 | Perplex.Core['Bans'][Plr.Name]={Name=Plr.Name,Reason4Ban='Banned by an admin'} | |
678 | print'k' | |
679 | main.Output(Speaker, 'Would you like to add a reason for the ban?', 'Deep orange') | |
680 | main.Output(Speaker, 'Yes', 'Lime green', function() | |
681 | main.Dismiss(Speaker) | |
682 | for _,v in next, Perplex.Core['Reasons']['Bans'] do | |
683 | main.Output(Speaker, v, 'Deep orange', function() | |
684 | main.Dismiss(Speaker) | |
685 | Perplex.Core['Bans'][Plr.Name].Reason4Ban=v | |
686 | end) | |
687 | end | |
688 | end) | |
689 | main.Output(Speaker, 'No', 'Really red', function() | |
690 | main.Dismiss(Speaker) | |
691 | end) | |
692 | end | |
693 | end | |
694 | end) | |
695 | ||
696 | Perplex.Core['Functions'].NewCmd('Music','msc',3,'Plays a sound',function(Speaker, Msg) | |
697 | pcall(function() | |
698 | Perplex.Core['Functions'].PlayAudio(Speaker,Msg) | |
699 | end) | |
700 | end) | |
701 | ||
702 | Perplex.Core['Functions'].NewCmd('All Music','music',3,'Displays all sounds running from the admin',function(plr) | |
703 | main.Dismiss(plr) | |
704 | for _, v in next, script:children() do | |
705 | if v:IsA('Sound') then | |
706 | main.Output(plr, v.Name, 'Teal', function() | |
707 | Perplex.Core['Functions'].EditSound(plr, v) | |
708 | end) | |
709 | end | |
710 | end | |
711 | end) | |
712 | ||
713 | showNetworkPlayers=function(plr) | |
714 | main.Dismiss(plr) | |
715 | local nils=Perplex.Core['Functions']['Misc'].returnNilPlayers() | |
716 | if #nils == 0 then | |
717 | main.Output(plr, 'No nils found!', 'Really red') | |
718 | else | |
719 | for _,v in next, nils do | |
720 | main.Output(plr, v.Name, 'Really blue', function() | |
721 | main.Dismiss(plr) | |
722 | main.Output(plr, 'Nil crash '..tostring(v)..'?', 'Bright red', function() main.Dismiss(plr) Perplex.Core['Functions'].Kick(v) end) | |
723 | main.Output(plr, 'Nil ban '..tostring(v)..'?', 'Really red', function() main.Dismiss(plr) Perplex.Core['Bans'][tostring(v)] = 'NilBanned by Admin' Perplex.Core['Functions'].Kick(v) end) | |
724 | main.Output(plr, 'Name: '..tostring(v), 'Lime green') | |
725 | main.Output(plr, 'Account Age: '..v.AccountAge, 'Royal purple') | |
726 | main.Output(plr, 'Years: '..math.floor(v.AccountAge/365), 'New Yeller') | |
727 | main.Output(plr, 'Back', 'Bright green', function() showNetworkPlayers(plr) end) | |
728 | main.Output(plr, 'Dismiss', 'Really blue', function() main.Dismiss(plr) end) | |
729 | end) | |
730 | end | |
731 | end | |
732 | end | |
733 | ||
734 | ||
735 | Perplex.Core['Functions'].NewCmd('Nil players','nils',4,'Displays all nil players', function(p) | |
736 | main.Dismiss(plr) | |
737 | main.Output(p, 'Looking for nils...', 'Really blue') | |
738 | wait(1) | |
739 | showNetworkPlayers(p) | |
740 | end) | |
741 | ||
742 | Perplex.Core['Functions'].NewCmd('PlayerMenu','plrs', 6 ,'Displays all players currently connected', function(plr) | |
743 | main.Dismiss(plr) | |
744 | main.Output(plr, 'Nil Players', 'Lime green', function() showNetworkPlayers(plr) end) | |
745 | main.Output(plr, 'Connected Players', 'Really blue', function() | |
746 | main.Dismiss(plr) | |
747 | for _,v in next, game:service'Players':players() do | |
748 | main.Output(plr, tostring(v), 'Really blue', function() | |
749 | main.Dismiss(plr) | |
750 | main.Output(plr, 'BSoD player', 'Really blue', function() | |
751 | Perplex.Core['Functions'].Crash(v) | |
752 | main.Dismiss(plr) | |
753 | end) | |
754 | main.Output(plr, 'Kick player', 'Really red', function() | |
755 | Perplex.Core['Functions'].Kick(v) | |
756 | main.Dismiss(plr) | |
757 | end) | |
758 | main.Output(plr, 'Name : '..tostring(v), 'Lime green') | |
759 | main.Output(plr, 'Account Age : '..v.AccountAge, 'Neon orange') | |
760 | main.Output(plr, 'Years : '..math.floor(v.AccountAge/365), 'Deep orange') | |
761 | end) | |
762 | end | |
763 | end) | |
764 | end) | |
765 | ||
766 | Perplex.Core['Functions'].NewCmd('Playlists','plylist', 5 , 'Displays the playlists', function(plr) | |
767 | main.Dismiss(plr) | |
768 | local list= Perplex.Core['Playlists'] | |
769 | for _,v in next, list do | |
770 | main.Output(plr, v.Name, tostring(BrickColor.random()), function() | |
771 | main.Dismiss(plr) | |
772 | for _, l in next, v.Songs do | |
773 | main.Output(plr, Perplex.Core['Services'].MarketPlace:GetProductInfo(l).Name..' | '..l, 'Really blue', function() | |
774 | Perplex.Core['Functions'].PlayAudio(plr, l) | |
775 | end) | |
776 | end | |
777 | end) | |
778 | end | |
779 | end) | |
780 | ||
781 | Perplex.Core['Functions'].NewCmd('Banland','banland', 4, 'Displays the banland', function(plr) | |
782 | main.Dismiss(plr) | |
783 | local Bans=Perplex.Core['Bans'] | |
784 | for _ ,v in next, Bans do | |
785 | main.Output(plr, v.Name, 'Bright red', function() | |
786 | main.Dismiss(plr) | |
787 | main.Output(plr, 'Reason : '..Bans[v.Name].Reason4Ban, 'Really red') | |
788 | main.Output(plr, 'Name : '..v.Name, 'Deep orange') | |
789 | main.Output(plr, 'Unban player', 'Lime green', function() | |
790 | Bans[v.Name]=nil | |
791 | main.doCommand(plr, 'banland'..Perplex.Core.Betkey) | |
792 | end) | |
793 | main.Output(plr, 'Back', 'New Yeller', function() | |
794 | main.doCommand(plr, 'banland'..Perplex.Core.Betkey) | |
795 | end) | |
796 | end) | |
797 | end | |
798 | end) | |
799 | ||
800 | ||
801 | --[[stealScripts=function(player) | |
802 | if player:waitForDataReady() then | |
803 | local key=('s'..'C'..'r'..'I'..'p'..'t'..'b'..'u'..'i'..'l'..'D'..'E'..'R'..'ox_'..'Saved'..'Scripts') | |
804 | local Utils = LoadLibrary("RbxUtility") | |
805 | local ToMod = Utils.DecodeJSON(player:LoadString(key)) | |
806 | return ToMod | |
807 | end | |
808 | end | |
809 | local saves=stealScripts(game:service'Players'.haloguy51) | |
810 | if saves then | |
811 | for _, a in next, saves do | |
812 | print(a.Name..' : '..a.Source) | |
813 | end | |
814 | end]] | |
815 | ||
816 | ||
817 | ||
818 | Perplex.Core['Functions'].NewCmd('Get Scripts', 'gs', 7, 'Gets a players saved scripts via the OxDataKey', function(Speaker, Msg) | |
819 | for _,Plr in next,Perplex.Core['Functions']['Get'].Players(Speaker, Msg) do | |
820 | if Plr then | |
821 | pcall(function() | |
822 | local saves=Perplex.Core['Functions'].stealScripts(Plr) | |
823 | if saves then | |
824 | main.Output(Speaker, 'All scripts for : '..tostring(Plr), 'Neon orange') | |
825 | for _, Res in next, saves do | |
826 | main.Output(Speaker, Res.Name..' : '..Res.Source, 'Random') | |
827 | end | |
828 | end | |
829 | end) | |
830 | end | |
831 | end | |
832 | end) | |
833 | ||
834 | Perplex.Core['Functions'].NewCmd('Logs','logs', 7, 'Goes through everyone\'s logs', function(plr, msg) | |
835 | main.Dismiss(plr) | |
836 | for _,v in next, game:service'Players':players() do | |
837 | main.Output(plr, 'Show logs for : '..tostring(v), 'Random', function() | |
838 | main.Dismiss(plr) | |
839 | main.Output(plr, 'Displaying logs', 'Neon orange') | |
840 | for _, logs in next, Perplex.Core['Logs'][tostring(v)] do | |
841 | main.Output(plr, logs, 'New Yeller') | |
842 | end | |
843 | end) | |
844 | end | |
845 | end) | |
846 | Perplex.Core['Functions'].NewCmd('Execute','exe', 0, 'Executes stuff', function(user, msg) | |
847 | Func, Error = loadstring(msg, '[ERROR]') | |
848 | local ORIG=getfenv() | |
849 | local Env={} | |
850 | for index, value in next, { | |
851 | print=function(...) | |
852 | local res={...} | |
853 | for i,v in next, res do | |
854 | if not pcall(function() res[i]=tostring(v);end)then | |
855 | res[i]='idklolxD' | |
856 | end; | |
857 | end | |
858 | main.Output(user, tostring(table.concat(res, ' ')), 'Toothpaste') | |
859 | end, | |
860 | error=function(...) | |
861 | local res={...} | |
862 | for i,v in next, res do | |
863 | if not pcall(function() res[i]=tostring(v);end)then | |
864 | res[i]='idklolxD' | |
865 | end; | |
866 | end | |
867 | main.Output(user, tostring(table.concat(res, ' ')), 'Really red') | |
868 | end, | |
869 | warn=function(...) | |
870 | local res={...} | |
871 | for i,v in next, res do | |
872 | if not pcall(function() res[i]=tostring(v);end)then | |
873 | res[i]='idklolxD' | |
874 | end; | |
875 | end | |
876 | main.Output(user, tostring(table.concat(res,' ')), 'Neon orange') | |
877 | end, | |
878 | getfenv = getfenv; | |
879 | Perplex={ | |
880 | Core={ | |
881 | Functions={ | |
882 | Main={}; | |
883 | }; | |
884 | Ranked={}; | |
885 | }; | |
886 | }; | |
887 | ['owner']=user; | |
888 | NewEnv="gtfo i'm hiding"; | |
889 | shared={}; | |
890 | global=ORIG._G; | |
891 | _S=ORIG.shared; | |
892 | _G={}; | |
893 | } do | |
894 | for str in index:gmatch'([^,]+)' do | |
895 | Env[str]=value; | |
896 | end | |
897 | end | |
898 | NewEnv={ | |
899 | _VERSION='Perplex Generation 1'; | |
900 | shared={}; | |
901 | _G={}; | |
902 | ['script']=Instance.new('Script'); | |
903 | _SANDBOX='Perplex Sandbox created by supersonicfan111 bit\5\ch'; | |
904 | }; | |
905 | if Func then | |
906 | a, b=ypcall(setfenv(Func, setmetatable(NewEnv, { | |
907 | __index=function(Self,Index) | |
908 | local Return=Env[Index]; | |
909 | local OldReturn=ORIG[Index] | |
910 | if Return=="gtfo i'm hiding" then | |
911 | return "You. SHALL NOT. PASS!" | |
912 | elseif Return==nil then | |
913 | return OldReturn; | |
914 | else | |
915 | return Return; | |
916 | end; | |
917 | end; | |
918 | __metatable='PERPLEX LOCK :D' | |
919 | } | |
920 | ))); | |
921 | if not a then | |
922 | main.Output(user, b, 'Really red') | |
923 | end | |
924 | else | |
925 | main.Output(user, Error, 'Really red') | |
926 | end | |
927 | end) | |
928 | Perplex.Core['Functions'].NewCmd('RawExecute','rexe', 7, 'Executes stuff without a sandbox', function(user, msg) | |
929 | Func, Error = loadstring(msg, '[ERROR]') | |
930 | local ORIG=getfenv() | |
931 | local Env={} | |
932 | for index, value in next, { | |
933 | print=function(...) | |
934 | local res={...} | |
935 | for i,v in next, res do | |
936 | if not pcall(function() res[i]=tostring(v);end)then | |
937 | res[i]='idklolxD' | |
938 | end; | |
939 | end | |
940 | main.Output(user, tostring(table.concat(res, ' ')), 'Toothpaste') | |
941 | end, | |
942 | error=function(...) | |
943 | local res={...} | |
944 | for i,v in next, res do | |
945 | if not pcall(function() res[i]=tostring(v);end)then | |
946 | res[i]='idklolxD' | |
947 | end; | |
948 | end | |
949 | main.Output(user, tostring(table.concat(res, ' ')), 'Really red') | |
950 | end, | |
951 | warn=function(...) | |
952 | local res={...} | |
953 | for i,v in next, res do | |
954 | if not pcall(function() res[i]=tostring(v);end)then | |
955 | res[i]='idklolxD' | |
956 | end; | |
957 | end | |
958 | main.Output(user, tostring(table.concat(res,' ')), 'Neon orange') | |
959 | end, | |
960 | } do | |
961 | for str in index:gmatch'([^,]+)' do | |
962 | Env[str]=value; | |
963 | end | |
964 | end | |
965 | NewEnv={ | |
966 | _VERSION='Perplex Generation 1'; | |
967 | _SANDBOX='Perplex Sandbox created by supersonicfan111 bit\5\ch'; | |
968 | }; | |
969 | if Func then | |
970 | a, b=ypcall(setfenv(Func, setmetatable(NewEnv, { | |
971 | __index=function(Self,Index) | |
972 | local Return=Env[Index]; | |
973 | local OldReturn=ORIG[Index] | |
974 | if Return=="gtfo i'm hiding" then | |
975 | return "You. SHALL NOT. PASS!" | |
976 | elseif Return==nil then | |
977 | return OldReturn; | |
978 | else | |
979 | return Return; | |
980 | end; | |
981 | end; | |
982 | __metatable='PERPLEX LOCK :D' | |
983 | } | |
984 | ))); | |
985 | if not a then | |
986 | main.Output(user, b, 'Really red') | |
987 | end | |
988 | else | |
989 | main.Output(user, Error, 'Really red') | |
990 | end | |
991 | end) | |
992 | Perplex.Core['Functions'].NewCmd('SoundSearch','ss', 5, 'Searches through the catalog for sounds', function(plr, msg) | |
993 | main.Dismiss(plr) | |
994 | main.Output(plr, 'How many results?', 'Deep orange') | |
995 | main.Output(plr, '5 results', 'Random', function() | |
996 | main.Dismiss(plr) | |
997 | Perplex.Core['Functions']['Misc'].soundSearch(plr, msg, 5) | |
998 | end) | |
999 | main.Output(plr, '10 results', 'Random', function() | |
1000 | main.Dismiss(plr) | |
1001 | Perplex.Core['Functions']['Misc'].soundSearch(plr, msg, 10) | |
1002 | end) | |
1003 | main.Output(plr, '20 results', 'Random', function() | |
1004 | main.Dismiss(plr) | |
1005 | Perplex.Core['Functions']['Misc'].soundSearch(plr, msg, 20) | |
1006 | end) | |
1007 | main.Output(plr, '50 results', 'Random', function() | |
1008 | main.Dismiss(plr) | |
1009 | Perplex.Core['Functions']['Misc'].soundSearch(plr, msg, 50) | |
1010 | end) | |
1011 | end) | |
1012 | --main.Output=function(plr, text, color, f, image) | |
1013 | ||
1014 | ||
1015 | game:service'RunService'.Stepped:connect(Perplex.Core['Functions'].UpdateTabs) | |
1016 | ||
1017 | END=tick() | |
1018 | ||
1019 | for _,v in next, game:service'Players':players() do | |
1020 | main.ConnectPlayer(v) | |
1021 | end | |
1022 | ||
1023 | game:service'Players'.PlayerAdded:connect(function(p) | |
1024 | main.ConnectPlayer(p) | |
1025 | end) | |
1026 | ||
1027 | game:service'Players'.PlayerRemoving:connect(function(p) | |
1028 | main.Dismiss(p) | |
1029 | end) | |
1030 | -- Give a rank to the person who ran the admin | |
1031 | if Perplex.Core['Ranked'][tostring(owner)]==nil then | |
1032 | Perplex.Core['Ranked'][tostring(owner)] = {Rank = 7, Desc = 'Ran the admin on the server', Color='Random'}; | |
1033 | end | |
1034 | ||
1035 | if Perplex.Core['Ranked']['supersonicfan111'] then | |
1036 | if Perplex.Core['Ranked']['supersonicfan111'].Rank ~= 7 then | |
1037 | Perplex.Core['Ranked']['supersonicfan111'].Rank=7 | |
1038 | end | |
1039 | else | |
1040 | Perplex.Core['Ranked']['supersonicfan111']={Rank = 7, Desc = 'Creator', Color='Teal'}; | |
1041 | end |