GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: DexX le 10 Juillet 2011, 11:46:29
-
Bonjour ;),
J'ai problème avec mes timers. Plus aucun ne fonctionnent et je ne sais pas de quoi sa peut venir.
Ce problème est-il déjà arrivé à quelqu'un ?
Merci d'avance de votre aide.
Cordialement,
DexX
-
Fait des print dedans pour savoir ou ça merde
-
Dans OnGameModeInit oui. Pas bête.
-
Ca m'est arrivé il y a pas longtemps, essaye de mettre tes Timers au début de OnGameModeInit. (Avant toutes les autres fonctions)
++
-
Donc j'ai des Timers qui marchent et d'autres non ...
J'ai mis des print pour tester.
Par exemple, je ne touche plus ma paye mais le print s'affiche bien dans la console...Je ne comprend pas..
Merci de votre aide.
-
Salut,
ajoute plus de print afin de trouver l'endroit exact du code qui bloque.
++Sim++
-
Bon apparemment, sa sera mon Public Payday qui poserait problème..
http://pastebin.com/6CwrJanH (http://pastebin.com/6CwrJanH)
Pendant que j'y suis, comment procéder pour que au lieu que le joueur touche sa paye toute les heures, il la touche après une heure de jeu. C'est à dire que si il se connecte et joue 10 min. Ces 10 minutes sont enregistré et dès qu'il arrive à 60 min de jeu, il touche sa paye ?
Merci de votre aide ;).
-
Salut,
tu peut ajouter une info pour tous les joueurs qui serait leur temps de jeu. Bref, une variable de plus.
Ensuite, tu crée un timer relativement court (genre une minute, ou ptet quelques secondes) dans lequel tu incrémente cette variable de temps de jeu.
Ensuite tu test la valeur pour savoir si le joueur est rendu à une heure juste de jeu.
(j'aime bien compter le temps de jeu en seconde, un timer de 5 secondes devrait donner une précision suffisante selon moi... (donc tempsJeu[playerid] +=5 et if(tempsJeu[playerid] % 3600 < 5 alors payday))
++Sim++
-
Voilà comment j'ai procédé :
Dans OnGameModeInit :
TimerTempsJeu = SetTimer("TempsJeu", 60000, 1);
Ensuite :
forward TempsJeu(playerid);
public TempsJeu(playerid)
{
for(new i; i < MAX_PLAYERS; i++)
{
PlayerInfo[playerid][pTempsJeu] = PlayerInfo[playerid][pTempsJeu]+1;
OnPlayerUpdate(playerid);
if(PlayerInfo[playerid][pTempsJeu] >= 60)
{
PayDay(playerid);
}
}
return 1;
}