Alright so, recently I decided I would include a gamepass in one of my games. The issue is that, I cannot seem to figure out this (what should be working) code/bug. I have tried to change it up, changing the gamepassid variable into an int, into a string. I have tried transforming it using tonumber() and tostring() to no avail. The current status is that there is a intvalue as a child under the script object. Here is my code:
local market = game:GetService("MarketplaceService") local function touched(part) if part.Parent:FindFirstChild("Humanoid") then if market:UserOwnsGamePassAsync(game.Players:GetPlayerFromCharacter(part.Parent), script.gamePass_ID.Value) then if part.Parent:FindFIrstChild("alreadyTouched") then return nil end part.Parent.Humanoid.MaxHealth = part.Parent.Humanoid.MaxHealth + 500 part.Parent.Shirt.ShirtTemplate = "https://www.roblox.com/catalog/1238057537" part.Parent.Pants.PantsTemplate = "https://www.roblox.com/catalog/1350584307" local alreadyTouched = Instance.new("BoolValue", part.Parent) alreadyTouched.Name = "alreadyTouched" else market:PromptGamePassPurchase(game.Players:GetPlayerFromCharacter(part.Parent), script.gamePass_ID.Value) end end end script.Parent.Touched:Connect(touched)
I've verified that the gamepass ID is correct.
The error I should mention is: "Cannot cast instance to int64".
EDIT: Turns out that I gave the function "UserOwnsGamePassAsync()" the player model instead of the UserId, apologies for my idioticness.