把大逃杀的缩圈机制搬进沙巴克野区:五十人无阵营乱斗,安全区每六十秒收缩一圈,圈外持续掉血,终局幸存者独享宝箱。缩圈强制遭遇,乱斗从躲猫猫变成步步紧逼的决战。
以地图中心为圆心逐级收缩半径,圈外玩家按秒掉血,圈半径与掉血速率随圈层递增。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 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 装备回收商 NPC 每天按评分收购玩家的装备,裁决之杖、骨玉权杖按攻击、持久加权打分,榜上只要前五名。数…
实战应用:用在哪里 沙巴克攻城是全服行会战的最高舞台:攻方砸开城门、抢占皇宫,守方依托城墙与复活点反打。规则设计的关键是节奏…
实战应用:用在哪里 影分身玩法给法师职业补上生存短板:危急时刻召唤四个影分身分担仇恨,敌人需要在六格范围内分辨真身,猜错就浪…
实战应用:用在哪里 组队邀请、行会宣战这类关键信令丢了没有兜底,玩家只能反复手点,高峰期体验很差。重试机制给信令加确认回执:…
实战应用:用在哪里 新资料片上线首日预约量常是日常十倍,一口气全开会让数据库与登录网关同时过载。滚动开区把开区动作排成队列:…
实战应用:用在哪里 百人同屏的沙巴克外围战场,每个玩家每秒跑动会触发数次位置更新,全部即时下发时广播量随人数平方增长,网关先…