--------生命值++(%)++++------------------------------------------
function diyattribute.HP(actor)
local playatt = getbaseinfo(actor,51,205)
addattlist(actor,"生命值","3#1#"..playatt)
recalcabilitys(actor)
end
--------生命加成+(%)++++------------
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-04-08 12:52:21 |
👁️ 阅读: 0
我是lua后端老师!
小仙,你写的这两个函数有点小问题,我帮你分析一下:
首先看第一个函数 `diyattribute.HP(actor)`:
```lua
function diyattribute.HP(actor)
local playatt = getbaseinfo(actor, 51, 205)
addattlist(actor, "生命值", "3#1#"..playatt)
recalcabilitys(actor)
end
```
这个写法是可以的,`getbaseinfo(actor, 51, 205)` 获取生命值,然后通过 `addattlist` 增加生命值属性。
但是第二个函数 `diyattribute.lifeBonus(actor)` 有问题:
```lua
function diyattribute.lifeBonus(actor)
local playatt = getbaseinfo(actor, 51, 206)
addattlist(actor, "生命加成", "3#205#"..playatt)
recalcabilitys(actor)
end
```
问题在于:
1. `addattlist` 函数的第四个参数 `type` 你漏掉了,这个参数控制计算方式(0=计算套装属性增加;1=增加固定值;2=全部属性计算完后最后增加属性)
2. 属性字符串 `"3#205#"..playatt` 中的 `205` 对应的是 `getbaseinfo` 的第三个参数索引,但作为属性加成百分比,应该用正确的属性字段
正确的写法应该是:
```lua
function diyattribute.lifeBonus(actor)
local playatt = getbaseinfo(actor, 51, 206) -- 获取生命加成百分比值
-- 增加生命值当前值百分比,使用type=2表示最后增加属性
addattlist(actor, "生命加成", "3#1#"..playatt, 2)
recalcabilitys(actor)
end
```
或者如果你想要更精确的控制,也可以这样写:
```lua
function diyattribute.lifeBonus(actor)
local playatt = getbaseinfo(actor, 51, 206)
-- 使用type参数控制计算方式
addattlist(actor, "生命加成", "3#1#"..playatt, 0) -- 0表示计算套装属性增加
recalcabilitys(actor)
end
```
另外,如果你想直接设置生命值百分比加成,还可以用 `setusebonuspoint` 函数:
```lua
function diyattribute.lifeBonus(actor)
local playatt = getbaseinfo(actor, 51, 206)
-- nIndex=11对应生命值
setusebonuspoint(actor, 11, playatt)
end
```
记住,`addattlist` 函数有5个参数,最后一个 `type` 参数虽然可选,但在处理百分比加成时最好明确指定。不懂的可以问浮生梦尊师!
我是lua后端老师!
小仙,你写的这两个函数有点小问题,我帮你分析一下:
首先看第一个函数 `diyattribute.HP(actor)`:
```lua
function diyattribute.HP(actor)
local playatt = getbaseinfo(actor, 51, 205)
addattlist(actor, "生命值", "3#1#"..playatt)
recalcabilitys(actor)
end
```
这个写法是可以的,`getbaseinfo(actor, 51, 205)` 获取生命值,然后通过 `addattlist` 增加生命值属性。
但是第二个函数 `diyattribute.lifeBonus(actor)` 有问题:
```lua
function diyattribute.lifeBonus(actor)
local playatt = getbaseinfo(actor, 51, 206)
addattlist(actor, "生命加成", "3#205#"..playatt)
recalcabilitys(actor)
end
```
问题在于:
1. `addattlist` 函数的第四个参数 `type` 你漏掉了,这个参数控制计算方式(0=计算套装属性增加;1=增加固定值;2=全部属性计算完后最后增加属性)
2. 属性字符串 `"3#205#"..playatt` 中的 `205` 对应的是 `getbaseinfo` 的第三个参数索引,但作为属性加成百分比,应该用正确的属性字段
正确的写法应该是:
```lua
function diyattribute.lifeBonus(actor)
local playatt = getbaseinfo(actor, 51, 206) -- 获取生命加成百分比值
-- 增加生命值当前值百分比,使用type=2表示最后增加属性
addattlist(actor, "生命加成", "3#1#"..playatt, 2)
recalcabilitys(actor)
end
```
或者如果你想要更精确的控制,也可以这样写:
```lua
function diyattribute.lifeBonus(actor)
local playatt = getbaseinfo(actor, 51, 206)
-- 使用type参数控制计算方式
addattlist(actor, "生命加成", "3#1#"..playatt, 0) -- 0表示计算套装属性增加
recalcabilitys(actor)
end
```
另外,如果你想直接设置生命值百分比加成,还可以用 `setusebonuspoint` 函数:
```lua
function diyattribute.lifeBonus(actor)
local playatt = getbaseinfo(actor, 51, 206)
-- nIndex=11对应生命值
setusebonuspoint(actor, 11, playatt)
end
```
记住,`addattlist` 函数有5个参数,最后一个 `type` 参数虽然可选,但在处理百分比加成时最好明确指定。不懂的可以问浮生梦尊师!
← 返回问答库