Since UserOwnsGamePassAsync caches, it only ever needs to be called once per-gamepass per-player per-server. Calling it more than once would be redundant because you already know what the result is going to be. If the result is false and PromptGamePassPurchaseFinished fires, you can update the result to true yourself because you can detect that the gamepass was bought (unless it was bought from the website.) Roblox should just update the cached value of UserOwnsGamePassAsync to true when PromptGamePassPurchaseFinished fires instead of making it necessary for developers to manually keep track of whether the gamepass is owned. The same applies to badges and other cached values where events provide sufficient information to manually update the cache.
34 Likes
This needs to be implemented, currently the only valid way to validate gamepass purchases is by having players rejoin.
- The
wasPurchasedargument inPromptGamePassPurchaseFinishedis unreliable as it can be sent astrue. - Roblox Recommends to use
UserOwnsGamePassAsyncbut the problem is it’s cached since the player joins, so it would returnfalseinstead oftrueif the player just bought the gamepass. - So when checking
UserOwnsGamePassAsyncit would be better if it had a no cache option likeGetAsyncthat returns the latest gamepass state.
3 Likes
roblox please implement this, it would be highly beneficial
1 Like