Premi per partecipazione

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Il pacchetto funzione Premi per Partecipazione è un framework personalizzabile per offrire premi in gioco per determinate attività dei giocatori, inclusi le serie di accesso giornaliere e il tempo di gioco. Oltre alla logica client e server, il pacchetto include un'interfaccia utente predefinita per visualizzare il progresso dei premi, lo stato dei premi e per richiedere premi.

Ottieni il pacchetto

  1. Aggiungi i pacchetti Core e Premi per Partecipazione al tuo inventario all'interno di Studio cliccando sui link Aggiungi all'Inventario qui:

  2. Dal menu Finestra di Studio o dalla barra degli strumenti della scheda Home, apri il Toolbox.

  3. Nella finestra Toolbox, clicca sulla scheda Inventario. Viene visualizzato il filtro I Miei Modelli.

    Finestra del Toolbox di Studio con la scheda Inventario evidenziata.
  4. Clicca sulla residenza Pacchetto Funzione Core, poi sulla residenza Pacchetto Funzione Premi per Partecipazione. Entrante le cartelle del pacchetto vengono visualizzate nella finestra Esplora.

  5. Trascina le cartelle in ReplicatedStorage.

Inizializza il pacchetto

Spostare i pacchetti in ReplicatedStorage e testare la tua esperienza esegue lo script EngagementRewardsExample in ReplicatedStorage.EngagementRewards.Server.Examples.

Questo script mostra come inizializzare il pacchetto per l'uso nella tua esperienza, il che implica il richiamo di diversi script di modulo e la definizione di una funzione rewardClaimedHandlerFunction() che alla fine dà il premio ai giocatori.

Questa funzione deve restituire un booleano. Nell'esempio di script, puoi vedere che non dà alcun premio al giocatore; stampa solo il giocatore, il premio e la quantità che viene richiesta.

EngagementRewardsExample

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EngagementRewardsConfig = require(ReplicatedStorage.EngagementRewards.Configs.EngagementRewardsConfig)
local EngagementRewards = require(ReplicatedStorage.EngagementRewards.Server.EngagementRewards)
local EngagementRewardsUtils = require(ReplicatedStorage.EngagementRewards.Utils.EngagementRewardsUtils)
local Types = require(ReplicatedStorage.EngagementRewards.Configs.Types)
-- Sostituisci questa funzione di gestione con la tua funzione di gestione dei premi richiesti
-- Questa funzione dovrebbe gestire l'evento premio richiesto per il rewardId passato
local function rewardClaimedHandlerFunction(player: Player, rewardId: RewardId, quantity: number): (boolean, string?)
print(`Premio {rewardId} richiesto da {player} con quantità {quantity}`)
return true
end
-- altro

Puoi modificare direttamente questo script o spostarlo in ServerScriptService se questa è la tua posizione preferita per il codice server. Così com'è, lo script è utile solo per scopi di test.

Dare il premio al giocatore varia a seconda dell'esperienza. In alcune esperienze, potresti conferire un aumento dell'esperienza o semplicemente incrementare il conteggio dell'oro del giocatore. In altre esperienze, potresti avere un sistema di inventario personalizzato, mentre altre potrebbero inserire un oggetto negli zaini dei giocatori. In tutti i casi, tuttavia, devi sostituire rewardClaimedHandlerFunction() con la tua funzione.

Aggiungi premi e criteri

La maggior parte della personalizzazione dei premi avviene all'interno di ReplicatedStorage.EngagementRewards.Configs.EngagementRewardsConfig. Questo modulo definisce il premio e i requisiti per sbloccarlo.

Puoi vedere le dichiarazioni di tipo complete (o aggiungerne di nuove) in ReplicatedStorage.EngagementRewards.Configs.Types, ma probabilmente dovrai lavorare solo con EngagementRewardsConfig. Il pacchetto funzione include due tipi di premio: Time e Daily.


local engagementRewardsConfig: Types.EngagementRewardsConfig = {
[Types.RewardType.Time] = {
tabDisplayName = "Tempo",
tabOrder = 1,
description = "Continua a giocare per sbloccare i premi!",
rewards = {
MinutesPlayed1 = {
icon = 116913478160966,
displayName = "Lancia di Ghiaccio",
requiredSecondsInGame = 1 * 5,
},
-- altro
[Types.RewardType.Daily] = {
tabDisplayName = "Giornaliero",
tabOrder = 2,
description = "Gioca ogni giorno per sbloccare i premi!",
rewards = {
DailyStreak1 = {
icon = 116913478160966,
displayName = "Lancia di Ghiaccio",
requiredDaysVisitedStreak = 1,
effect = Types.RewardEffect.Valuable,
},
-- altro

Entrambi i tipi di premio richiedono un'icona, che è un ID asset di Roblox per un'immagine (non un decalcomania). È probabile che tu voglia anche un nome visuale per l'uso nell'interfaccia utente. Specifica quantity per valori diversi da 1. Puoi anche designare opzionalmente un premio come prezioso (effect = Types.RewardEffect.Valuable) per dargli un diverso sfondo nell'interfaccia utente.

VariabileTipoDescrizionePredefinitoRichiesto
iconNumeroUn ID asset di Roblox per l'icona nell'interfaccia utente.N/A
displayNameStringaUn nome per i premi per l'uso nell'interfaccia utente.L'IDPremioNo
quantityNumeroIl numero di oggetti da premiare.1No
effectRewardEffectL'effetto visivo da usare nell'interfaccia utente. Vedi Personalizza l'interfaccia utente.Types.RewardEffect.DefaultNo

Premi per Tempo

I premi Time si sbloccano dopo un certo numero di secondi in gioco. Personalizza questi numeri per soddisfare le tue esigenze. Potresti usare numeri piccoli per una facile verifica, e nell'esperienza pubblicata, conferire un premio dopo 10 minuti, un altro dopo 30 minuti, un altro dopo un'ora, e così via.

La moltiplicazione rende i numeri in secondi più facili da gestire per gli esseri umani, quindi per due ore, potresti preferire specificare 2 * 60 * 60 piuttosto che 7200.

VariabileTipoDescrizionePredefinitoRichiesto
requiredSecondsInGameNumeroIl numero di secondi (un intero positivo) che il giocatore deve trascorrere in gioco per guadagnare il premio.N/A

Premi Giornalieri

I premi Daily si sbloccano dopo un certo numero di accessi consecutivi. Ad esempio, il primo giorno in cui un giocatore accede, potresti dare loro tre pozioni o un cornetto. Nei giorni successivi, potresti premiare con consumabili di valore maggiore, seguiti da un oggetto durevole, come una nuova canna da pesca, dopo sette giorni consecutivi.

VariabileTipoDescrizionePredefinitoRichiesto
requiredDaysVisitedStreakNumeroIl numero di giorni consecutivi in cui il giocatore deve connettersi all'esperienza per guadagnare il premio.N/A

Due opzioni di configurazione aggiuntive per i premi giornalieri sono disponibili nel DailyRewardTabConfig.


[Types.RewardType.Daily] = {
tabDisplayName = "Giornaliero",
tabOrder = 2,
description = "Gioca ogni giorno per sbloccare i premi!",
isHiddenOnJoin = true,
isAlignedToStreakResetTime = true,
rewards = {
DailyStreak1 = {
icon = 116913478160966,
displayName = "Lancia di Ghiaccio",
requiredDaysVisitedStreak = 1,
},
-- altro
VariabileTipoDescrizionePredefinitoRichiesto
isHiddenOnJoinBooleanoQuando è vero, i premi non appaiono automaticamente quando si entra nell'esperienza. Quando è falso, i premi appaiono automaticamente quando ci si unisce al gioco se il giocatore ha un nuovo premio giornaliero da richiedere.FalsoNo
isAlignedToStreakResetTimeBooleanoQuando è vero, i premi per il giorno 2 possono essere richiesti 24 ore dopo l'orario iniziale di richiesta del giorno 1. Quando è falso, i premi del giorno 2 possono essere richiesti alla prima mezzanotte dopo l'orario di richiesta del giorno 1. Ad esempio, se un giocatore accede alle 23:00 e richiede il premio del giorno 1, vero significa che non possono richiedere il premio del giorno 2 fino alle 23:00 del giorno successivo. Falso significa che possono richiedere il premio del giorno 2 a mezzanotte, un'ora dopo. I premi per il giorno 3 e oltre sono sempre disponibili 24 ore dopo l'orario richiedibile del giorno precedente.FalsoNo

Personalizza l'interfaccia utente

Nella sezione precedente, potresti aver notato i campi tabDisplayName, tabOrder e description, che consentono una personalizzazione di base dell'interfaccia utente. Puoi anche trovare alcune stringhe dell'interfaccia utente in ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings.

  • Per specificare un nuovo sfondo per i premi utilizzando la variabile effect, aggiungi un frame a ReplicatedStorage.EngagementRewards.Objects.RewardItemFrames. Quindi aggiungi il nome del frame alla tabella Types.RewardEffect in ReplicatedStorage.EngagementRewards.Configs.Types.

  • Per una personalizzazione più completa, modifica gli oggetti in ReplicatedStorage.EngagementRewards.Objects. Ad esempio, potresti modificare il BackgroundColor3 del frame RewardsHudButton.Background o il Color del FooterContentFrame.ClaimableUIGradient.

  • Il punto di ingresso per l'interfaccia utente è lo script ReplicatedStorage.EngagementRewards.Client.UIController, che recupera gli oggetti necessari e inizializza l'interfaccia utente. Se aggiungi o rinomini oggetti di livello superiore (anziché aggiungere solo figli o modificare proprietà), dovrai probabilmente aggiornare il codice in questa cartella per gestirli.

© 2026 Roblox Corporation. Roblox, il logo Roblox e Powering Imagination sono tra i nostri marchi registrati e non registrati negli Stati Uniti. e altri paesi.