朋友推荐系统鼓励现有玩家将新玩家带入您的体验中,增加玩家留存率和整体互动与度。玩家可以通过 玩家邀请提示 或直接从默认体验邀请菜单访问和分享推荐链接。
作为开发者,您可以使用这些可共享的推荐链接来:
- 跟踪哪些玩家已成功邀请其他玩家进入您的体验。
- 跟踪哪些玩家使用了其他玩家的推荐链接邀请加入你的体验。
- 创建并分发奖励给邀请者和受邀者。

邀请朋友 弹出窗口和 朋友推荐奖励 旗帜将在 2025 年初推出。
要实现朋友推荐系统,设置推荐事件并创建推荐奖励。ReferredByPlayerId 属性的 GetJoinData() 自动填充所有类型的邀请,并给你访问参考玩家的用户ID。然后,你可以在 Players.PlayerAdded 事件中访问这些数据来识别邀请者并向邀请者和被邀请者授予奖励。
function onPlayerAdded(player)
local referredByPlayerId = player:GetJoinData().ReferredByPlayerId
local referrerEvent: RemoteEvent = ReplicatedStorage:FindFirstChild("ReferralReceivedEvent")
referrerEvent:FireClient(player, referredByPlayerId)
end
Players.PlayerAdded:Connect(onPlayerAdded)
设置转介事件
要设置转介事件:
- 在 RemoteEvent 中设置一个 ReplicatedStorage 来创建一个远程事件,与客户端通信时收到推荐时通信。
- 使用 ReferredByPlayerId 来检索邀请者的用户 ID,跟踪玩家加入并在 Players.PlayerAdded 事件期间处理服务器端脚本的转介逻辑。
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- 创建或获取远程事件来处理推荐以获取
local referrerEvent: RemoteEvent = ReplicatedStorage:FindFirstChild("ReferralReceivedEvent")
-- 当玩家加入时触发的函数
function onPlayerAdded(player)
local joinData = player:GetJoinData()
local referredByPlayerId = joinData.ReferredByPlayerId
-- 检查玩家是否通过推荐被邀请
if referredByPlayerId and referredByPlayerId ~= 0 then
-- 向客户发射推荐事件,传递邀请者的ID
referrerEvent:FireClient(player, referredByPlayerId)
-- 奖励邀请者和受邀者的额外逻辑可以在这里添加
-- 例如:奖励推荐者(由玩家ID引用)
-- 例如:rewardInvitee(playe玩家)
end
end
-- 将函数连接到 PlayerAdded 事件
Players.PlayerAdded:Connect(onPlayerAdded)
授予推荐奖励
鼓励参与,向邀请者和受邀者授予奖励。例如,当朋友加入体验时,您可以给予邀请者徽章或体验货币,并给予邀请者通过推荐关联接加入体验的欢迎奖励。
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- 创建或获取远程事件来处理推荐以获取
local referrerEvent: RemoteEvent = ReplicatedStorage:FindFirstChild("ReferralReceivedEvent")
-- 当玩家加入时触发的函数
function onPlayerAdded(player)
local joinData = player:GetJoinData()
local referredByPlayerId = joinData.ReferredByPlayerId
-- 检查玩家是否通过推荐被邀请
if referredByPlayerId and referredByPlayerId ~= 0 then
-- 向客户发射推荐事件,传递邀请者的ID
referrerEvent:FireClient(player, referredByPlayerId)
-- 奖励邀请者
function rewardReferrer(referrerId)
local referrerPlayer = Players:GetPlayerByUserId(referrerId)
if referrerPlayer then
-- 授予邀请者奖励
-- 例子:referrerPlayer.leaderstats.Coins.Value += 100
end
end
-- 奖励邀请者
function rewardInvitee(player)
-- 奖励邀请者
-- 例子:玩家.leaderstats.WelcomeBonus.Value += 50
end
end
end
-- 将函数连接到 PlayerAdded 事件
Players.PlayerAdded:Connect(onPlayerAdded)
管理滥用防止
您可以实施措施来防止玩家利用朋友推荐系统进行欺诈。
- 提供一次性奖励来跟踪邀请人并确保他们只获得一次奖励。
- 介绍一个冷却期,在邀请者提交另一个推荐之前。
- 监控不寻常的活动,并实施纠正措施,例如禁止用户或取消奖励。
-- 跟踪已被引用的玩家的表
local referredPlayers = {}
function onPlayerAdded(player)
local joinData = player:GetJoinData()
local referredByPlayerId = joinData.ReferredByPlayerId
-- 检查玩家是否被邀请且尚未使用推荐,
if referredByPlayerId and referredByPlayerId ~= 0 and not referredPlayers[player.UserId] then
-- 标记玩家为参考
referredPlayers[player.UserId] = true
-- 奖励邀请者和受邀者
rewardReferrer(referredByPlayerId)
rewardInvitee(player)
end
end