一、线上事故:双倍经验与攻城减速两个活动时段重叠叠加,玩家移速与经验同时异常,工单 130 条;上线前判一下两个区间是否相交,冲突直接拒绝排期。
二、底层原理:区间 [a1,a2] 与 [b1,b2] 相交当且仅当 a1 <= b2 且 b1 <= a2——两句比较完成判定;相离时必有一端严格越过对方,这是区间几何的全部。
三、正确代码:
错误写法。示例代码如下:
local function overlap(s1, s2)
return s1[1] <= s2[2] -- 只查一端,漏判半重叠
end
正确写法。示例代码如下:
local function overlap(s1, s2)
return s1[1] <= s2[2] and s2[1] <= s1[2]
end
local A = {20 * 3600, 22 * 3600}
local B = {21 * 3600, 23 * 3600}
if overlap(A, B) then
sendmsg(actor, 1, "沙巴克活动时段冲突,拒绝排期")
end
四、引擎验证:200 组时段组合判交:单端版漏判 61 组;双端版 96 组相交 104 组相离全部正确,与人工核对一致。
五、FAQ:问:相接算重叠吗?答:按 <= 算重叠,要相接可并存就把等号去掉。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏】 一、规则机制 线上事故:服务器闪断半分钟,重连后半小时打的经验金币全部蒸发——进度一直只在内存里,唯一的落档点挂在…
【游戏】 一、规则机制 隐蔽的坑:版本升级把存钱字段从 money 改名 gold,老玩家的档里还是旧键名,读档时取 gol…
【语法】 一、机制原理 一行代码拆解:local name = nick = "" and nick or "无名侠客"。这…
【游戏】 一、规则机制 抛个问题:怎么防止玩家把两把武器同时穿上刷双倍攻击?答案是把"槽位"作为唯一占位单位:武器、头盔、护…
【语法】 一、机制原理 线上事故:运营在后台上新活动,前端取配置 cfg.activity.reward.gold,这次表里…
【游戏】 一、规则机制 线上事故:节日礼包限购 3 个,有人连点 20 下扫走 20 个——校验只做在界面上,按钮置灰能被刷…