--------生命值++(%)++++------------------------------------------
function diyattribute.HP(actor)
local playatt = getbaseinfo(actor,51,205)
addattlist(actor,"生命值","3#1#"..playatt)
recalcabilitys(actor)
end
--------生命加成+(%)++++-----------
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-04-08 13:10:48 |
👁️ 阅读: 0
我是lua后端老师!
小仙你好,看到你写的两个自定义属性函数,这里有一些问题需要调整。
首先,`getcurrentattr` 这个接口在996引擎中并不存在,获取当前生命值应该用 `gethumability`。
其次,`setcurrentattr` 也不存在,调整当前生命值应该用 `changehumability` 或 `humanhp`。
另外,你生命加成的计算逻辑有些混淆,通常“生命加成(%)”是直接增加最大生命值的百分比,而不是当前值。
但根据你的需求“增加人物的生命值当前值百分比”,我们可以这样实现:
```lua
-------- 生命值++(%)++++ ------------------------------------------
function diyattribute.HP(actor)
local playatt = getbaseinfo(actor, 51, 205) -- 获取最大生命值
addattlist(actor, "生命值", "3#1#" .. playatt) -- 增加属性
recalcabilitys(actor) -- 重新计算属性
end
-------- 生命加成+(%)++++ ------------------------------------------
function diyattribute.lifeBonus(actor)
local maxHP = getbaseinfo(actor, 51, 205) -- 最大生命值
local currentHP = gethumability(actor, 51) -- 当前生命值
local bonusPercent = getbaseinfo(actor, 51, 206) -- 生命加成百分比值(例如:10表示10%)
if bonusPercent > 0 then
-- 计算基于当前生命值的加成
local addValue = math.floor(currentHP * bonusPercent / 10000) -- 注意:引擎中百分比通常是万分比
local newHP = currentHP + addValue
-- 调整当前生命值(不能超过最大生命值)
if newHP > maxHP then
newHP = maxHP
end
humanhp(actor, newHP) -- 设置当前生命值
end
recalcabilitys(actor)
end
```
**说明:**
1. `gethumability(actor, 51)` 用于获取当前生命值(51是生命值属性ID)。
2. `humanhp(actor, newHP)` 用于直接设置当前生命值。
3. `bonusPercent` 是从属性206获取的,引擎中百分比属性通常是万分比(例如:1000表示10%),所以计算时除以10000。
4. 调整后,`lifeBonus` 函数会根据当前生命值按百分比增加,并确保不超过最大生命值。
如果还有疑问,随时问我哦!别忘了,不懂的可以请教浮生梦尊师~
我是lua后端老师!
小仙你好,看到你写的两个自定义属性函数,这里有一些问题需要调整。
首先,`getcurrentattr` 这个接口在996引擎中并不存在,获取当前生命值应该用 `gethumability`。
其次,`setcurrentattr` 也不存在,调整当前生命值应该用 `changehumability` 或 `humanhp`。
另外,你生命加成的计算逻辑有些混淆,通常“生命加成(%)”是直接增加最大生命值的百分比,而不是当前值。
但根据你的需求“增加人物的生命值当前值百分比”,我们可以这样实现:
```lua
-------- 生命值++(%)++++ ------------------------------------------
function diyattribute.HP(actor)
local playatt = getbaseinfo(actor, 51, 205) -- 获取最大生命值
addattlist(actor, "生命值", "3#1#" .. playatt) -- 增加属性
recalcabilitys(actor) -- 重新计算属性
end
-------- 生命加成+(%)++++ ------------------------------------------
function diyattribute.lifeBonus(actor)
local maxHP = getbaseinfo(actor, 51, 205) -- 最大生命值
local currentHP = gethumability(actor, 51) -- 当前生命值
local bonusPercent = getbaseinfo(actor, 51, 206) -- 生命加成百分比值(例如:10表示10%)
if bonusPercent > 0 then
-- 计算基于当前生命值的加成
local addValue = math.floor(currentHP * bonusPercent / 10000) -- 注意:引擎中百分比通常是万分比
local newHP = currentHP + addValue
-- 调整当前生命值(不能超过最大生命值)
if newHP > maxHP then
newHP = maxHP
end
humanhp(actor, newHP) -- 设置当前生命值
end
recalcabilitys(actor)
end
```
**说明:**
1. `gethumability(actor, 51)` 用于获取当前生命值(51是生命值属性ID)。
2. `humanhp(actor, newHP)` 用于直接设置当前生命值。
3. `bonusPercent` 是从属性206获取的,引擎中百分比属性通常是万分比(例如:1000表示10%),所以计算时除以10000。
4. 调整后,`lifeBonus` 函数会根据当前生命值按百分比增加,并确保不超过最大生命值。
如果还有疑问,随时问我哦!别忘了,不懂的可以请教浮生梦尊师~
← 返回问答库