ShowPLayerDialog(playerid, 1, DIALOG_STYLE_LIST, "COFFRE", "Slot 1\r\nSlot 2...", "Valider","Annuler");
switch(dialogid)
{
case 1:
{
if(!response)
{
ShowPLayerDialog(playerid, 1, DIALOG_STYLE_LIST, "COFFRE", "Slot 1\r\nSlot 2...", "Valider","Annuler"); //ou return 0;
}
else
{
if(listitem == 1)
{
//Faire quelque chose ...
}
}
}
}
format(string_slot, sizeof(string_slot), "%s (%d munitions)", arme_fournie, munition);
ShowPlayerDialog(playerid, DIALOG_RECUPERER, DIALOG_STYLE_LIST, "Choix des armes à récupérer", string_slot, "Prendre", "Quitter");
Merci de ta réponse :)
J'ai du mal m'exprimer parce que j'utilise déjà le DIALOG_STYLE_LIST dans ma fonction ShowPlayerDialog.
Enfaite concrètement je voudrais que les paramètres qui correspondent à l'intitulé de chaque ligne soit des strings dont le texte est variable au lieu d'un texte constant.
J'arrive à mettre une string variable en paramètre mais pas deux, ce qui me limite à un seul slot.
Voici mon code actuel:Code: [Sélectionner]format(string_slot, sizeof(string_slot), "%s (%d munitions)", arme_fournie, munition);
ShowPlayerDialog(playerid, DIALOG_RECUPERER, DIALOG_STYLE_LIST, "Choix des armes à récupérer", string_slot, "Prendre", "Quitter");
enum Arme
{
slot1,
slot2,
slot3, //etc...
}
Pour être plus clair, je vais essayer de te donner un exemple :C'est exactement ce que fait mon script :)
La personne x veut mettre une arme dans un coffre. Vu que ce coffre est vide, l'arme se met dans l'emplacement 1 (Par exemple SlotCoffre1 = 1).
La personne x veut mettre une 2è arme dans le coffre. Vu que l'emplacement 1 est pris, cela se met dans l'emplacement 2 (SlotCoffre2 = 1).
La personne x retire l'arme de l'emplacement 1 (SlotCoffre1 = 0)
La personne x met une arme dans le coffre. Même si une arme est déjà présente dans l'emplacement 2, vu que l'emplacement 1 est libre l'arme se met directement dessus.
Maintenant, le coffre de la voiture est plein. Si la personne x veut mettre une arme, cela lui dira que le coffre est plein et qu'il ne peut plus stocker.
En associant les SlotCoffre directement aux véhicules et non à 1 personne, n'importe qui peut prendre une arme dans un veh, même si ce n'est pas lui qui le dépose. De plus, cela évitera qu'une personne mette une arme dans un coffre d'une voiture et puisse le retirer dans une autre.
Bien entendu, il faut réussir à stocker les infos des armes quand elles sont déposées et qu'elles puissent être appelé plus tard en utilisant la commande.
ShowPlayerDialog(playerid, dialogid, style, caption[], info[], button1[], button2[])
playerid The ID of the player to show the dialog to.
dialogid An ID to assign this dialog to, so responses can be processed. Max dialogid is 32767. Using negative values will close any open dialog.
style The style of the dialog.
caption[] The title at the top of the dialog. The length of the caption can not exceed more than 64 characters before it starts to cut off.
info[] The text to display in the dialog. Use \n to start a new line and \t to tabulate.
button1[] The text on the left button.
button2[] The text on the right button. Leave it blank to hide it.
Returns This function doesn't return a specific value
ShowPlayerDialog(playerid, DIALOG_WEAPONS, DIALOG_STYLE_LIST, "Weapons", "AK47\nM4\nSniper Rifle", "Option 1", "Option 2");
Chaque Veh n'aura que 6 SlotCoffre et chaque SlotCoffre n'aura alors que 2 valeurs. Si la valeur = 0 alors "Vide", sinon la valeur = 1 et affiche l'arme qui lui est associé.Notamment dans le cas où par exemple SlotCoffre 1 = 1, comment est-ce dans ma boite de dialogue le nom de la ligne pourrait prendre le nom de l'arme et de la munition ?
Par exemple la Fonction déposer.
new IdArme = GetPlayerWeapon(playerid);
if(VInfo[vehicleid][vArme1]==0)
{
SlotCoffre1 = 1;
VInfo[vehicleid][vArme1] = IdArme;
RemovePlayerWeapon(playerid, IdArme);
}
Dans la fonction retirer tu fais l'inverse
new IdArme;
if(SlotCoffre1==1)
{
SlotCoffre1 = 0;
IdArme = VInfo[vehicleid][vArme1];
VInfo[vehicleid][vArme1] = 0;
GivePlayerWeapon(playerid, IdArme);
}
Et pour l'afficher dans un ShowPlayerDialog
new IdArme1 = VInfo[vehicleid][vArme1];
new IdArme2 = VInfo[vehicleid][vArme2];
ShowPlayerDialog(playerid, DIALOG_WEAPONS, DIALOG_STYLE_LIST, "Weapons", "IdArme1\IdArme2", "Prendre", "Annuler");