GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Bayshore le 26 Avril 2009, 21:37:12

Titre: Simuler la fonction GameTickCount() sous Linux
Posté par: Bayshore le 26 Avril 2009, 21:37:12
Salut,

sachant que les fonctions GetTickCount() et tickcount() ne fonctionnent pas sous Linux, j'avais entendu qu'il fallait simler ces fonctions, ma question est : Comment ?

Avec un timer comme dans PEN1 ? C'est pas super précis...
Titre: Re : Simuler la fonction GameTickCount() sous Linux
Posté par: Syg le 26 Avril 2009, 22:19:25
La fonction tickcount fonctionne sous Linux. Mais il semblerait qu'elle aie quelques bugs.
A tester car je ne l'ai jamais utilisée.

Il existe peut-être un plugin pour Linux qui fourni cette fonction (je n'en ai pas trouvé).

++
Syg
Titre: Re : Simuler la fonction GameTickCount() sous Linux
Posté par: S!m le 26 Avril 2009, 22:26:54
Salut,

effectivement, il existe un plugin qui règle cette fonction, à chercher : xtime (de Boylett)

++Sim++
Titre: Re : Simuler la fonction GameTickCount() sous Linux
Posté par: Syg le 26 Avril 2009, 22:31:06
Celui là, je l'ai trouvé Sim mais il semblerait qu'il ne soit pas très intéressant au niveau de la fonction tickcount.
Voici le lien : http://forum.sa-mp.com/index.php?topic=76793.0 (http://forum.sa-mp.com/index.php?topic=76793.0)

++
Syg
Titre: Re : Simuler la fonction GameTickCount() sous Linux
Posté par: Bayshore le 26 Avril 2009, 22:33:34
En effet, il y a déjà une fonction qui retourne le timestamp dans Dutils...
Titre: Re : Simuler la fonction GameTickCount() sous Linux
Posté par: S!m le 26 Avril 2009, 22:56:07
Salut,

en ouvrant le fichier, on obtient tout de même cette fonction:

static cell AMX_NATIVE_CALL n_ticks(AMX* amx, cell* params )
{
    long ticks, usec, sec;
    struct timeval tempo;
    gettimeofday(&tempo, NULL);
    usec = tempo.tv_usec;
    sec = tempo.tv_sec;
    ticks = (1000 * sec) + (usec / 1000);
    logprintf("return %d        -       %d",ticks,start_tick);
    ticks -= start_tick;
return (int)ticks;
}

on y voit que les microsecondes sont divisées par 1000 puis ajoutées... par contre je ne suis pas certains de la qualité, Syg pourrait tu confirmer s'il te plait?

++Sim++
Titre: Re : Simuler la fonction GameTickCount() sous Linux
Posté par: Syg le 27 Avril 2009, 10:34:50
C'est normal, on divise les microsecondes (10-6) par 1000 pour avoir de millisecondes (10-3).

Si la fonction Linux gettimeofday retourne correctement le nombre de microsecondes alors ce plugin fonctionnera parfaitement.

Cette fonction retourne le nombre de millisecondes écoulées depuis le lancement du serveur SA-MP (pas depuis le lancement de la machine). Mais ceci n'est pas un problème.

++
Syg