JuicyPenguin

Gun script

May 6th, 2015
315
-1
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. local plr = game.Players.LocalPlayer
  2. local char = plr.Character
  3. local mouse = plr:GetMouse()
  4. local torso = char.Torso
  5. local head = char.Head
  6. local ra = char["Right Arm"]
  7. local la = char["Left Arm"]
  8. local rl = char["Right Leg"]
  9. local ll = char["Left Leg"]
  10. local human = char["Humanoid"]
  11. local camera = workspace.CurrentCamera
  12. local rs = torso:findFirstChild("Right Shoulder")
  13. local ls = torso:findFirstChild("Left Shoulder")
  14. local neck = torso:findFirstChild("Neck")
  15. local NO_moar_shooting = false
  16. local RunService = game:service'RunService'
  17. local ammo = 8
  18.  
  19.  
  20. local sound = Instance.new("Sound", head)
  21. sound.SoundId = "http://roblox.com/asset/?id=10209842"
  22. sound.Volume = 1
  23. local reloads = Instance.new("Sound", head)
  24. reloads.SoundId = "http://roblox.com/asset/?id=10209636"
  25. reloads.Volume = 1
  26. local activate = Instance.new("Sound", head)
  27. activate.SoundId = "http://roblox.com/asset/?id=10209894"
  28. activate.Volume = 1
  29.  
  30.  
  31. local equipped = false
  32.  
  33. local debounce = false
  34.  
  35. local face = head.face
  36.  
  37.  
  38. release = Instance.new("Part", nil)
  39. release.FormFactor = "Custom"
  40. release.Size = Vector3.new(0.3, 1.7, 0.3)
  41. release.BrickColor = BrickColor.Black()
  42. local weld = Instance.new("Weld", release)
  43. weld.Part0 = release
  44. weld.Part1 = head
  45. weld.C0 = CFrame.new(0, -0.5, -0.2) * CFrame.Angles(math.pi/2, 0, 0)
  46. local mesh = Instance.new("CylinderMesh", release)
  47.  
  48. release2 = Instance.new("Part", nil)
  49. release2.FormFactor = "Custom"
  50. release2.Size = Vector3.new(0.2, 1.4, 0.2)
  51. release2.BrickColor = BrickColor.Black()
  52. local weld2 = Instance.new("Weld", release2)
  53. weld2.Part0 = release2
  54. weld2.Part1 = head
  55. weld2.C0 = CFrame.new(0, -0.5, 0) * CFrame.Angles(math.pi/2, 0, 0)
  56. local mesh2 = Instance.new("CylinderMesh", release2)
  57.  
  58. headext = Instance.new("Part", nil)
  59. headext.Position = torso.Position
  60. headext.FormFactor = "Custom"
  61. headext.Transparency = 1
  62. headext:BreakJoints()
  63. headext.Size = Vector3.new(2, 1, 1)
  64. headextw = Instance.new("Weld", headext)
  65. headextw.C0 = CFrame.new(Vector3.new(0, 1.5, 0))
  66. headextw.Part0 = torso
  67. headextw.Part1 = headext
  68. headextw.C1 = CFrame.new()
  69. headweld = Instance.new("Weld", headext)
  70. game:service("RunService").Stepped:connect(function()
  71.            headweld.C0 = CFrame.new(Vector3.new(0,0,0), torso.CFrame:pointToObjectSpace(mouse.Hit.p)) * CFrame.Angles(0, 0, 0)
  72. end)
  73. headweld.Part0 = headext
  74. headweld.C1 = CFrame.new()
  75. headweld.Part1 = head
  76.  
  77. local Screen = Instance.new("ScreenGui", plr:findFirstChild("PlayerGui"))
  78. local TextBox = Instance.new("TextLabel", Screen)
  79. TextBox.Position = UDim2.new(0.1, 0, 0.95, 0)
  80. TextBox.Size = UDim2.new(0, 200, 0.05, 0)
  81. TextBox.BackgroundTransparency = 1
  82. game:service'RunService'.Stepped:connect(function()
  83. TextBox.Text = ("Ammo: "..ammo)
  84. end)
  85. TextBox.Font = "SourceSansBold"
  86. TextBox.TextColor3 = Color3.new(1, 1, 1)
  87. TextBox.FontSize = "Size36"
  88. TextBox.TextStrokeTransparency = 0
  89.  
  90. local pl = Instance.new("PointLight", release)
  91. pl.Range = 16
  92. pl.Brightness = 5
  93. pl.Color = Color3.new(1, 199/255, 67/255)
  94. pl.Enabled = false
  95. function reload()
  96.     for i = ammo, 8 do
  97.         reloads:play()
  98.         ammo = i
  99.         wait(0.5)
  100.     end
  101.     wait(0.1)
  102.     activate:play()
  103.     debounce = false
  104. end
  105.  
  106. mouse.KeyDown:connect(function(key)
  107.     if key == "r" then
  108.         if debounce then return end
  109.         if not equipped then return end
  110.         if ammo > 7 then return end
  111.         debounce = true
  112.         reload()
  113.     end
  114.    
  115.     if key == "q" then
  116.         equipped = not equipped
  117.         if equipped then
  118.             headext.Parent = char
  119.             release.Parent = char
  120.             release2.Parent = char
  121.             face.Parent = nil
  122.             for scale = 0, 1, 0.2 do
  123.                 weld2.C0 = CFrame.new(0, -scale + 0.5, 0) * CFrame.Angles(math.pi/2, 0, 0)
  124.                 weld.C0 = CFrame.new(0, -scale + 0.5, -0.2) * CFrame.Angles(math.pi/2, 0, 0)
  125.                 mesh.Scale = Vector3.new(1, scale, 1)
  126.                 mesh2.Scale = Vector3.new(1, scale, 1)
  127.                 wait()
  128.                 end
  129.         else
  130.             face.Parent = head
  131.             release.Parent = nil
  132.             release2.Parent = nil
  133.             headext.Parent = nil
  134.         end
  135.     end
  136. end)
  137.  
  138. mouse.Button1Down:connect(function()
  139.     if not equipped then return end
  140.     if ammo < 1 then return end
  141.             if debounce then return end
  142.             debounce = true
  143.             sound:play()
  144.             pl.Enabled = true
  145.             ammo = ammo - 1
  146.             coroutine.wrap(function()
  147.                 wait(0.07)
  148.                 pl.Enabled = false
  149.                 end)()
  150.             coroutine.wrap(function()
  151.                 for scale = 0.7, 1, 0.1 do
  152.                     mesh.Scale = Vector3.new(1, scale, 1)
  153.                     wait()
  154.                 end
  155.             end)()
  156.            
  157.             for bullet = 0, 5 do
  158.                 coroutine.wrap(function()
  159.     if char.Humanoid.Health < 1 then return end
  160.     local rayPart         = Instance.new("Part", char)
  161.     rayPart.Name          = "RayPart"
  162.     rayPart.BrickColor    = BrickColor.Yellow()
  163.     rayPart.Anchored      = true
  164.     rayPart.CanCollide    = false
  165.     rayPart.TopSurface    = Enum.SurfaceType.Smooth
  166.     rayPart.BottomSurface = Enum.SurfaceType.Smooth
  167.     rayPart.formFactor    = Enum.FormFactor.Custom
  168.     rayPart.Size          = Vector3.new(0.2, 0.2, 4)
  169. Instance.new("BlockMesh", rayPart).Scale = Vector3.new(0.2, 0.2, 0.5)
  170.    
  171.    
  172.    
  173.     local bulletposition = release.Position
  174.    local bulletvelocity = (Vector3.new(math.random(-7,7), math.random(-7,7), math.random(-7,7)))+( mouse.Hit.p - bulletposition).unit*150
  175.     local bulletlastposition = bulletposition
  176.     rayPart.CFrame = CFrame.new( bulletposition, bulletposition+bulletvelocity )
  177.  
  178.  
  179.  
  180.  
  181.    
  182.     coroutine.resume(coroutine.create(function()
  183.         while true do
  184.             local dt = wait()
  185.             bulletlastposition = bulletposition
  186.             bulletvelocity = bulletvelocity + (Vector3.new(0, -9.81*10, 0)*dt)
  187.             bulletposition = bulletposition + (bulletvelocity*dt)
  188.                
  189.             local ray = Ray.new(bulletlastposition,  (bulletposition - bulletlastposition))
  190.             local hit, hitposition = workspace:FindPartOnRayWithIgnoreList( ray, { char, rayPart} )
  191.                
  192.     if (torso.Position - rayPart.Position).magnitude > 440 then
  193.         rayPart:Destroy()
  194.      break
  195.      end
  196.    
  197.    
  198.             if hit then
  199.                 if hit.Parent:findFirstChild("Humanoid") ~= nil then
  200.                     hit.Parent.Humanoid.Health = hit.Parent.Humanoid.Health - math.random(6, 9)
  201.                 end
  202.                 if hit.Parent:IsA("Hat") and hit.Parent.Parent:findFirstChild("Humanoid") ~= nil then
  203.                     hit.Parent.Parent.Humanoid.Health = hit.Parent.Parent.Humanoid.Health - math.random(6, 9)
  204.                     end
  205.                 bulletposition = hitposition
  206.                 rayPart.CFrame = CFrame.new(bulletposition, bulletposition+bulletvelocity)
  207.                 rayPart:Destroy()
  208.                 break
  209.             end
  210.             rayPart.CFrame = CFrame.new(bulletposition, bulletposition+bulletvelocity)
  211.         end
  212.     end))
  213.                 end)()
  214.                 end
  215.         wait(0.5)
  216.             debounce = false
  217.        
  218. end)
Add Comment
Please, Sign In to add comment