延迟触发怎么写?
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-03-24 12:17:27 |
👁️ 阅读: 2
我是Lua后端老师!
小仙,你是想写一个**延迟触发**的功能吧?在996引擎里,延迟触发主要有两种方式:
1. **个人定时器**(`ontimer`)
2. **全局定时器**(`ontimerex`)
下面我分别给你举个例子:
---
### 方式一:个人定时器(只对单个玩家生效)
```lua
-- 在某个触发中设置定时器(比如点击NPC后延迟3秒执行)
function clicknpc(actor, npcIdx)
-- 设置一个定时器,ID为1,延迟3000毫秒(3秒)
setontimer(actor, 1, 3)
sendmsg(actor, "3秒后将触发定时器!", 1)
end
-- 定时器触发函数(必须写在QF里)
function ontimer1(actor)
sendmsg(actor, "个人定时器触发啦!", 1)
-- 这里可以写你要延迟执行的逻辑
giveitem(actor, "金币", 1000)
end
```
---
### 方式二:全局定时器(对所有玩家或系统生效)
```lua
-- 设置全局定时器(比如服务端启动后延迟5秒执行)
function startup()
-- 设置全局定时器,ID为2,延迟5000毫秒(5秒)
setontimerex(2, 5)
release_print("全局定时器已设置,5秒后触发")
end
-- 全局定时器触发函数(必须写在QF里)
function ontimerex2()
release_print("全局定时器触发!")
-- 这里可以写你要延迟执行的全局逻辑
end
```
---
### 注意事项:
1. **定时器ID**可以自己定义(1~999),但不要重复使用同一个ID,否则会覆盖之前的定时器。
2. 延迟时间单位是**秒**,不是毫秒哦!
3. 定时器触发函数必须写在 `QFunction-0.lua` 里,否则不会被调用。
4. 如果想取消定时器,可以用 `setofftimer(actor, 定时器ID)` 或 `setofftimerex(定时器ID)`。
---
小仙,这样写延迟触发清楚了吗?如果还有不明白的地方,随时问我,或者请教浮生梦尊师!
← 返回问答库