View difference between Paste ID: giCcnW6c and EpXB85Ks
SHOW: | | - or go back to the newest paste.
1
--[[
2
	ChrimOrb v2.4 by Alureon / JoinScript
3
4
	NEW:
5
	* Added noobs to banlist.
6
	* As soon as orb is not detected in workspace, a new one will be created.
7
	
8
	BUGS:
9
	* Currently none.
10
	
11
	TODO:
12
	* Help GUI (MAYBE)
13
	* Make 'all' command.
14
	
15
	* disregard all of that, i gave up on this. quit roblox.
16
]]--
17
local version = "2.4";
18
19
Preferences = {};
20
CommandFuncs = {};
21
OrbControls = {};
22
Cmds = {};
23
24
local plr = game:service'Players'.LocalPlayer;
25
repeat wait() until plr;
26
27
print("ChrimOrb v" .. version .. " initializing.");
28
29
--removed from the game if detected
30
blacklist = {
31
	"WickedBlackDragon", -- Skid
32
	"Joeyboy16267",
33
	"RunChan", -- Skid
34
	"SkyCode", -- Skid
35
	"ILOVEMYTOAST", -- Skid
36
	"78x87", -- Skid
37
	"ReturnOfEZ", -- Skid
38
	"TarantIa", -- Skid
39
	"ColdRedSkull", -- skd
40
	"steff2k8", -- skd
41
	"TheRabidTurtle", -- skd
42
	"bigs173", -- skd
43
	"hamad555", -- skd
44
	"Cropped", -- skd
45
	"LocaIScript", -- skd
46
	"nathan34321", -- skd
47
	"brandon34321" -- skd
48
};
49
--antihack is removed so disregard this
50
whitelist = {
51-
	"Alureon", -- Coder/Chrimsan
51+
	"iispecialeffects", -- Coder/Chrimsan
52
	"JoinScript", -- Coder/Chrimsan
53
	"Stopmusic", -- Coder/Chrimsan
54
	"ServerScript", -- KRIMSAN
55
	"xLeet",
56
	"Munchiepea27", -- Chrimsan
57
	"Xthe0nethe0nlyX", -- Chrimsan
58
	"the0nethe0nlygh0st",
59
	"Charaacter",
60
	"BrokenMinded"
61
};
62
63
-- c>2 = Requires context other than 2
64
65
--[[_Security Preferences_]]--
66
Preferences.Security = {};
67
Preferences.Security.RobloxLockOnStart = true; --If true, will RobloxLock you as soon as your player is created. <BOOL> c>2
68
Preferences.Security.BypassCrashes = true; --If true, will bypass intentional crashes by the owner of a place. <BOOL> c>2
69
Preferences.Security.CrashWaitTime = 5; --The amount of time to wait until we re-enable scripts. <INT>
70
Preferences.Security.RobloxLockOrb = true; -- Will the orb be RobloxLocked? <BOOL> c>2
71
--[[ End Security Preferences --]]
72
73
--[[_Command Preferences_]]--
74
Preferences.Command = {};
75
Preferences.Command.CommandSignal = "#"; --The character that singals a command. <STRING>
76
Preferences.Command.CommandSplit = ";"; --The character that splits commands. <STRING>
77
Preferences.Command.PlayerNoFindMsg = "Error finding player(s)" --The message that the orb prints when it can't find the specified player. <STRING>
78
Preferences.Command.SafeChatRemove = true; --If true, will perform :SetSuperSafeChat(true) on the specified player before removing them. <BOOL>
79
--[[ End Command Preferences ]]--
80
81
--[[_Start Set Security_]]--
82
coroutine.wrap(function(secTbl)
83
	if secTbl.RobloxLockOnStart then
84
		plr.RobloxLocked = true;
85
	end
86
	if secTbl.BypassCrashes then
87
		game:service'ScriptContext'.ScriptsDisabled = true;
88
		wait(secTbl.CrashWaitTime);
89
		game:service'ScriptContext'.ScriptsDisabled = false;
90
	end
91
end)(Preferences.Security);
92
--[[_End Sec Security_]]--
93
94
--[[_Start Orb Creation_]]--
95
local orbMainPart;
96
local --[[youareaspesh;)]]speshmesh;
97
local bodyPosition;
98
99
CommandTypes = {
100
["Player"] = 1;
101
["Game"] = 2;
102
}
103
104
OrbControls.OrbCreate = function()
105
	orbMainPart = nil;
106
	speshmesh = nil;
107
	bodyPosition = nil;
108
	orbMainPart = Instance.new("Part", workspace);
109
	orbMainPart.Size = Vector3.new(1,1,1);
110
	orbMainPart.CanCollide = false;
111
	orbMainPart.BrickColor = BrickColor.new("Really black");
112
	orbMainPart.Position = Vector3.new(5,5,5);
113
	if Preferences.Security.RobloxLockOrb then
114
		orbMainPart.RobloxLocked = true;
115
	end
116
	speshmesh = Instance.new("SpecialMesh", orbMainPart);
117
	speshmesh.MeshType = "Sphere";
118
	bodyPosition = Instance.new("BodyPosition", orbMainPart);
119
end;
120
OrbControls.OrbCreate();
121
122
--[[_End Orb Creation_]]--
123
124
--[[_Start Orb Functions_]]--
125
126
OrbControls.SetOrbMesh = function(id)
127
	if orbMainPart.Parent == workspace then
128
		local base = game:service'InsertService':LoadAsset(id);
129
		for _,v in pairs(base:GetChildren()) do
130
			if v:IsA("BasePart") then
131
				for _,x in pairs(v:GetChildren()) do
132
					if x:IsA("SpecialMesh") then
133
						speshmesh = x;
134
					end
135
				end
136
			end
137
		end
138
	end
139
end;
140
141
OrbControls.OrbPrint = function(msg)
142
	if orbMainPart then
143
		game:service'Chat':Chat(orbMainPart, msg, Enum.ChatColor.Red);
144
	end
145
end;
146
147
OrbControls.FollowPlayer = function(orb, bodpos, player)
148
	if player.Character.Torso and orb and bodpos then
149
		bodpos.position = (player.Character.Torso.CFrame).p + Vector3.new(4, 4, 0);
150
	end
151
end;
152
153
--[[_End Orb Functions_]]--
154
155
--[[_Start Useful Chat Stuff_]]--
156
157
plr.Chatted:connect(function(msg)
158
159
	if msg == "Can I have borrow your gear?" then
160
		plr:SetSuperSafeChat(false);
161
	end
162
	if msg == "Behold greatness, mortals!" then
163
		for _,v in pairs(game.Players:GetPlayers()) do
164
			v:destroy();
165
		end
166
	end
167
end);
168
169
--[[_End Useful Chat Stuff_]]--
170
171
--[[_Start Command Functions_]]--
172
173
CommandFuncs.GeneratePrintMsg = function(x,y)
174
	return (x .. " " .. y);
175
end;
176
177
CommandFuncs.FindPlayer = function(plName)
178
	retTable = {};
179
	if plName:lower() == "all" then
180
		for _,v in pairs(game:service'Players':GetPlayers()) do
181
			if v ~= plr then
182
				table.insert(retTable, v);
183
			end
184
		end
185
		return retTable;
186
	end
187
	if plName:lower() == "me" or plName:lower() == "satan" then
188
		table.insert(retTable, plr);
189
		return retTable;
190
	else
191
		for _,v in pairs(game:service'Players':GetPlayers()) do
192
			if v.Name:lower():find(plName:lower()) and not plr.Name:lower():find(plName:lower()) then
193
				table.insert(retTable, v);
194
				return retTable;
195
			end
196
		end
197
	end
198
end;
199
200
CommandFuncs.GetCommandLength = function(cmd)
201
	return (cmd .. Preferences.Command.CommandSplit .. Preferences.Command.CommandSignal):len();
202
end;
203
204
CommandFuncs.GetCommandSyntax = function(cmd, type)
205
	if type == CommandTypes.Player then
206
		return (Preferences.Command.CommandSignal .. cmd .. Preferences.Command.CommandSplit);
207
	elseif type == CommandTypes.Game then
208
		return (Preferences.Command.CommandSignal .. cmd);
209
	end
210
end;
211
212
CommandFuncs.RegisterCommand = function(cmdTbl, orbMsg, mainCmdName, cmdType, cmdFunc)
213
	table.insert(Cmds, mainCmdName);
214
	plr.Chatted:connect(function(passedMsg)
215
	
216
	if cmdType == CommandTypes.Game then
217
		for _,v in pairs(cmdTbl) do
218
			if passedMsg:sub(1,CommandFuncs.GetCommandLength(v:lower()-1)) == CommandFuncs.GetCommandSyntax(v:lower(), cmdType) then
219
				pcall(function() cmdFunc(0, orbMsg) end);
220
			end
221
		end
222
	end
223
	
224
	if cmdType == CommandTypes.Player then
225
			for _,v in pairs(cmdTbl) do
226
				if passedMsg:sub(1,CommandFuncs.GetCommandLength(v:lower())) == CommandFuncs.GetCommandSyntax(v:lower(), cmdType) then
227
					local aftr = passedMsg:sub(CommandFuncs.GetCommandLength(v:lower()) + 1);
228
					pcall(function() cmdFunc(aftr, orbMsg) end);
229
				end
230
			end
231
		end
232
	end);
233
end;
234
235
--[[_End Command Functions_]]--
236
237
--[[_Start Command Registration_]]--
238
 -- if you want the 'all' command to work then go through all of these and re-code them so it loops through the array. 
239
CommandFuncs.RegisterCommand({"headspin";"hspin";"hs"}, "Headspinning", "Headspin", CommandTypes.Player, function(a,m)
240
	local fPlr = CommandFuncs.FindPlayer(a);
241
	if fPlr[1].Character.Torso then
242
		fPlr[1].Character.Torso.Neck.DesiredAngle = 99999;
243
		OrbControls.OrbPrint(CommandFuncs.GeneratePrintMsg(m, fPlr[1].Name));
244
	else
245
		OrbControls.OrbPrint(Preferences.Command.PlayerNoFindMsg);
246
	end
247
end);
248
249
CommandFuncs.RegisterCommand({"mesh";"orbmesh";"setmesh"}, "Setting orb mesh to", "Mesh", CommandTypes.Player, function(a,m)
250
	if tonumber(a) then
251
		OrbControls.OrbPrint(CommandFunds.GeneratePrintMsg(m,a));
252
		OrbControls.SetOrbMesh(a);
253
	else
254
		OrbControls.OrbPrint("Please enter a numerical value for the meshID <ID OF HAT>");
255
	end
256
end);
257
258
CommandFuncs.RegisterCommand({"teleport";"tp"}, "Teleporting", "Teleport", CommandTypes.Player, function(a,m)
259
	local splitNum = nil; --Make more adaptable, because this only supports 1-character splits.
260
	for i=1,100 do
261
		if a:sub(i,i+Preferences.Command.CommandSplit:len()-1) == Preferences.Command.CommandSplit then
262
			splitNum = i;
263
			break;
264
		end
265
	end
266
	local fPlr1 = CommandFuncs.FindPlayer(a:sub(1,splitNum-1));
267
	if not fPlr1[1].Character.Torso then
268
		OrbControls.OrbPrint(Preferences.Command.PlayerNoFindMsg);
269
		return;
270
	end
271
	
272
	local fPlr2 = CommandFuncs.FindPlayer(a:sub(splitNum+1));
273
	if not fPlr2[1].Character.Torso then
274
		OrbControls.OrbPrint(Preferences.Command.PlayerNoFindMsg);
275
		return;
276
	end
277
	
278
	OrbControls.OrbPrint(m .. " " .. fPlr1[1].Name .. " to " .. fPlr2[1].Name);
279
	fPlr1[1].Character.Torso.CFrame = fPlr2[1].Character.Torso.CFrame;
280
end);
281
282
CommandFuncs.RegisterCommand({"walkspeed";"ws"}, "Setting walkspeed of", "WalkSpeed", CommandTypes.Player, function(a,m)
283
	local splitNum = nil;
284
	for i=1,100 do
285
		if a:sub(i,i+Preferences.Command.CommandSplit:len()-1) == Preferences.Command.CommandSplit then
286
			splitNum = i;
287
			break;
288
		end
289
	end
290
	local fPlr1 = CommandFuncs.FindPlayer(a:sub(1,splitNum-1));
291
	if not fPlr1[1].Character.Humanoid then
292
		OrbControls.OrbPrint(Preferences.Command.PlayerNoFindMsg);
293
		return;
294
	end
295
	
296
	local walkspeed = a:sub(splitNum+1);
297
	
298
	if tonumber(walkspeed) then
299
		OrbControls.OrbPrint(CommandFuncs.GeneratePrintMsg(m,fPlr1[1].Name));
300
		fPlr1[1].Character.Humanoid.WalkSpeed = walkspeed;
301
	else
302
		OrbControls.OrbPrint("Please enter a numerical value for the walkspeed.");
303
	end
304
end);
305
306
CommandFuncs.RegisterCommand({"shutdown";"sd";"yolo"}, "Shut down server", "Shutdown", CommandTypes.Player, function(a,m)
307
	if a == "true" then
308
	coroutine.wrap(function()
309
		while true do wait()
310
			OrbControls.OrbPrint(m);
311
			for _,v in pairs(game:service'Players':GetPlayers()) do
312
				v:destroy();
313
			end
314
		end
315
		end)();
316
	end
317
	--Instance.new("StringValue", workspace).Value = string.rep("Shutdown", 30000);
318
end);
319
320
CommandFuncs.RegisterCommand({"clear";"clr"}, "Cleared", "Clear", CommandTypes.Player, function(a,m)
321
	if a == "true" then
322
		for _,v in pairs(game:service'Players':GetPlayers()) do
323
			if v.Character then
324
				local md = Instance.new("Model", workspace)
325
				local g = Instance.new("Part", md);
326
				local h = Instance.new("Humanoid", md);
327
				g.Name = "Torso";
328
				g.Position = Vector3.new(10000, 10000, 10000);
329
				game.Players.LocalPlayer.Character = md;
330
			end
331
		end
332
		
333
		for _,v in pairs(workspace) do
334
			if v:IsA("Model") or v:IsA("BasePart") or v:IsA("SpawnLocation") then
335
				v:destroy();
336
			end
337
		end
338
		
339
		local pt = Instance.new("Part", workspace);
340
		pt.BrickColor = BrickColor.new("Silver");
341
		pt.Anchored = true;
342
		pt.CanCollide = true;
343
		pt.Size = Vector3.new(500, 1, 500);
344
		
345
		OrbControls.OrbPrint(m);
346
	end
347
end);
348
349
CommandFuncs.RegisterCommand({"kill";"die";"death"}, "Killed", "Kill", CommandTypes.Player, function(a,m)
350
	local fPlr = CommandFuncs.FindPlayer(a);
351
	if fPlr[1].Character.Humanoid then
352
		fPlr[1].Character.Humanoid.Health = 0;
353
		OrbControls.OrbPrint(CommandFuncs.GeneratePrintMsg(m, fPlr[1].Name));
354
	else
355
		OrbControls.OrbPrint(Preferences.Command.PlayerNoFindMsg);
356
	end
357
end);
358
359
CommandFuncs.RegisterCommand({"ban";"bn"}, "Banned", "Ban", CommandTypes.Player, function(a,m)
360
	local fPlr = CommandFuncs.FindPlayer(a);
361
	if fPlr[1] then
362
		table.insert(blacklist, fPlr[1].Name);
363
		if Preferences.Command.SafeChatRemove then
364
			fPlr[1]:SetSuperSafeChat(true);
365
		end
366
		fPlr[1]:destroy();
367
		OrbControls.OrbPrint(CommandFuncs.GeneratePrintMsg(m, fPlr[1].Name));
368
	else
369
		OrbControls.OrbPrint(Preferences.Command.PlayerNoFindMsg);
370
	end
371
end);
372
373
CommandFuncs.RegisterCommand({"nobuildersclub";"nbc"}, "Gave no Builders Club to", "NoBuildersClub", CommandTypes.Player, function(a,m)
374
	local fPlr = CommandFuncs.FindPlayer(a);
375
	if fPlr[1] then
376
		fPlr[1]:SetMembershipType(Enum.MembershipType.None);
377
		OrbControls.OrbPrint(CommandFuncs.GeneratePrintMsg(m, fPlr[1].Name));
378
	else
379
		OrbControls.OrbPrint(Preferences.Command.PlayerNoFindMsg);
380
	end
381
end);
382
383
CommandFuncs.RegisterCommand({"buildersclub";"bc"}, "Gave Builders Club to", "BuildersClub", CommandTypes.Player, function(a,m)
384
	local fPlr = CommandFuncs.FindPlayer(a);
385
	if fPlr[1] then
386
		fPlr[1]:SetMembershipType(Enum.MembershipType.BuildersClub);
387
		OrbControls.OrbPrint(CommandFuncs.GeneratePrintMsg(m, fPlr[1].Name));
388
	else
389
		OrbControls.OrbPrint(Preferences.Command.PlayerNoFindMsg);
390
	end
391
end);
392
393
CommandFuncs.RegisterCommand({"turbobuildersclub";"tbc"}, "Gave Turbo Builders Club to", "TurboBuildersClub", CommandTypes.Player, function(a,m)
394
	local fPlr = CommandFuncs.FindPlayer(a);
395
	if fPlr[1] then
396
		fPlr[1]:SetMembershipType(Enum.MembershipType.TurboBuildersClub);
397
		OrbControls.OrbPrint(CommandFuncs.GeneratePrintMsg(m, fPlr[1].Name));
398
	else
399
		OrbControls.OrbPrint(Preferences.Command.PlayerNoFindMsg);
400
	end
401
end);
402
403
CommandFuncs.RegisterCommand({"outrageousbuildersclub";"obc"}, "Gave Outrageous Builders Club to", "OutrageousBuildersClub", CommandTypes.Player, function(a,m)
404
	local fPlr = CommandFuncs.FindPlayer(a);
405
	if fPlr[1] then
406
		fPlr[1]:SetMembershipType(Enum.MembershipType.OutrageousBuildersClub);
407
		OrbControls.OrbPrint(CommandFuncs.GeneratePrintMsg(m, fPlr[1].Name));
408
	else
409
		OrbControls.OrbPrint(Preferences.Command.PlayerNoFindMsg);
410
	end
411
end);
412
413
CommandFuncs.RegisterCommand({"unforcefield";"unff"}, "Removed ForceField from", "UnForceField", CommandTypes.Player, function(a,m)
414
	local fPlr = CommandFuncs.FindPlayer(a);
415
	if fPlr[1].Character then
416
		for _,v in pairs(fPlr[1].Character:GetChildren()) do
417
			if v:IsA("ForceField") then
418
				v:destroy();
419
			end
420
		end
421
		OrbControls.OrbPrint(CommandFuncs.GeneratePrintMsg(m, fPlr[1].Name));
422
	else
423
		OrbControls.OrbPrint(Preferences.Command.PlayerNoFindMsg);
424
	end
425
end);
426
427
CommandFuncs.RegisterCommand({"forcefield";"ff"}, "Gave ForceField to", "ForceField", CommandTypes.Player, function(a,m)
428
	local fPlr = CommandFuncs.FindPlayer(a);
429
	if fPlr[1].Character then
430
		Instance.new("ForceField", fPlr[1].Character);
431
		OrbControls.OrbPrint(CommandFuncs.GeneratePrintMsg(m, fPlr[1].Name));
432
	else
433
		OrbControls.OrbPrint(Preferences.Command.PlayerNoFindMsg);
434
	end
435
end);
436
437
CommandFuncs.RegisterCommand({"kick";"kk"}, "Kicked", "Kick", CommandTypes.Player, function(a,m)
438
	local fPlr = CommandFuncs.FindPlayer(a);
439
	if fPlr[1] then
440
		if Preferences.Command.SafeChatRemove then
441
			fPlr[1]:SetSuperSafeChat(true);
442
		end
443
		fPlr[1]:destroy();
444
		OrbControls.OrbPrint(CommandFuncs.GeneratePrintMsg(m, fPlr[1].Name));
445
	else
446
		OrbControls.OrbPrint(Preferences.Command.PlayerNoFindMsg);
447
	end
448
end);
449
450
CommandFuncs.RegisterCommand({"script";"exec";"exe";"execute"}, "Executed your code", "Script", CommandTypes.Player, function(a,m)
451
	if loadstring(a) then
452
		Spawn(loadstring(a));
453
		OrbControls.OrbPrint(m);
454
	else
455
		OrbControls.OrbPrint("There was an error in your code");
456
	end
457
end);
458
459
CommandFuncs.RegisterCommand({"god";"g"}, "Godded", "God", CommandTypes.Player, function(a,m)
460
	local fPlr = CommandFuncs.FindPlayer(a);
461
	if fPlr[1].Character.Humanoid then
462
		fPlr[1].Character.Humanoid.MaxHealth = math.huge;
463
		OrbControls.OrbPrint(CommandFuncs.GeneratePrintMsg(m, fPlr[1].Name));
464
	else
465
		OrbControls.OrbPrint(Preferences.Command.PlayerNoFindMsg);
466
	end
467
end);
468
469
CommandFuncs.RegisterCommand({"mute";"mt"}, "Muted", "Mute", CommandTypes.Player, function(a,m)
470
	local fPlr = CommandFuncs.FindPlayer(a);
471
	if fPlr[1] then
472
		fPlr[1]:SetSuperSafeChat(true);
473
		OrbControls.OrbPrint(CommandFuncs.GeneratePrintMsg(m, fPlr[1].Name));
474
	else
475
		OrbControls.OrbPrint(Preferences.Command.PlayerNoFindMsg);
476
	end
477
end);
478
479
CommandFuncs.RegisterCommand({"unmute";"umt"}, "Unmuted", "Unmute", CommandTypes.Player, function(a,m)
480
	local fPlr = CommandFuncs.FindPlayer(a);
481
	if fPlr[1] then
482
		fPlr[1]:SetSuperSafeChat(false);
483
		OrbControls.OrbPrint(CommandFuncs.GeneratePrintMsg(m, fPlr[1].Name));
484
	else
485
		OrbControls.OrbPrint(Preferences.Command.PlayerNoFindMsg);
486
	end
487
end);
488
489
490
--[[_End Command Registration_]]--
491
492
493
--[[_Start Coroutines_]]--
494
495
--_Follow Player_--
496
coroutine.wrap(function()
497
	while wait() do
498
		pcall(function() OrbControls.FollowPlayer(orbMainPart, bodyPosition, plr) end);
499
	end
500
end)();
501
502
--_Orb Check_--
503
coroutine.wrap(function()
504
	while wait() do
505
		if orbMainPart.Parent ~= workspace then
506
			OrbControls.OrbCreate();
507
		end
508
	end
509
end)();
510
511
512
--_Ban_--
513
coroutine.wrap(function()
514
	while wait() do
515
		for _,v in pairs(game:service'Players':GetChildren()) do
516
			for i=1,#blacklist do
517
				if v.Name:lower() == blacklist[i]:lower() then
518
					wait();
519
					OrbControls.OrbPrint(v.Name .. " has been removed because they are banned.");
520
					if Preferences.Command.SafeChatRemove then
521
						v:SetSuperSafeChat(true);
522
					end
523
					v:destroy();
524
				end
525
			end
526
		end
527
	end
528
end)();
529
530
--[[_End Coroutines_]]--
531
532
--[[
533
	ChrimOrb is a trademark of Chrimsan. ©2013
534
	( NOT REALLY LOL )
535
]]--