• 04 Juin 2026, 08:22:20


Auteur Sujet: [Résolut]Probleme dialog  (Lu 1355 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Dark_revan

  • Serveur RPG : *¤REAL DREAM¤*
  • *
  • Bandit
  • Script Serveur RolePlay.
  • Messages: 338
    • Voir le profil
[Résolut]Probleme dialog
« le: 31 Janvier 2010, 13:25:30 »
Bonjours alors voila j'ai un petit problème avec les dialog avec liste. Je m'explique: Les armes disponibles sont M4, 9mm, SPAS, MP5.
J'ai sur moi:
- M4 100 munitions
-SPAS 30 munitions

Je ne souhaite pas avoir une liste du type:

-M4 100 munitions
-9mm aucun
-SPAS  30 munitions
-MP5 aucun

Mais:
 
-M4 100 munitions
-SPAS  30 munitions


En faite j'arrive a faire apparaitre la liste comme voulu mais  je n'arrive pas a identifier la ligne de la liste (listeitem) dans le ondialogresponse donc quand le joueur valide M4, il n'a rien :bangin.
Si vous saviez comment faire :) sa sera sympa de me le dire parce-que la je galère.
« Modifié: 02 Février 2010, 09:19:03 par Dark_revan »

Hors ligne BuBuNo

  • Radio Guingamp - Bien plus qu'une radio !
  • *
  • Grand Banditisme
  • La radio bien plus qu'une passion !
  • Messages: 840
    • Voir le profil
    • Radio Guingamp - Bien plus qu'une radio !
Re : Probleme dialog
« Réponse #1 le: 31 Janvier 2010, 14:01:36 »
Salut,
Montre nous ce que tu as fait
ıllıllı вυвυησ ıllıllı


Hors ligne Dark_revan

  • Serveur RPG : *¤REAL DREAM¤*
  • *
  • Bandit
  • Script Serveur RolePlay.
  • Messages: 338
    • Voir le profil
Re : Probleme dialog
« Réponse #2 le: 31 Janvier 2010, 14:23:20 »
Alors voila ce que j'ai fait :

if(strcmp(cmd, "/armes", true) == 0)
{
        new string0[256],string1[256],string2[256],string3[256],string4[800];
        if(M4[playerid] > 0){ format(string0,256,"M4 : %d\n",M4[playerid]); }
        if(9mm[playerid] > 0){ format(string0,256,"9mm : %d\n",9mm[playerid]); }
        if(Spas[playerid] > 0){ format(string0,256,"Spas : %d\n",Spas[playerid]); }
        if(MP5[playerid] > 0){ format(string0,256,"MP5\n",MP5[playerid]); }
        format(string4,256,"%s%s%s%s",string0,string1,string2,string3);
        ShowPlayerDialog(playerid,24,DIALOG_STYLE_LIST,"Vos armes",string4,"Utiliser","Annuler");
        return 1;
}

Dans ondialogresponse je ne peut pas identifier la ligne de la liste. Donc le joueur ne peut pas prendre l'arme qui correspond a la ligne.

Hors ligne Diablo62

  • *
  • Bandit
  • Script seulement pour m'amuser :)
  • Messages: 305
    • Voir le profil
Re : Probleme dialog
« Réponse #3 le: 01 Février 2010, 00:35:40 »
Salut.

Je ne sais pas si ça pourra résoudre ou non ton problème, mais il y a des choses qui me chagrine dans ton bout de code.

Tout d'abord, tu met new string0, string1,... mais tu n'utilises que string 0 à coté de chaque armes et dans ton format tu demande string1, string2 et string3 en plus. Tu peux comprendre que comme tu ne les utilisent pas, le script ne peux pas le reconnaître et te les donner. De plus, étant donné que toutes tes armes sont définis par le même numéro, cela peux engendrer des conflits.
Ensuite dans la ligne du Mp5 tu met ça :
format(string0,256,"MP5\n",MP5[playerid])
Si tu regardes bien, tu as oublié de mettre %d

Maintenant, je ne me suis pas penché sur le bout de code pour savoir si ça fonctionnerait ou non en y changeant ça (je n'ai pas regardé s'il était exact). J'ai juste regardé pour savoir s'il y avait des erreurs à des lignes (comme celles que j'ai trouvé :P )
Merci à Colonel Marco pour la Signature

Hors ligne Dark_revan

  • Serveur RPG : *¤REAL DREAM¤*
  • *
  • Bandit
  • Script Serveur RolePlay.
  • Messages: 338
    • Voir le profil
Re : Probleme dialog
« Réponse #4 le: 01 Février 2010, 14:55:35 »
enfaite jai les fait sur le forum mais le mien est égale a celui ci sauf qu'il n'y as pas d'erreurs ^^ le probleme et d'identifier la ligne dans le ondialogresponse :(

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Probleme dialog
« Réponse #5 le: 01 Février 2010, 15:03:27 »
Salut,

tu devrais plutôt faire un truc comme ceci, ça t'éviterais beaucoup d'utilisation de mémoire abusive (tu en as pour plus de 6 ko...)

        new tmp[128];//c'est amplement suffisant
        if(M4[playerid] > 0)
        {
                format(tmp, sizeof(tmp), "M4 : %d\n", M4[playerid]);
        }
        if(9mm[playerid] > 0)
        {
                format(tmp, sizeof(tmp), "%s9mm : %d\n" ,tmp, 9mm[playerid]);
        }
        if(Spas[playerid] > 0)
        {
                format(tmp, sizeof(tmp), "%sSpas : %d\n", tmp, Spas[playerid]);
        }
        if(MP5[playerid] > 0)
        {
                format(tmp, sizeof(tmp), "%sMP5 %d\n", tmp, MP5[playerid]);
        }
        ShowPlayerDialog(playerid, 24, DIALOG_STYLE_LIST, "Vos armes", tmp, "Utiliser", "Annuler");

voila, mon code utilise 14 fois moins de mémoire et le résultat devrait être bon

++Sim++





Hors ligne Dark_revan

  • Serveur RPG : *¤REAL DREAM¤*
  • *
  • Bandit
  • Script Serveur RolePlay.
  • Messages: 338
    • Voir le profil
Re : Probleme dialog
« Réponse #6 le: 01 Février 2010, 15:18:28 »
oui mais bon tu est sur que ton système marche, dans mon script c'est un peu plus compliquer c'est pour cela que j'ai fait sa. Mais bon pour identifier ma liste item j'ai penser a une boucle mais je sait pas comment faire. J'avais déja fait un systeme par élimination mais sa ne marche pas quand les ligne ne sont pas en ordre.
Exemple :
M4: %d
MP5: %d
Est ce qu'on peut utiliser listitem avec par exemple liteitem = idx ?

J'ai penser aussi a une identification de la ligne avec variable. Mais pour encadre toute les possibilité cela prendrai énormément de place.
Exemple :
Si Mp5 = lititem 2 alors ligneMP5[playerid] = 2

Je suis vraiment bloquer  :bangin

Double post
Et Sim ton système ne marche pas il me met juste la dernière enregistrer donc sa va pas et au niveau de l'identification j'ai réussit grâce a des variables merci a tous  :D

voici comment jai fait pour identifier la ligne et ainsi connaitre la listitem c'était tout con mais je n'y avait pas penser tout de suite ^^

Code: (pawn) [Sélectionner]
        new ligne = 0;
        if(m4[playerid][pValise] > 0){ ligne ++; lignem4[playerid] = ligne;}
        if(9mm[playerid][pDrogue] > 0){ ligne ++;  ligne9mm[playerid] = ligne;}
        if(spas[playerid] > 0){ ligne ++;  lignespas[playerid] = ligne;}
        if(MP5[playerid] > 0){ ligne ++; lignemp5[playerid] = ligne;}
« Modifié: 02 Février 2010, 09:18:08 par Dark_revan »