-----------------固定攻击力--------------------------------------------------------------------------------------------------------
function diyattribute.fixedAttackPower(actor)
local fixedAttackPower = getbaseinfo(actor, 51, 233)
addattlist(acto
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-04-10 14:27:21 |
👁️ 阅读: 0
我是lua后端老师!
小仙,我看了你的代码和公式说明。你这里想实现的是"固定攻击力"的计算和添加,公式是:
`{基础值+(全属性%x基础值)+独立生命值}x最终攻击力+固定攻击力=结果`
从你的代码来看,有几个地方需要调整:
1. **基础值获取问题**:你的公式中基础值的ID是200,但代码中`getbaseinfo(actor, 51, 233)`获取的是ID 233的值,这应该是固定攻击力而不是基础值。
2. **属性ID对应问题**:在`addattlist`函数中,属性字符串`"3#233#"`中的233对应的是固定攻击力,但你需要先计算出固定攻击力的值再添加。
让我根据你的公式重新整理一下代码:
```lua
function diyattribute.fixedAttackPower(actor)
-- 获取基础值(ID=200)
local baseValue = getbaseinfo(actor, 51, 200)
-- 获取全属性百分比(ID=213)
local allAttrPercent = getbaseinfo(actor, 51, 213)
-- 获取独立生命值(ID=214)
local independentHP = getbaseinfo(actor, 51, 214)
-- 获取最终攻击力(ID=218)
local finalAttackPower = getbaseinfo(actor, 51, 218)
-- 获取固定攻击力(ID=233)
local fixedAttackPower = getbaseinfo(actor, 51, 233)
-- 计算固定攻击力部分:{基础值+(全属性%x基础值)+独立生命值}x最终攻击力+固定攻击力
local calculatedValue = (baseValue + (allAttrPercent * baseValue / 100) + independentHP) * finalAttackPower / 10000 + fixedAttackPower
-- 将计算出的值添加到固定攻击力属性组,使用type=2在全部属性计算完后最后增加
addattlist(actor, "固定攻击力", "+", "3#233#" .. calculatedValue, 2)
-- 重新计算玩家属性,使新增的属性生效
recalcabilitys(actor)
end
```
这样修改后,代码就会按照你的公式计算固定攻击力,并将结果添加到玩家的属性中。记得这个函数需要在合适的时机触发,比如在玩家登录、穿戴装备等时候调用。
另外要注意的是,`getbaseinfo`获取的百分比值可能需要除以100,万分比值可能需要除以10000,具体要看你的数值配置。如果还有不明白的地方,随时可以问我!
我是lua后端老师!
小仙,我看了你的代码和公式说明。你这里想实现的是"固定攻击力"的计算和添加,公式是:
`{基础值+(全属性%x基础值)+独立生命值}x最终攻击力+固定攻击力=结果`
从你的代码来看,有几个地方需要调整:
1. **基础值获取问题**:你的公式中基础值的ID是200,但代码中`getbaseinfo(actor, 51, 233)`获取的是ID 233的值,这应该是固定攻击力而不是基础值。
2. **属性ID对应问题**:在`addattlist`函数中,属性字符串`"3#233#"`中的233对应的是固定攻击力,但你需要先计算出固定攻击力的值再添加。
让我根据你的公式重新整理一下代码:
```lua
function diyattribute.fixedAttackPower(actor)
-- 获取基础值(ID=200)
local baseValue = getbaseinfo(actor, 51, 200)
-- 获取全属性百分比(ID=213)
local allAttrPercent = getbaseinfo(actor, 51, 213)
-- 获取独立生命值(ID=214)
local independentHP = getbaseinfo(actor, 51, 214)
-- 获取最终攻击力(ID=218)
local finalAttackPower = getbaseinfo(actor, 51, 218)
-- 获取固定攻击力(ID=233)
local fixedAttackPower = getbaseinfo(actor, 51, 233)
-- 计算固定攻击力部分:{基础值+(全属性%x基础值)+独立生命值}x最终攻击力+固定攻击力
local calculatedValue = (baseValue + (allAttrPercent * baseValue / 100) + independentHP) * finalAttackPower / 10000 + fixedAttackPower
-- 将计算出的值添加到固定攻击力属性组,使用type=2在全部属性计算完后最后增加
addattlist(actor, "固定攻击力", "+", "3#233#" .. calculatedValue, 2)
-- 重新计算玩家属性,使新增的属性生效
recalcabilitys(actor)
end
```
这样修改后,代码就会按照你的公式计算固定攻击力,并将结果添加到玩家的属性中。记得这个函数需要在合适的时机触发,比如在玩家登录、穿戴装备等时候调用。
另外要注意的是,`getbaseinfo`获取的百分比值可能需要除以100,万分比值可能需要除以10000,具体要看你的数值配置。如果还有不明白的地方,随时可以问我!
← 返回问答库