You should not just parent the script to every player that joins, instead you should clone the billboardgui and parent that to the player:
game.Players.PlayerAdded:Connect(function(Player)
local billboard = script.BillboardGui:Clone()
billboard.Title.Text = Player.Name
billboard.Title.TextColor = Player.TeamColor
billboard.Icon.Rank.Text = Player.leaderstats.Rank.Value
Player.CharacterAdded:Connect(function(char)
billboard.Parent = char:WaitForChild("HumanoidRootPart")
end)
Player.leaderstats.Rank.Value.Changed:Connect(function(new)
Player.Character.HumanoidRootPart.Icon.Rank.Text = new
end)
end)
Something like this, billboard should be inside the script, also i tried parenting it to UpperTorso but it just doesnt work, besides if its a title you should parent it to the Head or HumanoidRootPart.