• 04 Juin 2026, 14:04:36


Auteur Sujet: [Résolu] Question sur les "Dialog"  (Lu 1635 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Franky™

  • Franky™ est bien la
  • *
  • Gangster
  • Messages: 1058
    • Voir le profil
[Résolu] Question sur les "Dialog"
« le: 14 Janvier 2010, 04:23:16 »
Oyé Oyé chère amis de GtaOnline ^^

Je viens à vous tous pour vous soumettre un petit problème donc ça fait une heure et demis que j'essais de résoudre mais que je n'y arrive pas mdr...

Alors donc.
J'ai fait un OnPlayerClickPlayer et je veux que quand ça clique dessus je peux /payer le joueur que j'ai séléctionner.

J'ai arriver jusqu'a faire ShowPlayerDialog et a renvoyé le tout sur la commande /payer.

Mais le problème c'est que quand j'essais de détécter le joueur que j'ai sélectionner, il me met, ID/Nom invalide. Donc j'ai du faire faut quelque part mais je vois pas ou ^^

Voici se que j'ai comme code.

Code: (pawn) [Sélectionner]
if(dialogid == TESTPAYER)
{
if(response)
{
   new pay[256];
   new giveplayerid;
   new tmp[256];
   giveplayerid = ReturnUser(tmp);
   format(pay, 256, "/payer %d %s",giveplayerid, inputtext);
return OnPlayerCommandText(playerid, pay);
}
else
{
SendClientMessage(playerid, COLOR_LIGHTRED, "Tu as annuler!!!");
}
return 1;
}

Si j'enleve le giveplayerid il me renvoye un SendClientMessage: [Info] /payer ID/NOM MONTANT Donc comme si je faisais /payer ESPACE.
Mais quand je met le giveplayerid il me renvoye se con de Invalide qui me les petes mdr.

Avez-vous une solution for me, for me, for me, formidaaable ^^

Je vous remercie les gens..
Oyé Oyé Oyé.

++ Franky
« Modifié: 14 Janvier 2010, 21:39:31 par Franky™ »


°°((Franky's WebSite
Désolé pour mes fautes d'orthographes

Hors ligne Mr_C30

  • *
  • Gangster
  • souvent conquise jamais soumise
  • Messages: 1937
    • Voir le profil
Re : Porblème reconnaissance ID /payer.....
« Réponse #1 le: 14 Janvier 2010, 06:35:02 »
Regarde le fs de sasuke j'ai teter il marche nikel



Radis du soir bonsoir !


Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Porblème reconnaissance ID /payer.....
« Réponse #2 le: 14 Janvier 2010, 08:43:52 »
c' est normal tu doit stocke l id du joueur  sur lequel on a clické sinon ca fonctionne pas



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne MrFredo

  • *
  • Grand Banditisme
  • Scripteur PHP/PAWN
  • Messages: 953
    • Voir le profil
    • GTA-Hosting
Re : Porblème reconnaissance ID /payer.....
« Réponse #3 le: 14 Janvier 2010, 10:06:43 »
Tu creeait une variable tmp vide et ensuite essayait de recup l'i du joueur via cette variable vide c'est normal que sa marche pas , il faut recuperer le nom depuis le inputtext qui contient normalement le pseudo du joueur sur lequel il a cliquer (si tu a bien fait la liste du dialog comme je le pense)

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == TESTPAYER)
{
if(response)
{
    new pay[256];
    new giveplayerid = ReturnUser(inputtext);
    format(pay, 256, "/payer %d %s",giveplayerid, inputtext);
return OnPlayerCommandText(playerid, pay);
}
else
{
SendClientMessage(playerid, COLOR_LIGHTRED, "Tu as annuler!!!");
}
return 1;
}
return 1;
}

Hors ligne Franky™

  • Franky™ est bien la
  • *
  • Gangster
  • Messages: 1058
    • Voir le profil
Re : Porblème reconnaissance ID /payer.....
« Réponse #4 le: 14 Janvier 2010, 13:17:07 »
Merci les gars, grace avec l'aide du FS de sasuke (TABAdmin) et l'aide de MrFredo, j'ai reussi a le faire fonctionné.
Je vous remercie encore.

++ Franky

----------------------------------------------

Salut une autre question.

Je suis entrain de faire un système d'entré avec les dialog.
Donc j'ai tout fait comme il le fallait, quand je passe sur le "i" ça m'ouvre un dialog qui me dit "Entrer" ou "Annuler"
Quand je presse "Entrer" Tout se passe comme prévu, ça me renvoye a ma commande /entrer et je rentre dans le batiments.
Mais si je fait "Annuler" ça me quitte ma boite de dialog et ça me la reouvre vu que je suis toujours sur le "i".
J'avais pensé mettre un "timer" ??!! pour que si je fait "annuler" ça ne m'affiche pas direct la boite.
Mais je n'ai aucune idée de comment débuté sur ce problème.

Si vous pouviez, m'éclairer un petit peu sur le sujet.

Voici ma boite.

Code: (pawn) [Sélectionner]
ShowPlayerDialog(i,ENTRER,DIALOG_STYLE_MSGBOX,"Entrer","Veux-tu entrée ici ?\n\n","Entrer","Annuler");
Code: (pawn) [Sélectionner]
  if(dialogid == ENTRER)
{
if(response)
{
    new pay[256];
    format(pay, 256, "/entrer", inputtext);
return OnPlayerCommandText(playerid, pay);
}
else
{
SendClientMessage(playerid, COLOR_LIGHTRED, "Tu as annuler!!!");
}
return 1;
}

Donc en gros, j'aimerai que ça passe quelque temps avant que ça raffiche la boite d'entrer. Mais je sais pas par où commencé.
Je vous remercie de l'aide ^^

++ Franky
« Modifié: 14 Janvier 2010, 14:29:28 par Franky™ »


°°((Franky's WebSite
Désolé pour mes fautes d'orthographes

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Question sur les "Dialog"
« Réponse #5 le: 14 Janvier 2010, 17:50:37 »
Tu crée une variable global genre

new Entrer_pickup[500];
quand il rentre dans le pickup


Entrer_pickup[playerid] = 1;
SetTimerEx("Entrer_pickup_func", ici le temps, 0,"d",playerid);

apres tu place cette fonction

public Entrer_pickup_func(playerid)
{
        Entrer_pickup[playerid] = 0;
}


et tu te debrouille avec le Entrer_pickup[playerid] s' il est à 0 de ne pas montré le dialog ^^



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne Franky™

  • Franky™ est bien la
  • *
  • Gangster
  • Messages: 1058
    • Voir le profil
Re : Re : Question sur les "Dialog"
« Réponse #6 le: 14 Janvier 2010, 20:39:15 »

apres tu place cette fonction

public Entrer_pickup_func(playerid)
{
        Entrer_pickup[playerid] = 0;
}


Tu pourrai m'expliqué a quoi peut servir cette fonction stp ? ^^

Merci.


Sinon j'ai essayé un truc mais ça fonctionne pas.

Code: (pawn) [Sélectionner]
if(dialogid == ENTRER)
{
if(response)
{
            for(new i = 0; i < MAX_PLAYERS; i++)
{
if(Entrer_pickup[i] = 0)
{
new pay[256];
    format(pay, 256, "/entrer", inputtext);
return OnPlayerCommandText(playerid, pay);
}
}
}
else
{
SendClientMessage(playerid, COLOR_LIGHTRED, "Tu as annuler!!!");
  }
return 1;
}
Voila mon dialog... Je pense que c'est faut lol.

et j'ai mis ça quand il est sur le pickup
Code: (pawn) [Sélectionner]
ShowPlayerDialog(i,ENTRER,DIALOG_STYLE_MSGBOX,"Entrer","Veux-tu entrée ici ?\n\n","Entrer","Annuler");
Entrer_pickup[i] = 1;
SetTimerEx("Entrer_pickup_func", 20000, 0,"d",i);

Ensuite pour ta fonction, j'ai pas compris à quoi elle sert... :s lol
Mais je l'ai mise comme ça.
Code: (pawn) [Sélectionner]
forward Entrer_pickup_func(playerid);
public Entrer_pickup_func(playerid)
{
    for(new i = 0; i < MAX_PLAYERS; i++)
{
Entrer_pickup[i] = 0;
}
return 1;
}

Et ça me renvoye un warning:
Code: (warning) [Sélectionner]
GM.pwn(20548) : warning 211: possibly unintended assignmentet donc c'est ça: if(Entrer_pickup = 0)

La je seche. Tu pourrai m'expliqué un peux et pas me donner directement les corrections, sinon jvais pas pigé mdr

Machi
++ Franky


°°((Franky's WebSite
Désolé pour mes fautes d'orthographes

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Question sur les "Dialog"
« Réponse #7 le: 14 Janvier 2010, 21:18:38 »
non tu laisse la fonction comme je l' ai donné ^^


Sinon elle sert juste a remettre la variable a 0 ^^ comme ca on peu pas voir le dialog pendant 20 secondes comme tu a mis dans le timer ^^



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne Franky™

  • Franky™ est bien la
  • *
  • Gangster
  • Messages: 1058
    • Voir le profil
Re : Question sur les "Dialog"
« Réponse #8 le: 14 Janvier 2010, 21:23:40 »
Ok, mais ça marche pas mdr ^^

J'ai tout essayé, j'ai refait encore une fois pour voir et j'ai même monté le temps a 1 minutes mais la boite s'affiche directement quand je clique sur annuler... :s
Je comprend pas là mdr.

++ Franky

Double post
Résolu.

Merci à Sasuke.
J'avais oublier de rajouté ou il y avait mon pickup

Code: (pawn) [Sélectionner]
if(Entrer_pickup[i] == 0)
{
     ShowPlayerDialog(i,ENTRER,DIALOG_STYLE_MSGBOX,"Entrer","Veux-tu entrée ici ?\n\n","Entrer","Annuler");
     Entrer_pickup[i] = 1;
     SetTimerEx("Entrer_pickup_func", 5000, 0,"d",i);
}

Merci encore.


++ Franky
« Modifié: 14 Janvier 2010, 21:39:10 par Franky™ »


°°((Franky's WebSite
Désolé pour mes fautes d'orthographes