好友邀请奖励系统

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处


朋友推荐系统鼓励现有玩家将新玩家带入您的体验中,增加玩家留存率和整体互动与度。玩家可以通过 玩家邀请提示 或直接从默认体验邀请菜单访问和分享推荐链接。

作为开发者,您可以使用这些可共享的推荐链接来:

  • 跟踪哪些玩家已成功邀请其他玩家进入您的体验。
  • 跟踪哪些玩家使用了其他玩家的推荐链接邀请加入你的体验。
  • 创建并分发奖励给邀请者和受邀者。

邀请朋友 弹出窗口和 朋友推荐奖励 旗帜将在 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)

设置转介事件

要设置转介事件:

  1. RemoteEvent 中设置一个 ReplicatedStorage 来创建一个远程事件,与客户端通信时收到推荐时通信。
  2. 使用 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