GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: [StAfF]MaN le 04 Novembre 2008, 12:09:05

Titre: problème avec timer et pose de bombe
Posté par: [StAfF]MaN le 04 Novembre 2008, 12:09:05
Salut !! J'expose mon problème en espérant un réponse ^^ Voila en faite j'ai un timer qui se déclenche quand un joueur entre dans un checkpoint, le checkpoint disparait et le joueur peut aller ou il veut, ce timer une fois fini dois poser une bombe a l'endroit ou est le joueur, Le problème c'est que la bombe ce pose sur l'ID 0, donc pas franchement pratique.... De plus une fois la bombe en place, défois les CT ne voyent pas le Checkpoint qui se créé POUR EUX, pas pour les T..... Je n'arrive pas a résoudre le prob.... Je tourne autour du pot... J'ai vu un poste aussi avec le prob d'ID0 avec un timer mais je n'ai pas réussi a résoudre le problème...  :bangin

////En haut
static Float:posx = 0.0;
static Float:posy = 0.0; ////////////// Position pour bombe et checkpoint CT
static Float:posz = 0.0;



////public
public OnPlayerEnterCheckpoint(playerid)
{
   if(terro)
   {
      if(lost[playerid] == 1)
      for(new i = 0; i < MAX_PLAYERS; i++)
      {
         DisablePlayerCheckpoint(i);
         SendClientMessage(playerid, COLOR_RED, "Place la bombe où tu veut !!");
         Counter = SetTimer("TimerCounter", 1000, true);
         counter = 5;
         check[playerid]=1;
         return 1;
      }
  return 1;
   }

/////////////////suite public checkpoint

   return 1;
}


///// public pour timer

public TimerCounter(playerid)
{
   new string[128];
   format(string,sizeof(string),"~r~%d",counter);
   GameTextForAll(string,1000,5);
   PlayAllSound(1056);
   counter--;
   for(new i = 0; i < MAX_PLAYERS; i++)
   if(counter == -1)
   {
      if(lost[playerid]==1)
      if(check[playerid]==1)
      {
         KillTimer(Counter);
         PlayAllSound(1057);
         DisablePlayerCheckpoint(i);
         SendClientMessageToAll(COLOR_RED,"Bombe en place");
         SendClientMessageToAll(COLOR_RED,"La bombe explosera dans 30 secondes !!");
         GetPlayerPos(playerid, posx, posy, posz);
         object=CreateObject(1252, posx, posy, posz, RX, RY, RZ);
         posse[TEAM_CT] = 1;
         contre=SetPlayerCheckpoint(TEAM_CT, posx, posy, posz, 3);
         Explose = SetTimer("TimerExplose", 1000, true);
         explose = 30;
         return 1;
      }
   }
   return 1;
}

Merci de votre aide ^^  :)
Titre: Re : problème avec timer et pose de bombe
Posté par: Ssk le 04 Novembre 2008, 15:34:39
Utilise settimerex
Titre: Re : problème avec timer et pose de bombe
Posté par: [StAfF]MaN le 04 Novembre 2008, 16:22:27
Va vraiment falloire qu'on m'explique la différence entre SetTimer et SetTimerEx, le Ex c'est juste pour un joueur non ? Qi c'est le cas c'est pas ce que je recherche ^^ Je veut que tout le monde voient le timer ;)
Titre: Re : problème avec timer et pose de bombe
Posté par: NatiVe™ le 04 Novembre 2008, 17:05:30
SetTimerEx tu peut le stopper.

Le SetTimer nan

NV.

Titre: Re : problème avec timer et pose de bombe
Posté par: [StAfF]MaN le 04 Novembre 2008, 17:12:34
Ok ^^  :dejadehors bah c'est pas le timer le prob de toute façon ^^ C'est le résultat et se qui se passe quand le timer est fini ^^ Parce que j'arrive pas a trouver...   :wall

Puis plus ça va plus il y a des bugs dans mon script xD (aucune erreurs  ni warnings mais choses bizarres qui se passent genre  l'ID 0 est le seul a avoir l'action... )
Titre: Re : Re : problème avec timer et pose de bombe
Posté par: Nikko™ le 05 Novembre 2008, 11:12:17
SetTimerEx tu peut le stopper.

Le SetTimer nan

Meme avec un kill timer ? Oo

++
nikko
Titre: Re : problème avec timer et pose de bombe
Posté par: Syg le 05 Novembre 2008, 11:37:27
La SEULE différence entre SetTimer et SetTimerEx c'est qu'avec SetTimerEx, on peut passer des paramètre au timer. Mais c'est une différence de taille qui nous rend énormément de services.
Sinon, pour le reste les deux fonctions sont équivalentes, on peut créer un timer continu ou exécuté qu'une seule fois, on peut détruire un timer créé avec l'une ou l'autre des fonctions, ....

Dans le cas qui te préoccupe tu as fait un timer avec un paramètre mais lorsque tu le crées avec SetTimer, tu ne peux pas lui dire quelle sera la valeur de ce paramètre. Par défaut, PAWN met ce paramètre à 0. C'est pourquoi ton timer ne marche qu'avec le joueur 0.

Donc la seule chose que tu as à faire pour que ça marche, c'est de remplacer la ligne
Counter = SetTimer("TimerCounter", 1000, true);par
Counter = SetTimerEx ("TimerCounter", 1000, true, "i", playerid);
Comme cela, le paramètre de ton timer aura la bonne valeur quand le timer sera appelé.

++
Syg
Titre: Re : problème avec timer et pose de bombe
Posté par: NatiVe™ le 05 Novembre 2008, 13:37:17
J'ai rien dit  ::)

NV.

Titre: Re : problème avec timer et pose de bombe
Posté par: Syg le 05 Novembre 2008, 14:24:29
Je ne l'avais pas fait remarquer Native  ;).

++
Syg
Titre: Re : problème avec timer et pose de bombe
Posté par: [StAfF]MaN le 05 Novembre 2008, 18:08:23
Merci je vais tester ça de suite ^^