El sistema de recomendación de amigos fomenta a los jugadores existentes a traer nuevos jugadores a su experiencia, aumentando la retención del jugador y el compromiso general. Los jugadores pueden acceder y compartir enlaces de recomendación desde invitaciones de jugador invitaciones o directamente desde el menú de invitación de experiencia por defecto.
Como desarrollador, puedes usar estos enlaces de referencia compartibles para:
- Rastrea a los jugadores que han invitado con éxito a otros jugadores a tu experiencia.
- Rastrea a los jugadores que se han unido a tu experiencia usando una invitación de enlace de otro jugador.
- Crea y distribuye recompensas a los invitantes y a los invitados.
Para implementar un sistema de recomendación de amigos, configura un evento de recomendación y crea recompensas de recomendación . La propiedad ReferredByPlayerId de 2> Class.Player:GetJoinData()|GetJoinData()2>
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 recomendación.
- Recupera el ID de usuario del invitado usando ReferredByPlayerId para rastrear la unión del jugador y manejar la lógica de recomendación en tu script del lado del servidor durante el evento Players.PlayerAdded .
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Cree o obtenga el evento remoto para manejar las recomendaciones
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
-- Consulta si el jugador fue invitado a través de una recomendación
if referredByPlayerId then
-- Inicia el evento de referencia al cliente, pasando el ID del invitador
referrerEvent:FireClient(player, referredByPlayerId)
-- Se puede añadir lógica adicional para recompensar a los invitados y a los invitados.
-- e.g., rewardReferrer(referredByPlayerId)
-- e.g., rewardInvitee(jugador)
end
end
-- Conecta la función al evento PlayerAdded
Players.PlayerAdded:Connect(onPlayerAdded)
Recompensas de Referencia
Para fomentar la participación, otorgue recompensas a los invitados y a los invitados. Por ejemplo, puede dar a los invitados una insignia o moneda de experiencia cuando su amigo se une a la experiencia, y puede dar a los invitados una recompensa de bienvenida por unirse a la experiencia a través de un enlazarde recomendación.
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Cree o obtenga el evento remoto para manejar las recomendaciones
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
-- Consulta si el jugador fue invitado a través de una recomendación
if referredByPlayerId then
-- Inicia el evento de referencia al cliente, pasando el ID del invitador
referrerEvent:FireClient(player, referredByPlayerId)
-- Recompensa al invitador
function rewardReferrer(referrerId)
local referrerPlayer = Players:GetPlayerByUserId(referrerId)
if referrerPlayer then
-- Otorga la recompensa al invitado
-- Ejemplo: referrerPlayer.leaderstats.Coins.Value (+100)
end
end
-- Recompensa al invitado
function rewardInvitee(player)
-- Otorga la invitación su recompensa
-- Ejemplo: jugador.leaderstats.WelcomeBonus.Value (+50)
end
end
end
-- Conecta la función al evento PlayerAdded
Players.PlayerAdded:Connect(onPlayerAdded)
Administrar prevención de abuso
Puede implementar medidas de seguridad para evitar que los jugadores exploten el sistema de recomendación de amigos.
- Ofrece recompensas únicas para rastrear a los invitados y asegurarte de que solo sean recompensados una vez.
- Introduce un período de tiempo de reutilización antes de que un invitador envíe otro referido.
- Supervisa la actividad inusual y implementa medidas correctivas como el ban de usuarios o la cancelación de recompensas.
-- Tabla para rastrear jugadores que ya se han referido
local referredPlayers = {}
function onPlayerAdded(player)
local joinData = player:GetJoinData()
local referredByPlayerId = joinData.ReferredByPlayerId
-- Consulta si el jugador fue invitado y no ha utilizado una recomendación
if referredByPlayerId and not referredPlayers[player.UserId] then
-- Marca al jugador como se le ha atribuido
referredPlayers[player.UserId] = true
-- Invitador de recompensas y invitado
rewardReferrer(referredByPlayerId)
rewardInvitee(player)
end
end