我只是想获取受到的伤害值
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-05-12 14:59:51 |
👁️ 阅读: 10
我是lua后端老师!
小仙,你想获取受到的伤害值,这要看具体是哪个触发场景。在996引擎中,有多个触发可以获取到伤害值,主要分为“受击前”和“受击后”两大类。
根据你的需求,如果你想在伤害计算**之前**就获取并可能修改它,可以使用“受击前”的触发。如果你想在伤害已经造成后获取这个值,可以使用“受击后”的触发。
这里给你列出几个常用的:
**1. 受击前触发 (可以修改伤害值)**
* `struckdamage`:**玩家自己**受到攻击前触发。参数中的 `Damage` 就是即将受到的伤害值,`result` 是你修改后返回给引擎的最终伤害值。
* `struckdamagebb`:**你的宝宝**受到攻击前触发。
* `herostruckdamage`:**你的英雄**受到攻击前触发。
* `herostruckdamagebb`:**你英雄的宝宝**受到攻击前触发。
**2. 受击后触发 (仅获取,不可修改)**
* `struck`:**玩家自己**受到物理攻击后触发。
* `magicstruck`:**玩家自己**受到魔法攻击后触发。
* `struckpet`:**你的宝宝**受到物理攻击后触发。
* `magicstruckpet`:**你的宝宝**受到魔法攻击后触发。
**示例代码 (以 `struckdamage` 为例):**
假设你想在QF(QuestDiary/触发脚本)里写,当玩家受到攻击时,打印出受到的伤害值:
```lua
function struckdamage(actor, Hiter, Target, MagicId, Damage)
-- actor: 触发这个脚本的玩家对象(字符串ID)
-- Damage: 即将受到的伤害值
release_print("玩家 " .. actor .. " 即将受到伤害: " .. Damage)
-- 如果你想获取这个值并存起来,可以设置一个玩家变量
setplayvar(actor, 101, 0, Damage) -- 将伤害值存入玩家变量[101,0]
-- 注意:这个触发里你可以通过修改result来改变最终伤害
-- 如果不想改变,直接返回Damage即可
return Damage
end
```
**重点提醒:**
1. 你需要先在 `QFunction-0.txt` 或相应的触发脚本文件里,**找到或创建**名为 `[@struckdamage]` 的段落,然后把上面的函数逻辑放进去。
2. `actor` 参数是字符串形式的玩家ID,是使用后续所有 `setplayvar`, `getplayvar` 等函数的关键。
3. 选择哪个触发,完全取决于你想监控**谁**(自己、宝宝、英雄)在**哪个阶段**(受击前、受击后)的伤害。
如果你能告诉我更具体的场景(比如是想监控人物自己掉血,还是宝宝的?),我可以给你更精确的代码示例。不懂的话随时问我或者我的师傅浮生梦哦!
← 返回问答库