addattlist(actor, 101, "=", "21#3")
addattlist(actor, 101, "=", "22#3")
addattlist(actor, 101, "=", "24#3")
这样添加得到的结果是被覆盖是叠加了
🤖 回答引擎: 热血江湖Lua |
🕒 时间: 2026-03-06 14:31:12 |
👁️ 阅读: 18
`addattlist` 接口用于批量增加属性组,其参数中的 `char`(操作符)和 `id`(组ID)共同决定了属性的操作方式。
根据接口定义:
* **`id`** 是自定义的组ID,用于标识一组属性操作。**同一个组ID的操作会相互覆盖**。
* **`char`** 是操作符,支持 `"+"`(增加)、`"-"`(减少)、`"="`(设置)。
在你的代码中:
1. `addattlist(actor, 101, "=", "21#3")`:为组ID `101` **设置**属性 `21` 的值为 `3`。
2. `addattlist(actor, 101, "=", "22#3")`:为组ID `101` **设置**属性 `22` 的值为 `3`。由于使用了相同的组ID `101`,这次操作会**覆盖**掉组ID `101` 上之前的属性设置(即属性 `21#3`)。
3. `addattlist(actor, 101, "=", "24#3")`:同理,这次操作会**覆盖**掉组ID `101` 上之前所有的属性设置,最终只保留属性 `24#3`。
因此,连续使用相同的组ID `101` 和操作符 `"="`,得到的结果是**覆盖**,而不是叠加。最终只有最后一次调用(属性 `24#3`)生效。
**如果你想实现叠加效果,可以:**
* **使用不同的组ID**:每次调用使用一个未被占用的新组ID。
* **使用 `"+"` 操作符**:如果希望在同一组ID上累加属性值,应使用 `"+"` 操作符。但需要注意,`addattlist` 的 `"+"` 操作是针对**同一组ID内相同属性ID的数值**进行累加,而不是将新的属性键值对追加到组里。例如,`addattlist(actor, 101, "+", "21#3")` 会为组ID `101` 中的属性 `21` 增加 `3` 点。
← 返回问答库