GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Jens84 le 12 Novembre 2007, 18:45:59
-
Bonjour, j'aimerais connaitre le moyen pour que les vehicules (placés dans AddStaticVehicle) soient respawnés à leur emplacement d'origine après un certain temps d'innocupation (que l'on puisse modifier).
Merci d'avance
-
salut,
tu peux le faire avec un timer et avec SetVehicleToRespawn();
++
R@f
-
C'est à dire je fais quelles commandes precises, parce que je débute en PAWNO, donc je sais pas encore tout.
Je dois faire quelle commande et la placer ou s'il vous plait ?
-
je vais faire ce bout de code demain pour toi ;) vers 14h30 tu l'aura ;)
++
R@f
-
OK merci beaucoup parce que c'est très enervant de voir des vehicules partout sur la carte sans qu'il soient replacés
-
Y a plus simple, on utilise un AddStaticVehicleEx, exemple :
public OnGameModeInit( )
{
AddStaticVehicleEx (ID, X, Y, Z, R_X, R_Y, R_Z, /*temps de respawn*/);
return 1;
}
-
C'est quoi les R_X, R_Y, R_Z ? et est-ce que je dois prendre en compte les / et *
-
les R_X, R_Y, R_Z sont les rotations, non tu ne doit pas mettre les /* et */, tu met le temps que tu veut à la place, par exemple 1000 veut dire 1 seconde.
-
Et les rotations, sont-elles integrées dans les coordonées des vehicules AddStaticVehicle ?
Si j'ai bien compris ca serait par exemple :
Si j'ai AddStaticVehicle(451,-2107.2075,892.3208,76.3690,180.0604,36,36)
Je dois remplacer par : AddStaticVehicleEX (451,-2107.2075,892.3208,76.3690 mais après j'ai l'angle Z et les couleurs mais pas toutes les rotations.
Donc comment dois-je faire sur cet exemple ?
-
Désolé, je me suis trompé, en fait il n'y a pas les R_X, R_Y, ces chiffre sont remplacé pas les couleur 1 et 2, donc ça fait :
public OnGameModeInit( )
{
AddStaticVehicleEx (ID, X, Y, Z, R_X, couleur 1, couleur 2, /*temps de respawn*/);
return 1;
}
et pour les coordonnées de ton code ça fait :
public OnGameModeInit( )
{
AddStaticVehicleEx (451, -2107.2075, 892.3208, 76.3690, 180.0604, 36, 36, 60000);
return 1;
}
le dernier chiffre est le temps, 60000 est en fait 10 minutes.
++
-
Juste une petite correction :
60000 ça fait 1 minute, pas 10 (mais ce n'était peut-être qu'une erreur de frappe).
Cette valeur (comme toutes celles de SA-MP) est donnée en millisecondes (ms)
Soit 60000 ms = 60 s = 1 min.
++
Syg
-
Ok merci beaucoup pour votre aide !!!
-
Re-bonjour.
J'ai modifié mon script en transformant tous les AddStaticVehicle en AddStaticVehicleEx avec la valeur 60000 (1 minute) mais quand je n'utilise plus un vehicule (j'en descend et attend 1 minute), il ne se passe rien et le vehicule reste a sa place.
J'aimerais en connaitre la raison.
Est-ce la commande qui ne fonctionne pas ? Ou n'a-t'elle pas cette fonction précise de respawner les vehicules à leur emplacement d'origine après abandon ?
Merci d'avance pour votre future reponse.
-
Est ce que tu est aller voir a l'emplacement d'origine de la voiture s'il y en avais une autre ?
-
Ben oui par exemple au skate park j'ai placé des nrg-500 j'en prends une puis je la laisse ailleurs dans le skate park et elle retourne pas a l'endroit où je l'ai placé au skate, puisqu'elle reste devant moi et puisqu'il n'y en a pas de nouvelle
-
Ce paramètre ne correspond pas au temps qu'il faut pour que le véhicule respawn quand il est inoccupé mais quand il est détruit.
Voir : http://wiki.sa-mp.com/index.php/AddStaticVehicleEx
++
Syg
-
Ah mince, j'y avait pas fait attention. Alors comment faut-il faire ?
-
je t'ai fais le code, le voici :
Vehicle respawn par R@f (http://pastebin.gtaonline.fr/pastebin.php?show=200)
j'ai fais ce code à l'arache et je ne l'ai pas tester, si quelque chose ne marche pas dit le moi et je corrige sa ;)
++
R@f
-
R@f, il faut arreter le timer que le joueur remonte dans le véhicule sinon le véhicule va respawner quand même.
Et là, ça se complique un peu puisque pour arreter un timer, il faut conserver son ID.
Allez, je me repose, je vous laisse faire.
++
Syg
-
il me semblait que j'avais oublier quelque chose ....
Comme sa c'est juste ? : http://pastebin.gtaonline.fr/pastebin.php?show=204
++
R@f
-
Non, Ca ça l'est :
http://pastebin.gtaonline.fr/pastebin.php?show=203 (http://pastebin.gtaonline.fr/pastebin.php?show=203)
Tu as fais un KillTimer("CarRespawn") ce qui est faux...
Il faut définir un Timer qui sera détruit, Comme ceci :
new Timer = SetTimer("Truc",1000,1);
KillTimer(Timer);
Mais pour le cas de 2 CallBack différentes il faut mettre le new en haut...
EDIT: Et 240000 ms ne font pas 4 minutes ???
-
Ce que j'ai pas compris c'est pourquoi il y a ce forward :
forward TimerTuning (vehicle);
c'est pas plutôt :
forward CarRespawn (vehicle);
?
-
Non, Ca ça l'est :
http://pastebin.gtaonline.fr/pastebin.php?show=203 (http://pastebin.gtaonline.fr/pastebin.php?show=203)
Tu as fais un KillTimer("CarRespawn") ce qui est faux...
Il faut définir un Timer qui sera détruit, Comme ceci :
new Timer = SetTimer("Truc",1000,1);
KillTimer(Timer);
Mais pour le cas de 2 CallBack différentes il faut mettre le new en haut...
EDIT: Et 240000 ms ne font pas 4 minutes ???
pour le kill timer j'avais pas le compileur, c est pour sa que c'est faux
je pense bien que sa fait 4min, 240000 / 1000 = 240 / 60 = 4
ah aussi, sismix, comme je l'avais dit plus haut, j'avais pas mon compileur, donc j ai pris exemple d'un code fait par syg (pour eviter les erreurs)
++
R@f
-
Voici la vraie version qui marche (bien que pas testée mais je suis assez confiant).
C'est une modification de celle de R@f qui était presque juste, au détail près qu'il ne faut pas 1 seul timer mais un timer par véhicule sinon, dès que quelqu'un rentre ou sort d'un véhicule, ça va mettre le bazard.
http://pastebin.gtaonline.fr/pastebin.php?show=206
Et sinon, 240000 ms = 240 s = 240/60 min = 24/6 min = 4 minutes. Tu avais raison R@f.
++
Syg
-
J'ai bien compri le but de tout ça, mais en ajoutant les fonctions, pawno me trouve des erreurs, alors je vous ai copié la partie où j'ai tout integré avec un repère en haut (pour me dire si j'ai placé les commandes au bon endroit)
http://pastebin.gtaonline.fr/pastebin.php?show=210
-
On avait fait pas mal d'erreur et rien ne vaut un bon test en réel.
Voici une version qui fonctionne :
http://pastebin.gtaonline.fr/pastebin.php?show=215
NB : Pour les besoins de mon test, j'ai mis le temps avant respawn à 2 secondes (2000 ms). Il serait bien de le changer, je pense que 30000ms=30s est parfait.
++
Syg
-
Merci beaucoup beaucoup beaucoup, ca fonctionne parfaitement, je vous remercie enormement de votre aide !!!!
-
lu
de passage voila un ptit lien pour les duréé
[urlhttp://www.convertworld.com/fr/temps/]Lien IcI[/url]
Edit: Merci ArseniK
-
[urlhttp://www.convertworld.com/fr/temps/]Lien IcI[/url]
On ce la refait ;)
Click Here (http://www.convertworld.com/fr/temps/) :)
AK NV.