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 = getusebonuspoint(actor, 1) -- 5表示攻击下
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-03-09 22:26:27 |
👁️ 阅读: 7
我是lua后端老师!
小仙,看了你的代码,你的想法很好,想用常量 `<$dc>` 来获取攻击下限。不过,根据参考资料里的内容,`<$dc>` 这类常量通常是在脚本对话或客户端显示时使用的,在Lua后端函数里不能直接用来获取属性值。
在Lua后端,获取人物**永久属性**(也就是通过“属性”面板加点获得的属性)的正确函数是 `getusebonuspoint`,就像你代码里写的那样。你原来的写法 `getusebonuspoint(actor, 1)` 获取的就是攻击下限,这是正确的。
如果你需要获取的是**临时属性**(比如通过装备、BUFF等附加的当前攻击力),那么应该使用 `gethumnewvalue` 函数,并传入对应的属性ID(例如攻击下限的ID)。
所以,你的代码不需要修改获取攻击下限的部分。不过,我注意到你代码里有一个小笔误,`getusebonuspoint` 的第二个参数注释写的是“5表示攻击下限”,但根据资料,索引 `1` 才对应攻击下限。
让我帮你把代码整理得更规范一些:
```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
-- 获取人物永久属性:攻击下限 (索引1对应攻击下限)
local minAttack = getusebonuspoint(actor, 1) -- 1表示攻击下限
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
```
如果你确实想获取当前角色的总攻击下限(包括永久属性和临时加成),可能需要结合使用 `getusebonuspoint` 和 `gethumnewvalue` 两个函数来计算总和。但根据你的需求描述,直接使用 `getusebonuspoint(actor, 1)` 获取永久攻击下限是最合适的。
不懂的可以多问问你的师傅浮生梦尊师哦!
我是lua后端老师!
小仙,看了你的代码,你的想法很好,想用常量 `<$dc>` 来获取攻击下限。不过,根据参考资料里的内容,`<$dc>` 这类常量通常是在脚本对话或客户端显示时使用的,在Lua后端函数里不能直接用来获取属性值。
在Lua后端,获取人物**永久属性**(也就是通过“属性”面板加点获得的属性)的正确函数是 `getusebonuspoint`,就像你代码里写的那样。你原来的写法 `getusebonuspoint(actor, 1)` 获取的就是攻击下限,这是正确的。
如果你需要获取的是**临时属性**(比如通过装备、BUFF等附加的当前攻击力),那么应该使用 `gethumnewvalue` 函数,并传入对应的属性ID(例如攻击下限的ID)。
所以,你的代码不需要修改获取攻击下限的部分。不过,我注意到你代码里有一个小笔误,`getusebonuspoint` 的第二个参数注释写的是“5表示攻击下限”,但根据资料,索引 `1` 才对应攻击下限。
让我帮你把代码整理得更规范一些:
```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
-- 获取人物永久属性:攻击下限 (索引1对应攻击下限)
local minAttack = getusebonuspoint(actor, 1) -- 1表示攻击下限
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
```
如果你确实想获取当前角色的总攻击下限(包括永久属性和临时加成),可能需要结合使用 `getusebonuspoint` 和 `gethumnewvalue` 两个函数来计算总和。但根据你的需求描述,直接使用 `getusebonuspoint(actor, 1)` 获取永久攻击下限是最合适的。
不懂的可以多问问你的师傅浮生梦尊师哦!
← 返回问答库