Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Gun Wont Reload Can I have Help?

Asked by 7 years ago
-- Script Made By johndeer2233 For A Application To Make A Game
local plr = game.Players.LocalPlayer
local Gun = script.Parent
local Ammo = 5
local AmmoGui = plr.PlayerGui:WaitForChild("Ammo")
local AmmoL = AmmoGui:WaitForChild("AmmoL")
local mouse = plr:GetMouse()
local function shoot()
            -- Creating The Bullet
                local bullet = Instance.new("Part",game.workspace)
                    bullet.Shape = "Ball"
                    bullet.Size = Vector3.new(2,2,2)
                    bullet.TopSurface = "Smooth"
                    bullet.BottomSurface = "Smooth"
                    bullet.BrickColor = BrickColor.new("Really Black")
                    bullet.CanCollide = false
                    bullet.Anchored = false
                    --CFrame Stuff
                    bullet.CFrame = Gun.Handle.CFrame 
                    bullet.CFrame = CFrame.new(bullet.Position,mouse.Hit.p)
                    --body velocity 
                    local v = Instance.new("BodyVelocity",bullet)
                    v.velocity = bullet.CFrame.lookVector * 90
                    v.MaxForce = Vector3.new(math.huge,math.huge,math.huge)
                    game.Debris:AddItem(bullet, 5)
                -- Making Sure you lose 1 Ammo everytime you shoot.
                Ammo = Ammo - 1
end
local function reload()
    repeat 
        wait(1)
        Ammo = Ammo + 1
    until Ammo == 5
end
script.Parent.Equipped:connect(function()
    AmmoGui.Enabled = true
    AmmoL.Text = "Ammo: "..Ammo
    wait(1)
    AmmoL.Visible = true
end)
script.Parent.Unequipped:connect(function()
    AmmoGui.Enabled = false
    AmmoL.Visible = false
end)
script.Parent.Activated:connect(function()
        if Ammo > 0 then
            shoot()
    end
end)

while wait() do
        AmmoL.Text = "Ammo: "..Ammo
end
while wait() do
if Ammo == 0 then
    reload()
    end
end

No error in output my gun won't reload. Help?

1 answer

Log in to vote
0
Answered by
Goulstem 8144 Badge of Merit Moderation Voter Administrator Community Moderator
7 years ago
Edited 7 years ago

Your infinite loop on line 51 is stopping the reloading loop from ever being read. But really, you should check if the gun needs to reload after firing.

Line 33;

local plr = game.Players.LocalPlayer
local Gun = script.Parent
local Ammo = 5
local AmmoGui = plr.PlayerGui:WaitForChild("Ammo")
local AmmoL = AmmoGui:WaitForChild("AmmoL")
local mouse = plr:GetMouse()

function reload()
    repeat wait(1) Ammo = Ammo + 1
    until Ammo == 5
end

function shoot()
    -- Creating The Bullet
    local bullet = Instance.new("Part",game.workspace)
    bullet.Shape = "Ball"
    bullet.Size = Vector3.new(2,2,2)
    bullet.TopSurface = "Smooth"
    bullet.BottomSurface = "Smooth"
    bullet.BrickColor = BrickColor.new("Really Black")
    bullet.CanCollide = false
    bullet.Anchored = false
     --CFrame Stuff
    bullet.CFrame = Gun.Handle.CFrame 
     bullet.CFrame = CFrame.new(bullet.Position,mouse.Hit.p)
    --BodyVelocity 
    local v = Instance.new("BodyVelocity",bullet)
    v.velocity = bullet.CFrame.lookVector * 90
    v.MaxForce = Vector3.new(math.huge,math.huge,math.huge)
    game.Debris:AddItem(bullet, 5)
    -- Making Sure you lose 1 Ammo everytime you shoot.
    Ammo = Ammo - 1
    -- Check if you need to reload
    if Ammo == 0 then
        reload();
    end
end

script.Parent.Equipped:connect(function()
    AmmoGui.Enabled = true
    AmmoL.Text = "Ammo: "..Ammo
    wait(1)
    AmmoL.Visible = true
end)

script.Parent.Unequipped:connect(function()
    AmmoGui.Enabled = false
    AmmoL.Visible = false
end)

script.Parent.Activated:connect(function()
    shoot()
end)

while wait() do
    AmmoL.Text = "Ammo: "..Ammo
end
0
Ha I didnt give you the whole script lol I closed them on my end imm sorry johndeer2233 439 — 7y
Ad

Answer this question