So, I made the following script, the output did not give any errors, but when my cash value is changed, it does not change my billboard gui nor destroys it...
game.Players.PlayerAdded:Connect(function(plr)
local cash = plr:WaitForChild("leaderstats").Cash
local s = game:GetService("ServerStorage")
local rank = s.Ranks
local char = plr.Character or workspace.ChildAdded:Wait()
if plr:WaitForChild("leaderstats").Cash.Value >= rank.Noob.Requirement.Value then
local noob = rank.Noob:Clone()
noob.Parent = char.Head
cash.Changed:Connect(function()
wait()
if cash.Value >= rank.Fine.Requirement.Value then
local fine = rank.Fine:Clone()
fine.Parent = char.Head
noob:Destroy()
cash.Changed:Connect(function()
wait()
if cash.Value >= rank.Good.Requirement.Value then
local good = rank.Good:Clone()
good.Parent = char.Head
cash.Changed:Connect(function()
fine:Destroy()
wait()
if cash.Value >= rank.Pro.Value then
local pro = rank.Pro:Clone()
pro.Parent = char.Head
good:Destroy()
end
end)
end
end)
end
end)
end
end)

2 comments
Noob works once I just start playing the game but the other dont
you're using Changed too much, just use it once on wherever you start checking requirements. So after line 5 in your case