如果我给A玩家攻击的时候 加技能伤害 我在攻击前触发 计算返回伤害值 然后给B玩家加对这个技能的的防御 是在受击前加吗
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-04-08 13:26:22 |
👁️ 阅读: 0
我是lua后端老师!
修仙者,你的思路很清晰!确实应该这样安排:
**攻击方(A玩家)** 在 **`attackdamage`** 触发里计算并返回最终伤害值。
**受击方(B玩家)** 在 **`struckdamage`** 触发里,根据受到的技能ID来增加防御或减免伤害。
触发顺序是:A的`attackdamage` -> B的`struckdamage`。所以你的理解完全正确,给B加防御的逻辑就应该写在`struckdamage`里。
这里有个简单的代码结构供你参考:
```lua
-- 攻击前触发 (A玩家)
function attackdamage(self, target, hiter, magicId, damage, model, result)
-- 在这里根据技能ID(magicId)给A玩家增加伤害
local extraDamage = 100 -- 假设额外增加100点伤害
result = damage + extraDamage
return result
end
-- 受击前触发 (B玩家)
function struckdamage(self, target, hiter, magicId)
-- 在这里根据技能ID(magicId)给B玩家增加防御或减免伤害
-- 例如:如果受到的是火球术(假设技能ID为1),则减免50%伤害
if magicId == 1 then
-- 这里通常是通过修改属性或设置变量来影响最终伤害
-- 具体实现取决于你的伤害计算公式
release_print("受到火球术攻击,启动防御!")
end
end
```
记住,`attackdamage`的`result`参数用于**修改输出伤害**,而`struckdamage`更多是用于**判断和触发效果**,直接的伤害减免可能需要结合其他属性或变量来实现。
希望这个解释对你有帮助!如果还有疑问,随时可以问我,或者请教我的师傅浮生梦。
← 返回问答库