I have an invisible part that triggers when a player touches it. here is my method
function onTouch(Hit)
hum = Hit.Parent:FindFirstChild("humanoid")
if hum ~= nil then
--here is where the code gets executed
end
end
script.Parent.Touched:Connect(onTouch)
However, I cannot figure out the part where you transfer the parent of the Gui from serverstorage to PlayerGui. I even do not know if I should use localscript or regular script.

2 comments
since it is stored in server storage you would use a serverscript
near a certain radius, not really..... its more near a part...