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 Recompensas de compromiso es un marco personalizable para ofrecer recompensas en el juego por ciertas actividades del jugador, incluidas 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 la recompensa, el estado de la recompensa y reclamar recompensas.

Obtener el paquete

  1. Añade los paquetes Núcleo y Recompensas de compromiso a tu inventario dentro de Studio haciendo clic en los enlaces Añadir al inventario aquí:

  2. En Studio, seleccione la pestaña Ver .

  3. Haga clic en Caja de herramientas .

    Studio's View tab with the Toolbox tool highlighted.
  4. En la ventana Caja de herramientas , haga clic en la pestaña Inventario .

    Studio's Toolbox window with the Inventory tab highlighted.
  5. Haga clic en el azulejo Núcleo de mosaicode características , luego en el azulejo mosaicode características de recompensas de compromiso .Ambas carpetas de paquete se muestran en la ventana Explorador .

  6. Arrastra las carpetas a ReplicatedStorage .

Inicializar el paquete

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

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

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

Ejemplo de recompensas de compromiso

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)
-- Reemplazar esta función de manejo con tu propia función de recompensa reclamada
-- Esta función debe manejar el evento de recompensa reclamada para el ID de recompensa pasado
local function rewardClaimedHandlerFunction(player: Player, rewardId: RewardId, quantity: number): (boolean, string?)
print(`Reward {rewardId} claimed by {player} with quantity {quantity}`)
return true
end
-- more

Puede modificar este script directamente o moverlo a Servicio de guión del servidor si esa es su ubicación preferida para el código del servidor.Como está, el script solo es útil para fines de prueba.

Dar la recompensa al jugador varía por experiencia.En algunas experiencias, puedes conferir un impulso de experiencia o simplemente incrementar el recuento de oro del jugador.En otras experiencias, es posible que tengas un sistema de inventario personalizado, mientras que otros pueden poner un artículo en las mochilas del jugador.En todos los casos, sin embargo, debes reemplazar rewardClaimedHandlerFunction() con tu propia función.

Añadir recompensas y criterios

La mayoría de la personalización de recompensas ocurre dentro de ReplicatedStorage.EngagementRewards.Configs.EngagementRewardsConfig . Este guión 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 recompensa: Time y 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,
},
-- más
[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

Ambos tipos de recompensa requieren un ícono, que es un ID de activo de Roblox para una imagen ( no un adhesivo).Es probable que también quieras un nombre de visualización para su uso en la interfaz de usuario.Especifique quantity para valores diferentes a 1.También puedes designar opcionalmente una recompensa como valiosa ( effect = Types.RewardEffect.Valuable ) para darle un marco de fondo diferente en la interfaz.

variable | Tipo | Descripción | Por defecto | Requerido :--- | :--- | :--- | :--- | :--- icon | Número | Un ID de activo de Roblox para el íconode la interfaz de usuario.| N/A | Sí displayName | String | Un nombre para las recompensas para su uso en la interfaz de usuario.| El RewardId | Sin cantidad | Número | El número de artículos a recompensar.| 1 | Sin efecto | RewardEffect | El efecto visual para usar en la interfaz de usuario.Vea Personalizar la interfaz de usuario.| Types.RewardEffect.Default | No

Recompensas de tiempo

Time las recompensas se desbloquean después de un cierto número de segundos en el juego.Personalice estos números para satisfacer sus necesidades.Puedes usar números pequeños para pruebas fáciles, y en la experiencia publicada, 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 sean más fáciles de trabajar para los humanos en segundos, por lo que durante dos horas, quizás prefieras especificar 2 * 60 * 60 en lugar de 7200.

Variable | Tipo | Descripción | Por defecto | Requerido :--- | :--- | :--- | :--- | :--- requeridoSecondsInGame | Número | El número de segundos (un entero positivo) que el jugador debe pasar en el juego para ganar la recompensa.| N/A | Sí

Recompensas diarias

Daily las recompensas 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 se registre, puedes darle tres pociones o un rollo de canela.En los días siguientes, puedes recompensar consumibles más valiosos, seguidos de un objetoduradero, como una nueva caña de pescar, después de siete días consecutivos.

Variable | Tipo | Descripción | Por defecto | Requerido :--- | :--- | :--- | :--- | :--- requiredDaysVisitedStreak | Número | El número de días consecutivos que el jugador debe conectar a la experiencia para ganar la recompensa.| N/A | Sí

Dos opciones adicionales de configuración de recompensa diaria están disponibles en el 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 | Tipo | Descripción | Por defecto | Requerido :--- | :--- | :--- | :--- | :--- isHiddenOnJoin |Boolean| Cuando sea verdad, las recompensas no aparecen automáticamente al unirse a la experiencia.Cuando es falso, las recompensas aparecen automáticamente al unirse al juego si el jugador tiene una nueva recompensa diaria para reclamar.| Falso | No está alineado con el tiempo de reinicio de racha |Boolean| Cuando es verdadero, se pueden reclamar recompensas por el día 2 24 horas después del tiempo de reclamo inicial del día 1.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 se registra a las 11:00 PM (23:00) y reclama su recompensa del día 1, el verdadero significa que no puede reclamar la recompensa del día 2 hasta las 11:00 PM del día siguiente.Falso significa que pueden reclamar la recompensa del día 2 a las 12:00 AM (00:00), una hora después.Las recompensas por el día 3 y más allá siempre están disponibles 24 horas después del tiempo reclamable del día anterior.| Falsa | No

Personalizar la interfaz de usuario

En la sección anterior, es posible que haya 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 usando la variable effect, agregue un marco a ReplicatedStorage.EngagementRewards.Objects.RewardItemFrames.Luego agregue el nombre del marco a la tabla Types.RewardEffect en ReplicatedStorage.EngagementRewards.Configs.Types.

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

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