把糖豆人的闯关淘汰搬进传奇:五十人同场跑酷穿越机关关卡,每关淘汰末位的一成玩家,坚持到终点的进入决赛圈抢宝箱。轻竞技无战力门槛,非硬核玩家也有夺冠时刻。
三段关卡各有机关:旋转锤击飞、移动地板错位、缩圈浮桥,淘汰线按时序收口,未过线者出局。actor是字符串,转对象后判定淘汰。
local CHECKPOINTS = { 60, 120, 180 }
local passed = {}
setontimerex(118, 1)
function ontimer118()
local now = os.time()
local stage = 0
for i, cp in ipairs(CHECKPOINTS) do
if now >= cp then stage = i end
end
if stage == 0 then return end
for _, name in ipairs(racers()) do
if passed[name] == nil or passed[name] < stage then
if now > CHECKPOINTS[stage] + 10 then
eliminated[name] = true
sendmsg(name, 0, "很遗憾,本届闯关止步第" .. stage .. "关")
end
end
end
end
通过全部关卡的玩家进入终点平台,中央宝箱限量三只,先到先得,拾取即锁定归属。
local chestLeft = 3
local function tryGrabChest(actor)
local player = class(actor)
if chestLeft <= 0 then
sendmsg(actor, 0, "宝箱已被抢完,感谢参与!")
return
end
chestLeft = chestLeft - 1
giveitem(actor, "闯关冠军宝箱", 1)
sendcentermsg(class(actor):GetName() .. " 抢到了冠军宝箱!")
end
三关淘汰的时序收口逐关验证;宝箱数量与拾取归属一一对应。上线后看各关的淘汰率分布,首关淘汰超过五成说明机关难度偏高,首关要给新手留足通过率。
passed表按名字记录通过关卡号,重名玩家的记录会互相覆盖,键改用唯一标识。eliminated标记在玩家掉线重连后要恢复校验,掉线不算淘汰是规则公平的底线。chestLeft并发抢拾取要加锁,两个玩家同帧抢末位宝箱的双冠军是判定事故。机关的击飞力度过大会把玩家抛出地图边界,物理参数要按地图尺寸校准。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 装备回收商 NPC 每天按评分收购玩家的装备,裁决之杖、骨玉权杖按攻击、持久加权打分,榜上只要前五名。数…
实战应用:用在哪里 沙巴克攻城是全服行会战的最高舞台:攻方砸开城门、抢占皇宫,守方依托城墙与复活点反打。规则设计的关键是节奏…
实战应用:用在哪里 影分身玩法给法师职业补上生存短板:危急时刻召唤四个影分身分担仇恨,敌人需要在六格范围内分辨真身,猜错就浪…
实战应用:用在哪里 组队邀请、行会宣战这类关键信令丢了没有兜底,玩家只能反复手点,高峰期体验很差。重试机制给信令加确认回执:…
实战应用:用在哪里 新资料片上线首日预约量常是日常十倍,一口气全开会让数据库与登录网关同时过载。滚动开区把开区动作排成队列:…
实战应用:用在哪里 百人同屏的沙巴克外围战场,每个玩家每秒跑动会触发数次位置更新,全部即时下发时广播量随人数平方增长,网关先…