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"} |
34 | + | Creators = {"TheOfficalNoob4788","Second Game Owner","Important Sponsor","...","Player1"} |
35 | - | Admins = {"GravityTeam"} |
35 | + | Admins = {"TheOfficalNoob4788"} |
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") |