Group Rank Overhead Help

Hello!

I’ve been using the following script for a while now to have an overhead tag appear over players with their group and rank names, however as it hasn’t been the best. For starters, heads usually have no faces or are usually oddly shaped (increased in size and such) and recently, they have started falling off entirely. I’ve noticed that this is probably due to the cloning of heads within the script, however, when I remove the clone and the description of the player’s face, I usually end up having the default smile face instated and the overhead tags disappear entirely as the head was not a valid member of the player’s model. I’ve tried various work around but they ultimately resulted in having the player’s head with the default face.

-]]
local commands = {}

function Create(ClassName)
	return function(Properties)
		local Obj = Instance.new(ClassName)
		for i,v in pairs(Properties) do
			if type(i) == 'number' then
				v.Parent = Obj
			else
				Obj[i] = v
			end
		end
		return Obj
	end
end
function HandleCharacter(Player, Character)
	local Custom = Character:WaitForChild('Head'):clone()
	Custom.Name = 'AlbOverhead'
	Custom.Parent = Character
	Custom.face:Destroy()
	Character.Head.Transparency = 1
	Create'Weld'{
		Name = 'CustomWeld';
		Parent = Custom;
		Part0 = Character.Head;
		Part1 = Custom;
	}
	Create'BillboardGui'{
		Name = 'Nametag';
		Parent = Custom;
		Size = UDim2.new(5, 0, 0.5, 0);
		StudsOffset = Vector3.new(0, 2, 0);
		Create'TextLabel'{
			Name = 'NameLabel';
			BackgroundTransparency = 1;
			Size = UDim2.new(1, 0, 1, 0);
			Position = UDim2.new(0, 0, -0.8, 0);
			Font = 'SourceSansBold';
			Text = Character.Name;
			TextColor3 = Color3.new(1, 1, 1);
			TextScaled = true;
			TextStrokeTransparency = 0.5;
		};
		Create'TextLabel'{
			Name = 'RankLabel';
			BackgroundTransparency = 1;
			Size = UDim2.new(1, 0, 0.92, 0);
			Position = UDim2.new(0, 0, 0.2, 0);
			TextTransparency = .1;
			Font = 'SourceSansBold';
			FontSize = Enum.FontSize.Size12;
			Text = Player:GetRoleInGroup(Removed for privacy reasons); 
			TextColor3 = Color3.new(1, 0.666667, 0);
			TextScaled = true;
			TextStrokeTransparency = 0.5;
		};
	}

	Custom.BrickColor = Character.Head.BrickColor
	Character.Head.Changed:connect(function()
		Character.Head.Transparency = 1
		Custom.BrickColor = Character.Head.BrickColor
	end)
	Character.Head.Mesh.Changed:connect(function()
		Custom:WaitForChild('Mesh').MeshId = Character.Head:WaitForChild('Mesh').MeshId
	end)
end
local rainbow = function(callback)
local frequency = 0.1
local i = 0 
while true do wait()
local red = math.sin(frequency*i + 0)*127+128 
local green = math.sin(frequency*i + 2*math.pi/3)*127+128 
local blue = math.sin(frequency*i + 4*math.pi/3)*127+128 
callback(Color3.new(red/255,green/255,blue/255)) i = i+1 
end end 
function HandlePlayer(Player)
	if Player.Character then
		HandleCharacter(Player, Player.Character)
	end
		Player.CharacterAdded:connect(function(char) local label = char:WaitForChild("AlbOverhead") 
			coroutine.resume(coroutine.create(rainbow),function(color)label.Nametag.RankLabel.TextColor3 = Color3.new(color.r,color.g,color.b)end) 
		end)
	end
end
game.Players.PlayerAdded:connect(function(b)
	HandlePlayer(b)
end)
for i,v in pairs(game.Players:GetPlayers()) do
	 HandlePlayer(v) 
end

Any sort of help would be appreciated! I am not experienced with scripting in the slightest, but I do have some basic understanding. Thank you!

1 Like

You know parenting the billboardgui to the normal character’s head works fine, right? You don’t need to add a second head if it’s for the billboardgui’s purpose.

2 Likes

Yes! However, the script I’m working with didn’t allow that. I’ve tried removing the part where the head is cloned, but the script doesn’t recognize the player’s head regardless unless it is. I’ve tried various workarounds, and I haven’t managed to have it recognize the player’s default head at all, unfortunately. However I did make the cloned head invisible and removed the part where it deletes the player’s face, however, it just results in the players having the default smile face and I’m not quite sure how to approach this issue. Thank you so much for your insight though!