Recompensas de participación

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

El paquete de características de Recompensas de Participación es un marco personalizable para ofrecer recompensas en el juego por ciertas actividades de los jugadores, incluyendo rachas de inicio de sesión diarias y tiempo de sesión de juego. Además de la lógica del cliente y del servidor, el paquete incluye una interfaz de usuario predeterminada para ver el progreso de las recompensas, el estado de las recompensas y reclamar recompensas.

Obtén el paquete

  1. Desde el menú Ventana de Studio o la barra de herramientas de la pestaña Inicio, abre el Toolbox.

  2. En la ventana Toolbox, haz clic en la pestaña Inventario. Se muestra la clasificación Mis Modelos.

    Ventana del Toolbox de Studio con la pestaña Inventario resaltada.
  3. Haz clic en el mosaico Paquete de Características Core, luego en el mosaico Paquete de Características de Recompensas de Participación. Ambas carpetas de paquetes se muestran en la ventana Explorer.

  4. Arrastra las carpetas a ReplicatedStorage.

Inicializa el paquete

Mover los paquetes a ReplicatedStorage y probar tu juego ejecuta el script EngagementRewardsExample en ReplicatedStorage.EngagementRewards.Server.Examples.

Este script muestra cómo inicializar el paquete para su uso en tu juego, lo que implica requerir varios scripts de módulo y definir una función rewardClaimedHandlerFunction() que, en última instancia, otorga la(s) recompensa(s) al jugador.

Esta función debe devolver un booleano. En el script de ejemplo, puedes ver que no otorga ninguna recompensa al jugador; solo imprime el jugador, la recompensa y la cantidad que se está reclamando.

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)
-- Reemplaza esta función de controlador con tu propia función de controlador de recompensa reclamada
-- Esta función debe manejar el evento de recompensa reclamada para el rewardId pasado
local function rewardClaimedHandlerFunction(player: Player, rewardId: RewardId, quantity: number): (boolean, string?)
print(`Recompensa {rewardId} reclamada por {player} con cantidad {quantity}`)
return true
end
-- más

Puedes modificar este script directamente o moverlo a ServerScriptService si esa es tu ubicación preferida para el código del servidor. Tal como está, el script solo es útil para fines de prueba.

Otorgar la recompensa al jugador varía según el juego. En algunos juegos, podrías otorgar un impulso en el juego o simplemente incrementar la cantidad de oro del jugador. En otros juegos, podrías tener un sistema de inventario personalizado, mientras que otros podrían colocar un objeto en las mochilas de los jugadores. En todos los casos, sin embargo, debes reemplazar rewardClaimedHandlerFunction() con tu propia función.

Agrega recompensas y criterios

La mayor parte de la personalización de recompensas ocurre dentro de ReplicatedStorage.EngagementRewards.Configs.EngagementRewardsConfig. Este script de módulo define la recompensa y los requisitos para desbloquearla.

Puedes ver las declaraciones de tipo completas (o agregar nuevas) en ReplicatedStorage.EngagementRewards.Configs.Types, pero probablemente solo necesites trabajar con EngagementRewardsConfig. El paquete de características incluye dos tipos de recompensas: Time y Daily.

local engagementRewardsConfig: Types.EngagementRewardsConfig = {
[Types.RewardType.Time] = {
tabDisplayName = "Tiempo",
tabOrder = 1,
description = "¡Sigue jugando para desbloquear recompensas!",
rewards = {
MinutesPlayed1 = {
icon = 116913478160966,
displayName = "Lanza de Hielo",
requiredSecondsInGame = 1 * 5,
},
-- más
[Types.RewardType.Daily] = {
tabDisplayName = "Diario",
tabOrder = 2,
description = "¡Juega diariamente para desbloquear recompensas!",
rewards = {
DailyStreak1 = {
icon = 116913478160966,
displayName = "Lanza de Hielo",
requiredDaysVisitedStreak = 1,
effect = Types.RewardEffect.Valuable,
},
-- más

Ambos tipos de recompensas requieren un ícono, que es un ID de activo de Roblox para una imagen (no un decalcomanía). También querrás un nombre para mostrar para usar en la interfaz de usuario. Especifica quantity para valores diferentes de 1. También puedes designar opcionalmente una recompensa como valiosa (effect = Types.RewardEffect.Valuable) para darle un marco de fondo diferente en la interfaz de usuario.

VariableTipoDescripciónPredeterminadoRequerido
iconNúmeroUn ID de activo de Roblox para el ícono de la interfaz de usuario.N/A
displayNameCadenaUn nombre para las recompensas para usar en la interfaz de usuario.El RewardIdNo
quantityNúmeroLa cantidad de artículos a recompensar.1No
effectRewardEffectEl efecto visual a usar en la interfaz de usuario. Ver Personaliza la interfaz de usuario.Types.RewardEffect.DefaultNo

Recompensas de tiempo

Las recompensas de Time se desbloquean después de un cierto número de segundos en el juego. Personaliza estos números para satisfacer tus necesidades. Podrías usar números pequeños para pruebas fáciles, y en el juego publicado, otorgar una recompensa después de 10 minutos, otra después de 30 minutos, otra después de una hora, y así sucesivamente.

La multiplicación hace que los números en segundos sean más fáciles de manejar para los humanos, así que para dos horas, podrías preferir especificar 2 * 60 * 60 en lugar de 7200.

VariableTipoDescripciónPredeterminadoRequerido
requiredSecondsInGameNúmeroEl número de segundos (un entero positivo) que el jugador debe pasar en el juego para ganar la recompensa.N/A

Recompensas diarias

Las recompensas Daily se desbloquean después de un cierto número de inicios de sesión diarios consecutivos. Por ejemplo, el primer día que un jugador inicia sesión, podrías darle tres pociones o un rollo de canela. En días posteriores, podrías recompensar consumibles más valiosos, seguido de un objeto duradero, como una nueva caña de pescar, después de siete días consecutivos.

VariableTipoDescripciónPredeterminadoRequerido
requiredDaysVisitedStreakNúmeroEl número de días consecutivos que el jugador debe conectarse al juego para ganar la recompensa.N/A

Hay dos opciones adicionales de configuración de recompensas diarias disponibles en el DailyRewardTabConfig.

[Types.RewardType.Daily] = {
tabDisplayName = "Diario",
tabOrder = 2,
description = "¡Juega diariamente para desbloquear recompensas!",
isHiddenOnJoin = true,
isAlignedToStreakResetTime = true,
rewards = {
DailyStreak1 = {
icon = 116913478160966,
displayName = "Lanza de Hielo",
requiredDaysVisitedStreak = 1,
},
-- más
VariableTipoDescripciónPredeterminadoRequerido
isHiddenOnJoinBooleanoCuando es verdadero, las recompensas no aparecen automáticamente al unirse al juego. Cuando es falso, las recompensas aparecen automáticamente al unirse al juego si el jugador tiene una nueva recompensa diaria para reclamar.FalsoNo
isAlignedToStreakResetTimeBooleanoCuando es verdadero, las recompensas del día 2 se pueden reclamar 24 horas después del tiempo reclamable del día 1 inicial. Cuando es falso, las recompensas del día 2 se pueden reclamar a la primera medianoche después del tiempo reclamable del día 1. Por ejemplo, si un jugador inicia sesión a las 11:00 PM (23:00) y reclama su recompensa del día 1, verdadero significa que no puede reclamar la recompensa del día 2 hasta las 11:00 PM del día siguiente. Falso significa que puede reclamar la recompensa del día 2 a las 12:00 AM (00:00), una hora después. Las recompensas del día 3 y posteriores siempre están disponibles 24 horas después del tiempo reclamable del día anterior.FalsoNo

Personaliza la interfaz de usuario

En la sección anterior, es posible que hayas notado los campos tabDisplayName, tabOrder y description, que permiten una personalización básica de la interfaz de usuario. También puedes encontrar algunas cadenas de interfaz de usuario en ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings.

  • Para especificar un nuevo fondo de recompensa utilizando la variable effect, agrega un marco a ReplicatedStorage.EngagementRewards.Objects.RewardItemFrames. Luego agrega el nombre del marco a la tabla Types.RewardEffect en ReplicatedStorage.EngagementRewards.Configs.Types.

  • Para una personalización más completa, modifica los objetos en ReplicatedStorage.EngagementRewards.Objects. Por ejemplo, podrías modificar el BackgroundColor3 del marco RewardsHudButton.Background o el Color de FooterContentFrame.ClaimableUIGradient.

  • El punto de entrada para la interfaz de usuario es el script ReplicatedStorage.EngagementRewards.Client.UIController, que obtiene los objetos necesarios e inicializa la interfaz de usuario. Si agregas o renombras objetos de nivel superior (en lugar de solo agregar hijos o modificar propiedades), probablemente necesites actualizar el código en esta carpeta para manejarlos.

©2026 Roblox Corporation. Roblox, el logotipo de Roblox y "Powering Imagination" son algunas de nuestras marcas registradas y no registradas en los Estados Unidos y otros países.