近战职业被贴身缠斗时没有脱离手段:硬拼数值是唯一解。后跳闪避封装:向后位移 3 格并在位移期间获得 0.5 秒无敌帧(不受伤但不攻击),冷却 8 秒——近战有了脱离技,无敌帧给了精准闪避的操作回报。
后跳触发。示例代码如下:
local CD = 8
local function backStep(actor)
local last = tonumber(getplayvar(actor, 0, "BackLast")) or 0
if os.time() - last < CD then
sendmsg(actor, 1, "后跳冷却中,剩 " .. (CD - (os.time() - last)) .. " 秒。")
return
end
setplayvar(actor, 0, "BackLast", os.time(), 0)
setplayvar(actor, 0, "InvUntil", os.time() + 1, 0)
sendmsg(actor, 1, "后跳!0.5 秒无敌帧。")
end
无敌判定:
local function isInvincible(actor)
local untilTs = tonumber(getplayvar(actor, 0, "InvUntil")) or 0
return os.time() < untilTs
end
backStep 的双写——BackLast 记冷却基准(8 秒),InvUntil 记无敌到期(+1 秒覆盖 0.5 秒动画与网络余量);isInvincible 供伤害入口前置判定,无敌期伤害直接跳过不进结算——无敌帧的判定必须在伤害计算之前而不是之后补救。
后跳闪避踩过三个坑:一是无敌期可以攻击(无敌进攻两不误变成最优解),无敌帧内禁止出手;二是后跳方向被地形卡住人还在原地却给了无敌,位移失败则无敌帧一并取消;三是无敌判定散落在多种伤害来源里漏了毒伤,统一收口到 applyDamage 一个入口判定。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏】 一、业务场景 深夜在线的成员没活动可参加,帮会夜场形同虚设。更夫玩法上线:帮会更夫沿固定路线走街报时,成员陪同巡更…
【游戏】 一、业务场景 巡逻玩法清一色打怪刷分,缺一个有剧情张力的夜场任务。捕快缉拿上线:每天刷新一名在逃逃犯藏进城内某处,…
【语法】 一、隐蔽陷阱 整点奖励用秒级触发器反复检查,同一个小时里条件一直成立,奖励被领了一整次又一次——缺一道"刻度变化才…
【语法】 一、隐蔽陷阱 6 支队伍打单循环,每队要与其他 5 队各碰一次、共 15 场——随手排的赛程不是这轮有队轮空两回,…
【游戏】 一、业务场景 冬季庆典缺一个动手类比赛,纯投票类活动又被小号刷票刷到失真。冰雕大赛改规则:限时 40 分钟现场雕刻…
【语法】 一、隐蔽陷阱 电梯收到 3 层上行、7 层上行、2 层下行、9 层下行的请求,先来先服务会让它 1 到 3 到 7…