Thank you message after gamepass purchase

Hello, I am curious on how I would make a thank you ui pop up after someone has purchased a gamepass in-game. Something like the image below. Please keep in mind I am a beginner scripter so try your best to explain in detail and or create a video!

Here is my code as of now (with some variables but not shown)

script.Parent.Frame.ScrollingFrame.Gamepass2.Purchase.MouseButton1Down:Connect(function()
	ms:PromptGamePassPurchase(game.Players.LocalPlayer, BoomboxID)
	Click:Play()
end)
3 Likes

There is a function that MarketplaceService provides that allows you to do this.

Easy usage.

3 Likes

I read and it says this

local function gamepassPurchaseFinished(...)
	script.Parent.ThankyouFrame.Visible = true
	print("PromptGamePassPurchaseFinished", ...)
end

ms.PromptGamePassPurchaseFinished:Connect(gamepassPurchaseFinished)

So would I replace the 3 dots with my gamepass ID or keep it the same? Because now when I put that, my speed gamepass does not work anymore. Here is my entire code as of now

--{Variables}--

local ScrollingShopFrame = script.Parent.Frame.ScrollingFrame
local ShopButton = script.Parent.Shop
local Click = game.Workspace.GameSounds.Click
local ShopFrame = script.Parent.Frame
local Close = script.Parent.Frame.Exit


--{Open and Close Shop}--
ShopButton.MouseButton1Down:Connect(function()
	Click:Play()
	ShopFrame.Visible = true
	ShopFrame:TweenPosition(UDim2.new(0.26, 0,0.183, 0))
end)


Close.MouseButton1Down:Connect(function()
	Click:Play()
	ShopFrame.Visible = true
	ShopFrame:TweenPosition(UDim2.new(0.26, 0,1.183, 0))
end)

--{Purchase Gamepasses}--
local ms = game:GetService("MarketplaceService")
local DoubleCashID = 12976761
local BoomboxID = 12977194
local DoubleSpeedID = 12977366

--{Double Cash}--
script.Parent.Frame.ScrollingFrame.Gamepass1.Purchase.MouseButton1Down:Connect(function()
	ms:PromptGamePassPurchase(game.Players.LocalPlayer, DoubleCashID)
	Click:Play()
end)

--{Boombox}--
script.Parent.Frame.ScrollingFrame.Gamepass2.Purchase.MouseButton1Down:Connect(function()
	ms:PromptGamePassPurchase(game.Players.LocalPlayer, BoomboxID)
	Click:Play()
end)

--{Double Speed}--
script.Parent.Frame.ScrollingFrame.Gamepass3.Purchase.MouseButton1Down:Connect(function()
	ms:PromptGamePassPurchase(game.Players.LocalPlayer, DoubleSpeedID)
	Click:Play()
end)

local function gamepassPurchaseFinished(...)
	script.Parent.ThankyouFrame.Visible = true
	print("PromptGamePassPurchaseFinished", ...)
end

ms.PromptGamePassPurchaseFinished:Connect(gamepassPurchaseFinished)
1 Like

For the last part, you need to check that the local player was the one who bought the pass, as this function fires whenever anyone buys a gamepass (i think, dont quote me on this). You also need to check if the gamepass was purchased and to check that it is the correct gamepass.

ms.PromptGamePassPurchaseFinished:Connect(function(plr, passId, purchased)
	
	if plr == game.Players.LocalPlayer and passId == 'insertgamepassidherebutasanumbernotastring' and purchased then
		-- do stuff 
	end
	
end)

this should be pretty self explanatory. Let me know if you are still stuck. Please mark as solution if this helped you, as Iā€™d like more people to be able to see this.

2 Likes

Thank you so much it works! Just marked as a solution!

1 Like