Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

Gamepass doesn't prompt after being killed when the player touched the gamepass door again. Help?

local plr = game.Players.LocalPlayer

local char = plr.Character or plr.CharacterAdded:Wait()
local humanoid = char:WaitForChild("Humanoid")


local mps = game:GetService("MarketplaceService")

local gamepassID = 18133269


local gamepassOwned = false

pcall(function()

	gamepassOwned = mps:UserOwnsGamePassAsync(plr.UserId, gamepassID)
end)


if gamepassOwned == true then

	workspace.GamepassDoor2.Transparency = 1
	workspace.GamepassDoor2.CanCollide = false
end


humanoid.Touched:Connect(function(touchedPart)

	if gamepassOwned == true then return end


	if touchedPart == workspace.GamepassDoor2 then


		mps:PromptGamePassPurchase(plr, gamepassID)
	end
end)


mps.PromptGamePassPurchaseFinished:Connect(function(playerPurchased, purchasedID, purchaseSuccess)

	if not purchaseSuccess then return end

	if playerPurchased == plr and purchasedID == gamepassID then


		gamepassOwned = true


		workspace.GamepassDoor2.Transparency = 1
		workspace.GamepassDoor2.CanCollide = false
	end
end)

it is a localscript in starterplayerscripts

1 answer

✓ Accepted answer

I haven't tested this, but you should try putting the code to open the door in a while wait(0.2) do loop. It might be because the code is only running once, and it resets when the player dies?

2 comments

0

alright, where should I put this?

0

pretty sure just at the bottom of your script.

This discussion is preserved as it was. New answers, comments, and votes are closed.