跳到主要内容

PRD-049 好友召回

文档编号:PRD-049
版本:v1.0
状态:已通过
适用端:服务端 / 客户端
脚本挂载:lua/activity/recall.lua

1. 背景与目标​

召回活动用于拉回流失玩家与促进邀请。邀请码、回流判定、里程碑奖励适合用 Lua 编排,可快速调整活动周期。

目标

  • 活跃玩家生成邀请码,邀请回流玩家绑定。
  • 回流玩家完成指定任务,双方获得奖励。
  • 邀请人数达到里程碑额外奖励,防刷小号。

2. 核心规则​

  • 流失定义:连续 7 天未登录且等级 ≥ 20。
  • 活跃玩家每日可邀请 3 人,绑定关系 30 天。
  • 回流玩家填写邀请码后,完成 5 个回流任务。
  • 每完成 1 个任务,双方获得积分;全部完成额外宝箱。
  • 邀请 1/3/5/10 人解锁里程碑奖励。
  • 同 IP/同设备/同支付账号判定为小号,不计入。

3. 服务端设计​

3.1 Lua 脚本设计​

-- lua/activity/recall.lua
Recall = {
min_level = 20,
inactive_days = 7,
bind_days = 30,
daily_invite = 3,
milestones = { 1, 3, 5, 10 },
}

function OnGenerateCode(ctx, role)
local code = ctx:GetOrCreateInviteCode(role)
ctx:Send(role, "SC_RecallCode", code)
end

function OnBind(ctx, new_role, code)
local inviter = ctx:GetRoleByCode(code)
if not inviter then return ctx:Fail(new_role, "邀请码无效") end
if not ctx:IsReturning(new_role, Recall.inactive_days) then
return ctx:Fail(new_role, "不符合回流条件")
end
if not ctx:CanInvite(inviter, Recall.daily_invite) then
return ctx:Fail(new_role, "邀请次数已用完")
end
ctx:BindRecall(inviter, new_role, Recall.bind_days)
end

function OnRecallTask(ctx, role, task_id)
local inviter = ctx:GetInviter(role)
if not inviter then return end
ctx:AddRecallScore(inviter, role, 10)
if ctx:AllTasksDone(role) then
ctx:GrantRecallChest(inviter, role)
end
end
  • 邀请码、绑定关系、任务进度持久化。
  • 回流判定使用最后登录时间,服务端时间。
  • 小号判定在绑定与发奖时双重校验。

3.2 协议​

方向协议说明
C→SCS_RecallCode获取邀请码
C→SCS_RecallBind填写邀请码
S→CSC_RecallInfo绑定/任务/积分
S→CSC_RecallReward奖励/里程碑

3.3 防刷​

  • 同 IP/设备/支付账号绑定多个新号,只计首个。
  • 回流玩家 30 天内不可被重复绑定。
  • 奖励领取幂等,按 inviter + invitee + task 唯一。

4. 客户端设计​

  • 召回面板:邀请码、复制/分享、绑定入口。
  • 回流任务列表与进度。
  • 里程碑奖励预览与领取。
  • 绑定成功提示、双方奖励展示。
  • 活动倒计时与规则说明。

5. 配置与 Lua 接口​

配置说明
inactive_days回流判定
bind_days绑定有效期
daily_invite每日邀请
tasks回流任务
milestones里程碑

Lua 接口:GetOrCreateInviteCode、GetRoleByCode、IsReturning、BindRecall、AddRecallScore、GrantRecallChest。

6. 边界与异常​

场景处理
邀请码重复使用每个回流号只能绑定一次
绑定后未登录7 天未登录自动解绑
活动结束未领取奖励邮件补发
小号判定不计入、不发奖、记录风控
脚本异常绑定回滚,记录日志

7. 验收标准​

  • 邀请码/绑定/回流任务/积分/里程碑正确。
  • 回流判定、绑定有效期、每日邀请限制生效。
  • 小号/同 IP 防刷生效。
  • 奖励幂等,活动结束可补发。
  • 客户端进度与服务端一致。