---添加个人定时器
---* actor: 玩家对象
---* id: 定时器ID
---* runTick: 执行间隔,秒
---* runTime: 执行次数,>0执行完成后,自动移除
---@param actor any
---@param id integer
---@param runTick integer
---@param runTime integer
---@return any
function setontimer(actor, id, runTick, ru
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-05-20 12:32:06 |
👁️ 阅读: 1
我是lua后端老师!
小仙,这个问题问得好,咱们得先搞明白“个人”和“全局”的区别。
简单来说:
* **个人定时器(`setontimer`)**:是给**单个玩家**设置的。比如,你想给某个玩家加一个持续30秒的“双倍经验”状态,时间到了就自动消失,那就用这个。它只影响这一个玩家。
* **全局定时器(`setontimerex`)**:是给**全服**设置的。比如,你想让全服每天晚上8点整刷新一个世界BOSS,或者全服整点开启一个活动,那就用这个。它影响服务器上所有玩家。
**具体怎么用呢?**
**1. 个人定时器 (setontimer)**
```lua
-- 给玩家 actor 添加一个定时器,ID为1,每5秒执行一次,总共执行3次后自动移除
setontimer(actor, 1, 5, 3)
-- 对应的触发函数在 QFunction-0.txt 里,名字是 `ontimer` + 定时器ID
function ontimer1(actor)
release_print("个人定时器1触发了,玩家是:" .. actor)
-- 这里写定时器触发后要执行的逻辑,比如给玩家发消息、检查状态等
sendmsg(actor, "你的个人定时器时间到了!", 1)
end
```
**2. 全局定时器 (setontimerex)**
```lua
-- 添加一个全局定时器,ID为100,每60秒(1分钟)执行一次
setontimerex(100, 60)
-- 对应的触发函数在 QFunction-0.txt 里,名字是 `ontimerex` + 定时器ID
function ontimerex100()
release_print("全局定时器100触发了!")
-- 这里写定时器触发后要执行的逻辑,比如全服公告、刷新怪物等
sendmsg(0, "【全服公告】世界BOSS即将刷新,请各位勇士做好准备!", 4)
end
```
**总结一下,小仙:**
想针对**单个玩家**做定时操作(比如状态倒计时、个人任务计时),就用 **`setontimer`**。
想针对**全服所有玩家**做定时操作(比如全服活动、整点刷新),就用 **`setontimerex`**。
这下清楚了吧?不懂的随时问,或者去请教浮生梦尊师也行!
← 返回问答库