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
Aggiungi i pacchetti Core e Premi per Partecipazione al tuo inventario all'interno di Studio cliccando sui link Aggiungi all'Inventario qui:
Dal menu Finestra di Studio o dalla barra degli strumenti della scheda Home, apri il Toolbox.
Nella finestra Toolbox, clicca sulla scheda Inventario. Viene visualizzato il filtro I Miei Modelli.

Clicca sulla residenza Pacchetto Funzione Core, poi sulla residenza Pacchetto Funzione Premi per Partecipazione. Entrante le cartelle del pacchetto vengono visualizzate nella finestra Esplora.
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.
| Variabile | Tipo | Descrizione | Predefinito | Richiesto |
|---|---|---|---|---|
| icon | Numero | Un ID asset di Roblox per l'icona nell'interfaccia utente. | N/A | Sì |
| displayName | Stringa | Un nome per i premi per l'uso nell'interfaccia utente. | L'IDPremio | No |
| quantity | Numero | Il numero di oggetti da premiare. | 1 | No |
| effect | RewardEffect | L'effetto visivo da usare nell'interfaccia utente. Vedi Personalizza l'interfaccia utente. | Types.RewardEffect.Default | No |
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.
| Variabile | Tipo | Descrizione | Predefinito | Richiesto |
|---|---|---|---|---|
| requiredSecondsInGame | Numero | Il numero di secondi (un intero positivo) che il giocatore deve trascorrere in gioco per guadagnare il premio. | N/A | Sì |
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.
| Variabile | Tipo | Descrizione | Predefinito | Richiesto |
|---|---|---|---|---|
| requiredDaysVisitedStreak | Numero | Il numero di giorni consecutivi in cui il giocatore deve connettersi all'esperienza per guadagnare il premio. | N/A | Sì |
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
| Variabile | Tipo | Descrizione | Predefinito | Richiesto |
|---|---|---|---|---|
| isHiddenOnJoin | Booleano | Quando è 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. | Falso | No |
| isAlignedToStreakResetTime | Booleano | Quando è 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. | Falso | No |
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.