把大逃杀的缩圈机制搬进沙巴克野区:五十人无阵营乱斗,安全区每六十秒收缩一圈,圈外持续掉血,终局幸存者独享宝箱。缩圈强制遭遇,乱斗从躲猫猫变成步步紧逼的决战。
以地图中心为圆心逐级收缩半径,圈外玩家按秒掉血,圈半径与掉血速率随圈层递增。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 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 战士的烈火剑法一击熄火后要等八秒冷却,连招断档感强烈。疾风烈火斩在烈火剑法命中后给一次连击窗口:三秒内再…
实战应用:用在哪里 阵营对抗打到中期容易疲软:打赢没有额外好处,输掉也没有代价。阵营声望体系给阵营战装上荣誉刻度:个人与阵营…
实战应用:用在哪里 拿下沙巴克之后呢?城主除了名字挂在城墙上,对城市毫无影响。城主施政玩法让占领变成治理:城主每周获得市政令…
实战应用:用在哪里 主线路光缆被挖断的深夜,全服掉线 20 分钟,玩家以为游戏倒闭。备用线路方案给接入层配第二条出口:主线路…
实战应用:用在哪里 行会官员由帮主任命的老模式弊端明显:任人唯亲、能上不能下。行会选举接口把官员换届做成投票制:每两个月一次…
实战应用:用在哪里 烈火剑法的伤害加成、冷却时间、下一级提升,全靠玩家记忆或去官网查。技能说明悬浮卡片在鼠标悬停技能图标零点…