local playercutting11 = getbaseinfo(actor, 51, 216) --刀刀减伤
local Targetcutting11 = getbaseinfo(Target, 51, 216)
if playercutting11 > 0 and Targetcutting11 > 0 then
local knifeAndBladeReduction = getbaseinfo(actor, 51, 219) -- 获取减伤数值
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-04-08 16:41:15 |
👁️ 阅读: 0
嗨,我是lua后端老师!小仙,看到你想写一个怪物攻击减伤的功能,我来帮你看看。
首先,我注意到你的代码里想用 `getbaseinfo` 来获取属性值,但根据你的需求,我们需要在玩家受到怪物攻击时触发减伤。这种触发通常会在QF脚本的某个攻击触发事件里写,比如可能在伤害计算相关的触发里。
不过,你的代码思路是好的,但有几个地方需要调整:
1. 你用了 `p()` 函数来打印,但在996引擎Lua里,我们通常用 `release_print()` 来输出信息到控制台。
2. 怪物攻击减伤的逻辑应该是:当玩家受到怪物攻击时,获取玩家的减伤属性值,然后从受到的伤害里减去这个值。
3. 你需要先获取玩家受到的原始伤害值,这个值可能在触发时通过参数传递,或者用其他函数获取。
根据你的要求(怪物攻击减伤id是247),我帮你写一个示例代码。假设这个代码放在QF脚本的某个攻击触发事件里(具体哪个事件需要看你的QF设置,比如可能是`attackdamage`或其他相关触发):
```lua
-- 假设 actor 是玩家对象,damage 是玩家即将受到的原始伤害值
-- 这个 damage 参数需要从触发事件中获取,或者用其他函数计算
local originalDamage = damage -- 这里damage应该是触发时传递的参数
-- 获取玩家的怪物攻击减伤属性值(ID 247)
local monsterDamageReduction = getbaseinfo(actor, 51, 247)
if monsterDamageReduction > 0 then
-- 计算减伤后的伤害
local finalDamage = originalDamage - monsterDamageReduction
if finalDamage < 0 then
finalDamage = 0
end
-- 这里需要设置玩家实际受到的伤害为减伤后的值
-- 注意:在攻击触发中,通常不是直接修改血量,而是修改伤害值
-- 你可能需要将 finalDamage 赋值给某个变量,让引擎使用这个值
release_print("玩家" .. actor .. "触发怪物攻击减伤,减伤值:" .. monsterDamageReduction .. ",原始伤害:" .. originalDamage .. ",最终伤害:" .. finalDamage)
-- 返回修改后的伤害值(如果触发支持的话)
damage = finalDamage
end
```
小仙,需要注意的是:
- 上面的 `damage` 变量需要是触发事件传递过来的参数,你需要查看QF中对应触发事件的参数说明。
- 不同的攻击触发事件,处理伤害的方式可能不同,有的可能是直接修改血量,有的是修改伤害变量。
- 如果你不确定该用哪个触发事件,可以查看QF文档中关于攻击伤害的触发事件。
如果你能告诉我这个减伤功能具体想在哪个时机触发(比如受到怪物攻击时、受到任何攻击时等),我可以给你更精确的代码示例。不懂的可以问浮生梦尊师哦!
嗨,我是lua后端老师!小仙,看到你想写一个怪物攻击减伤的功能,我来帮你看看。
首先,我注意到你的代码里想用 `getbaseinfo` 来获取属性值,但根据你的需求,我们需要在玩家受到怪物攻击时触发减伤。这种触发通常会在QF脚本的某个攻击触发事件里写,比如可能在伤害计算相关的触发里。
不过,你的代码思路是好的,但有几个地方需要调整:
1. 你用了 `p()` 函数来打印,但在996引擎Lua里,我们通常用 `release_print()` 来输出信息到控制台。
2. 怪物攻击减伤的逻辑应该是:当玩家受到怪物攻击时,获取玩家的减伤属性值,然后从受到的伤害里减去这个值。
3. 你需要先获取玩家受到的原始伤害值,这个值可能在触发时通过参数传递,或者用其他函数获取。
根据你的要求(怪物攻击减伤id是247),我帮你写一个示例代码。假设这个代码放在QF脚本的某个攻击触发事件里(具体哪个事件需要看你的QF设置,比如可能是`attackdamage`或其他相关触发):
```lua
-- 假设 actor 是玩家对象,damage 是玩家即将受到的原始伤害值
-- 这个 damage 参数需要从触发事件中获取,或者用其他函数计算
local originalDamage = damage -- 这里damage应该是触发时传递的参数
-- 获取玩家的怪物攻击减伤属性值(ID 247)
local monsterDamageReduction = getbaseinfo(actor, 51, 247)
if monsterDamageReduction > 0 then
-- 计算减伤后的伤害
local finalDamage = originalDamage - monsterDamageReduction
if finalDamage < 0 then
finalDamage = 0
end
-- 这里需要设置玩家实际受到的伤害为减伤后的值
-- 注意:在攻击触发中,通常不是直接修改血量,而是修改伤害值
-- 你可能需要将 finalDamage 赋值给某个变量,让引擎使用这个值
release_print("玩家" .. actor .. "触发怪物攻击减伤,减伤值:" .. monsterDamageReduction .. ",原始伤害:" .. originalDamage .. ",最终伤害:" .. finalDamage)
-- 返回修改后的伤害值(如果触发支持的话)
damage = finalDamage
end
```
小仙,需要注意的是:
- 上面的 `damage` 变量需要是触发事件传递过来的参数,你需要查看QF中对应触发事件的参数说明。
- 不同的攻击触发事件,处理伤害的方式可能不同,有的可能是直接修改血量,有的是修改伤害变量。
- 如果你不确定该用哪个触发事件,可以查看QF文档中关于攻击伤害的触发事件。
如果你能告诉我这个减伤功能具体想在哪个时机触发(比如受到怪物攻击时、受到任何攻击时等),我可以给你更精确的代码示例。不懂的可以问浮生梦尊师哦!
← 返回问答库