Advertisement
ZeeDerp

duck

Oct 13th, 2014
498
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. _G,_VERSION,assert,collectgarbage,dofile,error,getfenv,getmetatable,ipairs,load,loadfile,loadstring,next,pairs,pcall,print,rawequal,rawget,rawset,select,setfenv,setmetatable,tonumber,tostring,type,unpack,xpcall,coroutine,math,string,table,game,Game,workspace,Workspace,delay,Delay,LoadLibrary,printidentity,Spawn,tick,time,version,Version,Wait,wait,PluginManager,crash__,LoadRobloxLibrary,settings,Stats,stats,UserSettings,Enum,Color3,BrickColor,Vector2,Vector3,Vector3int16,CFrame,UDim,UDim2,Ray,Axes,Faces,Instance,Region3,Region3int16=_G,_VERSION,assert,collectgarbage,dofile,error,getfenv,getmetatable,ipairs,load,loadfile,loadstring,next,pairs,pcall,print,rawequal,rawget,rawset,select,setfenv,setmetatable,tonumber,tostring,type,unpack,xpcall,coroutine,math,string,table,game,Game,workspace,Workspace,delay,Delay,LoadLibrary,printidentity,Spawn,tick,time,version,Version,Wait,wait,PluginManager,crash__,LoadRobloxLibrary,settings,Stats,stats,UserSettings,Enum,Color3,BrickColor,Vector2,Vector3,Vector3int16,CFrame,UDim,UDim2,Ray,Axes,Faces,Instance,Region3,Region3int16
  2. math.randomseed(tick())
  3. --[[
  4. Oh hi there, this is a beta version of my duck commands...
  5. It doesn't have alot of commands, but there are a lot more to come.
  6. --cxcharlie/howamisupposedtoknow
  7. The current commands are:
  8.  
  9. Commands - Displays the commands
  10. cmds --> cmds pop up
  11. When the cmds are displayed, you can click on one to see its description and aliases
  12. Aliases are other words that can be used for a single command,
  13. for example, instead of using "forcefield me", you can use "ff me"
  14. If you are a tempa admin (admins added through the "swear in" cmd),
  15. some of the cmds may appear to be red, that means you do not have permission to use the command
  16.  
  17.  
  18. Makeduck - Makes a duck (very buggy, might remove later)
  19. "makeduck" -->makes a duck that moves around
  20. --Touching the duck will result in an explosion
  21.  
  22. DuckOut - Pings a duck tab with your message
  23. "duckout hi im a duck" --> makes a duck tab pop up saying "hi im a duck"
  24. You can also do: duckout =3= hi im a duck --> makes three tabs saying "hi im a duck"
  25.    
  26. Kill - Kills a player
  27. "kill all" -->kills everyone
  28.  
  29. Swarm - Sends a flying duck after someone. If it gets close enough it blows them up
  30. "swarm bob" --> sends duck after bob
  31.  
  32. Message - Makes a message for specified players
  33. Arguments: [==players==] [=reiterate number=]
  34. "Message ==bob== hi" --> makes a duck tab on bob saying "hi"
  35. You can also do: "Message ==bob,me== =3= hi" --> makes three ducks saying "hi" for bob and me
  36. The order of the "== ==" and the "= =" doesn't matter
  37.  
  38. Forcefield - Gives specified player(s) a forcefield...
  39. (Yes this is cliche)
  40. "forcefield me,bob" --> gives bob and me a ff
  41.  
  42. SwearIn - Swears player(s) to a duckzer [admin]
  43. "swearin bob" --> admins bob, and bob can now use commands
  44.  
  45. FallingDucks - Makes ducks fall and explode for specifed player(s) and time
  46. Arguments: [time] [players]
  47. time: secs,hours,days
  48. "fallingducks 20 sec bob" -->
  49. for 20 seconds, there will be falling ducks on the specified player(s)
  50. location
  51. "fallingducks 20 hours bob" --> 20 hours of falling ducks -_-
  52. "fallingducks 20 days bob" --> yeah...
  53.  
  54. Dismiss - Removes all the tabs from specified player(s)
  55. dismiss all --> removes the players' tabs
  56. If you just say "dismiss" then it will dismiss you
  57. ]]--
  58.  
  59.  
  60. --local print = require(game:GetService("ReplicatedStorage"):WaitForChild("OCServer").PrintFunction)
  61. local Workspace = Game:GetService('Workspace')
  62. local Players = Game:GetService('Players')
  63. local ReplicatedStorage = game:GetService('ReplicatedStorage')
  64. local HttpService = game:GetService('HttpService')
  65. local ServerScriptService = game:GetService('ServerScriptService')
  66. local ServerStorage = game:GetService('ServerStorage')
  67. local StarterPack = Game:GetService('StarterPack')
  68. local StarterGui = Game:GetService('StarterGui')
  69. local Lighting = Game:GetService('Lighting')
  70. local Debris = Game:GetService('Debris')
  71. local Teams = Game:GetService('Teams')
  72. local BadgeService = Game:GetService('BadgeService')
  73. local InsertService = Game:GetService('InsertService')
  74. local Terrain = Workspace.Terrain
  75. local RunService = Game:GetService('RunService')
  76. local Soundscape = Game:GetService('SoundService')
  77. local TeleportService = Game:GetService('TeleportService')
  78. local ChatService = Game:GetService('Chat')
  79.  
  80. local ColorMeta = {
  81.     __add = function(v1,v2)
  82.         if (not v2 or not v2) then return end
  83.         if (not v1[1] or not v1[2] or not v1[3] or not v2[1] or not v2[2] or not v2[3]) then return end
  84.         return Color3.new((v1[1]+v2[1])%1,(v1[2]+v2[2])%1,(v1[3]+v2[3])%1)
  85.     end,
  86.     __sub = function(v1,v2)
  87.         if (not v2 or not v2) then return end
  88.         if (not v1[1] or not v1[2] or not v1[3] or not v2[1] or not v2[2] or not v2[3]) then return end
  89.         return Color3.new(math.max(0,v1[1]-v2[1]),math.max(0,v1[2]-v2[2]),math.max(0,v1[3]-v2[3]))
  90.     end
  91. }
  92.  
  93. local custom = {
  94.     {'ByteDino',3}, -- [name, rank] (3 is highest rank, 2 is friends, 1 is temp admin, and 0 is normal player, and <= -1 is banned
  95.     {'PlayerName',2},
  96.     {'cxcharlie',3},
  97. }
  98.  
  99. local LIST = setmetatable({},{
  100.     __index = function(self,index)
  101.         for _,v in pairs(self) do
  102.             if string.lower(v.Name) == string.lower(tostring(index)) then
  103.                 return v
  104.             end
  105.         end
  106.     end,
  107.    
  108.     __newindex = function(self,index,value)
  109.         if value.Rank > 3 then
  110.             value.Rank = 3 -- -_-
  111.             print('really?')
  112.             rawset(self,index,value)
  113.         else
  114.             rawset(self,index,value)
  115.         end
  116.     end,
  117.     }
  118. )
  119.    
  120. function addPlayer(name,rank)
  121.     local new = {Name = name, Rank = rank}
  122.     rawset(LIST,name,new) --if needed there's a return :P
  123. end
  124.  
  125. function getRank(name)
  126.     if LIST[name] then
  127.         return LIST[name].Rank
  128.     else
  129.         return 0
  130.     end
  131. end
  132.  
  133. for index,derp in pairs(custom) do pcall(function() addPlayer(derp[1],derp[2]) end) end --close enough
  134.    
  135. local VerifyArg
  136.  
  137. local TABS = {}
  138.  
  139. local nilCMD = {Name = 'nil'; Description = 'nil' ; Aliases = {}}
  140. local COMMANDS = setmetatable({},
  141.     {__index = function(self,index)
  142.         for _,v in pairs(self) do
  143.             for __,vv in pairs(v.Aliases) do
  144.                 if string.lower(vv) == string.lower(tostring(index)) then
  145.                     return v
  146.                 end
  147.             end
  148.             if v.Name:lower() == index:lower() or rawget(self,index)  then
  149.                 return v
  150.             end
  151.         end
  152.         return nilCMDS
  153.     end
  154.    
  155.     }
  156. )
  157. --local alive,character,head,torso,neck,humanoid = checkAlive(plr)
  158.  
  159. function checkAlive(plr)
  160. local character,head,torso,neck,humanoid = nil,nil,nil,nil,nil
  161. local character = plr.Character
  162. if character then
  163. head = character:FindFirstChild('Head')
  164. torso = character:FindFirstChild('Torso')
  165. humanoid = character:FindFirstChild('Humanoid')
  166. if (head and torso and humanoid) then
  167.     neck = torso:FindFirstChild('Neck')
  168. end
  169. end
  170. if neck then
  171.     return true,character,head,torso,neck,humanoid
  172. else
  173.     return false
  174. end
  175. end
  176.  
  177. local clickremove = function(tab,model)
  178.         for _,v in pairs(model:GetChildren()) do
  179.             if v == tab then
  180.                 tab:remove()
  181.                 break
  182.             end
  183.         end
  184. end
  185.  
  186.  
  187. function dismiss(_,__,player)--idk :P
  188.     for _,v in pairs(Workspace:GetChildren()) do
  189.         if v.ClassName == 'Model' then
  190.             if v.Name == '__Tab' then
  191.                 if v.Player ~= nil then
  192.  
  193.                     local name = v.Player.Value
  194.                     local plr = Players:FindFirstChild(name)
  195.                     if plr ~= nil then
  196.  
  197.                         if plr == player then
  198.                             for __,v2 in pairs(TABS) do
  199.                                 if v2 == v then
  200.                                     table.remove(TABS,__)
  201.                                     v:remove()
  202.                                     break
  203.                                 end
  204.                             end
  205.                         end
  206.                     end
  207.                 end
  208.             end
  209.         end
  210.     end
  211. end
  212.  
  213.  
  214. function Tabby(str,funct,plr,d,bool)
  215.    
  216. local function Create(ty)
  217.     return function(data)
  218.         local obj = Instance.new(ty)
  219.         for k, v in pairs(data) do
  220.             if type(k) == 'number' then
  221.                 v.Parent = obj
  222.             else
  223.                 obj[k] = v
  224.             end
  225.         end
  226.         return obj
  227.     end
  228. end
  229. local model
  230.  
  231. for _,v in pairs(Workspace:GetChildren()) do
  232.     if v.Name == '__Tab' then
  233.         if v:FindFirstChild('Player') ~= nil then
  234.             local p = v.Player.Value
  235.             local test = Players:FindFirstChild(p)
  236.             if test then
  237.                 if test == plr then
  238.                     model = v
  239.                     break
  240.                 end
  241.             end        
  242.         end
  243.     end
  244. end
  245.  
  246.  
  247. if not model then
  248. model = Instance.new('Model',Workspace); model.Name = '__Tab'
  249. local sv = Instance.new('StringValue',model) sv.Value = tostring(plr.Name)
  250. sv.Name = 'Player'
  251. end
  252.  
  253. coroutine.wrap(function(plr,model)
  254. plr.Character.Humanoid.Died:connect(function()
  255. model:remove()
  256. end)
  257. end)(plr,model)
  258.  
  259.  
  260. local tab = Create'Part'{
  261.     Parent = model;
  262.     Anchored = true;
  263.     FormFactor = 'Custom';
  264.     Size = Vector3.new(4, 4.80000019, 2);
  265.     Name = ".__.";--idk
  266.     CanCollide = false;
  267.     Locked = true;
  268.     Create'SpecialMesh'{ --duck mesh :333
  269.         Name = 'MESH';
  270.         Scale = Vector3.new(2, 2, 2);
  271.         MeshId = "http://www.roblox.com/asset/?id=9419831";
  272.         TextureId = "http://www.roblox.com/asset/?id=9419827";
  273.         MeshType = Enum.MeshType.FileMesh;
  274.     };
  275. };
  276.  
  277. if bool then
  278. local sl = Instance.new('SelectionBox',tab)
  279. sl.Color = BrickColor.new(bool);sl.Adornee = tab
  280. end
  281. local bbg = Instance.new('BillboardGui',tab)
  282. bbg.AlwaysOnTop = true
  283. --local bv = Instance.new('BoolValue',tab); bv.Name = 'Ready'; bv.Value = true
  284. local sound = Instance.new('Sound',tab); sound.SoundId='' sound.Name = 'Quack'
  285. local sound2 = Instance.new('Sound',tab); sound2.SoundId=''; sound2.Name = 'Quack2'
  286. bbg.Size = UDim2.new(0, 300, 0, 1);bbg.StudsOffset = Vector3.new(0,5,0);bbg.Adornee = tab
  287. local tl = Instance.new('TextLabel',bbg)
  288. tl.BackgroundTransparency = 1;tl.Size = UDim2.new(0, 300, 0, 100);tl.Font = Enum.Font.SourceSansBold;tl.FontSize = Enum.FontSize.Size24;
  289. local possible = {0.1,0.15,0.25,0.3,0.6,0.45,0.33,0.5,0.77,0.7,0.8,1}
  290. tl.TextStrokeColor3 = Color3.new(0,0,0);tl.TextStrokeTransparency = 0;tl.TextColor3 = Color3.new(possible[math.random(1,#possible)],possible[math.random(1,#possible)],possible[math.random(1,#possible)])
  291. if type(str) == 'string' then
  292. tl.Text = str
  293. elseif type(str) == 'table' then
  294. tl.Text = str.Name
  295. end
  296. local h = Instance.new('Handles',tab)
  297. h.Faces = Faces.new(Enum.NormalId.Top);h.Adornee = tab
  298. local cd = Instance.new('ClickDetector',tab)
  299. cd.MaxActivationDistance = 9999
  300. table.insert(TABS,model)
  301. local index = 0
  302. for _,v in pairs(model:GetChildren()) do if v == tab then index = _ break end end
  303. coroutine.wrap(function(plr,cd,funct,tab,model,index,str)
  304.     cd.MouseClick:connect(function(clicker)
  305.         if type(str) == 'string' then
  306.         if clicker == plr then
  307.             funct(tab,model,plr,index)
  308.         else
  309.             if plr and clicker then
  310.                 if plr.Character and clicker.Character then
  311.                     local ff = Debris:AddItem(Instance.new('ForceField',plr.Character),math.random(2,4))
  312.                     local ex = Instance.new('Explosion',Workspace)
  313.                     ex.Position = clicker.Character:FindFirstChild('Torso').CFrame.p or click.Character:FindFirstChild('Head').CFrame.p or Vector3.new(0,0,0)
  314.                 end
  315.             end
  316.         end
  317.         elseif type(str) == 'table' then
  318.             if clicker == plr then
  319.             dismiss(nil,nil,plr)
  320.             local ARGS = 'Aliases: '..tostring(table.concat(str.Aliases,'/'))
  321.             Tabby(ARGS,clickremove,plr,20,'Bright orange')
  322.             Tabby(str.Description,clickremove,plr,20,'Bright green')
  323.             Tabby('Back',displayRecurse,plr,20,'Bright blue')
  324.             Tabby('Exit',dismiss,plr,20,'Bright red')
  325.             end
  326.         end
  327.     end)
  328. end)(plr,cd,funct,tab,model,index,str)
  329. Delay(d,function()for _,v in pairs(TABS) do if v == tab then table.remove(TABS,_) end end tab:remove()end)
  330. end
  331.  
  332. local starter = [[
  333.     _G,_VERSION,assert,collectgarbage,dofile,error,getfenv,getmetatable,ipairs,load,loadfile,loadstring,next,pairs,pcall,print,rawequal,rawget,rawset,select,setfenv,setmetatable,tonumber,tostring,type,unpack,xpcall,coroutine,math,string,table,game,Game,workspace,Workspace,delay,Delay,LoadLibrary,printidentity,Spawn,tick,time,version,Version,Wait,wait,PluginManager,crash__,LoadRobloxLibrary,settings,Stats,stats,UserSettings,Enum,Color3,BrickColor,Vector2,Vector3,Vector3int16,CFrame,UDim,UDim2,Ray,Axes,Faces,Instance,Region3,Region3int16=_G,_VERSION,assert,collectgarbage,dofile,error,getfenv,getmetatable,ipairs,load,loadfile,loadstring,next,pairs,pcall,print,rawequal,rawget,rawset,select,setfenv,setmetatable,tonumber,tostring,type,unpack,xpcall,coroutine,math,string,table,game,Game,workspace,Workspace,delay,Delay,LoadLibrary,printidentity,Spawn,tick,time,version,Version,Wait,wait,PluginManager,crash__,LoadRobloxLibrary,settings,Stats,stats,UserSettings,Enum,Color3,BrickColor,Vector2,Vector3,Vector3int16,CFrame,UDim,UDim2,Ray,Axes,Faces,Instance,Region3,Region3int16
  334. math.randomseed(tick())
  335.  
  336. local Workspace = Game:GetService('Workspace')
  337. local Players = Game:GetService('Players')
  338. repeat wait() until Players.LocalPlayer
  339. local ReplicatedStorage = game:GetService('ReplicatedStorage')
  340. local HttpService = game:GetService('HttpService')
  341. local ServerScriptService = game:GetService('ServerScriptService')
  342. local ServerStorage = game:GetService('ServerStorage')
  343. local StarterPack = Game:GetService('StarterPack')
  344. local StarterGui = Game:GetService('StarterGui')
  345. local Lighting = Game:GetService('Lighting')
  346. local Debris = Game:GetService('Debris')
  347. local Teams = Game:GetService('Teams')
  348. local BadgeService = Game:GetService('BadgeService')
  349. local InsertService = Game:GetService('InsertService')
  350. local Terrain = Workspace.Terrain
  351. local RunService = Game:GetService('RunService')
  352. local Soundscape = Game:GetService('SoundService')
  353. local TeleportService = Game:GetService('TeleportService')
  354.  
  355. ]]
  356.  
  357. local utils = {}
  358.  
  359. function utils.split(str,div)--took dis from someone :3
  360.     local results = {}
  361.     local currentresult = ""
  362.     for i=1,string.len(str) do
  363.         local current = string.sub(str,i,i)
  364.         if current:match(div) then
  365.             table.insert(results,currentresult)
  366.             currentresult = ""
  367.         else
  368.             currentresult = currentresult..current
  369.         end
  370.     end
  371.     table.insert(results,currentresult)
  372.     return results
  373. end
  374. function utils.catcha(f,plr)
  375.     --local s,e = ypcall(f)
  376.     --if not s then
  377.     --  Tabby("ERROR: "..(tostring(e)),clickremove,plr,20,'Bright red')
  378.     --end
  379. end
  380.  
  381. function utils.MidPoint(p1,p2)
  382.     return Vector3.new((p1.x+p2.x)/2,(p1.y+p2.y)/2,(p1.z+p2.z)/2)
  383. end
  384.  
  385. function utils.PON(n)
  386.     return ((n>0 and 'Pos') or (n<0 and 'Neg') or (n == 0 and 'Zero'))
  387. end
  388. function utils.RandomNumber(m,maximum)
  389.     local possible = {}
  390.     for i = -maximum,maximum,m do
  391.         table.insert(possible,m * i)
  392.     end
  393.     return possible[math.random(#possible)]
  394. end
  395. function utils.RandomVector(m,maximum) --multiples, max amount
  396.     local possible = {}
  397.     for i = -maximum,maximum,m do
  398.         table.insert(possible,m * i)
  399.     end
  400.     return Vector3.new(possible[math.random(1,#possible)],possible[math.random(1,#possible)],possible[math.random(1,#possible)])
  401. end
  402.  
  403. function utils.RandomCFrame(m,maximum) --multiples, max amount
  404.     local possible = {}
  405.     for i = -maximum,maximum,m do
  406.         table.insert(possible,m * i)
  407.     end
  408.     return CFrame.new(possible[math.random(1,#possible)],possible[math.random(1,#possible)],possible[math.random(1,#possible)])
  409. end
  410.  
  411. function utils.RandomCFrameAngles(m,maximum,bool) --multiples, max amount, if bool, then convert to radians
  412.     local possible = {}
  413.    
  414.     for i = -maximum,maximum,m do
  415.         if bool then
  416.         table.insert(possible,math.rad(m * i))
  417.         else
  418.             table.insert(possible,m * i)
  419.         end
  420.     end
  421.     return CFrame.Angles(possible[math.random(1,#possible)],possible[math.random(1,#possible)],possible[math.random(1,#possible)])
  422. end
  423.  
  424. function utils.DrawRay(ray, parent, color)
  425.     if not parent then parent = workspace end
  426.     local part = Instance.new("Part", parent)
  427.     part.FormFactor = "Custom"
  428.     part.Size = Vector3.new(.2, ray.Direction.magnitude, .2)
  429.     part.CFrame = CFrame.new(ray.Origin + ray.Direction/2, ray.Origin + ray.Direction) * CFrame.Angles(math.pi/2,0,0)
  430.     part.Anchored = true
  431.     part.CanCollide = false
  432.     Instance.new("SpecialMesh", part)
  433.    
  434.     if not color then
  435.         part.BrickColor = BrickColor.new("Bright red")
  436.     else
  437.         part.BrickColor = BrickColor.new(color)
  438.     end
  439.     return part
  440. end
  441.  
  442. function utils.VectorToString(Vector)
  443.     return ("Vector3.new("..Vector.x..", "..Vector.y..", "..Vector.z..")")
  444. end
  445.  
  446.  
  447. debug = false
  448. --THANKS ALOT TO jacob2233 FOR THIS ALGORITHM! :D
  449. function utils.encode(phrase)
  450.     r = #phrase --Number of letters in the phrase
  451.     isOdd = false --Default; if true then at the end add a letter ot notify the decompiler
  452.     if r%2 ~= 0 then --If the amount of letters is odd then...
  453.         phrase = phrase.." " --Add a space to the end if the phrase has an odd amount of letters
  454.         isOdd = true --Remember to add a letter at the end for the decompiler to see
  455.     end
  456.        
  457.     i = 1 --Keeps track of current iteration
  458.     code = 0 --Code can't be null, so start with 0; The 0 will be removed later
  459.    
  460.     while i <= #phrase do --Repeat until 'i' is greater than the amount of letters
  461.         a = string.byte(string.sub(phrase,i,i+1)) --Translate first letter into ASCII value
  462.         b = string.byte(string.sub(phrase,i+1,i+2)) --Translate second letter into ASCII value
  463.        
  464.         temp = utils.encodeAB(a,b) --Encode the temporary group for quick access and efficiency
  465.         if temp<10 then --There is no way for the decoder to know if a value is < 10
  466.             l1 = string.char(math.random(97,102)) --Pick a random letter from 'a' to 'f'
  467.  
  468.             code = code..l1..temp --Add the quick hint for the decompiler
  469.             if debug then print(a.." "..b.." "..l1..temp) end --Debug          
  470.         elseif temp<1000 then --There is no way for the decoder to know if a value is < 1000
  471.             l1 = string.char(math.random(65,70)) --Pick a random letter from 'A' to 'F'
  472.  
  473.             code = code..l1..temp --Add the quick hint for the decompiler
  474.             if debug then print(a.." "..b.." "..l1..temp) end --Debug          
  475.         elseif temp<10000 then --There is no way for the decoder to know if a value is < 10000
  476.             l1 = string.char(math.random(65,70)) --Pick a random letter from 'A' to 'F'
  477.             l2 = string.char(math.random(65,70)) --Pick a random letter from 'A' to 'F'
  478.  
  479.             code = code..l1..l2..temp --Add the quick hint for the decompiler
  480.             if debug then print(a.." "..b.." "..l1..l2..temp) end --Debug          
  481.         elseif temp>100000 then --There is no way for the decoder to know if a value is > 100000; encode(255,255) is 130560
  482.             l1 = string.char(math.random(65,70)) --Pick a random letter from 'A' to 'F'
  483.             l2 = string.char(math.random(65,70)) --Pick a random letter from 'A' to 'F'
  484.             l3 = string.char(math.random(65,70)) --Pick a random letter from 'A' to 'F'
  485.  
  486.             code = code..l1..l2..l3..temp --Add the quick hint for the decompiler
  487.             if debug then print(a.." "..b.." "..l1..l2..l3..temp) end --Debug          
  488.         else --Most numbers will fall between 10000 and 100000
  489.             code = code..temp --Encode the two individual numbers into one and add it to the result
  490.             if debug then print(a.." "..b.." "..temp) end --Debug
  491.         end    
  492.         i = i + 2 --Increment 'i' by two for the next group    
  493.     end
  494.  
  495.     if isOdd then --If the sequence is odd
  496.         code = code..string.char(math.random(65,70)) --Pick a random letter to notify the decompiler of odd lettered phrase
  497.     end
  498.  
  499.     return string.sub(code,2,#code) --Return the code except for the 0 at the beginning.
  500. end
  501.  
  502.  
  503. function utils.encodeAB(a,b)
  504.     return 0.5*(math.pow(a+b,2)+3*a+b) --The algorithm itself is simple...
  505. end
  506.  
  507.  
  508. function utils.decode(input)   
  509.     i = 1 --Keeps count of the current iteration
  510.     result = ""
  511.     trimSpace = false --Default; is true if input has odd amount of letters
  512.  
  513.     if isLetter(string.sub(input, #input-1, #input)) then --If the last element is a letter
  514.         input = string.sub(input,1,#input-1) --Remove the letter
  515.         trimSpace = true --Remember to trim the extra space at the end
  516.     end
  517.    
  518.     while i<=#input do
  519.         length = 4 --Length of regular number is 5-1 or 4
  520.         if isLetter(string.sub(input,i,i+1)) then --If there is one letter
  521.             if isLetter(string.sub(input,i+1,i+2)) then --If there are two letters
  522.                 if isLetter(string.sub(input,i+2,i+3)) then --If there are three letters (max amount of letters)
  523.                     length = 5 --Length of long number is 6-1 or 5
  524.                     letters = 3 --Amount of letters before the number
  525.                     j = i+letters --Account for the letters
  526.                     if debug then print(length.." "..string.sub(input,j,j+length)) end --Debug
  527.                     group = utils.decodeA(string.sub(input,j,j+length)) --Decode the number into its original two numbers
  528.                     i = i+letters+length+1 --Increment 'i' accordingly
  529.                     if debug then print(i) end --Debug
  530.                 else --Two letters
  531.                     length = 3 --Length of short number is 4-1 or 3
  532.                     letters = 2 --Amount of letters before the number
  533.                     j = i+letters --Account for the letters
  534.                     if debug then print(length.." "..string.sub(input,j,j+length)) end --Debug
  535.                     group = utils.decodeA(string.sub(input,j,j+length)) --Decode the number into its original two numbers
  536.                     i = i+letters+length+1 --Increment 'i' accordingly
  537.                     if debug then print(i) end --Debug
  538.                 end
  539.             else --One letter
  540.                 if isLowerCase(string.sub(input,i,i+1)) then --Lowercase letters mean something different than uppercase letters
  541.                     length = 0 --Length of super-short number is 1-1 or 0
  542.                     letters = 1 --Amount of letters before the number
  543.                     j = i+letters --Account for the letters
  544.                     if debug then print(length.." "..string.sub(input,j,j+length)) end --Debug
  545.                     group = utils.decodeA(string.sub(input,j,j+length)) --Decode the number into its original two numbers
  546.                     i = i+letters+length+1 --Increment 'i' accordingly
  547.                     if debug then print(i) end --Debug
  548.                 else
  549.                     length = 2 --Length of shorter number = 3-1 or 2
  550.                     letters = 1 --Amount of letters before the number
  551.                     j = i+letters --Account for the letters
  552.                     if debug then print(length.." "..string.sub(input,j,j+length)) end --Debug
  553.                     group = utils.decodeA(string.sub(input,j,j+length)) --Decode the number into its original two numbers
  554.                     i = i+letters+length+1 --Increment 'i' accordingly
  555.                     if debug then print(i) end --Debug
  556.                 end        
  557.             end
  558.         else --No letters
  559.             if debug then print(length.." "..string.sub(input,i,i+length)) end --Debug
  560.             group = utils.decodeA(string.sub(input,i,i+length)) --Decode the number into its original two numbers
  561.             i = i+length+1 --Increment 'i' accordingly
  562.             if debug then print(i) end --Debug
  563.         end
  564.         result = result..string.char(group[1])..string.char(group[2]) --Turn the numbers back into letters and add them to the result
  565.     end
  566.  
  567.     if trimSpace then
  568.         result = string.sub(result,1,#result-1) --Remove the extra element at the end
  569.     end
  570.    
  571.     return tostring(result) --Finally, return the fully decoded result
  572. end
  573.  
  574. function utils.decodeA(f)
  575.     F = 2*f
  576.     s = math.floor(math.sqrt(F)) --incase sqrt(F) isn't an integer, make it one.
  577.     S = (s*s)+s
  578.     if F >= S then --case one
  579.         a = f - 0.5*s*(s+1)
  580.         b = 0.5*s*(s+3) - f
  581.     elseif F < S then --case two
  582.         a = f - 0.5*s*(s-1)
  583.         b = 0.5*s*(s+1) - f - 1
  584.     else --Bad value given; only reached if f is negative or not an integer.
  585.         a = -1
  586.         b = -1  
  587.     end
  588.     return {a,b} --return a 2 element array (or matrix) containing a and b
  589. end
  590.  
  591.  
  592. function isLetter(a)
  593.     a,b = pcall(function() return a+1 end) --'a' stores whether the function executed or not; b stores error message
  594.     return not a --return the opposite whether the function worked or not
  595. end
  596.  
  597.  
  598. function isLowerCase(a)
  599.     return string.lower(a) == a --Compare the input is equal to its lower-case counterpart
  600. end
  601.  
  602. function utils.GetPlayersFromString(str,spokenplayer)
  603.     if not str or str == "" then
  604.             Tabby(("No player string, (arg1 of utils.GetPlayerFromString..."),clickremove,spokenplayer,10,'Bright red')
  605.     end
  606.     if not spokenplayer then
  607.     Tabby(("No specified player (arg2 of utils.GetPlayerFromString..."),clickremove,spokenplayer,10,'Bright red')
  608.     end
  609.     local foundplayers = {}
  610.     for listedplayer in str:lower():gmatch("[^,;!/\ ]+") do
  611.         if listedplayer:lower() == "all" then
  612.             for _,i in pairs(Players:GetPlayers()) do
  613.                 table.insert(foundplayers,i)
  614.             end
  615.         elseif listedplayer:lower() == "others" then
  616.             for _,i in pairs(Players:GetPlayers()) do
  617.                 if i.Name:lower() ~= spokenplayer.Name:lower() then
  618.                     table.insert(foundplayers,i)
  619.                 end
  620.             end
  621.         elseif listedplayer:lower() == "admins" then
  622.             for _,i in pairs(Players:GetPlayers()) do
  623.                 if LIST[i.Name] ~= nil then
  624.                     if LIST[i.Name] == true then
  625.                         table.insert(foundplayers,i)
  626.                     end
  627.                 end
  628.             end
  629.         elseif listedplayer:lower() == "nonadmins" then
  630.             for _,i in pairs(Players:GetPlayers()) do
  631.                 if LIST[i.Name] == nil or LIST[i.Name] == false then
  632.                     table.insert(foundplayers,i)
  633.                 end
  634.             end
  635.         elseif listedplayer:lower() == "random" then
  636.             table.insert(foundplayers,Players:GetPlayers()[math.random(1,#Players:GetPlayers())])
  637.         elseif listedplayer:lower() == "me" then
  638.             table.insert(foundplayers,spokenplayer)
  639.         elseif listedplayer:lower() == "friends" then
  640.             for _,i in pairs(Players:GetChildren()) do
  641.                 if i:IsFriendsWith(spokenplayer.userId) then
  642.                     table.insert(foundplayers,i)
  643.                 end
  644.             end        
  645.         elseif listedplayer:lower() == "bestfriends" then          
  646.             for _,i in pairs(Players:GetChildren()) do
  647.                 if i:IsBestFriendsWith(spokenplayer.userId) then
  648.                     table.insert(foundplayers,i)
  649.                 end
  650.             end        
  651.         elseif listedplayer:lower() == "nonfriends" then           
  652.             for _,i in pairs(Players:GetChildren()) do
  653.                 if not i:IsFriendsWith(spokenplayer.userId) then
  654.                     table.insert(foundplayers,i)
  655.                 end
  656.             end        
  657.         elseif listedplayer:lower() == "nonbestfriends" then           
  658.             for _,i in pairs(Players:GetChildren()) do
  659.                 if not i:IsBestFriendsWith(spokenplayer.userId) then
  660.                     table.insert(foundplayers,i)
  661.                 end
  662.             end        
  663.         elseif listedplayer:lower() == "nbc" then          
  664.             for _,i in pairs(Players:GetChildren()) do
  665.                 if i.MembershipType == Enum.MembershipType.None then
  666.                     table.insert(foundplayers,i)
  667.                 end
  668.             end    
  669.         elseif listedplayer:lower() == "bc" then           
  670.             for _,i in pairs(Players:GetChildren()) do
  671.                 if i.MembershipType == Enum.MembershipType.BuildersClub then
  672.                     table.insert(foundplayers,i)
  673.                 end
  674.             end        
  675.         elseif listedplayer:lower() == "tbc" then          
  676.             for _,i in pairs(Players:GetChildren()) do
  677.                 if i.MembershipType == Enum.MembershipType.TurboBuildersClub then
  678.                     table.insert(foundplayers,i)
  679.                 end
  680.             end            
  681.         elseif listedplayer:lower() == "obc" then          
  682.             for _,i in pairs(Players:GetChildren()) do
  683.                 if i.MembershipType == Enum.MembershipType.OutrageousBuildersClub then
  684.                     table.insert(foundplayers,i)
  685.                 end
  686.             end    
  687.         elseif listedplayer:lower() == "anybc" then        
  688.             for _,i in pairs(Players:GetChildren()) do
  689.                 if i.MembershipType == Enum.MembershipType.OutrageousBuildersClub or i.MembershipType == Enum.MembershipType.TurboBuildersClub or i.MembershipType == Enum.MembershipType.BuildersClub  then
  690.                     table.insert(foundplayers,i)
  691.                 end
  692.             end
  693.            
  694.         --[[elseif listedplayer:lower():sub(1,4) == "team" then
  695.            
  696.             local team = listedplayer:lower():sub(6)
  697.             local matchedteam
  698.            
  699.             for _,i in pairs(Teams:GetChildren()) do
  700.                 if i:IsA("Team") then
  701.                     if i.Name:lower():sub(1,#team) == team:lower() then
  702.                         if not matchedteam then
  703.                             matchedteam = i
  704.                         else
  705.                             error("Team \""..team.."\" is ambiguous.")
  706.                         end
  707.                     end
  708.                 end
  709.             end
  710.            
  711.             assert(matchedteam,"No teams matching \""..team.."\" found.")
  712.            
  713.             for _,i in pairs(Players:GetPlayers()) do
  714.                 if i.TeamColor == matchedteam.TeamColor then
  715.                     table.insert(foundplayers,i)
  716.                 end
  717.             end]]
  718.            
  719.         end
  720.        
  721.         local currentfoundplayer       
  722.         for _,i in pairs(Players:GetPlayers()) do          
  723.             if i.Name:lower():sub(1,#listedplayer) == listedplayer:lower() then
  724.                 if not currentfoundplayer then                 
  725.                     currentfoundplayer = i
  726.                 else
  727.                     Tabby((str.." is ambiguous"),clickremove,spokenplayer,10,'Bright red')
  728.                 end
  729.             end    
  730.         end
  731.         table.insert(foundplayers,currentfoundplayer)
  732.     end
  733.     --assert(foundplayers[1],"No players were found matching \""..str.."\"")
  734.     if foundplayers[1] == nil then Tabby('No players specified...',clickremove,spokenplayer,10,'Bright blue') end
  735.     return foundplayers
  736. end
  737.  
  738.  
  739.  
  740.  
  741. --[[function NLS(source,player,delayTime)
  742.     if script.ClassName == 'LocalScript' then
  743.         local ls = script:Clone() ls.Disabled = true
  744.         ls.Parent = player.Character or player.PlayerGui or player.Backpack or nil
  745.         local code = Instance.new('StringValue',ls) code.Name = 'code'
  746.         code.Value = starter..source
  747.         coroutine.wrap(function(ls,delayTime)
  748.         delay(delayTime,function()ls.Disabled = false end)
  749.         end)(ls,delayTime)
  750.     elseif script.ClassName == 'Script' then
  751.         if script:FindFirstChild('LS') ~= nil then
  752.             local ls = script.LS:Clone()
  753.             ls.Source = starter..source
  754.             ls.Parent = player.Character or player.PlayerGui or player.Backpack or nil
  755.             coroutine.wrap(function(ls,delayTime)
  756.             delay(delayTime,function()ls.Disabled = false end)
  757.             end)(ls,delayTime)
  758.         end
  759.     end
  760. end
  761. ]]--
  762. function addCommand(name,desc,func,rank,...)
  763.     local tuple = {...}
  764.     local new = {Name = name; Description = desc; Run = function(...) func(...) end ; Aliases = tuple; Rank = rank}
  765.     rawset(COMMANDS,name,new)
  766. end
  767.  
  768. addCommand('MakeDuck','Makes a duck',
  769.         function(str,chatter)
  770.                 local duck = Instance.new('Model',Workspace)
  771.                 duck.Name = 'Duck'
  772.                 local torso = Instance.new('Part',duck)
  773.                 torso.FormFactor = 'Custom'
  774.                 torso.Size = Vector3.new(1.5,1.5,1.5)
  775.                 torso.Name = 'Torso'
  776.                 torso.Position = Vector3.new(math.random(-20,20),math.random(5,10),math.random(-20,20))
  777.                 local quack = Instance.new('Sound',torso)
  778.                 quack.SoundId = 'http://www.roblox.com/asset/?id=9413300'
  779.                 quack.Volume = 1.1
  780.                 local head = Instance.new('Part',duck)
  781.                 head.FormFactor = 'Custom'
  782.                 head.Size = Vector3.new(.75,.75,.75)
  783.                 head.Name = 'Head'
  784.                 head.Transparency = 0.9
  785.                 head.CanCollide = false
  786.                 local weld = Instance.new('Weld',torso)
  787.                 weld.Part0,weld.Part1 = torso,head
  788.                 weld.C1 = CFrame.new(0,0.33,0)
  789.                 local humanoid = Instance.new('Humanoid',duck)
  790.                 local m = Instance.new('SpecialMesh',torso)
  791.                 m.MeshType = Enum.MeshType.FileMesh
  792.                 m.MeshId = "http://www.roblox.com/asset/?id=9419831";
  793.                 m.TextureId = "http://www.roblox.com/asset/?id=9419827";
  794.                 m.Scale = Vector3.new(1.1,1.1,1.1)
  795.                 coroutine.wrap(function(duck,torso,head,humanoid,quack,weld)
  796.                     while (duck~=nil and torso~=nil and head~=nil and humanoid~=nil and quack~=nil) do
  797.                     wait(.1)
  798.                     if not run or not duck or not torso or not head or not weld  or not humanoid then break end
  799.                     if humanoid.Health<=0 then break end
  800.                     local jumpRay = Ray.new(head.CFrame.p,head.CFrame.lookVector*4.3)
  801.                     local part,poz = Workspace:FindPartOnRayWithIgnoreList(jumpRay,{duck},true)
  802.                     if part then if part.Size.y<=4.5 then humanoid.Jump = true end end
  803.                     end
  804.                 end)(duck,torso,head,humanoid,quack,weld)
  805.                 coroutine.wrap(function(duck,torso,head,weld,humanoid,quack)
  806.                         torso.Touched:connect(function(hit)
  807.                           local hum = hit.Parent:FindFirstChild('Humanoid')
  808.                                 if hum then
  809.                                     --ChatService:Chat(torso,utils.decode('2018325765242042355110043259892121910845241922142023321FA2178F'))
  810.                                     local ex = Instance.new('Explosion',Workspace)
  811.                                     ex.Position = hit.Position
  812.                                     duck:remove()
  813.                                 end
  814.                         end)
  815.                         local run = true
  816.                         humanoid.Died:connect(function()run=false;end)
  817.                         while (duck and torso and head and weld) ~= nil do
  818.                                 wait(math.random(2,5))
  819.                                 if not run or not duck or not torso or not head or not weld  or not humanoid then break end
  820.                                 if humanoid.Health<=0 then break end
  821.                                 local jump = math.random(1,5) if jump == 2 then humanoid.Jump = true end
  822.                                 local ray = Ray.new(head.CFrame.p + Vector3.new(0,0.5,0),((Vector3.new(math.random(-10,10),-.22,math.random(-10,10))-head.CFrame.lookVector)*50),true)
  823.                                 local rayPart = utils.DrawRay(ray, Workspace)
  824.                                 Debris:AddItem(rayPart,2)
  825.                                 local hit,pos = Workspace:FindPartOnRayWithIgnoreList(ray,{duck},true)
  826.                                 if hit and pos then
  827.                                 quack.Pitch=utils.RandomNumber(.1,1)+.5 wait();quack:Play()
  828.                                 humanoid:MoveTo(pos, Terrain)
  829.                                 end
  830.                         end
  831.                 end)(duck,torso,head,weld,humanoid,quack)
  832.         end,1,
  833.         'md','create'
  834. )
  835.  
  836. addCommand('Kill','Kills specified player(s)', function(str,chatter)
  837. local plrs = utils.GetPlayersFromString(str,chatter)
  838.     for _,v in pairs(plrs) do
  839.         if v.Character ~= nil then
  840.             v.Character:BreakJoints()
  841.             Tabby(('Killed: '..tostring(v.Name)), clickremove,chatter,12,'Bright blue')
  842.         end
  843.     end
  844.  
  845. end,1,
  846. 'kl','die','dk')
  847.  
  848. addCommand('DuckOut','Pings a duck tab',function(str,chatter)
  849. local rep = (str:match('=(%d+)='))
  850. local str = str:gsub('=(%d+)=',"")
  851. local str = utils.encode(str:gsub('','\5'))
  852. for i = 1,(rep or 1) do
  853. local colors={'Bright green','Bright blue','Bright yellow','Bright orange'}
  854. Tabby(tostring(utils.decode(str)),clickremove,chatter,30+math.random(1,12),colors[math.random(1,#colors)])
  855. end
  856. end,1,
  857. 'out','quack','du','duck','dd')
  858.  
  859. function displayRecurse(_,__,plr)
  860.     dismiss(nil,nil,plr)
  861.     for _,v in pairs(COMMANDS) do
  862.         if v.Rank <= getRank(plr.Name) then
  863.             Tabby(v, nil,plr,30+math.random(1,30),'Bright green')
  864.         else
  865.             Tabby(v, nil,plr,30+math.random(1,30),'Bright red')
  866.         end
  867.     end
  868. end
  869.  
  870. addCommand('Commands','Displays the commands -_-',function(str,chatter)
  871.     displayRecurse(nil,nil,chatter)
  872. end,1,
  873. 'cmds','cmd','ducks')
  874.  
  875. addCommand('Swarm','Sends a rocket propelled duck at specified player(s)',function(str,chatter)
  876.    
  877.     local plrs = utils.GetPlayersFromString(str,chatter)
  878.    
  879.     for _,v in pairs(plrs) do
  880.        
  881.         local alive,character,head,torso,neck,humanoid = checkAlive(v)
  882.        
  883.             if alive then          
  884.                
  885.                 Tabby('Swarmed: '..tostring(v.Name), clickremove,chatter,15,'Bright blue')
  886.                
  887.                 local duck = Instance.new('Part',Workspace)
  888.                 duck.Size = Vector3.new(3,3,3)
  889.                 duck.Anchored = true
  890.                 duck.CanCollide = false
  891.                 duck.Position = torso.CFrame.p + Vector3.new(math.random(-100,100),math.random(0,20),math.random(-100,100))
  892.                 duck.Locked = true
  893.                
  894.                 local m = Instance.new('SpecialMesh',duck)
  895.                 m.MeshId = "http://www.roblox.com/asset/?id=9419831";
  896.                 m.TextureId = "http://www.roblox.com/asset/?id=9419827";
  897.                 m.Scale = Vector3.new(3.1,3.1,3.1)
  898.                
  899.                 local sound = Instance.new('Sound',duck)
  900.                 sound.SoundId = "http://www.roblox.com/asset/?id=9413300"
  901.                 sound.Name = 'LoopQuack'
  902.                 sound.Looped = true
  903.                 sound:Play()
  904.                    
  905.                 local explosionSound = Instance.new('Sound',duck)
  906.                 explosionSound.SoundId = 'rbxasset://sounds/collide.wav'
  907.                 explosionSound.Name = 'Explosion'
  908.                 explosionSound.Pitch = 1.2
  909.                 coroutine.wrap(function(duck)
  910.                     RunService.Stepped:connect(function()
  911.                         pcall(function()
  912.                         duck.Anchored = true
  913.                         end)
  914.                     end)
  915.                 end)
  916.                 coroutine.wrap(function(duck)
  917.                    
  918.                     local lastCF = duck.CFrame
  919.                     local lastsize
  920.                     local ts = {}
  921.                     while duck ~= nil do
  922.                         wait()
  923.                        
  924.                         if duck == nil then break end
  925.                        
  926.                         local current = duck.CFrame
  927.                        
  928.                         if current ~= lastCF  then
  929.  
  930.                             local distance = (current.p - lastCF.p).magnitude + (.45 * duck.Size.z)
  931.                             local trail = Instance.new('Part',Workspace)
  932.                             trail.BrickColor = BrickColor.new('Bright yellow')
  933.                             trail.Anchored = true
  934.                             trail.Transparency = 0.2
  935.                             trail.TopSurface,trail.BottomSurface = 'Smooth','Smooth'
  936.                             trail.Size = Vector3.new(1,1,distance)
  937.                             trail.CFrame = CFrame.new(lastCF.p,current.p) * CFrame.Angles(0,0,distance/2)
  938.                             table.insert(ts,trail)
  939.                            
  940.                         end
  941.                            
  942.                         for _,v in pairs(ts) do
  943.                             if v ~= nil then
  944.                                 v.Transparency = v.Transparency + .1
  945.                                 if v.Transparency >= 1 then
  946.                                     table.remove(ts,_)
  947.                                     v:remove()
  948.                                 end
  949.                             end
  950.                         end                    
  951.                            
  952.                         lastCF = duck.CFrame
  953.                     end
  954.                 end)(duck)
  955.                
  956.                 coroutine.wrap(function(duck,torso,explosionSound,m)
  957.                     local start = time()
  958.                     local wad = 0
  959.                     local bool = false
  960.                     local lastCF = duck.CFrame
  961.  
  962.                     while duck ~= nil and torso ~= nil do
  963.                         wait()
  964.            
  965.                         if bool then
  966.                             wad = wad + 1
  967.                             if wad == 8 then
  968.                                 bool = false
  969.                             end
  970.                         else
  971.                             wad = wad - 1
  972.                             if wad == -8 then
  973.                                 bool = true
  974.                             end
  975.                         end            
  976.                        
  977.                         --if (wad == 0 and bool) then wad = 1 elseif (wad == 0 and not bool) then wad = -1 else wad = 0 end
  978.                        
  979.                         local past = time() - start
  980.                        
  981.                         local smodlen = math.abs((0.5*(math.sin(3*past)+math.sin(4*past)))/5)
  982.                                
  983.                         local smodw = math.abs(math.sin(past*10))                  
  984.                        
  985.                         local speed = (past/(math.pi*3)%(33))
  986.                        
  987.                         m.Scale = Vector3.new((speed*math.pi)+smodw+smodlen,(speed*math.pi)+smodw+smodlen,(speed*math.pi)+smodw+smodlen)           
  988.                        
  989.                         local rate = 5
  990.                        
  991.                                    
  992.                         local rot = (wad * speed * 10)
  993.                         duck.CFrame = CFrame.new(duck.CFrame.p, (torso.CFrame).p)
  994.                         duck.CFrame = duck.CFrame * CFrame.new(0,0,(-1*speed)) * CFrame.Angles(0,math.rad(rot/math.pi),0) --waddle waddle, and he waddled away
  995.                        
  996.                         if ((duck.CFrame.p) - torso.CFrame.p).magnitude <=3.5+duck.Size.z/2 then
  997.                             local mp = utils.MidPoint(duck.CFrame.p,torso.CFrame.p)
  998.                             local e = Instance.new('Explosion',Workspace)
  999.                             e.Position = mp
  1000.                             e.Hit:connect(function(v) pcall(function()v:BreakJoints()end) end)
  1001.                                 --local mini = {0.05,0.1,0.2,0.15,0.25}
  1002.                                 local colors = {'Bright orange','Bright yellow', 'Bright yellow', 'Bright yellow'}
  1003.                                 for i = 1,math.random(6,15) do
  1004.                                     local confetti = Instance.new('Part',Workspace)
  1005.                                     confetti.FormFactor = 'Custom'
  1006.                                     confetti.Size = Vector3.new(.5,.5,.5)
  1007.                                     confetti.BrickColor = BrickColor.new(colors[math.random(1,#colors)])
  1008.                                     confetti.CFrame = CFrame.new(mp) * utils.RandomCFrame(.02,200) * utils.RandomCFrameAngles(5,72,true)
  1009.                                     Debris:AddItem(confetti,math.random(5,10))
  1010.                                    
  1011.                                     local sparkles = Instance.new('Sparkles',confetti)
  1012.                                     sparkles.Color = Color3.new(0,0.8,0.85)
  1013.                                    
  1014.                                     local fire = Instance.new('Fire',confetti)                                 
  1015.                                    
  1016.                                     explosionSound:Play()
  1017.                            
  1018.                                  end
  1019.                                 duck:remove()
  1020.                                 pcall(function()v.Character:BreakJoints()end)
  1021.                             break
  1022.                         end
  1023.                     end
  1024.                 end)(duck,torso,explosionSound,m)
  1025.                
  1026.             else           
  1027.                
  1028.             end
  1029.  
  1030.     end
  1031.    
  1032. end,1,
  1033. 'sd','rocket','rpd')
  1034.  
  1035. addCommand('Dismiss','Removes the tabs on player(s)',
  1036.     function(str,chatter)
  1037.         local players = utils.GetPlayersFromString(str,chatter)
  1038.         if players then
  1039.        
  1040.             for _,v in pairs(players) do
  1041.                 --if checkAlive(v) then
  1042.                     dismiss(nil,nil,v)
  1043.                 --end
  1044.             end
  1045.            
  1046.         else
  1047.             dismiss(nil,nil,chatter)
  1048.         end
  1049.    
  1050. end,1,'diss')
  1051.  
  1052. addCommand('ForceField','Puts a ff on specified player(s)',
  1053.     function(str,chatter)
  1054.         local plrs = utils.GetPlayersFromString(str,chatter)
  1055.         for _,v in pairs(plrs) do
  1056.             if v.Character ~= nil then
  1057.                 Instance.new('ForceField',v.Character)
  1058.                 Tabby('Gave ForceField to: '..tostring(v.Name), clickremove,chatter,15,'Bright blue')
  1059.             end
  1060.         end
  1061.     end,1
  1062. ,'ff','fof')
  1063.  
  1064. addCommand('Message','Messages player(s) with a tabby',
  1065.     function(str,chatter)
  1066.         local str_tab = utils.split(str," ")
  1067.         if (not str_tab[1] or not str_tab[2]) then return end
  1068.         local plrs = str:match("==([%s%d%a%p]+)==")
  1069.         local reiterate = tonumber(str:match("=(%d+)=")) or 1
  1070.        
  1071.         if not plrs then return end
  1072.         local length = (string.len(plrs)+2)+1
  1073.         --local text = string.sub(str,length,string.len(str))
  1074.         local str =(str:gsub('==([%s%d%a%p]+)==',"")):gsub("=(%d+)=","")
  1075.         local plrs = utils.GetPlayersFromString(plrs,chatter)
  1076.         for _,v in pairs(plrs) do
  1077.             if checkAlive(v) then
  1078.                 for i = 1, reiterate do
  1079.                 Tabby(str,clickremove,v,15,'Bright green')
  1080.                 end
  1081.             end
  1082.         end
  1083.     end,
  1084.     1,'msg','mg','m'
  1085. )
  1086. addCommand('FallingDucks','Spawns exploding ducks in the air for specified time',
  1087.     function(str,chatter)
  1088.         local str = str:lower()
  1089.         local str_tab = utils.split(str," ")   
  1090.        
  1091.         local numb = tonumber(str_tab[1])
  1092.         local str = tostring(str_tab[2])       
  1093.         local plrz = tostring(str_tab[3])
  1094.        
  1095.         if plr ~= nil then
  1096.             local length = string.len(numb) + string.len(str) + 2
  1097.             plrz = string.sub(str,length,string.len(str))
  1098.         end
  1099.        
  1100.        
  1101.         local pos = {}
  1102.  
  1103.         if plrz ~= nil then
  1104.  
  1105.             local a = utils.GetPlayersFromString(plrz,chatter)
  1106.            
  1107.             for _,v in pairs(a) do
  1108.                
  1109.                  local alive,character,head,torso,neck,humanoid = checkAlive(v)
  1110.                
  1111.                 if alive then
  1112.                     table.insert(pos,torso.CFrame.p)
  1113.                     Tabby('Let ducks fall upon: '..utils.VectorToString(torso.CFrame.p), clickremove,chatter,15,'Bright blue')
  1114.                 end
  1115.             end
  1116.         end
  1117.        
  1118.         if numb ~= nil then
  1119.            
  1120.             if type(numb) == 'number' then
  1121.                            
  1122.                 local function convert(n,str)
  1123.                    
  1124.                     if str ~= nil then
  1125.                         if string.sub(str,1,3) == 'sec' then return 1 * n
  1126.                             elseif string.sub(str,1,3) == 'min' then return 60 * n
  1127.                             elseif string.sub(str,1,4) == 'hour' then return 360 * n
  1128.                             elseif string.sub(str,1,3) == 'day' then return 8640 * n
  1129.                             else return n * 1
  1130.                         end
  1131.                     else return n * 1
  1132.                 end
  1133.  
  1134.                 end            
  1135.                
  1136.                 local tim = convert(numb,str)
  1137.                
  1138.                 if #pos >= 1 then
  1139.                     for _,v in pairs(pos) do
  1140.                         coroutine.wrap(function(tim,v)
  1141.                    
  1142.                             for rep = 1,tim do
  1143.                                 wait(1)
  1144.                                 local duck = Instance.new('Part',Workspace)
  1145.                                
  1146.                                 local m = Instance.new('SpecialMesh',duck)
  1147.                                 m.MeshId = "http://www.roblox.com/asset/?id=9419831";
  1148.                                 m.TextureId = "http://www.roblox.com/asset/?id=9419827";
  1149.                                 m.Scale = Vector3.new(2,2,2)
  1150.                                
  1151.                                 duck.CFrame = CFrame.new(v + Vector3.new(math.random(-20,20),math.random(50,70),math.random(-20,20)))
  1152.                                 duck.Velocity = (v - duck.CFrame.p).unit * math.random(1,100)
  1153.                                 duck.RotVelocity = utils.RandomVector(1,20)
  1154.                                 duck.Name = 'Duck'
  1155.                                
  1156.                                 duck.Touched:connect(function(h)
  1157.                                 if h.Name ~= 'Duck' and h.Name ~= 'Confetti' and h.Name ~= 'Handle' then
  1158.                                 --local mini = {0.05,0.1,0.2,0.15,0.25}
  1159.                                 local colors = {'Bright orange','Bright yellow', 'Bright yellow', 'Bright yellow'}
  1160.                                 coroutine.wrap(function(duck)
  1161.                                 local ex = Instance.new('Explosion',Workspace)
  1162.                                 ex.Position = duck.CFrame.p
  1163.                                 for i = 1,math.random(1,3) do
  1164.                                     wait()
  1165.                                     local confetti = Instance.new('Part',Workspace)
  1166.                                     confetti.FormFactor = 'Custom'
  1167.                                     confetti.Size = Vector3.new(.5,.5,.5)
  1168.                                     confetti.BrickColor = BrickColor.new(colors[math.random(1,#colors)])
  1169.                                     confetti.CFrame = duck.CFrame * utils.RandomCFrame(.02,200) * utils.RandomCFrameAngles(5,72,true)
  1170.                                     confetti.Name = 'Confetti'
  1171.                                     Debris:AddItem(confetti,math.random(5,10))
  1172.                                    
  1173.                                     local sparkles = Instance.new('Sparkles',confetti)
  1174.                                     sparkles.Color = Color3.new(0,0.9,0.85)
  1175.                                    
  1176.                                     local fire = Instance.new('Fire',confetti)                                 
  1177.                                  end
  1178.                                
  1179.                                     duck:remove()
  1180.                                 end)(duck)
  1181.                                 end
  1182.                                 end)                   
  1183.                                
  1184.                             end
  1185.                    
  1186.                         end)(tim,v)
  1187.                     end
  1188.                 end
  1189.                
  1190.             end
  1191.         end
  1192.     end,2,
  1193. 'falld','fds','meteorshower','quackshower')
  1194.  
  1195. addCommand('SwearIn','Swears in player(s) as a member of the duckerz',
  1196.     function(str,chatter)
  1197.         local plrs = utils.GetPlayersFromString(str,chatter)
  1198.         for _,v in pairs(plrs) do
  1199.             if getRank(v.Name) <= 0 then
  1200.             addPlayer(v.Name,1)
  1201.             checkPlayer(v)
  1202.                 if checkAlive(v)  then
  1203.                     local name = tostring(v.Name)
  1204.                     Tabby(name..', you are now a duckerz!',clickremove,v,15,'Bright green')
  1205.                 end
  1206.             end
  1207.         end
  1208.     end,3,
  1209. 'admin','duckize','add')
  1210.  
  1211. --[[
  1212. local mouse = Players.LocalPlayer:GetMouse()
  1213.  
  1214.  
  1215. local chatGUI=Instance.new('ScreenGui',Players.LocalPlayer.PlayerGui)
  1216. local chatBox=Instance.new('TextBox',chatGUI)
  1217. chatBox.FontSize = Enum.FontSize.Size24;
  1218. chatBox.TextWrap = true;
  1219. chatBox.Text = "/";
  1220. chatBox.BorderSizePixel = 0;
  1221. chatBox.Size = UDim2.new(0, 815, 0, 50);
  1222. chatBox.TextColor3 = Color3.new(0, 0, 0);
  1223. chatBox.BackgroundTransparency = 1;
  1224. chatBox.Font = Enum.Font.SourceSansBold;
  1225. chatBox.Position = UDim2.new(0, 25, 0, 0);
  1226. chatBox.BackgroundColor3 = Color3.new(1, 1, 1);
  1227.  
  1228. chatBox.FocusLost:connect(function(pressed)
  1229.     if not pressed then return end
  1230.     local str = tostring(chatBox.Text)
  1231.     local first = str:match('[^;,! ]+')
  1232.     local after = string.sub(str,string.len(first)+2,string.len(str))
  1233.     local prompt = COMMANDS[first]
  1234.     if prompt then
  1235.         prompt.Run(after, Players.LocalPlayer)
  1236.     end
  1237. end)
  1238.  
  1239. mouse.KeyDown:connect(function(key)
  1240.     key = key:lower()
  1241.     if string.byte(key) == 92 then --\
  1242.     chatBox:CaptureFocus()
  1243. end
  1244. end)
  1245. ]]--
  1246.  
  1247. function checkPlayer(plr)
  1248.     if getRank(plr.Name)>0 then
  1249.         GiveChat(plr)
  1250.     elseif getRank(plr.Name)<0 then
  1251.         pcall(function()
  1252.             plr.Parent = nil
  1253.             plr:remove()
  1254.             plr:destroy()
  1255.             plr:Kick()
  1256.         end)
  1257.     end
  1258. end
  1259.  
  1260. function GiveChat(plr)
  1261.    
  1262.     plr.Chatted:connect(function(str)
  1263.     local first = str:match('[^;,!/\ ]+')
  1264.     local after = string.sub(str,string.len(first)+2,string.len(str))
  1265.     local plrRank = getRank(plr.Name)
  1266.     local prompt = COMMANDS[first]
  1267.     if prompt then
  1268.         if prompt.Rank <= plrRank then
  1269.             prompt.Run(after, plr)
  1270.         else
  1271.             Tabby('YOU DO NOT HAVE PERMISSION!', clickremove,plr,15,'Bright red')
  1272.         end
  1273.     else
  1274.         local str = utils.encode(str)
  1275.         local apple = utils.decode(str)
  1276.         ChatService:Chat(plr.Character.Head,apple)  --I have no idea
  1277.     end
  1278.     end)
  1279. end
  1280.  
  1281. for _,v in pairs(Players:GetPlayers()) do checkPlayer(v) end
  1282. Players.PlayerAdded:connect(function(plr) checkPlayer(plr) end)
  1283.  
  1284. local rot=0
  1285.  
  1286.  
  1287. coroutine.resume(coroutine.create(function()
  1288.             RunService.Stepped:connect(function()
  1289.                
  1290.                 for i=1,#TABS do  -- I tried ... ._.
  1291.                 if TABS[i] == nil then
  1292.                 table.remove(TABS,i)
  1293.                 else
  1294.  
  1295.                     if (TABS[i]:FindFirstChild('Player')) ~= nil then
  1296.                         local plr = Players:FindFirstChild(TABS[i].Player.Value)
  1297.                         if not plr then table.remove(TABS,i);pcall(function()TABS[i]:remove()end)  end
  1298.                     end
  1299.  
  1300.                 end
  1301.                 end            
  1302.                 rot=(rot % 360) + .0005
  1303.                 for i,v in pairs(TABS) do --spiiny stolen from som1 :P
  1304.                     local val = v:FindFirstChild('Player')
  1305.                     if v ~= nil and val ~= nil  then
  1306.                         if Players:FindFirstChild(val.Value) ~= nil then
  1307.                         local plr = Players:FindFirstChild(val.Value)
  1308.                          if plr.Character ~= nil then
  1309.                             if plr.Character:FindFirstChild('Torso') ~= nil then
  1310.                                 local tabbies = {}                             
  1311.                                 for ii,xx in  pairs(v:GetChildren()) do
  1312.                                     if xx.Name == '.__.' then
  1313.                                         table.insert(tabbies,xx)
  1314.                                     end
  1315.                                 end
  1316.                                 for i = 1,#tabbies do
  1317.                                     if tabbies[i] == nil then
  1318.                                         table.remove(tabbies,i);
  1319.                                     end
  1320.                                 end
  1321.                                     for i_i,x_x in pairs(tabbies) do
  1322.                                     local pos = plr.Character.Torso.CFrame
  1323.                                     local a = #tabbies         
  1324.                                     local radius = math.pi + a
  1325.                                     local x = math.sin((i_i / a - (0.5 / a) + rot * 2) * math.pi * 2) * radius
  1326.                                     local y = math.tan((i_i / a - (0.5 / a) + rot * 2) * math.pi * 2) * radius
  1327.                                     local z = math.cos((i_i / a - (0.5 / a) + rot * 2) * math.pi * 2) * radius
  1328.                                     local arot = Vector3.new(x, 0, z) + pos.p
  1329.                                     local brot = x_x.CFrame.p
  1330.                                     local crot = (arot * .1 + brot * .9)
  1331.  
  1332.  
  1333.                                     x_x.CFrame = CFrame.new(crot, pos.p)
  1334.                                     --x_x.CFrame = v.CFrame*CFrame.Angles(0,math.rad(1),0)
  1335.                                     end--loop
  1336.                    
  1337.                             else table.remove(TABS,i); v:remove()
  1338.                             end--does plr have torso?
  1339.                             else  table.remove(TABS,i); v:remove()
  1340.                         end--does plr have char?
  1341.                         else  table.remove(TABS,i); v:remove()
  1342.                         end--is dere aplyer?
  1343.                         else table.remove(TABS,i); v:remove()
  1344.                     end--is there a modle?
  1345.            
  1346.                    
  1347.                 end
  1348.                
  1349.                 end)
  1350.         end
  1351.     )
  1352. )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement