CJC
0
Q:

developer product roblox

local MarketplaceService = game:GetService("MarketplaceService")local DataStoreService = game:GetService("DataStoreService")local Players = game:GetService("Players") -- Data store for tracking purchases that were successfully processedlocal purchaseHistoryStore = DataStoreService:GetDataStore("PurchaseHistory") -- Table setup containing product IDs and functions for handling purchaseslocal productFunctions = {}-- ProductId 123123 for a full healproductFunctions[123123] = function(receipt, player)	-- Logic/code for player buying a full heal (may vary)	if player.Character and player.Character:FindFirstChild("Humanoid") then		-- Heal the player to full health		player.Character.Humanoid.Health = player.Character.Humanoid.MaxHealth		-- Indicate a successful purchase		return true	endend-- ProductId 456456 for 100 goldproductFunctions[456456] = function(receipt, player)	-- Logic/code for player buying 100 gold (may vary)	local stats = player:FindFirstChild("leaderstats")	local gold = stats and stats:FindFirstChild("Gold")	if gold then		gold.Value = gold.Value + 100		-- Indicate a successful purchase		return true	endend -- The core 'ProcessReceipt' callback functionlocal function processReceipt(receiptInfo) 	-- Determine if the product was already granted by checking the data store  	local playerProductKey = receiptInfo.PlayerId .. "_" .. receiptInfo.PurchaseId	local purchased = false	local success, errorMessage = pcall(function()		purchased = purchaseHistoryStore:GetAsync(playerProductKey)	end)	-- If purchase was recorded, the product was already granted	if success and purchased then		return Enum.ProductPurchaseDecision.PurchaseGranted	elseif not success then		error("Data store error:" .. errorMessage)	end 	-- Find the player who made the purchase in the server	local player = Players:GetPlayerByUserId(receiptInfo.PlayerId)	if not player then		-- The player probably left the game		-- If they come back, the callback will be called again		return Enum.ProductPurchaseDecision.NotProcessedYet	end		-- Look up handler function from 'productFunctions' table above	local handler = productFunctions[receiptInfo.ProductId] 	-- Call the handler function and catch any errors	local success, result = pcall(handler, receiptInfo, player)	if not success or not result then		warn("Error occurred while processing a product purchase")		print("\nProductId:", receiptInfo.ProductId)		print("\nPlayer:", player)		return Enum.ProductPurchaseDecision.NotProcessedYet	end 	-- Record transaction in data store so it isn't granted again	local success, errorMessage = pcall(function()		purchaseHistoryStore:SetAsync(playerProductKey, true)	end)	if not success then		error("Cannot save purchase data: " .. errorMessage)	end 	-- IMPORTANT: Tell Roblox that the game successfully handled the purchase	return Enum.ProductPurchaseDecision.PurchaseGrantedend -- Set the callback; this can only be done once by one script on the server! MarketplaceService.ProcessReceipt = processReceipt
0

New to Communities?

Join the community