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
-
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 ^^ :)
-
Utilise settimerex
-
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 ;)
-
SetTimerEx tu peut le stopper.
Le SetTimer nan
NV.
-
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... )
-
SetTimerEx tu peut le stopper.
Le SetTimer nan
Meme avec un kill timer ? Oo
++
nikko
-
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
-
J'ai rien dit ::)
NV.
-
Je ne l'avais pas fait remarquer Native ;).
++
Syg
-
Merci je vais tester ça de suite ^^