a local script to prompt the gamepass in the Starter player Script

local MarketplaceService = game:GetService("MarketplaceService")

local gamePassID = 18796069

local function promptPurchase()
	local player = game.Players.LocalPlayer
	local hasPass = false
	
	
	local sucess, message = pcall(function()
		hasPass = MarketplaceService:UserOwnsGamePassAsync(player.UserId, gamePassID)
	end)
	
	
	if hasPass then
		print("Players already has the gamepass")
	else
		MarketplaceService:PromptGamePassPurchase(player, gamePassID)
		
		
	end
end


wait(4)
promptPurchase()

A gamepass checker in the Server Script Storage

local MarketplaceService = game:GetService("MarketplaceService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Sword = ReplicatedStorage:WaitForChild("ClassicSword")

local gamePassID = 18796069

MarketplaceService.PromptGamePassPurchaseFinished:Connect(function(player, purchasePassID, purchaseSucess)
	
	if purchaseSucess == true and purchasePassID == gamePassID then
		print(player.Name.. "Purchase the give sword gamepass")
		Sword.Parent = player.Character
	end
	
end)

An error gamepass remember to always give sword to the person who got the gamepass in the ServerScriptStorage

local MarketplaceService = game:GetService("MarketplaceService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Sword = ReplicatedStorage:WaitForChild("ClassicSword")

local gamePassID = 18796069

game.Players.PlayerAdded:Connect(function(player)
	wait(1)
	local char = game.Workspace:FindFirstChild(player.Name)
	local hasPass = false

	
	local sucess, message = pcall(function()
		hasPass = MarketplaceService:UserOwnsGamePassAsync(player.UserID, gamePassID)

	end)
	
	if hasPass == true then
		print("Players has the sword gamepass")
		Sword.Parent = char
		
	end
	
end)

And finally a ClassicSword in the ReplicatedStorage