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.

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:
- Configura un RemoteEvent en ReplicatedStorage para crear un evento remoto para comunicarse con el cliente cuando se recibe una referencia.
- 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