新人保护榜只收注册三十天内的玩家,冲到全服前一百即毕业,毕业发称号与专属坐骑,并把名额让给后面的新人。毕业接口管三件事:资格判定、结算发奖、名额滚动,防止老号占坑新人没得玩。
定时器每日结算一次:查注册天数与榜单名次,双条件满足即毕业。actor是字符串,转对象后读注册信息。
function checkGraduate(actor, rank)
local player = class(actor)
local regDays = tonumber(getplayvar(actor, 2, "REG_DAYS") or "0")
if regDays > 30 then
sendmsg(actor, 0, "已超过新人保护期30天,不再参与该榜")
return false
end
if rank <= 100 then
setplayvar(actor, "HUMAN", "ROOKIE_GRAD", 1, 1)
sendmail(actor, 0, "新人榜毕业奖励", "排名第" .. rank .. "顺利毕业", "毕业称号卷轴|1;小毛驴坐骑|1")
return true
end
return false
end
毕业一人空出一个位,递补从榜单一百零一名往后顺延,保护期内的玩家始终有一百个目标坑位。
local function refillRanks(graduated)
for i = 1, graduated do
local nxt = 100 + i
sendmail(lookupRankName(nxt), 0, "新人榜递补通知", "已进入保护榜前100", "")
end
end
测试构造三十天边界、九十九名与一百零一名三场景,毕业与递补各归各位。上线后看榜单毕业率,周毕业超过三百人说明保护期太短,新人两周就毕业会让保护形同虚设。
REG_DAYS按注册时间折算,合服并入的玩家注册信息缺失,缺省按老号处理最稳妥,误把老号当新人毕业会引来真新人投诉。lookupRankName查不到离线玩家返回空,递补邮件对空名直接跳过并计数,连续递补失败超十次说明榜单数据源有问题。毕业称号卷轴是唯一产出,重复毕业路径要被GRAD标记挡死,重复结算的客诉比漏发更难处理。递补通知的文案别带第二人称说法,给还没到榜的新人压力感反而是负体验。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 战士的烈火剑法一击熄火后要等八秒冷却,连招断档感强烈。疾风烈火斩在烈火剑法命中后给一次连击窗口:三秒内再…
实战应用:用在哪里 阵营对抗打到中期容易疲软:打赢没有额外好处,输掉也没有代价。阵营声望体系给阵营战装上荣誉刻度:个人与阵营…
实战应用:用在哪里 拿下沙巴克之后呢?城主除了名字挂在城墙上,对城市毫无影响。城主施政玩法让占领变成治理:城主每周获得市政令…
实战应用:用在哪里 主线路光缆被挖断的深夜,全服掉线 20 分钟,玩家以为游戏倒闭。备用线路方案给接入层配第二条出口:主线路…
实战应用:用在哪里 行会官员由帮主任命的老模式弊端明显:任人唯亲、能上不能下。行会选举接口把官员换届做成投票制:每两个月一次…
实战应用:用在哪里 烈火剑法的伤害加成、冷却时间、下一级提升,全靠玩家记忆或去官网查。技能说明悬浮卡片在鼠标悬停技能图标零点…