Title says it all.
There’s no errors in the output though. It is split up into 2 scripts, server and client.
Server:
local NameTag = Instance.new("BillboardGui")
NameTag.Name = "NameTag"
NameTag.Size = UDim2.new(4, 0, 1, 0)
NameTag.StudsOffset = Vector3.new(0, 2.5, 0)
NameTag.AlwaysOnTop = true
local Frame = Instance.new("Frame", NameTag)
Frame.Size = UDim2.new(1, 0, 1, 0)
Frame.BackgroundTransparency = 1
local ImageLabel = Instance.new("ImageLabel", Frame)
ImageLabel.Size = UDim2.new(0.1, 0, 0.35, 0)
ImageLabel.Position = UDim2.new(0.45, 0, 0, 0)
ImageLabel.BackgroundTransparency = 1
ImageLabel.Visible = false
local TopText = Instance.new("TextLabel", Frame)
TopText.Name = "TopText"
TopText.Size = UDim2.new(0.7, 0, 0.3, 0)
TopText.Position = UDim2.new(0.15, 0, 0.35, 0)
TopText.BackgroundTransparency = 1
TopText.TextScaled = true
TopText.TextColor3 = Color3.new(1, 1, 1)
TopText.Font = Enum.Font.GothamBold
local ClanText = Instance.new("TextLabel", Frame)
ClanText.Name = "ClanText"
ClanText.Size = UDim2.new(1, 0, 0.3, 0)
ClanText.Position = UDim2.new(0, 0, 0.7, 0)
ClanText.BackgroundTransparency = 1
ClanText.TextScaled = true
ClanText.TextColor3 = Color3.new(1, 1, 1)
game.Players.PlayerAdded:Connect(function(player)
player.CharacterAdded:Connect(function(character)
local head = character:WaitForChild("Head")
local clone = NameTag:Clone()
clone.Parent = head
local topText = clone.Frame.TopText
local clanText = clone.Frame.ClanText
local imageLabel = clone.Frame.ImageLabel
topText.Text = "@" .. player.Name
local data = player:WaitForChild("Data")
local clansFolder = data:WaitForChild("ClansFolder")
local function updateClanValues()
local clanNameValue = clansFolder:FindFirstChild("ClanName")
local clanColorValue = clansFolder:FindFirstChild("ClanColor")
local clanRankValue = clansFolder:FindFirstChild("ClanRank")
local clanName = "No Clan"
local clanColor = Color3.new(1, 1, 1)
local rank = ""
if clanNameValue and clanNameValue.Value ~= "" then
clanName = clanNameValue.Value
clanColor = clanColorValue and clanColorValue.Value or Color3.new(1, 1, 1)
clanText.TextColor3 = clanColor
rank = clanRankValue and clanRankValue.Value or ""
clanText.Text = clanName .. "'s " .. rank
else
clanText.Text = clanName
end
end
task.spawn(function()
while true do
updateClanValues()
local disguisedValue = player:WaitForChild("Data"):WaitForChild("Disguised")
local groupId = 8423759
local playerRank = player:GetRankInGroup(groupId)
if disguisedValue.Value then
imageLabel.Visible = false
else
if playerRank >= 6 then
imageLabel.Image = "rbxassetid://88965800154544"
imageLabel.Visible = true
else
imageLabel.Visible = false
end
end
task.wait(0.1)
end
end)
end)
end)
Client script:
local TweenService = game:GetService("TweenService")
local TextChatService = game:GetService("TextChatService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local activeBubbles = 0
local function fadeGui(guiObject, targetTransparency, duration)
local tween = TweenService:Create(
guiObject,
TweenInfo.new(duration, Enum.EasingStyle.Sine, Enum.EasingDirection.Out),
{BackgroundTransparency = targetTransparency}
)
tween:Play()
end
local function fadeText(guiObject, targetTransparency, duration)
local tween = TweenService:Create(
guiObject,
TweenInfo.new(duration, Enum.EasingStyle.Sine, Enum.EasingDirection.Out),
{TextTransparency = targetTransparency}
)
tween:Play()
end
local function fadeModeratorIcon(imageLabel, targetTransparency, duration)
local tween = TweenService:Create(
imageLabel,
TweenInfo.new(duration, Enum.EasingStyle.Sine, Enum.EasingDirection.Out),
{ImageTransparency = targetTransparency}
)
tween:Play()
end
local function updateNameTagVisibility()
local nameTag = character:FindFirstChild("NameTag")
if nameTag then
local frame = nameTag:FindFirstChild("Frame")
local topText = frame and frame:FindFirstChild("TopText")
local clanText = frame and frame:FindFirstChild("ClanText")
local imageLabel = frame and frame:FindFirstChild("ImageLabel")
local targetTransparency = activeBubbles > 0 and 1 or 0
if frame then fadeGui(frame, targetTransparency, 0.5) end
if topText then fadeText(topText, targetTransparency, 0.5) end
if clanText then fadeText(clanText, targetTransparency, 0.5) end
if imageLabel then fadeModeratorIcon(imageLabel, targetTransparency, 0.5) end
end
end
TextChatService.OnBubbleAdded = function(textChatMessage)
if textChatMessage and textChatMessage.TextSource then
local sourcePlayer = Players:GetPlayerByUserId(textChatMessage.TextSource.UserId)
if sourcePlayer == player then
activeBubbles += 1
updateNameTagVisibility()
end
end
end
Thanks for your help!
(please don’t send documentation links, I’ve already gone through them all)