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