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:48:28 |
👁️ 阅读: 0
我是Lua后端老师!小仙,你这个问题涉及到怪物攻击时的减伤触发,要在`attack`引擎事件中实现。根据你的需求,我来帮你写一个正确的Lua脚本。
```lua
-- 在attack触发中处理怪物攻击减伤
-- 参数说明:
-- actor: 攻击者对象
-- Target: 被攻击者对象
-- damage: 伤害值
function attack(actor, Target, damage)
-- 获取被攻击者的怪物攻击减伤属性(ID 247)
local monsterAttackReduction = getbaseinfo(Target, 51, 247) -- 怪物攻击减伤
if monsterAttackReduction > 0 then
-- 计算减伤后的伤害
local finalDamage = damage - monsterAttackReduction
-- 确保伤害不为负数
if finalDamage < 0 then
finalDamage = 0
end
-- 应用减伤后的伤害
humanhp(Target, "-", finalDamage)
-- 记录日志(实际使用时可去掉或改为其他提示方式)
release_print("玩家" .. Target .. "触发怪物攻击减伤,减伤值:" .. monsterAttackReduction .. ",原始伤害:" .. damage .. ",最终伤害:" .. finalDamage)
-- 返回true表示已处理伤害,阻止引擎默认伤害计算
return true
end
-- 如果没有减伤,返回false让引擎继续处理
return false
end
```
**代码说明:**
1. **触发时机**:这个函数会在`attack`事件触发时执行,也就是任何攻击发生时
2. **参数含义**:
- `actor`:攻击者(可能是玩家、怪物、英雄等)
- `Target`:被攻击者(这里是你想要减伤的玩家)
- `damage`:引擎计算的原始伤害值
3. **核心逻辑**:
- 通过`getbaseinfo(Target, 51, 247)`获取被攻击者的怪物攻击减伤属性
- 如果减伤值大于0,就从原始伤害中减去这个值
- 使用`humanhp`函数应用计算后的伤害
- 返回`true`告诉引擎已经处理了伤害,不再执行默认伤害计算
4. **使用注意事项**:
- 这个脚本需要放在`QF`脚本的`attack`触发中
- 确保在`QFunction-0.txt`中已经注册了`attack`触发
- `release_print`只是用于调试,正式版本可以去掉或改为其他提示方式
**重要提醒**:小仙,写代码时要特别注意函数参数的正确使用。你原来的代码中有些参数名不太一致(比如`Hiter`),我已经按照标准的`attack`触发参数进行了调整。如果还有不明白的地方,可以随时问我或者请教浮生梦尊师哦!
我是Lua后端老师!小仙,你这个问题涉及到怪物攻击时的减伤触发,要在`attack`引擎事件中实现。根据你的需求,我来帮你写一个正确的Lua脚本。
```lua
-- 在attack触发中处理怪物攻击减伤
-- 参数说明:
-- actor: 攻击者对象
-- Target: 被攻击者对象
-- damage: 伤害值
function attack(actor, Target, damage)
-- 获取被攻击者的怪物攻击减伤属性(ID 247)
local monsterAttackReduction = getbaseinfo(Target, 51, 247) -- 怪物攻击减伤
if monsterAttackReduction > 0 then
-- 计算减伤后的伤害
local finalDamage = damage - monsterAttackReduction
-- 确保伤害不为负数
if finalDamage < 0 then
finalDamage = 0
end
-- 应用减伤后的伤害
humanhp(Target, "-", finalDamage)
-- 记录日志(实际使用时可去掉或改为其他提示方式)
release_print("玩家" .. Target .. "触发怪物攻击减伤,减伤值:" .. monsterAttackReduction .. ",原始伤害:" .. damage .. ",最终伤害:" .. finalDamage)
-- 返回true表示已处理伤害,阻止引擎默认伤害计算
return true
end
-- 如果没有减伤,返回false让引擎继续处理
return false
end
```
**代码说明:**
1. **触发时机**:这个函数会在`attack`事件触发时执行,也就是任何攻击发生时
2. **参数含义**:
- `actor`:攻击者(可能是玩家、怪物、英雄等)
- `Target`:被攻击者(这里是你想要减伤的玩家)
- `damage`:引擎计算的原始伤害值
3. **核心逻辑**:
- 通过`getbaseinfo(Target, 51, 247)`获取被攻击者的怪物攻击减伤属性
- 如果减伤值大于0,就从原始伤害中减去这个值
- 使用`humanhp`函数应用计算后的伤害
- 返回`true`告诉引擎已经处理了伤害,不再执行默认伤害计算
4. **使用注意事项**:
- 这个脚本需要放在`QF`脚本的`attack`触发中
- 确保在`QFunction-0.txt`中已经注册了`attack`触发
- `release_print`只是用于调试,正式版本可以去掉或改为其他提示方式
**重要提醒**:小仙,写代码时要特别注意函数参数的正确使用。你原来的代码中有些参数名不太一致(比如`Hiter`),我已经按照标准的`attack`触发参数进行了调整。如果还有不明白的地方,可以随时问我或者请教浮生梦尊师哦!
← 返回问答库