• 04 Juin 2026, 17:28:11


Auteur Sujet: If X !=1|| X!=5  (Lu 1722 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne ApocKalipsS

  • *
  • Gangster
  • **** | Une experience GTA IV hors du commun !
  • Messages: 1141
    • Voir le profil
If X !=1|| X!=5
« le: 11 Avril 2009, 17:03:21 »
Bonjour,
J'ai ce code là :

If     X != 1 || X !=2
{

Et si je suis X=1 ou 2, mon action me dit que je suis pas X=1/2.

Comment faire ?

Merci.

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : If X !=1|| X!=5
« Réponse #1 le: 11 Avril 2009, 17:16:56 »
enleve le ! devant chaque =



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne ApocKalipsS

  • *
  • Gangster
  • **** | Une experience GTA IV hors du commun !
  • Messages: 1141
    • Voir le profil
Re : If X !=1|| X!=5
« Réponse #2 le: 11 Avril 2009, 17:40:24 »
J'ai oublier de préciser, en fait c'est dans une commande, je te donne plus de précision :

if (X !=1|| X !=2)
{
Send... "Tu n'es pas X !");.
}

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : If X !=1|| X!=5
« Réponse #3 le: 11 Avril 2009, 19:49:21 »
j' arrive pas a comprendre ce que tu veut



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : If X !=1|| X!=5
« Réponse #4 le: 11 Avril 2009, 21:12:14 »
Salut,

remarque simplement un truc:

ton code est exécuté si ta variable X est différente de 1 et 2, est-ce réellement ce que tu désire?

explique toi davantage!

++Sim++





Hors ligne ApocKalipsS

  • *
  • Gangster
  • **** | Une experience GTA IV hors du commun !
  • Messages: 1141
    • Voir le profil
Re : If X !=1|| X!=5
« Réponse #5 le: 11 Avril 2009, 21:20:44 »
if(strcmp(cmd,"/achetermat",true)==0) // By Ellis
{
    if(IsPlayerConnected(playerid))
    {
        if(gPlayerLogged[playerid] == 0)
        {
            SendClientMessage(playerid, COLOR_GREY, "Vous devez être loggé !");
            return 1;
        }
        if(PlayerInfo[playerid][pJob] != 23 || PlayerInfo[playerid][pJob] != 9)// ICI -----------------------------------------------------------------------------------------------------------
        {
            SendClientMessage(playerid, COLOR_GREY, "Vous n'êtes pas un fabriquant d'armes.");
    return 1;
        }
        if(!PlayerToPoint(2.0, playerid, 2230.3579,-2286.2107,14.3751))
        {
            SendClientMessage(playerid, COLOR_GREY, "Vous n'êtes pas à la banque de materiaux !");
            return 1;
        }
        tmp = strtok(cmdtext, idx);
        if(!strlen(tmp))
        {
            SendClientMessage(playerid, COLOR_WHITE, "UTTILISATION: /achetermat [ammount]");
            return 1;
        }
        new mammount;
        mammount = strval(tmp);
        if(mammount > matssys[MatsAmmount])
        {
            SendClientMessage(playerid, COLOR_WHITE, "Banque: Désolé, on a pas assez de materiaux.");
            return 1;
        }
if(GetPlayerMoney(playerid) < mammount * 15 - 1)
{
    SendClientMessage(playerid, COLOR_GREY, "Vous n'avez pas assez d'argent !");
    return 1;
}
matssys[MatsAmmount] -= mammount;
PlayerInfo[playerid][pMats] += mammount;
SafeGivePlayerMoney(playerid, - mammount * 15);
format(string, sizeof(string), "Vous achetez %d materiaux pour $%d.", mammount, mammount * 15);
SendClientMessage(playerid, COLOR_GREY, string);
SaveMatsSystem();
return 1;
    }
    return 1;
}

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : If X !=1|| X!=5
« Réponse #6 le: 11 Avril 2009, 21:23:31 »
Salut,

laisse moi deviner.... 9 et 23 sont les fabricants d'armes?

dans ce cas, tu dois remplacer le || par &&

++Sim++





Hors ligne ApocKalipsS

  • *
  • Gangster
  • **** | Une experience GTA IV hors du commun !
  • Messages: 1141
    • Voir le profil
Re : If X !=1|| X!=5
« Réponse #7 le: 11 Avril 2009, 23:05:53 »
En fait, soit il est 9, soit il est 29, mais il peut pas être les deux.

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : If X !=1|| X!=5
« Réponse #8 le: 11 Avril 2009, 23:57:32 »
Il suffit de traduire avec des mots :
if (x!=2 || x!=5)
Se traduit par:
Si x est différent de 2 ou x est différent de 5
Et on se rend compte (en réfléchissant un peu) que x est forcément différent de 2 ou de 5 (ou alors il faudra que x puisse être à la fois égal à 2 et à 5, ce qui n'est pas possible). Ceci fait que ton test est toujours vérifié et que donc il ne sert à rien.

Sim t'as donné le solution.
if (x!=2 && x!=5)
-> Si x est différent de 2 et x est différent de 5

Si on traduit ça en bon français pour ton gamemode :
si le joueur n'est pas marchand d'arme et qu'il n'est pas fabricant d'arme

++
Syg
Courtesy of GtaManiac

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : If X !=1|| X!=5
« Réponse #9 le: 11 Avril 2009, 23:59:17 »
Salut,

fais comme j'ai dit....

ne pas oublier : tu teste l'inverse dans ce cas

donc si un joueur fais partie du job 9, il ne peut nécessairement pas être dans le job 23
donc si tu effectue le test que tu exécutais:

si le joueur n'est pas dans le 9 ou n'est pas dans le 23, on arrête

exemple:

       PlayerInfo[playerid][pjob] = 23;//le joueur est dans la team 23
            ici ca va, le joueur est dans cette job         mais pas ici, il n,est pas dans la 9
       if(PlayerInfo[playerid][pJob] != 23 || PlayerInfo[playerid][pJob] != 9)// ICI
       {
           SendClientMessage(playerid, COLOR_GREY, "Vous n'êtes pas un fabriquant d'armes.");
   return 1;
       }

en espérant que tu aie compris

EDIT: désolé Syg, j'ai posté presque au même moment

++Sim++





Hors ligne ApocKalipsS

  • *
  • Gangster
  • **** | Une experience GTA IV hors du commun !
  • Messages: 1141
    • Voir le profil
Re : If X !=1|| X!=5
« Réponse #10 le: 12 Avril 2009, 09:32:18 »
Ca marche, c'est un peu bizzarre je trouve  ;D

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : If X !=1|| X!=5
« Réponse #11 le: 12 Avril 2009, 22:31:54 »
Non, ce n'est pas bizarre, c'est de la logique binaire pure et dure.
J'ai longtemps re-réfléchi à ce test et j'ai même cru m'être trompé. Mais bon, ça m'arrive rarement :angelnot.

Je vais essayer d'être plus clair.
if(PlayerInfo[playerid][pJob] != 23 || PlayerInfo[playerid][pJob] != 9)// ICI
{
   SendClientMessage(playerid, COLOR_GREY, "Vous n'êtes pas un fabriquant d'armes.");
   return 1;
}
Ce test est toujours vérifié, quelque soit la valeur de PlayerInfo[playerid][pJob].
Prenons 3 cas :
PlayerInfo[playerid][pJob] = 22  Ce qui donne  Si 22 != 23 ou 22 != 9 -> VRAI ou VRAI -> VRAI  -> Ce n'est pas un fabricant d'arme
PlayerInfo[playerid][pJob] = 23  Ce qui donne  Si 23 != 23 ou 22 != 9 -> FAUX ou VRAI -> VRAI  -> Ce n'est pas un fabricant d'arme
PlayerInfo[playerid][pJob] = 9  Ce qui donne  Si 9 != 23 ou 9 != 9 -> VRAI ou FAUX -> VRAI  -> Ce n'est pas un fabricant d'arme

La bonne solution est celle qu'avait donnée Sim en premier :
if(PlayerInfo[playerid][pJob] != 23 && PlayerInfo[playerid][pJob] != 9)// ICI
{
   SendClientMessage(playerid, COLOR_GREY, "Vous n'êtes pas un fabriquant d'armes.");
   return 1;
}
Si on reprend nos 3 cas :
PlayerInfo[playerid][pJob] = 22  Ce qui donne  Si 22 != 23 et 22 != 9 -> VRAI et VRAI -> VRAI -> Ce n'est pas un fabricant d'arme
PlayerInfo[playerid][pJob] = 23  Ce qui donne  Si 23 != 23 et 22 != 9 -> FAUX et VRAI -> FAUX -> C'est un fabriquant d'arme
PlayerInfo[playerid][pJob] = 9  Ce qui donne  Si 9 != 23 et 9 != 9 -> VRAI et FAUX -> FAUX -> C'est un fabriquant d'arme

Pour plus de compréhension, il aurai fallu inverser le test :
if(PlayerInfo[playerid][pJob] == 23 || PlayerInfo[playerid][pJob] == 9)
{
   // C'est un fabriquant d'arme 23 ou 9, on fait ce qu'on doit faire
}
else
{
   SendClientMessage(playerid, COLOR_GREY, "Vous n'êtes pas un fabriquant d'armes.");
   return 1;
}

++
Syg
Courtesy of GtaManiac

Hors ligne ApocKalipsS

  • *
  • Gangster
  • **** | Une experience GTA IV hors du commun !
  • Messages: 1141
    • Voir le profil
Re : If X !=1|| X!=5
« Réponse #12 le: 13 Avril 2009, 11:52:32 »
Merci Syg  :)