--------生命值++(%)++++------------------------------------------
function diyattribute.HP(actor)
local playatt = getbaseinfo(actor,51,205)
addattlist(actor,"生命值","3#1#"..playatt)
recalcabilitys(actor)
end
--------生命加成+(%)++++-----------
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-04-08 13:12:27 |
👁️ 阅读: 0
我是lua后端老师!小仙,看到你正在尝试编写自定义属性功能,我来帮你分析一下这段代码。
首先,你的思路是对的,但有几个地方需要根据996引擎的特性来调整。让我帮你修改一下:
```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)
-- 获取当前生命值百分比加成(属性ID 206)
local bonusPercent = getbaseinfo(actor, 51, 206)
if bonusPercent > 0 then
-- 计算加成值(万分比)
local addValue = math.floor(maxHP * bonusPercent / 10000)
-- 使用addattlist添加生命值加成
addattlist(actor, "生命加成", "3#1#"..addValue)
end
recalcabilitys(actor)
end
```
**修改说明:**
1. **属性ID说明:**
- `205`:最大生命值(固定值)
- `206`:生命加成百分比(万分比)
2. **关键调整:**
- 移除了`getcurrentattr`和`setcurrentattr`,因为996引擎没有这两个函数
- 使用`getbaseinfo(actor, 51, 206)`获取生命加成百分比
- 将百分比计算改为万分比(`/10000`而不是`/100`)
- 使用`addattlist`来添加属性加成
3. **使用建议:**
- 确保在`cfg_game_data.xls`中正确配置了属性ID
- 这个函数会在角色属性重算时自动调用
- 记得在QF或其他触发中调用`recalcabilitys`来触发属性重算
小仙,如果你想让这个加成实时生效,可以在以下触发中调用`recalcabilitys`:
- `takeon`(穿戴装备时)
- `takeoff`(脱下装备时)
- `login`(登录时)
- `sendability`(属性改变时)
这样修改后,你的生命加成百分比功能就能正常工作了!如果还有其他问题,随时问我哦~
我是lua后端老师!小仙,看到你正在尝试编写自定义属性功能,我来帮你分析一下这段代码。
首先,你的思路是对的,但有几个地方需要根据996引擎的特性来调整。让我帮你修改一下:
```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)
-- 获取当前生命值百分比加成(属性ID 206)
local bonusPercent = getbaseinfo(actor, 51, 206)
if bonusPercent > 0 then
-- 计算加成值(万分比)
local addValue = math.floor(maxHP * bonusPercent / 10000)
-- 使用addattlist添加生命值加成
addattlist(actor, "生命加成", "3#1#"..addValue)
end
recalcabilitys(actor)
end
```
**修改说明:**
1. **属性ID说明:**
- `205`:最大生命值(固定值)
- `206`:生命加成百分比(万分比)
2. **关键调整:**
- 移除了`getcurrentattr`和`setcurrentattr`,因为996引擎没有这两个函数
- 使用`getbaseinfo(actor, 51, 206)`获取生命加成百分比
- 将百分比计算改为万分比(`/10000`而不是`/100`)
- 使用`addattlist`来添加属性加成
3. **使用建议:**
- 确保在`cfg_game_data.xls`中正确配置了属性ID
- 这个函数会在角色属性重算时自动调用
- 记得在QF或其他触发中调用`recalcabilitys`来触发属性重算
小仙,如果你想让这个加成实时生效,可以在以下触发中调用`recalcabilitys`:
- `takeon`(穿戴装备时)
- `takeoff`(脱下装备时)
- `login`(登录时)
- `sendability`(属性改变时)
这样修改后,你的生命加成百分比功能就能正常工作了!如果还有其他问题,随时问我哦~
← 返回问答库