I am trying to make a gamepass script to give players a tool when they join the game

local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local Gamepasses = {
    ["5688925"] = game.ServerStorage["Entry Permit"],
    ["3688870"] = game.ServerStorage["Tommy Gun"],
    ["4653506"] = game.ServerStorage["M1 Garand"],
    ["3423531"] = game.ServerStorage["Knife"],
}
 

function CheckPasses(Player)
    for _PassID,_PassTool in pairs (Gamepasses) do
        if MarketplaceService:UserOwnsGamePassAsync( Player.UserId, _PassID ) then
            _PassTool:Clone().Parent = Player.Backpack
        end
    end
end
 
local function onPlayerAdded(Player)
 
	local hasPass = false
 
	-- Check if the player already owns the game pass
	local success, message = pcall(function()
		hasPass = MarketplaceService:UserOwnsGamePassAsync(Player.UserId, Gamepasses)
	end)
 
	-- If there's an error, issue a warning and exit the function
	if not success then
		warn("Error while checking if player has pass: " .. tostring(message))
		return
	end
 
	if hasPass == true then
		print(Player.Name .. " owns the game pass with ID " .. Gamepasses)
	end
	end
 
-- Connect 'PlayerAdded' events to the 'onPlayerAdded()' function
Players.PlayerAdded:Connect(onPlayerAdded)