This is a local script and thought it would only be seen locally with the gui indication parented to the Starter Gui so its on the screen all the time, only appears when i damage other players. Somehow, when players damage someone, I can see their damage and I do not want that. If there were multiple people attacking each other and on my screen i see numbers jumbled up and I don't want this. I want it to appear to the humanoid damage when I damage the player. Pretty sure it has something to do with humanoid track and detect specifically if they are target by a player and giving them only the value damage to that local player, but not sure if that's how it works or I don't know how to fix that. Made it so the label follows the mouse, which i tweaked that, the rest I didn't made it, so don't get mad at me if it is a bad script, because it is. Somesay it has recursion which I guess, but I don't really care about that atm. Just how I can see other peoples doing damage and when Im not involved in it. I want to see numbers or values of the damage to the humanoid specifically me to see it change. Also somehow fix when I take damage, I can see my own number that I don't want, just the targets damage value that I've done.

I know what I've said is a rushed and unclear of my objective/goal so I'll explain briefly.

Objective: I want this script (damage indicator) which is followed by the mouse to only show damage to the humanoid when I am doing damage to it, and I want to not see others damage values, which I see random numbers with no correlation to my actions (including myself when I reset).

If there's an alternative damage indicator that only shows the damage locally when you do damage the humanoid and see it, but not others, and if you are happy to provide me with the details or the links, then I'm happy to research it. Appeciate if you can help, thanks.

wait(3)
local player = game.Players.LocalPlayer
local mouse = player:GetMouse()
local label = script.DamageGui.TextLabel
local gui = script.DamageGui

gui.Parent = game.Players.LocalPlayer:WaitForChild("PlayerGui")

function updatePos()
	label.Position = UDim2.fromOffset(mouse.X,mouse.Y)
end

mouse.Move:Connect(updatePos)

function Track(Humanoid)
	local Last = Humanoid.Health
	local function HealthChanged(Left)
		if Left < Last then
			-- things go here text --
				if Left < Last then
					wait(5)
					for i = 0, 1, -0.01 do
						label.TextTransparency = i
						wait(.1)
					end
					label.Visible = false
					return
					
				else
				wait(3)
					label.Visible = false
					end
			end
			Last = Left
		end
	end
	Humanoid.HealthChanged:connect(HealthChanged)
end

local D = game.Workspace:GetDescendants()
for i = 1,#D do
	if D[i]:IsA("Humanoid") then
		Track(D[i])
	end
end
function Added(item)
	if item:IsA("Humanoid") then
		Track(item)
	end
end
game.Workspace.DescendantAdded:connect(Added)