So i am trying to make a reload system for a gun im making, but when ever i reach 30, the mag falls out, but a new one doesn't spawn back in. Why? Here is the script.
local tool = script.Parent
local player = game:GetService("Players").LocalPlayer
local sound = script.Parent.Handle.shot
local shooting = false
local ammo = 30
local equipped = false
local mouseConnection
tool.Equipped:Connect(function(mouse)
equipped = true
mouseConnection = mouse.Button1Down:Connect(function()
shooting = true
while shooting and equipped do
ammo = ammo - 1
print(ammo)
if ammo < 1 then
for i, v in pairs(script.Parent.Muzzel:GetChildren()) do
v.Destroy()
end
tool.Muzzel:Clone()
local Muzzel = tool.Muzzel:Clone()
Muzzel.Parent = tool
Muzzel.Name = "Muzzel"
Muzzel.Position = game.Muzzel.Position
end
print("Mouse pressed!")
sound:Play()
local ray = Ray.new(tool.Muzzel.CFrame.p, (mouse.Hit.p - tool.Muzzel.CFrame.p).unit * 300)
local part, position = workspace:FindPartOnRay(ray, player.Character, false, true)
local beam = Instance.new("Part", workspace)
beam.BrickColor = BrickColor.new("Neon orange")
beam.FormFactor = "Custom"
beam.Material = "Neon"
beam.Transparency = 0.25
beam.Anchored = true
beam.Locked = true
beam.CanCollide = false
local distance = (tool.Muzzel.CFrame.p - position).magnitude
beam.Size = Vector3.new(0.3, 0.3, distance)
beam.CFrame = CFrame.new(tool.Muzzel.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(30)
end
end
mouse.Button1Up:Connect(function()
shooting = false
end)
wait(0.1)
end
end)
end)
tool.Unequipped:Connect(function()
equipped = false
mouseConnection:Disconnect()
end)
