It seems to me you’ve cloned the gui but never parented it back into something in PlayerGui so it isn’t appearing. I would set the parent to be same as the original gui’s parent.
Also, the script is a child of the gui so you will also be cloning the script and running it on each subsequent clone which is probably unintended (this can lead to memory leaks or unexpected behavior). I would move the script under the gui’s parent and clone it from there. So for example you should use: local gui = script.Parent[GuiYouWantToClone]:Clone()
instead and after setting gui properties use: gui.Parent = script.Parent
or gui.Parent = [referenceToMainGui]
Lastly, you also want to wait for the tween to finish using the Tween.Completed event before calling Destroy. This would work: tween.Completed:Wait()