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!