GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Blaster le 01 Avril 2008, 20:01:47
-
Donc, on m'avais expliquer ici comment faire un timer pour avoir une vie infinie de que l'on se connecte au server.
Mais en faites, en ce moments je suis en train de faire un petit mod de dm et en faite on peut jamais mourrir avec le timer de vie infinie (normale en même temps :laugh). Et je ne voie pas comment résoudre mon problème.
Merci d'avance pour votre aides :)
-
Tu fait un KillTimer dans ta commande pour rentréer dans le DM et tu relance de Timer quand tu sort !
NV.
-
Ok, donc je fait
KillTimer(playerid);
et quand on veut sortir ou on meur je met
SetTimer(playerid);
J'en est pas franchement idée
Sa change quelque chose si mon DM est un filtrescript et dans mon gamemode il y a le timer pour la vie ?
-
KillTimer(playerid); et SetTimer(playerid); :blink
Pour le kill timer faut mettre le nom du timer, donc ce que tu dois faire c'est mettre " new nomdutimer; " en haut du script avant main, puis là où tu utilises le timer tu mets " nomdutimer=SetTimer("ce que sa doit executer",1,1000); " (le 1 veux dire que le timer se répète et le 1000 c'est le temps en ms). Pour utiliser le kill timer tu le mets là où t'as besoin de le mettre et tu fais " KillTimer(nomdutimer) " ;) j'espère que sa t'aide :)
++
R@f
-
Ce n'est pas du tout une bonne idée d'utiliser un KillTimer.
Tout d'abord, je ne suis pas sûr que la fonction KillTimer fonctionne très bien.
Mais surtout, le timer de vie infinie sert pour TOUS les joueurs, il serait dommage de l'arréter pour tout le monde parce qu'un seul joueur est en DM.
Ensuite, ton DM est dans un filterscript, tu ne pourras pas y arrêter un timer que tu as démarré dans le gamemode
La solution est beaucoup plus simple, il suffit d'utiliser une variable qui indique si le joueur est en DM ou pas. Et dans le timer, si le joueur est en DM, on ne lui remet pas sa vie.
Pour la variable, c'est un tableau, il suffit de mettre l'élément correpondant au joueur à 1 quand le joueur entre dans le DM et de le remettre à 0 quand il en sort. Dans le timer, si l'élément corespondant au joueur est ègal à 0, on remet la vie du joueur.
Soit :
/* En haut du script, en dehors de toute fonction */
new JoueurEnDM[MAX_PLAYERS];
/* Dans la commande qui fait entrer dans le DM */
JoueurEnDM[playerid] = 1;
/* Dans la commande qui fait sortir du DM */
JoueurEnDM[playerid] = 0;
/* Dans le timer pour la vie infinie */
for (new j=0 ; j<MAX_PLAYERS ; j++)
{
/* Si le joueur est connecté */
if (IsPlayerConnected (j))
{
/* Si le joueur n'est pas en DM */
if (JoueurEnDM[j] == 0)
{
/* On remet la vie du joueur au max */
}
}
}
Maintenant, si ton DM est dans un filterscript, tu vas avoir des problèmes car PAWN ne permet pas de voir et d'utiliser les données du gamemode dans les filterscripts et vice versa.
Le mieux, c'est soit de mettre le timer pour la vie infinie dans le filterscript ou le DM dans ton gamemode. (j'ai une préférence pour la deuxième solution).
++
Syg
-
D'abord merci de m'aider :)
J'ai suivi tous ce que vous m'avez dit de faire, sa se compile bien. Mais quand je tappe /dm-1, je ne peut pas mourrir ...
-
Fait voir ton code stp :happy