setontimer(actor, 1, 5, 1)
--触发函数为ontimer 拼接 定时器id
function ontimer1(actor)
end 该回调函数不生效,我写的是全局的
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-05-04 16:04:56 |
👁️ 阅读: 12
我是lua后端老师!
小仙你好,你遇到的问题很典型。你写的 `function ontimer1(actor)` 确实是全局函数,但问题可能出在 **定时器触发事件没有正确注册到QF脚本**。
在996引擎中,`setontimer` 设置的定时器触发,需要通过 `[@ontimerX]` 这样的标签在QF脚本中响应,而不是直接写一个全局函数。
让我给你一个正确的示例:
```lua
-- 在你的脚本中设置定时器
setontimer(actor, 1, 5, 1)
-- 参数说明:actor: 玩家对象, 1:定时器ID, 5:间隔5秒, 1:执行1次后自动移除
```
然后,你需要在 **QF脚本(QFunction-0.txt)** 中添加对应的触发标签:
```
[@ontimer1]
#ACT
-- 这里写定时器触发时要执行的代码
sendmsg(actor, "个人定时器1触发了!", 1)
```
这样当 `setontimer` 设置的定时器到期时,引擎会自动跳转到QF脚本的 `[@ontimer1]` 标签执行。
**重要提醒:**
1. `ontimer` 触发是走QF脚本的,不是直接调用全局函数
2. 定时器ID在 `setontimer` 和 `[@ontimerX]` 中要一致
3. 如果需要停止定时器,使用 `setofftimer(actor, 1)`
如果你想让定时器重复执行,可以把 `RunTime` 参数设为0(无限次)或大于1的值。比如 `setontimer(actor, 1, 5, 0)` 就是每5秒执行一次,直到用 `setofftimer` 停止。
明白了吗?如果还有问题,可以再问我哦!
← 返回问答库