Recompensas de Engajamento

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

O pacote de recursos de Recompensas de Engajamento é uma estrutura personalizável para oferecer recompensas no jogo por certas atividades dos jogadores, incluindo sequências de login diárias e tempo de sessão de jogo. Além da lógica do cliente e do servidor, o pacote inclui uma interface padrão para visualizar o progresso das recompensas, o status das recompensas e a reivindicação de recompensas.

Obter o pacote

  1. No menu Janela do Studio ou na barra de ferramentas da aba Início, abra a Caixa de Ferramentas.

  2. Na janela Caixa de Ferramentas, clique na aba Inventário. A classificação Meus Modelos é exibida.

    Janela da Caixa de Ferramentas do Studio com a aba Inventário destacada.
  3. Clique no bloco Pacote de Recursos Core, depois no bloco Pacote de Recursos de Recompensas de Engajamento. Ambas as pastas do pacote são exibidas na janela Explorer.

  4. Arraste as pastas para ReplicatedStorage.

Inicializar o pacote

Mover os pacotes para ReplicatedStorage e testar seu jogo executa o script EngagementRewardsExample em ReplicatedStorage.EngagementRewards.Server.Examples.

Este script mostra como inicializar o pacote para uso em seu jogo, o que envolve requerer vários scripts de módulo e definir uma função rewardClaimedHandlerFunction() que, em última análise, concede a(s) recompensa(s) ao jogador.

Esta função deve retornar um booleano. No script de exemplo, você pode ver que ele não concede nenhuma recompensa ao jogador; ele apenas imprime o jogador, a recompensa e a quantidade sendo reivindicada.

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)
-- Substitua esta função de manipulador por sua própria função de manipulador de recompensa reivindicada
-- Esta função deve lidar com o evento de recompensa reivindicada para o rewardId passado
local function rewardClaimedHandlerFunction(player: Player, rewardId: RewardId, quantity: number): (boolean, string?)
print(`Recompensa {rewardId} reivindicada por {player} com quantidade {quantity}`)
return true
end
-- mais

Você pode modificar este script diretamente ou movê-lo para ServerScriptService se esse for o seu local preferido para código do servidor. No estado atual, o script é útil apenas para fins de teste.

Conceder a recompensa ao jogador varia de jogo para jogo. Em alguns jogos, você pode conceder um impulso no jogo ou apenas incrementar a contagem de ouro do jogador. Em outros jogos, você pode ter um sistema de inventário personalizado, enquanto outros podem colocar um item nas mochilas dos jogadores. Em todos os casos, no entanto, você deve substituir rewardClaimedHandlerFunction() pela sua própria função.

Adicionar recompensas e critérios

A maior parte da personalização das recompensas ocorre dentro de ReplicatedStorage.EngagementRewards.Configs.EngagementRewardsConfig. Este script de módulo define a recompensa e os requisitos para desbloqueá-la.

Você pode ver as declarações de tipo completas (ou adicionar novas) em ReplicatedStorage.EngagementRewards.Configs.Types, mas você provavelmente só precisa trabalhar com EngagementRewardsConfig. O pacote de recursos inclui dois tipos de recompensa: Time e Daily.

local engagementRewardsConfig: Types.EngagementRewardsConfig = {
[Types.RewardType.Time] = {
tabDisplayName = "Tempo",
tabOrder = 1,
description = "Continue jogando para desbloquear recompensas!",
rewards = {
MinutesPlayed1 = {
icon = 116913478160966,
displayName = "Lança de Gelo",
requiredSecondsInGame = 1 * 5,
},
-- mais
[Types.RewardType.Daily] = {
tabDisplayName = "Diário",
tabOrder = 2,
description = "Jogue diariamente para desbloquear recompensas!",
rewards = {
DailyStreak1 = {
icon = 116913478160966,
displayName = "Lança de Gelo",
requiredDaysVisitedStreak = 1,
effect = Types.RewardEffect.Valuable,
},
-- mais

Ambos os tipos de recompensa exigem um ícone, que é um ID de ativo do Roblox para uma imagem (não um decalque). Você provavelmente também desejará um nome de exibição para uso na interface do usuário. Especifique quantity para valores diferentes de 1. Você também pode designar opcionalmente uma recompensa como valiosa (effect = Types.RewardEffect.Valuable) para dar a ela um quadro de fundo diferente na interface do usuário.

VariávelTipoDescriçãoPadrãoObrigatório
iconNúmeroUm ID de ativo do Roblox para o ícone da interface do usuário.N/ASim
displayNameStringUm nome para as recompensas para uso na interface do usuário.O RewardIdNão
quantityNúmeroO número de itens a serem recompensados.1Não
effectRewardEffectO efeito visual a ser usado na interface do usuário. Veja Personalizar a UI.Types.RewardEffect.DefaultNão

Recompensas de Tempo

As recompensas de Time são desbloqueadas após um certo número de segundos no jogo. Personalize esses números para atender às suas necessidades. Você pode usar números pequenos para testes fáceis e, no jogo publicado, conceder uma recompensa após 10 minutos, outra após 30 minutos, outra após uma hora e assim por diante.

A multiplicação torna os números em segundos mais fáceis para os humanos trabalharem, então para duas horas, você pode preferir especificar 2 * 60 * 60 em vez de 7200.

VariávelTipoDescriçãoPadrãoObrigatório
requiredSecondsInGameNúmeroO número de segundos (um inteiro positivo) que o jogador deve passar no jogo para ganhar a recompensa.N/ASim

Recompensas Diárias

As recompensas Daily são desbloqueadas após um certo número de logins diários consecutivos. Por exemplo, no primeiro dia em que um jogador faz login, você pode dar a ele três poções ou um rolo de canela. Nos dias subsequentes, você pode recompensar consumíveis mais valiosos, seguidos por um item durável, como uma nova vara de pescar, após sete dias consecutivos.

VariávelTipoDescriçãoPadrãoObrigatório
requiredDaysVisitedStreakNúmeroO número de dias consecutivos que o jogador deve se conectar ao jogo para ganhar a recompensa.N/ASim

Duas opções adicionais de configuração de recompensa diária estão disponíveis no DailyRewardTabConfig.

[Types.RewardType.Daily] = {
tabDisplayName = "Diário",
tabOrder = 2,
description = "Jogue diariamente para desbloquear recompensas!",
isHiddenOnJoin = true,
isAlignedToStreakResetTime = true,
rewards = {
DailyStreak1 = {
icon = 116913478160966,
displayName = "Lança de Gelo",
requiredDaysVisitedStreak = 1,
},
-- mais
VariávelTipoDescriçãoPadrãoObrigatório
isHiddenOnJoinBooleanoQuando verdadeiro, as recompensas não aparecem automaticamente ao entrar no jogo. Quando falso, as recompensas aparecem automaticamente ao entrar no jogo se o jogador tiver uma nova recompensa diária a reivindicar.FalsoNão
isAlignedToStreakResetTimeBooleanoQuando verdadeiro, as recompensas do dia 2 podem ser reivindicadas 24 horas após o tempo reivindicável do dia 1. Quando falso, as recompensas do dia 2 podem ser reivindicadas à meia-noite após o tempo reivindicável do dia 1. Por exemplo, se um jogador fizer login às 23:00 e reivindicar sua recompensa do dia 1, verdadeiro significa que ele não pode reivindicar a recompensa do dia 2 até às 23:00 do dia seguinte. Falso significa que ele pode reivindicar a recompensa do dia 2 à 00:00, uma hora depois. As recompensas do dia 3 e além estão sempre disponíveis 24 horas após o tempo reivindicável do dia anterior.FalsoNão

Personalizar a UI

Na seção anterior, você pode ter notado os campos tabDisplayName, tabOrder e description, que permitem uma personalização básica da interface do usuário. Você também pode encontrar algumas strings de UI em ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings.

  • Para especificar um novo fundo de recompensa usando a variável effect, adicione um quadro a ReplicatedStorage.EngagementRewards.Objects.RewardItemFrames. Em seguida, adicione o nome do quadro à tabela Types.RewardEffect em ReplicatedStorage.EngagementRewards.Configs.Types.

  • Para uma personalização mais abrangente, modifique os objetos em ReplicatedStorage.EngagementRewards.Objects. Por exemplo, você pode modificar o BackgroundColor3 do quadro RewardsHudButton.Background ou o Color do FooterContentFrame.ClaimableUIGradient.

  • O ponto de entrada para a interface do usuário é o script ReplicatedStorage.EngagementRewards.Client.UIController, que obtém os objetos necessários e inicializa a UI. Se você adicionar ou renomear objetos de nível superior (em vez de apenas adicionar filhos ou modificar propriedades), você provavelmente precisará atualizar o código nesta pasta para lidar com eles.

©2026 Roblox Corporation, Roblox, o logotipo Roblox e Powering Imagination estão entre nossas marcas registradas e não registradas nos EUA e em outros países.