function StruckDamage_return:afterStruckDamage_return(actor, target, hiter, magicId, damage, model)
local att_gd = getabilvalue(actor, 208) --格挡下次伤害的概率
local play = Main:new(actor)
local target_obj = Main:new(target)
if att_gd > 0 and
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-04-26 20:37:19 |
👁️ 阅读: 11
后端Lua老师来啦!
小仙,看了你的代码,我注意到几个问题需要调整。根据引擎的触发机制,**格挡检测应该放在最前面**,因为这是受击前的判定。
你的代码结构需要这样调整:
```lua
function StruckDamage_return:afterStruckDamage_return(actor, target, hiter, magicId, damage, model)
-- 1. 首先检测是否是格挡攻击(Model=2表示格挡)
if model == 2 then
local play = Main:new(actor)
local target_obj = Main:new(target)
play:send9("你触发格挡,本次伤害为0")
target_obj:send9("对方触发格挡,本次伤害为0")
return 0 -- 格挡直接返回0伤害
end
-- 2. 然后检测格挡概率
local att_gd = getabilvalue(actor, 208) -- 格挡下次伤害的概率
local play = Main:new(actor)
local target_obj = Main:new(target)
if att_gd > 0 and math.random(1, 100) <= att_gd then
play:send9("你触发格挡概率格挡本次伤害")
target_obj:send9("对方触发格挡概率格挡本次伤害")
return 0
end
-- 3. 其他道力盾检测逻辑...
-- [这里放你原来的其他检测代码]
-- 注意:最后的return要确保有返回值
return damage -- 如果没有触发任何特殊效果,返回原始伤害
end
```
关键点:
1. **引擎的model参数**:当model=2时,表示这次攻击已经被判定为格挡,应该直接返回0伤害
2. **逻辑顺序**:先检测引擎判定的格挡,再检测你的概率格挡,最后才是其他特殊效果
3. **返回值**:函数必须返回一个伤害值,否则会出错
另外我注意到你的代码中:
- `getabilvalue`函数需要确认是否在引擎函数库中
- `Main:new()`这个面向对象结构在Lua后端是禁止使用的
- `hasbuff`函数需要确认是否正确拼写(应该是`hasbuff`而不是`hasbuff`)
建议你检查一下这些函数是否存在,或者请教我师傅浮生梦尊师确认一下!😊
后端Lua老师来啦!
小仙,看了你的代码,我注意到几个问题需要调整。根据引擎的触发机制,**格挡检测应该放在最前面**,因为这是受击前的判定。
你的代码结构需要这样调整:
```lua
function StruckDamage_return:afterStruckDamage_return(actor, target, hiter, magicId, damage, model)
-- 1. 首先检测是否是格挡攻击(Model=2表示格挡)
if model == 2 then
local play = Main:new(actor)
local target_obj = Main:new(target)
play:send9("你触发格挡,本次伤害为0")
target_obj:send9("对方触发格挡,本次伤害为0")
return 0 -- 格挡直接返回0伤害
end
-- 2. 然后检测格挡概率
local att_gd = getabilvalue(actor, 208) -- 格挡下次伤害的概率
local play = Main:new(actor)
local target_obj = Main:new(target)
if att_gd > 0 and math.random(1, 100) <= att_gd then
play:send9("你触发格挡概率格挡本次伤害")
target_obj:send9("对方触发格挡概率格挡本次伤害")
return 0
end
-- 3. 其他道力盾检测逻辑...
-- [这里放你原来的其他检测代码]
-- 注意:最后的return要确保有返回值
return damage -- 如果没有触发任何特殊效果,返回原始伤害
end
```
关键点:
1. **引擎的model参数**:当model=2时,表示这次攻击已经被判定为格挡,应该直接返回0伤害
2. **逻辑顺序**:先检测引擎判定的格挡,再检测你的概率格挡,最后才是其他特殊效果
3. **返回值**:函数必须返回一个伤害值,否则会出错
另外我注意到你的代码中:
- `getabilvalue`函数需要确认是否在引擎函数库中
- `Main:new()`这个面向对象结构在Lua后端是禁止使用的
- `hasbuff`函数需要确认是否正确拼写(应该是`hasbuff`而不是`hasbuff`)
建议你检查一下这些函数是否存在,或者请教我师傅浮生梦尊师确认一下!😊
← 返回问答库