function feijianhit(actor, sMsg)
local baseDamage = getplaydef(actor, "N$切割加成")
baseDamage = tonumber(baseDamage) or 0
local percent = getplaydef(actor, "U220")
percent = tonumber(percent) or 0
local minAttack = getusebonuspo
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-03-09 22:23:08 |
👁️ 阅读: 16
我是lua后端老师!小仙,我来帮你优化这段代码,把获取人物属性的命令改成使用属性库的命令。
根据你的代码,我看到你使用了`getusebonuspoint(actor, 1)`来获取攻击下限。这个函数是用来获取已使用属性点的,不是直接获取人物属性的。要获取人物属性,应该使用`gethumability`函数。
让我帮你修改一下:
```lua
function feijianhit(actor, sMsg)
local baseDamage = getplaydef(actor, "N$切割加成")
baseDamage = tonumber(baseDamage) or 0
local percent = getplaydef(actor, "U220")
percent = tonumber(percent) or 0
-- 使用gethumability获取攻击下限(属性ID 5对应攻击下限)
local minAttack = gethumability(actor, 5) -- 5表示攻击下限
release_print("攻击下限:", minAttack)
local damage = math.floor((baseDamage * percent / 100) + minAttack)
local msgdata = json2tbl(sMsg)
local mapid = getbaseinfo(actor, 3)
local monobj = getmonbyuserid(mapid, msgdata.paramList[1])
if monobj then
humanhp(monobj, "-", damage)
sendattackeff(monobj, 2, damage, "*")
healthspellchanged(monobj)
else
release_print("怪物对象不存在")
end
end
```
主要修改的地方:
1. 把`getusebonuspoint(actor, 1)`改成了`gethumability(actor, 5)`
2. 在`release_print`中添加了说明文字,方便调试
**属性ID对照表(常用):**
- 1: 当前生命值
- 2: 当前魔法值
- 3: 最大生命值
- 4: 最大魔法值
- 5: 攻击下限
- 6: 攻击上限
- 7: 魔法下限
- 8: 魔法上限
- 9: 道术下限
- 10: 道术上限
- 11: 防御下限
- 12: 防御上限
- 13: 魔防下限
- 14: 魔防上限
- 15: 攻击准确
- 16: 攻击敏捷
- 17: 魔法躲避
- 18: 毒物躲避
- 19: 中毒恢复
- 20: 生命恢复
这样修改后,你的代码就能正确获取到人物的攻击下限属性了。如果还有其他属性需要获取,可以参考上面的ID对照表使用相应的属性ID。
小仙,这样修改清楚了吗?如果还有其他问题,随时问我哦!
我是lua后端老师!小仙,我来帮你优化这段代码,把获取人物属性的命令改成使用属性库的命令。
根据你的代码,我看到你使用了`getusebonuspoint(actor, 1)`来获取攻击下限。这个函数是用来获取已使用属性点的,不是直接获取人物属性的。要获取人物属性,应该使用`gethumability`函数。
让我帮你修改一下:
```lua
function feijianhit(actor, sMsg)
local baseDamage = getplaydef(actor, "N$切割加成")
baseDamage = tonumber(baseDamage) or 0
local percent = getplaydef(actor, "U220")
percent = tonumber(percent) or 0
-- 使用gethumability获取攻击下限(属性ID 5对应攻击下限)
local minAttack = gethumability(actor, 5) -- 5表示攻击下限
release_print("攻击下限:", minAttack)
local damage = math.floor((baseDamage * percent / 100) + minAttack)
local msgdata = json2tbl(sMsg)
local mapid = getbaseinfo(actor, 3)
local monobj = getmonbyuserid(mapid, msgdata.paramList[1])
if monobj then
humanhp(monobj, "-", damage)
sendattackeff(monobj, 2, damage, "*")
healthspellchanged(monobj)
else
release_print("怪物对象不存在")
end
end
```
主要修改的地方:
1. 把`getusebonuspoint(actor, 1)`改成了`gethumability(actor, 5)`
2. 在`release_print`中添加了说明文字,方便调试
**属性ID对照表(常用):**
- 1: 当前生命值
- 2: 当前魔法值
- 3: 最大生命值
- 4: 最大魔法值
- 5: 攻击下限
- 6: 攻击上限
- 7: 魔法下限
- 8: 魔法上限
- 9: 道术下限
- 10: 道术上限
- 11: 防御下限
- 12: 防御上限
- 13: 魔防下限
- 14: 魔防上限
- 15: 攻击准确
- 16: 攻击敏捷
- 17: 魔法躲避
- 18: 毒物躲避
- 19: 中毒恢复
- 20: 生命恢复
这样修改后,你的代码就能正确获取到人物的攻击下限属性了。如果还有其他属性需要获取,可以参考上面的ID对照表使用相应的属性ID。
小仙,这样修改清楚了吗?如果还有其他问题,随时问我哦!
← 返回问答库