So, the first time you click this, the dialog appears and it is fully functional. When you click the "goodbye" option of the dialog it disappears and all is well. But when you try to restart the dialog, the GUI doesn't appear. Any clues as to why?
Script named npcDialog:
local cd = script.Parent.Torso.ClickDetector
function onClick(player)
local d = script.ShopKeeper_Dialog:Clone()
if player:FindFirstChild("PlayerGui") and not player.PlayerGui:FindFirstChild("ShopKeeper_Dialog") then
d.Parent = player.PlayerGui
d.Enabled = true
end
end
cd.MouseClick:Connect(onClick)
--Local Script in npcDialog named "dialogHandle"
local response1 = script.Parent.dResponse1.Response
local response2 = script.Parent.dResponse2.byeResponse
local dbox = script.Parent.dBox.dialogText
response1.MouseButton1Click:Connect(function(onclick)
dbox.Text = "You cannot speak to me yet..*"
response1.Text = "Oh.."
end)
response2.MouseButton1Click:Connect(function(onclick)
script.Parent:Remove()
end)

3 comments
Did you try and perhaps use :Clone()? I think that's the reason because you're technically deleting the only button and it'll never appear again. If this doesn't work, then try and find any outputs. Also, are you using LocalScript or ServerScript? Maybe that could be the issue.
Remove is deprecated, it deletes the parent, can't access it again. You basically didn't hide the gui but you deleted it.
I did use clone and I changed :Remove() to :Destroy() and nothing changed..