• 06 Juin 2026, 21:15:57


Auteur Sujet: Boite de dialogue  (Lu 3537 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Gilux

  • *
  • Mafioso
  • GOOBY PLS
  • Messages: 2209
    • Voir le profil
Boite de dialogue
« le: 02 Juillet 2010, 16:01:50 »
Salut, j'ai un petit problème avec une boite de dialogue DIALOG_STYLE_LIST.

Code: (pawn) [Sélectionner]
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 99 && response)
{
if(listitem == 0) // Derby VORTEX
{
SetPlayerPos(playerid,268.7727,-1967.2281,1.3578);
SendClientMessage(playerid,blanc,"Bienvenue au Derby Vortex ! /veh pour en obtenir un ! ");
  }
if(listitem == 1)//BLOODRING
{
SetPlayerInterior(playerid,15);
SetPlayerPos(playerid,-1398.103515,937.631164,1036.479125);
SendClientMessage(playerid,blanc,"Bienvenue au Bloodbowl ! Le Nof est conseillé ! ");
    }
    if(listitem == 2)//KICKSTART
{
SetPlayerInterior(playerid,14);
SetPlayerPos(playerid,-1465.268676,1557.868286,1052.531250);
SendClientMessage(playerid,blanc,"Bienvenue au stade de Stunt ! ");
    }
    if(listitem == 3)//8-TRACK
{
SetPlayerInterior(playerid,7);
SetPlayerPos(playerid,-1398.065307,-217.028900,1051.115844);
SendClientMessage(playerid,blanc,"Bienvenue au 8-Track ! ");
    }
    if(listitem == 4)//BasketBall
{
SetPlayerInterior(playerid,0);
SetPlayerPos(playerid,2782.7234,-2019.2786,13.5547);
SendClientMessage(playerid,blanc,"Bienvenue au terrain de basket ! ");
    }
    if(listitem == 5)//Coin feu d'artifice
{
//SetPlayerPos(playerid,);
SendClientMessage(playerid,blanc,"Bienvenue au coin spectateurs pour le feu d'artifice ! (Début : 23h50)  ");
    }
    if(listitem == 6)//DM
{
DM[playerid] = 1;
SetPlayerInterior(playerid,10);
SetPlayerPos(playerid,246.375991,109.245994,1003.218750);
SendClientMessage(playerid,blanc,"Bienvenue au DM ! Tue sans pitié tes adversaires ;) ");
GivePlayerWeapon(playerid,31,500);
GivePlayerWeapon(playerid,33,100);
GivePlayerWeapon(playerid,24,125);
GivePlayerWeapon(playerid,9,1);
    }
   
}
return 0;
}

L'id est bien correct (99), mais voila, aucune action ne se fait...  ???

Merci de votre aide !
++

Ps : Je m'étais trompé et j'ai posté dans Problèmes et bugs Sa:Mp, merci de supprimer  ;)

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Boite de dialogue
« Réponse #1 le: 02 Juillet 2010, 16:13:26 »
Rajoute la ligne suivante au tout début de la fonction :

printf ("playerid = %d, dialogid=%d, response=%d, listitem=%d, inputtext=%s", playerid, dialogid, response, listitem, inputtext);
Ensuite vas voir dans le log du serveur (ou directement sur le fenêtre noire) pour vérifier la valeur des paramètres.

++
Syg
Courtesy of GtaManiac

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : Boite de dialogue
« Réponse #2 le: 02 Juillet 2010, 16:16:25 »
Salut gilux :) Bien ?

On peut avoir ton ShowPlayerDialog stp ? Tu as peut être oublier un paramètre

edit: J'avaias pas vu le return, merci gzsume x'D

Hors ligne Gilux

  • *
  • Mafioso
  • GOOBY PLS
  • Messages: 2209
    • Voir le profil
Re : Boite de dialogue
« Réponse #3 le: 02 Juillet 2010, 16:20:10 »
J'ai essayé avec return 1; et ca ne change rien, alors je vais remettre le tout : (et j'ai essayé avec des return 1; a chaque item)

Code: (pawn) [Sélectionner]
ShowPlayerDialog(playerid, 99, DIALOG_STYLE_LIST, "Menu des Réjouissances !", " Derby Vortex \n Bloodring \n KickStart \n 8-Track \n BasketBall \n Coin Spectateurs pour le feu d'artifice (23h50)\n DM !", "Spawn", "Cancel");
Et j'ai essayé de mettre un switch a la place, comme sur un autre de mes scripts :
Code: (pawn) [Sélectionner]
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 99 && response)
{
switch(listitem)
{
case 0: // Derby VORTEX
{
SetPlayerPos(playerid,268.7727,-1967.2281,1.3578);
SendClientMessage(playerid,blanc,"Bienvenue au Derby Vortex ! /veh pour en obtenir un ! ");
return 1;
  }
   case 1://BLOODRING
{
SetPlayerInterior(playerid,15);
SetPlayerPos(playerid,-1398.103515,937.631164,1036.479125);
SendClientMessage(playerid,blanc,"Bienvenue au Bloodbowl ! Le Nof est conseillé ! ");
return 1;
   }
   case 2://KICKSTART
{
SetPlayerInterior(playerid,14);
SetPlayerPos(playerid,-1465.268676,1557.868286,1052.531250);
SendClientMessage(playerid,blanc,"Bienvenue au stade de Stunt ! ");
return 1;
            }
   case 3://8-TRACK
{
SetPlayerInterior(playerid,7);
SetPlayerPos(playerid,-1398.065307,-217.028900,1051.115844);
SendClientMessage(playerid,blanc,"Bienvenue au 8-Track ! ");
return 1;
   }
   case 4://BasketBall
{
SetPlayerInterior(playerid,0);
SetPlayerPos(playerid,2782.7234,-2019.2786,13.5547);
SendClientMessage(playerid,blanc,"Bienvenue au terrain de basket ! ");
return 1;
   }
   case 5://Coin feu d'artifice
{
//SetPlayerPos(playerid,);
SendClientMessage(playerid,blanc,"Bienvenue au coin spectateurs pour le feu d'artifice ! (Début : 23h50)  ");
return 1;
   }
   case 6://DM
{
DM[playerid] = 1;
SetPlayerInterior(playerid,10);
SetPlayerPos(playerid,246.375991,109.245994,1003.218750);
SendClientMessage(playerid,blanc,"Bienvenue au DM ! Tue sans pitié tes adversaires ;) ");
GivePlayerWeapon(playerid,31,500);
GivePlayerWeapon(playerid,33,100);
GivePlayerWeapon(playerid,24,125);
GivePlayerWeapon(playerid,9,1);
return 1;
   }
   }
}
return 1;
}
« Modifié: 02 Juillet 2010, 16:24:26 par Gilux »

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : Boite de dialogue
« Réponse #4 le: 02 Juillet 2010, 16:57:12 »
Perso je vois pas trop, regarde si tu n'a pas un FS qui utilise le même numéro ou quoi Oo

Hors ligne Gilux

  • *
  • Mafioso
  • GOOBY PLS
  • Messages: 2209
    • Voir le profil
Re : Boite de dialogue
« Réponse #5 le: 02 Juillet 2010, 16:59:07 »
Un coup ca me l'a fait, je sélectionnais une ligne pour aller a LV, et il me spawnait une infernus xD
Apparament, il n'y a pas de confilts  ;D

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Boite de dialogue
« Réponse #6 le: 02 Juillet 2010, 17:01:10 »
Le return n'a rien à voir, il est exécuté à la fin de la callback donc même si ce n'est pas le bon return, le joueur devrait être téléporté quand même.
Et si il y a des "conflit" c'est que le script est mal écrit.

Par contre, as-tu lu mon post Gilux :
Rajoute la ligne suivante au tout début de la fonction :

printf ("playerid = %d, dialogid=%d, response=%d, listitem=%d, inputtext=%s", playerid, dialogid, response, listitem, inputtext);
Ensuite vas voir dans le log du serveur (ou directement sur le fenêtre noire) pour vérifier la valeur des paramètres.

Je te conseille vivement de faire ce que je t'ai dit, sans quoi tu ne sauras jamais pourquoi ta callback ne se comporte pas comme tu veux.
Tu peux aussi poster le résultat ici si tu ne sais pas comment l'exploiter.

++
Suh
Courtesy of GtaManiac

Hors ligne Gilux

  • *
  • Mafioso
  • GOOBY PLS
  • Messages: 2209
    • Voir le profil
Re : Boite de dialogue
« Réponse #7 le: 02 Juillet 2010, 17:02:03 »
Je le met sous OnDialogResponse ?

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : Boite de dialogue
« Réponse #8 le: 02 Juillet 2010, 17:02:42 »
Oui

Hors ligne Gilux

  • *
  • Mafioso
  • GOOBY PLS
  • Messages: 2209
    • Voir le profil
Re : Boite de dialogue
« Réponse #9 le: 02 Juillet 2010, 17:05:29 »
J'ai rien dans la console ni dans le log  ;D

Hors ligne Myk3L

  • *
  • Tueur en série
  • Messages: 197
    • Voir le profil
Re : Boite de dialogue
« Réponse #10 le: 02 Juillet 2010, 17:05:55 »
HS : Y'a un tutoriel sur les boites de dialogues comme celle-ci ?!

Hors ligne Gilux

  • *
  • Mafioso
  • GOOBY PLS
  • Messages: 2209
    • Voir le profil
Re : Boite de dialogue
« Réponse #11 le: 02 Juillet 2010, 17:09:29 »

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Re : Boite de dialogue
« Réponse #12 le: 02 Juillet 2010, 17:09:44 »
J'ai rien dans la console ni dans le log  ;D
Ben alors c'est que ta callback n'est jamais appelée ou que tu n'a pas mis le printf au bon endroit.

++
Syg

Courtesy of GtaManiac

Hors ligne Gilux

  • *
  • Mafioso
  • GOOBY PLS
  • Messages: 2209
    • Voir le profil
Re : Boite de dialogue
« Réponse #13 le: 02 Juillet 2010, 17:11:35 »
Je pense que la 2e solution est la bonne  :P
Code: (pawn) [Sélectionner]
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])

{
printf ("playerid = %d, dialogid=%d, response=%d, listitem=%d, inputtext=%s", playerid, dialogid, response, listitem, inputtext);
if(dialogid == 99 && response)
{
switch(listitem)
{
case 0: // Derby VORTEX
{
SetPlayerPos(playerid,268.7727,-1967.2281,1.3578);
SendClientMessage(playerid,blanc,"Bienvenue au Derby Vortex ! /veh pour en obtenir un ! ");
  }

Edit : une petite image :


++
« Modifié: 02 Juillet 2010, 17:18:34 par Gilux »

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : Boite de dialogue
« Réponse #14 le: 02 Juillet 2010, 17:49:33 »
Ah on penser que la boite ne s'afficher pas. C'est quand tu clique sur un item ?
« Modifié: 02 Juillet 2010, 17:52:10 par chneubeul »