• 08 Juillet 2025, 16:59:08


Auteur Sujet: Problème de boites de dialogues  (Lu 768 fois)

0 Membres et 1 Invité sur ce sujet

DexX

  • Invité
Problème de boites de dialogues
« le: 31 Août 2011, 19:49:27 »
Bonjour, j'ai voulu pousser un peu mon système de banque, en y ajoutant un système de carte bancaire.
Donc, lorsque le joueur arrive devant un distributeur, on lui demande de saisir son code dans une boite de dialogue.
Le problème est que dès qu'il saisit son code bancaire dans la boite de dialogue, lors de la validation, la boite disparait ... Et je ne vois pas pourquoi.

La commande /retirer :

if(strcmp(cmd, "/retirer", true) == 0)
{
    if(IsPlayerConnected(playerid))
    {
if(IsADistrib(playerid))
        {
        format(string,256, "Charngement des données de la banque ...\n\nVeuillez saisir votre code bancaire :",sendername);
ShowPlayerDialog(playerid, DIALOGUE_BANQUE_NCB, DIALOG_STYLE_INPUT, "Distributeur",string,"Valider","Annuler");
return 1;
          }
        else
{
            SendClientMessage(playerid,COLOR_ERREUR,"[Erreur]: Vous n'êtes pas à la banque ou dans un distributeur.");
            return 1;
      }
}
return 1;
}

Ensuite dans OnDialogResponse :

if(dialogid == DIALOGUE_BANQUE_NCB)
{
    if(response != 1)
{
    return 1;
  }
new code = strval(tmp);
if(code == PlayerInfo[playerid][pNBancaire])
{
ShowPlayerDialog(playerid,112,DIALOG_STYLE_INPUT,"Indiquez le montant que vous désirez :",string,"Valider","Annuler");
return 1;
  }
  else
{
ShowPlayerDialog(playerid,DIALOGUE_BANQUE_NCB,DIALOG_STYLE_INPUT,"Erreur \nVotre code bancaire est incorrect.\nVeuillez réessayer s'il vous plaît. ",string,"Valider","Annuler");
gPlayerCodeCB[playerid] += 1;
if(gPlayerCodeCB[playerid] == 3)
{
PlayerInfo[playerid][pCBancaire] = 0;
GameTextForPlayer(playerid,"~r~Carte avaler",10000,5);
gPlayerCodeCB[playerid] = 0;
PlayerInfo[playerid][pNBancaire] = 0;
return 1;
}
}
  }
    if(dialogid == 112)
    {
        if(response == 1)
        {
tmp = strtok(inputtext,idx);
    if(!strlen(tmp))
    {
        ShowPlayerDialog(playerid,112,DIALOG_STYLE_INPUT,"Indiquez le montant que vous désirez retirer :",string,"Retirer","Annuler");
return 1;
    }
    new somme = strval(tmp);
    if (somme > PlayerInfo[playerid][pAccount] || somme < 1)
{
format(string,256,"Vous n'avez pas autant d'argent %s \nVous désirez retirer combien ?",sendername);
ShowPlayerDialog(playerid,112,DIALOG_STYLE_INPUT,"Distributeur",string,"Retirer","Annuler");
return 1;
}
format(string, sizeof(string), "[Banque]: Vous avez retirer %d$.", somme);
SendClientMessage(playerid, COLOR_BANQUE, string);
GivePlayerMoney(playerid, somme);
PlayerInfo[playerid][pAccount] -= somme;
}
else
{
SendClientMessage(playerid, COLOR_ERREUR, "[Erreur]: Vous avez annulé, vous êtes kické automatiquement.");
    return 1;
}
}

Merci d'avance de votre aide..

Cordialement,
DexX

DexX

  • Invité
Re : Problème de boites de dialogues
« Réponse #1 le: 01 Septembre 2011, 14:14:10 »
Non, ça ne change rien, sa fait toujours pareil  ;)

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : Problème de boites de dialogues
« Réponse #2 le: 02 Septembre 2011, 03:28:32 »
J'ai rendu plus beau le code et je l'ai légèrement amélioré et enlevé tous les return inutile.
J'ai également ajouté des print à chaque condition, à toi de jouer maintenant.

http://pastebin.gtaonline.fr/pastebin.php?show=1151