Developer Products

Il Developer Product è un articolo o un'abilità che un utente può comprare più di una volta, come la moneta in-experience, le munizioni o le pozioni.

Creare i Developer Products

Quando crei un'immagine da utilizzare per il tuo Developer Product, tieni conto dei seguenti requisiti:

  • usa un modello 512×512 pixels;
  • Salva l'immagine in formato .jpg, .png, o.bmp.
  • non includere dettagli importanti al di fuori dei confini circolari perché il processo di caricamento taglia e ritaglia il Developer Product finale in un'immagine circolare.

Per creare un nuovo Developer Product:

  1. fai clic sul pulsante CREA DEVELOPER PRODUCT. Il Developer Product viene visualizzato nella sezione Developer Products della pagina Articoli Associati.

  2. Nella barra di navigazione a sinistra, seleziona Articoli Associati; viene visualizzata la pagina Articoli Associati; Viene visualizzata la pagina degli Articoli Associati.

  3. nella barra di navigazione orizzontale, seleziona DEVELOPER PRODUCTS; vengono visualizzati tutti i Developer Products per quell'esperienza;

  4. fai clic sul pulsante CREA UN DEVELOPER PRODUCT; viene visualizzata la pagina Crea un Developer Product; Viene visualizzata la pagina Crea un Developer Product.

  5. fai clic sul pulsante CARICA IMMAGINE; Viene visualizzato un browser di file. Viene visualizzato un browser di file.

  6. Selezione l'immagine che vuoi visualizzare come l'Icona, e poi fai click sul pulsanteApri;

  7. Compila i seguenti campi:

    • Nome: un titolo per il tuo Developer Product;
    • Descrizione: una descrizione di ciò che l'utente deve aspettarsi quando acquista il Developer Product;
    • Prezzo in Robux: l'ammontare di Robux che vuoi addebitare agli utenti per il Developer Product;
  8. Fai clic sul pulsante CREA UN DEVELOPER PRODUCT. vai nella sezione Developer Product di una pagina degli Articoli Associati di un'esperienza;

Localizzazione degli ID del Developer Product

Un ID del Developer Product è l'identificativo unico di un Developer Product. Necessiti di questo ID quando esegui gli scripting dei Distintivi.

Per localizzare un ID del Developer Product:

  1. vai nella sezione Developer Product di una pagina degli Articoli Associati di un'esperienza;

  2. Passa il mouse sulla miniatura di un Developer Product e fai clic sul pulsante . Viene visualizzato un menu contestuale.

  3. Seleziona Copia ID risorsa. L'ID del Developer Product viene copiato negli appunti.

Scripting del Developer Products

Devi utilizzare uno scripting per implementare gli effetti di un Developer Product nelle tue esperienze.

I più comuni caso d'uso di uno scripting del Developer Product includono:

Promozione acquisti

Puoi chiedere a un utente di acquistare uno dei tuoi developer products con il PromptProductPurchase() metodo del MarketplaceService. A seconda delle esigenze della tua esperienza, puoi richiamare una promptPurchase() funzione in situazioni come quanto l'utente preme un pulsante o quando il proprio personaggio parla con un venditore NPC.


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

Gestione degli acquisti

Dopo che un utente ha acquistato un developer product, è tua responsabilità gestire e registrare la transazione. Puoi fare questo Script attraverso ServerScriptService utilizzandoMarketplaceService.ProcessReceipt Richiama.


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 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

Ottenere informazioni

Per ottenere informazioni su uno specifico Developer Product, come il prezzo, il nome o l'immagine, utilizza la MarketplaceService:GetProductInfo() funzione con un secondo argomento di tipo Enum.InfoType.Product. Ad esempio:


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

puoi anche ottenere i dati per tutti i developer products in un'esperienza utilizzando il GetDeveloperProductsAsync()metodo. Questo restituisce un Pages oggetto che puoi ispezionare e filtrare per costruire cose come un Negozio in-experience o un'Interfaccia grafica utente di un elenco di prodotti.

Ad esempio, il seguente script stampa il nome, il prezzo, l'ID, la Descrizione e AssetID di tutti i prodotti per i Developer Products in un'esperienza:


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