Ricompense di impegno

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

Il pacchetto di funzionalità Premi di impegno è un framework personalizzabile per offrire ricompense in gioco per determinate attività del giocatore, tra cui serie di accessi giornalieri e tempo di sessione di gioco.Oltre alla logica client-server, il pacchetto include un'interfaccia utente predefinita per visualizzare il progresso delle ricompense, lo Statodelle ricompense e richiedere le ricompense.

Ottieni il pacchetto

  1. In Studio, seleziona la scheda Vista .

  2. Fai clic su Toolbox .

    Studio's View tab with the Toolbox tool highlighted.
  3. Nella finestra Toolbox , fai clic sulla scheda Inventario .

    Studio's Toolbox window with the Inventory tab highlighted.
  4. Fai clic sul Piastrella Feature Package Core , quindi sul Piastrella Engagement Rewards Feature Package .Entrambi i cartelletti del pacchetto vengono visualizzati nella finestra Explorer .

  5. Trascina le cartelle in ReplicatedStorage .

Inizializza il pacchetto

Spostare i pacchetti a ReplicatedStorage e testare la tua esperienza esegue lo script in >.

Questo script mostra come inizializzare il pacchetto per l'uso nella tua esperienza, che implica il richiedere diversi script di modulo e definire una funzione rewardClaimedHandlerFunction() che alla fine dà la ricompensa (e) al Giocatore.

Questa funzione deve restituire un booleano.Nello script di esempio, puoi vedere che non dà alcuna ricompensa al Giocatore; stampa solo il Giocatore, la ricompensa e la quantità che viene richiesta.

Esempio di ricompense di impegno

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 gestore con la tua funzione gestore di ricompensa reclamata
-- Questa funzione dovrebbe gestire l'evento di ricompensa reclamato per il rewardId passato
local function rewardClaimedHandlerFunction(player: Player, rewardId: RewardId, quantity: number): (boolean, string?)
print(`Reward {rewardId} claimed by {player} with quantity {quantity}`)
return true
end
-- more

Puoi modificare questo script direttamente o spostarlo a ServerScriptService se è la tua posizione preferita per il codice del server.Come è, lo script è utile solo per scopi di test.

Dare la ricompensa al giocatore varia per esperienza.In alcune esperienze, potresti conferire un aumento dell'esperienza o semplicemente aumentare il conteggio dell'oro del Giocatore.In altre esperienze, potresti avere un sistema di inventario personalizzato, mentre altri potrebbero mettere un oggetto negli zaini del giocatore.In tutti i casi, però, devi sostituire rewardClaimedHandlerFunction() con la tua funzione.

Aggiungi ricompense e criteri

La maggior parte della personalizzazione delle ricompense avviene entro ReplicatedStorage.EngagementRewards.Configs.EngagementRewardsConfig . Questo script del modulo definisce la ricompensa e i requisiti per sbloccarla.

Puoi vedere le dichiarazioni di tipo completo (o aggiungerne nuove) in ReplicatedStorage.EngagementRewards.Configs.Types , ma probabilmente devi lavorare solo con EngagementRewardsConfig .Il pacchetto delle funzionalità include due tipi di ricompensa: Time e Daily .


local engagementRewardsConfig: Types.EngagementRewardsConfig = {
[Types.RewardType.Time] = {
tabDisplayName = "Time",
tabOrder = 1,
description = "Keep playing to unlock rewards!",
rewards = {
MinutesPlayed1 = {
icon = 116913478160966,
displayName = "Ice Lance",
requiredSecondsInGame = 1 * 5,
},
-- più
[Types.RewardType.Daily] = {
tabDisplayName = "Daily",
tabOrder = 2,
description = "Play daily to unlock rewards!",
rewards = {
DailyStreak1 = {
icon = 116913478160966,
displayName = "Ice Lance",
requiredDaysVisitedStreak = 1,
effect = Types.RewardEffect.Valuable,
},
-- more

Entrambi i tipi di ricompensa richiedono un'Icona, che è un ID risorsa Roblox per un'immagine ( non un Decalcomania).Probabilmente vuoi anche un nome da mostrare per l'uso nell'interfaccia utente.Specifica quantity per valori diversi da 1.Puoi anche designare opzionalmente una ricompensa come preziosa ( effect = Types.RewardEffect.Valuable ) per darle un diverso contesto di sfondo nell'interfaccia utente.

Variabile | Tipo | Descrizione | Predefinito | Richiesto :--- | :--- | :--- | :--- | :--- icona | Numero | Un ID risorsa Roblox per l'Iconadell'interfaccia utente.| N/A | Sì displayName | String | Un nome per le ricompense per l'uso nell'interfaccia utente.| Il RewardId | Nessuna quantità | Numero | Il numero di oggetti da ricompensare.| 1 | Nessun effetto | RewardEffect | L'effetto visivo da utilizzare nell'UI.Vedi Personalizza l'interfaccia utente .| Types.RewardEffect.Default | No

Premi di tempo

Time le ricompense si sbloccano dopo un certo numero di secondi in gioco.Personalizza questi numeri per soddisfare le tue esigenze.Potresti usare piccoli numeri per test facili e, nell'esperienza pubblicata, conferire una ricompensa dopo 10 minuti, un'altra dopo 30 minuti, un'altra dopo un'ora e così via.

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

Variabile | Tipo | Descrizione | Predefinito | Richiesto :--- | :--- | :--- | :--- | :--- richiestoSecondsInGame | Numero | Il numero di secondi (un Integropositivo) che il giocatore deve spendere in gioco per guadagnare la ricompensa.| N/A | Sì

Premi giornalieri

Daily le ricompense si sbloccano dopo un certo numero di accessi giornalieri consecutivi.Ad esempio, il primo giorno in cui un giocatore si registra, potresti dargli tre pozioni o un rotolo alla cannella.Nei giorni successivi, potresti premiare consumabili più preziosi, seguiti da un Articolodurevole, come una nuova canna da pesca, dopo sette giorni consecutivi.

Variabile | Tipo | Descrizione | Predefinito | Richiesto :--- | :--- | :--- | :--- | richiestoDaysVisitedStreak | Numero | Il numero di giorni consecutivi in cui il giocatore deve connettersi all'esperienza per guadagnare la ricompensa.| N/A | Sì

Sono disponibili due opzioni di configurazione della ricompensa giornaliera aggiuntiva nel DailyRewardTabConfig .


[Types.RewardType.Daily] = {
tabDisplayName = "Daily",
tabOrder = 2,
description = "Play daily to unlock rewards!",
isHiddenOnJoin = true,
isAlignedToStreakResetTime = true,
rewards = {
DailyStreak1 = {
icon = 116913478160966,
displayName = "Ice Lance",
requiredDaysVisitedStreak = 1,
},
-- more

Variabile | Tipo | Descrizione | Predefinito | Richiesto :--- | :--- | :--- | :--- | :--- isHiddenOnJoin | Boolean | Quando è vero, le ricompense non vengono visualizzate automaticamente quando si entra nell'esperienza.Quando è falso, le ricompense si aprono automaticamente quando si entra nel gioco se il giocatore ha una nuova ricompensa giornaliera da reclamare.| Falso | No isAlignedToStreakResetTime | Boolean | Quando è vero, le ricompense per il giorno 2 possono essere richieste 24 ore dopo il tempo di reclamo iniziale del giorno 1.Quando è falso, le ricompense del giorno 2 possono essere richieste alla prima mezzanotte dopo il giorno 1 reclamabile.Ad esempio, se un giocatore si registra alle 11:00 PM (23:00) e richiede la ricompensa del giorno 1, il vero significa che non può richiedere la ricompensa del giorno 2 fino alle 11:00 PM del giorno successivo.Falso significa che possono richiedere la ricompensa del giorno 2 alle 12:00 AM (00:00), un'ora dopo.Le ricompense per il giorno 3 e oltre sono sempre disponibili 24 ore dopo il tempo reclamabile del giorno precedente.| Falso | No

Personalizza l'interfaccia utente

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

  • Per specificare un nuovo background di ricompensa 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 frame FooterContentFrame.ClaimableUIGradient.

  • Il punto di ingresso per l'interfaccia utente è lo script ReplicatedStorage.EngagementRewards.Client.UIController, che ottiene gli oggetti necessari e inizializza l'interfaccia utente.Se aggiungi o rinomini gli oggetti di alto livello (a differenza di aggiungere solo figli o modificare le proprietà), è probabile che tu debba aggiornare il codice in questo folder per gestirli.