You’re trying to wait for the player character to spawn once? or continuously have it play this script? Because, if you’re going to delete this script I think you just want the frame to show up once. So if that’s the case, you have to instead put this line up to replace that player.CharacterAdded, like so:
if not Character then repeat wait() until player.CharacterAppearanceLoaded:Wait() end
frame.Visible = true
It’s probably because the character spawns in before the script does, so it’s not firing the event of player.CharacterAdded.