I have a gui where you can buy tools, like a grapple hook, a flying cloud, etc, but it will only give me the tools in studio and not in game, am i doing something wrong? script:

local mps = game:GetService("MarketplaceService") local ReplicatedStorage = game:GetService("ReplicatedStorage") local ds = game:GetService("DataStoreService"):GetDataStore("PurchaseHistory")

mps.ProcessReceipt = function(receiptInfo) for i, player in pairs(game.Players:GetChildren()) do

	if player.userId == receiptInfo.PlayerId then
		if receiptInfo.ProductId == 1276125695 then
			ReplicatedStorage.GrappleHook:Clone().Parent = player.Backpack
			ReplicatedStorage.GrappleHook:Clone().Parent = player.StarterGear
			
		end
		if receiptInfo.ProductId == 1276288628 then
			ReplicatedStorage.SwapPotion:Clone().Parent = player.Backpack
			ReplicatedStorage.SwapPotion:Clone().Parent = player.StarterGear
		end
		if receiptInfo.ProductId == 1276303060 then
			ReplicatedStorage.Boombox:Clone().Parent = player.Backpack
			ReplicatedStorage.Boombox:Clone().Parent = player.StarterGear
		end
		if receiptInfo.ProductId == 1276306927 then
			ReplicatedStorage.FlyingCloud:Clone().Parent = player.Backpack
			ReplicatedStorage.FlyingCloud:Clone().Parent = player.StarterGear
			
		end
		if receiptInfo.ProductId == 1276310545 then
			ReplicatedStorage.Taser:Clone().Parent = player.Backpack
			ReplicatedStorage.Taser:Clone().Parent = player.StarterGear
		end
		if receiptInfo.ProductId == 1276327505 then
				ReplicatedStorage.Doge:Clone().Parent = player.Backpack
				ReplicatedStorage.Doge:Clone().Parent = player.StarterGear
			
		end
		
	end
end	

local playerProductKey = "player_" .. receiptInfo.PlayerId .. "_purchase_" .. receiptInfo.ProductId
ds:IncrementAsync(playerProductKey, 1)	

return Enum.ProductPurchaseDecision.PurchaseGranted

end