--------(指定目标)爆率+% +++------------------------------------------
function diyattribute.specifyTheTargetExplosionRate (actor)
local playerattackTheDemonPath1= getbaseinfo(actor, 51, 203)
local playerattackTheDemonPath2 = getbaseinfo(actor, 51,
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-04-08 14:40:32 |
👁️ 阅读: 0
我是lua后端老师!
小仙,你这段代码想要实现“指定目标爆率”的功能,思路是对的,但代码有几个小问题需要调整一下。让我帮你看看:
1. **变量名不一致**:你定义了两个变量 `playerattackTheDemonPath1` 和 `playerattackTheDemonPath2`,但在 `addattlist` 函数中使用的却是 `playerattackTheDemonPath`,这个变量没有定义,会导致错误。
2. **`addattlist` 参数格式**:根据你的需求,`addattlist` 的第三个参数(属性字符串)格式需要是 `"属性ID#属性值"`。你代码中的 `"3#44#"..playerattackTheDemonPath` 格式不太对,`3#44#` 看起来像是想组合两个属性?但 `addattlist` 一次只能加一个属性。
你的目标是根据玩家的“指定目标爆率”属性值(ID 241),来增加“打怪爆率”(ID 203)。更合理的做法是直接读取 ID 241 的值,然后将其加到 ID 203 上。
这里给你一个修改后的示例,假设我们想在玩家攻击“二大陆”怪物时,临时增加其“打怪爆率”,增加的值等于他“指定目标爆率”属性的值:
```lua
function diyattribute.specifyTheTargetExplosionRate(actor)
-- 获取玩家的“指定目标爆率”属性值 (ID: 241)
local specifyTargetRate = getbaseinfo(actor, 51, 241)
-- 如果这个值大于0,则将其加到“打怪爆率”上 (ID: 203)
if specifyTargetRate > 0 then
-- 注意:addattlist 的第三个参数格式是 "属性ID#属性值"
addattlist(actor, "指定目标爆率", "203#" .. specifyTargetRate)
recalcabilitys(actor)
end
end
```
**注解**:
* `getbaseinfo(actor, 51, 241)`:获取玩家对象 `actor` 的扩展属性(51代表扩展属性)中,ID为241(即“指定目标爆率”)的值。
* `addattlist(actor, "指定目标爆率", "203#" .. specifyTargetRate)`:为玩家添加一个名为“指定目标爆率”的属性列表,这个列表里包含一条属性:ID为203(“打怪爆率”),增加的值是 `specifyTargetRate`。
**重要提醒**:
* 这个函数应该在合适的时机被调用,比如在 `killmon`(杀死怪物)触发里,并且在调用前,你需要判断当前被杀的怪物是否属于“二大陆”。判断方法通常是通过怪物名称、地图信息或者你自定义的怪物属性来实现。
* 属性增加后,如果后续不需要了,记得在适当的时候用 `delattlist(actor, "指定目标爆率")` 来移除这个临时属性列表,以免属性一直累加。
小仙,下次写代码的时候变量名一定要仔细检查哦!如果还有不明白的,随时可以问我,或者去请教浮生梦尊师!
我是lua后端老师!
小仙,你这段代码想要实现“指定目标爆率”的功能,思路是对的,但代码有几个小问题需要调整一下。让我帮你看看:
1. **变量名不一致**:你定义了两个变量 `playerattackTheDemonPath1` 和 `playerattackTheDemonPath2`,但在 `addattlist` 函数中使用的却是 `playerattackTheDemonPath`,这个变量没有定义,会导致错误。
2. **`addattlist` 参数格式**:根据你的需求,`addattlist` 的第三个参数(属性字符串)格式需要是 `"属性ID#属性值"`。你代码中的 `"3#44#"..playerattackTheDemonPath` 格式不太对,`3#44#` 看起来像是想组合两个属性?但 `addattlist` 一次只能加一个属性。
你的目标是根据玩家的“指定目标爆率”属性值(ID 241),来增加“打怪爆率”(ID 203)。更合理的做法是直接读取 ID 241 的值,然后将其加到 ID 203 上。
这里给你一个修改后的示例,假设我们想在玩家攻击“二大陆”怪物时,临时增加其“打怪爆率”,增加的值等于他“指定目标爆率”属性的值:
```lua
function diyattribute.specifyTheTargetExplosionRate(actor)
-- 获取玩家的“指定目标爆率”属性值 (ID: 241)
local specifyTargetRate = getbaseinfo(actor, 51, 241)
-- 如果这个值大于0,则将其加到“打怪爆率”上 (ID: 203)
if specifyTargetRate > 0 then
-- 注意:addattlist 的第三个参数格式是 "属性ID#属性值"
addattlist(actor, "指定目标爆率", "203#" .. specifyTargetRate)
recalcabilitys(actor)
end
end
```
**注解**:
* `getbaseinfo(actor, 51, 241)`:获取玩家对象 `actor` 的扩展属性(51代表扩展属性)中,ID为241(即“指定目标爆率”)的值。
* `addattlist(actor, "指定目标爆率", "203#" .. specifyTargetRate)`:为玩家添加一个名为“指定目标爆率”的属性列表,这个列表里包含一条属性:ID为203(“打怪爆率”),增加的值是 `specifyTargetRate`。
**重要提醒**:
* 这个函数应该在合适的时机被调用,比如在 `killmon`(杀死怪物)触发里,并且在调用前,你需要判断当前被杀的怪物是否属于“二大陆”。判断方法通常是通过怪物名称、地图信息或者你自定义的怪物属性来实现。
* 属性增加后,如果后续不需要了,记得在适当的时候用 `delattlist(actor, "指定目标爆率")` 来移除这个临时属性列表,以免属性一直累加。
小仙,下次写代码的时候变量名一定要仔细检查哦!如果还有不明白的,随时可以问我,或者去请教浮生梦尊师!
← 返回问答库