For some reason, my gun doesnt shoot anymore. Back then it was working perfectly fine! CODE:
--MADE BY MR_UNLUCKY
local tool = script.Parent
local player = game:GetService("Players").LocalPlayer
local Reload = tool.Reload
local Shoot = tool.Shot
local GUI = tool.ScreenGui
local damageBODY = 10
local damageHEAD = 30
local Equip = tool.Equip
local bullets = 15
local Players = game:GetService("Players")
local mouse = game.Players.LocalPlayer:GetMouse()
local clips = 3
tool.Equipped:connect(function(mouse)
print("Tool equipped!")
local newGUI = GUI:Clone()
newGUI.Parent = Players.LocalPlayer.PlayerGui
Players.LocalPlayer.PlayerGui.ScreenGui.Frame.Bullets.Text = "Bullets:"..bullets..""
Players.LocalPlayer.PlayerGui.ScreenGui.Frame.GunName.Text = tool.Name
mouse.Icon = "rbxassetid://936803874" --the image id of the decal is 936803874
mouse.Button1Down:connect(function()
if bullets <= 0 and clips >= 1 then
Reload:Play()
mouse.Icon = "rbxassetid://43557167" --the image id of the decal is 43557167
Players.LocalPlayer.PlayerGui.ScreenGui.Frame.Bullets.Text = "RELOADING"
wait(3.2)
bullets = 15
Players.LocalPlayer.PlayerGui.ScreenGui.Frame.Bullets.Text = ""..bullets.."/"..clips..""
mouse.Icon = "rbxassetid://936803887" --the image id of the decal is 936803887
clips = clips - 1
elseif clips == not 0 then
print("Mouse pressed!")
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("Medium stone grey")
beam.FormFactor = "Custom"
beam.Material = "Metal"
beam.Transparency = 0.25
beam.Anchored = true
beam.Locked = true
beam.CanCollide = false
bullets = bullets - 1
print(bullets)
local distance = (tool.Handle.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)
Shoot:Play()
game:GetService("Debris"):AddItem(beam, 0.1)
Players.LocalPlayer.PlayerGui.ScreenGui.Frame.Bullets.Text = ""..bullets.."/"..clips..""
if part then
local rightLeg = part.Parent:FindFirstChild("RightLeg")
local leftLeg = part.Parent:FindFirstChild("LeftLeg")
local rightArm = part.Parent:FindFirstChild("RightArm")
local leftArm = part.Parent:FindFirstChild("LeftArm")
local torso = part.Parent:FindFirstChild("Torso")
local head = part.Parent:FindFirstChild("Head")
local humanoid = part.Parent:FindFirstChild("Humanoid")
if not rightLeg or leftLeg or rightArm or leftArm or torso or head then
local rightLeg = part.Parent:FindFirstChild("RightLeg")
local leftLeg = part.Parent:FindFirstChild("LeftLeg")
local rightArm = part.Parent:FindFirstChild("RightArm")
local leftArm = part.Parent:FindFirstChild("LeftArm")
local torso = part.Parent:FindFirstChild("Torso")
local head = part.Parent:FindFirstChild("Head")
end
if rightLeg or leftLeg or rightArm or leftArm or torso then
humanoid:TakeDamage(damageBODY)
end
if head then
humanoid:TakeDamage(damageHEAD)
end
end
tool.Unequipped:connect(function(mouse)
Players.LocalPlayer.PlayerGui.ScreenGui:Destroy()
end)
end)
end)

3 comments
I question, why use Players.LocalPlayer when you already have the variable "player"?
Try connect like this: Connect. I had a problem like this before and the capital 'C' helped me.
rewrite the script and separate the functions