I have a textbutton and you click it and its supposed to open a frame ONLY if you have a gamepass, but it doesnt work? Why not though..
01 | local frame = script.Parent.Parent.Parent.TeleportFrame |
02 | local player = game.Players.LocalPlayer |
03 | local id = 7617401 |
04 |
05 | script.Parent.MouseButton 1 Click:Connect( function () |
06 | if game:GetService( "MarketplaceService" ):PlayerOwnsAsset(player, id) then |
07 | frame.Visible = not frame.Visible |
08 | else |
09 | game:GetService( "MarketplaceService" ):PromptGamePassPurchase(player, id) |
10 | end |
11 | end ) |
You should be using this function https://developer.roblox.com/en-us/api-reference/function/GamePassService/PlayerHasPass
The DevHub for PlayerOwnsAsset
strictly says not to use it with GamePasses.
use UserOwnsGamePassAsync
01 | script.Parent.MouseButton 1 Click:Connect( function () |
02 | local id = YOUR_ID_HERE |
03 |
04 | game:GetService( "MarketplaceService" ).PromptGamePassPurchaseFinished:Connect( function (plr,ido,purchased) |
05 | if purchased and ido = = id then |
06 | script.Parent.Parent.Parent.TeleportFrame.Visible = true |
07 | end |
08 | end ) |
09 |
10 | game.Players.PlayerAdded:Connect( function (plr) |
11 | plr.CharacterAdded:connect( function (char) |
12 | if game:GetService( "MarketplaceService" ):UserOwnsGamePassAsync(game.Players [ char.Name ] .UserId, id) then |
13 | script.Parent.Parent.Parent.TeleportFrame.Visible = true |
14 | end |
15 | end ) |
16 | end ) |