GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Alexandre_Leborgn le 26 Août 2012, 04:17:14

Titre: (résolu) Problème dialog.
Posté par: Alexandre_Leborgn le 26 Août 2012, 04:17:14
Bonjour ou bonsoir, j'aimerais votre aide pour un problème qui se pose a moi. Je tente de faire un dialog qui permet de confirmer son mot de passe lors de l'inscription. Lorsque les mots de passes entrés sont différents, le dialog est censé se rouvrir, or le dialog disparaît et le 2eme mot de passe est enregistré.

   if(dialogid == DIALOG_REENREGISTREMENT)
   {
   if(!response)
   {
      SendClientMessage(playerid, COLOR_LIGHTBLUE, "|Info| : Vous annulez votre inscription. Utilisez /q pour quitter le jeu.");
   Kick(playerid);
   return 1;
   }
   else
{
   format(playertemppassword2,sizeof(playertemppassword2),"%s",inputtext);
      if(!strlen(inputtext))
      {
     ShowPlayerDialog(playerid, DIALOG_REENREGISTREMENT, DIALOG_STYLE_PASSWORD, "Comfirmation du mot de passe", "Comfirmez votre mot de passe ci-dessous :", "Comfirmez", "Quitter");
     return 1;
      }
      else if(strcmp(playertemppassword2, playertemppassword) == 0)
      {
       new PLAYER_NAME[MAX_PLAYER_NAME];
                    GetPlayerName(playerid, PLAYER_NAME, sizeof(PLAYER_NAME));
       dini_Create(pfile);
                    dini_Set(pfile,"Pseudo",PLAYER_NAME);
                    dini_Set(pfile,"MotDePasse",inputtext);
                    new printenregistrement[100];
                    format(printenregistrement,sizeof(printenregistrement),"Enregistrement de : %s",PLAYER_NAME);
                    printf(printenregistrement);
                    return 1;
   }
   else
   {
       SendClientMessage(playerid, COLOR_LIGHTBLUE, "|Info| : Les mots de passe que vous avez entré sont différents.");
       ShowPlayerDialog(playerid, DIALOG_ENREGISTREMENT, DIALOG_STYLE_PASSWORD, "Enregistrement", "Entrez votre mot de passe ci-dessous :", "Connection", "Quitter");
return 1;

   }
   }
        return 1;
   }
    
Titre: Re : Problème dialog.
Posté par: Infu le 26 Août 2012, 04:49:38
Je suis pas sur d'avoir compris, mais je pense que c'est le fait que tu utilises "DIALOG_REENREGISTREMENT" dans sa même condition. Je veux dire par là, que tu as utiliser deux fois la même dialog alors qu'il est nécessaire d'en créer une autre. C'est comme si tu disais "Si le pot de yaourt est manger. Montrer le yaourt à la personne." Il n'y a aucune logique dedans.
Regarde bien:

Citer
if(dialogid == DIALOG_REENREGISTREMENT)
     {
        if(!response)
        {
            SendClientMessage(playerid, COLOR_LIGHTBLUE, "|Info| : Vous annulez votre inscription. Utilisez /q pour quitter le jeu.");
            Kick(playerid);
            return 1;
        }
        else
      {
          format(playertemppassword2,sizeof(playertemppassword2),"%s",inputtext);
             if(!strlen(inputtext))
             {
             ShowPlayerDialog(playerid, DIALOG_REENREGISTREMENT, DIALOG_STYLE_PASSWORD, "Comfirmation du mot de passe", "Comfirmez votre mot de passe ci-dessous :", "Comfirmez", "Quitter");

[...]

Essaye de donner un nom à la dialog qui permet de confirmer. Je ne suis que débutant, si ça ne fonctionne pas, désoler.
En espérant t'avoir aider.
Titre: Re : Problème dialog.
Posté par: Alexandre_Leborgn le 26 Août 2012, 04:57:13
Je le remontre car il se met uniquement si le joueur n'entre aucun texte.
Cf le "if(!strlen(inputtext))"
Titre: Re : Problème dialog.
Posté par: Infu le 26 Août 2012, 12:33:14
Ah, excuse moi j'ai pas fait gaffe. Je ne peux pas t'aider.
Titre: Re : Problème dialog.
Posté par: Alexandre_Leborgn le 26 Août 2012, 18:05:47
Le probleme a été résolu en étudiant le script point par point avec des print.