Why Is My OverHead Player Level Label Not Showing Level?

I Have A ServerScript With The Script That Clones And Parents The Label To The Players Head There Is Also A Client Script Inside The Label That Is Supposed To Show The Players Level But Says Loading Level And Never Changes To The Players Rank Here Are The Scripts:
This Is The ServerScript

local ServerStorage = game:GetService('ServerStorage')

local OverHead = ServerStorage:WaitForChild('OverHead')

game.Players.PlayerAdded:Connect(function(player)
	player.CharacterAdded:Connect(function(character)
		local uiClone = OverHead:Clone()
		uiClone.Parent = character.Head
	end)
end)

And Here Is The Client Script

local textLabel = script.Parent.TextLabel

local player = game.Players.LocalPlayer

while task.wait(1) do

script.Parent.TextLabel.Text = 'Level: '..player:WaitForChild('leaderstats'):FindFirstChild('Level').Value

script.Parent.TextLabel.Visible = false -- This Makes The Label Invisible For The Local Player But Shows For Other People

end

I Don’t Know Why This Isn’t Working, Thanks.

If by client script you meant local script, then that would be the problem, you want to still use a serverscript even for the client. (atleast I think)

Also, is script.Parent the player’s head? because if not, then you wouldn’t even be able to find “TextLabel”, as its in Parent.Head rather then Parent

Changing the text of the label in the localscript only changes for the client, so you’d need to either update it in the server script or change it in every other client.

1 Like