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.