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 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 把大逃杀的缩圈机制搬进沙巴克野区:五十人无阵营乱斗,安全区每六十秒收缩一圈,圈外持续掉血,终局幸存者独享…
实战应用:用在哪里 家园作物成熟在几小时后,玩家不可能掐点上线。成熟通知链路:种植时登记成熟时间,服务端到点推送成熟消息,离…
实战应用:用在哪里 家园的作物成熟后,隔壁玩家能不能来摘?归属校验的答案:默认私有只许主人收,好友可经主人授权代收,陌生人一…
实战应用:用在哪里 允许好友代收后,越界采摘的防范要升级:作物可被好友代收但不可被恶意盯梢,家园犬与守护结界给主人两件防护工…
实战应用:用在哪里 坐骑天赋树开放后,玩家点了左边分支发现右边才是自己想要的,天赋点却无法重置,三天收到四十七单申诉。复盘补…
实战应用:用在哪里 师门积分商店的每周限购要让玩家一眼看懂:已购几件、还剩几件、本周几号刷新。限购商店的界面把这三个信息做成…