--------独立防御值+------------------------------------------
function diyattribute.independentDefenseValue(actor)
local independentAttackPower = getbaseinfo(actor, 51, 237)
local physicalDefense = getbaseinfo(actor,51,233)
local magicDefens
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-04-08 14:01:08 |
👁️ 阅读: 0
我是lua后端老师!
小仙,我来帮你看看这段独立防御值的计算代码。根据你的需求,我发现了几个问题需要修正:
1. **获取基础值的方式不对**:`getbaseinfo`的第一个参数是玩家对象,第二个参数是获取类型(51表示获取属性),第三个参数是属性ID。但你需要分别获取物理防御和魔法防御。
2. **全属性的使用**:全属性百分比是214,不是234。
3. **属性字符串格式**:独立防御值的属性ID是200,但需要正确设置。
让我帮你修正一下:
```lua
function diyattribute.independentDefenseValue(actor)
-- 获取独立防御值
local independentDefenseValue = getbaseinfo(actor, 51, 237)
-- 获取物理防御和魔法防御作为基础值
local physicalDefense = getbaseinfo(actor, 51, 233) -- 物理防御ID
local magicDefense = getbaseinfo(actor, 51, 234) -- 魔法防御ID
-- 获取全属性百分比
local allAttributesPercent = getbaseinfo(actor, 51, 214) -- 全属性ID
-- 计算基础防御值(物理+魔法)
local baseDefense = physicalDefense + magicDefense
-- 计算最终值:基础值 + (基础值 * 全属性百分比/100) + 独立防御值
local finalValue = 0
if independentDefenseValue > 0 then
-- 计算全属性加成部分
local attributeBonus = baseDefense * (allAttributesPercent / 100)
-- 最终值 = 基础值 + 全属性加成 + 独立防御值
finalValue = baseDefense + attributeBonus + independentDefenseValue
-- 添加独立防御值属性(属性ID 200)
addattlist(actor, "独立防御值", "+", "3#200#"..finalValue)
end
-- 重新计算属性
recalcabilitys(actor)
-- 打印调试信息
release_print("物理防御:", physicalDefense)
release_print("魔法防御:", magicDefense)
release_print("全属性百分比:", allAttributesPercent)
release_print("独立防御值:", independentDefenseValue)
release_print("最终独立防御值:", finalValue)
end
```
**代码解释:**
- `getbaseinfo(actor, 51, 233)`:获取物理防御值
- `getbaseinfo(actor, 51, 234)`:获取魔法防御值
- `getbaseinfo(actor, 51, 214)`:获取全属性百分比
- `getbaseinfo(actor, 51, 237)`:获取独立防御值
- `addattlist`:添加属性,格式为"3#200#值",其中200是独立防御值的属性ID
这样计算就符合你的公式了:`{基础值+(全属性%x基础值)}+独立防御值=结果`
记得在QF文件中添加对应的触发接口调用这个函数哦!如果还有不明白的,随时问我或者问浮生梦尊师!
我是lua后端老师!
小仙,我来帮你看看这段独立防御值的计算代码。根据你的需求,我发现了几个问题需要修正:
1. **获取基础值的方式不对**:`getbaseinfo`的第一个参数是玩家对象,第二个参数是获取类型(51表示获取属性),第三个参数是属性ID。但你需要分别获取物理防御和魔法防御。
2. **全属性的使用**:全属性百分比是214,不是234。
3. **属性字符串格式**:独立防御值的属性ID是200,但需要正确设置。
让我帮你修正一下:
```lua
function diyattribute.independentDefenseValue(actor)
-- 获取独立防御值
local independentDefenseValue = getbaseinfo(actor, 51, 237)
-- 获取物理防御和魔法防御作为基础值
local physicalDefense = getbaseinfo(actor, 51, 233) -- 物理防御ID
local magicDefense = getbaseinfo(actor, 51, 234) -- 魔法防御ID
-- 获取全属性百分比
local allAttributesPercent = getbaseinfo(actor, 51, 214) -- 全属性ID
-- 计算基础防御值(物理+魔法)
local baseDefense = physicalDefense + magicDefense
-- 计算最终值:基础值 + (基础值 * 全属性百分比/100) + 独立防御值
local finalValue = 0
if independentDefenseValue > 0 then
-- 计算全属性加成部分
local attributeBonus = baseDefense * (allAttributesPercent / 100)
-- 最终值 = 基础值 + 全属性加成 + 独立防御值
finalValue = baseDefense + attributeBonus + independentDefenseValue
-- 添加独立防御值属性(属性ID 200)
addattlist(actor, "独立防御值", "+", "3#200#"..finalValue)
end
-- 重新计算属性
recalcabilitys(actor)
-- 打印调试信息
release_print("物理防御:", physicalDefense)
release_print("魔法防御:", magicDefense)
release_print("全属性百分比:", allAttributesPercent)
release_print("独立防御值:", independentDefenseValue)
release_print("最终独立防御值:", finalValue)
end
```
**代码解释:**
- `getbaseinfo(actor, 51, 233)`:获取物理防御值
- `getbaseinfo(actor, 51, 234)`:获取魔法防御值
- `getbaseinfo(actor, 51, 214)`:获取全属性百分比
- `getbaseinfo(actor, 51, 237)`:获取独立防御值
- `addattlist`:添加属性,格式为"3#200#值",其中200是独立防御值的属性ID
这样计算就符合你的公式了:`{基础值+(全属性%x基础值)}+独立防御值=结果`
记得在QF文件中添加对应的触发接口调用这个函数哦!如果还有不明白的,随时问我或者问浮生梦尊师!
← 返回问答库