GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Kiloutre le 21 Août 2012, 02:53:36

Titre: [RESOLU]Boite de Dialogue qui disparait
Posté par: Kiloutre le 21 Août 2012, 02:53:36
Bonjour a tous et a toutes, voila beaucoup de temps que je cherche une solution a un probleme simple : Ma boite de dialogue disparait des que je clique sur quelquechose dans ma liste !

Voici mon bout de code :

public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext,"/wep",true)==0)
{
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_LIST, "Catégories", "Arme de Melee\nPistolet\nMitraillette\nFusil a Pompe\nExplosif\nAutres", "Continuer", "Quitter");
   return 1;
}
return 0;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(response)
{
     if(dialogid == 1)//Si la personne choisi le dialog numero 1 (Catégories)
     {
        if(listitem == 0)
        {
            ShowPlayerDialog(playerid, 2, DIALOG_STYLE_LIST,"Arme de Melee", "Couteau\n Katana\nBatte de Baseball\nPoing Américain\nPelle", "Prendre", "Retour");
}
     }
    
     if(dialogid == 2)
     {
        if(listitem == 0)
        {
GivePlayerWeapon(playerid,4,0);
SendClientMessage(playerid,COLOR_VERT,"Vous venez de recevoir un Couteau");
}
}
}
    return 1;
}

Ici quand je choisi la categorie "Arme de Melee" (Boite de dialogue n°2) ma boite de dialogue disparait, et c'est tous. J'ai meme essayé d'inserer un SendClientMessage quand on arrive dans la categorie pour voir si ca marchais mais non.

J'espere franchement trouvé la solution ca fait tres longtempss que je cherche  :wall
Titre: Re : Boite de Dialogue qui disparait
Posté par: Kevin_Carter le 21 Août 2012, 02:59:16
Tu mets :
if(response)
{
   if(dialogid == 1)...
}
En fait tu te dis comme ça :

Si c'est le dialogid 1 et qu'il y a une réponse, ensuite si c'est la reponse 1 faire ceci etc..

L'as tu demande au script de te donner une réponse, mais où ? Je sais pas si c'est ça qui changera le problème mais essai et dis-nous en des nouvelles
Le mieux c'est d'utiliser la fonction switch par exemple :
switch(dialogid)
{
    case 1(ou le nom d'un define):
    {
       switch(listitem)
       {

       }
    }
}
Et ainsi de suite !
Titre: Re : Boite de Dialogue qui disparait
Posté par: Diablo62 le 21 Août 2012, 10:38:47
Salut.

J'ai implanter dans mon Gm des dizaines de Boites de dialogues et plusieurs ce sont des boites de dialogues dans des boites de dialogues, et je n'ai Jamais eu aucun problème.

Ton "OnDialogResponse" a juste mal été créé. Voilà comment moi j'ai fait :

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
   if(dialogid == Boite1) 
   {
       if(response) // Response doit se trouver en dessous
       {
            if(listitem == 0)
            {
            // Un bout de code
            }
            if(listitem == 1)
            {
            // Un autre bout de code
            }
       }
   }
   if(dialogid == Boite2) 
   {
       if(response) // Ton response encore en dessous
       {
       // Encore un autre bout de code
       return 1;
       }
   }
   // Et ainsi de suite ...
   return 1;
}

En faisant comme ça, ça devrait régler ton problème ;)
Titre: Re : Boite de Dialogue qui disparait
Posté par: Kiloutre le 21 Août 2012, 16:05:54
Citation de: Kevin_Carter
En fait tu te dis comme ça :

Si c'est le dialogid 1 et qu'il y a une réponse, ensuite si c'est la reponse 1 faire ceci etc..

L'as tu demande au script de te donner une réponse, mais où ? Je sais pas si c'est ça qui changera le problème mais essai et dis-nous en des nouvelles
Le mieux c'est d'utiliser la fonction switch par exemple :

Non, tu te trompe. D'après le SAMP WIKI le if(response) sert a verifier si le joueur a cliqué sur le bouton pour continuer. Donc moi j'ai décidé de verifier si le joueur continuait avant de verifier les DIALOGID, comme ca je ne verifie pas la reponse dans chaque DIALOGID et ca permet de prendre moins de place, je ne sais pas si ca a un rapport mais bon.

Et diablo, j'ai beau faire ta methode ca ne marche pas  :wall
Titre: Re : Boite de Dialogue qui disparait
Posté par: Diablo62 le 21 Août 2012, 16:29:35
Si ça ne fonctionne pas avec ma méthode, c'est que tu as oublié quelque chose.

Tu as bien définis tes boites de dialogues au moins ?
Titre: Re : Boite de Dialogue qui disparait
Posté par: Kevin_Carter le 21 Août 2012, 16:33:32
Et tu as essayé avec ma façon ?
Titre: Re : Boite de Dialogue qui disparait
Posté par: cristab le 21 Août 2012, 16:41:03
la methode de Diablo62 est bonne ainsi que celle de Kevin_Carter je serais toi KonVict92x je me documenterais un peu sur le wiki SAMP ou alors tenterais de regarder un FS qui utilise ce même systeme afin de voir tes erreurs
Titre: Re : Boite de Dialogue qui disparait
Posté par: Kiloutre le 22 Août 2012, 01:36:37
Pour les FS j'ai longtemps chercher je ne trouve pas, tu n'aurait pas un lien s'il te plait ? Pour definir les ID de dialogue j'utilise

#define DIALOG_CATEG 1
#define DIALOG_MELEE 2
Titre: Re : Boite de Dialogue qui disparait
Posté par: cristab le 22 Août 2012, 08:33:52
http://www.gtaonline.fr/forums/index.php/board,74.0.html (http://www.gtaonline.fr/forums/index.php/board,74.0.html)

un minimum d'effort pour un maximum de fierté
Titre: Re : Boite de Dialogue qui disparait
Posté par: Kiloutre le 22 Août 2012, 15:12:19
J'ai trouvé deux trois FS mais ils font la meme chose que moi, et j'ai chercher dans les GM et la ca me depasse totalement...
Titre: Re : Boite de Dialogue qui disparait
Posté par: Diablo62 le 22 Août 2012, 15:39:37
Tu es vraiment certains que les personnes ont mis response avant dialogid ?? Es tu certains d'avoir essayer avec ma méthode ??

Dernière chose que je vois mais qui n'auras sans doute aucun impact, remplace "ShowPlayerDialog(playerid, 1" par "ShowPlayerDialog(playerid,DIALOG_CATEG" et dans ton OnDialogResponse remplace "dialogid == 1" par "dialogid == DIALOG_CATEG"

Si après ça, ça ne fonctionne toujours pas (ce qui sera le cas à mon avis), je ne vois vraiment pas ce que ça pourrait être. Si vraiment tu as essayé ce que je t'ai donné, la version de Kevin_Carter, il n'y a normalement aucune raison pour que ça ne fonctionne pas.
Titre: Re : Boite de Dialogue qui disparait
Posté par: Kevin_Carter le 22 Août 2012, 18:54:05
Moi personnellement j'ai toujours comme ce que je t'ai montré et ça à toujours fonctionné !
Donc essai nos façon de faire.
Titre: Re : Boite de Dialogue qui disparait
Posté par: Kiloutre le 22 Août 2012, 19:05:28
Je veux bien essayé la methode de Kevin mais je n'y comprend pas grand chose. J'ai déja essayé de mettre le nom du define a la place des chiffres et de ne pas mettre le "if(response)" avant le "if(dialogid...)" et ca ne change toujours rien.

Pourrais-je avoir un exemple d'utilisation pour la methode de Kevin ? Et avoir un bout de code pour comparer les differences ?
Titre: Re : Boite de Dialogue qui disparait
Posté par: cristab le 22 Août 2012, 19:49:39
n'aurais tu pas un FS qui utilise des dialogue et qui plus est avec les même ID ?
Titre: Re : Boite de Dialogue qui disparait
Posté par: Kiloutre le 22 Août 2012, 20:52:23
Pour faire simple : Non  :'( et franchement ca commence beaucoup a me  :bangin ...
Titre: Re : Boite de Dialogue qui disparait
Posté par: cristab le 22 Août 2012, 20:57:45
lit plus de tutos =)
Titre: Re : Boite de Dialogue qui disparait
Posté par: Kiloutre le 23 Août 2012, 02:35:22
Je vient vous annoncer que ca a remarcher... tous seul ! J'etais en train de tester une version avec le strtok, puis il s'est mit a marcher d'un coups !

Je vous remercie a ceux qui ont voulu m'aider et qui m'ont aider  ::)
Vous pourrez voir le FS dans quelques minutes dans la Showroom  :P

Ah et cristab, des tuto en francais sur SAMP c'est difficile a trouver