local tool = script.Parent
local player = game:GetService("Players").LocalPlayer
local ammo = 8
local isReload = false
local mouse = game.Players.LocalPlayer:GetMouse()
local maxAmmo = 8
local ammoGUI = player.PlayerGui:FindFirstChild("Ammo")
repeat wait() until ammoGUI
local GUI = ammoGUI.Background.Frame
repeat wait() until GUI


function reload(amount) --function to avoid retyping
	tool.Name = "Reloading"
	isReload = true
	mouse.Icon = "rbxgameasset://Images/GunWaitCursor"
	wait(2)
	ammo = amount
	GUI.Ammo.Text = ammo
	--tool.Name = "Pistol " .. tostring(ammo)
	isReload = false
	mouse.Icon = "rbxgameasset://Images/GunCursor"
end


tool.Equipped:connect(function(mouse)
	print("Pistol Equipped")
	mouse.Icon = "rbxgameasset://Images/GunCursor"
	GUI.MaxAmmo.Text = maxAmmo
	game:GetService('UserInputService').InputBegan:connect(function(input, gameprocessed)
		if input.KeyCode == Enum.KeyCode.R then
			reload(8)
		end
	end)
    mouse.Button1Down:connect(function()
	print("Mouse Clicked")
    if (not isReload) and ammo > 0 then --if Player is not reloading
            ammo = ammo - 1
			GUI.Ammo.Text = ammo
			--tool.Name = "Pistol " ..tostring(ammo)  
            local ray = Ray.new(tool.Handle.CFrame.p, (mouse.Hit.p - tool.Handle.CFrame.p).unit * 200)
            local part, position = workspace:FindPartOnRay(ray, player.Character, false, true)

			local beam = Instance.new("Part", workspace)
            beam.BrickColor = BrickColor.new("Gray")
            beam.FormFactor = "Custom"
            beam.Material = "Neon"
            beam.Transparency = 0
            beam.Anchored = true
            beam.Locked = true
            beam.CanCollide = false

			local light = Instance.new("PointLight", beam)
			light.Range = 15

            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)

            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
				
				repeat wait() until humanoid
				local att = humanoid.Parent.Name
				local a = game.Players:FindFirstChild(att)	

				
                if humanoid then  
					if player.TeamColor ~= a.TeamColor then --anti teamkill start
                    	humanoid:TakeDamage(30)
					end
                end

				if ammo == 0 then
					reload(8)
				end
       		 end
    	else
       		reload(8)
   		end
    end)
	tool.Unequipped:connect(function()
		print("Pistol Unequipped")
		mouse.Icon = "rbxgameasset://Images/ArrowCursor"
	end)
end)

It keeps saying the variable Ammo GUI is a nil value. It's placed inside of the starterGUI but I want the GUI to be different for every player.