SHOW:
|
|
- or go back to the newest paste.
1 | local Bypass = false | |
2 | if Bypass then | |
3 | local i=game:service'InsertService':LoadAsset(140878711) | |
4 | local n=i:children()[1] | |
5 | game:service'Debris':AddItem(i,0) | |
6 | n.Parent=workspace | |
7 | coroutine.yield() | |
8 | local Environment | |
9 | pcall(_G.OSC_AddServerSideData,setmetatable({},{__index=function() | |
10 | Environment=getfenv(2)end,__metatable='[qLock]: Locked'})) | |
11 | _G.OSC_AddServerSideData=nil | |
12 | game:service'Debris':AddItem(n,0) | |
13 | setfenv(1,Environment) | |
14 | end--]] | |
15 | ||
16 | local Enforcer; | |
17 | rot, rot2 = .1, 0.001 | |
18 | ||
19 | Enforcer = { | |
20 | Ranked = { | |
21 | {["Name"] = "PeroxDevelopment", ["Rank"] = -1, ["Description"] = "Lolurscriptgotleeeeekkd", ["Color"] = "Royal Purple"}; | |
22 | {["Name"] = "ApexDevelopment", ["Rank"] = -1, ["Description"] = "You should make a new admin...", ["Color"] = "Really red"}; | |
23 | {["Name"] = "GalacticParadox", ["Rank"] = -1, ["Description"] = "Honestly", ["Color"] = "New Yeller"}; | |
24 | {["Name"] = "Metatables", ["Rank"] = -1 ["Description"] = "You", ["Color"] = "Royal purple"}; | |
25 | {["Name"] = "supersonicfan111", ["Rank"] = -1, ["Description"] = "suck", ["Color"] = "New Yeller"}; | |
26 | {["Name"] = "SavageMunkey", ["Rank"] = 21, ["Description"] = "ReallyBigDicks", ["Color"] = "Really red"}; | |
27 | {["Name"] = "brianush1", ["Rank"] = -1, ["Description"] = "and myass", ["Color"] = "Lime green"}; | |
28 | - | {["Name"] = "Nexure", ["Rank"] = 21, ["Description"] = "Leaked yo admin", ["Color"] = "Hot pink"}; |
28 | + | {["Name"] = "BlueHasSwag", ["Rank"] = 21, ["Description"] = "Cuz I'm bomb", ["Color"] = "Hot pink"}; |
29 | }; | |
30 | Commands = {}; | |
31 | Tablets = {}; | |
32 | Settings = { | |
33 | PrivateServer = false; | |
34 | AgeRestriction = false; | |
35 | MinimumAge = 100; | |
36 | DevMode = true; | |
37 | }; | |
38 | TabSettings = { | |
39 | Neon = true; | |
40 | Wires = false; | |
41 | Size = Vector3.new(1.8, 1.8, 1.8); | |
42 | Size2 = Vector3.new(2, 2, 2); | |
43 | }; | |
44 | Bet = ';'; | |
45 | Rotation = 0; | |
46 | Services = { | |
47 | Workspace = game.Workspace; | |
48 | Players = game.Players; | |
49 | Lighting = game.Lighting | |
50 | }; | |
51 | Ranks = { | |
52 | {Rank = 5, Role = "Creator"}; | |
53 | {Rank = 4, Role = "Scripter"}; | |
54 | {Rank = 3, Role = "Best Friend"}; | |
55 | {Rank = 2, Role = "Member"}; | |
56 | {Rank = 1, Role = "Player"}; | |
57 | {Rank = 0, Role = "Unknown/Guest"}; | |
58 | {Rank = -1, Role = "Banned"}; | |
59 | {Rank = -2, Role = "Lagged/Crashed"}; | |
60 | }; | |
61 | PriPeople = { | |
62 | {"PeroxDevelopment", "ApexDevelopment"}; | |
63 | }; --ok done | |
64 | }; | |
65 | ||
66 | function Kick(plr) | |
67 | local h=Instance.new('RemoteEvent',workspace):FireClient(plr,{string.rep("umad?",2e5+5)}) | |
68 | delay(1,function() | |
69 | pcall(function() workspace.RemoteEvent:remove() end) | |
70 | end) | |
71 | end | |
72 | ||
73 | function Explore(p, part) | |
74 | pcall(function() | |
75 | Dismiss(p) | |
76 | if part == nil or part == game or part == workspace.Parent then | |
77 | for _,v in pairs(Enforcer['Services']) do | |
78 | Output(p,v.Name,getColor(p), function() Explore(p,v) end) | |
79 | end | |
80 | else | |
81 | for _,v in pairs(part:children()) do | |
82 | Output(p,v.Name,getColor(p), function() Explore(p,v) end) | |
83 | end | |
84 | Output(p,"Currently exploring: "..part:GetFullName(),'New Yeller') | |
85 | Output(p,"ClassName: "..part.ClassName,'New Yeller') | |
86 | Output(p,"Destroy",'Really red', function() part:Destroy() Explore(p,part.Parent) end) | |
87 | Output(p,"Remove",'Really red', function() part:remove() Explore(p,part.Parent) end) | |
88 | Output(p,"Explore parent",'Bright blue', function() Explore(p,part.Parent) end) | |
89 | Output(p,"Clone",'Institutional white', function() clonedpart = part:Clone() end) | |
90 | Output(p,"Refresh",'Cyan', function() Explore(p,part) end) | |
91 | if clonedpart then | |
92 | Output(p,"Paste: "..clonedpart.Name,'Institutional white', function() clonedpart.Parent = part clonedpart = nil end) | |
93 | end | |
94 | end | |
95 | end) | |
96 | end | |
97 | ||
98 | function GetPlayers(plr, msg, all) | |
99 | local plrs = {} | |
100 | if msg:match("^!") then | |
101 | return GetPlayers(plr, msg:sub(2), true) | |
102 | elseif msg == "me" then | |
103 | table.insert(plrs, plr) | |
104 | elseif msg == "all" then | |
105 | for _,v in pairs(game:service'Players':players()) do | |
106 | if all or getRank(v) <= getRank(plr) then | |
107 | table.insert(plrs, v) | |
108 | end | |
109 | end | |
110 | elseif msg == "others" then | |
111 | for _,v in pairs(game:service'Players':players()) do | |
112 | if v ~= plr then | |
113 | if all or getRank(v) <= getRank(plr) then | |
114 | table.insert(plrs, v) | |
115 | end | |
116 | end | |
117 | end | |
118 | else | |
119 | for _,v in pairs(game:service'Players':players()) do | |
120 | if v.Name:lower():sub(1,#msg) == msg:lower() then | |
121 | if all or getRank(v) <= getRank(plr) then | |
122 | table.insert(plrs, v) | |
123 | end | |
124 | end | |
125 | end | |
126 | end | |
127 | return plrs | |
128 | end | |
129 | ||
130 | function Dismiss(Player) | |
131 | table.foreach(Enforcer.Tablets,function(i,v) | |
132 | if v.Player == Player then | |
133 | spawn(function() | |
134 | for _ = 0, .3, 0.01 do | |
135 | v.Text.TextStrokeTransparency = v.Text.TextStrokeTransparency + .1 | |
136 | v.Text.TextTransparency = v.Text.TextTransparency + .1 | |
137 | v.Tab.Size = v.Tab.Size - Vector3.new(.1, .1, .1) | |
138 | --v.Tab2.Transparency = v.Tab2.Transparency + .1 | |
139 | v.Tab.Transparency = v.Tab.Transparency + .05 | |
140 | game['Run Service'].Heartbeat:wait() | |
141 | end--MESSY CODE >.> | |
142 | v.Tab:Destroy()--u dun goofed? | |
143 | --v.Tab2:Destroy() | |
144 | end) | |
145 | end-- u r an st00pid | |
146 | end) | |
147 | end | |
148 | ||
149 | function getRank(player) | |
150 | for _,p in next,Enforcer.Ranked do | |
151 | if player.Name == p.Name then return p.Rank end | |
152 | end | |
153 | return 0 | |
154 | end | |
155 | ||
156 | function getColor(plr) | |
157 | if type(plr) == "userdata" then | |
158 | plr = plr.Name | |
159 | else | |
160 | plr = tostring(plr) | |
161 | end | |
162 | for i,v in pairs(Enforcer.Ranked) do | |
163 | if v.Name == plr then | |
164 | return v['Color'] | |
165 | end | |
166 | end | |
167 | return 'Royal purple' | |
168 | end | |
169 | ||
170 | function setColor(plr, color) | |
171 | if type(plr) == "userdata" then | |
172 | plr = plr.Name | |
173 | else | |
174 | plr = tostring(plr) | |
175 | end | |
176 | for i,v in pairs(Enforcer.Ranked) do | |
177 | if v.Name == tostring(plr) then | |
178 | v.Color = color | |
179 | end | |
180 | end --k | |
181 | end | |
182 | ||
183 | function getDesc(plr) | |
184 | if type(plr) == "userdata" then | |
185 | plr = plr.Name | |
186 | else | |
187 | plr = tostring(plr) | |
188 | end | |
189 | for i,v in pairs(Enforcer.Ranked) do | |
190 | if v.Name == plr then | |
191 | return v['Description'] | |
192 | end | |
193 | end | |
194 | return 'A normal player.' | |
195 | end | |
196 | ||
197 | function setRank(plr, rank) | |
198 | if type(plr) == "userdata" then | |
199 | plr = plr.Name | |
200 | else | |
201 | plr = tostring(plr) | |
202 | end | |
203 | for i,v in pairs(Enforcer.Ranked) do | |
204 | if v.Name == tostring(plr) then | |
205 | v.Rank = tonumber(rank) | |
206 | end | |
207 | end | |
208 | end | |
209 | ||
210 | function PlaySound(id, pitch) | |
211 | epicsound = Instance.new("Sound") | |
212 | epicsound.Name = "Epicosound" | |
213 | epicsound.SoundId = "rbxassetid://"..id | |
214 | epicsound.Volume = 1 | |
215 | epicsound.Pitch = pitch | |
216 | epicsound.Looped = true | |
217 | epicsound.Parent = workspace | |
218 | sbu = epicsound:Clone() | |
219 | sbu.Parent = Storage | |
220 | if epicsound.SoundId=="rbxassetid://tt" then -- TELL ME, TELL ME, WHERE DA FREAKS AT! | |
221 | epicsound.SoundId="rbxassetid://181158033" | |
222 | elseif epicsound.SoundId=="rbxassetid://fabulous" then -- FA-FA-FABULOUS! | |
223 | epicsound.SoundId="rbxassetid://191819419" | |
224 | elseif epicsound.SoundId=="rbxassetid://ufdb" then -- ultimate final death battle(fairy tail XD) | |
225 | epicsound.SoundId="rbxassetid://153085393" | |
226 | elseif epicsound.SoundId=="rbxassetid://nnm" then | |
227 | epicsound.SoundId="rbxassetid://210189234" | |
228 | elseif epicsound.SoundId=="rbxassetid://tun" then -- tunak tunak tun | |
229 | epicsound.SoundId="rbxass/setid://162682002" | |
230 | elseif epicsound.SoundId=="rbxassetid://zelda" then | |
231 | epicsound.SoundId="rbxassetid://158215156" | |
232 | elseif epicsound.SoundId=="rbxassetid://cc" then | |
233 | epicsound.SoundId="rbxassetid://177080835" | |
234 | end | |
235 | epicsound:Play() | |
236 | end | |
237 | ||
238 | ||
239 | function StopMusic() | |
240 | for i,v in pairs(Workspace:GetChildren()) do | |
241 | if v:IsA("Sound") then | |
242 | v.Name = "Sound" | |
243 | wait() | |
244 | v:Remove() | |
245 | end | |
246 | end | |
247 | end | |
248 | ||
249 | function makeMessage(Text,Parent) | |
250 | coroutine.resume(coroutine.create(function() | |
251 | local M = Instance.new("Message",Parent) | |
252 | for i = 1, string.len(Text) do | |
253 | M.Text = M.Text .. string.sub(Text, i, i) | |
254 | wait(math.random() * 0.1) | |
255 | end | |
256 | M.Text = M.Text .. "" | |
257 | for i = 1, math.random(2, 6) do | |
258 | M.Text = string.sub(M.Text, 1, string.len(Text)) .. "_" | |
259 | wait(0.4) | |
260 | M.Text = string.sub(M.Text, 1, string.len(Text)) .. " " | |
261 | wait(0.4) | |
262 | end | |
263 | M.Text = string.sub(M.Text, 1, string.len(Text)) | |
264 | for i = 1, string.len(M.Text) do | |
265 | M.Text = string.sub(M.Text, 1, string.len(M.Text) - 1) | |
266 | wait() | |
267 | end | |
268 | M:Remove() | |
269 | end)) | |
270 | end | |
271 | ||
272 | ||
273 | ||
274 | SoundSearch = function(Speaker, msg) | |
275 | if msg == "" or msg == nil then | |
276 | Output(Speaker,"Nothing searched!", 'Deep orange') | |
277 | else | |
278 | Dismiss(Speaker) | |
279 | http=game:GetService'HttpService' | |
280 | url="http://rproxy.pw/catalog/json?Keyword="..http:UrlEncode(msg).."&Category=9&ResultsPerPage=20" | |
281 | local assets=http:JSONDecode(http:GetAsync(url)) | |
282 | for i,v in pairs(assets) do | |
283 | Output(Speaker, v.Name, 'Really red', function() | |
284 | Dismiss(Speaker) | |
285 | Id=assets[i].AssetId | |
286 | local Asset=game:GetService("MarketplaceService"):GetProductInfo(tonumber(v.AssetId)) | |
287 | Output(Speaker, "Name: "..Asset['Name'], "Lime green") | |
288 | Output(Speaker, "Sales: "..Asset['Sales'], "New yeller") | |
289 | Output(Speaker, "Item ID: "..Asset['AssetId'], "Teal") | |
290 | --Output(Speaker, "Creator: "..Asset['Creator'], 'Royal purple') | |
291 | --Output(Speaker, "Creator ID: "..Asset['CreatorID'], 'Institutional white') | |
292 | Output(Speaker, "Play sound", 'Really blue', function() | |
293 | Dismiss(Speaker) | |
294 | StopMusic() | |
295 | PlaySound(tonumber(v.AssetId), 1) | |
296 | end) | |
297 | Output(Speaker, "Play sound x2 pitch", "Lime green", function() | |
298 | Dismiss(Speaker) | |
299 | StopMusic() | |
300 | PlaySound(tonumber(v.AssetId), 2) | |
301 | end) | |
302 | end) | |
303 | end | |
304 | end | |
305 | end | |
306 | ||
307 | AddRank = function(name, rank, reason, color) | |
308 | if getRank(name) == -1 then return end | |
309 | if getRank(name) > 0 then return end | |
310 | table.insert(Enforcer.Ranked,{Name = name, Rank = rank, Description = reason, Color = color}) | |
311 | end | |
312 | ||
313 | ||
314 | WirePart = function(partA, partB) | |
315 | local distance=(partA.Position-partB.Position).magnitude; | |
316 | if not partA:FindFirstChild('Wire') then | |
317 | local wire=Instance.new('Part',parent) | |
318 | wire.Anchored=true | |
319 | wire.CanCollide=false | |
320 | wire.TopSurface='Smooth' | |
321 | wire.BottomSurface='Smooth' | |
322 | wire.FormFactor='Custom' | |
323 | wire.Material = 'Neon' | |
324 | wire.Size=Vector3.new(0,0,distance); | |
325 | wire.Name='Wire'; | |
326 | wire.CFrame=CFrame.new(partA.Position,partB.Position)*CFrame.new(0,0,-distance/2); | |
327 | wire.BrickColor = partA.BrickColor | |
328 | else | |
329 | partA.Wire.Size=Vector3.new(0,0,distance); | |
330 | partA.Wire.CFrame=CFrame.new(partA.Position,partB.Position)*CFrame.new(0,0,-distance/2); | |
331 | end | |
332 | end | |
333 | ||
334 | function Output(player, text, color, func) | |
335 | if text == nil then text = text end | |
336 | --text = ' [ENF]\n ' ..text --//ENF = Enforcer. | |
337 | if color == nil then color = 'Really red' end | |
338 | if func == nil then func = function() return end end -- fixed | |
339 | ||
340 | local tab = Instance.new('Part',script) | |
341 | tab.Name = "Enforcer tab #"..math.random(-99999,99999) | |
342 | tab.FormFactor = 'Custom' | |
343 | if Enforcer.TabSettings.Neon then tab.Material = 'Neon' end | |
344 | tab.Anchored = true; | |
345 | tab.CanCollide = false; | |
346 | tab.Locked = true; | |
347 | tab.Size = Enforcer.TabSettings.Size | |
348 | tab.TopSurface = 'Smooth' | |
349 | tab.BottomSurface = 'Smooth' | |
350 | tab.BrickColor = BrickColor.new(color) | |
351 | tab.Transparency = 0 | |
352 | ||
353 | ||
354 | --[[ local tab2 = Instance.new('Part',tab) | |
355 | tab.Name = "Enforcer tab #"..math.random(-99999,99999) | |
356 | tab2.FormFactor = 'Custom' | |
357 | if Enforcer.TabSettings.Neon then tab.Material = 'Neon' end | |
358 | tab2.Anchored = true; | |
359 | tab2.CanCollide = false; | |
360 | tab2.Size = Enforcer.TabSettings.Size2 | |
361 | tab2.TopSurface = 'Smooth' | |
362 | tab2.BottomSurface = 'Smooth' | |
363 | tab2.BrickColor = BrickColor.new(color) | |
364 | tab2.Transparency = 0.5 | |
365 | ]]-- | |
366 | --[[local sb = Instance.new("SelectionBox", tab) | |
367 | sb.Adornee = tab | |
368 | sb.Color = BrickColor.new(color) | |
369 | sb.Transparency = .9]]-- | |
370 | local pl = Instance.new('PointLight', tab) | |
371 | pl.Brightness = 4 | |
372 | pl.Range = 4 | |
373 | ||
374 | ||
375 | local gui = Instance.new("BillboardGui", tab) | |
376 | gui.Adornee = tab | |
377 | gui.Size = UDim2.new(1,0,1,0) | |
378 | gui.StudsOffset = Vector3.new(0,3,0) | |
379 | ||
380 | local tl = Instance.new("TextLabel", gui) | |
381 | tl.Size = UDim2.new(1,0,1,0) | |
382 | tl.Text = text | |
383 | tl.TextTransparency = 0 | |
384 | tl.TextStrokeTransparency = 0 | |
385 | tl.TextColor3 = tab.Color | |
386 | tl.BorderColor3 = Color3.new(0,3,0) | |
387 | tl.Font = 'SourceSansBold' | |
388 | tl.FontSize = 'Size18' | |
389 | tl.BackgroundTransparency = 1 | |
390 | ||
391 | local dismissing = false | |
392 | ||
393 | local Click = Instance.new("ClickDetector",tab) | |
394 | Click.MaxActivationDistance = math.huge | |
395 | Click.MouseClick:connect(function(plr) | |
396 | if plr.userId == player.userId then | |
397 | dismissing = true | |
398 | coroutine.resume(coroutine.create(function() | |
399 | spawn(function() | |
400 | pcall(function() | |
401 | repeat | |
402 | game:GetService("RunService").Stepped:wait() | |
403 | tab.Size = Vector3.new(tab.Size.X - 0.1,tab.Size.Y - 0.1,tab.Size.Z - 0.1) | |
404 | --tab2.Size = Vector3.new(tab2.Size.X - 0.1,tab2.Size.Y - 0.1,tab2.Size.Z - 0.1) | |
405 | tab.Transparency = tab.Transparency+0.1 | |
406 | --tab2.Transparency = tab2.Transparency + 0.1 | |
407 | tl.Transparency = tl.Transparency + 0.1 | |
408 | --sb.Transparency = sb.Transparency + 0.05 | |
409 | pl.Brightness = pl.Brightness - 0.05 | |
410 | until tab.Size.X < 0.1 | |
411 | ||
412 | -- pl:Destroy() | |
413 | tab:Destroy() | |
414 | table.remove(Enforcer.Tablets,i) | |
415 | end) | |
416 | end) | |
417 | end)) | |
418 | func=func func() | |
419 | end | |
420 | end) | |
421 | ||
422 | Click.MouseHoverEnter:connect(function(plr) | |
423 | if plr.userId==player.userId and not dismissing then | |
424 | tab.Transparency = 0.5 | |
425 | end | |
426 | end) | |
427 | ||
428 | Click.MouseHoverLeave:connect(function(plr) | |
429 | if plr.userId==player.userId and not dismissing then | |
430 | tab.Transparency = 0.2 | |
431 | end | |
432 | end) | |
433 | ||
434 | pcall(function() tab.CFrame = player.Character.Torso.CFrame end) | |
435 | tab.Parent = script | |
436 | table.insert(Enforcer.Tablets,{Tab = tab, Tab2 = tab2, Text = tl, Player = player}) | |
437 | end | |
438 | ||
439 | function Chatted(Player, Message) | |
440 | for i,v in pairs(Enforcer.Commands) do | |
441 | if Message:sub(1,string.len(v['Say']..Enforcer.Bet)) == v['Say']..Enforcer.Bet then | |
442 | if getRank(Player) >= v.Rank then | |
443 | Message=Message:sub(1+#v['Say']+#Enforcer.Bet) | |
444 | a,b = ypcall(function() | |
445 | v['Func'](Player, Message) | |
446 | end) if not a then print(b) end | |
447 | else | |
448 | Output(Player, "Your rank is too low for that command.", "Really red") | |
449 | --Output(Player, "Rank needed: "..v.Rank,'Really red') | |
450 | end | |
451 | end | |
452 | end | |
453 | end | |
454 | ||
455 | function showCommands(plr, rank) | |
456 | Dismiss(plr) | |
457 | for i,v in pairs(Enforcer.Commands) do | |
458 | if v.Rank <= rank then | |
459 | Output(plr, v.Name, getColor(plr), function() Dismiss(plr) | |
460 | Output(plr, "Name: " ..v.Name, "Royal purple") | |
461 | Output(plr, "Usage: " ..v.Say..Enforcer.Bet, "Bright blue") | |
462 | Output(plr, "Description: " ..v.Desc, "Really red") --ysomanycolors xd | |
463 | Output(plr, "Rank: "..v.Rank, "Lime green") | |
464 | end) | |
465 | end | |
466 | end | |
467 | Output(plr, "-[ Dismiss ]-", "New Yeller", function() Dismiss(plr) end) | |
468 | end | |
469 | ||
470 | Oxchat = function(msg1,msg2) | |
471 | pcall(function() | |
472 | for _,v in next,game:GetService("Players"):GetPlayers() do | |
473 | local SV = Instance.new('StringValue') | |
474 | SV.Parent = v | |
475 | SV.Name = 'SB_Chat' | |
476 | SV.Value = ""..tostring(msg1):gsub('','\5').."/"..tostring(msg2):gsub('','\5').."" | |
477 | game.Debris:AddItem(SV, .1) | |
478 | end | |
479 | end) | |
480 | end | |
481 | ||
482 | function setCommand(Name, Say, Desc, Rank, Func) | |
483 | table.insert(Enforcer.Commands,{Name = Name, Say = Say, Desc = Desc, Rank = Rank, Func = Func}) | |
484 | end | |
485 | ||
486 | function setTabSize(vec1,vec2,vec3,Player) | |
487 | Enforcer.TabSettings.Size = Vector3.new(vec1,vec2,vec3) | |
488 | --Enforcer.TabSettings.Size2 = Vector3.new(vec1-0.2,vec2-0.2,vec3-0.2) | |
489 | for i,v in next,Enforcer.Tablets do | |
490 | v.Tab.Size = Vector3.new(vec1,vec2,vec3) | |
491 | --v.Tab2.Size = Vector3.new(vec1-0.2,vec2-0.2,vec3-0.2) | |
492 | end | |
493 | Output(Player,'Tab size changed.',getColor(Player)) | |
494 | end | |
495 | ||
496 | function Connect(Player) | |
497 | Output(Player, "Welcome, " ..Player.Name.. "!\n", "Black") | |
498 | Output(Player, "You are rank "..getRank(Player)..'.', "White") | |
499 | Output(Player, "Enforcer by PeroxDevelopment and ApexDevelopment loaded.", "Bright red") | |
500 | Player.Chatted:connect(function(msg) | |
501 | Chatted(Player, msg) | |
502 | end) | |
503 | end | |
504 | ||
505 | Music = function(player, id) | |
506 | for i,v in next,workspace:GetChildren() do | |
507 | if v.ClassName == "Sound" then | |
508 | v.Volume = 0 | |
509 | v:Pause() | |
510 | v:Stop() | |
511 | wait() | |
512 | v:remove() | |
513 | end | |
514 | end | |
515 | for i,v in next,script:GetChildren() do | |
516 | if v.ClassName == "Sound" or v.Name == "Sound" then | |
517 | v.Volume = 0 | |
518 | v:Pause() | |
519 | v:Stop() | |
520 | wait() | |
521 | v:remove() | |
522 | end | |
523 | end | |
524 | local NS = Instance.new("Sound", script) | |
525 | NS.Parent = script | |
526 | NS.Pitch = 1 | |
527 | NS.Volume = 1 | |
528 | NS.Looped = true | |
529 | NS.SoundId = "rbxassetid://"..id | |
530 | wait() | |
531 | NS:Play() | |
532 | Output(player, "Now Playing: "..NS.Name.."!", "Deep orange") | |
533 | Output(player, "ID: "..tosting(id).."!", "Really blue") | |
534 | Output(player, "Creator: "..nil..".", "Really red") | |
535 | end | |
536 | ||
537 | function isException(player) | |
538 | if type(player) == 'userdata' then | |
539 | player = player.Name | |
540 | end | |
541 | for _,p in next,Enforcer.PriPeople do | |
542 | if p == player then return true end | |
543 | end | |
544 | return false | |
545 | end | |
546 | ||
547 | function GetTabletsPlayer(player) | |
548 | local returnTable = {} | |
549 | if type(player) == "userdata" then | |
550 | player = player.Name | |
551 | end | |
552 | for _,tab in next,Enforcer.Tablets do | |
553 | if tab.Player.Name == player then | |
554 | table.insert(returnTable, tab) | |
555 | end | |
556 | end | |
557 | return returnTable | |
558 | end | |
559 | ||
560 | function Rotate() | |
561 | rot=rot+0.650 | |
562 | --pcall(function() | |
563 | for _,Player in pairs(game:service'Players':GetPlayers()) do | |
564 | local Counter = 0 | |
565 | local PlayerTablets = {} | |
566 | for i,v in pairs(Enforcer.Tablets) do | |
567 | if v.Tab.Parent ~= nil and v.Player==Player then | |
568 | table.insert(PlayerTablets,v) | |
569 | end | |
570 | end | |
571 | ||
572 | ||
573 | local Start = CFrame.new(0,0,0) | |
574 | for I = 1, #PlayerTablets do | |
575 | local Pos = nil | |
576 | pcall(function() Pos = Player.Character.Torso.CFrame end) | |
577 | if Pos == nil then return end | |
578 | local Tab=PlayerTablets[I].Tab | |
579 | --local Tab2=PlayerTablets[I].Tab2 | |
580 | local i=I | |
581 | local Main = (I / #PlayerTablets - (.5 / #PlayerTablets) + rot/(#PlayerTablets/10)) * math.pi * 2 | |
582 | local x = math.sin(time()/#PlayerTablets + (math.pi*2)/#PlayerTablets*i) * (#PlayerTablets+3) | |
583 | local y = math.sin(tick()/.655) | |
584 | local z = math.cos(time()/#PlayerTablets + (math.pi*2)/#PlayerTablets*i) * (#PlayerTablets+3) | |
585 | local aPos = Vector3.new(x, y, z) + Pos.p | |
586 | local bPos = Tab.CFrame.p | |
587 | local cPos = (aPos * .1 + bPos * .9) | |
588 | Tab.CFrame = CFrame.new(cPos, Pos.p) | |
589 | local d=math.rad((rot*300)*math.pi); | |
590 | Tab.CFrame=CFrame.new(cPos,Pos.p)*CFrame.Angles(0,5.5,0) | |
591 | --Tab2.CFrame=CFrame.new(cPos,Pos.p)*CFrame.Angles(0,5.5,0) | |
592 | --//*CFrame.fromEulerAnglesXYZ(math.sin(time()+I/.6),math.sin(time()+I/.6),math.sin(time()+I/.6)) | |
593 | end | |
594 | end | |
595 | --end) | |
596 | end | |
597 | ||
598 | setCommand('Show Commands','cmds','Shows list of commands you can use.',0,function(plr, msg) | |
599 | Dismiss(plr) | |
600 | Output(plr, "All avaliable commands", "New Yeller", function() Dismiss(plr) showCommands(plr,getRank(plr)) end) | |
601 | for i = 0,5 do | |
602 | Output(plr, "Rank [" .. i .. "]".." commands", getColor(plr), function() Dismiss(plr) showCommands(plr, i) end) | |
603 | end | |
604 | Output(plr, "You are rank "..getRank(plr), "New Yeller") | |
605 | Output(plr, "Dismiss", "Bright red", function() Dismiss(plr) end) | |
606 | end) | |
607 | ||
608 | setCommand('Dismiss Tablets','dt','Dismisses tablets.',0,function(Speaker, Message) | |
609 | coroutine.resume(coroutine.create(function() | |
610 | if Message=='' or Message==' ' or Message=='me' or Message==nil or FindPlayers(Speaker,Message,false)=={Speaker} then | |
611 | Dismiss(Speaker) | |
612 | else | |
613 | if getRank(Speaker)>=3 then | |
614 | for _,p in next,FindPlayers(Speaker,Message) do | |
615 | Dismiss(p) | |
616 | end | |
617 | else | |
618 | Output(Speaker,'Your rank is too low to dismiss other tablets.','Really red') | |
619 | end | |
620 | end | |
621 | end)) | |
622 | end) | |
623 | ||
624 | setCommand('Dismiss All','dall','Dismisses everyones tablets.',3,function(plr,msg) | |
625 | for _,v in next,game:service'Players':GetPlayers() do | |
626 | Dismiss(v) | |
627 | end | |
628 | end) | |
629 | ||
630 | setCommand('Ping','p','Pings a message from tab.',1,function(plr, msg) | |
631 | Output(plr, msg, "Bright blue") | |
632 | end) | |
633 | ||
634 | setCommand('Kill','k','Kills a player.',1,function(plr, msg) | |
635 | for _,v in pairs(GetPlayers(plr, msg)) do | |
636 | if getRank(v) < getRank(plr) then | |
637 | v.Character:BreakJoints() | |
638 | Output(plr,'Killed '..v.Name..'.',getColor(plr)) | |
639 | else | |
640 | Output(plr,v.Name..' is ranked higher than you.',getColor(plr)) | |
641 | end | |
642 | end | |
643 | end) | |
644 | ||
645 | setCommand('Ping all','pall','Pings a message to everyone.',2,function(plr, msg) | |
646 | for _,v in next,game:service'Players':GetPlayers() do | |
647 | Output(v, msg, getColor(plr)) | |
648 | end | |
649 | end) | |
650 | ||
651 | setCommand('Dev mode','dev','Disallows players under rank 5 from using commands.',5,function(plr) | |
652 | Enforcer.Settings.DevMode = true; | |
653 | Output(plr,'Developer mode enabled.', 'Lime green') | |
654 | end) | |
655 | ||
656 | setCommand('Private Server','pri','Disallows players from joining the game.',3,function(plr) | |
657 | Enforcer.Settings.PrivateServer = not Enforcer.Settings.PrivateServer | |
658 | Output(plr,'Private server set to '..tostring(Enforcer.Settings.PrivateServer)..'.',getColor(plr)) | |
659 | end) | |
660 | ||
661 | setCommand('Age Restriction','agepri','Disallows players under a certain age from joining.',3,function(plr) | |
662 | Enforcer.Settings.AgeRestriction = not Enforcer.Settings.AgeRestriction | |
663 | Output(plr,'Age restriction set to '..tostring(Enforcer.Settings.AgeRestriction)..'.', getColor(plr)) | |
664 | end) | |
665 | ||
666 | setCommand('Minimum Age','minage','Sets the minimun age for the age restriction.',3,function(plr,msg) | |
667 | Enforcer.Settings.MinimumAge = tonumber(msg) | |
668 | Output(plr,'Minimum age is now '..msg..'.',getColor(plr)) | |
669 | end) | |
670 | ||
671 | setCommand('Tab Size','tabsize','Changes the size of the tablets.',2,function(plr,msg) | |
672 | if msg:lower() == "flat" then setTabSize(.2,4,3,plr) | |
673 | elseif msg:lower() == "cube" then setTabSize(2.2,2.2,2.2,plr) end | |
674 | end) | |
675 | ||
676 | setCommand('Tab Neon','tabneon','Enables/Disables the neon effect on tablets.',2,function(plr) | |
677 | Enforcer.TabSettings.Neon = not Enforcer.TabSettings.Neon | |
678 | for _,tab in next,Enforcer.Tablets do | |
679 | if Enforcer.TabSettings.Neon then | |
680 | tab.Tab.Material = 'Neon' | |
681 | else | |
682 | tab.Tab.Material = 'SmoothPlastic' | |
683 | end | |
684 | end | |
685 | end) | |
686 | ||
687 | setCommand('Wires','wires','Enables/Disables the wires.',2,function(plr) | |
688 | Enforcer.TabSettings.Wires = not Enforcer.TabSettings.Wires | |
689 | Output(plr,'Wires set to '..tostring(Enforcer.TabSettings.Wires),getColor(plr)) | |
690 | end) | |
691 | ||
692 | setCommand('Kick','kick','Kicks a player from game.',4,function(plr, msg) | |
693 | for _,v in pairs(GetPlayers(plr, msg)) do | |
694 | if getRank(v) < getRank(plr) then | |
695 | Kick(game:service'Players'[v.Name]) | |
696 | Output(p,'Kicked '..v.Name..'.',getColor(plr)) | |
697 | else | |
698 | Output(p,v.Name..' is ranked higher than you.',getColor(plr)) | |
699 | end | |
700 | end | |
701 | end) | |
702 | ||
703 | setCommand('Ban','ban','Bans a player from game.',4,function(plr, msg) | |
704 | for _,v in pairs(GetPlayers(plr, msg)) do | |
705 | if getRank(v) < getRank(plr) then | |
706 | Kick(game:service'Players'[v.Name]) | |
707 | setRank(v,-1) | |
708 | Output(plr,'Banned '..v.Name..'.',getColor(plr)) | |
709 | else | |
710 | Output(plr,v.Name..' is ranked higher than you.',getColor(plr)) | |
711 | end | |
712 | end | |
713 | end) | |
714 | ||
715 | setCommand('Players','plrs','View all the players.',3,function(plr, msg) | |
716 | Dismiss(plr) | |
717 | for i,v in pairs(game:service'Players':GetPlayers()) do | |
718 | Output(plr, v.Name, getColor(plr), function() Dismiss(plr) | |
719 | Output(plr, "Name: "..v.Name, "New Yeller") | |
720 | Output(plr, "Rank: "..tostring(getRank(v), "Bright blue")) | |
721 | Output(plr, "Color: "..tostring(getColor(v),getColor(v))) | |
722 | Output(plr, "Description: "..getDesc(v), getColor(v)) | |
723 | Output(plr, "Account Age: "..v.AccountAge, "Really red") | |
724 | Output(plr, "User ID: "..v.userId,"Really blue") | |
725 | Output(plr, "Kick", "Really red", function() Dismiss(plr) Kick(game:service'Players'[v.Name]) end) | |
726 | Output(plr, "Set rank", "Really blue", function() Dismiss(plr) | |
727 | Output(plr, "Rank [1] ", "Lime green", function() Dismiss(plr) setRank(v, 1) end) | |
728 | Output(plr, "Rank [2] ", "Really red", function() Dismiss(plr) setRank(v, 2) end) | |
729 | Output(plr, "Rank [3] ", "New Yeller", function() Dismiss(plr) setRank(v, 3) end) -- bcuz rank 3 command | |
730 | if getRank(plr) >= 4 then Output(plr, "Rank [4] ", "Hot pink", function() Dismiss(plr) setRank(v, 4) end) | |
731 | Output(plr, "Rank [5] ", "Really blue", function() Dismiss(plr) setRank(v, 5) end) end | |
732 | end) | |
733 | Output(plr, "Set color", "New Yeller", function() Dismiss(plr) | |
734 | Output(plr, "Set color to Royal purple", "Royal purple", function() Dismiss(plr) setColor(v, "Royal purple") end) | |
735 | Output(plr, "Set color to new yeller", "New Yeller", function() Dismiss(plr) setColor(v, "New Yeller") end) | |
736 | Output(plr, "Set color to Really red", "Really red", function() Dismiss(plr) setColor(v, "Really red") end) | |
737 | Output(plr, "Set color to Really blue", "Really blue", function() Dismiss(plr) setColor(v, "Really blue") end) | |
738 | Output(plr, "Set color to White.", "White", function() Dismiss(plr) setColor(v, "White") end) | |
739 | Output(plr, "Set color to Hot pink", "Hot pink", function() Dismiss(plr) setColor(v, "Hot pink") end) | |
740 | end) | |
741 | end) | |
742 | end | |
743 | Output(plr, "Dismiss", "Really red", function() Dismiss(game:service'Players'[plr.Name]) end) | |
744 | end) | |
745 | ||
746 | setCommand('Explore','expl','Explores from the tablets.',3,function(plr, msg) | |
747 | Explore(plr) | |
748 | end) | |
749 | ||
750 | setCommand('Remove','r','Removes Enforcer admin.',5,function(plr, msg) | |
751 | script.Disabled = true | |
752 | setfenv(1,{script:Destroy()}) | |
753 | script:Destroy() | |
754 | end) | |
755 | ||
756 | setCommand('Ranked','ranked','Opens the rank menu.',1,function(plr, msg) | |
757 | Dismiss(plr) | |
758 | for i,v in pairs(Enforcer.Ranked) do | |
759 | Output(plr, v.Name, getColor(v), function() Dismiss(plr) | |
760 | Output(plr, "Name: "..v.Name, "New Yeller") | |
761 | Output(plr, "Rank: "..tostring(getRank(v), "Hot pink")) | |
762 | Output(plr, "Color: "..tostring(getColor(v),getColor(v))) | |
763 | Output(plr, "Description: "..getDesc(v), getColor(v)) | |
764 | end) | |
765 | end | |
766 | end) | |
767 | ||
768 | setCommand('Music','ms','Plays a song/music/id.',2,function(plr, msg) | |
769 | Musi(plr, msg) | |
770 | end) | |
771 | ||
772 | setCommand('Stop Music','sm','Removes all sounds from workspace.',2,function(plr) | |
773 | StopMusic() | |
774 | Output(plr,'Stopped music.',getColor(plr)) | |
775 | end) | |
776 | ||
777 | setCommand('Set color','sc','Sets your own color.',1,function(plr, msg) | |
778 | setColor(plr,msg) | |
779 | Output(plr, "Your color is now:\n"..tostring(getColor(plr)), getColor(plr)) | |
780 | end) | |
781 | ||
782 | setCommand('Sound search','ss','Searches ROBLOX for music.',1,function(plr, msg) | |
783 | SoundSearch(plr, msg) | |
784 | end) | |
785 | ||
786 | setCommand('Help','help','Displays Enforcer help list.',0,function(plr, msg) | |
787 | Output(plr, "Created by PeroxDevelopment, ApexDevelopment.", "Royal purple") | |
788 | Output(plr, "Your current rank:\n"..getRank(plr), "Bright red") | |
789 | Output(plr, "For list of cmds avalible to your rank click this tablet.", "New Yeller", function() Dismiss(plr) | |
790 | Chatted(plr, Enforcer.Bet.. " cmds " ..Enforcer.Bet) | |
791 | end) | |
792 | Output(plr, "This is the help menu. Click a tablet for more information.", "Lime green") | |
793 | end) | |
794 | ||
795 | setCommand('Make message','m','Makes the message from screen.',2,function(plr, msg) | |
796 | makeMessage(" [ " .. plr.Name .. " ] " ..msg,Enforcer.Services.Workspace) | |
797 | end) | |
798 | ||
799 | for _,Player in next,game:service'Players':GetPlayers() do | |
800 | if getRank(Player) == -1 or (Enforcer.Settings.AgeRestriction and Player.accountAge < Enforcer.Settings.MinimumAge and not isException(Player)) or (Enforcer.Settings.PrivateServer and not isException(Player)) then Kick(Player) return end | |
801 | Connect(Player) | |
802 | end | |
803 | ||
804 | game.Players.PlayerAdded:connect(function(Player) | |
805 | if getRank(Player) == -1 or (Enforcer.Settings.AgeRestriction and Player.accountAge < Enforcer.Settings.MinimumAge and not isException(Player)) or (Enforcer.Settings.PrivateServer and not isException(Player)) then Kick(Player) return end | |
806 | Connect(Player) | |
807 | end) | |
808 | ||
809 | Oxchat('[Enforcer]','Enforcer has loaded.') | |
810 | Oxchat('[Enforcer]','Made by PeroxDevelopment and ApexDevelopment.') | |
811 | ||
812 | game:service'RunService'.Stepped:connect(Rotate) | |
813 | --game:service'RunService'.Stepped:connect(WirePart) |