计时器模块
这是我们所做的一个改进模块,open.mp 中的计时器:
native SetTimer(const func[], msInterval, bool:repeat) = SetTimerEx;
native SetTimerEx(const func[], msInterval, bool:repeat, const params[], GLOBAL_TAG_TYPES:...);
native KillTimer(timer) = Timer_Kill;
// 创建计时器
native Timer:Timer_Create(const func[], usDelay, usInterval, repeatCount, const params[] = "", GLOBAL_TAG_TYPES:...);
// 销毁计时器
native bool:Timer_Kill(Timer:timer);
// 返回直到下一次调用的剩余时间
native Timer_GetTimeRemaining(Timer:timer);
// 获取剩余的调用次数(0表示无限)。
native Timer_GetCallsRemaining(Timer:timer);
// 获取 `repeatCount` 重复次数参数.
native Timer_GetTotalCalls(Timer:timer);
// 获取 `usInterval` 间隔执行参数.
native Timer_GetInterval(Timer:timer);
// 将下一次调用前的剩余时间重置为`usInterval`间隔执行参数。
native bool:Timer_Restart(Timer:timer);
前两个只是为了向后兼容,其余的是改进的 API:
native Timer:Timer_Create(const func[], usDelay, usInterval, repeatCount, const params[] = "", GLOBAL_TAG_TYPES:...);
func
- 显而易见;指调用哪个函数。usDelay
- 同样显而易见,指第一次调用前的延迟(以微秒为单位)。usInterval
- 在第一次调用后,将usDelay
重置为什么。因此,如果你想要一个每小时整的定时器,但现在是早上 8 点 47 分,那么调用的结果是Timer_Create("OnTheHour", 780 SECONDS, 3600 SECONDS, 0);
。repeatCount
- 不像以前的函数只是 "一次 "或 "永远",这里指需要调用函数的次数。"一次"将是1
,500 将在调用 500 次后停止,而 0 意味着 "永远"(和旧的 API 相反)。GLOBAL_TAG_TYPES
- 就像{Float, ...}
,但支持更多的标签。