• 05 Juin 2026, 01:02:16


Auteur Sujet: Détruire des véhicules au respawn  (Lu 1359 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Gilux

  • *
  • Mafioso
  • GOOBY PLS
  • Messages: 2209
    • Voir le profil
Détruire des véhicules au respawn
« le: 16 Juin 2010, 23:34:50 »
Salut, je fais un menu /veh avec quelques véhicules sous forme de DIALOG_STYLE_LIST, mais je voudrais faire en sorte que lorsqu'ils respawnent, ils soient détruits.
Parce que je met DestroyVehicle(vehicleid) Dans OnVehicleSpawn, mais il détruit même ceux ajoutés grâce à AddStaticVehicleEx...

Il faudrait donc faire une exception, mais je ne vois pas comment faire... J'ai essayé avec une variable mais je n'ai pas réussi  :(

Voila un bout du code

Code: (pawn) [Sélectionner]
case 8: // Windsor (ID 555)
            {
    new Float:x, Float:y, Float:z, Float:Angle;
    new Vehicule;
if (IsPlayerInAnyVehicle(playerid))
{
SendClientMessage(playerid,rouge,"Tu as déja un véhicule, sors de celui-ci pour en obtenir un autre !");
}
else
{
                GetPlayerPos(playerid,x,y,z);
GetPlayerFacingAngle(playerid, Angle);
Vehicule = CreateVehicle(555,x,y,z,Angle,-1,-1,30);
PutPlayerInVehicle(playerid,Vehicule,0);
}
            }
public OnVehicleSpawn(vehicleid)
{
if (vehicleid == Vehicule)
{
DestroyVehicle(vehicleid);
}
return 1;
}
Mais ça me renvoie C:\Users\proprietaire\Desktop\serveur\filterscripts\Vehicules.pwn(283) : error 017: undefined symbol "Vehicule" alors que je l'ai déclaré :(

Merci de votre aide   :laugh

++

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : Détruire des véhicules au respawn
« Réponse #1 le: 17 Juin 2010, 13:28:46 »
ben le mieux c'est en cree le vehicule tu lui met une var est quand il respawn tu le detruit c'est assez simple au final
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Détruire des véhicules au respawn
« Réponse #2 le: 18 Juin 2010, 10:44:37 »
J'ai eu ce problème dans le script de Lalu's Stunt.
Voici ma solution :

Tu déclares une variable globale qui contiendra l'ID du dernier véhicule créé dans OnGameModeInit
new NbVehicules;

public OnGameModeInit ()
{
...
AddStaticVehicleEx (...);
AddStaticVehicleEx (...);

NbVehicules = AddStaticVehicleEx (...);
/*!!!  Il ne doit plus y avoir d'ajout de véhicule après cette ligne !!! */

...
}
NB : La variable NbVehicules peut être aussi utilisée partout dans le script lorsqu'on a besoin de faire une boucle sur tous les véhicules du serveur (respawn de tous les véhicules par exemple).

Maintenant, on utilise le fait que les nouveaux véhicules créés par les joueurs (avec CreateVehicle) auront forcément des ID supérieurs au dernier véhicule créé par le serveur (dont l'ID est NbVehicules) :
public OnVehicleSpawn (vehicleid)
{
/* Si c'est un véhicule crée par un joueur */
if (vehicleid > NbVehicules)
{
/* On le détruit */
DestroyVehicle (vehicleid);
}
return true;
}

Voilà, simple et efficace.

++
Syg
« Modifié: 18 Juin 2010, 10:46:08 par Syg »
Courtesy of GtaManiac