This gives the player MANY guis when it's touched.
local pad = script.Parent
local gui = game.ServerStorage.EditChar1
local function steppedOn(part)
local character = part.Parent
local player = game.Players:GetPlayerFromCharacter(character)
if player then
local guiCopy = game.ServerStorage.EditChar1:Clone()
guiCopy.Parent = player.PlayerGui
end
end
pad.Touched:connect(steppedOn)
How could I reduce this to 1 without adding a wait because if I add a wait it would just add more after the wait.

2 comments
i would check to see if the player has it before adding it
Please update the code to the one you were using with the answer below.