如何在服务器给玩家添加一个在线时无限持续时间但buff配置表中有限持续时间的buff
🤖 回答引擎: 热血江湖Lua |
🕒 时间: 2026-05-04 00:47:23 |
👁️ 阅读: 10
可以通过两种方式实现:
## 方法一:使用 adddynbuff 接口
通过 `adddynbuff` 接口添加自定义buff,将时间参数设为0,这样buff就会在线一直有效:
```lua
-- 添加一个无限持续的自定义buff
local buffid = 100001 -- 自定义ID,需大于10000且不与buff表重复
local template = 99999 -- 模板ID
local time = 0 -- 时间填0,使用模板配置的时间
local lap = 1 -- 叠加层数
local objOwner = actor -- 施放者
local attrtable = {[1]=200, [7]=50} -- 属性表
if adddynbuff(actor, buffid, template, time, lap, objOwner, attrtable) then
sendmsg(actor, 1, "addbuff-true")
else
sendmsg(actor, 1, "addbuff-false")
end
```
## 方法二:使用 setbuffabil 接口
通过 `setbuffabil` 接口修改已存在buff的属性,将时间参数设为0或空,使buff在线一直有效:
```lua
-- 给已存在的buff设置无限持续时间
setbuffabil(actor, 12345, 1, "=", 1000, 0)
-- 最后一个参数time设为0或空,表示在线一直有效
```
## 注意事项:
1. 使用 `adddynbuff` 时,buffid需要自定义,从10000开始,不能与buff表中已有的ID重复
2. 模板ID需要在buff表中配置,用于定义buff的基础行为
3. 时间参数设为0时,buff会在玩家在线期间持续生效
4. 如果buff表配置了有限时间,通过接口设置time=0可以覆盖表内配置的时间
5. 添加buff后如果需要立即获取属性变化,需要先执行 `recalcabilitys` 重算属性
← 返回问答库