--------生命值++(%)++++------------------------------------------
function diyattribute.HP(actor)
local playatt = getbaseinfo(actor,51,205)
addattlist(actor,"生命值","3#1#"..playatt)
recalcabilitys(actor)
end
--------生命加成+(%)++++-----------
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-04-08 13:09:00 |
👁️ 阅读: 0
我是lua后端老师!
小仙,你这段代码有几个地方需要调整。我来帮你根据996引擎的Lua后端规范修改一下:
```lua
--------生命值++(%)++++------------------------------------------
function diyattribute.HP(actor)
local playatt = getbaseinfo(actor, 51, 205) -- 获取生命值属性
addattlist(actor, "生命值", "3#1#" .. playatt) -- 添加生命值属性加成
recalcabilitys(actor) -- 重新计算属性
end
--------生命加成+(%)++++------------------------------------------
function diyattribute.lifeBonus(actor)
-- 首先获取当前生命值
local currentHP = gethumability(actor, 11) -- 11是当前生命值属性ID
if currentHP and currentHP > 0 then
-- 获取生命加成百分比属性
local bonusPercent = getbaseinfo(actor, 51, 206) -- 206是生命加成(%)属性ID
if bonusPercent and bonusPercent > 0 then
-- 计算加成值
local addValue = math.floor(currentHP * bonusPercent / 10000) -- 注意:引擎中百分比是万分比
-- 增加当前生命值
changehumability(actor, 11, "+", addValue, 0) -- 0表示点数增加
-- 也可以同时增加最大生命值
changehumability(actor, 205, "+", addValue, 0)
end
end
recalcabilitys(actor) -- 重新计算属性
end
```
**修改说明:**
1. **`getcurrentattr`函数不存在**:996引擎中没有`getcurrentattr`这个函数,应该使用`gethumability`来获取当前生命值
2. **属性ID使用**:
- `gethumability(actor, 11)` - 获取当前生命值(11是当前HP的属性ID)
- `getbaseinfo(actor, 51, 206)` - 获取生命加成百分比(206是生命加成%的属性ID)
3. **百分比计算**:引擎中百分比是**万分比**,所以计算时要除以10000而不是100
4. **修改属性**:使用`changehumability`函数来修改当前生命值,而不是不存在的`setcurrentattr`
5. **参数说明**:
- `changehumability(actor, 属性ID, 操作符, 值, 模式)`
- 操作符:`"="`、`"+"`、`"-"`
- 模式:0=点数,1=万分比
**使用建议:**
这个`lifeBonus`函数应该在角色登录、属性变化、或者使用特定道具时调用。比如可以在`login`触发或者`sendability`触发中调用。
如果还有不明白的地方,可以随时问我,或者请教浮生梦尊师!
我是lua后端老师!
小仙,你这段代码有几个地方需要调整。我来帮你根据996引擎的Lua后端规范修改一下:
```lua
--------生命值++(%)++++------------------------------------------
function diyattribute.HP(actor)
local playatt = getbaseinfo(actor, 51, 205) -- 获取生命值属性
addattlist(actor, "生命值", "3#1#" .. playatt) -- 添加生命值属性加成
recalcabilitys(actor) -- 重新计算属性
end
--------生命加成+(%)++++------------------------------------------
function diyattribute.lifeBonus(actor)
-- 首先获取当前生命值
local currentHP = gethumability(actor, 11) -- 11是当前生命值属性ID
if currentHP and currentHP > 0 then
-- 获取生命加成百分比属性
local bonusPercent = getbaseinfo(actor, 51, 206) -- 206是生命加成(%)属性ID
if bonusPercent and bonusPercent > 0 then
-- 计算加成值
local addValue = math.floor(currentHP * bonusPercent / 10000) -- 注意:引擎中百分比是万分比
-- 增加当前生命值
changehumability(actor, 11, "+", addValue, 0) -- 0表示点数增加
-- 也可以同时增加最大生命值
changehumability(actor, 205, "+", addValue, 0)
end
end
recalcabilitys(actor) -- 重新计算属性
end
```
**修改说明:**
1. **`getcurrentattr`函数不存在**:996引擎中没有`getcurrentattr`这个函数,应该使用`gethumability`来获取当前生命值
2. **属性ID使用**:
- `gethumability(actor, 11)` - 获取当前生命值(11是当前HP的属性ID)
- `getbaseinfo(actor, 51, 206)` - 获取生命加成百分比(206是生命加成%的属性ID)
3. **百分比计算**:引擎中百分比是**万分比**,所以计算时要除以10000而不是100
4. **修改属性**:使用`changehumability`函数来修改当前生命值,而不是不存在的`setcurrentattr`
5. **参数说明**:
- `changehumability(actor, 属性ID, 操作符, 值, 模式)`
- 操作符:`"="`、`"+"`、`"-"`
- 模式:0=点数,1=万分比
**使用建议:**
这个`lifeBonus`函数应该在角色登录、属性变化、或者使用特定道具时调用。比如可以在`login`触发或者`sendability`触发中调用。
如果还有不明白的地方,可以随时问我,或者请教浮生梦尊师!
← 返回问答库