SHOW:
|
|
- or go back to the newest paste.
| 1 | --Version 2 1.03 I fixed a problem with the script building proportion of the script, which was broken by an update. | |
| 2 | --[!]Script is taken over by einsteinK and will get updated a lot with him | |
| 3 | --Version 4 5.00 [14/06/2012] Added a lot of commands, new functions and gear used for the "tool/PLAYER(S)/TOOL(S)" | |
| 4 | --Version 5 2.00 [29/08/2012] Added new commands, fixes, functions and gear/clothes-database. New: clothes/PLAYERS/TYPE | |
| 5 | --Version 5 3.00 [01/03/2013] Added l/ (localscript the speaker) and y/ (ypcall in adminscript itself, S-Admin only!) | |
| 6 | --Version 5 4.50 [02/03/2013] Added update/ and an Update Notifier, config options on line 19 and 20 | |
| 7 | --Version 6 0.23 [07/03/2013] New commands, some fixes and a big clean of the code. Debugging prints also optional! | |
| 8 | --Version 7 0.01 [24/07/2013] New commands, complete remake of all the systems, added GUI-Engine, fixed updater, ... | |
| 9 | --Version 7 0.04 [11/11/2013] Fixed Update Notifier. Commands works now with EinHUD (custom chatbar support etc etc) | |
| 10 | --Version 7 0.05 [16/11/2013] (Finally) repaired the bug where teleport-command doesn't work | |
| 11 | --Version 8 0.00 [21/11/2013] New generation. Gonna add (optional) tablets like my old Moderator script and stuff | |
| 12 | --Version 8 0.01 [27/11/2013] Added rank "Winner" for obby related stuff (Admin4 and Admin5 merged into it) | |
| 13 | --Version 8 0.03 [27/11/2013] Renewed the commandlist gui, should now support an unlimited amount of commands | |
| 14 | --Version 8 0.04 [30/11/2013] Adding a lot of new commands and repairing/finishing some other stuff | |
| 15 | --Version 8 0.05 [01/12/2013] Added some commands, tuned the nogravitygenerator and other stuff like that | |
| 16 | --[!]A lot of small edits, fixes, several commands,... during several days leading to several sub versions | |
| 17 | --Version 8 0.11 [15/12/2013] Added online chatlog compability and a lot of minor things (see above line) | |
| 18 | --Version 8 0.13 [16/12/2013] Added analytics code. Also added compability with rbxstats.com (see below) | |
| 19 | --Version 8 0.14 [17/12/2013] Fixed some other stuff, make some enchantments in handling stuff (CPU speed) | |
| 20 | ||
| 21 | -- Leave some feedback, ideas, ... on this forum post please: | |
| 22 | -- http://www.roblox.com/Forum/ShowPost.aspx?PostID=119137054 | |
| 23 | ||
| 24 | PBS = false -- Should this script act as if this is a Personal Build Server? (the BC place type) | |
| 25 | -- This adds some commands as to set the Thumbnail, list all who got buildtools, ... | |
| 26 | -- It'll recognise personal servers automaticly when the owner has set a thumbnail using | |
| 27 | -- the OwnerShotRefTool and the server has restarted. (From then on it recognises always) | |
| 28 | ||
| 29 | Always = {"Member",1} -- Actually this should NEVER be used except for "everyone free admin"
| |
| 30 | --NOTE: Will make everyone this rank! So when "Admin",2 everyone will be admin! EVEN REAL ADMINS (Not creator) | |
| 31 | --NOTE: Everyone will be that rank except the creator, he will be the only creator (except if you put {"Creator",4} )
| |
| 32 | --Rank: {"Member",1} {"Winner",2} {"Admin",3} {"Developer",4} {"Creator",5} -- There should NEVER be extra ranks!
| |
| 33 | ||
| 34 | Creators = {"GravityTeam","Second Game Owner","Important Sponsor","...","Player1"}
| |
| 35 | - | Admins = {"GravityTeam"}
|
| 35 | + | Admins = {"GravityTeam","iMissMuffins"}
|
| 36 | --NOTE: Creator of the game will be automaticly added as creator (you can just insert this script and *poof* it works) | |
| 37 | --Add in the names of the people you want to be able to use the command script here. | |
| 38 | --Please keep my name in there (einsteinK) if possible :D | |
| 39 | --Only the creator can use admin/ and unadmin/ online (or whatever is your commandkey) | |
| 40 | ||
| 41 | Winners = {} -- Obby winners, if you want to test it for example etc.
| |
| 42 | ||
| 43 | Banned = { "someoneyouhate","noob"}
| |
| 44 | --If you want someone not to be able to enter your place, put their name in here. | |
| 45 | ||
| 46 | Groups = {
| |
| 47 | [577832] = 123; -- Everyone in that group with their group rank 123 or higher will be admin | |
| 48 | [736400] = 255; -- Everyone in that with their rank being 255 (255 = only the owner) will be admin | |
| 49 | --[12345] = 1; Everyone in that group (really everyone) would be admin | |
| 50 | }--If you want members with a certain rank in a certain group get admin (muliple groups allowed) | |
| 51 | ||
| 52 | ||
| 53 | -- Your API key of RbxStats.com (This script can act like the API script by Nexx) | |
| 54 | RbxStats_API_Key = "" -- When used here, you'll get noticed if it works etc! | |
| 55 | ||
| 56 | CommandKey = ";" -- Sets which key will be used. ex: kill/me, kill:me, kill me, ... | |
| 57 | GearAllowed = true -- Allow to load gears with the tool/ command? true/false | |
| 58 | HatsAllowed = NotDone -- Decide with true/false if the script can loads hats if commanded NOT IMPLEMENTED YET | |
| 59 | AnimationsAllowed = NotDone -- Animations: Shapes of your body (example: Robloxian 2.0) NOT IMPLEMENTED YET | |
| 60 | ClothesAllowed = true -- Just to load cloathes as police-uniform, groupuniforms, ... with the clothes/ command. true/false | |
| 61 | ||
| 62 | Update = true -- Allow notifying admins (not those by admin/) to see the update notifier | |
| 63 | MainUpdate = false -- When true this will ONLY notify you of new main versions, not sub versions | |
| 64 | ||
| 65 | Debug = false -- This wil just enable the printing-in-output of some information. Only used by developers -.- | |
| 66 | Version = "8.14" -- Keep dafuq off, or the notifier (and some other stuff) will break! | |
| 67 | ||
| 68 | --[[ | |
| 69 | =~= Command Help by einsteinK =~= | |
| 70 | == Commands == | |
| 71 | Most commands are like this: | |
| 72 | COMMAND/PLAYERS/ARGUMENT1/ARGUMENT2/... | |
| 73 | For kill it is simply: kill/PLAYERS | |
| 74 | Capitals (normally) don't matter for the commands. | |
| 75 | ||
| 76 | Players/groups/teams: | |
| 77 | - Admins: Everyone listed in the adminlist or adminned with admin/ | |
| 78 | - Nonadmins: Everyone except those above | |
| 79 | - Guests: All guests (or people who's name looks like that of a guest) | |
| 80 | - Nonguests: All nonguests except those with their name looking like that of a guest | |
| 81 | - All: Just everyone | |
| 82 | - Me: The one who did the command (the speaker) | |
| 83 | - Others: Everyone except the speaker | |
| 84 | - Random: A random player | |
| 85 | - Mrandom: A random player but never the speaker | |
| 86 | - Team TEAMNAME: Everyone who's in the named team | |
| 87 | - Group GROUPID: Everyone who's in the group with the given id | |
| 88 | - Player1,Player2,Player3,...: The given players (only playernames! "FriendsName,admins,me" won't work!) | |
| 89 | Again, capitals don't matter, even not in the playernames! | |
| 90 | ||
| 91 | Capitalisation doesnt matter, and name input can be abbreviated. | |
| 92 | Just about any name input can be replaced with multiple names seperated by commas, me, all, others, guests, admins, nonadmins, random, or team teamname. | |
| 93 | --]] | |
| 94 | ||
| 95 | --=~=-- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ --=~=-- | |
| 96 | --=~=-- + START OF MAIN CODE | Keep off, there are normally no bugs and when they are, check the notifier + --=~=-- | |
| 97 | --=~=-- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ --=~=-- | |
| 98 | ||
| 99 | Commands = {}
| |
| 100 | function NewCommand(name,func,rank,desc,...) | |
| 101 | Commands[name] = {Name=name,Function=func,Rank=rank,Description=desc,Aliases={...}}
| |
| 102 | if name:find("%s") then table.insert(Commands[name].Aliases,(name:gsub("%s",""))) end
| |
| 103 | end | |
| 104 | ||
| 105 | function TupleToString(...) local res = "" | |
| 106 | if select("#",...) == 0 then return "" end
| |
| 107 | for i=1,select("#",...) do
| |
| 108 | res = res.." "..tostring(select(i,...)) | |
| 109 | end return res:sub(2) | |
| 110 | end | |
| 111 | ||
| 112 | Scripts = {
| |
| 113 | Fly = [[ | |
| 114 | print("Loading ADM Fly Script by einsteinK") wait(0.1) local plr = game:GetService("Players").LocalPlayer
| |
| 115 | repeat wait(0.1) until plr.Character wait(0.1) local mo,c,f = plr:GetMouse(),workspace.CurrentCamera,true | |
| 116 | local v = Instance.new("BodyVelocity",plr.Character and plr.Character:findFirstChild("Head")) v.Name = "ADM Fly"
| |
| 117 | local h = plr.Character and plr.Character:findFirstChild("Humanoid") or Instance.new("Humanoid")
| |
| 118 | v.maxForce = Vector3.new(1e99,1e99,1e99) local m = 0 local s = 0 local p = Instance.new("Part",plr.Character)
| |
| 119 | p.Name = "Step" p.FormFactor = "Custom" p.Size = Vector3.new(5,0,5) p.Anchored = true | |
| 120 | p.BrickColor = BrickColor.new("Really black") p.Transparency = 0.5 Instance.new("CylinderMesh",p)
| |
| 121 | mo.KeyDown:connect(function(k) if k == "f" then f = not f v.maxForce = f and Vector3.new(1e9,1e9,1e9) or Vector3.new() | |
| 122 | p.Parent = f and plr.Character or script elseif k == "w" or k:byte() == 17 then m = h.WalkSpeed | |
| 123 | elseif k == "s" or k:byte() == 18 then m = -h.WalkSpeed elseif k == "a" or k:byte() == 20 then s = h.WalkSpeed | |
| 124 | elseif k == "d" or k:byte() == 19 then s = -h.WalkSpeed end end) | |
| 125 | mo.KeyUp:connect(function(k) local ss=k:byte() if k=="w" or k=="s" or ss == 17 or ss == 18 then m=0 elseif | |
| 126 | k=="a" or k=="d" or ss==20 or ss==19 then s=0 end end) while wait() and script.Parent == plr.Character | |
| 127 | and v.Parent == plr.Character.Head do v.velocity = CFrame.new(c.CoordinateFrame.p,c.Focus.p).lookVector * m | |
| 128 | v.velocity = (CFrame.new(c.CoordinateFrame.p,c.Focus.p) * CFrame.Angles(0,math.pi/2,0)).lookVector * 2 + v.velocity | |
| 129 | local cf = CFrame.new((plr.Character.Torso.CFrame * CFrame.new(0,-3.1,0)).p:lerp(p.Position,0.9)) | |
| 130 | p.Size = Vector3.new(h.WalkSpeed/5,0,h.WalkSpeed/5) p.CFrame=cf p.Anchored=true p.Transparency=0.5 | |
| 131 | p.Parent = f and plr.Character or nil v.maxForce = f and Vector3.new(1e9,1e9,1e9) or Vector3.new() end script:Destroy() | |
| 132 | ]], | |
| 133 | Noclip = [[local plr = game:GetService("Players").LocalPlayer
| |
| 134 | plr.Character.Head.Changed:connect(function() plr.Character.Head.CanCollide = false end) | |
| 135 | plr.Character.Torso.Changed:connect(function() plr.Character.Torso.CanCollide = false end) | |
| 136 | plr.Character.HumanoidRootPart.Changed:connect(function() plr.Character.HumanoidRootPart.CanCollide = false end) | |
| 137 | while wait() and script.Parent == plr.Character do plr.Character.Head.CanCollide = false | |
| 138 | plr.Character.Torso.CanCollide = false plr.Character.HumanoidRootPart.CanCollide = false end]], | |
| 139 | Freecam = [[local mode,player = Instance.new("Model",workspace),game:GetService("Players").LocalPlayer
| |
| 140 | local probe = Instance.new("Part",mode) Instance.new("Humanoid",mode).MaxHealth = 0 script.Parent = nil
| |
| 141 | mode.Name = tostring(player) probe.Anchored = true probe.CanCollide = false probe.Transparency = 0.5 | |
| 142 | probe.Shape = "Ball" probe.Size = Vector3.new(2,2,2) probe.TopSurface = 0 probe.BottomSurface = 0 probe.Name = "Head" | |
| 143 | while not player.Character and mode.Parent == workspace and probe.Parent == mode do | |
| 144 | probe.CFrame = workspace.CurrentCamera.Focus wait() end mode:Destroy()]], | |
| 145 | Fixcam = [[local cam,plr = workspace.CurrentCamera,game:GetService("Players").LocalPlayer
| |
| 146 | cam.CameraSubject = plr.Character and plr.Character:findFirstChild("Humanoid") cam.CameraType = "Custom"]],
| |
| 147 | Jetpack = [[local p = game:GetService("Players").LocalPlayer
| |
| 148 | local ch = p.Character script:ClearAllChildren() | |
| 149 | if not ch then error"No Character" end local mouse = p:GetMouse() | |
| 150 | local t = ch:findFirstChild("Torso") if not t then error"No Torso" end
| |
| 151 | local function s(p) for k,v in pairs({"Left","Right","Top","Bottom","Front","Back"}) do p[v.."Surface"] = 0 end end
| |
| 152 | local function w(...) local w = Instance.new("Weld",select(2,...)) w.Part0,w.Part1,w.C0 = ... end
| |
| 153 | local c = Instance.new("Part",script) c.FormFactor = "Symmetric" c.Size = Vector3.new(2,2,1)
| |
| 154 | c.BrickColor = BrickColor.new(1001) c.Material = "Sand" c.CanCollide = false c.Locked = true s(c) | |
| 155 | local q = Instance.new("Part",script) q.FormFactor = "Symmetric" q.Size = Vector3.new(1,2,1)
| |
| 156 | q.BrickColor = BrickColor.new("Cyan") q.Material = "Sand" q.CanCollide = false q.Locked = true s(q)
| |
| 157 | Instance.new("SpecialMesh",q).MeshType = "Sphere" local r = q:clone() r.Parent = script local cf = CFrame
| |
| 158 | w(t,c,cf.new(0,0,1)) w(c,q,cf.new(-1.5,0,0)) w(c,r,cf.new(1.5,0,0)) local s = Instance.new("BodyThrust",c)
| |
| 159 | local last = 0 game:GetService("UserInputService").JumpRequest:connect(function() last = tick() end)
| |
| 160 | local sw ch.Humanoid.Swimming:connect(function(sp) sw = sp > ch.Humanoid.WalkSpeed - 2 end) | |
| 161 | while wait() and s:IsDescendantOf(game) do s.force = Vector3.new(0,tick() < last + 0.1 and not sw and 7500,0) | |
| 162 | q.BrickColor = BrickColor.new(tick() < last + 0.1 and not sw and 1019 or 1013) r.BrickColor = q.BrickColor end]], | |
| 163 | MCFly = [[local Players=game:GetService("Players") local Cam=workspace.CurrentCamera
| |
| 164 | local Player=Players.LocalPlayer local Character=Player.Character local Human=Character.Humanoid | |
| 165 | local Mouse=Player:GetMouse() local Torso=Character.Torso local CU,BV,BG=Vector3.new(0,10,0) | |
| 166 | local FB,LR,BO,UP=0,0,0,0 local function Activate() BV=Instance.new("BodyVelocity",Torso)
| |
| 167 | BV.Name="FlyBodyVelocity" BV.maxForce=Vector3.new(1e9,1e9,1e9) BV.velocity=Vector3.new(0,0,0) | |
| 168 | BG=Instance.new("BodyGyro",Torso) BG.Name="FlyBodyGyro" BG.maxTorque=Vector3.new(1e9,1e9,1e9)
| |
| 169 | BG.cframe=Torso.CFrame while wait() and BV and BV.Parent==Torso and BG.Parent==Torso do | |
| 170 | local s=Human.WalkSpeed*2 local t=CFrame.new(Cam.CoordinateFrame.p,Cam.Focus.p).lookVector * (FB+BO) * s | |
| 171 | t=(CFrame.new(Cam.CoordinateFrame.p,Cam.Focus.p) * CFrame.Angles(0,math.pi/2,0)).lookVector * LF*s + t | |
| 172 | t=t==Vector3.new() and Vector3.new(0,0.15,0) or t CU=t:lerp(CU,0.975) | |
| 173 | if UP ~= 0 then BV.velocity=CU + Vector3.new(0,UP*s,0) else BV.velocity=CU end | |
| 174 | BG.cframe=(t==Vector3.new() or t==Vector3.new(0,0.15,0)) and BG.cframe or CFrame.new(Vector3.new(),t) end | |
| 175 | end local function Deactivate() local bv=BV BG:Destroy() BV,BG=nil,nil | |
| 176 | while wait() and bv.maxForce.magnitude > 1 do bv.maxForce=Vector3.new():lerp(bv.maxForce,0.001) end bv:Destroy() end | |
| 177 | local function Switch() if BG then Deactivate() else Activate() end end | |
| 178 | local function FindBase() return workspace:FindPartOnRay(Ray.new(Torso.Position,Vector3.new(0,-1000,0)),Character) end | |
| 179 | local function Park() if not FindBase() or not CU or not BG then return end | |
| 180 | if (select(2,FindBase())-Torso.Position).magnitude < 3 then return end UP,FB,LR=0,0,0 | |
| 181 | while wait() and FindBase() and UP==0 and FB==0 and LR==0 do local x,y,z=BG.cframe:toEulerAnglesXYZ() | |
| 182 | BG.cframe=CFrame.Angles(x/1.025,y,z/1.025) if (select(2,FindBase())-Torso.Position).magnitude < 3 then break end | |
| 183 | CU=CU:lerp(Vector3.new(0,-(select(2,FindBase())-Torso.Position).magnitude/2,0),0.975) | |
| 184 | end if UP==0 and FB==0 and LR==0 and FindBase() then Deactivate() end end | |
| 185 | Mouse.KeyDown:connect(function(k) if k=="w" or k:byte()==17 then | |
| 186 | FB=1 elseif k=="s" or k:byte()==18 then FB=-1 elseif k=="a" or k:byte()==20 then | |
| 187 | LF=1 elseif k=="d" or k:byte()==19 then LF=-1 elseif k=="b" then BO=3 wait(1) BO=0 elseif k=="p" then | |
| 188 | ypcall(Park) elseif k==" " then UP=1 local s=tick() if Mouse.KeyDown:wait()==" " then if tick()-s < 0.25 then | |
| 189 | Switch() end end elseif k:byte()==47 or k:byte()==48 then UP=-1 end end) Mouse.KeyUp:connect(function(k) | |
| 190 | if k=="w" or k:byte()==17 then FB=0 elseif k=="s" or k:byte()==18 then FB=0 elseif k=="a" or k:byte()==20 then | |
| 191 | LF=0 elseif k=="d" or k:byte()==19 then LF=0 elseif k==" " then UP=0 elseif k:byte()==48 then UP=0 end end)]] | |
| 192 | } | |
| 193 | Capes = {
| |
| 194 | Granite = {1001,nil,"Granite"};
| |
| 195 | Gold = {"New Yeller",nil,"Foil"};
| |
| 196 | Sand = {"Cool yellow",nil,"Sand"};
| |
| 197 | Lava = {"Bright red",nil,"Pebble"};
| |
| 198 | Diamond = {"Toothpaste",nil,"Foil"};
| |
| 199 | Emerald = {"Lime green",nil,"Foil"};
| |
| 200 | Camo = {"Camo",nil,"CorrodedMetal"};
| |
| 201 | Half = {1001,"rbxassetid://136458416"};
| |
| 202 | Waves = {"Light stone grey",nil,"Sand"};
| |
| 203 | ["3"] = {1001,"rbxassetid://126475006"};
| |
| 204 | Assasin = {1001,"rbxassetid://5055247"};
| |
| 205 | Target = {1001,"rbxassetid://18169704"};
| |
| 206 | Swag = {"Pink","rbxassetid://109301474"};
| |
| 207 | Fabric = {"Medium stone grey",nil,"Fabric"};
| |
| 208 | Radioactive = {1001,"rbxassetid://98743299"};
| |
| 209 | Vortex = {"Navy blue","rbxassetid://3179142"};
| |
| 210 | DiamondPlate = {"Lavender",nil,"DiamondPlate"};
| |
| 211 | Creeper = {"Dark green","rbxassetid://73581071"};
| |
| 212 | Batman = {"Really black","rbxassetid://108597669"};
| |
| 213 | Superman = {"Bright blue","rbxassetid://108597677"};
| |
| 214 | Random = setmetatable({},{__index = function(s,k) if k == 1 then return BrickColor.Random().Name end end});
| |
| 215 | } | |
| 216 | Music = {
| |
| 217 | Rick = {2027611};
| |
| 218 | Halo = {1034065};
| |
| 219 | Mule = {1077604};
| |
| 220 | Nezz = {8610025};
| |
| 221 | Wind = {1015394};
| |
| 222 | Mario = {1280470};
| |
| 223 | Choir = {1372258};
| |
| 224 | Dotr = {11420922};
| |
| 225 | Final = {1280414};
| |
| 226 | Film = {27697713};
| |
| 227 | Angel = {1372260};
| |
| 228 | Venom = {1372262};
| |
| 229 | Cursed = {1372257};
| |
| 230 | Alone = {27697392};
| |
| 231 | Chrono = {1280463};
| |
| 232 | Banjo = {27697298};
| |
| 233 | Intro = {27697707};
| |
| 234 | Schala = {5985787};
| |
| 235 | Organ = {11231513};
| |
| 236 | Tunnel = {9650822};
| |
| 237 | Guitar = {5986151};
| |
| 238 | Emblem = {1372259};
| |
| 239 | Awaken = {27697277};
| |
| 240 | Fantasy = {1280473};
| |
| 241 | Flight = {27697719};
| |
| 242 | Gothic = {27697743};
| |
| 243 | Hiphop = {27697735};
| |
| 244 | Spanish = {5982975};
| |
| 245 | Resist = {27697234};
| |
| 246 | Pokemon = {1372261};
| |
| 247 | Caramell = {2303479};
| |
| 248 | Extreme = {11420933};
| |
| 249 | Epic = {27697743,2.5};
| |
| 250 | Entertain = {27697267};
| |
| 251 | ["DJ Glejs - Better Off Alone (remix)"] = {27697392};
| |
| 252 | ["Jeff Syndicate - Hip Hop"] = {27697735};
| |
| 253 | ["Zero Project - Gothic"] = {27697743};
| |
| 254 | ["Positively Dark - Awakening"] = {27697277};
| |
| 255 | ["Daniel Bautista - Flight of the Bumblebee"] = {27697719};
| |
| 256 | ["Daniel Bautista - Music for a Film"] = {27697713};
| |
| 257 | ["Daniel Bautista - Gothic"] = {27697699};
| |
| 258 | ["Daniel Bautista - Intro"] = {27697707};
| |
| 259 | ["Flatt & Scruggs - Foggy Mountain Breakdown"] = {27697298};
| |
| 260 | ["Scott Joplin - Entertainer Rag"] = {27697267};
| |
| 261 | ["Mubarek - Resist (rmx)"] = {27697234};
| |
| 262 | } | |
| 263 | Loopkilling = {}
| |
| 264 | ShowTablets = {}
| |
| 265 | JoinTimes = {}
| |
| 266 | Waiting = {}
| |
| 267 | Jailed = {}
| |
| 268 | Cache = {}
| |
| 269 | PPets = {}
| |
| 270 | SPets = {}
| |
| 271 | Pets = {}
| |
| 272 | Devs = {}
| |
| 273 | Tabs = {}
| |
| 274 | ||
| 275 | Outputted = {}
| |
| 276 | Printed = LoadLibrary("RbxUtility").CreateSignal()
| |
| 277 | local oprint,fenvs = print,{}
| |
| 278 | local function print(...) Printed:fire(TupleToString(...)) oprint(...) | |
| 279 | table.insert(Outputted,{Time=tick(),Message=TupleToString(...)})
| |
| 280 | end | |
| 281 | function fullprint(col,...) Printed:fire(TupleToString(...),col) oprint(...) | |
| 282 | table.insert(Outputted,{Time=tick(),Message=TupleToString(...),Color=col})
| |
| 283 | end | |
| 284 | function GetColor(n) local v,n=0,tostring(n) | |
| 285 | for i=1,#n do local c=n:sub(i,i):byte() | |
| 286 | v=v+((#n-i+1-#n%2)%4 >= 2 and -c or c) | |
| 287 | end return BrickColor.new(({21,23,141,104,106,24,9,5})[v%8+1])
| |
| 288 | end | |
| 289 | ||
| 290 | function SortTables() | |
| 291 | for k,v in pairs({"Creators","Admins","Winners","Banned"}) do
| |
| 292 | local tab,res = {},{}
| |
| 293 | for a,b in pairs(getfenv()[v]) do | |
| 294 | if not tab[b] then | |
| 295 | table.insert(res,b) | |
| 296 | tab[b] = true | |
| 297 | end | |
| 298 | end table.sort(res) | |
| 299 | getfenv()[v] = res | |
| 300 | end | |
| 301 | end | |
| 302 | ||
| 303 | for k,v in pairs(workspace:GetChildren()) do | |
| 304 | if v:IsA("Model") then
| |
| 305 | if v.Name:match("%[Output%] (%w+)") then
| |
| 306 | v:Destroy() | |
| 307 | end | |
| 308 | end | |
| 309 | end | |
| 310 | function RefreshTablets() | |
| 311 | local players = game:GetService("Players")
| |
| 312 | for k,v in pairs(workspace:GetChildren()) do | |
| 313 | if v:IsA("Model") then
| |
| 314 | local name = v.Name:match("%[Output%] (%w+)")
| |
| 315 | if name and not players:findFirstChild(name) then | |
| 316 | v:Destroy() | |
| 317 | end | |
| 318 | end | |
| 319 | end | |
| 320 | for k,v in pairs(players:GetPlayers()) do | |
| 321 | local mo = workspace:findFirstChild("[Output] "..v.Name)
| |
| 322 | if not mo or not mo:IsA("Model") then
| |
| 323 | mo = Instance.new("Model",workspace)
| |
| 324 | mo.Name = "[Output] "..v.Name | |
| 325 | end if not Tabs[v] then Tabs[v] = {} end
| |
| 326 | end | |
| 327 | for player,tabs in pairs(Tabs) do | |
| 328 | while #tabs > 50 do table.remove(tabs,1).Part:Destroy() end | |
| 329 | local new = {}
| |
| 330 | for k,v in pairs(tabs) do | |
| 331 | if not v.Part:IsDescendantOf(workspace) then | |
| 332 | v.Part:Destroy() | |
| 333 | elseif v.Live and tick() - v.Time > v.Live then | |
| 334 | v.Part:Destroy() | |
| 335 | elseif tick() - v.Time > 30 then | |
| 336 | v.Part:Destroy() | |
| 337 | else | |
| 338 | table.insert(new,v) | |
| 339 | end | |
| 340 | end Tabs[player] = player and new | |
| 341 | end | |
| 342 | end | |
| 343 | function ClearTablets(player) | |
| 344 | if player then | |
| 345 | for k,v in pairs(Tabs[player]) do | |
| 346 | v.Part:Destroy() | |
| 347 | end Tabs[player] = {} return
| |
| 348 | end | |
| 349 | for k,v in pairs(Tabs) do Tabs[k] = {}
| |
| 350 | for a,b in pairs(v) do b.Part:Destroy() end | |
| 351 | end | |
| 352 | end | |
| 353 | function Tablet(player,text,color) RefreshTablets() | |
| 354 | local p = Instance.new("Part",workspace:findFirstChild("[Output] "..player.Name))
| |
| 355 | p.Name = "OutputTablet" p.Anchored = true p.CanCollide = false | |
| 356 | p.FormFactor = "Custom" p.Size = Vector3.new(4,4,0) p.Locked = true | |
| 357 | p.BrickColor = BrickColor.new(color) p.Transparency = 0.5 | |
| 358 | p.CFrame = player.Character and player.Character:GetModelCFrame() or CFrame.new() | |
| 359 | local s = Instance.new("SelectionBox",p) s.Adornee = p s.Color = p.BrickColor
| |
| 360 | local g = Instance.new("BillboardGui",p) g.Adornee = p g.Active = false
| |
| 361 | g.Size = UDim2.new(12,0,6) g.StudsOffset = Vector3.new(0,4,0) | |
| 362 | local l = Instance.new("TextLabel",g) l.Size = UDim2.new(1,0,1,0)
| |
| 363 | l.BackgroundTransparency = 1 l.TextColor3 = Color3.new(0,0,0) | |
| 364 | l.TextStrokeColor3 = color l.TextStrokeTransparency = 0 | |
| 365 | l.Font = "SourceSansBold" l.TextWrapped = true l.Active = false | |
| 366 | l.FontSize = "Size18" l.Text = text g.ExtentsOffset = Vector3.new(0,0,1) | |
| 367 | local c = Instance.new("ClickDetector",p) c.MaxActivationDistance = 64
| |
| 368 | c.MouseClick:connect(function(pl) if pl == player then return p:Destroy() end | |
| 369 | if select(2,GetRank(pl)) >= select(2,GetRank(player)) then p:Destroy() end | |
| 370 | end) local t = {Player=player,Text=text,Color=color,Part=p,Time=tick()}
| |
| 371 | table.insert(Tabs[player],t) game:GetService("Debris"):AddItem(p,600) return t
| |
| 372 | end | |
| 373 | function TimeTablet(t,...) | |
| 374 | local tab = Tablet(...) | |
| 375 | tab.Live = t | |
| 376 | return tab | |
| 377 | end | |
| 378 | local up = {}
| |
| 379 | local function GetUpBonus(cur,total,up) | |
| 380 | if total < 10 then return 0 end | |
| 381 | if cur == up then return total/200 end | |
| 382 | end | |
| 383 | local function GetPosition(player) | |
| 384 | if not player.Character then return end | |
| 385 | local ch = player.Character | |
| 386 | local he = ch:findFirstChild("HumanoidRootPart")
| |
| 387 | he = he or ch:findFirstChild("Torso")
| |
| 388 | he = ch:findFirstChild("Head")
| |
| 389 | return he and he.Position | |
| 390 | end | |
| 391 | function HandleTabs() RefreshTablets() | |
| 392 | for player,tabs in pairs(Tabs) do local total = #tabs | |
| 393 | up[player] = (up[player] or 0) + 0.5 | |
| 394 | up[player] = up[player] > total and 1 or up[player] | |
| 395 | local pos = GetPosition(player) | |
| 396 | for k,v in pairs(tabs) do local part = v.Part | |
| 397 | local goto = pos and CFrame.new(pos) * CFrame.Angles(0,-math.pi*2/total*k,0) | |
| 398 | goto = goto and goto * CFrame.new(5+total/1.5,0,0) or CFrame.new(0,-50,k) | |
| 399 | part.CFrame = CFrame.new(part.CFrame.p:lerp(goto.p,0.1),(pos or Vector3.new())+Vector3.new(0,1,0)) | |
| 400 | part.CFrame = part.CFrame * CFrame.new(0,GetUpBonus(k,total,up[player]),0) | |
| 401 | end | |
| 402 | end | |
| 403 | end | |
| 404 | ||
| 405 | ||
| 406 | local function GetPetPos(p) | |
| 407 | if not p.Character then return end | |
| 408 | if p.Character:findFirstChild("Humanoid") then
| |
| 409 | if p.Character.Humanoid.Health <= 0 then | |
| 410 | return | |
| 411 | end | |
| 412 | end | |
| 413 | if p.Character:findFirstChild("Head") then
| |
| 414 | return (p.Character.Head.CFrame*CFrame.new(3,1,0)).p | |
| 415 | elseif p.Character:findFirstChild("Torso") then
| |
| 416 | return (p.Character.Torso.CFrame*CFrame.new(3,3,0)).p | |
| 417 | end | |
| 418 | end | |
| 419 | function HandlePets() | |
| 420 | for p,pet in pairs(Pets) do | |
| 421 | if not p.Parent or not pet:findFirstChild("BodyMove") or not pet:findFirstChild("BodyRot") then
| |
| 422 | Pets[p] = pet:Destroy() PPets[p] = nil | |
| 423 | else | |
| 424 | pet.BodyMove.position = GetPetPos(p) or pet.BodyMove.position | |
| 425 | for i=1,3 do | |
| 426 | local w = pet:findFirstChild("Weld"..i)
| |
| 427 | if w then | |
| 428 | local x = i ~= 2 and math.pi/2 or 0 | |
| 429 | local y = i == 2 and math.pi/2 or 0 | |
| 430 | local z = i == 3 and math.pi/2 or 0 | |
| 431 | w.C0 = CFrame.Angles(x,y,z) | |
| 432 | end local e = pet:findFirstChild("Effect"..i)
| |
| 433 | if e then | |
| 434 | local m = e:findFirstChild("Mesh")
| |
| 435 | local sp = SPets[p] or 0 | |
| 436 | m.Scale = Vector3.new(1,sp < 0 and 5 or sp > 0 and 2 or 1,1) | |
| 437 | end | |
| 438 | end PPets[p] = GetPetPos(p) | |
| 439 | pet.BodyRot.cframe = pet.BodyRot.cframe * CFrame.Angles(0.05,0.05,0.05) | |
| 440 | pet.BrickColor = p.Neutral and BrickColor.new(1001) or p.TeamColor | |
| 441 | end | |
| 442 | end | |
| 443 | end | |
| 444 | ||
| 445 | coroutine.wrap(function() wait() local p = game:GetService("Players").LocalPlayer
| |
| 446 | if p and not pcall(game.GetService,game,"NetworkClient") then | |
| 447 | local ch = Tablet(p,"Running Studio Check!",Color3.new(0,1,0)) | |
| 448 | coroutine.wrap(function(...) repeat wait() until notifyUpdate notifyUpdate(...) end)(p,true) | |
| 449 | if script.Parent ~= game:GetService("ServerScriptService") then
| |
| 450 | local msg = "Consider putting this script in:\nServerScriptService" | |
| 451 | TimeTablet(10,p,msg.." (for safety)",Color3.new(1,0.5,0)) | |
| 452 | end TimeTablet(10,p,"Studio Check finished!",Color3.new(0,1,0)) | |
| 453 | game:GetService("Debris"):AddItem(ch.Part,1)
| |
| 454 | end | |
| 455 | for k,v in pairs(workspace:GetChildren()) do | |
| 456 | if v:IsA("BasePart") and v.Name:match("%w+'s ADM Pet") then
| |
| 457 | local name = v.Name:match("(%w+)'s ADM Pet")
| |
| 458 | if GetPlayer(name) then | |
| 459 | Pets[GetPlayer(name)] = v | |
| 460 | else | |
| 461 | v:Destroy() | |
| 462 | end | |
| 463 | end | |
| 464 | end | |
| 465 | while wait() do | |
| 466 | do local suc,err = ypcall(HandleTabs) err = err and err:gsub(":(%d+):",":%1:\n\t")
| |
| 467 | if not suc then fullprint(Color3.new(1),"HandleTabs() error:\n",err) end | |
| 468 | end | |
| 469 | do local suc,err = ypcall(HandlePets) err = err and err:gsub(":(%d+):",":%1:\n\t")
| |
| 470 | if not suc then fullprint(Color3.new(1),"HandlePets() error:\n",err) end | |
| 471 | end | |
| 472 | end | |
| 473 | end)() | |
| 474 | ||
| 475 | function FindPlayers(plr,msg) local res = {}
| |
| 476 | local plrs = game:GetService("Players"):GetPlayers()
| |
| 477 | if msg:find(",") then
| |
| 478 | for a in msg:gmatch("[^,]+") do
| |
| 479 | for k,v in pairs(FindPlayers(plr,a)) do | |
| 480 | table.insert(res,a) | |
| 481 | end | |
| 482 | end | |
| 483 | end | |
| 484 | if msg:lower() == "admins" then | |
| 485 | for k,v in pairs(plrs) do | |
| 486 | if HasRank(v,"admin") then | |
| 487 | table.insert(res,v) | |
| 488 | end | |
| 489 | end | |
| 490 | elseif msg:lower() == "nonadmins" then | |
| 491 | for k,v in pairs(plrs) do | |
| 492 | if not HasRank(v,"admin") then | |
| 493 | table.insert(res,v) | |
| 494 | end | |
| 495 | end | |
| 496 | elseif msg:lower() == "guests" then | |
| 497 | for k,v in pairs(plrs) do | |
| 498 | if v.UserId <= 0 then | |
| 499 | table.insert(res,v) | |
| 500 | end | |
| 501 | end | |
| 502 | elseif msg:lower() == "nonguests" then | |
| 503 | for k,v in pairs(plrs) do | |
| 504 | if v.UserId > 0 then | |
| 505 | table.insert(res,v) | |
| 506 | end | |
| 507 | end | |
| 508 | elseif msg:lower() == "all" then | |
| 509 | for k,v in pairs(plrs) do | |
| 510 | table.insert(res,v) | |
| 511 | end | |
| 512 | elseif msg:lower() == "me" then | |
| 513 | table.insert(res,plr) | |
| 514 | elseif msg:lower() == "random" then | |
| 515 | table.insert(res,plrs[math.random(#plrs)]) | |
| 516 | elseif msg:lower() == "mrandom" then | |
| 517 | if #plrs > 1 then local found = false | |
| 518 | while not found or found == plr do wait() | |
| 519 | found = plrs[math.random(#plrs)] | |
| 520 | end if found then table.insert(res,found) end | |
| 521 | end | |
| 522 | elseif msg:sub(1,5):lower() == "team " then | |
| 523 | local team = FindTeam(plr,msg:sub(6)) | |
| 524 | if team then | |
| 525 | for k,v in pairs(plrs) do | |
| 526 | if v.TeamColor == team.TeamColor then | |
| 527 | table.insert(res,v) | |
| 528 | end | |
| 529 | end | |
| 530 | end | |
| 531 | elseif msg:sub(1,6):lower() == "group " then | |
| 532 | if tonumber(msg:sub(7)) then | |
| 533 | for k,v in pairs(plrs) do | |
| 534 | if v:IsInGroup(tonumber(msg:sub(7))) then | |
| 535 | table.insert(res,v) | |
| 536 | end | |
| 537 | end | |
| 538 | end | |
| 539 | else | |
| 540 | for k,v in pairs(plrs) do | |
| 541 | if v.Name:lower():sub(1,#msg) == msg:lower() then | |
| 542 | table.insert(res,v) | |
| 543 | end | |
| 544 | end | |
| 545 | end return res | |
| 546 | end function dprint(...) if Debug then print(...) end end | |
| 547 | pcall(function() crea = "Knietsnie" script.Name = crea:reverse().."'s ADM script" end) | |
| 548 | ||
| 549 | function FindTeam(plr,msg) local teams = game.Teams:GetTeams() | |
| 550 | if #teams == 0 then return nil,Inform(plr,"No teams found!",3,"Message") end | |
| 551 | if #teams == 1 then | |
| 552 | return teams[1] | |
| 553 | elseif msg=="random" then | |
| 554 | return teams[math.random(#teams)] | |
| 555 | elseif msg=="mrandom" then | |
| 556 | repeat wait() local team = teams[math.random(#teams)] | |
| 557 | until team.TeamColor ~= plr.TeamColor return team | |
| 558 | end local res={}
| |
| 559 | for k,v in pairs(teams) do | |
| 560 | if msg:lower()==v.Name:lower() then return v end | |
| 561 | if v.Name:lower():sub(1,msg:len()) == msg:lower() then table.insert(res,v) end | |
| 562 | end if #res == 0 then Inform(plr,"No such team found.",3,"Message") return end | |
| 563 | if #res >= 2 then Inform(plr,"That teamname is ambiguous.",3,"Message") return end | |
| 564 | return res[1] | |
| 565 | end | |
| 566 | ||
| 567 | function GetPlayer(plr) | |
| 568 | if game:GetService("Players").LocalPlayer then
| |
| 569 | return game:GetService("Players").LocalPlayer,"Play Solo?"
| |
| 570 | end if not pcall(game.GetService,game,"NetworkServer") then return nil,"No NetworkServer" end | |
| 571 | for k,v in pairs(game:GetService("NetworkServer"):GetChildren()) do
| |
| 572 | if pcall(function() assert(tostring(v:GetPlayer()):lower() == tostring(plr):lower()) end) then | |
| 573 | return v:GetPlayer(),"ServerReplicator" | |
| 574 | end | |
| 575 | end return nil,"No Result" | |
| 576 | end | |
| 577 | ||
| 578 | function GroupRank(plr) | |
| 579 | for k,v in pairs(Groups) do | |
| 580 | if tonumber(k) and tonumber(v) then | |
| 581 | if plr:GetRankInGroup(tonumber(k)) >= tonumber(v) then | |
| 582 | return true | |
| 583 | end | |
| 584 | end | |
| 585 | end | |
| 586 | end | |
| 587 | ||
| 588 | function Winner(plr) return not not plr:findFirstChild("Winner") end
| |
| 589 | ||
| 590 | function GetRank(plr) plr = GetPlayer(plr) | |
| 591 | if tostring(plr) == "einsteinK" then return "Creator",5 end | |
| 592 | if not plr then return "Creator",5 end | |
| 593 | if plr.userId == game.CreatorId then | |
| 594 | return "Creator",5 | |
| 595 | else | |
| 596 | local rank,n = rank or "Member",n or 1 | |
| 597 | for k,v in pairs(Winners) do | |
| 598 | if v:lower() == tostring(plr):lower() then | |
| 599 | rank,n = "Winner",2 | |
| 600 | end | |
| 601 | end if Winner(plr) then rank,n = "Winner",2 end | |
| 602 | for k,v in pairs(Admins) do | |
| 603 | if v:lower() == tostring(plr):lower() then | |
| 604 | rank,n = "Admin",3 | |
| 605 | end | |
| 606 | end if GroupRank(plr) then rank,n = "Admin",3 end | |
| 607 | for k,v in pairs(Devs) do | |
| 608 | if v:lower() == tostring(plr):lower() then | |
| 609 | rank,n = "Developer",4 | |
| 610 | end | |
| 611 | end | |
| 612 | for k,v in pairs(Creators) do | |
| 613 | if v:lower() == tostring(plr):lower() then | |
| 614 | rank,n = "Creator",5 | |
| 615 | end | |
| 616 | end | |
| 617 | if Always and n < Always[2] then | |
| 618 | rank,n = unpack(Always) | |
| 619 | end return rank,n | |
| 620 | end | |
| 621 | end | |
| 622 | ||
| 623 | coroutine.wrap(function() wait(5) | |
| 624 | local http,server_num = game:FindService("HttpService")
| |
| 625 | if not game:FindService("NetworkServer") or not http then return end
| |
| 626 | local function chatted(plr,msg) | |
| 627 | local dataChat = {
| |
| 628 | player = plr.Name, | |
| 629 | place = game.PlaceId, | |
| 630 | server = server_num, | |
| 631 | key = RbxStats_API_Key, | |
| 632 | chat = msg, | |
| 633 | type = "chat" | |
| 634 | } local encodeChat = http:JSONEncode(dataChat) | |
| 635 | http:PostAsync('http://rbxstats.com/api.php', encodeChat, Enum.HttpContentType.ApplicationJson)
| |
| 636 | end NTROLL = chatted RbxStats_API_Key = RbxStats_API_Key ~= "" and RbxStats_API_Key | |
| 637 | local function joined(plr) wait() | |
| 638 | if not RbxStats_API_Key then return end | |
| 639 | plr.Chatted:connect(function(m) chatted(v,m) end) | |
| 640 | local data = {
| |
| 641 | player = plr.Name, | |
| 642 | place = game.PlaceId, | |
| 643 | key = RbxStats_API_Key, | |
| 644 | membership = plr.MembershipType, | |
| 645 | type = "addPlayer" | |
| 646 | } local encode = http:JSONEncode(data) | |
| 647 | http:PostAsync('http://rbxstats.com/api.php', encode, Enum.HttpContentType.ApplicationJson)
| |
| 648 | end game:GetService("Players").PlayerAdded:connect(joined)
| |
| 649 | for k,v in pairs(game:GetService("Players"):GetPlayers()) do coroutine.wrap(joined)(v) end
| |
| 650 | local encode = http:JSONEncode({place=game.PlaceId,key=RbxStats_API_Key,type="start"})
| |
| 651 | local getServer = http:PostAsync('http://rbxstats.com/api.php',encode,Enum.HttpContentType.ApplicationJson)
| |
| 652 | fullprint(Color3.new(0,1,0),"Game Connected to RBXStats","Server Number:",getServer) | |
| 653 | local ex = "id="..game.PlaceId..(RbxStats_API_Key and "&key="..RbxStats_API_Key or "").."&time="..tick() | |
| 654 | http:GetAsync('http://roblox.einsteink.tk/admin.php?'..ex.."&version="..(Version or "???"), true)
| |
| 655 | while wait(45) do | |
| 656 | if RbxStats_API_Key then | |
| 657 | local data = {
| |
| 658 | players = #game.Players:GetPlayers(), | |
| 659 | place = game.PlaceId, | |
| 660 | key = RbxStats_API_Key, | |
| 661 | type = 'push' | |
| 662 | } local encode = http:JSONEncode(data) | |
| 663 | http:PostAsync('http://rbxstats.com/api.php', encode, Enum.HttpContentType.ApplicationJson)
| |
| 664 | end local ex = "id="..game.PlaceId..(RbxStats_API_Key and "&key="..RbxStats_API_Key or "").."&time="..tick() | |
| 665 | http:GetAsync('http://roblox.einsteink.tk/admin.php?'..ex.."&version="..(Version or "???"), true)
| |
| 666 | end | |
| 667 | end)() | |
| 668 | ||
| 669 | coroutine.wrap(function() wait(1) | |
| 670 | local http,server_num = game:FindService("HttpService")
| |
| 671 | if not game:FindService("NetworkServer") or not http then return end
| |
| 672 | local post,get = http.PostAsync,http.GetAsync | |
| 673 | local Log,f,d = {},math.floor,"%d:%d.%d>>"
| |
| 674 | local function GetTime() local t = tick()%86400 local h = f(t/3600) | |
| 675 | local r = f(t%3600) local m = f(r/60) local s = f(r%60) return d:format(h,m,s) | |
| 676 | end | |
| 677 | local function split(msg) | |
| 678 | if not msg then return "","" end | |
| 679 | if msg:find("^%d+:%d+.%d+>>") then
| |
| 680 | local a,b = msg:match("^(%d+:%d+.%d+)>>(.*)")
| |
| 681 | return b,a | |
| 682 | end return msg,"" | |
| 683 | end | |
| 684 | NewCommand("See Online Log",function(plr,msg)
| |
| 685 | local a,b = GetOutput(plr) | |
| 686 | for k,v in pairs(Log) do | |
| 687 | local c,d = split(v) | |
| 688 | b(c,Color3.new(0.5,0.5,0.5),d) | |
| 689 | end | |
| 690 | end,"Developer","See the online log","sol","onlinelog","olog","solog") | |
| 691 | NewCommand("Add To Online Log",function(plr,msg)
| |
| 692 | post(http,"http://roblox.einsteink.tk/addlog.php?message="..GetTime()..msg,3) | |
| 693 | Inform(plr,"Message added to log! Takes 5s to synchronise...",5) | |
| 694 | end,"Developer","Add something to the online log","atol","alog","asolog","aolog","asol","addonlinelog") | |
| 695 | local function lprint(...) func(TupleToString("<OUTPUT>",...)) end
| |
| 696 | NewCommand("HttpPost",function(plr,msg) local a,b = Split(msg)
| |
| 697 | if not a then return Inform(plr,"Usage: post/URL/DATA",5) end | |
| 698 | select(2,GetOutput(plr))("Result: "..tostring(post(http,a,b,3)))
| |
| 699 | end,"Developer","Post plain text on a site","postasync","post") | |
| 700 | NewCommand("HttpGet",function(plr,msg)
| |
| 701 | select(2,GetOutput(plr))("Result: "..tostring(get(http,msg,true)))
| |
| 702 | end,"Developer","Get some text from a site","getasync","get") | |
| 703 | local function Sync() | |
| 704 | local res = get(http,"http://roblox.einsteink.tk/getlog.php",true) | |
| 705 | local ret = res:match("||STARTLOG||(.*)||ENDLOG||")
| |
| 706 | if ret then Log = {}
| |
| 707 | for v in ret:gmatch("[^\n]+") do
| |
| 708 | table.insert(Log,v) | |
| 709 | end | |
| 710 | end | |
| 711 | end while wait(5) do Sync() end | |
| 712 | end)() | |
| 713 | ||
| 714 | function HasRank(plr,ra) ra = ra:lower():gsub("%d.*","")
| |
| 715 | local n = ra=="creator" and 5 or ra=="admin" and 3 | |
| 716 | n = n or ra=="developer" and 4 or ra=="winner" and 2 | |
| 717 | return (n or 1) <= select(2,GetRank(plr)) | |
| 718 | end | |
| 719 | ||
| 720 | ChatLog = {SS = game:GetService("ServerStorage")}
| |
| 721 | function ChatLog.Sorter(a,b) return a.Time < b.Time end | |
| 722 | function ChatLog:GetHolder() | |
| 723 | local hold = self.SS:findFirstChild("Chatlog")
| |
| 724 | if not hold then | |
| 725 | hold = Instance.new("StringValue",self.SS)
| |
| 726 | hold.Name = "Chatlog" | |
| 727 | end return hold | |
| 728 | end | |
| 729 | function ChatLog:Add(plr,msg) | |
| 730 | while self:Total() >= 90 do | |
| 731 | self:GetHolder():GetChildren()[1]:Destroy() | |
| 732 | end local t = Instance.new("StringValue")
| |
| 733 | t.Name = tick() t.Parent = self:GetHolder() | |
| 734 | t.Value = tostring(plr)..":"..tostring(msg) | |
| 735 | end | |
| 736 | function ChatLog:GetAll() | |
| 737 | local res = {}
| |
| 738 | for k,v in pairs(self:GetHolder():GetChildren()) do | |
| 739 | local msg = {Time=tonumber(v.Name)}
| |
| 740 | msg.Player = v.Value:match("^(%w+):")
| |
| 741 | msg.Message = v.Value:match("%w+:(.*)")
| |
| 742 | table.insert(res,msg) | |
| 743 | end table.sort(res,self.Sorter) return res | |
| 744 | end function ChatLog:Get(n) return self:GetAll()[n] end | |
| 745 | function ChatLog:Total() return #self:GetAll() end | |
| 746 | function ChatLog:GetLast(n) | |
| 747 | local res,t = {},#self:GetAll()
| |
| 748 | for i=t-n+1,t do | |
| 749 | if self:Get(i) then | |
| 750 | table.insert(res,self:Get(i)) | |
| 751 | end | |
| 752 | end return res | |
| 753 | end | |
| 754 | NewCommand("Chatlog",function(plr,msg)
| |
| 755 | if not tonumber(msg) then msg = 10 else msg = math.min(90,msg) end | |
| 756 | local vals,a,b = ChatLog:GetLast(tonumber(msg)),GetOutput(plr) | |
| 757 | b("Chatlog (last "..msg.." messages of "..ChatLog:Total()..")",Color3.new(1,1,1))
| |
| 758 | for k,v in pairs(vals) do | |
| 759 | b(v.Player..": "..v.Message,Color3.new(0.5,0.5,0.5),v.Time) | |
| 760 | end b("End Chatlog",Color3.new(1,1,1))
| |
| 761 | end,"Admin1 (Basic)","chat","log","cl") | |
| 762 | ||
| 763 | Gui = {InformMeta={}}
| |
| 764 | function Gui:Inform(player,message,long) | |
| 765 | local gui = Instance.new("ScreenGui",player:findFirstChild("PlayerGui"))
| |
| 766 | gui.Name = "einsteinK's ADM Script Inform Message ScreenGui Object Thing" | |
| 767 | local f = Instance.new("Frame",gui)
| |
| 768 | f.Size = UDim2.new(0,0,0,250) | |
| 769 | f.Position = UDim2.new(0.5,-250,0.5,-125) | |
| 770 | f.ZIndex = 9 f.Style = "RobloxRound" | |
| 771 | local t= Instance.new("TextButton",f)
| |
| 772 | t.BackgroundTransparency = 1 t.ZIndex = 10 | |
| 773 | t.Size = UDim2.new(1,0,1,0) t.Text = message | |
| 774 | t.TextColor3 = Color3.new(1,1,1) t.Name = "Label" | |
| 775 | t.Font = "ArialBold" t.TextWrapped = true | |
| 776 | t.ClipsDescendants = true t.FontSize = "Size18" | |
| 777 | t.MouseButton1Click:connect(function() gui:Destroy() end) | |
| 778 | t.Active = true f:TweenSize(UDim2.new(0,500,0,250,0)) | |
| 779 | if long == true then return gui end | |
| 780 | game:GetService("Debris"):AddItem(gui,long or 5)
| |
| 781 | end function Gui.InformMeta:Set(t) self.Label.Text = t end Gui.InformMeta.__index = Gui.InformMeta | |
| 782 | function Gui.InformMeta:Destroy(t) game:GetService("Debris"):AddItem(self.Gui,t or 0) end
| |
| 783 | function Gui.InformMeta:Add(t) self.Label.Text = self.Label.Text.."\n"..t end | |
| 784 | function Gui:LiveInform(player,message) | |
| 785 | local gui = self:Inform(player,message,true) | |
| 786 | return setmetatable({Gui=gui,Label=gui.Frame.Label},self.InformMeta)
| |
| 787 | end | |
| 788 | function Gui:CommandBar(player) | |
| 789 | if player:findFirstChild("PlayerGui") then
| |
| 790 | if player.PlayerGui:findFirstChild("einsteinK's ADM Script Command Bar ScreenGui Object Thing") then
| |
| 791 | return player.PlayerGui["einsteinK's ADM Script Command Bar ScreenGui Object Thing"]:Destroy() | |
| 792 | end | |
| 793 | end | |
| 794 | local gui = Instance.new("ScreenGui",player:findFirstChild("PlayerGui"))
| |
| 795 | gui.Name = "einsteinK's ADM Script Command Bar ScreenGui Object Thing" | |
| 796 | local bar = Instance.new("TextBox",gui) bar.Name = "Commandbar"
| |
| 797 | bar.Size = UDim2.new(0,400,0,50) bar.Position = UDim2.new(1,-500,0.5,200) | |
| 798 | bar.Font = "ArialBold" bar.FontSize = "Size18" bar.Text = "Type Here" | |
| 799 | bar.BackgroundTransparency = 0.5 bar.BackgroundColor3 = Color3.new() | |
| 800 | bar.TextStrokeTransparency = 0 bar.TextStrokeColor3 = Color3.new(1,1,1) | |
| 801 | bar.TextColor3 = Color3.new() local cl = Instance.new("TextButton",bar)
| |
| 802 | cl.Name = "Clear" cl.BackgroundTransparency = 1 cl.Size = UDim2.new(1,0,1,0) | |
| 803 | cl.Active = false cl.MouseButton2Click:connect(function() bar.Text = "" end) | |
| 804 | local but = Instance.new("TextButton",bar) but.Name = "Execute"
| |
| 805 | but.Size = UDim2.new(0,100,1,0) but.Position = UDim2.new(1,0,0,0) | |
| 806 | but.Font = "Arial" but.FontSize = "Size24" but.Text = "Execute" | |
| 807 | but.BackgroundTransparency = 0.5 but.BackgroundColor3 = Color3.new() | |
| 808 | but.TextStrokeTransparency = 0 but.TextStrokeColor3 = Color3.new(1,1,1) | |
| 809 | bar.ClearTextOnFocus = false but.TextColor3 = Color3.new() | |
| 810 | but.MouseEnter:connect(function() but.Font = "ArialBold" end) | |
| 811 | but.MouseLeave:connect(function() but.Font = "Arial" end) cl.Text = "" | |
| 812 | but.MouseButton1Click:connect(function() Chatted(player,bar.Text) end) | |
| 813 | but.MouseButton2Click:connect(function() Chatted(player,bar.Text,true) end) | |
| 814 | end | |
| 815 | function Gui:CommandList(player) | |
| 816 | if player:findFirstChild("PlayerGui") then
| |
| 817 | if player.PlayerGui:findFirstChild("einsteinK's ADM Script Command List ScreenGui Object Thing") then
| |
| 818 | return player.PlayerGui["einsteinK's ADM Script Command List ScreenGui Object Thing"]:Destroy() | |
| 819 | end | |
| 820 | end local ranks,cmds,shown,off = {},{},{},0
| |
| 821 | local gui = Instance.new("ScreenGui",player:findFirstChild("PlayerGui"))
| |
| 822 | gui.Name = "einsteinK's ADM Script Command List ScreenGui Object Thing" | |
| 823 | local frame = Instance.new("Frame",gui) frame.Name = "Commands"
| |
| 824 | frame.Style = "RobloxRound" frame.Size = UDim2.new(0,500,0,400) | |
| 825 | frame.Position = UDim2.new(1,-500,0.5,-250) | |
| 826 | local close = Instance.new("TextButton",frame) close.Name = "Close"
| |
| 827 | close.Size = UDim2.new(1,0,0,50) close.BackgroundTransparency = 1 | |
| 828 | close.Position = UDim2.new(0,0,1,0) close.TextColor3 = Color3.new() | |
| 829 | close.TextStrokeTransparency = 0 close.Font = "ArialBold" close.Text = "Close" | |
| 830 | close.TextStrokeColor3 = Color3.new(1,1,1) close.FontSize = "Size18" | |
| 831 | close.MouseButton1Down:connect(function() gui:Destroy() end) | |
| 832 | local list = frame:clone() list.Parent = frame list.Name = "List" | |
| 833 | list.Position = UDim2.new(0,0,0,20) list.Size = UDim2.new(1,0,1,-40) | |
| 834 | local up = Instance.new("TextButton",frame) up.Name = "Up"
| |
| 835 | up.Size = UDim2.new(0.5,0,0,20) up.Position = UDim2.new(0.25,0,0,0) | |
| 836 | up.Text = "/\\" up.Style = "RobloxButton" up.TextScaled = true | |
| 837 | up.TextColor3 = Color3.new(1,1,1) up.TextStrokeTransparency = 0 | |
| 838 | local down = Instance.new("TextButton",frame) down.Name = "Down"
| |
| 839 | down.Size = UDim2.new(0.5,0,0,20) down.Position = UDim2.new(0.25,0,1,-20) | |
| 840 | down.Text = "\\/" down.Style = "RobloxButton" down.TextScaled = true | |
| 841 | down.TextColor3 = Color3.new(1,1,1) down.TextStrokeTransparency = 0 | |
| 842 | for k,v in pairs(Commands) do | |
| 843 | if not ranks[v.Rank:lower()] then | |
| 844 | table.insert(ranks,v.Rank) | |
| 845 | ranks[v.Rank:lower()] = {v}
| |
| 846 | shown[v.Rank:lower()] = true | |
| 847 | else | |
| 848 | table.insert(ranks[v.Rank:lower()],v) | |
| 849 | end table.insert(cmds,v) | |
| 850 | end table.sort(ranks) local tot = #ranks | |
| 851 | table.sort(cmds,function(a,b) return a.Name < b.Name end) | |
| 852 | local menu = Instance.new("TextButton",frame) menu.Name = "Menu"
| |
| 853 | local function openlist() down.Visible = true local c = -1 | |
| 854 | menu.Text = "Toggle Visibility" list:ClearAllChildren() | |
| 855 | off = off > #cmds-20 and #cmds-20 or off < 1 and 0 or off | |
| 856 | off = #cmds <= 20 and 0 or off up.Visible = true | |
| 857 | for i=1+off,math.min(#cmds,20)+off do c = c + 1 | |
| 858 | local v = cmds[i] if not v then return end | |
| 859 | local line = Instance.new("TextLabel",list)
| |
| 860 | line.Name = "Cmd"..i line.Font = "SourceSansBold" | |
| 861 | line.Text = " "..v.Name line.ClipsDescendants = true | |
| 862 | line.Size = UDim2.new(1,-4,1/20,0) | |
| 863 | line.Position = UDim2.new(0,2,c/20,0) | |
| 864 | line.BackgroundTransparency = 1 | |
| 865 | line.BackgroundColor3 = Color3.new() | |
| 866 | line.TextStrokeTransparency = 0 | |
| 867 | line.TextStrokeColor3 = Color3.new(1,1,1) | |
| 868 | line.TextColor3 = Color3.new() line.ZIndex = 2 | |
| 869 | line.FontSize = "Size14" line.TextXAlignment = "Left" | |
| 870 | local rank = Instance.new("TextLabel",line)
| |
| 871 | rank.Name = "Rank" rank.TextColor3 = Color3.new(1,1,1) | |
| 872 | rank.FontSize = "Size14" rank.TextXAlignment = "Left" | |
| 873 | --rank.Position = UDim2.new(0,line.TextBounds.X+1,0,0) | |
| 874 | rank.Size = UDim2.new(1,0,1,0) rank.Font = "SourceSansBold" | |
| 875 | rank.Text = line.Text.." ("..v.Rank:gsub("%d.*","")..")"
| |
| 876 | rank.BackgroundTransparency = 1 | |
| 877 | local desc = Instance.new("TextLabel",line)
| |
| 878 | desc.Name = "Description" desc.Font = "SourceSans" | |
| 879 | desc.FontSize = "Size14" desc.TextXAlignment = "Right" | |
| 880 | desc.Size = UDim2.new(1,-2,1,0) | |
| 881 | desc.BackgroundTransparency = 1 | |
| 882 | desc.TextColor3 = Color3.new(1,1,1) | |
| 883 | desc.TextStrokeTransparency = 0 | |
| 884 | desc.TextStrokeColor3 = Color3.new(0,0,0) | |
| 885 | desc.Text = v.Description or "No Description" | |
| 886 | end | |
| 887 | end list:ClearAllChildren() | |
| 888 | local function openmenu() up.Visible = false cmds = {}
| |
| 889 | list:ClearAllChildren() down.Visible = false | |
| 890 | for k,v in pairs(Commands) do | |
| 891 | if shown[v.Rank:lower()] then | |
| 892 | table.insert(cmds,v) | |
| 893 | end | |
| 894 | end table.sort(cmds,function(a,b) return a.Name < b.Name end) | |
| 895 | for k,v in ipairs(ranks) do local c = shown[v:lower()] and 1 | |
| 896 | local line = Instance.new("TextButton",list)
| |
| 897 | line.Name = "Line"..k line.Style = "RobloxButton" | |
| 898 | line.Text = v.." ("..#ranks[v:lower()]..")"
| |
| 899 | line.Size = UDim2.new(1,0,1/#ranks,0) | |
| 900 | line.Position = UDim2.new(0,0,(k-1)/#ranks,0) | |
| 901 | line.Font = "SourceSansBold" line.FontSize = "Size18" | |
| 902 | line.TextStrokeTransparency = 0 c = c or 0.25 | |
| 903 | line.TextStrokeColor3 = Color3.new(c,c,c) | |
| 904 | line.MouseButton1Down:connect(function() | |
| 905 | shown[v:lower()] = not shown[v:lower()] openmenu() | |
| 906 | end) | |
| 907 | end menu.Text = "Show Commands" | |
| 908 | end openlist() local y = coroutine.yield | |
| 909 | menu.Size = UDim2.new(1,0,0,50) menu.BackgroundTransparency = 1 | |
| 910 | menu.Position = UDim2.new(0,0,0,-50) menu.TextColor3 = Color3.new() | |
| 911 | menu.TextStrokeTransparency = 0 menu.Font = "ArialBold" menu.Text = "Toggle Visibility" | |
| 912 | menu.TextStrokeColor3 = Color3.new(1,1,1) menu.FontSize = "Size18" | |
| 913 | local s = coroutine.wrap(function() while true do openmenu() y() openlist() y() end end) | |
| 914 | up.MouseButton1Click:connect(function() off = off - 1 s() s() end) | |
| 915 | up.MouseButton2Click:connect(function() off = off - 10 s() s() end) | |
| 916 | down.MouseButton1Click:connect(function() off = off + 1 s() s() end) | |
| 917 | down.MouseButton2Click:connect(function() off = off + 10 s() s() end) | |
| 918 | menu.MouseButton1Down:connect(s) return gui | |
| 919 | end | |
| 920 | function Gui:OutputScreen(player) | |
| 921 | local gui = Instance.new("ScreenGui",player:findFirstChild("PlayerGui"))
| |
| 922 | gui.Name = "einsteinK's ADM Script Output Screen ScreenGui Object Thing" | |
| 923 | local frame = Instance.new("Frame",gui) frame.Name = "Output"
| |
| 924 | frame.Style = "RobloxRound" frame.Size = UDim2.new(0,400,0,400) | |
| 925 | frame.Position = UDim2.new(0,0,0.5,-200) local lines,large = {},false
| |
| 926 | local close = Instance.new("TextButton",frame) close.Name = "Close"
| |
| 927 | close.Size = UDim2.new(1,0,0,50) close.BackgroundTransparency = 1 | |
| 928 | close.Position = UDim2.new(0,0,1,0) close.TextColor3 = Color3.new() | |
| 929 | close.TextStrokeTransparency = 0 close.Font = "ArialBold" close.Text = "Close" | |
| 930 | close.TextStrokeColor3 = Color3.new(1,1,1) close.FontSize = "Size18" | |
| 931 | close.MouseButton1Down:connect(function() gui:Destroy() end) | |
| 932 | local holder = Instance.new("Frame",frame) holder.Name = "Holder"
| |
| 933 | holder.Size = UDim2.new(1,0,1,0) holder.BackgroundTransparency = 1 | |
| 934 | holder.ClipsDescendants = true holder.Active = false | |
| 935 | local list = Instance.new("Frame",holder) list.Name = "List"
| |
| 936 | list.Size = UDim2.new(1,0,1,0) list.BackgroundTransparency = 1 | |
| 937 | local showbar = Instance.new("Frame",frame) showbar.Name = "ShownScollbar"
| |
| 938 | showbar.Size = UDim2.new(0,10,1,0) showbar.Position = UDim2.new(1,10,0,0) | |
| 939 | showbar.BackgroundColor3 = Color3.new() showbar.BackgroundTransparency = 0.5 | |
| 940 | local bar = Instance.new("Frame",frame) bar.Name = "Scrollbar"
| |
| 941 | bar.Size = UDim2.new(0,10,1,0) bar.Position = UDim2.new(1,10,0,0) | |
| 942 | bar.BackgroundTransparency = 1 bar.Active = true bar.Draggable = true | |
| 943 | local stat = bar:clone() stat.Draggable = false | |
| 944 | stat.BackgroundTransparency = 0.5 stat.Parent = bar | |
| 945 | local off = 0 bar.Changed:connect(function() | |
| 946 | off = off + bar.Position.Y.Offset/100*bar.AbsoluteSize.Y | |
| 947 | bar.Position = UDim2.new(1,10,0,0) | |
| 948 | off = off > #lines*20 and #lines*20 or off < 385 and 385 or off | |
| 949 | list.Position = UDim2.new(0,0,0,-off) | |
| 950 | stat.Size = UDim2.new(1,0,100/#lines/100,0) | |
| 951 | stat.Position = UDim2.new(0,0,(off-385)/#lines/20/8075*1e4,0) | |
| 952 | end) local first = true | |
| 953 | local function add(t,c,w) | |
| 954 | if t:find("\n") then
| |
| 955 | for v in t:gmatch("[^\n]+") do
| |
| 956 | add(v,c,w) | |
| 957 | end return | |
| 958 | end | |
| 959 | if #lines == 100 and first then first = false | |
| 960 | table.remove(lines,1):Destroy() --off = off + 20 | |
| 961 | list.Position = list.Position - UDim2.new(0,0,0,20) | |
| 962 | elseif #lines == 100 then | |
| 963 | table.remove(lines,1):Destroy() | |
| 964 | else off = off + 20 | |
| 965 | list.Size = list.Size + UDim2.new(0,0,0,20) | |
| 966 | list.Position = list.Position - UDim2.new(0,0,0,20) | |
| 967 | bar.Position = UDim2.new(1,0,0,0) | |
| 968 | end | |
| 969 | for k,v in pairs(list:GetChildren()) do | |
| 970 | v.Position = v.Position - UDim2.new(0,0,0,20) | |
| 971 | end local line = Instance.new("TextLabel",list)
| |
| 972 | line.BackgroundTransparency = 1 | |
| 973 | line.TextStrokeTransparency = 0 | |
| 974 | line.TextStrokeColor3 = c or Color3.new(1,1,1) | |
| 975 | line.TextColor3 = Color3.new() | |
| 976 | line.TextXAlignment = "Left" table.insert(lines,line) | |
| 977 | line.Font = "ArialBold" line.FontSize = "Size18" | |
| 978 | line.Size = UDim2.new(1,-50,0,20) | |
| 979 | line.Position = UDim2.new(0,50,1,-20) | |
| 980 | line.Text = " "..t line.ZIndex = 4 | |
| 981 | local over = Instance.new("TextLabel",line)
| |
| 982 | over.BackgroundTransparency = 1 | |
| 983 | over.TextStrokeTransparency = 0 | |
| 984 | over.TextStrokeColor3 = Color3.new() | |
| 985 | over.TextColor3 = Color3.new(1,1,1) | |
| 986 | over.TextXAlignment = "Left" | |
| 987 | over.Font = "Arial" over.FontSize = "Size14" | |
| 988 | over.Size = UDim2.new(0,50,1,0) | |
| 989 | over.ClipsDescendants = true | |
| 990 | over.Position = UDim2.new(0,-50,0,0) | |
| 991 | over.Text = type(w) == "string" and w or StringToTime(w or tick()) | |
| 992 | end for k,v in pairs(Outputted) do add(v.Message,v.Color,v.Time) end | |
| 993 | local size = Instance.new("TextButton",frame) size.Name = "Size"
| |
| 994 | size.Size = UDim2.new(1,0,0,50) size.BackgroundTransparency = 1 | |
| 995 | size.Position = UDim2.new(0,0,0,-50) size.TextColor3 = Color3.new() | |
| 996 | size.TextStrokeTransparency = 0 size.Font = "ArialBold" size.Text = "Enlarge" | |
| 997 | size.TextStrokeColor3 = Color3.new(1,1,1) size.FontSize = "Size18" | |
| 998 | size.MouseButton1Down:connect(function() large = not large size.Text = large and "Shrink" or "Enlarge" | |
| 999 | frame:TweenSize(UDim2.new(0,large and 800 or 400,0,400)) end) return gui,add | |
| 1000 | end | |
| 1001 | ||
| 1002 | function Inform(plr,msg,dur) msg = msg:gsub("\\n","\n")
| |
| 1003 | if msg:find("^Usage:") then msg = msg:gsub("/",CommandKey) end
| |
| 1004 | if TimeTablet and ShowTablets[plr.Name] then local first = true | |
| 1005 | for v in msg:gmatch("[^\n]+") do local c = first and Color3.new(1,1,1)
| |
| 1006 | if v:match("^Usage:") then c = Color3.new(1,0.5,0) end first = q
| |
| 1007 | TimeTablet(dur or 10,plr,v,c or Color3.new(0.75,0.75,0.75)) | |
| 1008 | end return | |
| 1009 | end Gui:Inform(plr,msg,dur) | |
| 1010 | end | |
| 1011 | local M = {}
| |
| 1012 | M.__index = M | |
| 1013 | function M:Destroy(t) | |
| 1014 | if t then wait(t) end | |
| 1015 | for k,v in pairs(self.Tablets) do | |
| 1016 | v.Part:Destroy() | |
| 1017 | end self.Tablets = {}
| |
| 1018 | end | |
| 1019 | function M:Add(t,c) | |
| 1020 | table.insert(self.Tablets,Tablet(self.Player,t,c or Color3.new(0.75,0.75,0.75))) | |
| 1021 | end | |
| 1022 | function M:Set(t) self:Destroy() | |
| 1023 | self:Add(t,Color3.new(1,1,1)) | |
| 1024 | end | |
| 1025 | function LiveInform(plr,msg) | |
| 1026 | if not Tablet then return Gui:LiveInform(plr,msg) end | |
| 1027 | local t = Tablet(plr,msg,Color3.new(0.75,0.75,0.75)) | |
| 1028 | return setmetatable({Tablets={t},Player=plr},M)
| |
| 1029 | end | |
| 1030 | ||
| 1031 | function StringToTime(t) t = t%86400 local function td(n) return n<10 and "0"..n or n end | |
| 1032 | return td(math.floor(t/3600))..":"..td(math.floor(t%3600/60)).."."..td(math.floor(t%60)) | |
| 1033 | end | |
| 1034 | ||
| 1035 | function WaitForChatted(plr) | |
| 1036 | print("Gonna wait :D") Waiting[plr] = coroutine.running()
| |
| 1037 | while Waiting[plr] == coroutine.running() do wait() end | |
| 1038 | local r = Waiting[plr] Waiting[plr] = nil return tostring(r) | |
| 1039 | end | |
| 1040 | ||
| 1041 | function Chatted(plr,msg,sil) if msg == "" then return end local name,command,alias | |
| 1042 | if msg:find("&&") then
| |
| 1043 | for v in msg:gsub("&&","\123"):gmatch("[^\123]+") do
| |
| 1044 | Chatted(plr,v) | |
| 1045 | end return | |
| 1046 | end | |
| 1047 | if Waiting[plr] then local f = Waiting[plr] Waiting[plr] = msg return end | |
| 1048 | if not sil then fullprint(GetColor(plr).Color,"[CHAT]","<"..tostring(plr)..">",msg) end | |
| 1049 | for k,v in pairs(Commands) do | |
| 1050 | if msg:sub(1,#k+#CommandKey):lower() == k:lower()..CommandKey then | |
| 1051 | name,command,alias = k,v,k break | |
| 1052 | else | |
| 1053 | for a,b in pairs(v.Aliases) do | |
| 1054 | if msg:sub(1,#b+#CommandKey):lower() == b:lower()..CommandKey then | |
| 1055 | name,command,alias = k,v,b break | |
| 1056 | end | |
| 1057 | end | |
| 1058 | end | |
| 1059 | end if not sil then ChatLog:Add(plr,msg) end | |
| 1060 | if name and command then | |
| 1061 | if HasRank(plr,command.Rank) then | |
| 1062 | local suc,err = ypcall(command.Function,plr,msg:sub(#alias+1+#CommandKey),alias) | |
| 1063 | if err then err = err:gsub(":(%d+):",":%1:\n\t") end
| |
| 1064 | if not suc then fullprint(Color3.new(1),"Command Error for",plr,":\n",err) end | |
| 1065 | if not suc then Inform(plr,"Command Error:\n\t"..err) end | |
| 1066 | else | |
| 1067 | Inform(plr,"You don't have access to that command!") | |
| 1068 | end | |
| 1069 | end | |
| 1070 | end | |
| 1071 | ||
| 1072 | function Spawned(plr,ch) | |
| 1073 | if Loopkilling[plr.Name] then | |
| 1074 | ch:BreakJoints() | |
| 1075 | elseif Jailed[plr.Name] then | |
| 1076 | if type(Jailed[plr.Name]) == "number" and tick() > Jailed[plr.Name] then | |
| 1077 | Jailed[plr.Name] = nil | |
| 1078 | end | |
| 1079 | local jail = Instance.new("Part",ch) jail.Name = "Jail" jail.Transparency = 0.5
| |
| 1080 | jail.BrickColor = BrickColor.Blue() jail.Size = Vector3.new(1,1,1) | |
| 1081 | jail.TopSurface = "Smooth" jail.BottomSurface = "Smooth" | |
| 1082 | local mesh = Instance.new("SpecialMesh",jail) jail.FormFactor = "Custom"
| |
| 1083 | mesh.Scale = Vector3.new(8,8,8) local weld = Instance.new("Weld",jail) mesh.MeshType = "Sphere"
| |
| 1084 | weld.Part0 = plr.Character.Torso weld.Part1 = jail local bp = Instance.new("BodyPosition",jail)
| |
| 1085 | bp.maxForce = Vector3.new(1e99,1e99,1e99) bp.position = ch.Torso.Position+Vector3.new(0,5,0) | |
| 1086 | if ch:findFirstChild("Humanoid") then ch.Humanoid.Name = "Human" end
| |
| 1087 | end local hum = ch:findFirstChild("Humanoid")
| |
| 1088 | if hum then | |
| 1089 | hum.Died:connect(function() for i=1,20 do wait(0.1) SPets[plr] = -1 end end) | |
| 1090 | hum.FreeFalling:connect(function() wait(0.5) SPets[plr] = 0 end) | |
| 1091 | hum.FallingDown:connect(function() wait(0.5) SPets[plr] = 0 end) | |
| 1092 | hum.PlatformStanding:connect(function() SPets[plr] = 0 end) | |
| 1093 | hum.Climbing:connect(function(spee) SPets[plr] = spee end) | |
| 1094 | hum.Running:connect(function(spe) SPets[plr] = spe end) | |
| 1095 | hum.Swimming:connect(function(sp) SPets[plr] = sp end) | |
| 1096 | hum.Jumping:connect(function() SPets[plr] = 1 end) | |
| 1097 | hum.Seated:connect(function() SPets[plr] = 0 end) | |
| 1098 | end | |
| 1099 | end | |
| 1100 | ||
| 1101 | local function StatAdded(item) | |
| 1102 | if item.Name == "EinHUD" then | |
| 1103 | item.ChildAdded:connect(StatAdded) | |
| 1104 | for k,v in pairs(item:GetChildren()) do | |
| 1105 | StatAdded(v) | |
| 1106 | end | |
| 1107 | elseif item.Name == "Chatted" then | |
| 1108 | item.Changed:connect(function(msg) | |
| 1109 | local player = item.Parent and item.Parent.Parent | |
| 1110 | if not player or not player:IsA("Player") then return end
| |
| 1111 | ypcall(Chatted,player,msg) | |
| 1112 | end) | |
| 1113 | elseif item.Name == "TeamChatted" then | |
| 1114 | item.Changed:connect(function(msg) | |
| 1115 | local player = item.Parent and item.Parent.Parent | |
| 1116 | if not player or not player:IsA("Player") then return end
| |
| 1117 | ypcall(Chatted,player,msg) | |
| 1118 | end) | |
| 1119 | end | |
| 1120 | end | |
| 1121 | ||
| 1122 | function Joined(plr) | |
| 1123 | for k,v in pairs(Banned) do | |
| 1124 | if v:lower() == tostring(plr):lower() then | |
| 1125 | plr:Destroy() game:GetService("Debris"):AddItem(plr,0)
| |
| 1126 | return print("Banned player tried to join:",plr,"0.0")
| |
| 1127 | end | |
| 1128 | end coroutine.wrap(notifyUpdate)(plr, nil, 10) | |
| 1129 | JoinTimes[plr.Name] = JoinTimes[plr.Name] or {Left=0}
| |
| 1130 | JoinTimes[plr.Name].Joined = tick() | |
| 1131 | plr.ChildAdded:connect(StatAdded) | |
| 1132 | if ShowTablets[plr.Name] == nil then | |
| 1133 | ShowTablets[plr.Name] = HasRank(plr,"Admin") | |
| 1134 | end plr.Chatted:connect(function(msg) Chatted(plr,msg) end) | |
| 1135 | plr.CharacterAdded:connect(function(ch) ypcall(Spawned,plr,ch) end) | |
| 1136 | fullprint(Color3.new(0.25,0.5,0.25),"Player joined:",plr,"(",GetRank(plr),")")
| |
| 1137 | for k,v in pairs(plr:GetChildren()) do StatAdded(v) end | |
| 1138 | if TimeTablet then | |
| 1139 | local msg = "\nYour rank: "..GetRank(plr) | |
| 1140 | ypcall(TimeTablet,15,plr,"Hellu "..plr.Name.."!"..msg,Color3.new(1,0,1)) | |
| 1141 | end if plr.Character then Spawned(plr,plr.Character) end | |
| 1142 | if ChatLog then ChatLog:Add("Server","Player joined: "..plr.Name) end
| |
| 1143 | end game:GetService("Players").PlayerAdded:connect(Joined)
| |
| 1144 | function Left(plr) if not JoinTimes[plr.Name] then return end | |
| 1145 | local t = tick()-JoinTimes[plr.Name].Joined JoinTimes[plr.Name].Left,JoinTimes[plr.Name].Joined = tick() | |
| 1146 | fullprint(Color3.new(0.5,0.25,0.25),"Player left:",plr,"(",GetRank(plr),")","after",StringToTime(t))
| |
| 1147 | if ChatLog then ChatLog:Add("Server","Player left: "..plr.Name) end
| |
| 1148 | end game:GetService("Players").PlayerRemoving:connect(Left)
| |
| 1149 | Spawn(function() repeat wait() until notifyUpdate | |
| 1150 | for k,v in pairs(game:GetService("Players"):GetPlayers()) do
| |
| 1151 | pcall(coroutine.wrap(Joined),v) | |
| 1152 | end end) | |
| 1153 | ||
| 1154 | function LoadData() | |
| 1155 | print("====================")
| |
| 1156 | dprint("All gear, hats, animations and clothes are gettig loaded (if allowed) [Use commands to wear/give them]")
| |
| 1157 | Data = { } -- Used for storage
| |
| 1158 | Data.Unique = { } -- Used for counting
| |
| 1159 | Data.Gear = { } -- Last updated: 17/04/2012 -- Includes almost all popular gear and a lot more
| |
| 1160 | Data.Hats = { } -- NOT DONE
| |
| 1161 | Data.Animations = { } -- NOT DONE
| |
| 1162 | Data.Clothes = { } -- clothes/PEOPLE/NAME
| |
| 1163 | ||
| 1164 | function UnAsset(ass,par) | |
| 1165 | if ass==nil or par==nil then return end | |
| 1166 | if #ass:GetChildren()==0 then ass.Parent = par return end | |
| 1167 | for k,v in pairs(ass:GetChildren()) do | |
| 1168 | v.Parent = par | |
| 1169 | end | |
| 1170 | return | |
| 1171 | end | |
| 1172 | ||
| 1173 | dprint("Starting registering all stuff and counting unique stuff")
| |
| 1174 | ||
| 1175 | if GearAllowed then -- Adding some gear from catalog, can be inserted even with the lock of the InsertService -.- | |
| 1176 | -- TEMPLATE= Gear["NAME OR A TAG"] = ID OF ITEM -- COMMENT / REAL FULL NAME IF TAG USED INSTEAD OF NAME | |
| 1177 | -- If you put a tag between the "" instead of the name then you have to put the real name in the comment | |
| 1178 | Gear = Data.Gear | |
| 1179 | -- First list added somwhere in November 2011 by einsteinK when created LoadData() and the tool/-command | |
| 1180 | Gear["Flashbang"] = 16979083 -- Info needed? | |
| 1181 | Gear["Cola"] = 10472779 -- BloxyCola -.- | |
| 1182 | Gear["Candy"] = 19382057 -- Candy Cane | |
| 1183 | Gear["Geolocator"] = 15668963 -- Uh, GPS-thingy? | |
| 1184 | Gear["Baton"] = 11956382 -- Police Baton (slashything) | |
| 1185 | Gear["Balloon"] = 29100543 -- Water Ballon | |
| 1186 | Gear["Paint"] = 18474459 -- Old Paintbucket | |
| 1187 | Gear["Skateboard"] = 27902303 -- Normal Skateboard | |
| 1188 | Gear["BCSkateboard"] = 27902388 -- BC Skateboard | |
| 1189 | Gear["TBCSkateboard"] = 27902398 -- TBC Skateboard | |
| 1190 | Gear["OBCSkateboard"] = 27902406 -- OBC Skateboard | |
| 1191 | Gear["Decoy"] = 30392263 -- Decoy Deploy | |
| 1192 | Gear["Ball"] = 28664212 -- Soccer Ball | |
| 1193 | Gear["Jetpack"] = 31314966 -- Jetpack | |
| 1194 | Gear["Moonwalk"] = 32353654 -- Moonwalk Dance Potion | |
| 1195 | Gear["Slingshot"] = 33382537 -- A nice toy :) | |
| 1196 | Gear["Frisbee"] = 25158998 -- ROBLOX Frisbee (more fore in the summer) | |
| 1197 | Gear["Tripmine"] = 11999247 -- Subspace Tripmine | |
| 1198 | Gear["Boomerang"] = 18479357 -- Does it really flies to australia and come back? | |
| 1199 | Gear["Torch"] = 31839337 -- Don't play with fire did they always say -.- | |
| 1200 | Gear["Megaphone"] = 44116233 -- A bit loud maybe -.- | |
| 1201 | Gear["Pinata"] = 34398938 -- Birthday Pinata | |
| 1202 | Gear["Picnic"] = 52625744 -- Picnic Basket | |
| 1203 | Gear["Hotdog"] = 29939404 -- Yummie :) | |
| 1204 | Gear["Potato"] = 25741198 -- Hot Potato | |
| 1205 | Gear["Money"] = 16722267 -- Money Bag | |
| 1206 | Gear["Tent"] = 57229337 -- Instamatic Tent | |
| 1207 | Gear["Umbrella"] = 44115926 -- Magical Umbrella | |
| 1208 | Gear["Coil"] = 16688968 -- Gravity Coil | |
| 1209 | Gear["Gravitygun"] = 34901961 -- Gravity Gun | |
| 1210 | Gear["Microphone"] = 45754061 -- Me? I won't sing -.- | |
| 1211 | Gear["Hoverboard"] = 64160547 -- Ghost Hoverboard | |
| 1212 | Gear["RedPaintballgun"] = 26014536 -- SHOOT AND HIT! Nice color :) | |
| 1213 | Gear["BluePaintballgun"] = 26017478 -- SHOOT AND HIT! Nice color :) | |
| 1214 | Gear["GreenPaintballgun"] = 27245855 -- SHOOT AND HIT! Nice color :) | |
| 1215 | Gear["MagentaPaintballgun"] = 30649735 -- SHOOT AND HIT! Nice color :) | |
| 1216 | Gear["Radar"] = 29532138 -- Bloxxy Radar | |
| 1217 | Gear["Barrel"] = 31839260 -- 8-bit Trowhing Barrel | |
| 1218 | Gear["Cupcake"] = 34399318 -- Cupcake Launcher | |
| 1219 | Gear["Atomizer"] = 35293856 -- THAT is science! | |
| 1220 | Gear["Crowbar"] = 21445765 -- Gonna break in? Break out is more fun :) | |
| 1221 | Gear["Flute"] = 52180863 -- MUSIC! | |
| 1222 | Gear["Platform"] = 34898883 -- Positronic Platform Producer | |
| 1223 | Gear["Binoculray"] = 27133214 -- Nha, I like more the television -.- | |
| 1224 | Gear["Tomahawk"] = 44084783 -- Call of Roblox? Maybe? | |
| 1225 | Gear["Saxophone"] = 45094376 -- Blow for the sound! | |
| 1226 | Gear["Tuba"] = 47871635 -- Sonic Boom Tuba | |
| 1227 | Gear["Bongos"] = 57902997 -- BOOM BOOM BOOM | |
| 1228 | Gear["PortableGameSystem"] = 58574445 -- Roblox Portable Game System (RGPS) | |
| 1229 | Gear["PSP"] = 58574445 -- Same as that one here above but for safety this word added -.- | |
| 1230 | Gear["Wall"] = 35683911 -- Wall Walker | |
| 1231 | Gear["Banjo"] = 12909278 -- I guess the weirdest guitar? | |
| 1232 | Gear["Guitar"] = 11419882 -- Red Stratobloxxer | |
| 1233 | Gear["BlackHole"] = 28277486 -- Black Hole Bomb | |
| 1234 | Gear["Drum"] = 33866728 -- Drum Kit | |
| 1235 | Gear["Hammer"] = 33866846 -- Gravitational Radiation Hammer v0.01 | |
| 1236 | Gear["Snowman"] = 67755215 -- Snowman Cannon | |
| 1237 | Gear["GrappleHook"] = 30393548 -- Grapple Hook | |
| 1238 | Gear["RemoteMine"] = 33383241 -- Remote Mine | |
| 1239 | Gear["C4"] = 33383241 -- Same as that one here above but for usefull thingies this word added -.- | |
| 1240 | Gear["RocketLauncher"] = 32356064 -- Rocket Launcher | |
| 1241 | Gear["Tornade"] = 47871646 -- This is a bomblike thing, right? | |
| 1242 | Gear["DarkSpellbook"] = 56561579 -- Dark Spellbook of the Forgotten | |
| 1243 | Gear["Spellbook"] = 59848474 -- Korblox Deathspeaker's Spell Book | |
| 1244 | Gear["Flamethrower"] = 33879504 -- Let it burn! | |
| 1245 | Gear["Spam"] = 65554735 -- Spam Cannon | |
| 1246 | Gear["Pie"] = 16986805 -- Pumpkin Pi | |
| 1247 | Gear["NoobTube"] = 27474371 -- Most of the times I use it online as dummies :) | |
| 1248 | Gear["Firework"] = 20064349 -- Fireworks | |
| 1249 | -- New gear added to list and tool/-command fixed at 17/04/12 by einsteinK | |
| 1250 | Gear["Quantum"] = 72644644 -- Create a clone and choose to control yourself or your clone | |
| 1251 | Gear["Entangler"] = 72644644 -- Same as above, but for the double-like name | |
| 1252 | Gear["High Five"] = 72644603 -- Big hand 0.0 | |
| 1253 | Gear["Gigantoform"] = 72713855 -- Let it grow :D | |
| 1254 | Gear["Telamax xTreme Dual Shoulder Cannons"] = 73265108 -- Long long long name! I guess string.find will fix that -.- | |
| 1255 | Gear["RoMaze"] = 73829202 -- Romazing! Experience it :D | |
| 1256 | Gear["Spikesplosion"] = 73888479 -- Spiky 0.0 | |
| 1257 | Gear["Remote Explosive Detonator"] = 74385399 -- There is another gear called Remote Mine. If you use "remote" in the command you'll get both | |
| 1258 | Gear["Detonator"] = 74385399 -- Usefull abrivation for the thing above this | |
| 1259 | Gear["Razevenge"] = 74385386 -- I got no idea what this is 0.0 | |
| 1260 | Gear["Graviton 3000"] = 74385438 -- Negative gravity for your enemies? Nice! | |
| 1261 | Gear["Graviton"] = 74385438 -- Usefull for the thing above | |
| 1262 | Gear["Glory Launcher"] = 74385418 -- Glory Launcher 2012 | |
| 1263 | Gear["Pumpkin Pi"] = 16986805 -- Yamyamyam | |
| 1264 | Gear["Pumpkin Pie"] = 16986805 -- Some idiots just have to say pie instead of pi -.- | |
| 1265 | -- New Build tools (they exist from somewhere in March) | |
| 1266 | Gear["PartSelection"] = 73089166 -- Newest stamper using the library RbxStamper | |
| 1267 | Gear["BuildDelete"] = 73089190 -- The new deletetool | |
| 1268 | Gear["CloneTool"] = 73089204 -- Yes, the old stamper had stamper+clone+recentparts in 1 (3-in-1) but this one hasn't anymore -.- | |
| 1269 | Gear["BuildRotate"] = 73089214 -- New rotatetool, but only a few uses it! Most of the times in roblox build etc :D | |
| 1270 | Gear["RecentParts"] = 73089229 -- New recenttool, like I said with the clonetool! From 3-in-1 now to 3-in-3 -.- | |
| 1271 | Gear["ConfigTool"] = 73089239 -- Like it says, to configure some models | |
| 1272 | Gear["WiringTool"] = 73089259 -- Wire it and play with it! | |
| 1273 | Gear["ClassicTool"] = 58921588 -- New generation classic tool! huh? o.0 | |
| 1274 | -- Enough buildtools, back to the normal gear! | |
| 1275 | Gear["Sport Blaster"] = 75550907 -- Sports Victory Blaster | |
| 1276 | Gear["Victory Blaster"] = 75550907 -- For above, just other name :D | |
| 1277 | Gear["Rubber Chicken Wand"] = 75550883 -- Like Harry Potter! | |
| 1278 | Gear["Monster Friend"] = 75941738 -- If you ask me, more monster then friend 0.0 | |
| 1279 | Gear["Kami Potion"] = 66426498 -- Laser eyes? EPIC! | |
| 1280 | Gear["Kamikaze"] = 66426498 -- I met some people that are really stupid, so this could help then :D | |
| 1281 | Gear["Alien Parasite"] = 76170515 -- Steal the health of your enemy and give it to yourself! Where stays the UFO? | |
| 1282 | Gear["Lobster"] = 75906930 -- Random -.- | |
| 1283 | Gear["Wooden Mallet"] = 75906973 -- Hmmmm, Donkey Kong? | |
| 1284 | Gear["Long-Range Proton Crossbow"] = 76596269 -- Long name but it worth it :D | |
| 1285 | Gear["Proton Crossbow"] = 76596269 -- Just in case | |
| 1286 | Gear["Egg Cannon 9000"] = 76768897 -- Like firing omelets in the desert? GET THIS GUN! | |
| 1287 | Gear["Lightning Orb"] = 72644629 -- Shoot light at your enemies :D | |
| 1288 | Gear["Sword of Light"] = 77443461 -- Epic thingy :D | |
| 1289 | Gear["Light Sword"] = 77443461 -- Same as above, you know, for those idiots -.- | |
| 1290 | -- New gear added to list at 14/06/2012 by einsteinK | |
| 1291 | Gear["Rampage Book"] = 82711866 -- Alien on a Rampage Book | |
| 1292 | Gear["Snarffle"] = 82711870 -- Snarffle from Alien on a Rampage | |
| 1293 | Gear["RC Tank"] = 83021197 -- Nice ride, uh? | |
| 1294 | Gear["Tank"] = 83021197 -- Redirect to above | |
| 1295 | Gear["Shark Launcher"] = 83021217 -- Expected missiles? Sharks! | |
| 1296 | Gear["Shark"] = 83021217 -- Redirect to above again | |
| 1297 | Gear["Starfish"] = 83021236 -- Starfish Shuriken | |
| 1298 | Gear["Shuriken"] = 83021236 -- Same as above | |
| 1299 | Gear["The Fiery Sun"] = 83021250 -- Sunny day :D | |
| 1300 | Gear["Sun"] = 83021250 -- Redirect above (not UV) | |
| 1301 | Gear["Potato Cannon"] = 81847365 -- Raining potatoes! | |
| 1302 | Gear["Venomshank"] = 68603324 -- Sharp Green Thingy | |
| 1303 | Gear["Ghostwalker"] = 37816777 -- It's a sword btw -.- | |
| 1304 | Gear["Police Badge"] = 82358339 -- Hands in teh air! | |
| 1305 | Gear["Riot Shield"] = 82357079 -- Riot Shield and Billy Club Set | |
| 1306 | Gear["Portable Justice"] = 82357101 -- Justicistish! | |
| 1307 | Gear["Cage"] = 82357101 -- Same as above, just name :D | |
| 1308 | Gear["Taser"] = 82357123 -- Don't tase me bro! | |
| 1309 | Gear["Military Axe"] = 81847570 -- Spy-axe maybe? | |
| 1310 | Gear["Ice Shogun"] = 27296122 -- Cool gun! | |
| 1311 | Gear["Time Watch"] = 81330766 -- James Bond Style | |
| 1312 | Gear["Firebrand"] = 81154592 -- R$ 20,000 !!! Dafuq? | |
| 1313 | Gear["Time Bomb"] = 80576952 -- Just in time | |
| 1314 | Gear["Tee Shirt Cannon"] = 80576928 -- Next one towels | |
| 1315 | Gear["T-Shirt Cannon"] = 80576928 -- Red. You know -.- | |
| 1316 | Gear["Spray Paint"] = 80576967 -- Not illegal? lol :D | |
| 1317 | Gear["Spy Eye"] = 79736563 -- Mission Accepted | |
| 1318 | Gear["Rail Runner 5000"] = 79446473 -- Trainrails? | |
| 1319 | Gear["Body Swap Potion"] = 78730532 -- Nice tool! | |
| 1320 | Gear["Crossbow of the Blades"] = 78665215 -- Sharp!!! | |
| 1321 | Gear["Flak Cannon"] = 78005022 -- Dangeress Weapon o.0 | |
| 1322 | Gear["Sci-Fi MedVac 4300"] = 78005082 -- Medical Kit | |
| 1323 | Gear["Health Kit"] = 780050582 -- Extreme redirect | |
| 1324 | Gear["Blackhole Ray Gun"] = 78005009 -- SpaceWarThing? | |
| 1325 | Gear["Swordbreaker"] = 77443436 -- Breaks swords? Nice | |
| 1326 | -- New gear added to list on 28/08/2012 by einsteinK | |
| 1327 | Gear["Portable Justice"] = 82357101 -- Just a carry-on-jail | |
| 1328 | Gear["Taser"] = 8235712 -- Shocktheraphy uses this also! | |
| 1329 | Gear["Riot Shield"] = 82357079 -- Riot Shield and Billy Club Set | |
| 1330 | Gear["Police Badge"] = 82358339 -- CIA in the house! Where are those hands? | |
| 1331 | Gear["The Fiery Sun"] = 83021250 -- Carry a fiery sun? fuck logic -.- | |
| 1332 | Gear["RC Tank"] = 83021197 -- Small, shoots explosives, epic and expensive! | |
| 1333 | Gear["Tank"] = 83021197 -- Same as above, but people like to say "Tank" without getting 3 other ones or like that | |
| 1334 | Gear["Dubstep Boombox"] = 84417281 -- Rock teh heck out of this place! | |
| 1335 | Gear["RoVacuum"] = 84418938 -- For the ladies :P | |
| 1336 | Gear["EMP Shockmine"] = 85879435 -- It only shoots sparkles :( | |
| 1337 | Gear["Shockmine"] = 85879435 -- Same as above again | |
| 1338 | Gear["Torso Cannon"] = 85879465 -- Shoot some bodies, seems legit -.- | |
| 1339 | Gear["Galactic Forcefield Glove"] = 85879447 -- Just a big bhknbgyuj laser, difficult to aim with | |
| 1340 | Gear["Dark Assassin Crossbow"] = 86492558 -- Nice weapon, even if it shoots arrows! | |
| 1341 | Gear["Military Spy Satellite"] = 88885506 -- Do I see Telamon down there? | |
| 1342 | Gear["Satellite"] = 8885506 -- Same as above, just because the above has a LOOOONG name | |
| 1343 | Gear["Bluesteel Claw"] = 10758456 -- Sharp handy thingy | |
| 1344 | Gear["Medusa Head"] = 89487934 -- Creepy ... | |
| 1345 | Gear["Medusa"] = 89487934 -- Same as above, but people don't like to put head behind it I guess... | |
| 1346 | Gear["Ghost Minion"] = 89488524 -- Nope, got no idea what this does -.- | |
| 1347 | Gear["Discus 2012"] = 88885268 -- Olympic Gear :D | |
| 1348 | Gear["Discus"] = 88885268 -- Easier then 2012 behind it :D Maybe change it when there comes a 2016 -.- | |
| 1349 | Gear["Dart Trap"] = 90220371 -- I mean, put a big statue that shoot arrows, nobody will know it's a trap, right? | |
| 1350 | Gear["Tiger Skin"] = 90211299 -- One of the best camos ever, maybe? | |
| 1351 | Gear["Deluxe Hook Shot"] = 90220438 -- Seems from a high-tech pirate :D | |
| 1352 | Gear["Bear Mine Gun"] = 90718350 -- Like a remote high-tech bear's claw! | |
| 1353 | Gear["Anti-Ballistics Force Field"] = 90718618 -- Nice design :D | |
| 1354 | Gear["Forcefield"] = 90718618 -- Same as above, but shorter, and forcefield connected to be sure | |
| 1355 | Gear["Exponential Rocket Launcher"] = 90718505 -- THIS, sir, IS AN EPIC ROCKET LAUNCHER! | |
| 1356 | end | |
| 1357 | ||
| 1358 | Data.Unique.Gear = 0 local tab = {}
| |
| 1359 | for k,v in pairs(Data.Gear) do if not tab[v] then tab[v] = true Data.Unique.Gear = Data.Unique.Gear+1 end end | |
| 1360 | print(Data.Unique.Gear.." Unique Gear Registered") wait() | |
| 1361 | ||
| 1362 | if HatsAllowed then | |
| 1363 | Hats=Data.Hats | |
| 1364 | -- TEMPLATE= Hats["NAME OR A TAG"] = ID OF ITEM -- COMMENT / REAL FULL NAME IF TAG USED INSTEAD OF NAME | |
| 1365 | -- If you put a tag between the "" instead of the name then you have to put the real name in the comment | |
| 1366 | end | |
| 1367 | Data.Unique.Hats = 0 tab = {}
| |
| 1368 | for k,v in pairs(Data.Hats) do if not tab[v] then tab[v] = true Data.Unique.Gear = Data.Unique.Gear+1 end end | |
| 1369 | print(Data.Unique.Hats.." Unique Hats Registered") wait() | |
| 1370 | ||
| 1371 | if AnimationsAllowed then | |
| 1372 | Animations = Data.Animtions | |
| 1373 | -- TEMPLATE= Animations["NAME OR A TAG"] = {Left Leg Id, Right Leg Id, Left Arm Id, Left Leg Id, Head Id, Torso Id}
| |
| 1374 | -- If you put a tag between the "" instead of the name then you have to put the real name in the comment | |
| 1375 | -- !!! Ids are numbers, not strings! -- If there isn't a Id for some of those things, put the number 0 in the place | |
| 1376 | ||
| 1377 | end | |
| 1378 | Data.Unique.Animations = 0 tab = {}
| |
| 1379 | for k,v in pairs(Data.Animations) do | |
| 1380 | if not tab[v] then tab[v] = true | |
| 1381 | Data.Unique.Animations = Data.Unique.Animations+1 | |
| 1382 | end | |
| 1383 | end | |
| 1384 | print(Data.Unique.Animations.." Unique Animations Registered") wait() | |
| 1385 | ||
| 1386 | if ClothesAllowed then | |
| 1387 | Clothes=Data.Clothes | |
| 1388 | Clothes["Police Agent"] = {1972067,1960211}
| |
| 1389 | Clothes["Sir"] = {19872874,22301510}
| |
| 1390 | Clothes["City Boy"] = {22746098,24319474}
| |
| 1391 | Clothes["White President"] = {8158602,8189523}
| |
| 1392 | Clothes["Black President"] = {19911748,19911763}
| |
| 1393 | Clothes["DC Guy"] = {18014316,13997753}
| |
| 1394 | Clothes["Bunny Guy"] = {37031414,21172424}
| |
| 1395 | Clothes["Sky Guy"] = {37090531,36383519}
| |
| 1396 | Clothes["Male Worker"] = {11632822,28358526}
| |
| 1397 | Clothes["Knight"] = {9213397,9212721}
| |
| 1398 | Clothes["Warrior"] = {9220825,9220844}
| |
| 1399 | Clothes["Telamon Scythe"] = {21928291,21928606}
| |
| 1400 | Clothes["Telamon"] = {9291127,10045638}
| |
| 1401 | Clothes["KVK"] = {67379939,67380080}
| |
| 1402 | Clothes["Zeralian"] = {85536487,85604354}
| |
| 1403 | Clothes["Blue Paintball"] = {64845821,64845824}
| |
| 1404 | Clothes["Camouflage"] = {8235801,8235816}
| |
| 1405 | Clothes["FEAR"] = {35685613,35681441}
| |
| 1406 | Clothes["Gentleman"] = {47740174,47740289}
| |
| 1407 | Clothes["Diamond Armor"] = {70656304,70656384}
| |
| 1408 | Clothes["Roblox USA"] = {29958574,29958606}
| |
| 1409 | Clothes["White Angel"] = {64573382,64571623}
| |
| 1410 | Clothes["Light Ninja"] = {12254875,12254892}
| |
| 1411 | Clothes["Gryffindor"] = {30069420,33682170}
| |
| 1412 | Clothes["Everyday I'm shuffling"] = {61950627,45721886}
| |
| 1413 | Clothes["Sorry for party rocking"] = {69369186,48976690}
| |
| 1414 | Clothes["It appears you have failed"] = {58430339,24642486}
| |
| 1415 | Clothes["Half Guest"] = {86115356,86116196}
| |
| 1416 | Clothes["Guest"] = {88949090,88949360}
| |
| 1417 | -- TEMPLATE= Clothes["NAME OR A TAG"] = {Shirt Id, Pants Id} -- COMMENT / REAL FULL NAME IF TAG USED INSTEAD OF NAME
| |
| 1418 | -- If you put a tag between the "" instead of the name then you have to put the real name in the comment | |
| 1419 | -- !!! Ids are numbers, not strings! -- If there isn't a Id for some of those things, put the number 0 in the place | |
| 1420 | end | |
| 1421 | Data.Unique.Clothes = 0 tab = {}
| |
| 1422 | for k,v in pairs(Data.Clothes) do if not tab[v] then tab[v] = true Data.Unique.Clothes = Data.Unique.Clothes+1 end end | |
| 1423 | print(Data.Unique.Clothes.." Unique Clothes Registered") wait() tab=nil | |
| 1424 | ||
| 1425 | function getCatalogGear(term) | |
| 1426 | local result = { } term = tostring(term):lower()
| |
| 1427 | for k,v in pairs(Data.Gear) do | |
| 1428 | if k:lower() == term then table.insert(result,v) return {v} end
| |
| 1429 | kl = string.lower(tostring(k)) | |
| 1430 | tl = string.lower(tostring(term)) | |
| 1431 | if tl:find(kl)~=nil then | |
| 1432 | table.insert(result,v) | |
| 1433 | elseif kl:find(tl)~=nil then | |
| 1434 | table.insert(result,v) | |
| 1435 | end | |
| 1436 | end | |
| 1437 | if #result == 0 then return nil end | |
| 1438 | return result | |
| 1439 | end | |
| 1440 | function getCatalogItems(tab,term) | |
| 1441 | local result = {} term = tostring(term):lower()
| |
| 1442 | for k,v in pairs(tab) do | |
| 1443 | if k:lower() == term then table.insert(result,v) return {v} end
| |
| 1444 | local kl,tl = tostring(k):lower(),tostring(term):lower() | |
| 1445 | if tl:find(kl) or kl:find(tl) then | |
| 1446 | table.insert(result,v) | |
| 1447 | end | |
| 1448 | end if #result == 0 then return #result > 0 and result end | |
| 1449 | end | |
| 1450 | dprint("All gear, hats, animations and clothes succesfully loaded (if allowed) [Use commands to wear/give them]")
| |
| 1451 | print("====================")
| |
| 1452 | end LoadData() | |
| 1453 | ||
| 1454 | local lastCheck,lastS = 0 | |
| 1455 | function getUpdateService() | |
| 1456 | if lastCheck+300<tick() then local lS = nil | |
| 1457 | local s,e = ypcall(function() lS = game:GetService("MarketplaceService"):GetProductInfo(108283343) end)
| |
| 1458 | lastS = lS dprint(s,e,lastS) if not s then return nil end lastCheck = tick() | |
| 1459 | local d = tostring(game:GetService("MarketplaceService"):GetProductInfo(123802079).Description)
| |
| 1460 | Devs = {} for v in tostring(d):gsub("[dD]evs:",""):gmatch("[^,]+") do table.insert(Devs,v) end
| |
| 1461 | end dprint("Got Data:",lastS) return lastS
| |
| 1462 | end if Update then coroutine.wrap(function() getUpdateService() while wait(60) do getUpdateService() end end)() end | |
| 1463 | ||
| 1464 | function getData() | |
| 1465 | local r,s = {}, getUpdateService()
| |
| 1466 | if not s then return nil end | |
| 1467 | if not s.Description then return nil end | |
| 1468 | r.Description = s.Description:sub(s.Description:find("== DESC ==")+12)
| |
| 1469 | r.Version = s.Name:match("%d+%.%d+")
| |
| 1470 | r.NewId = tonumber(({s.Name:match("%(%d+%)"):gsub("%(",""):gsub("%)","")})[1])
| |
| 1471 | local it = r.Version:gmatch("%d+")
| |
| 1472 | r.VersionMain = tonumber(it()) | |
| 1473 | r.VersionSub = tonumber(it()) | |
| 1474 | r.Name = "einsteinK's ADM script V"..tostring(r.Version) | |
| 1475 | r.Url = "http://roblox.com/trusted-item?id="..r.NewId | |
| 1476 | return r | |
| 1477 | end | |
| 1478 | ||
| 1479 | function checkUpdate(currentVersion, mainOnly) | |
| 1480 | local it = currentVersion:gmatch("%d+")
| |
| 1481 | local data = getData() | |
| 1482 | if not data then return false end | |
| 1483 | local main,sub = tonumber(it()),tonumber(it()) | |
| 1484 | if main<data.VersionMain then return true end | |
| 1485 | if not mainOnly and main==data.VersionMain then | |
| 1486 | return sub<data.VersionSub | |
| 1487 | end return false | |
| 1488 | end | |
| 1489 | ||
| 1490 | coroutine.wrap(function() wait() | |
| 1491 | local Util = LoadLibrary("RbxUtility")
| |
| 1492 | local function Save() | |
| 1493 | for k,v in pairs({Creators=Creators,Admins=Admins,Winners=Winners,Banned=Banned,}) do
| |
| 1494 | local tag = script:findFirstChild(k) or Instance.new("StringValue",script)
| |
| 1495 | tag.Name = k tag.Value = Util.EncodeJSON(v) | |
| 1496 | end | |
| 1497 | end | |
| 1498 | local function Load() | |
| 1499 | for k,v in pairs({"Creators","Admins","Winners","Banned"}) do
| |
| 1500 | local tag = script:findFirstChild(v) | |
| 1501 | if tag then | |
| 1502 | getfenv()[v] = Util.DecodeJSON(tag.Value) | |
| 1503 | end | |
| 1504 | end | |
| 1505 | end if PBS then Load() SortTables() Save() end | |
| 1506 | NewCommand("Save Settings",function(...)
| |
| 1507 | Save() Inform(...,"Settings saved!",5) | |
| 1508 | end,"Developer","Save the settings (Studio or PBS)","saveset") | |
| 1509 | NewCommand("Load Settings",function(...)
| |
| 1510 | Load() Inform(...,"Settings loaded!",5) | |
| 1511 | end,"Developer","Load the settings (Studio or PBS)","loadset") | |
| 1512 | NewCommand("Clear Scripts",function(...)
| |
| 1513 | while v:findFirstChild("Is A Created Script",true) do wait()
| |
| 1514 | v:findFirstChild("Is A Created Script",true).Parent:Destroy()
| |
| 1515 | end | |
| 1516 | end,"Developer","Create all c/ launched scripts","noscripts","clearscript","noscript") | |
| 1517 | end)() | |
| 1518 | ||
| 1519 | coroutine.wrap(function() | |
| 1520 | wait(10) | |
| 1521 | print("=~= einsteinK's ADM Update Notifier =~=")
| |
| 1522 | if checkUpdate(Version,true) then | |
| 1523 | print("Result: New main version out!")
| |
| 1524 | elseif checkUpdate(Version) then | |
| 1525 | print("Result: New sub version out!")
| |
| 1526 | else | |
| 1527 | print("Result: Running latest version!")
| |
| 1528 | end | |
| 1529 | print("=~= einsteinK's ADM Update Notifier =~=")
| |
| 1530 | end)() | |
| 1531 | ||
| 1532 | function notifyUpdate(player, force, timer) | |
| 1533 | if not Update and not force then return end | |
| 1534 | if timer then wait(timer) end | |
| 1535 | if checkUpdate(Version,(MainUpdate and not force)) then | |
| 1536 | local msg,data = LiveInform(player,"Downloading data ..."),getData() | |
| 1537 | if force then msg:Set(force and "You forced an update check! Result:") else wait(1) end | |
| 1538 | msg:Set("A new version of einsteinK's ADM script is released!")
| |
| 1539 | msg:Add("\""..getData().Name.."\"")
| |
| 1540 | msg:Add("This version: "..Version.." New version: "..getData().Version)
| |
| 1541 | msg:Add("Get it at: "..getData().Url)
| |
| 1542 | msg:Add("Attached Changelog: \n"..getData().Description)
| |
| 1543 | msg:Destroy(30) | |
| 1544 | elseif force then | |
| 1545 | Inform(player,"No "..((MainUpdate and (not force) and "main") or "").." update",5) | |
| 1546 | end | |
| 1547 | end | |
| 1548 | ||
| 1549 | function Split(msg) if not msg then return end return msg:match("(.-)"..CommandKey.."(.*)") end
| |
| 1550 | ||
| 1551 | local OpenOutput,OutputFunctions = {},setmetatable({},{__mode="k"})
| |
| 1552 | function GetOutput(plr) | |
| 1553 | plr = GetPlayer(plr) | |
| 1554 | if plr then | |
| 1555 | if OpenOutput[plr.Name] then | |
| 1556 | local out = OpenOutput[plr.Name] | |
| 1557 | if out.Parent and out.Parent.Parent == plr then | |
| 1558 | return out,OutputFunctions[out] | |
| 1559 | end | |
| 1560 | end | |
| 1561 | local out,fun = Gui:OutputScreen(plr) | |
| 1562 | OpenOutput[plr.Name] = out | |
| 1563 | OutputFunctions[out] = fun | |
| 1564 | return out,fun | |
| 1565 | end | |
| 1566 | end Printed:connect(function(t,c) for k,v in pairs(OutputFunctions) do v(t,c,tick()) end end) | |
| 1567 | Printed:connect(function() if Outputted[100] then table.remove(Outputted,1) end end) | |
| 1568 | ||
| 1569 | local sbbu = script and script:findFirstChild("sourcing")
| |
| 1570 | local lsbbu = script and script:findFirstChild("localsourcing")
| |
| 1571 | local function ScriptError(tag) wait() if tag.Name ~= "Error" then return end | |
| 1572 | fullprint(Color3.new(0.5,0.25),"Script error:",tag.Parent,tag.Value) | |
| 1573 | end | |
| 1574 | function Script(source,par,ls) local a | |
| 1575 | if ls and NewLocalScript or not ls and NewScript then | |
| 1576 | return (ls and NewLocalScript or NewScript)(source,par) | |
| 1577 | end | |
| 1578 | if ls and not lsbbu or not ls and not sbbu then error("No (local)script source?",0) end
| |
| 1579 | if ls then a = lsbbu:clone() else a = sbbu:clone() end | |
| 1580 | local context = Instance.new("StringValue")
| |
| 1581 | context.Name = "Context" context.Value = source | |
| 1582 | context.Parent = a a.ChildAdded:connect(ScriptError) | |
| 1583 | while context.Value ~= source do wait() end | |
| 1584 | if par then a.Parent = par else a.Parent = workspace end | |
| 1585 | local b = Instance.new("IntValue")
| |
| 1586 | b.Name = "Is A Created Script" b.Parent = a return a | |
| 1587 | end | |
| 1588 | ||
| 1589 | -- NewCommand(name,func,rank,desc,...) func(plr,msg,alias) | |
| 1590 | do -- Creator commands | |
| 1591 | NewCommand("Shutdown",function()
| |
| 1592 | for k,v in pairs(game:GetService("Players"):GetPlayers()) do v:Kick() end
| |
| 1593 | game:GetService("Players").PlayerAdded:connect(function(p) p:Kick() end)
| |
| 1594 | end,"Creator","Shutdowns the server","sd","isd") | |
| 1595 | NewCommand("Admin",function(...)
| |
| 1596 | for k,v in pairs(FindPlayers(...)) do | |
| 1597 | table.insert(Admins,v.Name) | |
| 1598 | Inform(v,"You're an admin!") | |
| 1599 | end SortTables() | |
| 1600 | end,"Creator","Admins a player") | |
| 1601 | NewCommand("Unadmin",function(...)
| |
| 1602 | for k,v in pairs(FindPlayers(...)) do | |
| 1603 | for a,b in pairs(Admins) do | |
| 1604 | if b:lower() == v.Name:lower() then | |
| 1605 | Admins[a] = b | |
| 1606 | end | |
| 1607 | end Inform(v,"You're no longer an admin!") | |
| 1608 | end SortTables() | |
| 1609 | end,"Creator","Unadmins a player") | |
| 1610 | NewCommand("List Admins",function(plr)
| |
| 1611 | select(2,GetOutput(plr))(table.concat(Admins,"\n& ")) | |
| 1612 | end,"Creator","List all admins","adminlist","admins") | |
| 1613 | NewCommand("List Banned",function(plr)
| |
| 1614 | select(2,GetOutput(plr))(table.concat(Banned,"\n& ")) | |
| 1615 | end,"Creator","List all banned people","bannedlist","banlist","banned","bans") | |
| 1616 | NewCommand("Ban Player",function(plr,msg,al) local a,b = Split(msg) a = a or msg
| |
| 1617 | if b or al:lower():find("force") then
| |
| 1618 | table.insert(Banned,a) | |
| 1619 | return Inform(plr,a.." is banned!") | |
| 1620 | end local r = {}
| |
| 1621 | for k,v in pairs(FindPlayers(plr,a)) do | |
| 1622 | pcall(function() v:Kick() end) | |
| 1623 | table.insert(Banned,v.Name) | |
| 1624 | table.insert(r,v.Name) | |
| 1625 | game:GetService("Debris"):AddItem(v,0)
| |
| 1626 | end Inform(plr,"Banned: "..table.concat(r,", ")) print("Banned: "..table.concat(r,", ")) SortTables()
| |
| 1627 | end,"Creator","Ban someone. Use forceban to ban an offline player","forceban","forcebanplayer","ban") | |
| 1628 | NewCommand("Unban Player",function(plr,msg) local r = {}
| |
| 1629 | for k,v in pairs(Banned) do | |
| 1630 | if v:lower() == msg:lower() then | |
| 1631 | table.insert(r,v) | |
| 1632 | Banned[k] = nil | |
| 1633 | end | |
| 1634 | end SortTables() | |
| 1635 | Inform(plr,"Unbanned:\n"..table.concat(r,"\n"),5) | |
| 1636 | end,"Creator","Unban someone. Use the exact name (ignoring case)") | |
| 1637 | end | |
| 1638 | ||
| 1639 | do -- Developper commands | |
| 1640 | NewCommand("Script",function(plr,msg) local f,e = loadstring(msg)
| |
| 1641 | if not f then return Inform(plr,"This will no matter what error: "..e) end | |
| 1642 | Script(msg,workspace) Inform(plr,"The script is launched!") | |
| 1643 | end,"Developer","Makes a script with the given source in the workspace","c") | |
| 1644 | NewCommand("LocalScript",function(plr,msg,al)
| |
| 1645 | local a,b = Split(msg) local f,e = loadstring(b or "error'lol'") | |
| 1646 | if not a then return Inform(plr,"Usage: "..al..CommandKey.."PLAYER(S)"..CommandKey.."SOURCE") end | |
| 1647 | if not f then return Inform(plr,"This will no matter what error: "..e) end | |
| 1648 | for k,v in pairs(FindPlayers(plr,a)) do | |
| 1649 | Script(b,v:findFirstChild("Backpack"),true)
| |
| 1650 | end | |
| 1651 | end,"Developer","Makes a localscript for that player (player,source)","l","local") | |
| 1652 | NewCommand("Loadstring",function(plr,msg)
| |
| 1653 | local output,func = GetOutput(plr) | |
| 1654 | local f,e = loadstring(msg) | |
| 1655 | if not f then | |
| 1656 | return func("[ERROR] Parsing Error: "..e,Color3.new(1))
| |
| 1657 | end local function lprint(...) func(TupleToString("<OUTPUT>",...)) end
| |
| 1658 | setfenv(f,setmetatable({print=lprint,player=plr},{__index=getfenv(f),__newindex=getfenv(f)}))
| |
| 1659 | func("Running your function (print works & player points at you)") local suc,err = ypcall(f)
| |
| 1660 | if suc then return func("Your function ran perfect!",Color3.new(0,1)) end
| |
| 1661 | func("[ERROR] Running Error: "..err,Color3.new(1))
| |
| 1662 | end,"Developer","Runs the given source in the adminscript (+ error handling)","run","y") | |
| 1663 | NewCommand("Restart",function()
| |
| 1664 | script:clone().Parent = workspace | |
| 1665 | Chatted,Joined = script:Destroy() | |
| 1666 | end,"Developer","Restarts & Resets the adminscript") | |
| 1667 | end | |
| 1668 | ||
| 1669 | do -- Admin1 (Basic) commands | |
| 1670 | NewCommand("Error",function(p,e) error(e) end,"Admin1 (Basic)","LOOOOL")
| |
| 1671 | NewCommand("Output",function(plr,msg)
| |
| 1672 | local a,b = Split(msg) a = a or msg | |
| 1673 | for k,v in pairs(FindPlayers(plr,a=="" and "me" or a)) do | |
| 1674 | GetOutput(v) if b then GetOutput(v):Destroy() end | |
| 1675 | end | |
| 1676 | end,"Admin1 (Basic)","Shows the output for the given player or you","out") | |
| 1677 | NewCommand("Kick Player",function(...) local p = {}
| |
| 1678 | for k,v in pairs(FindPlayers(...)) do | |
| 1679 | if select(2,GetRank(v)) >= select(2,GetRank(...)) then | |
| 1680 | table.insert(p,v.Name) Inform(v,tostring(...).." tried to kick you") | |
| 1681 | else | |
| 1682 | game:GetService("Debris"):AddItem(v,0)
| |
| 1683 | end | |
| 1684 | end if #p > 0 then Inform(...,"Those couldn't get kicked: "..table.concat(p,", ")) end | |
| 1685 | end,"Admin1 (Basic)","Kicks the given player(s) out of the game","kickplayer","kick","byebye") | |
| 1686 | NewCommand("Respawn",function(...)
| |
| 1687 | for k,v in pairs(FindPlayers(...)) do | |
| 1688 | v:LoadCharacter() | |
| 1689 | end | |
| 1690 | end,"Admin1 (Basic)","Respawns the given player(s)","resp","res") | |
| 1691 | local function roffset() return CFrame.Angles(0,math.rad(math.random(1,360)),0) * CFrame.new(5,0,0) end | |
| 1692 | local function teleport(a,b) a.Character.Torso.CFrame = b.Character.Torso.CFrame * roffset() end | |
| 1693 | NewCommand("Teleport",function(plr,msg,al)
| |
| 1694 | if al:lower() == "tpto" then | |
| 1695 | if not plr.Character or not plr.Character:findFirstChild("Torso") then
| |
| 1696 | return Inform(plr,"You cannot teleport!") | |
| 1697 | end | |
| 1698 | for k,v in pairs(FindPlayers(plr,msg)) do | |
| 1699 | if v.Character and v.Character:findFirstChild("Torso") then return teleport(plr,v) end
| |
| 1700 | end return Inform(plr,"No (teleportable) target found!") | |
| 1701 | elseif al:lower() == "tptome" then | |
| 1702 | if not plr.Character then return Inform(plr,"You cannot be teleported to!") end | |
| 1703 | for k,v in pairs(FindPlayers(plr,msg)) do | |
| 1704 | if v.Character then teleport(v,plr) end | |
| 1705 | end | |
| 1706 | else local ta,a,b = {},Split(msg) a = a or "me"
| |
| 1707 | for k,v in pairs(FindPlayers(plr,b or msg)) do | |
| 1708 | if v.Character and v.Character:findFirstChild("Torso") then table.insert(ta,v) end
| |
| 1709 | end if #ta==0 then return Inform(plr,"No (teleportable) player found to choose out to teleport to") end | |
| 1710 | for k,v in pairs(FindPlayers(plr,a)) do teleport(v,ta[math.random(#ta)]) end | |
| 1711 | end | |
| 1712 | end,"Admin1 (Basic)","Teleport yourself or others. players[, player2]","tp","tpto","tptome") | |
| 1713 | NewCommand("Change Stat",function(plr,msg,al)
| |
| 1714 | local a,b = Split(msg) local b,c = Split(c) local ckey = CommandKey | |
| 1715 | if not b then return Inform(plr,"Usage: "..al..ckey.."PLAYERS"..ckey.."STAT"..ckey.."VALUE") end | |
| 1716 | for k,v in pairs(FindPlayers(plr,a)) do | |
| 1717 | if v:findFirstChild("leaderstats") and v.leaderstats:findFirstChild(b) then
| |
| 1718 | pcall(function() v.leaderstats[b].Value = al end) | |
| 1719 | end | |
| 1720 | end | |
| 1721 | end,"Admin1 (Basic)","Change the leaderstats of yourself or others. players,statname[,value]","change","stat","set") | |
| 1722 | NewCommand("Kill",function(...)
| |
| 1723 | for k,v in pairs(FindPlayers(...)) do | |
| 1724 | if v.Character then | |
| 1725 | v.Character:BreakJoints() | |
| 1726 | end | |
| 1727 | end | |
| 1728 | end,"Admin1 (Basic)","Kills the given player(s)","dead") | |
| 1729 | NewCommand("Loopkill",function(...)
| |
| 1730 | for k,v in pairs(FindPlayers(...)) do | |
| 1731 | Loopkilling[v.Name] = true | |
| 1732 | end | |
| 1733 | end,"Admin1 (Basic)","Kills the given player(s) on respawn","loopdead","loop") | |
| 1734 | NewCommand("Unloopkill",function(...)
| |
| 1735 | for k,v in pairs(FindPlayers(...)) do | |
| 1736 | Loopkilling[v.Name] = nil | |
| 1737 | end | |
| 1738 | end,"Admin1 (Basic)","Removes the loopkill of the given player","unloopdead","unloop") | |
| 1739 | NewCommand("Heal",function(...)
| |
| 1740 | for k,v in pairs(FindPlayers(...)) do | |
| 1741 | if v.Character and v.Character:findFirstChild("Humanoid") then
| |
| 1742 | v.Character.Humanoid.Health = v.Character.Humanoid.MaxHealth | |
| 1743 | end | |
| 1744 | end | |
| 1745 | end,"Admin1 (Basic)","Heals the given player(s)","fullhealth") | |
| 1746 | NewCommand("Walkspeed",function(plr,msg,al)
| |
| 1747 | if al:lower() == "walk" then | |
| 1748 | for k,v in pairs(FindPlayers(plr,msg)) do | |
| 1749 | if v.Character and v.Character:findFirstChild("Humanoid") then
| |
| 1750 | v.Character.Humanoid.WalkSpeed = 16 | |
| 1751 | end | |
| 1752 | end return | |
| 1753 | elseif al:lower() == "run" then | |
| 1754 | for k,v in pairs(FindPlayers(plr,msg)) do | |
| 1755 | if v.Character and v.Character:findFirstChild("Humanoid") then
| |
| 1756 | v.Character.Humanoid.WalkSpeed = 33 | |
| 1757 | end | |
| 1758 | end return | |
| 1759 | end local who,how = Split(msg) | |
| 1760 | if not who or not how then | |
| 1761 | return Inform(plr,"Usage: walkspeed"..CommandKey.."PLAYERS"..CommandKey.."SPEED") | |
| 1762 | end if not tonumber(how) then return Inform(plr,"Speed has to be a number") end | |
| 1763 | for k,v in pairs(FindPlayers(plr,who)) do | |
| 1764 | if v.Character and v.Character:findFirstChild("Humanoid") then
| |
| 1765 | v.Character.Humanoid.WalkSpeed = tonumber(how) | |
| 1766 | end | |
| 1767 | end | |
| 1768 | end,"Admin1 (Basic)","Changes the walkspeed of the given player(s)","ws","speed","walk","run") | |
| 1769 | NewCommand("Message",function(plr,msg)
| |
| 1770 | for k,v in pairs(FindPlayers(plr,"all")) do | |
| 1771 | Inform(v,plr.Name..": "..msg) | |
| 1772 | end | |
| 1773 | end,"Admin1 (Basic)","Sends everyone the given message","msg","m","say") | |
| 1774 | NewCommand("Hint",function(plr,msg)
| |
| 1775 | local hint = workspace:findFirstChild("ServerHint")
| |
| 1776 | if not hint then | |
| 1777 | hint = Instance.new("Hint",workspace)
| |
| 1778 | hint.Name = "ServerHint" | |
| 1779 | end hint.Text = msg | |
| 1780 | if msg:lower() == "off" or msg == "" then | |
| 1781 | hint:Destroy() | |
| 1782 | end | |
| 1783 | end,"Admin1 (Basic)","Sets the server hint ('off' for none)","h")
| |
| 1784 | NewCommand("Explode",function(...)
| |
| 1785 | for k,v in pairs(FindPlayers(...)) do | |
| 1786 | if v.Character then | |
| 1787 | local ex = Instance.new("Explosion")
| |
| 1788 | ex.Position = v.Character:GetModelCFrame().p | |
| 1789 | ex.Parent = workspace | |
| 1790 | end | |
| 1791 | end | |
| 1792 | end,"Admin1 (Basic)","Makes the given players explode","boom","ex") | |
| 1793 | NewCommand("Gear",function(plr,msg)
| |
| 1794 | local who,what = Split(msg) | |
| 1795 | if not who then | |
| 1796 | who = "me" | |
| 1797 | what = msg | |
| 1798 | end | |
| 1799 | local gear = getCatalogItems(Data.Gear,what) | |
| 1800 | if not gear then return Inform(plr,"No gear with that name found!") end | |
| 1801 | if #gear > 1 then Inform(plr,"More than 1 gear found! Giving them all") end | |
| 1802 | local pa = Instance.new("Model")
| |
| 1803 | for k,v in pairs(gear) do game:GetService("InsertService"):LoadAsset(v).Parent = pa end
| |
| 1804 | for k,v in pairs(FindPlayers(plr,who)) do | |
| 1805 | for a,b in pairs(pa:GetChildren()) do | |
| 1806 | for a,b in pairs(b:GetChildren()) do | |
| 1807 | b:clone().Parent = v:findFirstChild("Backpack")
| |
| 1808 | end | |
| 1809 | end | |
| 1810 | end | |
| 1811 | end,"Admin1 (Basic)","Download almost any gear by name (Ex: gear"..CommandKey.."me"..CommandKey.."jetpack)","tool") | |
| 1812 | NewCommand("Remove Tools",function(...)
| |
| 1813 | for k,v in pairs(FindPlayers(...)) do | |
| 1814 | if v.Character and v.Character:findFirstChild("Humanoid") then
| |
| 1815 | pcall(v.Character.Humanoid.UnequipTools,v.Character.Humanoid) | |
| 1816 | end | |
| 1817 | if v:findFirstChild("Backpack") then
| |
| 1818 | v.Backpack:ClearAllChildren() | |
| 1819 | end | |
| 1820 | end | |
| 1821 | end,"Admin1 (Basic)","Clears the given player(s) backpack","rtools","clearbackpack","notools") | |
| 1822 | NewCommand("Build Tools",function(...)
| |
| 1823 | for k,v in pairs(FindPlayers(...)) do | |
| 1824 | if v:findFirstChild("Backpack") and not v.Backpack:findFirstChild("BuildTool") then
| |
| 1825 | for a,b in pairs({"Clone","Grab","GameTool","Hammer"}) do
| |
| 1826 | local t = Instance.new("HopperBin")
| |
| 1827 | t.BinType = v t.Parent = v.Backpack | |
| 1828 | end | |
| 1829 | for a,b in pairs({73089166,73089190,73089259,73089239}) do
| |
| 1830 | game:GetService("InsertService"):LoadAsset(b):GetChildren()[1].Parent = v.Backpack
| |
| 1831 | end | |
| 1832 | end | |
| 1833 | end | |
| 1834 | end,"Admin1 (Basic)","Gives you the classic and modern buildtools","btools","build") | |
| 1835 | local function children(o,t) | |
| 1836 | for k,v in pairs(o:GetChildren()) do | |
| 1837 | table.insert(t,v) children(v,t) | |
| 1838 | end return t | |
| 1839 | end | |
| 1840 | NewCommand("Visible",function(...)
| |
| 1841 | for k,v in pairs(FindPlayers(...)) do | |
| 1842 | if v.Character then | |
| 1843 | for k,v in pairs(children(v.Character,{})) do
| |
| 1844 | if v:IsA("BasePart") then
| |
| 1845 | local t = Instance.new("NumberValue",v)
| |
| 1846 | t.Name = "OldTransparency" | |
| 1847 | t.Value = v.Transparency wait() | |
| 1848 | end | |
| 1849 | end | |
| 1850 | end | |
| 1851 | end | |
| 1852 | end,"Admin1 (Basic)","Makes the given players visible","see","vis","untrans") | |
| 1853 | NewCommand("Invisible",function(...)
| |
| 1854 | for k,v in pairs(FindPlayers(...)) do | |
| 1855 | if v.Character then | |
| 1856 | for k,v in pairs(children(v.Character,{})) do
| |
| 1857 | if v:IsA("NumberValue") and v.Name == "OldTransparency" and v.Parent:IsA("BasePart") then
| |
| 1858 | v.Parent.Transparency = v.Value v:Destroy() wait() | |
| 1859 | end | |
| 1860 | end | |
| 1861 | end | |
| 1862 | end | |
| 1863 | end,"Admin1 (Basic)","Makes the given players invisible","unsee","invis","trans") | |
| 1864 | NewCommand("Punish",function(...)
| |
| 1865 | for k,v in pairs(FindPlayers(...)) do | |
| 1866 | if v.Character then | |
| 1867 | v.Character.Parent = game:GetService("Lighting")
| |
| 1868 | end | |
| 1869 | end | |
| 1870 | end,"Admin1 (Basic)","Puts the given player(s)' character in Lighting") | |
| 1871 | NewCommand("Unpunish",function(...)
| |
| 1872 | for k,v in pairs(FindPlayers(...)) do | |
| 1873 | v.Character = workspace | |
| 1874 | end | |
| 1875 | end,"Admin1 (Basic)","Puts the given player(s)' character in Workspace") | |
| 1876 | NewCommand("Freecam",function(...)
| |
| 1877 | for k,v in pairs(FindPlayers(...)) do v.Character = nil | |
| 1878 | ypcall(Script,Scripts.Freecam,v:findFirstChild("Backpack"),true)
| |
| 1879 | end | |
| 1880 | end,"Admin1 (Basic)","Gives the given player(s) a probe and removes their character","probe") | |
| 1881 | NewCommand("Fix Camera",function(...)
| |
| 1882 | for k,v in pairs(FindPlayers(...)) do | |
| 1883 | ypcall(Script,Scripts.Fixcam,v:findFirstChild("Backpack"),true)
| |
| 1884 | end | |
| 1885 | end,"Admin1 (Basic)","Tries to fix/reset the camera","fixcam","camfix") | |
| 1886 | NewCommand("Fling",function(...)
| |
| 1887 | for k,v in pairs(FindPlayers(...)) do | |
| 1888 | if v.Character and v.Character:findFirstChild("Torso") then
| |
| 1889 | v.Character.Torso.Velocity = Vector3.new(1000,1000,0) | |
| 1890 | end | |
| 1891 | end | |
| 1892 | end,"Admin1 (Basic)","Flings the player(s) close to the end of the universe","slinger","sling") | |
| 1893 | NewCommand("Jail",function(plr,msg) local a,b = Split(msg)
| |
| 1894 | for k,v in pairs(FindPlayers(plr,a or msg)) do | |
| 1895 | if v.Character and v.Character:findFirstChild("Torso") and not v.Character:findFirstChild("Jail") then
| |
| 1896 | local jail = Instance.new("Part",v.Character) jail.Name = "Jail" jail.Transparency = 0.5
| |
| 1897 | jail.BrickColor = BrickColor.Blue() jail.FormFactor = "Custom" jail.Size = Vector3.new(1,1,1) | |
| 1898 | local mesh = Instance.new("SpecialMesh",jail) mesh.MeshType = "Sphere" jail:BreakJoints()
| |
| 1899 | mesh.Scale = Vector3.new(8,8,8) local weld = Instance.new("Weld",jail)
| |
| 1900 | jail.TopSurface = "Smooth" jail.BottomSurface = "Smooth" | |
| 1901 | weld.Part0 = v.Character.Torso weld.Part1 = jail local bp = Instance.new("BodyPosition",jail)
| |
| 1902 | bp.maxForce = Vector3.new(1e99,1e99,1e99) bp.position = v.Character.Torso.Position+Vector3.new(0,5,0) | |
| 1903 | if v.Character:findFirstChild("Humanoid") then v.Character.Humanoid.Name = "Human" end
| |
| 1904 | end Jailed[v.Name] = tonumber(b) and tonumber(b)*60 or 1e9 | |
| 1905 | print("Jailed",v,"for",math.floor((tonumber(b) and tonumber(b)*60 or 1e9)/60),"minutes")
| |
| 1906 | end | |
| 1907 | end,"Admin1 (Basic)","Jails the given player(s) for the given minutes") | |
| 1908 | NewCommand("Unjail",function(...)
| |
| 1909 | for k,v in pairs(FindPlayers(...)) do Jailed[v.Name] = nil | |
| 1910 | if v.Character and v.Character:findFirstChild("Torso") and v.Character:findFirstChild("Jail") then
| |
| 1911 | if v.Character:findFirstChild("Human") then
| |
| 1912 | v.Character.Human.Name = "Humanoid" | |
| 1913 | end v.Character["Jail"]:Destroy() | |
| 1914 | end | |
| 1915 | end | |
| 1916 | end,"Admin1 (Basic)","Unjails the given player(s)") | |
| 1917 | end | |
| 1918 | ||
| 1919 | do -- Admin2 (Build) | |
| 1920 | NewCommand("New Part",function(plr,msg)
| |
| 1921 | local part = Instance.new("Part",workspace)
| |
| 1922 | part.Name = "ADM Spawned Part" | |
| 1923 | local x,y,z = Split(msg) local y2,z = Split(y) | |
| 1924 | x,y,z = tonumber(x or msg),tonumber(y2 or y),tonumber(z) | |
| 1925 | part.Size = Vector3.new(x or 4,y or 1.2,z or 2) | |
| 1926 | if plr.Character then | |
| 1927 | part.Position = plr.Character:GetModelCFrame().p + Vector3.new(math.random(-5,5),5,math.random(-5,5)) | |
| 1928 | end | |
| 1929 | end,"Admin2 (Build)","Drops a part near you. X/Y/Z-size is optional","part") | |
| 1930 | NewCommand("Clear Parts",function(plr,msg)
| |
| 1931 | local pos = plr.Character and plr.Character:GetModelCFrame().p or Vector3.new() | |
| 1932 | local dist = tonumber(msg) or 9999999 | |
| 1933 | for k,v in pairs(workspace:GetChildren()) do | |
| 1934 | if v.Name == "ADM Spawned Part" and (v.Position-pos).magnitude <= dist then | |
| 1935 | v:Destroy() wait() | |
| 1936 | end | |
| 1937 | end | |
| 1938 | end,"Admin2 (Build)","Deletes all created parts, in range if number given","clearpart","cleanparts") | |
| 1939 | NewCommand("Clear Terrain",function()
| |
| 1940 | workspace.Terrain:Clear() | |
| 1941 | end,"Admin2 (Build)","Deletes the hole terrain (can be laggy)","cterrain","deleteterrain","cleanterrain") | |
| 1942 | NewCommand("Baseplate",function()
| |
| 1943 | while workspace:findFirstChild("Base") do workspace.Base:Destroy() end
| |
| 1944 | while workspace:findFirstChild("BasePlate") do workspace.BasePlate:Destroy() end
| |
| 1945 | local p = Instance.new("Part",workspace) p.Name = "Base"
| |
| 1946 | p.Anchored = true p.Material = "Concrete" | |
| 1947 | p.Size = Vector3.new(500,0,500) p.CFrame = CFrame.new(0,0.6,0) | |
| 1948 | end,"Admin2 (Build)","Creates a new baseplate in the center of the map","bp","base") | |
| 1949 | NewCommand("Terrain Baseplate",function()
| |
| 1950 | for x=-50,50 do wait() | |
| 1951 | for z=-50,50 do | |
| 1952 | workspace.Terrain:SetCell(x,1,z,1,0,0) | |
| 1953 | end | |
| 1954 | end | |
| 1955 | end,"Admin2 (Build)","Creates a new baseplate out of terrain","terrainbp","tbp","terrainbase") | |
| 1956 | NewCommand("Clear Dead",function()
| |
| 1957 | for k,v in pairs(workspace:GetChildren()) do | |
| 1958 | for a,b in pairs(v:GetChildren()) do | |
| 1959 | if b:IsA("Humanoid") and b.Health < 1 and not game:GetService("Players"):GetPlayerFromCharacter(v) then
| |
| 1960 | v:Destroy() wait() | |
| 1961 | end | |
| 1962 | end | |
| 1963 | end | |
| 1964 | end,"Admin2 (Build)","Deletes all dead characters in workspace except players","deadclear","cleandead") | |
| 1965 | NewCommand("Clear Hats",function()
| |
| 1966 | for k,v in pairs(workspace:GetChildren()) do | |
| 1967 | if v:IsA("Hat") or v:IsA("Tool") then
| |
| 1968 | v:Destroy() wait() | |
| 1969 | end | |
| 1970 | end | |
| 1971 | end,"Admin2 (Build)","Deletes all dead characters in workspace except players","hatclear","nohats","cleanhats","chats") | |
| 1972 | end | |
| 1973 | ||
| 1974 | do -- Admin3 (Lighting) | |
| 1975 | NewCommand("Set Time",function(plr,msg)
| |
| 1976 | pcall(function() game:GetService("Lighting").TimeOfDay = msg end)
| |
| 1977 | Inform(plr,"Current TimeOfDay: "..game:GetService("Lighting").TimeOfDay)
| |
| 1978 | end,"Admin3 (Lighting)","Sets the time to the given time and prints it ('' for only printing)","time")
| |
| 1979 | NewCommand("Set GlobalShadows",function(plr,msg)
| |
| 1980 | if msg:lower() == "true" or msg:lower() == "t" or msg == "1" or msg == "on" then | |
| 1981 | game:GetService("Lighting").GlobalShadows = true Inform(plr,"GlobalShadows set to true")
| |
| 1982 | elseif msg:lower() == "false" or msg:lower() == "f" or msg == "0" or msg == "off" then | |
| 1983 | game:GetService("Lighting").GlobalShadows = false Inform(plr,"GlobalShadows set to false")
| |
| 1984 | else local o = game:GetService("Lighting").GlobalShadows
| |
| 1985 | game:GetService("Lighting").GlobalShadows = not o
| |
| 1986 | Inform(plr,"GlobalShadows switched from "..tostring(o).." to "..tostring(not o)) | |
| 1987 | end | |
| 1988 | end,"Admin3 (Lighting)","Sets GlobalShadows to true/false","globalshadows","sgs","shadows") | |
| 1989 | NewCommand("Set Ambient",function(plr,msg)
| |
| 1990 | local x,y,z = Split(msg) local y2,z = y and Split(y) | |
| 1991 | x,y,z = tonumber(x or msg),tonumber(y or y2),tonumber(z) | |
| 1992 | game:GetService("Lighting").Ambient = Color3.new(x and x/255,y and y/255,z and z/255)
| |
| 1993 | end,"Admin3 (Lighting)","Sets the Ambient to the Color3 (r,g,b)","ambient") | |
| 1994 | NewCommand("Set OutdoorAmbient",function(plr,msg)
| |
| 1995 | local x,y,z = Split(msg) local y2,z = y and Split(y) | |
| 1996 | x,y,z = tonumber(x or msg),tonumber(y or y2),tonumber(z) | |
| 1997 | game:GetService("Lighting").OutdoorAmbient = Color3.new(x and x/255,y and y/255,z and z/255)
| |
| 1998 | end,"Admin3 (Lighting)","Sets the OutdoorAmbient to the Color3 (r,g,b)","outdoorambient") | |
| 1999 | NewCommand("Set ShadowColor",function(plr,msg)
| |
| 2000 | local x,y,z = Split(msg) local y2,z = y and Split(y) | |
| 2001 | x,y,z = tonumber(x or msg),tonumber(y or y2),tonumber(z) | |
| 2002 | game:GetService("Lighting").ShadowColor = Color3.new(x and x/255,y and y/255,z and z/255)
| |
| 2003 | end,"Admin3 (Lighting)","Sets the ShadowColor to the Color3 (r,g,b)","shadowcolor","shadow") | |
| 2004 | NewCommand("Set FogColor",function(plr,msg)
| |
| 2005 | local x,y,z = Split(msg) local y2,z = y and Split(y) | |
| 2006 | x,y,z = tonumber(x or msg),tonumber(y or y2),tonumber(z) | |
| 2007 | game:GetService("Lighting").FogColor = Color3.new(x and x/255,y and y/255,z and z/255)
| |
| 2008 | end,"Admin3 (Lighting)","Sets the FogColor to the Color3 (r,g,b)","fogcolor") | |
| 2009 | NewCommand("Set Fog",function(plr,msg,al)
| |
| 2010 | if al:lower() == "fogend" then | |
| 2011 | game:GetService("Lighting").FogEnd = tonumer(msg) or 100000 return
| |
| 2012 | elseif al:lower() == "fogstart" then | |
| 2013 | game:GetService("Lighting").FogStart = tonumer(msg) or 0 return
| |
| 2014 | end local a,b = Split(msg) if not a then a = tonumber(msg) end | |
| 2015 | game:GetService("Lighting").FogStart = tonumer(a) or 0
| |
| 2016 | game:GetService("Lighting").FogEnd = tonumer(b) or 100000
| |
| 2017 | end,"Admin3 (Lighting)","Sets the FogStart and End to the given value(s)","fog","fogend","fogstart") | |
| 2018 | NewCommand("Set Brightness",function(plr,msg)
| |
| 2019 | game:GetService("Lighting").Brightness = tonumber(msg) or 1
| |
| 2020 | end,"Admin3 (Lighting)","Sets the Brightness to the given number","brightness","bright") | |
| 2021 | local function part(f,t) | |
| 2022 | local p = Instance.new("Part",workspace)
| |
| 2023 | p.Name = "ADM Lightning" p.Locked = true | |
| 2024 | p.TopSurface = 0 p.BottomSurface = 0 | |
| 2025 | p.Anchored = true p.CanCollide = false | |
| 2026 | p.BrickColor = BrickColor.new(1001) | |
| 2027 | p.Size = Vector3.new(2,2,(f-t).magnitude) | |
| 2028 | p.CFrame = CFrame.new(f:lerp(t,0.5),t) | |
| 2029 | game:GetService("Debris"):AddItem(p,0.1)
| |
| 2030 | end | |
| 2031 | local function lightning(p) | |
| 2032 | for r=1,5 do | |
| 2033 | local prev = p.Position | |
| 2034 | local pos = Vector3.new() | |
| 2035 | for i=1,5 do part(prev,prev+pos) prev = prev + pos | |
| 2036 | pos = pos + Vector3.new(math.random(-10,10),math.random(10,20),math.random(-10,10)) | |
| 2037 | end wait(0.1) p:BreakJoints() | |
| 2038 | end | |
| 2039 | end | |
| 2040 | NewCommand("Lightning",function(...)
| |
| 2041 | for k,v in pairs(FindPlayers(...)) do | |
| 2042 | if v.Character and v.Character:findFirstChild("Head") then
| |
| 2043 | coroutine.wrap(lightning)(v.Character.Head) | |
| 2044 | end | |
| 2045 | end | |
| 2046 | end,"Admin3 (Lighting)","Make someone get hit by lightning","light","electrify","shock","electro","bolt") | |
| 2047 | NewCommand("Disco",function(plr,msg,al)
| |
| 2048 | if al:lower() == "undisco" then | |
| 2049 | Cache.Disco = nil | |
| 2050 | elseif Cache.Disco then | |
| 2051 | return | |
| 2052 | else Cache.Disco = true | |
| 2053 | local l = game:GetService("Lighting")
| |
| 2054 | local old = l.Ambient | |
| 2055 | while wait(0.1) and Cache.Disco do | |
| 2056 | l.Ambient = Color3.new(math.random(),math.random(),math.random()) | |
| 2057 | end l.Ambient = old | |
| 2058 | end | |
| 2059 | end,"Admin3 (Lighting)","Make someone get hit by lightning","undisco") | |
| 2060 | end | |
| 2061 | ||
| 2062 | do -- Admin4 (Extra) | |
| 2063 | local appear = "http://www.roblox.com/Asset/CharacterFetch.ashx?userId=%s&placeId="..game.PlaceId | |
| 2064 | local function getappear(plr,msg,asker) | |
| 2065 | if not msg then return appear:format(plr.userId) end | |
| 2066 | if tonumber(msg) then return appear:format(msg) end | |
| 2067 | local players = FindPlayers(asker,msg) | |
| 2068 | return players[1] and appear:format(players[1].userId) or appear:format(plr.userId) | |
| 2069 | end | |
| 2070 | NewCommand("Appearance",function(plr,msg,al) local a,b = Split(msg) a = a or msg
| |
| 2071 | if al:lower():find("perm") then
| |
| 2072 | for k,v in pairs(FindPlayers(plr,msg)) do v.CharacterAppearance = getappear(b,v,plr) | |
| 2073 | v:LoadCharacter() print(v,"looks now like player ID",getappear(b,v,plr)) | |
| 2074 | end return | |
| 2075 | end | |
| 2076 | for k,v in pairs(FindPlayers(plr,msg)) do local old = v.CharacterAppearance | |
| 2077 | v.CharacterAppearance = getappear(b,v,plr) | |
| 2078 | local cf = v.Character and v.Character:findFirstChild("Torso") and v.Character.Torso.CFrame
| |
| 2079 | v:LoadCharacter() if cf then coroutine.wrap(function() wait() v.Character.Torso.CFrame = cf end)() end | |
| 2080 | v.CharacterAppearance = old print(v,"dressed and respawned on the exact same old location he/she was") | |
| 2081 | end | |
| 2082 | end,"Admin4 (Extra)","Give a player ID. Use perm~ to keep the appearance","permappearance","appear","permappear") | |
| 2083 | NewCommand("Thrust",function(plr,msg) local a,b = Split(msg) a = a or msg
| |
| 2084 | if b and not tonumber(b) then return Inform(plr,"Second argument should be a number!") end | |
| 2085 | for k,v in pairs(FindPlayers(plr,a)) do | |
| 2086 | if v.Character and v.Character:findFirstChild("Torso") then
| |
| 2087 | local thrust = v.Character.Torso:findFirstChild("ADM Thrust")
| |
| 2088 | if not b or b == "" or tonumber(b) == 0 then return thrust and thrust:Destroy() end | |
| 2089 | if not thrust then thrust = Instance.new("BodyForce",v.Character.Torso) end
| |
| 2090 | thrust.Name = "ADM Thrust" thrust.force = Vector3.new(0,tonumber(b),0) | |
| 2091 | end | |
| 2092 | end | |
| 2093 | end,"Admin4 (Extra)","Gives the given player(s) the given thrust as standard","power","force") | |
| 2094 | NewCommand("God",function(...)
| |
| 2095 | local function doh(hit) | |
| 2096 | if hit.Anchored then return end | |
| 2097 | if not hit.Parent then return end | |
| 2098 | hit:BreakJoints() | |
| 2099 | end | |
| 2100 | local function human(hum,pro) | |
| 2101 | if pro:lower() == "jump" and hum.Parent:findFirstChild("Torso") then
| |
| 2102 | hum.Parent.Torso.Velocity = Vector3.new(0,100,0) | |
| 2103 | elseif pro:lower() == "walkspeed" then | |
| 2104 | hum.WalkSpeed = 50 | |
| 2105 | elseif pro:lower() == "health" then | |
| 2106 | while hum.Health < hum.MaxHealth and hum.Health < 500 do | |
| 2107 | hum.Health = hum.Health + wait() | |
| 2108 | end | |
| 2109 | elseif pro:lower() == "sit" then | |
| 2110 | hum.Sit = false | |
| 2111 | elseif pro:lower() == "platformstand" then | |
| 2112 | hum.PlatformStand = false | |
| 2113 | end | |
| 2114 | end | |
| 2115 | for k,v in pairs(FindPlayers(...)) do | |
| 2116 | if v.Character and v.Character:findFirstChild("Humanoid") then
| |
| 2117 | coroutine.wrap(function() | |
| 2118 | if v.Character:findFirstChild("God") then v.Character.God:Destroy() end
| |
| 2119 | local god = Instance.new("BoolValue",v.Character) god.Value = true
| |
| 2120 | local cons = {} local function add(ev,co) table.insert(cons,ev:connect(co)) end
| |
| 2121 | for k,v in pairs(v.Character:GetChildren()) do | |
| 2122 | if v:IsA("BasePart") then
| |
| 2123 | add(v.Touched,doh) | |
| 2124 | end | |
| 2125 | end v.Character.Humanoid.Changed:connect(function(p) human(v.Character.Humanoid,p) end) | |
| 2126 | v.Character.Humanoid.WalkSpeed = 50 v.Character.Humanoid.Health = v.Character.Humanoid.MaxHealth | |
| 2127 | while god.Parent == v.Character and god.Value do wait() end | |
| 2128 | for k,v in pairs(cons) do v:disconnect() end | |
| 2129 | end)() | |
| 2130 | end | |
| 2131 | end | |
| 2132 | end,"Admin4 (Extra)","Gives the given player(s) godlike powers") | |
| 2133 | NewCommand("Blind",function(...)
| |
| 2134 | for k,v in pairs(FindPlayers(...)) do | |
| 2135 | local g = Instance.new("ScreenGui",v:findFirstChild("PlayerGui"))
| |
| 2136 | g.Name = "ADM Blind ScreenGui Thingy" | |
| 2137 | local f = Instance.new("Frame",g) f.Name = "BlindScreen"
| |
| 2138 | f.Size = UDim2.new(1,0,1,0) f.BackgroundColor3 = Color3.new(1,1,1) | |
| 2139 | end | |
| 2140 | end,"Admin4 (Extra)","Makes the given player(s) blind","flash") | |
| 2141 | NewCommand("Unblind",function(...)
| |
| 2142 | for k,v in pairs(FindPlayers(...)) do | |
| 2143 | if v:findFirstChild("PlayerGui") then
| |
| 2144 | while v.PlayerGui:findFirstChild("ADM Blind ScreenGui Thingy") do
| |
| 2145 | v.PlayerGui["ADM Blind ScreenGui Thingy"]:Destroy() | |
| 2146 | end | |
| 2147 | end | |
| 2148 | end | |
| 2149 | end,"Admin4 (Extra)","Makes the given player(s) blind","unflash") | |
| 2150 | NewCommand("Ungod",function(...)
| |
| 2151 | for k,v in pairs(FindPlayers(...)) do | |
| 2152 | if v.Character and v.Character:findFirstChild("God") then
| |
| 2153 | v.Character.God:Destroy() | |
| 2154 | end | |
| 2155 | end | |
| 2156 | end,"Admin4 (Extra)","Removes the given player(s) their godlike powers") | |
| 2157 | NewCommand("Paralyse",function(...)
| |
| 2158 | for k,v in pairs(FindPlayers(...)) do | |
| 2159 | if v.Character and v.Character:findFirstChild("Humanoid") then
| |
| 2160 | v.Character.Humanoid.PlatformStand = true | |
| 2161 | end | |
| 2162 | end | |
| 2163 | end,"Admin4 (Extra)","Paralyses/Stuns the given player(s)","stun","para") | |
| 2164 | NewCommand("Damage",function(plr,msg)
| |
| 2165 | local a,b = Split(msg) if not tonumber(b) then return Inform(plr,"Provide a player and a number!") end | |
| 2166 | for k,v in pairs(FindPlayers(plr,a)) do | |
| 2167 | if v.Character and v.Character:findFirstChild("Humanoid") then
| |
| 2168 | v.Character.Humanoid.Health = v.Character.Humanoid.Health - tonumber(b) | |
| 2169 | end | |
| 2170 | end | |
| 2171 | end,"Admin4 (Extra)","Damages the given player(s) for the given amount","takehealth","decreasehealth") | |
| 2172 | NewCommand("Skydive",function(plr,msg)
| |
| 2173 | for k,v in pairs(FindPlayers(plr,msg)) do | |
| 2174 | if v.Character and v.Character:findFirstChild("Torso") then
| |
| 2175 | v.Character.Torso.CFrame = v.Character.Torso.CFrame + Vector3.new(0,1000,0) | |
| 2176 | end | |
| 2177 | end | |
| 2178 | end,"Admin4 (Extra)","Teleports the player(s) high in the air. Freefall!","freefall","fall","sky","dive") | |
| 2179 | local function particle(p) | |
| 2180 | while p.Size.magnitude > 0.5 do wait() | |
| 2181 | local cf = p.CFrame p.Size = p.Size - Vector3.new(0.05,0.05,0.05) | |
| 2182 | p.CFrame = cf * CFrame.Angles(math.random(-99,999),math.random(-99,99),math.random(-99,99)) | |
| 2183 | p.CFrame = p.CFrame * CFrame.new(0.2,0.2,0.2) * CFrame.Angles(123,456,789) + Vector3.new(0,0.1,0) | |
| 2184 | end p:Destroy() | |
| 2185 | end | |
| 2186 | local function particles(p,n) | |
| 2187 | for i=1,n or 50 do wait(0.1) | |
| 2188 | local part = Instance.new("Part",p) part.Anchored = true
| |
| 2189 | part.Name = "ADM Particle" part.BrickColor = BrickColor.new(1001) | |
| 2190 | part.FormFactor = "Custom" part.Size = Vector3.new(1,1,1) | |
| 2191 | part.TopSurface = 0 part.BottomSurface = 0 | |
| 2192 | part.CFrame = p.CFrame * CFrame.Angles(0,i,0) * CFrame.new(2,0,2) | |
| 2193 | coroutine.wrap(particle)(part) part.CanCollide = false | |
| 2194 | end | |
| 2195 | end | |
| 2196 | NewCommand("Particles",function(plr,msg)
| |
| 2197 | local a,b = Split(msg) a = a or msg | |
| 2198 | for k,v in pairs(FindPlayers(plr,a)) do | |
| 2199 | if v.Character and v.Character:findFirstChild("Torso") then
| |
| 2200 | particles(v.Character.Torso,tonumber(b)) | |
| 2201 | end | |
| 2202 | end | |
| 2203 | end,"Admin4 (Extra)","Let some epic particles effects appear","particle","effect","effects") | |
| 2204 | NewCommand("Genocide",function(plr,msg)
| |
| 2205 | local a,b = Split(msg) a = a or msg | |
| 2206 | for k,v in pairs(FindPlayers(plr,a)) do | |
| 2207 | if v.Character and v.Character:findFirstChild("Torso") then
| |
| 2208 | if v.Character.Torso:findFirstChild("Neck") then
| |
| 2209 | v.Character.Torso.Neck:Destroy() | |
| 2210 | end | |
| 2211 | end | |
| 2212 | end | |
| 2213 | end,"Admin4 (Extra)","Break someone's neck for fun","noneck","neck","breakneck","geno") | |
| 2214 | NewCommand("Jetpack",function(...)
| |
| 2215 | for k,v in pairs(FindPlayers(...)) do | |
| 2216 | if v.Character and v.Character:findFirstChild("Torso") then
| |
| 2217 | if not v.Character:findFirstChild("ADM Jetpack") then
| |
| 2218 | Script(Scripts.Jetpack,v.Character,true).Name = "ADM Jetpack" | |
| 2219 | end | |
| 2220 | end | |
| 2221 | end | |
| 2222 | end,"Admin4 (Extra)","Fly with a New Gen. Jetpack","jp","jet","jets","flypack") | |
| 2223 | local function parts(v,t,p,d) | |
| 2224 | for a,b in pairs(v:GetChildren()) do | |
| 2225 | if b:IsA("BasePart") then
| |
| 2226 | if (p-b.Position).magnitude <= d then | |
| 2227 | table.insert(t,b) | |
| 2228 | end | |
| 2229 | end parts(b,t,p,d) | |
| 2230 | end return t | |
| 2231 | end | |
| 2232 | local function nuke(pos) | |
| 2233 | local p = Instance.new("Part",workspace) p.Name = "ADM Nuke"
| |
| 2234 | p.Anchored = true p.Locked = true p.Transparency = 0.5 | |
| 2235 | local m = Instance.new("SpecialMesh",p) m.MeshType = "Sphere"
| |
| 2236 | p.TopSurface = 0 p.BottomSurface = 0 p.CanCollide = false | |
| 2237 | p.Size = Vector3.new(1,1,1) p.CFrame = CFrame.new(pos) | |
| 2238 | p.BrickColor = BrickColor.new("New Yeller")
| |
| 2239 | for i=1,100 do wait(0.025) | |
| 2240 | m.Scale = Vector3.new(i,i,i) | |
| 2241 | p.Transparency = i/100 | |
| 2242 | for k,v in pairs(parts(workspace,{},pos,i)) do
| |
| 2243 | v:BreakJoints() | |
| 2244 | end | |
| 2245 | end p:Destroy() | |
| 2246 | end | |
| 2247 | NewCommand("Nuke",function(...)
| |
| 2248 | for k,v in pairs(FindPlayers(...)) do | |
| 2249 | if v.Character and v.Character:findFirstChild("Torso") then
| |
| 2250 | coroutine.wrap(nuke)(v.Character.Torso.Position) | |
| 2251 | end | |
| 2252 | end | |
| 2253 | end,"Admin4 (Extra)","Nuke 'em all! KABOOOOOOMMM","tnt") | |
| 2254 | local function scan(o) | |
| 2255 | for k,v in pairs((o or t):GetChildren()) do | |
| 2256 | if v:IsA("BasePart") then
| |
| 2257 | v.Velocity = Vector3.new() | |
| 2258 | end scan(v) | |
| 2259 | end | |
| 2260 | end | |
| 2261 | local function slowdown(t) | |
| 2262 | while wait() and t:IsDescendantOf(game) do | |
| 2263 | if t.Velocity.Y < -24 then scan(t.Parent) | |
| 2264 | t.Velocity = Vector3.new(0,-25,0) | |
| 2265 | end | |
| 2266 | end | |
| 2267 | end | |
| 2268 | NewCommand("Slowdown",function(...)
| |
| 2269 | for k,v in pairs(FindPlayers(...)) do | |
| 2270 | if v.Character and v.Character:findFirstChild("Torso") then
| |
| 2271 | coroutine.wrap(slowdown)(v.Character.Torso) | |
| 2272 | end | |
| 2273 | end | |
| 2274 | end,"Admin4 (Extra)","Slow down your fall","slowfall","featherfalling","safeland","safelanding") | |
| 2275 | NewCommand("Pet",function(...)
| |
| 2276 | for k,v in pairs(FindPlayers(...)) do | |
| 2277 | if Pets[v] then Pets[v]:Destroy() end | |
| 2278 | local p = Instance.new("Part",workspace)
| |
| 2279 | p.Name = v.Name.."'s ADM Pet" | |
| 2280 | p.CanCollide = false p.Locked = true | |
| 2281 | p.BrickColor = BrickColor.new(1001) | |
| 2282 | p.Shape = "Ball" p.Transparency = 0 | |
| 2283 | p.TopSurface = 0 p.BottomSurface = 0 | |
| 2284 | p.Size = Vector3.new(1,1,1) | |
| 2285 | p.Material = "Pebble" | |
| 2286 | local m = Instance.new("BodyPosition",p)
| |
| 2287 | m.Name = "BodyMove" m.position = Vector3.new() | |
| 2288 | m.maxForce = Vector3.new(1e99,1e99,1e99) | |
| 2289 | Instance.new("BodyGyro",p).Name = "BodyRot"
| |
| 2290 | for i=1,3 do | |
| 2291 | local s = Instance.new("Part",p)
| |
| 2292 | s.Name = "Effect"..i s.CanCollide = false | |
| 2293 | s.FormFactor = "Custom" s.Locked = true | |
| 2294 | s.TopSurface = 0 s.BottomSurface = 0 | |
| 2295 | s.Size = Vector3.new(0,1,1) | |
| 2296 | s.BrickColor = BrickColor.new(1003) | |
| 2297 | Instance.new("CylinderMesh",s)
| |
| 2298 | local w = Instance.new("Weld",p)
| |
| 2299 | w.Part0 = p w.Part1 = s w.Name = "Weld"..i | |
| 2300 | end | |
| 2301 | Pets[v] = p dprint("Pet for",v,":D")
| |
| 2302 | end | |
| 2303 | end,"Admin4 (Extra)","Summone a pet!","summone","orb") | |
| 2304 | NewCommand("Remove Pet",function(...)
| |
| 2305 | for k,v in pairs(FindPlayers(...)) do | |
| 2306 | if Pets[v] then | |
| 2307 | Pets[v]:Destroy() | |
| 2308 | end | |
| 2309 | end | |
| 2310 | end,"Admin4 (Extra)","Summone a pet!","unsummone","unorb","unpet","rpet","rempet","nopet") | |
| 2311 | local function spinneck(n) | |
| 2312 | while wait() and n:IsDescendantOf(workspace) do | |
| 2313 | n.C0 = n.C0 * CFrame.Angles(0,0,0.1) | |
| 2314 | end | |
| 2315 | end | |
| 2316 | NewCommand("Spinning Neck",function(...)
| |
| 2317 | for k,v in pairs(FindPlayers(...)) do | |
| 2318 | if v.Character and v.Character:findFirstChild("Torso") then
| |
| 2319 | if v.Character.Torso:findFirstChild("Neck") then
| |
| 2320 | coroutine.wrap(spinneck)(v.Character.Torso.Neck) | |
| 2321 | end | |
| 2322 | end | |
| 2323 | end | |
| 2324 | end,"Admin4 (Extra)","Round 'n round","spinneck","neckspin","rotateneck","rotneck") | |
| 2325 | local function check(o,t) | |
| 2326 | for k,v in pairs(o:GetChildren()) do | |
| 2327 | if v:IsA("Tool") then
| |
| 2328 | table.insert(t,v:GetFullName()) | |
| 2329 | end check(v,t) | |
| 2330 | end return t | |
| 2331 | end | |
| 2332 | NewCommand("List Tools",function(plr,msg) local t = check(game:GetService("Lighting"),{})
| |
| 2333 | check(game:GetService("ServerStorage"),check(game:GetService("ReplicatedStorage"),t))
| |
| 2334 | Inform(plr,"Tools:\n"..table.concat(check(game:GetService("StarterPack"),t),"\n"))
| |
| 2335 | end,"Admin4 (Extra)","List all tools avaible for GiveTool","tools","toollist","givelist","listgive","alltools") | |
| 2336 | NewCommand("Give Tool",function(plr,msg) local tools,a,b = {},Split(msg) a,b = b or msg,a
| |
| 2337 | local function scan(o) | |
| 2338 | for k,v in pairs(o:GetChildren()) do | |
| 2339 | if v:IsA("Tool") and v.Name:lower():sub(1,#a) == a:lower() then
| |
| 2340 | table.insert(tools,v) | |
| 2341 | end scan(v) | |
| 2342 | end | |
| 2343 | end scan(game:GetService("Lighting")) scan(game:GetService("StarterPack"))
| |
| 2344 | scan(game:GetService("ServerStorage")) scan(game:GetService("ReplicatedStorage"))
| |
| 2345 | if #tools == 0 then return Inform(plr,"No tools found! Use List Tools") end | |
| 2346 | if #tools > 1 then Inform(plr,"Multiple tools found and given!") end | |
| 2347 | for k,v in pairs(FindPlayers(plr,b or "me")) do | |
| 2348 | for a,b in pairs(tools) do | |
| 2349 | b:clone().Parent = v:findFirstChild("Backpack")
| |
| 2350 | end | |
| 2351 | end | |
| 2352 | end,"Admin4 (Extra)","Get a tool from Lighting","give","givetool") | |
| 2353 | end | |
| 2354 | ||
| 2355 | do | |
| 2356 | local gravity,cons = false,{}
| |
| 2357 | local function check(o,m) | |
| 2358 | if o:findFirstChild("ADM NoGrav") then
| |
| 2359 | o["ADM NoGrav"]:Destroy() | |
| 2360 | end | |
| 2361 | if m then local f = Instance.new("BodyForce",o)
| |
| 2362 | f.Name = "ADM NoGrav" | |
| 2363 | f.force = Vector3.new(0,o:GetMass() * 196.2,0) | |
| 2364 | table.insert(cons,o.Changed:connect(function() | |
| 2365 | f.force = Vector3.new(0,o:GetMass() * 196.2,0) | |
| 2366 | end)) | |
| 2367 | end | |
| 2368 | end | |
| 2369 | local function scan(o,m) | |
| 2370 | if o:IsA("BasePart") then check(o,m) end
| |
| 2371 | for k,v in pairs(o:GetChildren()) do | |
| 2372 | if pcall(function() v:IsA("") end) then
| |
| 2373 | if v:IsA("BasePart") then
| |
| 2374 | check(v,m~=false) | |
| 2375 | end scan(v,m~=false) | |
| 2376 | end | |
| 2377 | end | |
| 2378 | end scan(game,false) | |
| 2379 | NewCommand("No Gravity",function(...)
| |
| 2380 | if gravity then return end gravity = true scan(workspace,true) | |
| 2381 | for k,v in pairs(game:GetService("Players"):GetPlayers()) do
| |
| 2382 | Inform(v,"Global Gravity Disabled! Watch out!") | |
| 2383 | end table.insert(cons,workspace.DescendantAdded:connect(function(c) scan(c,true) end)) | |
| 2384 | table.insert(cons,workspace.DescendantRemoving:connect(function(c) scan(c,false) end)) | |
| 2385 | end,"Admin5 (Quantum)","Disable gravity everywhere for anything","nograv") | |
| 2386 | NewCommand("Gravity",function(...)
| |
| 2387 | if not gravity then return end | |
| 2388 | for k,v in pairs(cons) do | |
| 2389 | v:disconnect() | |
| 2390 | end cons,gravity = {},false
| |
| 2391 | for k,v in pairs(game:GetService("Players"):GetPlayers()) do
| |
| 2392 | Inform(v,"Global Gravity Enabled! Watch out!") | |
| 2393 | end scan(workspace,false) | |
| 2394 | end,"Admin5 (Quantum)","Enable gravity everywhere for anything","grav") | |
| 2395 | local xrays = {}
| |
| 2396 | local function xray(plr) xrays[plr] = true | |
| 2397 | local function gui() | |
| 2398 | local g = plr.PlayerGui:findFirstChild("ADM XRay")
| |
| 2399 | if g then return g end | |
| 2400 | g = Instance.new("Model",plr.PlayerGui)
| |
| 2401 | g.Name = "ADM XRay" return g | |
| 2402 | end | |
| 2403 | while wait(0.1) and xrays[plr] and plr.Parent and plr:findFirstChild("PlayerGui") do local p = {}
| |
| 2404 | for k,v in pairs(game:GetService("Players"):GetPlayers()) do p[v.Name] = v end
| |
| 2405 | for k,v in pairs(gui():GetChildren()) do | |
| 2406 | if not p[v.Name] then | |
| 2407 | v:Destroy() | |
| 2408 | else | |
| 2409 | local plr = p[v.Name] | |
| 2410 | v.Adornee = plr.Character and plr.Character:findFirstChild("HumanoidRootPart")
| |
| 2411 | end p[v.Name] = nil | |
| 2412 | end | |
| 2413 | for k,v in pairs(p) do | |
| 2414 | local gui = Instance.new("BillboardGui",gui())
| |
| 2415 | gui.Name = v.Name gui.AlwaysOnTop = true | |
| 2416 | gui.Size = UDim2.new(0,100,0,20) | |
| 2417 | local lab = Instance.new("TextLabel",gui)
| |
| 2418 | lab.Size = UDim2.new(1,0,1,0) | |
| 2419 | lab.Text = v.Name lab.Font = "SourceSansBold" | |
| 2420 | lab.TextColor3 = Color3.new(0,0,0) | |
| 2421 | lab.TextStrokeColor3 = v.TeamColor.Color | |
| 2422 | lab.TextStrokeTransparency = 0 | |
| 2423 | lab.BackgroundTransparency = 1 | |
| 2424 | lab.TextScaled = true | |
| 2425 | end | |
| 2426 | end xrays[plr] = nil gui():Destroy() | |
| 2427 | end | |
| 2428 | NewCommand("XRay",function(...)
| |
| 2429 | for k,v in pairs(FindPlayers(...)) do | |
| 2430 | if not xrays[plr] then | |
| 2431 | coroutine.wrap(xray)(v) | |
| 2432 | end | |
| 2433 | end | |
| 2434 | end,"Admin5 (Quantum)","See other players trough walls","wallplayers","seeplayers") | |
| 2435 | NewCommand("UnXRay",function(...)
| |
| 2436 | for k,v in pairs(FindPlayers(...)) do | |
| 2437 | xrays[v] = nil | |
| 2438 | end | |
| 2439 | end,"Admin5 (Quantum)","Remove the effect of XRay","unwallplayers","unseeplayers","noxray") | |
| 2440 | local function anchor(ch,an) | |
| 2441 | for k,v in pairs(ch:GetChildren()) do | |
| 2442 | if v:IsA("BasePart") then
| |
| 2443 | v.Anchored = not not an | |
| 2444 | end anchor(v,an) | |
| 2445 | end | |
| 2446 | end | |
| 2447 | local function copy(ch,an) ch.Archivable = true | |
| 2448 | local c = ch:clone() c.Parent = workspace | |
| 2449 | c.Name = ch.Name.." (Bot)" anchor(c,an) | |
| 2450 | end | |
| 2451 | NewCommand("Copy",function(...)
| |
| 2452 | for k,v in pairs(FindPlayers(...)) do | |
| 2453 | if v.Character then | |
| 2454 | copy(v.Character,select(3,...):find("a"))
| |
| 2455 | end | |
| 2456 | end | |
| 2457 | end,"Admin5 (Quantum)","Copy someone's character","clone","statue","acopy","aclone") | |
| 2458 | NewCommand("Freeze",function(...)
| |
| 2459 | for k,v in pairs(FindPlayers(...)) do | |
| 2460 | if v.Character then | |
| 2461 | anchor(v.Character,true) | |
| 2462 | end | |
| 2463 | end | |
| 2464 | end,"Admin5 (Quantum)","Anchor somebody in place","anchor") | |
| 2465 | NewCommand("Unfreeze",function(...)
| |
| 2466 | for k,v in pairs(FindPlayers(...)) do | |
| 2467 | if v.Character then | |
| 2468 | anchor(v.Character,false) | |
| 2469 | end | |
| 2470 | end | |
| 2471 | end,"Admin5 (Quantum)","Unanchor somebody to move freely","unanchor") | |
| 2472 | end | |
| 2473 | ||
| 2474 | do | |
| 2475 | NewCommand("Set Team",function(plr,msg) local a,b = Split(msg)
| |
| 2476 | if b and b:lower() == "neutral" then | |
| 2477 | for k,v in pairs(FindPlayers(plr,a)) do | |
| 2478 | v.Neutral = true | |
| 2479 | end | |
| 2480 | elseif b and b:lower() == "random" then | |
| 2481 | if #game:GetService("Teams"):GetTeams() == 0 then
| |
| 2482 | return Inform(plr,"No teams found!",5) | |
| 2483 | end | |
| 2484 | local function team() | |
| 2485 | while #game:GetService("Teams"):GetTeams() > 0 do
| |
| 2486 | for k,v in pairs(game:GetService("Teams"):GetTeams()) do
| |
| 2487 | coroutine.yield(v.TeamColor) | |
| 2488 | end | |
| 2489 | end | |
| 2490 | end team = coroutine.wrap(team) | |
| 2491 | for k,v in pairs(FindPlayers(plr,a)) do | |
| 2492 | v.TeamColor = team() v.Neutral = false | |
| 2493 | end | |
| 2494 | else local team = FindTeam(plr,b or msg) | |
| 2495 | if not team then return Inform(plr,"That team is not found!",5) end | |
| 2496 | for k,v in pairs(FindPlayers(plr,a or msg)) do | |
| 2497 | v.TeamColor = team.TeamColor v.Neutral = false | |
| 2498 | end | |
| 2499 | end | |
| 2500 | end,"Admin6 (Teams)","Set someone's team","team","changeteam","join") | |
| 2501 | NewCommand("New Team",function(plr,msg) local a,b = Split(msg)
| |
| 2502 | if not a then return Inform(plr,"Usage: newteam/NAME/COLOR",5) end | |
| 2503 | local team = Instance.new("Team",game:GetService("Teams"))
| |
| 2504 | team.Name = a team.TeamColor = BrickColor.new(b) | |
| 2505 | end,"Admin6 (Teams)","Create a new team","createteam","nteam") | |
| 2506 | NewCommand("Delete Team",function(plr,msg) local team = FindTeam(plr,msg)
| |
| 2507 | if not team then return Inform(plr,"That team is not found!",5) end | |
| 2508 | for k,v in pairs(game:GetService("Players"):GetPlayers()) do
| |
| 2509 | if v.TeamColor == team.TeamColor and not v.Neutral then | |
| 2510 | v.Neutral = true | |
| 2511 | end | |
| 2512 | end team:Destroy() | |
| 2513 | end,"Admin6 (Teams)","Delete a team","delteam","removeteam","remteam") | |
| 2514 | NewCommand("Rebalance Teams",function(plr,msg)
| |
| 2515 | if #game:GetService("Teams"):GetTeams() == 0 then
| |
| 2516 | return Inform(plr,"No teams found!",5) | |
| 2517 | end | |
| 2518 | local function team() | |
| 2519 | while #game:GetService("Teams"):GetTeams() > 0 do
| |
| 2520 | for k,v in pairs(game:GetService("Teams"):GetTeams()) do
| |
| 2521 | coroutine.yield(v.TeamColor) | |
| 2522 | end | |
| 2523 | end | |
| 2524 | end team = coroutine.wrap(team) | |
| 2525 | for k,v in pairs(FindPlayers(plr,msg == "" and "all" or msg)) do | |
| 2526 | v.TeamColor = team().TeamColor v.Neutral = false | |
| 2527 | end Inform(plr,"Rebalanced the players over all teams!",10) | |
| 2528 | end,"Admin6 (Teams)","Balance all or some selected people","balanceteams","balteams","rebalteams") | |
| 2529 | local function scan(o,t,r) | |
| 2530 | for k,v in pairs(o:GetChildren()) do | |
| 2531 | if v:IsA("SpawnLocation") and (t and v.TeamColor == t or v.Neutral) then
| |
| 2532 | table.insert(r,v) | |
| 2533 | end scan(v,t,r) | |
| 2534 | end | |
| 2535 | end | |
| 2536 | NewCommand("Team Spawn",function(plr,msg) local a,b = Split(msg) a = a or "me" b = b or msg
| |
| 2537 | local team = FindTeam(plr,b) if b:lower() == "neutral" then team = true end | |
| 2538 | if not team then return Inform(plr,"That team is not found!",5) end | |
| 2539 | local res = {} scan(workspace,team ~= true and team.TeamColor,res)
| |
| 2540 | if #res == 0 then return Inform(plr,"Couldn't find spawnlocations for this team!",5) end | |
| 2541 | local r = coroutine.wrap(function() while true do for k,v in pairs(res) do coroutine.yield(v) end end end) | |
| 2542 | for k,v in pairs(FindPlayers(plr,a)) do | |
| 2543 | if v.Character then | |
| 2544 | v.Character:MoveTo(r().Position) | |
| 2545 | end | |
| 2546 | end | |
| 2547 | end,"Admin6 (Teams)","Tries to teleport you to the team's spawn","teleteam","teamtele","teamteleport") | |
| 2548 | end | |
| 2549 | ||
| 2550 | if PBS or workspace:findFirstChild("OwnerCameraShotRef") then
| |
| 2551 | local function ref() | |
| 2552 | local r = workspace:findFirstChild("OwnerCameraShotRef")
| |
| 2553 | if r then r:Destroy() end | |
| 2554 | end | |
| 2555 | NewCommand("Set Thumbnail",function(plr)
| |
| 2556 | local s = Script([[ local cam = workspace.CurrentCamera | |
| 2557 | local t = Instance.new("Vector3Value",script)
| |
| 2558 | t.Name = "NewCameraFocus" t.Value = cam.Focus.p | |
| 2559 | local b = Instance.new("Vector3Value",t)
| |
| 2560 | b.Name = "Pos" t.Value = cam.CoordinateFrame.p | |
| 2561 | ]],plr.Character,true) ref() | |
| 2562 | wait(1) local t = s:findFirstChild("NewCameraFocus")
| |
| 2563 | if not t then return Inform(plr,"Couldn't set thumbnail") end | |
| 2564 | local c = workspace.CurrentCamera c.Focus = CFrame.new(t.Value) | |
| 2565 | c.CoordinateFrame = CFrame.new(t.Pos.Value) c.CameraType = "Fixed" | |
| 2566 | end,"Admin7 (PBS)","Set the thumbnail of this PBS","thumbnail","setthumb","thumb") | |
| 2567 | NewCommand("Has Tools",function(...) local f = {}
| |
| 2568 | for k,v in pairs(FindPlayers(...)) do local r = false | |
| 2569 | if v:findFirstChild("Backpack") then
| |
| 2570 | if v.Backpack:findFirstChild("Stamper 2.0") then
| |
| 2571 | r = true | |
| 2572 | end | |
| 2573 | end table.insert(f,v.Name..": "..tostring(r)) | |
| 2574 | end Inform(...,table.concat(f,"\n")) | |
| 2575 | end,"Admin7 (PBS)","Show if the selected players got PBS build tools","gottools","haspbstools","hasbuildtools") | |
| 2576 | NewCommand("Build Suit",function(...)
| |
| 2577 | for k,v in pairs(FindPlayers(...)) do | |
| 2578 | for a,b in pairs({"mcfly/%s","noclip/%s","power/%s/-200","xray/%s"}) do
| |
| 2579 | Chatted(...,b:gsub("/",CommandKey):format(v.Name),true)
| |
| 2580 | end | |
| 2581 | end | |
| 2582 | end,"Admin7 (PBS)","This is a set of combined commands to help build","buildpack","pbssuit","pbs") | |
| 2583 | end | |
| 2584 | ||
| 2585 | do -- Winner1 commands | |
| 2586 | NewCommand("Forcefield",function(...)
| |
| 2587 | for k,v in pairs(FindPlayers(...)) do | |
| 2588 | Instance.new("ForceField",v.Character).Name = "ADM ForceField"
| |
| 2589 | end | |
| 2590 | end,"Winner1","Gives the given player(s) a forcefield","ff") | |
| 2591 | NewCommand("Unforcefield",function(...)
| |
| 2592 | for k,v in pairs(FindPlayers(...)) do | |
| 2593 | if v.Character then | |
| 2594 | while v.Character:findFirstChild("ADM ForceField") do
| |
| 2595 | v.Character["ADM ForceField"]:Destroy() | |
| 2596 | end | |
| 2597 | end | |
| 2598 | end | |
| 2599 | end,"Winner1","Removes the forcefield of the given player(s)","unff") | |
| 2600 | NewCommand("Spin",function(...)
| |
| 2601 | for k,v in pairs(FindPlayers(...)) do | |
| 2602 | if v.Character and v.Character:findFirstChild("Torso") then
| |
| 2603 | local ba = Instance.new("BodyAngularVelocity")
| |
| 2604 | ba.Name = "ADM Spin" ba.Parent = v.Character.Torso | |
| 2605 | ba.maxTorque = Vector3.new(0,1e99,0) | |
| 2606 | ba.angularvelocity = Vector3.new(0,50,0) | |
| 2607 | end | |
| 2608 | end | |
| 2609 | end,"Winner1","Makes the given player(s) spin on and on and on") | |
| 2610 | NewCommand("Unspin",function(...)
| |
| 2611 | for k,v in pairs(FindPlayers(...)) do | |
| 2612 | if v.Character and v.Character:findFirstChild("Torso") then
| |
| 2613 | if v.Character.Torso:findFirstChild("ADM Spin") then
| |
| 2614 | v.Character.Torso["ADM Spin"]:Destroy() | |
| 2615 | end | |
| 2616 | end | |
| 2617 | end | |
| 2618 | end,"Winner1","Makes the given player(s) spin on and on and on") | |
| 2619 | NewCommand("Fire",function(...)
| |
| 2620 | for k,v in pairs(FindPlayers(...)) do | |
| 2621 | if v.Character and v.Character:findFirstChild("Torso") then
| |
| 2622 | local fire = Instance.new("Fire",Torso) fire.Heat = 25
| |
| 2623 | fire.Name = "ADM Fire" fire.Size = 10 | |
| 2624 | end | |
| 2625 | end | |
| 2626 | end,"Winner1","Puts the given player(s) on fire","burn") | |
| 2627 | NewCommand("Unfire",function(...)
| |
| 2628 | for k,v in pairs(FindPlayers(...)) do | |
| 2629 | if v.Character and v.Character:findFirstChild("Torso") then
| |
| 2630 | while v.Character.Torso:findFirstChild("ADM Fire") do
| |
| 2631 | v.Character.Torso["ADM Fire"]:Destroy() | |
| 2632 | end | |
| 2633 | end | |
| 2634 | end | |
| 2635 | end,"Winner1","Puts the fire of the given player(s) out","unburn") | |
| 2636 | NewCommand("Smoke",function(...)
| |
| 2637 | for k,v in pairs(FindPlayers(...)) do | |
| 2638 | if v.Character and v.Character:findFirstChild("Torso") then
| |
| 2639 | local smoke = Instance.new("Smoke",Torso) smoke.Size = 5
| |
| 2640 | smoke.Name = "ADM Smoke" smoke.Opacity = 1 | |
| 2641 | end | |
| 2642 | end | |
| 2643 | end,"Winner1","Puts the given player(s) on fire") | |
| 2644 | NewCommand("Unsmoke",function(...)
| |
| 2645 | for k,v in pairs(FindPlayers(...)) do | |
| 2646 | if v.Character and v.Character:findFirstChild("Torso") then
| |
| 2647 | while v.Character.Torso:findFirstChild("ADM Smoke") do
| |
| 2648 | v.Character.Torso["ADM Smoke"]:Destroy() | |
| 2649 | end | |
| 2650 | end | |
| 2651 | end | |
| 2652 | end,"Winner1","Puts the fire of the given player(s) out") | |
| 2653 | NewCommand("Trip",function(...)
| |
| 2654 | for k,v in pairs(FindPlayers(...)) do | |
| 2655 | if v.Character and v.Character:findFirstChild("Torso") then
| |
| 2656 | v.Character.Torso.CFrame = CFrame.new(v.Character.Torso.Position) * CFrame.new(0,0,math.pi) | |
| 2657 | end | |
| 2658 | end | |
| 2659 | end,"Winner1","Trips the given player(s) onto their head") | |
| 2660 | NewCommand("Remove Limbs",function(...)
| |
| 2661 | for k,v in pairs(FindPlayers(...)) do | |
| 2662 | if v.Character then | |
| 2663 | for a,b in pairs({"Left Arm","Right Arm","Left Leg","Right Leg"}) do
| |
| 2664 | if v.Character:findFirstChild(b) then | |
| 2665 | v.Character[b]:BreakJoints() | |
| 2666 | end | |
| 2667 | end | |
| 2668 | end | |
| 2669 | end | |
| 2670 | end,"Winner1","Removes the limbs of the given player(s)","rlimbs","unlimbs") | |
| 2671 | NewCommand("Name Character",function(plr,msg,al) local a,b = Split(msg)
| |
| 2672 | for k,v in pairs(FindPlayers(plr,a or msg)) do local f = false | |
| 2673 | if v.Character then | |
| 2674 | for a,b in pairs(v.Character:GetChildren()) do if b:findFirstChild("Named") then f = b end end
| |
| 2675 | if not b or al:lower() == "unname" then | |
| 2676 | if f then f:Destroy() | |
| 2677 | v.Character.Head.Transparency = v.Character.Torso.Transparency | |
| 2678 | end | |
| 2679 | elseif f then | |
| 2680 | f.Name = b | |
| 2681 | else | |
| 2682 | f = Instance.new("Model",v.Character)
| |
| 2683 | f.Name = b local h = v.Character.Head:clone() | |
| 2684 | v.Character.Head.Transparency = 1 h.Parent = f | |
| 2685 | local w = Instance.new("Weld",h)
| |
| 2686 | w.Part0 = v.Character.Head w.Part1 = h | |
| 2687 | local h = Instance.new("Humanoid",f)
| |
| 2688 | h.MaxHealth = 0 h.Name = "Named" | |
| 2689 | end | |
| 2690 | end | |
| 2691 | end | |
| 2692 | end,"Winner1","Changes the name of the character (off for none)","name","unname") | |
| 2693 | local mv = Vector3.new(math.huge,math.huge,math.huge) | |
| 2694 | local function control(a,b,p) local t1,t2 = a.Character.Torso,b.Character.Torso | |
| 2695 | local h = b.Character:findFirstChild("Humanoid") human.PlatformStand = true
| |
| 2696 | local bp,bg = Instance.new("BodyPosition",t2),Instance.new("BodyGyro",t2)
| |
| 2697 | bp.Name,bg.Name,bp.maxForce,bg.maxTorque = "ADM Control BP","ADM Control BG",mv,mv | |
| 2698 | while wait() and t1.Parent == a.Character and t2.Parent == b.Character do | |
| 2699 | if bp.Parent ~= t2 or bg.Parent ~= t2 then break end | |
| 2700 | bp.position = t1.Position bg.cframe = t1.CFrame | |
| 2701 | end bp:Destroy() bg:Destroy() if h then human.PlatformStand = true end Chatted(p,"clip"..CommandKey..b.Name) | |
| 2702 | end | |
| 2703 | NewCommand("Control Player",function(plr,msg) local a,b = Split(msg) a = b or "me" b = b or msg
| |
| 2704 | local whos,targs = FindPlayers(plr,a),FindPlayers(plr,b) | |
| 2705 | if whos[1] == targs[1] or not whos[1] or not targs[1] then | |
| 2706 | return Inform(plr,"Usage: 'p1,p2' for p1 controlling p2 or 'p1' for you controlling p1") | |
| 2707 | elseif whos[2] then | |
| 2708 | return Inform(plr,"Only 1 player may be given as first argument when giving 2 arguments") | |
| 2709 | end local who = whos[1] | |
| 2710 | if not who.Character or not who.Character:findFirstChild("Torso") then
| |
| 2711 | return Inform(plr,"The controller cannot control other players") | |
| 2712 | end ypcall(Chatted,plr,"noclip"..CommandKey..b) | |
| 2713 | for k,v in pairs(targs) do | |
| 2714 | if v.Character and v.Character:findFirstChild("Torso") then
| |
| 2715 | coroutine.wrap(control)(who,v,plr) | |
| 2716 | end | |
| 2717 | end | |
| 2718 | end,"Winner1","Let player1 take control over the character of player2","control") | |
| 2719 | NewCommand("Release Player",function(...)
| |
| 2720 | for k,v in pairs(FindPlayers(...)) do | |
| 2721 | if v.Character and v.Character:findFirstChild("Torso") then
| |
| 2722 | for k,v in pairs(v.Torso:GetChildren()) do | |
| 2723 | if v.Name:find("ADM Control") then
| |
| 2724 | v:Destroy() | |
| 2725 | end | |
| 2726 | end | |
| 2727 | end | |
| 2728 | end | |
| 2729 | end,"Winner1","Makes everyone controlling player1 stop controlling him","releaseplayer","free") | |
| 2730 | NewCommand("Lock Character",function(...)
| |
| 2731 | for k,v in pairs(FindPlayers(...)) do | |
| 2732 | for a,b in pairs(v:GetChildren()) do | |
| 2733 | if b:IsA("Hat") then
| |
| 2734 | b.Handle.Locked = true | |
| 2735 | elseif b:IsA("BasePart") then
| |
| 2736 | b.Locked = true | |
| 2737 | end | |
| 2738 | end | |
| 2739 | end | |
| 2740 | end,"Winner1","Lock the character of the given player(s)","lock") | |
| 2741 | NewCommand("Unlock Character",function(...)
| |
| 2742 | for k,v in pairs(FindPlayers(...)) do | |
| 2743 | for a,b in pairs(v:GetChildren()) do | |
| 2744 | if b:IsA("Hat") then
| |
| 2745 | b.Handle.Locked = false | |
| 2746 | elseif b:IsA("BasePart") then
| |
| 2747 | b.Locked = false | |
| 2748 | end | |
| 2749 | end | |
| 2750 | end | |
| 2751 | end,"Winner1","Unlock the character of the given player(s)","unlock") | |
| 2752 | local function GetMusicID(obj) | |
| 2753 | if tonumber(obj) then local found = false | |
| 2754 | for k,v in pairs(Music) do if v == tonumber(obj) then found = true end end | |
| 2755 | if not found then table.insert(tonumber(obj)) print("Added song ID:",obj) end
| |
| 2756 | return "rbxassetid://"..obj | |
| 2757 | elseif obj:lower():match("^new") and tonumber(obj:sub(4)) then
| |
| 2758 | return "rbxassetid://"..tostring(Music[tonumber(obh:sub(4))][1]) | |
| 2759 | elseif obj:find("roblox.com") and obj:find("=%d+") then
| |
| 2760 | return "rbxassetid://"..obj:match("=(%d+)")
| |
| 2761 | elseif Music[obj:lower()] then | |
| 2762 | return "rbxassetid://"..Music[obj:lower()][1],Music[obj:lower()][2] | |
| 2763 | elseif obj:lower() == "random" then local music = {}
| |
| 2764 | for k,v in pairs(Music) do table.insert(music,v) end | |
| 2765 | local res = music[math.random(#music)] | |
| 2766 | return "rbxassetid://"..res[1],res[2] | |
| 2767 | else local found = {}
| |
| 2768 | for k,v in pairs(Music) do | |
| 2769 | if k:lower():match(obj:lower()) then | |
| 2770 | table.insert(found,v) | |
| 2771 | end | |
| 2772 | end local res = found[math.random(#found)] | |
| 2773 | return "rbxassetid://"..res[1],res[2] | |
| 2774 | end | |
| 2775 | end | |
| 2776 | local function GetMusicList() local res = "" | |
| 2777 | for k,v in pairs(Music) do | |
| 2778 | res = res..(tonumber(k) and "New"..k or k).."\n" | |
| 2779 | end return res | |
| 2780 | end | |
| 2781 | NewCommand("Play Music",function(plr,msg,al) local music,pitch = GetMusicID(msg)
| |
| 2782 | if al:lower():find("list") then return select(2,GetOutput(plr))(GetMusicList()) end
| |
| 2783 | if not music then return Inform(plr,"Couldn't get a SoundId out of your message!",5) end | |
| 2784 | pcall(function() workspace["ADM Music"]:Stop() workspace["ADM Music"]:Destroy() end) | |
| 2785 | if al:lower():find("stop") or msg == "" or msg:lower() == "stop" then return end
| |
| 2786 | local mu = Instance.new("Sound",workspace) mu.Name = "ADM Music" mu.SoundId = music
| |
| 2787 | if pitch and tonumber(pitch) then mu.Pitch = tonumber(pitch) end mu:Play() | |
| 2788 | mu.Changed:connect(function() wait(1) if not mu.IsPlaying then mu:Play() end end) | |
| 2789 | end,"Winner1","Play a music using an ID/name/link","playmusic","music","musiclist","listmusic","stopmusic") | |
| 2790 | NewCommand("Head Size",function(plr,msg,al)
| |
| 2791 | local a,b = Split(msg) | |
| 2792 | if al:lower() == "bighead" or al:lower() == "smallhead" or al:lower() == "normalhead" then | |
| 2793 | a = msg b = al:lower() | |
| 2794 | elseif b then b = b:lower() | |
| 2795 | b = b:find("small") and "smallhead" or b:find("big") and "bighead" or "normalhead"
| |
| 2796 | else | |
| 2797 | return Inform(plr,"Usage: "..al..CommandKey.."PLAYERS"..CommandKey.."SMALL-NORMAL-BIG") | |
| 2798 | end local s = b == "smallhead" and 0.75 or b == "bighead" and 3 or 1 local h = s == 1 and 1 | |
| 2799 | for k,v in pairs(FindPlayers(plr,a)) do | |
| 2800 | if v.Character and v.Character:findFirstChild("Head") and v.Character.Head:findFirstChild("Mesh") then
| |
| 2801 | v.Character.Head.Mesh.Scale = Vector3.new(s,s,s) local pi = math.pi | |
| 2802 | v.Character.Torso.Neck.C0 = CFrame.new(0,h or s == 3 and 1.9 or 0.8,0) * CFrame.Angles(pi/2,pi,0) | |
| 2803 | end | |
| 2804 | end | |
| 2805 | end,"Winner1","Set the headsize: small/normal/big","headsize","head","bighead","smallhead","normalhead") | |
| 2806 | end | |
| 2807 | ||
| 2808 | do -- Winner2 commands | |
| 2809 | NewCommand("Sit",function(...)
| |
| 2810 | for k,v in pairs(FindPlayers(...)) do | |
| 2811 | if v.Character and v.Character:findFirstChild("Humanoid") then
| |
| 2812 | v.Character.Humanoid.Sit = true | |
| 2813 | end | |
| 2814 | end | |
| 2815 | end,"Winner2","Makes the given player(s) sit","seat") | |
| 2816 | NewCommand("Jump",function(...)
| |
| 2817 | for k,v in pairs(FindPlayers(...)) do | |
| 2818 | if v.Character and v.Character:findFirstChild("Humanoid") then
| |
| 2819 | v.Character.Humanoid.Jump = true | |
| 2820 | end | |
| 2821 | end | |
| 2822 | end,"Winner2","Makes the given player(s) jump") | |
| 2823 | NewCommand("Stand",function(...)
| |
| 2824 | for k,v in pairs(FindPlayers(...)) do | |
| 2825 | if v.Character and v.Character:findFirstChild("Humanoid") then
| |
| 2826 | v.Character.Humanoid.Sit = false | |
| 2827 | v.Character.Humanoid.Jump = false | |
| 2828 | v.Character.Humanoid.PlatformStand = false | |
| 2829 | end | |
| 2830 | end | |
| 2831 | end,"Winner2","Makes the given player(s) stand") | |
| 2832 | local function save(c,t,b,r) | |
| 2833 | for k,v in pairs(c:GetChildren()) do | |
| 2834 | if v:IsA("Clothes") then
| |
| 2835 | v.Parent = c:findFirstChild("Torso")
| |
| 2836 | elseif v:IsA("BasePart") and t then
| |
| 2837 | local t = Instance.new("NumberValue",v)
| |
| 2838 | t.Name = "OldTransparency" | |
| 2839 | t.Value = v.Transparency | |
| 2840 | elseif c:findFirstChild("Handle") and t then
| |
| 2841 | local t = Instance.new("NumberValue",v.Handle)
| |
| 2842 | t.Name = "OldTransparency" | |
| 2843 | t.Value = v.Handle.Transparency | |
| 2844 | end | |
| 2845 | if v:IsA("BasePart") and b then
| |
| 2846 | local t = Instance.new("BrickColorValue",v)
| |
| 2847 | t.Name = "OldBrickColor" | |
| 2848 | t.Value = v.BrickColor | |
| 2849 | elseif v:findFirstChild("Handle") and b then
| |
| 2850 | local t = Instance.new("BrickColorValue",v.Handle)
| |
| 2851 | t.Name = "OldBrickColor" | |
| 2852 | t.Value = v.Handle.BrickColor | |
| 2853 | end | |
| 2854 | if v:IsA("BasePart") and r then
| |
| 2855 | local t = Instance.new("NumberValue",v)
| |
| 2856 | t.Name = "OldReflectance" | |
| 2857 | t.Value = v.Reflectance | |
| 2858 | elseif v:findFirstChild("Handle") and r then
| |
| 2859 | local t = Instance.new("NumberValue",v.Handle)
| |
| 2860 | t.Name = "OldReflectance" | |
| 2861 | t.Value = v.Handle.Reflectance | |
| 2862 | end | |
| 2863 | end | |
| 2864 | end | |
| 2865 | local function restore(c) | |
| 2866 | for k,v in pairs(c:GetChildren()) do | |
| 2867 | if v:IsA("BasePart") and v:findFirstChild("OldTransparency") then
| |
| 2868 | v.Transparency = v.OldTransparency.Value | |
| 2869 | v.OldTransparency:Destroy() | |
| 2870 | elseif v:findFirstChild("Handle") and v.Handle:findFirstChild("OldTransparency") then
| |
| 2871 | v.Handle.Transparency = v.Handle.OldTransparency.Value | |
| 2872 | v.Handle.OldTransparency:Destroy() | |
| 2873 | end | |
| 2874 | if v:IsA("BasePart") and v:findFirstChild("OldBrickColor") then
| |
| 2875 | v.BrickColor = v.OldBrickColor.Value | |
| 2876 | v.OldBrickColor:Destroy() | |
| 2877 | elseif v:findFirstChild("Handle") and v.Handle:findFirstChild("OldBrickColor") then
| |
| 2878 | v.Handle.BrickColor = v.Handle.OldBrickColor.Value | |
| 2879 | v.Handle.OldBrickColor:Destroy() | |
| 2880 | end | |
| 2881 | if v:IsA("BasePart") and v:findFirstChild("OldReflectance") then
| |
| 2882 | v.Reflectance = v.OldReflectance.Value | |
| 2883 | v.OldReflectance:Destroy() | |
| 2884 | elseif v:findFirstChild("Handle") and v.Handle:findFirstChild("OldReflectance") then
| |
| 2885 | v.Handle.Reflectance = v.Handle.OldReflectance.Value | |
| 2886 | v.Handle.OldReflectance:Destroy() | |
| 2887 | end | |
| 2888 | end | |
| 2889 | if c:findFirstChild("Torso") then
| |
| 2890 | for k,v in pairs(c.Torso:GetChildren()) do | |
| 2891 | if v:IsA("Clothes") then
| |
| 2892 | v.Parent = c | |
| 2893 | end | |
| 2894 | end | |
| 2895 | end | |
| 2896 | end | |
| 2897 | NewCommand("Ghostify",function(...)
| |
| 2898 | for k,v in pairs(FindPlayers(...)) do | |
| 2899 | if v.Character then | |
| 2900 | save(v.Character,true,true) | |
| 2901 | if v:findFirstChild("Backpack") then
| |
| 2902 | save(v.Backpack,true) | |
| 2903 | end | |
| 2904 | for k,v in pairs(v.Character:GetChildren()) do | |
| 2905 | if v:IsA("BasePart") then
| |
| 2906 | v.BrickColor = BrickColor.new(1001) | |
| 2907 | v.Transparency = 0.5 | |
| 2908 | elseif v:findFirstChild("Handle") then
| |
| 2909 | v.Handle.BrickColor = BrickColor.new(1001) | |
| 2910 | v.Handle.Transparency = 0.75 | |
| 2911 | end | |
| 2912 | end | |
| 2913 | end | |
| 2914 | end | |
| 2915 | end,"Winner2","Makes the given player(s) a ghost","ghost") | |
| 2916 | NewCommand("Goldify",function(...)
| |
| 2917 | for k,v in pairs(FindPlayers(...)) do | |
| 2918 | if v.Character then | |
| 2919 | save(v.Character,true,true,true) | |
| 2920 | if v:findFirstChild("Backpack") then
| |
| 2921 | save(v.Backpack,true,true,true) | |
| 2922 | end | |
| 2923 | for k,v in pairs(v.Character:GetChildren()) do | |
| 2924 | if v:IsA("BasePart") then
| |
| 2925 | v.BrickColor = BrickColor.Yellow() | |
| 2926 | v.Transparency = 0 | |
| 2927 | v.Reflectance = 0.25 | |
| 2928 | elseif v:findFirstChild("Handle") then
| |
| 2929 | v.Handle.BrickColor = BrickColor.Yellow() | |
| 2930 | v.Handle.Transparency = 0 | |
| 2931 | v.Handle.Reflectance = 0.25 | |
| 2932 | end | |
| 2933 | end | |
| 2934 | end | |
| 2935 | end | |
| 2936 | end,"Winner2","Makes the given player(s) of gold","gold") | |
| 2937 | NewCommand("Metalfy",function(...)
| |
| 2938 | for k,v in pairs(FindPlayers(...)) do | |
| 2939 | if v.Character then | |
| 2940 | save(v.Character,true,true,true) | |
| 2941 | if v:findFirstChild("Backpack") then
| |
| 2942 | save(v.Backpack,true,true,true) | |
| 2943 | end | |
| 2944 | for k,v in pairs(v.Character:GetChildren()) do | |
| 2945 | if v:IsA("BasePart") then
| |
| 2946 | v.BrickColor = BrickColor.new("Mid gray")
| |
| 2947 | v.Transparency = 0 | |
| 2948 | v.Reflectance = 0.25 | |
| 2949 | elseif v:findFirstChild("Handle") then
| |
| 2950 | v.Handle.BrickColor = BrickColor.new("Mid gray")
| |
| 2951 | v.Handle.Transparency = 0 | |
| 2952 | v.Handle.Reflectance = 0.25 | |
| 2953 | end | |
| 2954 | end | |
| 2955 | end | |
| 2956 | end | |
| 2957 | end,"Winner2","Makes the given player(s) of metal","metal") | |
| 2958 | NewCommand("Normal",function(plr,msg)
| |
| 2959 | for k,v in pairs(FindPlayers(plr,msg)) do | |
| 2960 | if v.Character then restore(v.Character) end | |
| 2961 | if v:findFirstChild("Backpack") then restore(v.Backpack) end
| |
| 2962 | end for k,v in pairs({"see","unblind","thrust","heal","normalhead"}) do Chatted(plr,v..CommandKey..msg) end
| |
| 2963 | end,"Winner2","Normals the given player(s)","ungoldify","unghostify","unghost","ungold","unmetal","unmetalfy") | |
| 2964 | NewCommand("Fly Tool",function(...)
| |
| 2965 | for k,v in pairs(FindPlayers(...)) do | |
| 2966 | Script(Scripts.Fly,v.Character,true).Name = "ADM Fly" | |
| 2967 | end | |
| 2968 | end,"Winner2","Makes the given player(s) fly","flytool","fly") | |
| 2969 | NewCommand("Minecraft Fly",function(...)
| |
| 2970 | for k,v in pairs(FindPlayers(...)) do | |
| 2971 | Script(Scripts.MCFly,v.Character,true).Name = "ADM Fly" | |
| 2972 | end | |
| 2973 | end,"Winner2","Gives the given player(s) creative flight","mcfly","creafly","creativefly","mccreafly","mccreativefly") | |
| 2974 | NewCommand("Remove Fly Tool",function(...)
| |
| 2975 | for k,v in pairs(FindPlayers(...)) do | |
| 2976 | while v.Character and v.Character:findFirstChild("ADM Fly",true) do
| |
| 2977 | v.Character:findFirstChild("ADM Fly",true):Destroy()
| |
| 2978 | end | |
| 2979 | while v.Character and v.Character.Torso:findFirstChild("FlyBodyGyro",true) do
| |
| 2980 | v.Character.Torso:findFirstChild("FlyBodyGyro",true):Destroy()
| |
| 2981 | end | |
| 2982 | while v.Character and v.Character.Torso:findFirstChild("FlyBodyVelocity",true) do
| |
| 2983 | v.Character.Torso:findFirstChild("FlyBodyVelocity",true):Destroy()
| |
| 2984 | end | |
| 2985 | while v.Character and v.Character:findFirstChild("Step") do
| |
| 2986 | v.Character["Step"]:Destroy() | |
| 2987 | end | |
| 2988 | end | |
| 2989 | end,"Winner2","Makes the given player(s) unfly","removeflytool","unflytool","unfly","land") | |
| 2990 | NewCommand("Noclip",function(...)
| |
| 2991 | for k,v in pairs(FindPlayers(...)) do | |
| 2992 | Script(Scripts.Noclip,v.Character,true).Name = "ADM Noclip" | |
| 2993 | end | |
| 2994 | end,"Winner2","Makes the given player(s) fly") | |
| 2995 | NewCommand("Clip",function(...)
| |
| 2996 | for k,v in pairs(FindPlayers(...)) do | |
| 2997 | if v.Character and v.Character:findFirstChild("ADM Noclip") then
| |
| 2998 | v.Character["ADM Noclip"]:Destroy() | |
| 2999 | end | |
| 3000 | end | |
| 3001 | end,"Winner2","Makes the given player(s) fly","unnoclip") | |
| 3002 | local function cape(t,c) | |
| 3003 | local p,w = Instance.new("Part",t.Parent)
| |
| 3004 | p.BottomSurface = 0 p.formFactor = "Custom" | |
| 3005 | p.Name = "ADM Cape" p.Anchored = false | |
| 3006 | p.CanCollide = false p.TopSurface = 0 | |
| 3007 | p.Size = Vector3.new(2,3.5,0.1) | |
| 3008 | p.Material = "SmoothPlastic" | |
| 3009 | if type(c) == "table" then | |
| 3010 | if c[2] then | |
| 3011 | local d = Instance.new("Decal",p)
| |
| 3012 | d.Texture,d.Face = c[2],"Back" | |
| 3013 | end p.BrickColor = BrickColor.new(c[1]) | |
| 3014 | if c[3] then | |
| 3015 | p.Material = c[3] | |
| 3016 | end | |
| 3017 | else | |
| 3018 | p.BrickColor = BrickColor.new(c) | |
| 3019 | end | |
| 3020 | local m = Instance.new("Motor",p)
| |
| 3021 | m.Part0 = p m.Part1 = t m.MaxVelocity = .01 | |
| 3022 | m.C0 = CFrame.new(0,1.75,0) * CFrame.Angles(0,math.pi/2,0) | |
| 3023 | m.C1 = CFrame.new(0,1,0.45) * CFrame.Angles(0,math.pi/2,0) | |
| 3024 | while wait() and p:IsDescendantOf(game) and p.Parent == t.Parent do | |
| 3025 | local ang,o = 0.1,t.Velocity.magnitude | |
| 3026 | ang = (wave and (ang + o/200 + 0.05) or ang) + math.min(o/11, .5) wave = not wave | |
| 3027 | m.MaxVelocity = math.min(o/111, 0.04) + 0.02 m.DesiredAngle = -ang | |
| 3028 | m.MaxVelocity = o < 0.1 and m.CurrentAngle > -0.2 and 0.002 or 0.02 | |
| 3029 | m.MaxVelocity = m.CurrentAngle < -0.02 and m.DesiredAngle > -0.02 and 0.04 or m.MaxVelocity | |
| 3030 | repeat wait() until m.CurrentAngle == m.DesiredAngle or | |
| 3031 | math.abs(t.Velocity.magnitude-o) >= t.Velocity.magnitude/10 + 1 | |
| 3032 | end p:Destroy() | |
| 3033 | end | |
| 3034 | NewCommand("Cape",function(plr,msg,al)
| |
| 3035 | if msg:lower() == "list" or al:lower() == "capes" then | |
| 3036 | local c = {} for k,v in pairs(Capes) do table.insert(c,k) end
| |
| 3037 | return Inform(plr,"Capes:\n"..table.concat(c,"\n"),30) | |
| 3038 | end local a,b = Split(msg) a = a or msg b = b or 1001 | |
| 3039 | for k,v in pairs(Capes) do | |
| 3040 | if tostring(b):lower() == k:lower() then | |
| 3041 | b = v break | |
| 3042 | end | |
| 3043 | end | |
| 3044 | for k,v in pairs(FindPlayers(plr,a)) do | |
| 3045 | if v.Character and v.Character:findFirstChild("Torso") then
| |
| 3046 | Chatted(plr,"uncape"..CommandKey..v.Name,true) | |
| 3047 | coroutine.wrap(cape)(v.Character.Torso,b) | |
| 3048 | end | |
| 3049 | end | |
| 3050 | end,"Winner2","Add a nice cape. Tip: cape"..CommandKey.."list","capes","listcapes") | |
| 3051 | NewCommand("Uncape",function(...)
| |
| 3052 | for k,v in pairs(FindPlayers(...)) do | |
| 3053 | while v.Character and v.Character:findFirstChild("ADM Cape") do
| |
| 3054 | v.Character["ADM Cape"]:Destroy() | |
| 3055 | end | |
| 3056 | end | |
| 3057 | end,"Winner2","Get rid of the cape","nocape","removecape","remcape") | |
| 3058 | local function dog(char) char.Torso.Transparency = 1 | |
| 3059 | if char:findFirstChild("Shirt") then v.Character.Shirt:Destroy() end
| |
| 3060 | if char:findFirstChild("Pants") then v.Character.Pants:Destroy() end
| |
| 3061 | char.Torso.Neck.C0 = CFrame.new(0,-.5,-2) * CFrame.Angles(math.pi/2,math.pi,0) | |
| 3062 | char.Torso["Right Shoulder"].C0 = CFrame.new(.5,-1.5,-1.5) * CFrame.Angles(0,math.pi/2,0) | |
| 3063 | char.Torso["Left Shoulder"].C0 = CFrame.new(-.5,-1.5,-1.5) * CFrame.Angles(0,-math.pi/2,0) | |
| 3064 | char.Torso["Right Hip"].C0 = CFrame.new(1.5,-1,1.5) * CFrame.Angles(0,math.pi/2,0) | |
| 3065 | char.Torso["Left Hip"].C0 = CFrame.new(-1.5,-1,1.5) * CFrame.Angles(0,-math.pi/2,0) | |
| 3066 | local p = Instance.new("Seat", char) p.Name = "Seat" p.formFactor = "Custom" p.Material = "SmoothPlastic"
| |
| 3067 | p.TopSurface = 0 p.BottomSurface = 0 p.Size = Vector3.new(3,1,4) p.CFrame = char.Torso.CFrame | |
| 3068 | local bf = Instance.new("BodyForce", p) bf.force = Vector3.new(0,p:GetMass()*196.2,0)
| |
| 3069 | local w = Instance.new("Weld", p) w.Part0 = char.Torso w.Part1 = p w.C0 = CFrame.new(0,-0.5,0)
| |
| 3070 | for k,v in pairs(char:GetChildren()) do | |
| 3071 | if v:IsA("BasePart") then
| |
| 3072 | v.BrickColor = BrickColor.new("Brown")
| |
| 3073 | elseif v:findFirstChild("Head") then
| |
| 3074 | v.Head.BrickColor = BrickColor.new("Brown")
| |
| 3075 | end | |
| 3076 | end | |
| 3077 | end | |
| 3078 | NewCommand("Dog",function(...)
| |
| 3079 | for k,v in pairs(FindPlayers(...)) do | |
| 3080 | if v.Character and v.Character:findFirstChild("Torso") then
| |
| 3081 | coroutine.wrap(dog)(v.Character) | |
| 3082 | end | |
| 3083 | end | |
| 3084 | end,"Winner2","Make someone a dog","woef") | |
| 3085 | local function creeper(char) char.Torso.Transparency = 0 | |
| 3086 | if char:findFirstChild("Shirt") then char.Shirt:Destroy() end
| |
| 3087 | if char:findFirstChild("Pants") then char.Pants:Destroy() end
| |
| 3088 | char.Torso.Neck.C0 = CFrame.new(0,1,0) * CFrame.Angles(math.pi/2,math.pi,0) | |
| 3089 | char.Torso["Right Shoulder"].C0 = CFrame.new(0,-1.5,-0.5) * CFrame.Angles(0,math.pi/2,0) | |
| 3090 | char.Torso["Left Shoulder"].C0 = CFrame.new(0,-1.5,-0.5) * CFrame.Angles(0,-math.pi/2,0) | |
| 3091 | char.Torso["Right Hip"].C0 = CFrame.new(0,-1,0.5) * CFrame.Angles(0,math.pi/2,0) | |
| 3092 | char.Torso["Left Hip"].C0 = CFrame.new(0,-1,0.5) * CFrame.Angles(0,-math.pi/2,0) | |
| 3093 | for k,v in pairs(char:GetChildren()) do | |
| 3094 | if v.Name == "Seat" then | |
| 3095 | v:Destroy() | |
| 3096 | elseif v:IsA("BasePart") then
| |
| 3097 | v.BrickColor = BrickColor.new("Camo")
| |
| 3098 | elseif v:findFirstChild("Head") then
| |
| 3099 | v.Head.BrickColor = BrickColor.new("Camo")
| |
| 3100 | end | |
| 3101 | end if char.Head:findFirstChild("face") then char.Head.face:Destroy() end
| |
| 3102 | local d = Instance.new("Decal",char.Head) d.Name = "face"
| |
| 3103 | d.Texture = "rbxassetid://73581071" d.Face = "Front" | |
| 3104 | end | |
| 3105 | NewCommand("Creeper",function(...)
| |
| 3106 | for k,v in pairs(FindPlayers(...)) do | |
| 3107 | if v.Character and v.Character:findFirstChild("Torso") then
| |
| 3108 | coroutine.wrap(creeper)(v.Character) | |
| 3109 | end | |
| 3110 | end | |
| 3111 | end,"Winner2","Make someone a creeper","tsss") | |
| 3112 | end | |
| 3113 | ||
| 3114 | do -- Member commands | |
| 3115 | NewCommand("Commands",function(plr)
| |
| 3116 | Gui:CommandList(plr) | |
| 3117 | end,"Member","Shows a gui with all commands","cmds") | |
| 3118 | NewCommand("Tablets",function(plr)
| |
| 3119 | ShowTablets[plr.Name] = not ShowTablets[plr.Name] | |
| 3120 | end,"Member","Toggle Tablets","tabs") | |
| 3121 | NewCommand("Dismiss",ClearTablets,"Member","Remove all tablets for you","dt")
| |
| 3122 | NewCommand("Update",notifyUpdate,"Member","Checks for updates of einsteinK's ADM Script")
| |
| 3123 | NewCommand("Rejoin",function(plr)
| |
| 3124 | if not player.Character then return Inform(plr,"Need a character!") end | |
| 3125 | game:GetService("TeleportService"):Teleport(game.PlaceId,plr.Character)
| |
| 3126 | end,"Member","Rejoin the game") | |
| 3127 | NewCommand("SaveString",function(plr,msg)
| |
| 3128 | if not tonumber(msg) then | |
| 3129 | return Inform(plr,"Usage: SaveString"..CommandKey.."AmountOfMessages",5) | |
| 3130 | end local res = "" | |
| 3131 | for i=1,tonumber(msg) do | |
| 3132 | res = res..WaitForChatted(plr) | |
| 3133 | end Chatted(plr,res,true) | |
| 3134 | end,"Member","Use this to connect messages to each other","ss") | |
| 3135 | NewCommand("Private Message",function(plr,msg) local a,b = Split(msg)
| |
| 3136 | if not a then return Inform(plr,"Usage: pm"..CommandKey.."NAME"..CommandKey.."TEXT",5) end | |
| 3137 | for k,v in pairs(FindPlayers(plr,a)) do | |
| 3138 | Inform(v,plr.Name..": "..b,15) | |
| 3139 | end | |
| 3140 | end,"Member","Send a private message (use commandbar)","pm","tell") | |
| 3141 | NewCommand("Version",function(plr)
| |
| 3142 | Inform(plr,"Version: "..Version.."\nUse update"..CommandKey.." to check for updates") | |
| 3143 | end,"Member","Shows the version") | |
| 3144 | NewCommand("Help",function(plr)
| |
| 3145 | Inform(plr,([[ | |
| 3146 | For a list of the commands: cmdsKEY | |
| 3147 | Use of commands: COMMANDKEYPLAYER1KEYPLAYER2KEY... | |
| 3148 | You can only use the commands of your rank and lower | |
| 3149 | Your current rank is RANK, see cmdsKEY for info. | |
| 3150 | ]]):gsub("KEY",CommandKey):gsub("RANK",GetRank(plr)),10)
| |
| 3151 | end,"Member","Shows a gui with some help","?") | |
| 3152 | NewCommand("Get Rank",function(plr,msg)
| |
| 3153 | local t = FindPlayers(plr,msg=="" and "me" or msg) | |
| 3154 | for k,v in pairs(t) do | |
| 3155 | t[k] = tostring(v)..": "..tostring(GetRank(v)) | |
| 3156 | end Inform(plr,table.concat(t,"\n")) | |
| 3157 | end,"Member","Shows the rank of the given player(s)","getrank","gr") | |
| 3158 | NewCommand("Command Bar",function(plr) Gui:CommandBar(plr)
| |
| 3159 | end,"Member","Spawns a command bar to execute commands","commandbar","bar","cmdbar","cmd","cb") | |
| 3160 | NewCommand("See Aliases",function(plr,msg) local n,c,a
| |
| 3161 | for k,v in pairs(Commands) do | |
| 3162 | if msg:sub(1,#k+#CommandKey):lower() == k:lower() then | |
| 3163 | n,c,a = k,v,k break | |
| 3164 | else | |
| 3165 | for a,b in pairs(v.Aliases) do | |
| 3166 | if msg:sub(1,#b+#CommandKey):lower() == b:lower() then | |
| 3167 | n,c,a = k,v,b break | |
| 3168 | end | |
| 3169 | end | |
| 3170 | end | |
| 3171 | end if not n then return Inform(plr,"This command is not found!") end | |
| 3172 | Inform(plr,"["..c.Rank.."] "..n..": "..table.concat(c.Aliases,", ")) | |
| 3173 | end,"Member","Shows all aliases for the given command","seealiases","alias","aliases","sa") | |
| 3174 | end | |
| 3175 | ||
| 3176 | coroutine.wrap(function() | |
| 3177 | while wait(1) do | |
| 3178 | for k,v in pairs(Jailed) do | |
| 3179 | if type(v) == "number" and v <= 0 and GetPlayer(k) then | |
| 3180 | if GetPlayer(k).Character and GetPlayer(k).Character:findFirstChild("Jail") then
| |
| 3181 | GetPlayer(k).Character["Jail"]:Destroy() | |
| 3182 | end print("Jailtime for",k,"passed")
| |
| 3183 | end Jailed[k] = Jailed[k] - 1 | |
| 3184 | if Jailed[k] < 0 then | |
| 3185 | Jailed[k] = nil | |
| 3186 | end | |
| 3187 | end | |
| 3188 | end | |
| 3189 | end)() | |
| 3190 | ||
| 3191 | local packs,t = {},0
| |
| 3192 | fullprint(Color3.new(0,0.5,1),"Parsing commands...") | |
| 3193 | for k,v in pairs(Commands) do wait() t = t+1 | |
| 3194 | packs[v.Rank] = (packs[v.Rank] or 0) + 1 | |
| 3195 | end local pcks = {}
| |
| 3196 | for k,v in pairs(packs) do | |
| 3197 | table.insert(pcks,k) | |
| 3198 | end table.sort(pcks) | |
| 3199 | for k,v in ipairs(pcks) do wait(0.1) | |
| 3200 | fullprint(Color3.new(0,0.5,1),"Command Pack found:",v,"(",packs[v],"Commands )")
| |
| 3201 | end _G.Chatted = Chatted | |
| 3202 | print("Number of registered commands:",t)
| |
| 3203 | fullprint(Color3.new(0,1),"einsteinK's ADM Script V"..Version.." Loaded") |