I've been trying to figure out why my tool that shoots raycast isn't firing correctly for other players, but fires correctly for me. Is there anything wrong with this, or is it just set up incorrectly?

function Fire(TargetPos)
	coroutine.resume(coroutine.create(function()
	if game.Players.LocalPlayer.Character["Humanoid"].Health > 0 then
	--coroutine.resume(coroutine.create(function()
	if Reloading == false and Ammo > 0 then
	
	local RotX = (math.random(-(AccuricyRange * 5), (AccuricyRange * 5)) * 0.1)
	local RotY = (math.random(-(AccuricyRange * 5), (AccuricyRange * 5)) * 0.1)
	local DirectionCF = CFrame.new(Barrel.Position, TargetPos) * CFrame.Angles(math.rad(RotX), math.rad(RotY), 0)
	local Dist = 1000
	local Ray = Ray.new(Barrel.Position, (DirectionCF * CFrame.new(0, 0, -1000)).p - Barrel.Position)
	local Hit, Pos = game.Workspace:FindPartOnRay(Ray, game.Players.LocalPlayer.Character)
	if Hit ~= nil then
		Dist = (Pos - Barrel.Position).magnitude
		local Human = nil
		if Hit.Parent:findFirstChild("Humanoid") then
			Human = Hit.Parent["Humanoid"]
		elseif Hit.Parent.Parent:findFirstChild("Humanoid") then
			Human = Hit.Parent.Parent["Humanoid"]
		end
		if Human ~= nil then
			coroutine.resume(coroutine.create(function()
			local BulletBlocked = false
			local BlockedBySaber = TestForLightsaber(Human, DirectionCF.p, Pos)
			if BlockedBySaber == true then
				BulletBlocked = true
			end
			if BulletBlocked == false then
				local EPlayer = game.Players:GetPlayerFromCharacter(Human.Parent)
				local DamageHuman = true
				if EPlayer ~= nil then
					if EPlayer.TeamColor == game.Players.LocalPlayer.TeamColor and TeamKill == false then
						DamageHuman = false
					end
				end
				--wait(0.01)
				if DamageHuman == true and Human.Parent:findFirstChild("ForceField") == nil then
					Human.Health = Human.Health - (math.random((Damage - DamageRange) * 10, (Damage + DamageRange) * 10) * 0.1)
					if Human.Health <= 0 then
						if Human:findFirstChild("creator") == nil then
							local CreatorValue = Instance.new("ObjectValue", Human)
							CreatorValue.Name = "creator"
							CreatorValue.Value = game.Players.LocalPlayer
						end
					end
				end
			end
			end))
		end
	end
	
	coroutine.resume(coroutine.create(function()
	Bullet.CFrame = DirectionCF
	script.Parent["Handle"]["Fire"]:Play()
	Barrel["PointLight"].Enabled = true
	if BulletColor == nil then
	Bullet.BrickColor = game.Players.LocalPlayer.TeamColor
	else
	Bullet.BrickColor = BulletColor
	end
	Barrel["PointLight"].Color = Bullet.BrickColor.Color
	Bullet.Transparency = 0.2
	wait(0.03)
	Bullet.Transparency = 1
	Barrel["Flash"]["Flash"].Visible = false
	Barrel["PointLight"].Enabled = false
	end))
	
	BulletMesh.Scale = Vector3.new(0.25, 0.25, Dist)
	BulletMesh.Offset = Vector3.new(0, 0, -(Dist / 2))
	
	end
	--end))
	end
	end))
end