I made a gun script that only fires one bullet per click, how would I change it so that it would be automatic(meaning that i can hold the fire button to make it shoot automatically)
local Player = game.Players.LocalPlayer local Character = Player.Character or Player.CharacterAdded:wait() local Camera = workspace.CurrentCamera local tool = script.Parent local player = game:GetService("Players").LocalPlayer local Ammo = script.Parent:WaitForChild("Ammo") tool.Equipped:connect(function(mouse) print("Tool equipped!") holdanim = player.Character.Humanoid:LoadAnimation(script.Parent.HoldAnim) reloadanim = player.Character.Humanoid:LoadAnimation(script.Parent.ReloadAnim) mouse.Button1Down:connect(function() if Ammo.Value >= 1 then print("Mouse pressed!") Ammo.Value = Ammo.Value - 1 print(Ammo.Value) script.Parent.Handle.Fire:Play() local ray = Ray.new(tool.Handle.CFrame.p, (mouse.Hit.p - tool.Handle.CFrame.p).unit * 300) local part, position = workspace:FindPartOnRay(ray, player.Character, false, true) local beam = Instance.new("Part", workspace) beam.BrickColor = BrickColor.new("Gold") beam.FormFactor = "Custom" beam.Material = "Neon" beam.Transparency = 0.99 beam.Anchored = true beam.Locked = true beam.CanCollide = false local distance = (tool.Main.CFrame.p - position).magnitude beam.Size = Vector3.new(0.3, 0.3, distance) beam.CFrame = CFrame.new(tool.Handle.CFrame.p, position) * CFrame.new(0, 0, -distance / 2) game:GetService("Debris"):AddItem(beam, 0.1) if part then local humanoid = part.Parent:FindFirstChild("Humanoid") if not humanoid then humanoid = part.Parent.Parent:FindFirstChild("Humanoid") end if humanoid then humanoid:TakeDamage(math.random(10,30)) end end end end) end) local Player = game.Players.LocalPlayer local action_reload = false Mouse = Player:GetMouse() Mouse.KeyDown:connect(function(Key) if(Key:lower() == "r") and Ammo.Value < 7 and action_reload == false then action_reload = true script.Parent.Handle.Reload:Play() reloadanim.Looped = false reloadanim:Play() wait(2) Ammo.Value = 7 print(Ammo.Value) action_reload = false end end) function onEquipped() holdanim:Play() end script.Parent.Equipped:connect(onEquipped()) mouse = Player:GetMouse() action_aim = false mouse.Button1Down:connect(function() if action_aim == false and action_reload == false then action_aim = true print("trying to aim") repeat wait() Camera.CameraType = Enum.CameraType.Scriptable until Camera.CameraType == Enum.CameraType.Scriptable Camera.CFrame = script.Parent.AimPart.CFrame print("aiming") end end)
If your gun is automatic, add a Mouse_Held = true when mouse.Button1Down and Mouse_Held = false when mouse.Button1Up.
local FireRate = 0.1 -- high value = slow firerate, low value = faster firerate mouse.Button1Down:connect(function() if Ammo.Value >= 1 then print("Mouse pressed!") Ammo.Value = Ammo.Value - 1 print(Ammo.Value) script.Parent.Handle.Fire:Play() local ray = Ray.new(tool.Handle.CFrame.p, (mouse.Hit.p - tool.Handle.CFrame.p).unit * 300) local part, position = workspace:FindPartOnRay(ray, player.Character, false, true) local beam = Instance.new("Part", workspace) beam.BrickColor = BrickColor.new("Gold") beam.FormFactor = "Custom" beam.Material = "Neon" beam.Transparency = 0.99 beam.Anchored = true beam.Locked = true beam.CanCollide = false local distance = (tool.Main.CFrame.p - position).magnitude beam.Size = Vector3.new(0.3, 0.3, distance) beam.CFrame = CFrame.new(tool.Handle.CFrame.p, position) * CFrame.new(0, 0, -distance / 2) game:GetService("Debris"):AddItem(beam, 0.1) if part then local humanoid = part.Parent:FindFirstChild("Humanoid") if not humanoid then humanoid = part.Parent.Parent:FindFirstChild("Humanoid") end if humanoid then humanoid:TakeDamage(math.random(10,30)) end end end end) wait(FireRate)-- wait this amount of seconds before it can fire again end)`