屠魔战场是每日限时的 PVE 竞技活动:30 分钟内全场刷怪,按个人击杀积分排名发奖,怪无限刷、比的是手速与路线规划。定时全员活动的实现要点是活动状态机、积分账本与结算发放的自动化,三条链路全部走真名接口串接。
---全局定时器 22 号:每 10 秒驱动状态机
setontimerex(22, 10)
local STAGE = { idle = 0, fighting = 1, settle = 2 }
function Slaughter.tick()
local now = os.time()
if Slaughter.stage == STAGE.idle and Slaughter.isOpenTime(now) then
Slaughter.stage = STAGE.fighting
Slaughter.endAt = now + 1800
QF_Broadcast("屠魔战场开启,限时 30 分钟!")
Slaughter.spawnWave()
elseif Slaughter.stage == STAGE.fighting and now > Slaughter.endAt then
Slaughter.stage = STAGE.settle
Slaughter.settle()
end
end
状态机三态轮转:闲时、战斗中、结算中。开启时刻进配置表,战斗时长 1800 秒,全局定时器每 10 秒驱动一次状态检查。开战期间 spawnWave 每 10 秒在战场随机刷一波沃玛卫士与黑野猪,怪物资质统一,公平比拼输出效率与清怪路线。
---killmon: 击杀怪物触发
function killmon(actor, monName)
if Slaughter.stage ~= STAGE.fighting then return end
local rec = Slaughter.board[actor:GetUserId()]
if not rec then
rec = { score = 0, kills = 0 }
Slaughter.board[actor:GetUserId()] = rec
end
rec.score = rec.score + Slaughter.monScore[monName]
rec.kills = rec.kills + 1
end
function Slaughter.settle()
local rank = Slaughter.sortedBoard()
for i, rec in ipairs(rank) do
if i <= 50 then
local tier = math.ceil(i / 10)
sendmail(rec.id, 8001, "屠魔战场结算",
"本期排名第 " .. i .. " 名",
SLAUGHTER_REWARD[tier])
end
end
Slaughter.board = {}
Slaughter.stage = STAGE.idle
end
击杀触发里按怪物名称查积分表累加,结算按排名每 10 名一档发奖,sendmail 邮件投递,前 50 名有奖。积分榜在战场内实时可见,与头名的差距驱动玩家加时。沃玛卫士有概率掉积分翻倍卡,捡到后 60 秒内击杀双倍积分,随机爽感嵌在稳定的积分体系里。
单人积分的分布统计,前 1% 玩家的积分占比过高说明职业或装备碾压需要分组平衡。
积分榜的实时刷新曾经全量重排,战场 200 人时排行卡顿,增量插入加局部重排后恢复流畅。结算时刻曾经判断在线状态,打了 29 分钟掉线的玩家没收到奖励,结算以账本为准不问在线,邮件兜底一切。击杀触发曾经在活动外也累计积分,组队练级的击杀全进了活动账本,触发入口加活动态判断后账本干净。
开启时刻与战斗时长进配置,周末档可加开下午场。奖励档位的差距控制在 40% 以内,头部碾压但尾部也有获得感。翻倍卡的掉率 8% 写进活动说明页,概率公示是活动防客诉的通用做法。
本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 跨服远征分先锋、主力、后勤三队独立推进,三线全通合围BOSS。不同战力成员都有参与感。 策划要点与配置 …
实战应用:用在哪里 副本限时挑战加入超时血量惩罚:超时后BOSS攻击递增。上线后BOSS攻击叠到十倍秒杀全队。 事故还原与补…
实战应用:用在哪里 混沌麒麟召唤是全服高光时刻:暗幕聚合、裂缝展开、麒麟着陆三段演出各1.3秒。 三段式入场演出编排 围观镜…
实战应用:用在哪里 任务对话一闪而过玩家想回顾。回看接口把对话按节点存档,面板翻阅全部对话记录。 对话存档与查询渲染 当前章…
实战应用:用在哪里 服务器承载六十张地图,空闲地图白耗资源。按需激活,末人离开后六十秒休眠。 激活与休眠触发 休眠回收 验证…
实战应用:用在哪里 坐骑资质洗炼随机重滚五条属性,锁定满意的条目不再重滚,锁定越多消耗越大。 洗炼与锁定 锁定消耗递增 验证…