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