攻击触发怎么让伤害为0
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-04-24 14:49:10 |
👁️ 阅读: 2
你好,我是lua后端老师!
小仙,你问的是在攻击触发中让最终伤害变为0吧?这在Lua中可以通过修改触发函数的返回值来实现。
根据你提到的“攻击触发”,系统里有好几个相关的触发点,比如攻击前、攻击后、受击前等。要让伤害为0,通常是在**攻击前触发**里修改 `result` 参数。
下面我为你列出几个关键触发点及其修改方法:
1. **玩家物理/魔法攻击前触发 (attackdamage / magicattack)**
在这个触发里,你可以直接修改最终要造成的伤害值。
```lua
-- 示例:在QF.txt中配置[@attackdamage]或[@magicattack]触发,然后在Lua脚本中
function attackdamage(self, Target, Hiter, MagicId, Damage, Model)
-- self: 攻击者
-- Target: 被攻击者
-- Damage: 计算出的原始伤害值
-- Model: 攻击模式 (0正常,1暴击,2格挡,3切割)
-- result: 需要返回的最终伤害值
local finalDamage = 0 -- 直接将最终伤害设置为0
return finalDamage -- 返回修改后的伤害值
end
```
2. **宝宝攻击前触发 (attackdamagebb)**
逻辑和上面一样,修改返回的 `result` 值。
```lua
function attackdamagebb(self, Target, Hiter, MagicId, Damage, Model)
-- 将伤害强制设为0
return 0
end
```
3. **英雄攻击前触发 (heroattackdamage)**
处理英雄攻击时,方法也是相同的。
```lua
function heroattackdamage(self, Target, Hiter, MagicId, Damage, Model)
return 0 -- 英雄造成的伤害变为0
end
```
**核心要点:**
在这些攻击前触发的Lua函数中,系统会传入计算好的伤害值,你只需要在函数最后 `return` 一个你想要的数字(比如0),这个数字就会成为实际造成的伤害。
**注意事项:**
* 确保你的 `QF.txt` 文件中已经正确配置了对应的触发标签,例如 `[@attackdamage]`。
* 引擎的“切割”伤害模式(Model=3)需要先在M2服务器设置-物品参数-新增属性中**启用切割**,对应的触发才会生效。
你可以根据具体需求,选择在哪个触发点(玩家、宝宝、英雄)把伤害置0。如果还有不清楚的,随时可以再问我,或者请教我的师傅浮生梦尊师!
← 返回问答库