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:46:14 |
👁️ 阅读: 0
我是lua后端老师!
小仙,我来帮你写一个在attack触发中处理怪物攻击减伤的脚本。根据你的需求,我们需要在玩家被攻击时(attack触发)检查怪物是否有特定的减伤属性,并应用减伤效果。
```lua
-- 在attack触发中处理怪物攻击减伤
-- actor: 攻击者(怪物)
-- Target: 被攻击者(玩家)
-- Hiter: 攻击者(同actor)
-- MagicId: 技能ID
function attack(actor, Target, Hiter, MagicId)
-- 获取怪物的减伤属性ID 247
local monsterReductionId = 247
local monsterReductionValue = getbaseinfo(actor, 51, monsterReductionId) -- 获取怪物减伤数值
-- 如果怪物有减伤属性
if monsterReductionValue > 0 then
-- 获取玩家的刀刀减伤属性(ID 216)
local playerCutting = getbaseinfo(Target, 51, 216)
-- 如果玩家有刀刀减伤属性
if playerCutting > 0 then
-- 获取玩家的减伤数值(ID 219)
local playerReductionValue = getbaseinfo(Target, 51, 219)
if playerReductionValue > 0 then
-- 计算减伤后的伤害
local originalDamage = playerCutting -- 使用玩家的刀刀减伤作为基础伤害
local finalDamage = originalDamage - playerReductionValue
-- 确保伤害不小于0
if finalDamage < 0 then
finalDamage = 0
end
-- 应用减伤后的伤害
humanhp(Target, "-", finalDamage)
-- 打印日志
release_print("怪物" .. actor .. "攻击玩家" .. Target .. "触发减伤,减伤值:" .. playerReductionValue .. ",最终伤害:" .. finalDamage)
end
end
end
-- 注意:这里没有修改damage参数,因为你说不去写damage
-- 直接通过humanhp函数扣血
end
```
**代码说明:**
1. **触发时机**:这个函数会在`attack`触发时被调用,也就是玩家被物理攻击时
2. **参数说明**:
- `actor`:攻击者对象(怪物)
- `Target`:被攻击者对象(玩家)
- `Hiter`:攻击者对象(同actor)
- `MagicId`:技能ID
3. **逻辑流程**:
- 首先检查怪物是否有减伤属性ID 247
- 如果有,再检查玩家是否有刀刀减伤属性ID 216
- 如果都有,获取玩家的减伤数值ID 219
- 计算减伤后的伤害并应用
4. **注意事项**:
- 这里使用了`humanhp(Target, "-", finalDamage)`直接扣除玩家血量
- 没有修改`damage`参数,符合你的要求
- 使用了`release_print()`进行日志输出
**使用前需要确认:**
1. 确保在QF文件中已经开启了attack触发
2. 确保怪物确实有ID 247的减伤属性
3. 确保玩家有ID 216和219的属性
如果你需要调整减伤逻辑或者有其他问题,随时问我哦!
我是lua后端老师!
小仙,我来帮你写一个在attack触发中处理怪物攻击减伤的脚本。根据你的需求,我们需要在玩家被攻击时(attack触发)检查怪物是否有特定的减伤属性,并应用减伤效果。
```lua
-- 在attack触发中处理怪物攻击减伤
-- actor: 攻击者(怪物)
-- Target: 被攻击者(玩家)
-- Hiter: 攻击者(同actor)
-- MagicId: 技能ID
function attack(actor, Target, Hiter, MagicId)
-- 获取怪物的减伤属性ID 247
local monsterReductionId = 247
local monsterReductionValue = getbaseinfo(actor, 51, monsterReductionId) -- 获取怪物减伤数值
-- 如果怪物有减伤属性
if monsterReductionValue > 0 then
-- 获取玩家的刀刀减伤属性(ID 216)
local playerCutting = getbaseinfo(Target, 51, 216)
-- 如果玩家有刀刀减伤属性
if playerCutting > 0 then
-- 获取玩家的减伤数值(ID 219)
local playerReductionValue = getbaseinfo(Target, 51, 219)
if playerReductionValue > 0 then
-- 计算减伤后的伤害
local originalDamage = playerCutting -- 使用玩家的刀刀减伤作为基础伤害
local finalDamage = originalDamage - playerReductionValue
-- 确保伤害不小于0
if finalDamage < 0 then
finalDamage = 0
end
-- 应用减伤后的伤害
humanhp(Target, "-", finalDamage)
-- 打印日志
release_print("怪物" .. actor .. "攻击玩家" .. Target .. "触发减伤,减伤值:" .. playerReductionValue .. ",最终伤害:" .. finalDamage)
end
end
end
-- 注意:这里没有修改damage参数,因为你说不去写damage
-- 直接通过humanhp函数扣血
end
```
**代码说明:**
1. **触发时机**:这个函数会在`attack`触发时被调用,也就是玩家被物理攻击时
2. **参数说明**:
- `actor`:攻击者对象(怪物)
- `Target`:被攻击者对象(玩家)
- `Hiter`:攻击者对象(同actor)
- `MagicId`:技能ID
3. **逻辑流程**:
- 首先检查怪物是否有减伤属性ID 247
- 如果有,再检查玩家是否有刀刀减伤属性ID 216
- 如果都有,获取玩家的减伤数值ID 219
- 计算减伤后的伤害并应用
4. **注意事项**:
- 这里使用了`humanhp(Target, "-", finalDamage)`直接扣除玩家血量
- 没有修改`damage`参数,符合你的要求
- 使用了`release_print()`进行日志输出
**使用前需要确认:**
1. 确保在QF文件中已经开启了attack触发
2. 确保怪物确实有ID 247的减伤属性
3. 确保玩家有ID 216和219的属性
如果你需要调整减伤逻辑或者有其他问题,随时问我哦!
← 返回问答库