Pular para o conteúdo principal

Módulo de timers

· 2 min de leitura
Y_Less

Esta prévia mostra melhorias no módulo de timers no open.mp, introduzindo uma API mais flexível e eficiente, mantendo a compatibilidade retroativa.

aviso

O conteúdo da publicação abaixo está desatualizado e não reflete o estado atual do open.mp. A publicação está disponível aqui para fins de arquivamento.

Esta é uma prévia de um dos módulos melhorados que fizemos, para timers no 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;

// CreateTimer
native Timer:Timer_Create(const func[], usDelay, usInterval, repeatCount, const params[] = "", GLOBAL_TAG_TYPES:...);

// KillTimer
native bool:Timer_Kill(Timer:timer);

// Retorna o tempo até a próxima chamada.
native Timer_GetTimeRemaining(Timer:timer);

// Obtém o número de chamadas restantes a fazer (0 para ilimitado).
native Timer_GetCallsRemaining(Timer:timer);

// Obtém o parâmetro `repeatCount`.
native Timer_GetTotalCalls(Timer:timer);

// Obtém o parâmetro `usInterval`.
native Timer_GetInterval(Timer:timer);

// Redefine o tempo restante até a próxima chamada para `usInterval`.
native bool:Timer_Restart(Timer:timer);

Os dois primeiros existem apenas para compatibilidade retroativa; o restante é a API melhorada:

native Timer:Timer_Create(const func[], usDelay, usInterval, repeatCount, const params[] = "", GLOBAL_TAG_TYPES:...);
  • func - Bem óbvio: o que chamar.
  • usDelay - Também óbvio: o atraso antes da chamada (em microssegundos).
  • usInterval - Para qual valor redefinir usDelay depois da primeira chamada. Então, se você quisesse um timer a cada hora cheia, mas agora fossem 8:47 da manhã, a chamada seria Timer_Create("OnTheHour", 780 SECONDS, 3600 SECONDS, 0);
  • repeatCount - Diferente das funções antigas, que eram apenas "uma vez" ou "para sempre", isto recebe o número de vezes que a função deve ser chamada. "Uma vez" seria 1, 500 pararia após 500 chamadas e (ao contrário da API antiga) 0 significa "para sempre".
  • GLOBAL_TAG_TYPES - Como {Float, ...}, mas com mais tags.