OnDialogResponse FR
From SA-MP Wiki
Page d'Accueil | Les Fonctions | Les Callbacks | Les bases du Scripting | Plugins de Serveur | Tutoriaux
Ne prenez pas en compte les FR dans les noms
OnDialogResponse
Description:
Cette callback est appelée quand un joueur répond à un dialog affiché en utilisant ShowPlayerDialog en cliquant un bouton/item ou en appuyant sur entrée/échap.
(playerid, dialogid, response, listitem, inputtext[])
playerid | L'ID du joueur qui a répondu au dialog. |
dialogid | L'ID du dialog auquel le joueur a répondu, assigné dans ShowPlayerDialog. |
response | 1 pour le bouton gauche/le double clic/entrée et 0 pour le bouton droit/échap (si il n'y a qu'un seul bouton, toujours 1). |
listitem | L'ID de l'item d'un dialog LIST sélectionné par le joueur (commence à 0, valable seulement si vous utilisez un dialog style LIST). |
inputtext[] | Le texte entré dans la boite d'entrée par le joueur (DIALOG_STYLE_INPUT/DIALOG_STYLE_PASSWORD) ou le texte de l'item sélectionné par le joueur (DIALOG_STYLE_LIST). |
Retourne:
Retourner 0 dans cette callback passera le dialog à un autre script chargé puisqu'aucun code correspondant n'a été trouvé dans la callback du Gamemode.
Tip | C'est approprié d'utiliser switch à travers les différents IDs de dialog/listitem si vous en avez beaucoup. |
DIALOG_STYLE_MSGBOX
// Définir l'ID du dialog, pour gérer les réponses #define DIALOG_REGLES (1) // Dans une commande ShowPlayerDialog(playerid, DIALOG_REGLES, DIALOG_STYLE_MSGBOX, "Règles du serveur", "- Pas de cheat\n- Pas de spam\n- Respecter les autres\n\nAcceptez-vous ces règles ?", "Oui", "Non"); // Hors de la commande public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { if(dialogid == DIALOG_REGLES) { if(response) // Si le joueur a cliqué sur "Oui" ou a appuyé sur Entrée. { return SendClientMessage(playerid, 0x9ACD32FF, "Merci d'avoir accepté les règles du serveur."); } else // Appuyé sur Échap ou cliqué sur "Non" { return KickWithMessage(playerid, 0xFF0000FF, "Vous DEVEZ accepter les règles du serveur pour pouvoir jouer."); // Pour des infos et le code source de cette fonction (indispensable après la version 0.3x), référez vous à la fin de cette page } // On a utilisé des dialogs, donc on doit retourner quelque chose si il y a un troisième cas (comme il ne peut y avoir que deux réponses, c'est ici inutile) } return 0; // Vous DEVEZ retourner 0 ici, au même titre que sous OnPlayerCommandText }
DIALOG_STYLE_INPUT/DIALOG_STYLE_PASSWORD
#define DIALOG_LOGIN (2) // Dans une commande ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Connexion", "Merci d'enter votre mot de passe:", "Connexion", "Retour"); // Hors de la commande public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { if(dialogid == DIALOG_LOGIN) { if(!response) // Si le joueur clique sur "Retour" ou si il appuie sur Échap { KickWithMessage(playerid, 0xFF0000FF, "Vous DEVEZ vous connecter pour jouer. Merci de changer de nom."); } else // Appuyé sur "Entrée" ou cliqué sur "Connexion" { if(CheckPassword(playerid, inputtext)) // Votre fonction pour vérifier les mots de passe { SendClientMessage(playerid, 0xFF0000FF, "Vous êtes maintenant connecté !"); } else { SendClientMessage(playerid, 0xFF0000FF, "Connexion ratée !"); // On lui re-montre le dialog de login ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Connexion", "Merci d'entrer votre mot de passe:", "Connexion", "Retour"); } } return 1; // Ici, comme on a rien retourné dans les conditions, on DOIT retourner 1 avant de sortir de la condition du dialog } return 0; // Vous DEVEZ retourner 0 ici, comme dans OnPlayerCommandText. }
DIALOG_STYLE_LIST
#define DIALOG_ARMES (3) // Dans une commande ShowPlayerDialog(playerid, DIALOG_ARMES, DIALOG_STYLE_LIST, "Armes", "Desert Eagle\nAK-47\nSpas 12", "Prendre", "Fermer"); // Hors de la commande public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { if(dialogid == DIALOG_WEAPONS) { if(response) // Si il clique sur "Prendre" ou si il appuie sur "Entrée" { // On lui donne l'arme switch(listitem) { case 0: GivePlayerWeapon(playerid, WEAPON_DEAGLE, 14); // On lui donne son desert eagle (WEAPON_DEAGLE est défini à 24) case 1: GivePlayerWeapon(playerid, WEAPON_AK47, 120); // On lui donne son AK-47 (WEAPON_AK47 est défini à 31) case 2: GivePlayerWeapon(playerid, WEAPON_SHOTGSPA, 28); // On lui donne son Spas 12 (WEAPON_SHOTGSPA est défini à 27) } } return 1; // On retourne 1 en sortant de la condition du dialog } return 0; // On DOIT retourner 0 en sortant de la callback. }
Fonction KickWithMessage(const &playerid, const couleur, const message[]); :
forward KickPublic(playerid); public KickPublic(playerid) { Kick(playerid); } stock KickWithMessage(&playerid, const couleur, const message[]) { SendClientMessage(playerid, couleur, message); SetTimerEx("KickPublic", 1000, false, "d", playerid); // On le kick 1 seconde après pour qu'il puisse voir le message }
Pour plus d'infos à propos de cette technique, s'il vous plait visiter Kick().
Fonctions relatives
Les fonctions suivantes peuvent êtres utiles car elles concernent indirectement ou non cette callback. Template:ShowPlayerDialogFR