OnDialogResponse FR

From SA-MP Wiki

Jump to: navigation, search

OnDialogResponse

OnDialogResponse FR was added in SA-MP 0.3a This callback was added in SA-MP 0.3a and will not work in earlier versions!


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.


Paramètres:
(playerid, dialogid, response, listitem, inputtext[])
playeridL'ID du joueur qui a répondu au dialog.
dialogidL'ID du dialog auquel le joueur a répondu, assigné dans ShowPlayerDialog.
response1 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).
listitemL'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

Image:Light_bulb_icon.png

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

Personal tools