setautogetexp 是定时发放经验的引擎接口:修炼 Patr、挂机奖励、会员离线收益的定时经验全走它。接口按间隔与单次数量自动发放,发放的节奏与上限的控制在接口参数与外层的校验里完成。
---定时自动经验 actor:玩家 evetime:间隔秒 experience:单次经验 isSafe:限安全区 mapid:地图 opt:叠加 alltime:总时长 level:等级上限
function setautogetexp(actor, evetime, experience, isSafe, mapid, opt, alltime, level) end
-- 会员离线修炼:每 60 秒 5000 经验,持续 4 小时
function vipOfflineTrain(actor)
setautogetexp(actor, 60, 5000, 1, actor.mapId, 0, 14400, actor.level)
sendmsg(actor, 1, "离线修炼已开启,持续 4 小时")
end
evetime 是发放间隔秒,experience 是单次经验,alltime 是总时长秒,到期自动停止。isSafe 置 1 限定只在安全区生效,挂机修炼与打怪经验的冲突由区域区分。发放的经验走 changeexp 的统一管线,升级链的联动自动完成。
---修炼的每日上限
function Train.limit(actor)
local today = os.date("%Y%m%d")
local earned = getplayvar(actor, "HUMAN", "train_" .. today) or 0
if earned >= 400000 then
return false, "今日修炼收益已达上限"
end
setplayvar(actor, "HUMAN", "train_" .. today, earned + 5000, 1)
return true
end
修炼的每日收益上限 40 万经验,上限的计数按自然日重置。挂机修炼与在线打怪的经验池分离统计,两条曲线的平衡由数值组按周校准。修炼的开启条件绑定 VIP 等级或月卡,权益的边界在商城说明页公示。修炼的状态在角色下线时暂停、上线时恢复,离线的时段不计时——离线收益是独立的商品,不与在线修炼混算。
修炼经验的发放总量与 VIP 权益的比值监控,发放的速率异常(突增三倍)触发权益滥用排查。
修炼的经验曾经绕过防沉迷的递减,挂机收益全额发放,递减的挂钩补上后公平恢复。定时器在下线时的清理曾经遗漏,上线的重复开启导致双倍收益,定时器的注销与开启严格配对。
修炼的界面显示剩余时长与预计收益,玩家的预期管理靠信息透明。修炼的收益进经验流水单独标记,修炼的产出与打怪的经验在报表里分列对比,两条成长线的平衡有数据支撑。
本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 全服排行榜动辄上千人,战士玩家想在榜单里找同职业对标,翻十页也找不到。排行榜筛选给榜单加两个维度:职业切…
实战应用:用在哪里 攻城战只有正门一条路,攻方堆人海、守方堆城防,打法单一。沙巴克密道给攻城加一条暗线:城内密道在攻城期间限…
实战应用:用在哪里 回归玩家的最大落差不是数值而是孤独:好友列表一片灰,行会换了人。回归结伴行把回流玩家的重连做成结伴任务:…
实战应用:用在哪里 活动变量是变量膨胀的最大来源:每个活动结束都留下一堆过期键,活动变量曾一个月膨胀四成。过期键清理给变量键…
实战应用:用在哪里 灰度放量靠人工盯盘的时代,异常发现总是慢 10 分钟。灰度回滚线给放量过程装自动保险:灰度组的核心指标(…
实战应用:用在哪里 活动期间获取积分翻倍,是拉活跃的常用手段,但翻倍的实现经常出问题:翻倍叠加、翻倍范围失控、翻倍后回溯。积…