Sistema de recompensa de convite de amigo

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


O sistema de referência de amigos incentiva jogadores existentes a trazer novos jogadores para sua experiência, aumentando a retenção de jogadores e o engajamento geral.Jogadores podem acessar e compartilhar links de referência a partir de prompts de convite de jogador ou diretamente do menu de convite padrão na experiência.

Como desenvolvedor, você pode usar esses links de referência compartilháveis para:

  • Acompanhe quais jogadores convidaram com sucesso outros jogadores para sua experiência.
  • Acompanhe quais jogadores se juntaram à sua experiência usando um convite de link de referência de outro jogador.
  • Crie e distribua recompensas para ambos os convidados e convidados.
O convite de amigos pop-up e recompensas de referência de amigos banner ficará disponível no início de 2025.

Para implementar um sistema de referência de amigo, configure um evento de referência e crie recompensas de referência.A propriedade ReferredByPlayerId da GetJoinData() preenche automaticamente todos os tipos de convites e dá acesso ao ID do usuário do jogador referente.Você pode então acessar esses dados no evento Players.PlayerAdded para identificar o convidador e conceder recompensas ao convidador e ao convidado.


function onPlayerAdded(player)
local referredByPlayerId = player:GetJoinData().ReferredByPlayerId
local referrerEvent: RemoteEvent = ReplicatedStorage:FindFirstChild("ReferralReceivedEvent")
referrerEvent:FireClient(player, referredByPlayerId)
end
Players.PlayerAdded:Connect(onPlayerAdded)

Configurar um evento de referência

Para configurar um evento de referência:

  1. Configure um RemoteEvent em ReplicatedStorage para criar um evento remoto para se comunicar com o cliente quando um referenciamento for recebido.
  2. Recupere o ID do usuário do convidador usando ReferredByPlayerId para rastrear entradas de jogadores e lidar com a lógica de referência no script do lado do servidor durante o evento Players.PlayerAdded.

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Crie ou obtenha o RemoteEvent para lidar com referências
local referrerEvent: RemoteEvent = ReplicatedStorage:FindFirstChild("ReferralReceivedEvent")
-- Função que é acionada quando um jogador se junta
function onPlayerAdded(player)
local joinData = player:GetJoinData()
local referredByPlayerId = joinData.ReferredByPlayerId
-- Verifique se o jogador foi convidado através de um referente
if referredByPlayerId and referredByPlayerId ~= 0 then
-- Dispare o evento de referência para o cliente, passando o ID do convidador
referrerEvent:FireClient(player, referredByPlayerId)
-- Lógica adicional para recompensar o convidador e o convidado pode ser adicionada aqui
-- e.g., recompensaReferente(referidoPorId do Jogador)
-- e.g., rewardInvitee(jogador)
end
end
-- Conecte a função ao evento PlayerAdded
Players.PlayerAdded:Connect(onPlayerAdded)

Recompensas de referência de conceder

Para incentivar a participação, conceda recompensas a ambos os convidadores e convidados.Por exemplo, você pode dar aos convidados um distintivo ou moeda na experiência quando seu amigo se juntar à experiência e dar aos convidados uma recompensa de boas-vindas por se juntar à experiência através de um víncular / conectarde referência.


local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Crie ou obtenha o RemoteEvent para lidar com referências
local referrerEvent: RemoteEvent = ReplicatedStorage:FindFirstChild("ReferralReceivedEvent")
-- Função que é acionada quando um jogador se junta
function onPlayerAdded(player)
local joinData = player:GetJoinData()
local referredByPlayerId = joinData.ReferredByPlayerId
-- Verifique se o jogador foi convidado através de um referente
if referredByPlayerId and referredByPlayerId ~= 0 then
-- Dispare o evento de referência para o cliente, passando o ID do convidador
referrerEvent:FireClient(player, referredByPlayerId)
-- Recompense o convidador
function rewardReferrer(referrerId)
local referrerPlayer = Players:GetPlayerByUserId(referrerId)
if referrerPlayer then
-- Conceda ao convidador sua recompensa
-- Exemplo: referrerPlayer.leaderstatus.Coins.Value += 100
end
end
-- Recompense o convidado
function rewardInvitee(player)
-- Conceda ao convidado sua recompensa
-- Exemplo: jogador.leaderstats.WelcomeBonus.Value += 50
end
end
end
-- Conecte a função ao evento PlayerAdded
Players.PlayerAdded:Connect(onPlayerAdded)

Gerenciar prevenção de abuso

Você pode implementar salvaguardas para impedir que os jogadores explorem o sistema de referência de amigos.

  • Ofereça recompensas únicas para rastrear convidados e garantir que eles sejam recompensados apenas uma vez.
  • Introduza um período de espera antes que um convidador possa enviar outra referência.
  • Monitore atividades incomuns e implemente medidas corretivas, como proibir usuários ou cancelar recompensas.

-- Tabela para rastrear jogadores que já foram referidos
local referredPlayers = {}
function onPlayerAdded(player)
local joinData = player:GetJoinData()
local referredByPlayerId = joinData.ReferredByPlayerId
-- Verifique se o jogador foi convidado e ainda não usou um referente
if referredByPlayerId and referredByPlayerId ~= 0 and not referredPlayers[player.UserId] then
-- Marque o jogador como referido
referredPlayers[player.UserId] = true
-- Convidador de recompensa e convidado
rewardReferrer(referredByPlayerId)
rewardInvitee(player)
end
end