Productos de desarrollo

Un producto de desarrollo es un objeto o habilidad que un usuario puede comprar más de una vez, como moneda de experiencia, munición o pociones.

Crear productos de desarrollo

Cuando crees una imagen para tu producto de desarrollo, considera los siguientes requisitos:

  • Usa una plantilla de 512 x 512 píxeles.
  • Guarda la imagen en formato .jpg, .png o .bmp.
  • No incluyas detalles importantes fuera de los límites circulares porque el proceso de carga ajusta y recorta el producto de desarrollo final en una imagen circular.

Para crear un nuevo producto de desarrollo:

  1. Dirígete a la Interfaz de creación.

  2. Haz clic en la experiencia para la que deseas crear un producto de desarrollo. Se muestra la página Descripción general de la experiencia.

  3. En la navegación de la izquierda, selecciona Artículos asociados. Se mostrará la página Objetos asociados.

  4. En la navegación horizontal, selecciona PRODUCTOS DE DESARROLLO. Se mostrarán todos los productos de desarrollo para esa experiencia.

  5. Haz clic en el botón CREAR UN PRODUCTO DE DESARROLLO. Se mostrará la página Crear un producto de desarrollo.

  6. Haz clic en el botón CARGAR IMAGEN. Se muestra un explorador de archivos.

  7. Selecciona la imagen que deseas mostrar como icono y, a continuación, haz clic en el botón Abrir.

  8. Rellena los siguientes campos:

    • Nombre: un título para tu producto de desarrollo.
    • Descripción: una descripción de lo que un usuario debe esperar cuando compra el producto de desarrollo.
    • Precio en Robux: la cantidad de Robux que deseas cobrar a los usuarios por el producto de desarrollo.
  9. Haz clic en el botón CREAR PRODUCTO DE DESARROLLO. El producto de desarrollo se mostrará en la sección Productos de desarrollo de la página Objetos asociados.

Localización de la identificación del producto de desarrollo

Una identificación del producto de desarrollo es el identificador único de un producto de desarrollo. Necesitarás esta identificación cuando hagas scripting de emblemas.

Para localizar una identificación del producto de desarrollo:

  1. Ve a la sección de producto de desarrollo de la página de objetos asociados de una experiencia.

  2. Pasa el ratón sobre una miniatura de producto de desarrollo y haz clic en el botón . Se muestra un menú contextual.

  3. Selecciona Copiar la ID del activo. La identificación del producto de desarrollo se copia en tu portapapeles.

Productos de desarrollo de scripting

Debes usar scripting para implementar los efectos de producto de desarrollo en tus experiencias.

Entre los casos de uso más comunes de scripting de productos de desarrollo se incluyen:

Solicitar compras

Puedes solicitar a un usuario que compre uno de tus productos de desarrollo con el método PromptProductPurchase() de MarketplaceService. Dependiendo de las necesidades de tu experiencia, puedes llamar a la función promptPurchase() en situaciones como cuando el usuario pulsa un botón o cuando su personaje habla con un PNJ proveedor.


local MarketplaceService = game: GetService("MarketplaceService")
local Players = game: GetService("Players")
local player = Players. LocalPlayer
local productId = 0000000 -- Change this to your developer product ID
-- Function to prompt purchase of the developer product
local function promptPurchase()
MarketplaceService: PromptProductPurchase(player, productId)
end

Gestionar compras

Después de que un usuario compra un producto de desarrollo, es tu responsabilidad es gestionar y registrar la transacción. Puedes hacerlo mediante un Script dentro de ServerScriptService usando la devolución de llamada MarketplaceService.ProcessReceipt.


local MarketplaceService = game: GetService("MarketplaceService")
local Players = game: GetService("Players")
local productFunctions = {}
-- ProductId 123123 brings the user back to full health
productFunctions[123123] = function(receipt, player)
if player.Character and player.Character:FindFirstChild("Humanoid") then
player.Character.Humanoid.Health = player.Character.Humanoid.MaxHealth
-- Indicate a successful purchase
return true
end
end
-- ProductId 456456 awards 100 gold to the user
productFunctions[456456] = function(receipt, player)
local stats = player:FindFirstChild("leaderstats")
local gold = stats and stats: FindFirstChild("Gold")
if gold then
gold. Value = gold. Value + 100
return true
end
end
local function processReceipt(receiptInfo)
local userId = receiptInfo. PlayerId
local productId = receiptInfo. ProductId
local player = Players: GetPlayerByUserId(userId)
if player then
-- Get the handler function associated with the developer product ID and attempt to run it
local handler = productFunctions[productId]
local success, result = pcall(handler, receiptInfo, player)
if success then
-- The user has received their benefits!
-- return PurchaseGranted to confirm the transaction.
-- return PurchaseGranted to confirm the transaction.
return Enum. ProductPurchaseDecision.PurchaseGranted
else
warn("Failed to process receipt:", receiptInfo, result)
end
end
-- the user's benefits couldn't be awarded.
-- return NotProcessedYet to try again next time the user joins.
return Enum. ProductPurchaseDecision.NotProcessedYet
end
-- Set the callback; this can only be done once by one script on the server!
MarketplaceService.ProcessReceipt = processReceipt

Obtener información

Para obtener información sobre un determinado producto de desarrollo, como su precio, nombre o imagen, usa la función MarketplaceService:GetProductInfo() con un segundo argumento de Enum.InfoType.Product. Por ejemplo:


local MarketplaceService = game: GetService("MarketplaceService")
local productId = 000000 -- Change this to your developer product ID
local productInfo = MarketplaceService: GetProductInfo(productId, Enum. InfoType.Product)
local success, productInfo = pcall(function()
return MarketplaceService: GetProductInfo(productId, Enum. InfoType.Product)
end)
if success then
-- Use productInfo here!
end
end

También puedes obtener los datos de todos los productos de desarrollo de una experiencia usando el método GetDeveloperProductsAsync(). Esto devuelve un objeto Pages que puedes inspeccionar y filtrar para compilar cosas como una tienda en la experiencia o una GUI de lista de productos.

Por ejemplo, el siguiente script imprime el nombre, el precio, la identificación, la descripción y el AssetID para todos los productos de desarrollo de una experiencia:


local MarketplaceService = game: GetService("MarketplaceService")
local success, developerProducts = pcall(function()
return MarketplaceService: GetDeveloperProductsAsync():GetCurrentPage()
end)
if developerProducts then
for _, developerProduct in pairs(developerProducts) do
for field, value in pairs(developerProduct) do
print(field .. ": " .. value)
end
print(" ")
end
end