Hello, everyone! I have added an overhead rank script along time ago to my game, and it worked perfectly. But, a few months ago, I noticed the rank didn't update on resetting or refreshing. Could someone please help? Thanks!

--DonutsIndeed

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 = "ParadiseOverhead"
	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 = 1,
		},
		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 = "SourceSans",
			FontSize = Enum.FontSize.Size12,
			Text = Player:GetRoleInGroup(3538954),
			TextColor3 = Color3.new(1, 1, 1),
			TextScaled = true,
			TextStrokeTransparency = 1
		},
	}
	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(Character)
		HandleCharacter(Player, Character)
	end)
	if Player:GetRankInGroup(3538954) == 255 then
		Player.CharacterAdded:connect(function(char)
			local label = char:WaitForChild("ParadiseOverhead")
			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, wv in pairs(game.Players:GetPlayers()) do
	HandlePlayer(v)
end

3 comments

0

By rank updating do you mean that the GUI still shows, but not the correct rank, or the GUI doesn't show at all?

0

What a Error you've getting in Output?

0

You accidently put a w in for i, wv in pairs(game.Players:GetPlayers()) do