Sistema de recompensa de invitación de amigos

*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 sistema de recomendación de amigos alienta a los jugadores existentes a traer nuevos jugadores a tu experiencia, aumentando la retención de jugadores y el compromiso general.Los jugadores pueden acceder y compartir enlaces de referencia desde los mensajes de invitación del jugador o directamente desde el menú de invitación predeterminado en la experiencia.

Como desarrollador, puedes usar estos enlaces de referencia compartibles para:

  • Rastrea qué jugadores han invitado con éxito a otros jugadores a tu experiencia.
  • Rastrea qué jugadores se han unido a tu experiencia usando una invitación de enlace de referencia de otro jugador.
  • Crea y distribuye recompensas a ambos invitados e invitados.
La invitación de amigos y las recompensas de referencia de amigos se harán disponibles a principios de 2025.

Para implementar un sistema de referencia de amigos, configura un evento de referencia y crea recompensas de referencia.La propiedad ReferredByPlayerId de GetJoinData() automáticamente se rellena para todos los tipos de invitaciones y te da acceso al ID de usuario del jugador remitente.Luego puedes acceder a estos datos en el evento Players.PlayerAdded para identificar al invitador y otorgar recompensas al invitador y al invitado.


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

Configurar un evento de referencia

Para configurar un evento de referencia:

  1. Configura un RemoteEvent en ReplicatedStorage para crear un evento remoto para comunicarse con el cliente cuando se recibe una referencia.
  2. Recupera la ID de usuario del invitador usando ReferredByPlayerId para rastrear las uniones de jugadores y manejar la lógica de referencia en el script del lado del servidor durante el evento Players.PlayerAdded.

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Crear o obtener el evento remoto para manejar las referencias
local referrerEvent: RemoteEvent = ReplicatedStorage:FindFirstChild("ReferralReceivedEvent")
-- Función que se activa cuando un jugador se une
function onPlayerAdded(player)
local joinData = player:GetJoinData()
local referredByPlayerId = joinData.ReferredByPlayerId
-- Compruebe si el jugador fue invitado a través de una referencia
if referredByPlayerId and referredByPlayerId ~= 0 then
-- Dispara el evento de referencia al cliente, pasando el ID del invitador
referrerEvent:FireClient(player, referredByPlayerId)
-- Se puede agregar lógica adicional para recompensar al invitador y al invitado aquí
-- por ejemplo, rewardReferrer(referredByPlayerId)
-- por ejemplo, rewardInvitee(jugador)
end
end
-- Conecta la función al evento PlayerAdded
Players.PlayerAdded:Connect(onPlayerAdded)

Recompensas de referencia de concesión

Para fomentar la participación, otorgar recompensas a ambos invitados e invitados.Por ejemplo, puedes dar a los invitados una insignia o una moneda de experiencia en la experiencia cuando su amigo se una a la experiencia, y dar a los invitados una recompensa de bienvenida por unirse a la experiencia a través de un enlazarde referencia.


local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Crear o obtener el evento remoto para manejar las referencias
local referrerEvent: RemoteEvent = ReplicatedStorage:FindFirstChild("ReferralReceivedEvent")
-- Función que se activa cuando un jugador se une
function onPlayerAdded(player)
local joinData = player:GetJoinData()
local referredByPlayerId = joinData.ReferredByPlayerId
-- Compruebe si el jugador fue invitado a través de una referencia
if referredByPlayerId and referredByPlayerId ~= 0 then
-- Dispara el evento de referencia al cliente, pasando el ID del invitador
referrerEvent:FireClient(player, referredByPlayerId)
-- Recompensar al invitador
function rewardReferrer(referrerId)
local referrerPlayer = Players:GetPlayerByUserId(referrerId)
if referrerPlayer then
-- Otorgar al invitador su recompensa
-- Ejemplo: referrerPlayer.leaderstats.Coins.Value += 100
end
end
-- Recompensar al invitado
function rewardInvitee(player)
-- Otorgar al invitado su recompensa
-- Ejemplo: jugador.leaderstats.WelcomeBonus.Value += 50
end
end
end
-- Conecta la función al evento PlayerAdded
Players.PlayerAdded:Connect(onPlayerAdded)

Administrar la prevención del abuso

Puedes implementar salvaguardias para evitar que los jugadores exploten el sistema de recomendación de amigos.

  • Ofrezca recompensas únicas para rastrear a los invitados y asegúrese de que solo sean recompensados una vez.
  • Introduce un período de espera antes de que un invitador pueda enviar otra recomendación.
  • Supervisa la actividad inusual y aplica medidas correctivas como prohibir a los usuarios o cancelar recompensas.

-- Tabla para rastrear jugadores que ya se han referido
local referredPlayers = {}
function onPlayerAdded(player)
local joinData = player:GetJoinData()
local referredByPlayerId = joinData.ReferredByPlayerId
-- Compruebe si el jugador fue invitado y aún no ha utilizado una referencia
if referredByPlayerId and referredByPlayerId ~= 0 and not referredPlayers[player.UserId] then
-- Marca al jugador como referido
referredPlayers[player.UserId] = true
-- Invitador de recompensas y invitado
rewardReferrer(referredByPlayerId)
rewardInvitee(player)
end
end