Why won't the gamepass prompt popup? whats wrong with my code?

So I made system for my houses ingame that are only gamepass houses and if player owns pass they can get house but if they don’t then gamepass buy prompt appears
whats wrong with my code?

local gamepassID = 45655676
local player = game.Players.LocalPlayer

local house = script.Parent.Parent
local owner = script.Parent.Parent.owner
local sign = script.Parent.BillboardGui.TextLabel
local prompt = game.StarterGui.prompth

script.Parent.ClickDetector.MouseClick:Connect(function(plr)
if game:GetService(“MarketplaceService”):UserOwnsGamePassAsync(plr.UserId, gamepassID) then

		if script.Parent:FindFirstChild("Humanoid") then
			if not game.Workspace:FindFirstChild(plr.Name.."'s house") then
				if owner.Value == "" then
					owner.Value = plr.Name
					house.Name = plr.Name.."'s house"
					sign.Text = plr.Name.."'s house"
				end
			end
		end
else
	prompt.Enabled = true ----this is buy prompt which is custom gui--
	wait(3)
	prompt.Enabled = false
end

end)

I think this is the same issue as another post,

because “StarterGui” clones the gui for the player when you join,
you need to do

player:WaitForChild("PlayerGui"):WaitForChild("prompt") --did you miss spell prompt maybe?

to get the actual GUI for the player

local marketplace = game:GetService("MarketplaceService")

local part = script.Parent
local click = part.ClickDetector
local house = part.Parent
local owner = house.owner
local gui = part.BillboardGui
local sign = gui.TextLabel

local gamepassId = 45655676

click.MouseClick:Connect(function(plr)
	if marketplace:UserOwnsGamePassAsync(plr.UserId, gamepassId) then
		if not workspace:FindFirstChild(plr.Name.."'s house") then
			if owner.Value == "" then
				owner.Value = plr.Name
				house.Name = plr.Name.."'s house"
				sign.Text = plr.Name.."'s house"
			end
		end
	else
		plr.PlayerGui.prompth.Enabled = true
		task.wait(3)
		plr.PlayerGui.prompth.Enabled = false
	end
end)