• 04 Juin 2026, 16:54:58


Auteur Sujet: [RESOLU][AIDE] Un message qui ne tient pas compte de la condition !  (Lu 1846 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Hatomalis

  • *
  • Tueur en série
  • Messages: 121
    • Voir le profil
Salut à tous !

J'ai un gros soucis dans le code ci-dessous:

//-> Variables
new Ok = 0, v = 0;
new VINCOMP[30] = {592, 577, 511, 512, 593, 520, 553, 476, 519, 460, 513, 548, 425, 417, 487, 488, 497, 563, 447, 469, 472, 473, 493, 595, 484, 430, 453, 452, 446, 454};//Véhicules invalide
//-> On vérifie que le véhicule ne soit pas un Avion, Hélico ou un bateau
for(v = 0, Ok = 0; v < sizeof (VINCOMP) && Ok == 0; v++)
{
if(GetVehicleModel(vehicleid) == VINCOMP[v])Ok = 0;
else Ok = 1;
}
//-> Si c'est le cas, on affiche le message d'info
if(Ok == 1)Message_Information("INFORMATION: Tape /mission et gagne plein d'argent et plein de points !");

Le problème est que le message d'information apparait même si je suis dans un véhicule invalide (Les ID dans VINCOMP), donc je vous demande: Mais d'où vient ce bug ?

Merci d'avance si vous trouvez !
« Modifié: 03 Juillet 2011, 19:40:36 par Hatomalis »

-

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : [AIDE] Un message qui ne tient pas compte de la condition !
« Réponse #1 le: 03 Juillet 2011, 12:22:39 »
explique sa stp for(v = 0, Ok = 0; v < sizeof (VINCOMP) && Ok == 0; v++)
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 Hatomalis

  • *
  • Tueur en série
  • Messages: 121
    • Voir le profil
Re : [AIDE] Un message qui ne tient pas compte de la condition !
« Réponse #2 le: 03 Juillet 2011, 12:47:58 »
C'est la boucle.

EDIT: Je viens de changer la boucle en ça:

for(new v =0; Ok == 0 && v < MAX_VOITURE; v++)
Mais sa fait toujours la même chose.
« Modifié: 03 Juillet 2011, 13:04:37 par Hatomalis »

-

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : [AIDE] Un message qui ne tient pas compte de la condition !
« Réponse #3 le: 03 Juillet 2011, 13:23:21 »
ou me sort tu le vehicleid car j'ai un gros doute a ce niveau la

new VINCOMP[30] = {592, 577, 511, 512, 593, 520, 553, 476, 519, 460, 513, 548, 425, 417, 487, 488, 497, 563, 447, 469, 472, 473, 493, 595, 484, 430, 453, 452, 446, 454};//Véhicules invalide
new Ok = 0, v = 0;
   for(v=0,v < sizeof (VINCOMP); v++)
   {
      if(GetVehicleModel(GetPlayerVehicleID(playerid)) == VINCOMP[v])
      {
         Ok = 0;
      }
      else
      {
         Ok = 1;
      }
   }
if(Ok == 1)Message_Information("INFORMATION: Tape /mission et gagne plein d'argent et plein de points !");
   
   
« Modifié: 03 Juillet 2011, 13:27:38 par cristab »
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 Hatomalis

  • *
  • Tueur en série
  • Messages: 121
    • Voir le profil
Re : [AIDE] Un message qui ne tient pas compte de la condition !
« Réponse #4 le: 03 Juillet 2011, 14:37:06 »
J'ai oublié de préciser que le bout de code est dans OnPlayerEnterVehicle donc vehicleid est déjà définie.

J'ai essayer avec ton bout de code, sa  ne marche toujours pas.

-

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : [AIDE] Un message qui ne tient pas compte de la condition !
« Réponse #5 le: 03 Juillet 2011, 18:16:59 »
Salut,

si j'ai bien compris, tu veut que si ton véhicule est l'un des modèles listés, tu envoie le message. Si c'est le cas, change simplement ton test dans ta boucle :

//-> Variables
new Ok = 0, v = 0;
new VINCOMP[30] = {592, 577, 511, 512, 593, 520, 553, 476, 519, 460, 513, 548, 425, 417, 487, 488, 497, 563, 447, 469, 472, 473, 493, 595, 484, 430, 453, 452, 446, 454};//Véhicules invalide
//-> On vérifie que le véhicule ne soit pas un Avion, Hélico ou un bateau
for(v = 0, Ok = 0; v < sizeof (VINCOMP) && Ok == 0; v++)
{
if(GetVehicleModel(vehicleid) == VINCOMP[v])Ok = 1;//si le véhicule est l'un des modèles testés, on accepte
}
//-> Si c'est le cas, on affiche le message d'info
if(Ok == 1)Message_Information("INFORMATION: Tape /mission et gagne plein d'argent et plein de points !");

Simple commentaire, tu devrais sortir ton GetVehicleModel de la boucle et utiliser une variable, ça t'évitera potentiellement quelques appels à la fonction.

++Sim++





Hors ligne Hatomalis

  • *
  • Tueur en série
  • Messages: 121
    • Voir le profil
Re : [AIDE] Un message qui ne tient pas compte de la condition !
« Réponse #6 le: 03 Juillet 2011, 18:55:50 »
Non, en fait c'est le contraire, j'ai donc remplacer le == par un != mais encore le même résultat, le message s'affiche pour tous les type de véhicule  :wall

-

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : [AIDE] Un message qui ne tient pas compte de la condition !
« Réponse #7 le: 03 Juillet 2011, 19:05:45 »
Salut,

si c'est le contraire que tu désire, remplace dans la dernière ligne:

if(Ok == 1)Message_Information("INFORMATION: Tape /mission et gagne plein d'argent et plein de points !");par
if(Ok != 1)Message_Information("INFORMATION: Tape /mission et gagne plein d'argent et plein de points !");
parce que ta boucle que tu utilisais au début va toujours avoir le même résultat peu importe ton véhicule. Le même véhicule ne peut pas être de 30 modèles différents en même temps...

++Sim++





Hors ligne Hatomalis

  • *
  • Tueur en série
  • Messages: 121
    • Voir le profil
Re : [AIDE] Un message qui ne tient pas compte de la condition !
« Réponse #8 le: 03 Juillet 2011, 19:17:16 »
Là le message ne s'affiche plus sur aucun véhicule ^^

-

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : [AIDE] Un message qui ne tient pas compte de la condition !
« Réponse #9 le: 03 Juillet 2011, 19:29:23 »
moi j'aurais fait de la sorte

Fonction cacher volontairement
est dans ta commande tu met if(Valid_Vehicle(playerid)==1)// voiture valide

dela tu evite une boucle inutile ^^


post editer pour cacher la fonction creer
« Modifié: 03 Juillet 2011, 19:44:35 par cristab »
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 Hatomalis

  • *
  • Tueur en série
  • Messages: 121
    • Voir le profil
Re : [AIDE] Un message qui ne tient pas compte de la condition !
« Réponse #10 le: 03 Juillet 2011, 19:39:58 »
C'est bon j'ai trouvé d'où venait le problème.

    new Ok = 1, v = 0;
new VINCOMP[30] = {592, 577, 511, 512, 593, 520, 553, 476, 519, 460, 513, 548, 425, 417, 487, 488, 497, 563, 447, 469, 472, 473, 493, 595, 484, 430, 453, 452, 446, 454};//Véhicules invalide
//-> Si le joueur est dans un véhicule valide
for(v = 0; v < sizeof (VINCOMP); v++)
  {
    if(GetVehicleModel(vehicleid) == VINCOMP[v])Ok = 0;
    }
//-> Si c'est le cas, on affiche le message d'info
if(Ok == 1)Message_Information("INFORMATION: Tape /mission et gagne plein d'argent et plein de points !");

Merci à toi et à Sim pour m'avoir aider !

-