So, I am trying to make it so when you click a button, it checks if you have the gamepass, and if you do then it runs some code. and if you don't have the gamepass, it prompts you to buy it. my problem is that when you accept the prompt and you buy the gamepass, it does not change my assigned variable to run the rest of the code. Is there a fix for this?
Here's my full code. it's in a localscript.
local btn = script.Parent local fr = btn.Parent.Parent.changeLicenseKey local win = btn.Parent.Parent local mps = game:GetService("MarketplaceService") local gamePassId = 25727086 local hasPass = false local function promptPurchase() local plr = game.Players.LocalPlayer hasPass = false local success, message = pcall(function() hasPass = mps:UserOwnsGamePassAsync(game.Players.LocalPlayer.UserId, gamePassId) end) if not success then warn(message) end if plr then if hasPass == true then print("Player already owns gamepass "..gamePassId) print(gamePassId.." gamepass is owned by "..game.Players.LocalPlayer.Name) win.top.appName.Text = win.top.appName.Text.." - Choose A License Key" fr.Visible = true btn.Parent.Visible = false else mps:PromptGamePassPurchase(plr, gamePassId) print("Gamepass not owned") end end end btn.Activated:Connect(function() promptPurchase() end) mps.PromptGamePassPurchaseFinished:Connect(function(plr, id, successBuy) if successBuy and id == gamePassId then hasPass = true print("hasPass = true") end end)
Thanks!