Con prezzi gestiti, puoi offrire prezzi specifici per regione per i tuoi articoli e costruire un'economia globale più inclusiva e accessibile. Dopo aver determinato un prezzo globale di default per un articolo, Roblox utilizza una varietà di segnali come il potere d'acquisto della regione, i tassi di cambio monetari e i comportamenti di spesa locali per impostare il prezzo più appropriato per quell'articolo, regione per regione.
Puoi scegliere quali dei tuoi articoli vuoi prezzare in modo regionale. Quando abiliti i prezzi gestiti per un articolo nel tuo gioco, Roblox regola automaticamente il prezzo di quell'articolo per gli utenti in base alla loro posizione economica.
La posizione economica non è sempre la stessa della posizione dell'account. Per determinare la posizione economica di un utente, Roblox considera segnali come l'uso di VPN, la cronologia di fatturazione e la cronologia dell'account. Se la loro posizione economica non può essere determinata, gli utenti vedono il prezzo globale di default per l'articolo.
Per prevenire l'arbitraggio dei prezzi quando gli utenti regalano o scambiano articoli con prezzi gestiti diversi, puoi gestire i trasferimenti in gioco con l'API GetUsersPriceLevelsAsync.
Abilitare i prezzi regionali
Per pass
I prezzi regionali sono abilitati per impostazione predefinita per tutti i nuovi e i pass esistenti tramite Prezzi gestiti.
Per disabilitare i prezzi gestiti per un pass:
- Vai su Creazioni e seleziona un gioco.
- Vai su Monetizzazione ⟩ Pass.
- Seleziona uno o più pass esistenti.
- Fai clic su Disabilita prezzi gestiti.
- OPZIONALEPer visualizzare i prezzi gestiti per paese o regione, seleziona un pass e vai alla sua pagina Vendite. L'elenco Paesi/Regioni principali si aggiorna per mostrare i prezzi aggiustati in base al prezzo di default del pass. Per visualizzare i prezzi per tutti i paesi e le regioni, fai clic su Visualizza tutti i paesi.
Per prodotti dello sviluppatore
Per abilitare i prezzi gestiti per un prodotto dello sviluppatore:
- Assicurati che i tuoi prodotti dello sviluppatore abbiano prezzi dinamicamente scriptati.
- Implementa il metodo GetUsersPriceLevelsAsync per regolare i trasferimenti di articoli in base ai livelli di prezzo degli utenti.
- Vai su Creazioni e seleziona un gioco.
- Vai su Monetizzazione ⟩ Prodotti dello sviluppatore.
- Seleziona uno o più prodotti esistenti o crea un nuovo prodotto.
- Fai clic su Abilita prezzi gestiti.
- OPZIONALEPer visualizzare i prezzi gestiti per paese o regione, seleziona un prodotto e vai alla sua pagina Impostazioni di base. L'elenco Paesi/Regioni principali si aggiorna per mostrare i prezzi aggiustati in base al prezzo di default del prodotto. Per visualizzare i prezzi gestiti per tutti i paesi e le regioni, fai clic su Visualizza tutti i paesi.
Per abbonamenti
I prezzi gestiti sono abilitati per impostazione predefinita per gli abbonamenti prezzati in Robux e non possono essere disabilitati. Per ulteriori informazioni, consulta Crea abbonamenti.
I prezzi gestiti non sono disponibili per gli abbonamenti prezzati in valuta locale.
Per articoli Avatar
Per abilitare i prezzi gestiti per un articolo Avatar, consulta Prezzi nella pagina Pubblica nel Marketplace.
Controlla i prezzi dinamici
Quando abiliti i prezzi gestiti, il prezzo dell'articolo si regola per gli utenti in diverse regioni, sia che sia in vendita all'interno o all'esterno del tuo gioco. Tuttavia, se hai hard-coded il prezzo nell'interfaccia utente del tuo gioco, quel numero non si aggiorna poiché non è dinamico o accessibile da Roblox. Di conseguenza, agli utenti viene addebitato il prezzo specifico per la regione corretto, ma l'interfaccia utente continua a mostrare il valore hard-coded.
Lo strumento di controllo dei prezzi dinamici aggiorna tutti gli articoli in vendita all'interno del tuo gioco con un prezzo falso in Robux o una falsa posizione economica per aiutarti a identificare quali prezzi sono hard-coded nell'interfaccia utente del tuo gioco e quali sono dinamicamente scriptati con MarketplaceService e chiamati da uno script del client. Dopo aver identificato i pass hard-coded, puoi aggiornarli per utilizzare le funzioni di MarketplaceService.
Per utilizzare lo strumento di controllo dei prezzi dinamici:
- Vai su Monetizzazione.
- Per i pass, vai su Pass.
- Per i prodotti dello sviluppatore, vai su Prodotti dello sviluppatore.
- Fai clic su … e seleziona Controllo prezzi dinamici.
- Sotto Aggiungi account di test, inserisci fino a cinque utenti Roblox per controllare i prezzi hard-coded.
- Seleziona un tipo di test.
- Prezzo fissato aggiorna tutti i prezzi dinamicamente scriptati con un importo falso in Robux impostato.
- Posizione fissata aggiorna tutti i prezzi dinamicamente scriptati con un prezzo specifico per regione per una falsa posizione economica.
- Fai clic su Abilita. Dopo pochi minuti, entra nel tuo gioco per identificare i prezzi hard-coded.
Per disabilitare lo strumento di controllo dei prezzi dinamici, vai alla pagina Controllo prezzi dinamici e fai clic su Disabilita.
Per ulteriori informazioni sui prezzi hard-coded rispetto ai prezzi dinamicamente scriptati, consulta Controlla i prezzi dinamici nella pagina Ottimizzazione dei prezzi. Per ulteriori informazioni sulla vendita di pass e prodotti dello sviluppatore con le funzioni di MarketplaceService, consulta Vendi un pass all'interno del tuo gioco e Vendi un prodotto dello sviluppatore all'interno del tuo gioco.
Visualizza i prezzi regionali nel tuo gioco
Con i prezzi gestiti, il prezzo che un utente vede può variare in base alla sua posizione. Se visualizzi i prezzi in un'interfaccia utente personalizzata in-game, come una TextLabel, puoi recuperare le informazioni del prodotto durante l'esecuzione per assicurarti che il prezzo visualizzato corrisponda al prezzo mostrato nel prompt di acquisto.
Per visualizzare il prezzo regionale per un singolo prodotto dello sviluppatore o pass, utilizza GetProductInfoAsync.
Per visualizzare il prezzo regionale per tutti i prodotti dello sviluppatore, utilizza GetDeveloperProductsAsync.
Proteggi i tuoi scambi e regali
I prezzi gestiti possono influenzare i trasferimenti in gioco come trading e gifting. A causa delle differenze di prezzo tra le regioni, l'arbitraggio dei prezzi (sfruttare le discrepanze di prezzo tra gli stessi prodotti per generare un profitto) può avvenire. Per gestire il potenziale arbitraggio dei prezzi, puoi utilizzare l'API GetUsersPriceLevelsAsync, che ti consente di determinare i livelli di prezzo relativi degli utenti in modo da poter implementare logica per regolare i trasferimenti di articoli basata su questi livelli.
GetUsersPriceLevelsAsync fornisce un valore numerico tra 1 e 1000 che indica il livello di prezzo di un utente. Questo valore è progettato per rappresentare la percentuale dell'intero prezzo che un utente è previsto pagare. Il livello di prezzo 1000 rappresenta il prezzo globale intero, mentre livelli di prezzo più bassi indicano che l'utente di solito paga un prezzo più basso a causa della sua posizione economica.
Una differenza di livello di prezzo inferiore significa che c'è una minore differenza di prezzo tra il prezzo globale intero e il prezzo gestito dell'utente. Una differenza di livello di prezzo più alta significa che c'è una maggiore differenza di prezzo tra i due. Ad esempio:
- L'utente A ha il livello di prezzo 1000, che rappresenta il prezzo globale intero. Questo utente paga il 100% del prezzo base per un articolo.
- L'utente B ha il livello di prezzo 500, che rappresenta il 50% del prezzo globale intero. Questo utente paga il 50% del prezzo base per un articolo.
- Una volta che conosci il livello di prezzo di ciascun utente, puoi scegliere di approvare o bloccare il regalo o lo scambio tra l'utente A e l'utente B in base alla loro differenza di livello di prezzo di 500.
Implementa GetUsersPriceLevelsAsync
Per ottenere i livelli di prezzo degli utenti coinvolti in un trasferimento di articoli, chiama la funzione GetUsersPriceLevelsAsync nel MarketplaceService. Questa funzione accetta un array di ID utente come argomento e restituisce un array di oggetti PriceLevelInfo con i seguenti campi:
type PriceLevelInfo = {UserId: number,PriceLevel: number}
Dopo aver implementato la funzione, utilizza i livelli di prezzo restituiti per scegliere se vuoi consentire che un trasferimento di articoli abbia luogo. Ad esempio, puoi consentire agli utenti con un livello di prezzo più alto di regalare articoli agli utenti con un livello di prezzo più basso, ma permettere solo lo scambio tra utenti che hanno lo stesso livello di prezzo tra loro. Consulta gli esempi disponibili per ulteriori informazioni.
Per ulteriori informazioni sull'API GetUsersPriceLevelsAsync, consulta MarketplaceService.
Esempi
Esempi di come puoi utilizzare GetUsersPriceLevelsAsync con prezzi regionali.
Esempio 1: Controlla i livelli di prezzo per un elenco di utenti
Questo esempio ti mostra come recuperare i livelli di prezzo per un elenco di utenti, il che può aiutarti a decidere se vuoi consentire un trasferimento di articoli.
-- Ottieni il MarketplaceService
local MarketplaceService = game:GetService("MarketplaceService")
-- Definisci una funzione per recuperare i livelli di prezzo per un elenco di utenti e crea una tabella di lookup da UserId a PriceLevel
local function getPriceLevelsLookup(userIds)
local success, result = pcall(function()
return MarketplaceService:GetUsersPriceLevelsAsync(userIds)
end)
if success then
-- Mappa ciascun PriceLevelInfo a una tabella di lookup UserId -> PriceLevel
local lookup = {}
for _, userData in ipairs(result) do
lookup[userData.UserId] = userData.PriceLevel
end
return lookup
else
warn("Errore nel recupero dei livelli di prezzo:", result)
return nil
end
end
-- Esempio usando ID segnaposto
local user1Id = 123456789
local user2Id = 987654321
-- Chiama la funzione e salva il risultato
local priceLevels = getPriceLevelsLookup({user1Id, user2Id})
-- Se ha successo, stampa il livello di ciascun utente
if priceLevels then
print("Livello di prezzo per l'Utente 1:", priceLevels[user1Id])
print("Livello di prezzo per l'Utente 2:", priceLevels[user2Id])
else
print("Impossibile recuperare i livelli di prezzo.")
end
Esempio 2: Confronta il livello di prezzo di un mittente con quello di un destinatario
Questo esempio ti mostra una implementazione di esempio di come controllare il livello di prezzo di un mittente rispetto al livello di prezzo del destinatario. Questo può aiutarti a gestire i regali da utenti in regioni con prezzi più alti a utenti in regioni con prezzi più bassi.
-- Ottieni il MarketplaceService
local MarketplaceService = game:GetService("MarketplaceService")
-- Definisci una funzione per recuperare i livelli di prezzo per un elenco di utenti e crea una tabella di lookup da UserId a PriceLevel
local function getPriceLevelsLookup(userIds)
local success, result = pcall(function()
return MarketplaceService:GetUsersPriceLevelsAsync(userIds)
end)
if success then
-- Mappa ciascun PriceLevelInfo a una tabella di lookup UserId -> PriceLevel
local lookup = {}
for _, userData in ipairs(result) do
lookup[userData.UserId] = userData.PriceLevel
end
return lookup
else
warn("Errore nel recupero dei livelli di prezzo:", result)
return nil
end
end
-- Definisci una funzione che verifica se il mittente ha un livello di prezzo superiore o uguale rispetto al destinatario
-- I parametri sono il giocatore che invia l'oggetto e il giocatore che riceve l'oggetto
-- La funzione restituisce true se il livello di prezzo del mittente è maggiore o uguale a quello del destinatario
function isSenderPriceLevelHigherOrEqualforGifting(sender, recipient)
local priceLevelsLookup = getPriceLevelsLookup({ sender.UserId, recipient.UserId })
if not priceLevelsLookup then
error("MarketplaceService:GetUsersPriceLevelsAsync non riuscito. Impossibile recuperare i livelli di prezzo degli utenti.")
end
local senderPriceLevel = priceLevelsLookup[sender.UserId]
local recipientPriceLevel = priceLevelsLookup[recipient.UserId]
return senderPriceLevel >= recipientPriceLevel
end
Esempio 3: Controlla se due utenti hanno lo stesso livello di prezzo
Questo esempio ti mostra una implementazione di esempio di come controllare se due utenti hanno lo stesso livello di prezzo. Questo può aiutarti a gestire lo scambio e garantire uno scambio equo tra utenti di diverse regioni.
-- Ottieni il MarketplaceService
local MarketplaceService = game:GetService("MarketplaceService")
-- Definisci una funzione per recuperare i livelli di prezzo per un elenco di utenti e crea una tabella di lookup da UserId a PriceLevel
local function getPriceLevelsLookup(userIds)
local success, result = pcall(function()
return MarketplaceService:GetUsersPriceLevelsAsync(userIds)
end)
if success then
-- Mappa ciascun PriceLevelInfo a una tabella di lookup UserId -> PriceLevel
local lookup = {}
for _, userData in ipairs(result) do
lookup[userData.UserId] = userData.PriceLevel
end
return lookup
else
warn("Errore nel recupero dei livelli di prezzo:", result)
return nil
end
end
-- Definisci una funzione che verifica se due utenti hanno lo stesso livello di prezzo
-- I parametri sono i due utenti i cui livelli di prezzo vuoi confrontare
-- La funzione restituisce true se entrambi gli utenti hanno lo stesso livello di prezzo
function haveSamePriceLevelForTrading(userA, userB)
local priceLevelsLookup = getPriceLevelsLookup({ userA.UserId, userB.UserId })
if not priceLevelsLookup then
error("MarketplaceService:GetUsersPriceLevelsAsync non riuscito. Impossibile recuperare i livelli di prezzo degli utenti.")
end
local userAPriceLevel = priceLevelsLookup[userA.UserId]
local userBPriceLevel = priceLevelsLookup[userB.UserId]
return userAPriceLevel == userBPriceLevel
end