Récompenses d'engagement

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Le paquet de fonctionnalités Récompenses d'engagement est un cadre personnalisable pour offrir des récompenses en jeu pour certaines activités de joueurs, y compris les séquences de connexion quotidiennes et le temps de session de jeu.En plus de la logique client-serveur, le paquet inclut une interface utilisateur par défaut pour afficher la progression des récompenses, l'statutdes récompenses et réclamer des récompenses.

Obtenir le paquet

  1. Ajoutez les packages noyau et récompenses d'engagement à votre inventaire dans Studio en cliquant sur les liens ajouter à l'inventaire ici :

  2. Dans Studio, sélectionnez l'onglet Affichage .

  3. Cliquez sur Boîte à outils .

    Studio's View tab with the Toolbox tool highlighted.
  4. Dans la fenêtre boîte à outils , cliquez sur l'onglet inventaire .

    Studio's Toolbox window with the Inventory tab highlighted.
  5. Cliquez sur la case Feature Package Core , puis sur la case Package de récompenses d'engagement .Les deux dossiers de paquet s'affichent dans la fenêtre Explorateur .

  6. Faites glisser les dossiers dans ReplicatedStorage .

Initialiser le paquet

Déplacer les packages vers ReplicatedStorage et tester votre expérience exécute le script dans >.

Ce script montre comment initialiser le paquet pour son utilisation dans votre expérience, qui implique la nécessité de plusieurs scripts de module et la définition d'une fonction rewardClaimedHandlerFunction() qui donne en fin de compte la récompense(s) au joueur.

Cette fonction doit retourner un booléen.Dans le script d'exemple, vous pouvez voir que cela ne donne aucune récompense au joueur ; il n'imprime que le joueur, la récompense et la quantité revendiquée.

Exemple de récompenses d'engagement

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)
-- Remplacez cette fonction de gestionnaire par votre propre fonction de gestionnaire réclamée récompense
-- Cette fonction doit gérer l'événement de récompense revendiqué pour le récompenseId passé
local function rewardClaimedHandlerFunction(player: Player, rewardId: RewardId, quantity: number): (boolean, string?)
print(`Reward {rewardId} claimed by {player} with quantity {quantity}`)
return true
end
-- more

Vous pouvez soit modifier ce script directement, soit le déplacer vers ServerScriptService si c'est votre emplacement préféré pour le code du serveur.Tel quel, le script n'est utile que pour des tests.

Donner la récompense au joueur varie en fonction de l'expérience.Dans certaines expériences, vous pouvez conférer un boost d'expérience ou simplement augmenter le nombre d'or du joueur.Dans d'autres expériences, vous pourriez avoir un système d'inventaire personnalisé, tandis que d'autres pourraient placer un article dans le sac à dos du joueur.Dans tous les cas, cependant, vous devez remplacer rewardClaimedHandlerFunction() par votre propre fonction.

Ajouter des récompenses et des critères

La plupart des personnalisations de récompenses se produisent dans ReplicatedStorage.EngagementRewards.Configs.EngagementRewardsConfig . Ce script de module définit la récompense et les exigences pour la déverrouiller.

Vous pouvez voir les déclarations de type complètes (ou en ajouter de nouvelles) dans ReplicatedStorage.EngagementRewards.Configs.Types , mais vous n'avez probablement besoin de travailler qu'avec EngagementRewardsConfig .Le paquet de fonctionnalités inclut deux types de récompenses : Time et 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,
},
-- plus
[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

Les deux types de récompense nécessitent une icône, qui est un ID de ressource Roblox pour une image ( pas une insigne).Vous voulez probablement aussi un nom d'affichage à utiliser dans l'interface utilisateur.Spécifiez quantity pour des valeurs autres que 1.Vous pouvez également désigner optionnellement une récompense comme précieuse ( effect = Types.RewardEffect.Valuable ) pour lui donner un cadre de fond différent dans l'interface utilisateur.

Variable | Type | Description | Par défaut | Requis :--- | :--- | :--- | :--- | :--- icône | Nombre | Un ID de ressource Roblox pour l'icône de l'interface utilisateur.| N/A | Oui displayName | Chaîne | Un nom pour les récompenses à utiliser dans l'interface utilisateur.| Le RewardId | Pas de quantité | Nombre | Le nombre d'objets à récompenser.| 1 | Aucun effet | RewardEffect | L'effet visuel à utiliser dans l'interface utilisateur.Voir personnaliser l'interface utilisateur.| Types.RewardEffect.Default | No

Récompenses de temps

Time les récompenses se débloquent après un certain nombre de secondes dans le jeu.Personnalisez ces chiffres pour répondre à vos besoins.Vous pouvez utiliser de petits chiffres pour des tests faciles, et dans l'expérience publiée, conférer une récompense après 10 minutes, une autre après 30 minutes, une autre après une heure, et ainsi de suite.

La multiplication rend les chiffres plus faciles à travailler pour les humains en quelques secondes, donc pendant deux heures, vous préférez peut-être spécifier 2 * 60 * 60 plutôt que 7200.

Variable | Type | Description | Par défaut | Requis :--- | :--- | :--- | :--- | :--- requisSecondsInGame | Nombre | Le nombre de secondes (un nombre entier positif) que le joueur doit dépenser dans le jeu pour gagner la récompense.| N/A | Oui

Récompenses quotidiennes

Daily les récompenses se débloquent après un certain nombre de connexions quotidiennes consécutives.Par exemple, le premier jour où un joueur se connecte, vous pouvez lui donner trois potions ou une brioche à la cannelle.Les jours suivants, vous pourriez récompenser des consommables plus précieux, suivis d'un itemdurable, comme une nouvelle canne à pêche, après sept jours consécutifs.

Variable | Type | Description | Par défaut | Requis :--- | :--- | :--- | :--- | :--- requiredDaysVisitedStreak | Nombre | Le nombre de jours consécutifs au cours desquels le joueur doit se connecter à l'expérience pour gagner la récompense.| N/A | Oui

Deux options de configuration de récompense quotidienne supplémentaires sont disponibles dans le 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

Variable | Type | Description | Par défaut | Obligatoire :--- | :--- | :--- | :--- | :--- isHiddenOnJoin | Boolean | Lorsque true, les récompenses ne s'affichent pas automatiquement lors de l'adhésion à l'expérience.Lorsque false, les récompenses apparaissent automatiquement lorsque vous rejoignez le jeu si le joueur a une nouvelle récompense quotidienne à réclamer.| Faux | Non est aligné sur le temps de réinitialisation de série | Boolean | Lorsque c'est vrai, les récompenses pour le jour 2 peuvent être réclamées 24 heures après le temps de réclamation initial du jour 1.Lorsque c'est faux, les récompenses de la journée 2 peuvent être réclamées à la première minuit après le temps réclamable de la journée 1.Par exemple, si un joueur se connecte à 23h00 et réclame sa récompense du jour 1, le vrai signifie qu'il ne peut pas réclamer la récompense du jour 2 avant 23h00 le lendemain.Faux signifie qu'ils peuvent réclamer la récompense du jour 2 à 12h00 (00:00), une heure plus tard.Les récompenses pour le jour 3 et au-delà sont toujours disponibles 24 heures après le temps réclamable de la journée précédente.| Faux | Non

Personnaliser l'interface utilisateur

Dans la section précédente, vous avez peut-être remarqué les champs tabDisplayName, tabOrder et description, qui permettent une personnalisation basique de l'interface utilisateur.Vous pouvez également trouver certaines chaînes d'interface utilisateur dans ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings .

  • Pour spécifier un nouveau fond de récompense en utilisant la variable effect, ajoutez un cadre à ReplicatedStorage.EngagementRewards.Objects.RewardItemFrames.Ensuite, ajoutez le nom du cadre à la table Types.RewardEffect dans ReplicatedStorage.EngagementRewards.Configs.Types .

  • Pour une personnalisation plus complète, modifiez les objets dans ReplicatedStorage.EngagementRewards.Objects .Par exemple, vous pouvez modifier le BackgroundColor3 du cadre RewardsHudButton.Background ou le Color du cadre FooterContentFrame.ClaimableUIGradient.

  • Le point d'entrée pour l'interface utilisateur est le script ReplicatedStorage.EngagementRewards.Client.UIController, qui obtient les objets nécessaires et initialise l'interface utilisateur.Si vous ajoutez ou renommez des objets de niveau supérieur (par opposition à n'ajouter que des enfants ou de modifier des propriétés), vous devez probablement mettre à jour le code dans ce dossier pour les gérer.