Hello, I’m trying to update this old Gamepass script with the new gamepass id system but when I did, it did prompt me to purchase the gamepass with the new id but when i bougth it/Had the gamepass nothing happend and I got “unable to cast instance to int64” how can I fix this?
Thanks for the help!
The things I changed:
PromptPurchase --> PromptGamePassPurchase
PlayerOwnsAsset --> UserOwnsGamePassAsync
Original Code
v.Head.Touched:connect(function(hit)
local player = game.Players:GetPlayerFromCharacter(hit.Parent)
if v.Head.CanCollide == true then
if player ~= nil then
if script.Parent.Owner.Value == player then
if hit.Parent:FindFirstChild("Humanoid") then
if hit.Parent.Humanoid.Health > 0 then
local PlayerStats = game.ServerStorage.PlayerMoney:FindFirstChild(player.Name)
if PlayerStats ~= nil then
if (v:FindFirstChild('Gamepass')) and (v.Gamepass.Value >= 1) then
if game:GetService("MarketplaceService"):UserOwnsGamePassAsync(player,v.Gamepass.Value) then
Purchase({[1] = v.Price.Value,[2] = v,[3] = PlayerStats})
else
print("works")
game:GetService('MarketplaceService'):PromptGamePassPurchase(player,v.Gamepass.Value)
end
elseif (v:FindFirstChild('DevProduct')) and (v.DevProduct.Value >= 1) then
game:GetService('MarketplaceService'):PromptProductPurchase(player,v.DevProduct.Value)
elseif PlayerStats.Value >= v.Price.Value then
Purchase({[1] = v.Price.Value,[2] = v,[3] = PlayerStats})
Sound(v, Settings.Sounds.Purchase)
else
Sound(v, Settings.Sounds.ErrorBuy)
end
end
end
end
end
end
end
New Code
v.Head.Touched:connect(function(hit)
local player = game.Players:GetPlayerFromCharacter(hit.Parent)
if v.Head.CanCollide == true then
if player ~= nil then
if script.Parent.Owner.Value == player then
if hit.Parent:FindFirstChild("Humanoid") then
if hit.Parent.Humanoid.Health > 0 then
local PlayerStats = game.ServerStorage.PlayerMoney:FindFirstChild(player.Name)
if PlayerStats ~= nil then
if (v:FindFirstChild('Gamepass')) and (v.Gamepass.Value >= 1) then
if game:GetService("MarketplaceService"):UserOwnsGamePassAsync(player,v.Gamepass.Value) then
Purchase({[1] = v.Price.Value,[2] = v,[3] = PlayerStats})
else
print("works")
game:GetService('MarketplaceService'):PromptGamePassPurchase(player,v.Gamepass.Value)
end
elseif (v:FindFirstChild('DevProduct')) and (v.DevProduct.Value >= 1) then
game:GetService('MarketplaceService'):PromptProductPurchase(player,v.DevProduct.Value)
elseif PlayerStats.Value >= v.Price.Value then
Purchase({[1] = v.Price.Value,[2] = v,[3] = PlayerStats})
Sound(v, Settings.Sounds.Purchase)
else
Sound(v, Settings.Sounds.ErrorBuy)
end
end
end
end
end
end
end