--------生命值++(%)++++------------------------------------------
function diyattribute.HP(actor)
local playatt = getbaseinfo(actor,51,205)
addattlist(actor,"生命值","3#1#"..playatt)
recalcabilitys(actor)
end
--------生命加成+(%)++++-----------
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-04-08 12:56:44 |
👁️ 阅读: 0
哈喽小仙!我是lua后端老师!
来瞅瞅你的代码哈~
首先,你这两段代码的思路是想通过自定义属性来动态调整生命值和生命加成百分比,对吧?
不过呢,有几个地方需要注意一下:
1. **`getbaseinfo(actor,51,205)` 和 `getbaseinfo(actor,51,206)`**
- 根据官方文档,`getbaseinfo` 的第二个参数是 **属性类型**,第三个参数是 **属性ID**。
- 属性ID 205 和 206 是 **自定义属性**(att),但 `getbaseinfo` 主要用于获取基础属性(比如等级、职业等),**不支持直接获取自定义属性值**。
- 如果你想获取自定义属性(比如生命值%、生命加成%),应该用 **`gethumability(actor, 205)`** 和 **`gethumability(actor, 206)`** 哦!
2. **`addattlist` 的使用**
- 你的写法 `"3#1#"..playatt` 和 `"3#205#"..playatt, 2` 有点问题。
- `addattlist` 的格式是:
```lua
addattlist(actor, "属性名称", "属性类型#属性ID#属性值", 是否累加)
```
- 其中 **属性类型** 3 表示“百分比加成”,但属性ID 1 是“攻击力”,不是“生命值”。
- 如果你想加 **生命值百分比**,应该用属性ID 205(生命值%),而不是 1。
3. **生命值% vs 生命加成%**
- 根据你的注释,205 是“生命值%”(直接加生命值百分比),206 是“生命加成%”(增加当前生命值的百分比)。
- 但引擎里 **没有内置的“生命加成%”属性**,你需要自己用公式计算哦!
---
**修改建议**:
```lua
-- 获取当前的生命值% 属性
local hp_percent = gethumability(actor, 205)
-- 获取当前的生命加成% 属性
local life_bonus_percent = gethumability(actor, 206)
-- 计算最终生命值加成(假设基础生命值为 base_hp)
local base_hp = gethumability(actor, 1) -- 获取基础生命值
local final_hp = base_hp * (1 + hp_percent/100) * (1 + life_bonus_percent/100)
-- 设置最终生命值
changehumability(actor, 1, final_hp)
```
---
**总结问题**:
1. 用错接口了(该用 `gethumability` 而不是 `getbaseinfo`)。
2. `addattlist` 的属性ID 写错了(生命值% 应该用 205,不是 1)。
3. “生命加成%” 引擎没有直接支持,需要自己计算。
如果还有不懂的,随时问我哈~ 浮生梦尊师也常提醒我们要细心呢! 😄
哈喽小仙!我是lua后端老师!
来瞅瞅你的代码哈~
首先,你这两段代码的思路是想通过自定义属性来动态调整生命值和生命加成百分比,对吧?
不过呢,有几个地方需要注意一下:
1. **`getbaseinfo(actor,51,205)` 和 `getbaseinfo(actor,51,206)`**
- 根据官方文档,`getbaseinfo` 的第二个参数是 **属性类型**,第三个参数是 **属性ID**。
- 属性ID 205 和 206 是 **自定义属性**(att),但 `getbaseinfo` 主要用于获取基础属性(比如等级、职业等),**不支持直接获取自定义属性值**。
- 如果你想获取自定义属性(比如生命值%、生命加成%),应该用 **`gethumability(actor, 205)`** 和 **`gethumability(actor, 206)`** 哦!
2. **`addattlist` 的使用**
- 你的写法 `"3#1#"..playatt` 和 `"3#205#"..playatt, 2` 有点问题。
- `addattlist` 的格式是:
```lua
addattlist(actor, "属性名称", "属性类型#属性ID#属性值", 是否累加)
```
- 其中 **属性类型** 3 表示“百分比加成”,但属性ID 1 是“攻击力”,不是“生命值”。
- 如果你想加 **生命值百分比**,应该用属性ID 205(生命值%),而不是 1。
3. **生命值% vs 生命加成%**
- 根据你的注释,205 是“生命值%”(直接加生命值百分比),206 是“生命加成%”(增加当前生命值的百分比)。
- 但引擎里 **没有内置的“生命加成%”属性**,你需要自己用公式计算哦!
---
**修改建议**:
```lua
-- 获取当前的生命值% 属性
local hp_percent = gethumability(actor, 205)
-- 获取当前的生命加成% 属性
local life_bonus_percent = gethumability(actor, 206)
-- 计算最终生命值加成(假设基础生命值为 base_hp)
local base_hp = gethumability(actor, 1) -- 获取基础生命值
local final_hp = base_hp * (1 + hp_percent/100) * (1 + life_bonus_percent/100)
-- 设置最终生命值
changehumability(actor, 1, final_hp)
```
---
**总结问题**:
1. 用错接口了(该用 `gethumability` 而不是 `getbaseinfo`)。
2. `addattlist` 的属性ID 写错了(生命值% 应该用 205,不是 1)。
3. “生命加成%” 引擎没有直接支持,需要自己计算。
如果还有不懂的,随时问我哈~ 浮生梦尊师也常提醒我们要细心呢! 😄
← 返回问答库