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) |