把大逃杀的缩圈机制搬进沙巴克野区:五十人无阵营乱斗,安全区每六十秒收缩一圈,圈外持续掉血,终局幸存者独享宝箱。缩圈强制遭遇,乱斗从躲猫猫变成步步紧逼的决战。
以地图中心为圆心逐级收缩半径,圈外玩家按秒掉血,圈半径与掉血速率随圈层递增。actor是字符串,转对象后按圈层结算。
local ZONES = { 80, 60, 45, 30, 15 }
local zone = 1
setontimerex(115, 60)
function ontimer115()
if zone < #ZONES then zone = zone + 1 end
sendcentermsg("安全区收缩至半径" .. ZONES[zone] .. "!")
end
local function outsideDamage(actor, px, py, cx, cy)
local dist = math.sqrt((px - cx) ^ 2 + (py - cy) ^ 2)
if dist > ZONES[zone] then
humanhp(actor, "-", zone * 2)
end
end
终局幸存者获得专属宝箱,结算按存活时长分档给参与奖励,人人有份但赢家拿大头。
local function settleSurvival(actor, wave)
local player = class(actor)
if wave == lastWave() then
giveitem(actor, "乱斗王者宝箱", 1)
sendcentermsg(class(actor):GetName() .. " 成为终局幸存者!")
else
sendmail(actor, 0, "乱斗参与奖励", "存活到第" .. wave .. "圈", "金币|" .. wave * 1000)
end
end
圈层收缩的边界伤害逐层验证;终局幸存者的判定并发一致性核对。上线后看场均时长与圈层到达率,第五圈到达率低于一成说明收缩太快,缩圈间隔延长到九十秒。
humanhp的圈外扣血在无阵营乱斗里不产生PK值,圈伤不是玩家伤害,红名判定要排除圈伤来源。ZONES的坐标基准是地图中心,异形地图的几何中心与玩法中心不一致时圈会压在墙外,圆心进配置。setontimerex的全局计时在活动结束后必须取消,缩圈不停会把结算完的玩家继续扣血。终局幸存者的并发判定加一帧确认,同帧双存活的双冠军按并列处理。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
学员常见误区 Lua函数可返回多个值,学员用固定变量数接收时如果变量少于返回值,多余返回值被静默丢弃;如果变量多于返回值,多…
设计初衷 行会建筑的死穴是一次全解锁:会员没有逐步建设的过程感。梯度设计让每栋建筑都有前置条件和资源门槛。 数值模型 建筑分…
设计初衷 婚姻系统的属性加成是社交玩法的经济锚点:加成太弱没人结婚,太强则"为了属性被迫结婚"扭曲了社交本质。婚姻边界的设计…
设计初衷 宝箱类玩法的信任危机都源于同一句话:"概率是不是骗人的。"期望公示把概率从事后争议变成事前契约:奖池概率表全量公示…
设计初衷 流拍物(拍卖未成交的退回物品)堆积在卖家背包里成为死资产:低价值物流拍后无人问津,高价值物流拍后卖家不愿降价重拍。…
业务场景 沙巴克战功榜每周结算,玩家提交战功前不知道"再打多少能进前 10、前 10 的奖励是什么"。名次预览:输入自己的战…