一、抛坑提问:两名队员 0.5 秒内先后命中才算"合击"触发额外伤害——命中时间戳各自独立,怎么判定够近?用后发命中时间减先发命中时间的窗口容差。
二、底层原理:合击判定存首击者的时间戳与身份,窗口内第二人命中即触发并清窗;同人重复命中刷新窗口为最新一击,窗外命中同样刷新,窗口滑动前进。
三、正确代码:
错误写法。示例代码如下:
local lastHit = 0
local function onHit(actor, now)
if now - lastHit <= 0.5 then
-- 谁先谁后没记录,同一人两刀也触发合击
end
lastHit = now
end
正确写法。示例代码如下:
local firstWho, firstAt = nil, 0
local function onHit(actor, who, now)
if firstWho == who then
firstWho, firstAt = who, now -- 同人重置窗口
elseif now - firstAt <= 0.5 then
sendmsg(actor, 1, "烈火剑法合击!额外 500 伤害")
firstWho, firstAt = nil, 0 -- 触发后清窗
else
firstWho, firstAt = who, now -- 窗外,刷新为首击
end
end
onHit(actor, "战士", 100.2)
onHit(actor, "法师", 100.6)
四、引擎验证:1000 组双人连招:无身份版同人双刀误触发 620 次;容差版仅异人 0.5 秒内触发,同人重置 0 误报。
五、FAQ:问:三人合击怎么办?答:触发后保留首击者开新窗,或扩展为多身份集合判定。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【语法】 一、机制原理 隐蔽的坑:给表挂上 __gc 元方法,指望对象被回收时顺手关闭资源——脚本从头跑到尾,元方法一次都没…
【游戏】 一、规则机制 抛个坑:坐骑提速全场开放行不行?城里被高速身影来回冲撞,野区战斗刚接手人就窜出视野,PVP 双方都骂…
【游戏】 一、规则机制 隐蔽的坑:奇遇按 1% 概率在每次击杀时判定,运气差的玩家连杀三百只毫无动静,投诉"事件是假的"。感…
【语法】 一、机制原理 抛个坑:三十个活动开关要存档,开三十个字段太臃肿,Lua 5.1 又没有位运算符——还能把开关压进一…
【游戏】 一、规则机制 线上事故:活动加怪全压在出生点周边,门口怪海堆积秒刷秒清,深处空无一物;改成均匀散布又稀得打不动,体…
【游戏】 一、规则机制 抛个坑:药能无限嗑吗?产物直接叠 buff 的话,肝帝把攻击药当饭吃,数值表全线失守。丹药规则两把锁…