View difference between Paste ID: PadA7QLt and 3XLxJ6uh
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")