I made this touch-gamepass vip door and whenever I touch it it says "this item is currently not for sale. your account has not been charged" How is this possbile if my gamepass * is* actually for sale?
ItemID = (4765283)
OpenTime = 2
OpenTrans = 0.5
CloseTrans = 0
BuyGUI = true
KillOnTouch = false
-----------------------------------------------------------------------------------------------
Door = script.Parent
Serv = game:GetService("BadgeService")
MServ = game:GetService("MarketplaceService")
if not _G.Players then
_G.Players = {[ItemID] = {}}
elseif not _G.Players[ItemID] then
_G.Players[ItemID] = {}
end
Table = _G.Players[ItemID]
function CheckPlayer(player2)
for i = 1,#Table do
if Table[i] == player2 then
return true
end
end
return false
end
Door.Touched:connect(function(hit)
if game.Players:GetPlayerFromCharacter(hit.Parent) then
player = game.Players:GetPlayerFromCharacter(hit.Parent)
if Serv:UserHasBadge(player.userId,ItemID) or CheckPlayer(player) then
Door.CanCollide = false Door.Transparency = OpenTrans
wait(OpenTime)
Door.CanCollide = true Door.Transparency = CloseTrans
else
Door.CanCollide = true Door.Transparency = CloseTrans
if BuyGUI == true then
MServ:PromptPurchase(player,ItemID)
h = player.Character:FindFirstChild("Humanoid")
if h then
h.WalkSpeed = 0 end
local con
con = MServ.PromptPurchaseFinished:connect(function(ply,asset,purch)
if ply == player and asset == ItemID then
con:disconnect()
if purch then
if h then
h.WalkSpeed = 16 end
table.insert(Table,player)
elseif KillOnTouch == true then
Door.CanCollide = true Door.Transparency = CloseTrans
player.Character:BreakJoints()
end
end
end)
elseif KillOnTouch == true then
Door.CanCollide = true Door.Transparency = CloseTrans
player.Character:BreakJoints()
end
end
end
end)

2 comments
I think you need to use PromptGamePassPurchase and UserOwnsGamepassAsync
Same problem here... it probably has something to do with the new system roblox uses to store gamepasses