GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: DexX le 20 Juillet 2011, 08:56:19

Titre: Problème de timer
Posté par: DexX le 20 Juillet 2011, 08:56:19
Bonjour à tous,

J'ai des Timers qui marchent mais j'ai l'impression que d'autres ne marchent pas ...

Alors j'ai fais un test :

Dans OnGameModeInit :

SetTimer("Test", 1000, false);
Puis :

forward Test(playerid);
public Test(playerid)
{
print("Timer appelé");
SendClientMessage(playerid, COLOR_ADMIN, "Marche");
}

Sur mon GameMode actuel, cela m'affiche bien le print dans la console mais pas le message dans le jeu.

Si je test sur un autre GM quelconque, cela m'affiche bien le message dans le jeu...

Alors j'en déduis qu'il y a un soucis quelques part, êtes vous d'accord avec moi ?  ::)

Si il y a un réel soucis, d'où cela pourrait venir ?

Merci de vos aides.

Amicalement,
DexX
Titre: Re : Problème de timer
Posté par: cristab le 20 Juillet 2011, 09:23:55
ceci est normale false veut dire que le timer ne se repete pas est 1000 coorespond a 1 seconde donc tu n'as pas le temps de le voir IG
Titre: Re : Problème de timer
Posté par: DexX le 20 Juillet 2011, 09:31:19
Mais pourquoi cela fonctionne sur un autre GameMode ?

Je vais mettre 15000 pour voir.
Titre: Re : Problème de timer
Posté par: Syg le 20 Juillet 2011, 10:16:35
Un grand classique, je suis d'ailleurs étonné que Cristab ne l'ai pas vu.

Il n'est pas possible (et donc inutile) de passer un paramètre à une fonction de timer lancée avec SetTimer.
Sa valeur sera toujours 0.
Donc si il n'y a qu'un seul joueur sur le serveur (il a l'ID 0), ta fonction de timer fonctionnera correctement et enverra un message au joueur.
Par contre, si il y a un bot (qui prend l'ID 0), le joueur (qui a un ID différent de 0) ne verra pas le message.
Ceci explique certainement pourquoi ça marche sur un gamemode et pas sur un autre (celui qui a un ou plusieurs bot).

Pour pouvoir passer un paramètre à une fonction de timer, il faut utiliser la fonction SetTimerEx :
SetTimerEx ("Test", 1000, false, "i", playerid);
++
Syg
Titre: Re : Problème de timer
Posté par: cristab le 20 Juillet 2011, 11:02:35
aaaahh mais oui ^^ je n'ai pas regarder la fonction ^^ pour moi le false suffisait qu'il n'avait pas le temps de ce connecter pour le voir
Titre: Re : Problème de timer
Posté par: DexX le 20 Juillet 2011, 13:21:08
Hummmmm je comprend mieux maintenant !

C'est pour cela que j'ai des Timer qui marchent et d'autres non :).

Car j'ai environ 25 bots pour le moment, je prend l'ID 26 quand je me connecte.

Merci de l'astuce, je vais la garder celle là.

Merci à vous deux ;). Je test et je vous dis si fonctionne bien correctement, on ne sait jamais :).