GUI is cloning one at a time instead of all at once

I’m trying to make it so when the player’s points go up a GUI floats up on the screen but instead of it cloning every time the player gains points it does it once and waits until the GUI that was cloned gets deleted. How do I fix this?

cp = 0
local player = game.Players.LocalPlayer

while wait() do
	if cp ~= player.leaderstats.Robux.Value then
		local random = math.random(1,900)
		local xnew = random/1000
		local new = game.ReplicatedStorage.ImageLabel:Clone()
		new.Parent = script.Parent.Robux
		new.Position = UDim2.new(xnew,0,1,0)
		cp = player.leaderstats.Robux.Value
		wait(1)
		new:Destroy()
		
	end
end

Well, the problem is that you are using a while loop.
If you want the if-condition at line 5 to be fired multiple times you need to use a sort of event, for example:

cp = 0
local player = game.Players.LocalPlayer
local Robux = player.leaderstats.Robux
Robux.Changed:Connect(function()
	if cp ~= Robux.Value then
		local random = math.random(1,900) / 1000
		local new = game.ReplicatedStorage.ImageLabel:Clone()
		new.Parent = script.Parent.Robux
		new.Position = UDim2.new(random,0,1,0)
		cp = Robux.Value
		wait(1)
		new:Destroy()
	end
end)