GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: thomasleroi le 08 Août 2008, 11:26:54
-
J'ai un problèmes avec des timers... J'ai placé des KillTimer mais il ne marchent pas. Voilà les lignes :
new C1, C2, C3, C4;
forward c1();
forward c2();
forward c3();
forward c4();
public c1 ()
{
new playerid;
KillTimer(C1);
C2 = SetTimer("c2", 5000, true);
SetPlayerCameraPos(playerid,119.0221,1931.9307,22.7578);
SetPlayerCameraLookAt(playerid,101.7801,1921.7246,18.3186);
}
public c2 ()
{
new playerid;
KillTimer(C2);
C3 = SetTimer("c3", 5000, true);
SetPlayerCameraPos(playerid,257.4085,1811.8822,23.7339);
SetPlayerCameraLookAt(playerid,217.4763,1809.9622,21.7578);
}
public c3 ()
{
new playerid;
KillTimer(C3);
C4 = SetTimer("c4", 5000, true);
SetPlayerCameraPos(playerid,277.8821,1831.4835,21.4697);
SetPlayerCameraLookAt(playerid,240.2167,1861.3423,20.6723);
}
public c4 ()
{
new playerid;
KillTimer(C4);
SpawnPlayer(playerid);
SetPlayerPos(playerid,242.2077,1861.7119,14.0840);
}
Je voudrais faire qu'il y est pendant 5 Secondes un lieu que l'on voit, puis que l'on passe à un autre et ainsi de suite.
Ce sont des Caméras de surveillance pour l'aéra 51.
-
tiens je vais te filer une astuce pour éviter que tu fasses 35 timers ^^
En haut de ton script
new Timer;
new timer;
forward respawn(playerid);
Ensuite dans ta commande (je suppose que c'est avec une commande que tu active tes timers);
Timer=SetTimer("respawn", 1000, true); /Le timer sera égale a 1 seconde
timer= 15; //et la on le force a 15 secondes, tu comprendre après pourquoi le timer se présente comme ça ;)
Voila pour ta commande c'est fini :p
Après tu fait le public comme il faut :
public respawn(playerid)
{
if(timer==0)
{
KillTimer(Timer); // on tue le timer entier, comme il est fini :p
SpawnPlayer(playerid);
SetPlayerPos(playerid,242.2077,1861.7119,14.0840);
return 1;
}else if(timer==15)
{
SetPlayerCameraPos(playerid,119.0221,1931.9307,22.7578);
SetPlayerCameraLookAt(playerid,101.7801,1921.7246,18.3186);
GameTextForPlayer(playerid, "~w~Camera 1", 3000, 3);
return 1;
}
else if(timer==10)
{
SetPlayerCameraPos(playerid,257.4085,1811.8822,23.7339);
SetPlayerCameraLookAt(playerid,217.4763,1809.9622,21.7578);
GameTextForPlayer(playerid, "~w~Camera 2", 3000, 3);
return 1;
}
else if(timer==5)
{
SetPlayerCameraPos(playerid,277.8821,1831.4835,21.4697);
SetPlayerCameraLookAt(playerid,240.2167,1861.3423,20.6723);
GameTextForPlayer(playerid, "~w~Camera 3", 3000, 3);
return 1;
}
else
{
respawn--;
}
return 1;
}
voila ton timer est fini, je ne l'ai pas testé mais il devrait fonctionner ;)
COPIE COLLE PAS çA SERT A RIEN !!!!!
A++ ;)
-
Merci :) . donc je viens d'essayer... Il y a une erreur :
public respawn(playerid)
{
if(timer==15)
{
SetPlayerCameraPos(playerid,119.0221,1931.9307,22.7578);
SetPlayerCameraLookAt(playerid,101.7801,1921.7246,18.3186);
return 1;
}
else if(timer==10)
{
SetPlayerCameraPos(playerid,257.4085,1811.8822,23.7339);
SetPlayerCameraLookAt(playerid,217.4763,1809.9622,21.7578);
return 1;
}
else if(timer==5)
{
SetPlayerCameraPos(playerid,277.8821,1831.4835,21.4697);
SetPlayerCameraLookAt(playerid,240.2167,1861.3423,20.6723);
return 1;
}
else if(timer==0)
{
KillTimer(Timer);
SpawnPlayer(playerid);
SetPlayerSkin(playerid, 287);
SetPlayerPos(playerid,242.2077,1861.7119,14.0840);
return 1;
}
else
{
respawn--;
}
return 1;
}
La voilà : :snip
error 076: syntax error in the expression, or invalid function call : respawn--;
warning 215: expression has no effect
L'action ne se fait pas avec une commande mais un pickup. ;)
-
:dry Désolé....
c'est
timer--;
-
Ah d'accord !!! Merci. Je crois que j'ai compris l'histoire des else. :) :)
-
Mais heu, tu t'es planté dans la présentation de ton timer, essaye quand même mais je ne pense pas qu'il va fonctionner ^^ regarde mon 1er post
-
Bon alors, ton timer ne devait pas fonctionner comme il fallait alors voila je l'ai modifié et testé :
Donc en haut de ton script :
new Timer;
new timer;
forward respawn(playerid);
Je me suis fait une commande de test qui fonctionne donc je la met ici :
if(strcmp(cmdtext,"/cam", true)==0)
{
Timer=SetTimer("respawn", 1000, true);
timer= 16;
return 1;
}
et plus bas dans ton script :
public respawn(playerid)
{
if(timer==0)
{
KillTimer(Timer);
SpawnPlayer(playerid);
SetPlayerSkin(playerid, 287);
SetPlayerPos(playerid,242.2077,1861.7119,14.0840);
return 1;
}
else
{
timer--;
switch (timer) {
case 5:{SetPlayerCameraPos(playerid,277.8821,1831.4835,21.4697);
SetPlayerCameraLookAt(playerid,240.2167,1861.3423,20.6723);}
case 10:{SetPlayerCameraPos(playerid,257.4085,1811.8822,23.7339);
SetPlayerCameraLookAt(playerid,217.4763,1809.9622,21.7578);}
case 15:{SetPlayerCameraPos(playerid,119.0221,1931.9307,22.7578);
SetPlayerCameraLookAt(playerid,101.7801,1921.7246,18.3186);}
case 16: {SendClientMessage(playerid,COLOR_RED, "Initialisation"); }
}
return 1;
}
}
Voila pour moi ça fonctionne nickel ;)
++