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