• 23 Avril 2025, 18:52:22


Auteur Sujet: Problème de timer  (Lu 597 fois)

0 Membres et 1 Invité sur ce sujet

DexX

  • Invité
Problème de timer
« 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

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : Problème de timer
« Réponse #1 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
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

DexX

  • Invité
Re : Problème de timer
« Réponse #2 le: 20 Juillet 2011, 09:31:19 »
Mais pourquoi cela fonctionne sur un autre GameMode ?

Je vais mettre 15000 pour voir.

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Problème de timer
« Réponse #3 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
Courtesy of GtaManiac

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : Problème de timer
« Réponse #4 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
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

DexX

  • Invité
Re : Problème de timer
« Réponse #5 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 :).