• 23 Avril 2025, 20:16:22


Auteur Sujet: Respawn des véhicle par vague  (Lu 1843 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Respawn des véhicle par vague
« le: 06 Février 2008, 03:40:42 »
salut tlm,

bon, voila mon problème, je voudrais (comme c'est écrit dans le titre) faire un respawn par vagues des vehicles, soit tous les vehicles dans lesquels il n'y a aucun joueurs se respawnent, comme cela lorsque les joueurs déplacent les vehicles, on ne se ramasse pas avec des endroits où il n'y en a pas.... :P
bon voila mon code :-X
je fais un timer qui respawn toute les 15 minutes,
ensuite à l'aide d'une boucle je respawn les véhicles sans joueurs......
OnGameModeInit()
{
SetTimer("CR",900000,1);
return 1;
}
public CR()
{
  for(new i; i < MAX_VEHICLES; i++){
    for(new p; p < MAX_PLAYERS;i++){
if(!IsPlayerInVehicle(p,i)){ SetVehicleToRespawn(i); return 1; }
        if(IsPlayerInVehicle(p,i)) return 1;
        }
}
return 1;
}

bon, voila c à peu près celà, je n'ai aucune erreur mais il n'y a aucun respawn :(

 donc j'aimerais savoir ce qui empêche la fonstion de fonctionner ou une autre façon de la créer

Merci d'avance :D :D

++Sim++





Hors ligne Sismix84

  • *
  • Tueur en série
  • Messages: 247
    • Voir le profil
Re : Respawn des véhicle par vague
« Réponse #1 le: 06 Février 2008, 12:29:48 »
Je crois que tu n'as pas besoin d'un code pour ça, le AddStaticVehicle le fait tout seul je crois.

Hors ligne Eloctro

  • Pawno Fan
  • *
  • Grand Banditisme
  • Aight !
  • Messages: 846
    • Voir le profil
    • GtaSA-RP
Re : Respawn des véhicle par vague
« Réponse #2 le: 06 Février 2008, 13:38:36 »
Code: (cpp) [Sélectionner]
OnGameModeInit()
{
SetTimer("CR",900000,1);
return 1;
}
public CR()
{
  for(new i; i < MAX_VEHICLES; i++){
    for(new p; p < MAX_PLAYERS;i++){
if(!IsPlayerInVehicle(p,i)){ SetVehicleToRespawn(i);
        }
}
return 1;
}
Eisseille sa de donera pas d'erreur .

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Respawn des véhicle par vague
« Réponse #3 le: 06 Février 2008, 17:34:52 »
Oui, c'est bon Coco76, ça devrait mieux marché comme ça.
Sinon, tu as la fonction AddStaticVehicleEx qui permet de spécifier le temps pendant lequel on peut laisser un véhicule avant qu'il respawn.
La fonction AddStaticVehicleEx a un paramètre de plus que AddStaticVehicle : Le temps (en secondes) avant respawn quand on quitte un véhicule.
Tous les autres paramètres sont les mêmes donc le portage d'une fonction vers l'autre est très facile.

++
Syg
Courtesy of GtaManiac

Hors ligne Eloctro

  • Pawno Fan
  • *
  • Grand Banditisme
  • Aight !
  • Messages: 846
    • Voir le profil
    • GtaSA-RP
Re : Respawn des véhicle par vague
« Réponse #4 le: 06 Février 2008, 18:05:40 »
J'aime bien les compliment et marsu tes lignes avait la meme commande :

Code: (cpp) [Sélectionner]
if(!IsPlayerInVehicle(p,i)){ SetVehicleToRespawn(i); return 1; }//ya juste { SetVehicleToRespawn(i); qui change
        if(IsPlayerInVehicle(p,i)) return 1;//le faite de le mettre 2 foi a foiré la commande .

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Respawn des véhicle par vague
« Réponse #5 le: 07 Février 2008, 00:04:27 »
salut,

merci à tous pour vos réponses, :happy

je vais essayer ton truc coco76, :cheers

mais syg, l'ennuie que je voulais corriger surtout c'est le fait que si un joueur ne rentre pas dans un véhivle mais le pousse à l'aide d'un autre,
desfois il se ramasse très loin (surtout sur les jumps en hauteurs....)

en tous cas, je teste en je revien avec les résultats... :D

EDIT: j'ai tester le truc a coco76, mais ca ne marche pas.... lorsqu'on arrive au respawn, si on est dans un vehicle, on est éjecter et on ne peut plus rentrer dans aucun vehicle >:( >:( :( et même que le serveur plante, pas sur le coup, mais quand j'arrive pour le fermer il ne repond pas....

++Sim++
« Modifié: 07 Février 2008, 03:08:50 par Sim »





Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Respawn des véhicle par vague
« Réponse #6 le: 07 Février 2008, 11:30:51 »
Oui, il y a une petite erreur pas très visible mais très embettante dans ton code (et Coco ne l'a pas vu quand il a proposé une correction).
Dans la deuxième boucle for, tu incrémente i alors qu'il faut incrémenter p.
Comme p n'est pas incrémenté, le script reste bloqué dans le boucle for(new p ; p<MAX_PLAYERS; i++)

Donc remplace le i++ de cette ligne par un p++ et tout devrait marcher correctement.

A votre décharge, c'est le genre d'erreur extrèmement difficile à trouver car elle ne porte que sur un caractère.

++
Syg
Courtesy of GtaManiac

Hors ligne UrbanGhetto

  • *
  • Grand Banditisme
  • I PWN You !
  • Messages: 948
    • Voir le profil
    • http://h2oteam.roxorgamers.com/
Re : Respawn des véhicle par vague
« Réponse #7 le: 07 Février 2008, 12:57:32 »
Je propose le CreateVehicle ou AddStaticVehicleEx, C'est beaucoup plus facile et ça empéchera de faire ramer ton serveur avec un timer...

˙·٠•● Je dis, mieux vaut toucher à un clavier qu'a de la drogue | Le meilleur topic du forum | Ce que j'ai fait a fait de moi ce que je suis ●•٠·˙

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Respawn des véhicle par vague
« Réponse #8 le: 07 Février 2008, 23:26:03 »
salut,

merci syg, je n,avais pas regarder suffisament il faut croire  :wall

je test et je donne le résultat....

euh, urban, tu nas pas lu ce que j'ai écrit???

je disais que justement, je ne veut pas que le respawn lorsque le joueur quitte le vehicle car les vehicles que les joueurs accrochent sont tous bougés et is ne se replacent pas, ca m'énerve légèrement... ::)

merci a tous

EDIT:
ta correction est bonne mais mon code ne l'est pas,
 j'ai bien regarder, j'ai tester quelques trucs mais je n'y arrive pas, pourtant c'est possible, je l'ai deja vu sur un serveur et la ca marchait parfaitement.....voila ce que j'ai essayer:
{
  for(new i; i < MAX_VEHICLES; i++){
    for(new p; p < MAX_PLAYERS;p++){
         if(IsPlayerInVehicle(p,i))return 1;
    else {SetVehicleToRespawn(i);
}
        }
}
return 1;
}
il fonctionne presque, il n'y a qu'un truc, c'est qu'il fait le return 1; des qu'un joueur est dans un véhicle et il les empêchent tous de respawner.... c'est probablement un truc vraiment simple mais, je ne vois pas...


++Sim++
« Modifié: 09 Février 2008, 01:22:25 par Sim »





Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Respawn des véhicle par vague
« Réponse #9 le: 13 Février 2008, 17:50:07 »
Ben suffit de pas faire le return 1; :
{
for(new i; i < MAX_VEHICLES; i++){
for(new p; p < MAX_PLAYERS;p++){
if(!IsPlayerInVehicle(p,i)){
SetVehicleToRespawn(i);
}
        }
}
return 1;
}

Dans ce code, on respawn tous les véhicules qui n'ont pas de joueurs dedans. Et dans ce cas, les deux boucles vont jusqu'au bout.

++
Syg
Courtesy of GtaManiac

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Respawn des véhicle par vague
« Réponse #10 le: 13 Février 2008, 23:31:25 »
salut ,

désolé de te décevoir,

je l'ai tester mais malheureusement,

le code ne fait que vérifier si l'un des joueurs n'est pas dans un vehicle,

donc... dès que l'un des joueurs n'est pas dans un vehicle, il lance le respawn,

il y a un truc que j'aimerais bien savoir, pour les boucle, si l'on met un if avec un élément de la boucle et qu'il fait une action en rapport au test (comme dans ce code),
es ce que l'action se fait uniquement pour l'unité testée???

exemple:

{
for(new i; i < MAX_VEHICLES; i++){
for(new p; p < MAX_PLAYERS;p++){
if(!IsPlayerInVehicle(p,i)){//ici on fait le test en question
SetVehicleToRespawn(i); //est-ce qu'il ne respawn que le vehicle tester précédamment??
}
        }
}
return 1;
}


merci

++Sim++





Hors ligne ghettoman94

  • *
  • Tueur en série
  • Messages: 158
    • Voir le profil
Re : Respawn des véhicle par vague
« Réponse #11 le: 14 Février 2008, 10:40:41 »
 ;)franchement tu te complique la vie. Il y a une fonction qui le fait
et qui est beaucoup plus facile a utiliser.
AddStaticVehicleEx(modelid, Float:spawn_x, Float:spawn_y,Float:spawn_z, Float:angle, color1, color2, temps du respawn (en seconde))
Donc je ne voit pas pourquoi tu perd du temps avec se code


[TUTO POUR INSTALLER MTA]http://ghmsoftware.e3b.org/tutoriel.php?id=2

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Respawn des véhicle par vague
« Réponse #12 le: 14 Février 2008, 10:56:34 »
Ce qu'il veut faire, c'est remettre en place tous les véhicules qui ont été déplacés sans que personne ne monte dedans.

Pour repondre à ta question Sim, effectivement, le SetVehicleToRespawn ne porte que sur le véhicule testé précédement.

Par contre, je n'ai pas fait de test mais il me semble bien que les véhicules n'ayant reçu aucun passager ont un comportement différent des autres véhicules. Notament, je ne suis pas sur que le SetVehicleToRespawn fonctionne avec un tel véhicule.

Je vais faire un essai et j'éditerais le message.
Edit : Tout fonctionne correctement, le code que je t'ai filé devrait faire ce que tu veux faire.

++
Syg
« Modifié: 14 Février 2008, 11:06:22 par Syg »
Courtesy of GtaManiac