You’re not referencing the correct GUI instance. StarterGui is merely a storage container for the game’s UI, and is not where the active UI of a client resides.
“When a Player.Character spawns, the contents of their PlayerGui (if any) are emptied. Children of the StarterGuiare then copied along with their descendants into the PlayerGui. Note, however, that LayerCollector objects such as ScreenGuis with their ResetOnSpawn property set to false will only be placed into each player’s PlayerGui once and will not be deleted when the Player respawns.”
You must access the client’s PlayerGui folder instead
You’re not using events correctly. They are not booleans that you can use in if-statements. They’re RBXScriptSignal objects. Reading an event in an if-statement will always pass the if-statement as objects are truthy (not false/nil). You mean to write:
You’re pulling variables from nowhere; Weld and plr is undefined in your script, and attempting to interact with an undefined variable will result in indexing errors