Jujuv icon

[SA:MP | FS] jRegister

Jujuv | PRO | 04/18/12 02:32:57 PM UTC | 0 ⭐ | 474 👁️ | Never ⏰ | []
Pawn |

5.32 KB

|

None

|

0 👍

/

0 👎

//-----------------------------Inclusion des librairies-------------------------//
#include <a_samp>
#include <dudb>
 
//-------------------Directive de preprocesseur particuliéres------------------//
#pragma unused ret_memcpy
 
 
//-----------------------------Definitions de consstantes-----------------------//
 
#define DIALOG_REGISTER 1
#define DIALOG_LOGIN 2
#define DIALOG_REGISTER_SECUR 3
#define MIN_PASS_LEN 6//Taille minimum d'un mot de passe
 
//-----------------------------Definitions de macros---------------------------//
#define LOGIN_MSG "Veuillez entrer votre mot de passe afin de vous connecter"
#define REGISTER_MSG "Veuillez entrer un mot de passe afin de vous enregistrer"
#define REGISTER_SECUR_MSG "Veuillez retaper votre mot de passe à l'identique (sécurité)"
#define REGISTER_SECUR_FAILED_MSG "Le mot de passe entrer ne coresspond pas à celui entrer précédaient\n Veuiller taper deux fois le même mot de passe"
#define IS_CONNECTED "logued"
 
//-----------------------------Prototype de fonctions publiques-----------------//
forward IsPlayerLoguedIn(playerid);
 
//------------------------------------Let's go---------------------------------//
 
 
main()
{
    print("\n--------------------------------------");
    print(" (^o^) Simple registering system by Jujuv (^o^)");
    print("--------------------------------------\n");
    return 1;
}
 
public OnPlayerConnect(playerid)
{
    SetPVarInt(playerid, IS_CONNECTED, 0);//Cette PVar est un booleen indiquant si le joueur esr logué ou non
    new pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pName, sizeof(pName));
    if(udb_Exists(pName))//S'il existe dèja un compte ascosié à ce pseudonyme
    {
        ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", LOGIN_MSG, "Ok", "");//On demande au joueur de se loguer en entrant son mot de passe
    }
    else//Sinon (le joueur n'a donc pas de compte)
    {
        ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Enregistrement", REGISTER_MSG, "Ok", "");//On demande au joueur de saisir un mot de passe pour s'inscrire
    }
 
    return 1;
}
 
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    new pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pName, sizeof(pName));
    
    switch(dialogid)
    {
        case DIALOG_LOGIN:
        {
            if(response)//Si le joueur a cliqué sur le bouton de gauche ("ok")
            {
                if(udb_CheckLogin(pName, inputtext))//Si le mot de passe est correct
                {
                    new pIp[MAX_STRING];
                    GetPlayerIp(playerid, pIp, sizeof(pIp));//On récupére l'adresse IP du joueur
                    
                    SetPVarInt(playerid, IS_CONNECTED, 1);//Le joueur est connécté
                    if(strcmp(udb_User(pName, "Last_IP"),pIp))//Si son adresse IP est différente de la dérniére
                    {
                        udb_UserSet(pName, "Last_IP", pIp);//On conserve on adresse IP
                    }
                }
                else//Sinon (le mot de passe est incorrect)
                {
                    ShowPlayerDialog(playerid, DIALOG_STYLE_PASSWORD,  DIALOG_LOGIN, "Mot de passe incorrect", LOGIN_MSG, "Ok", "Annuler");//On demande au joueur de rentrer son mot de passe à nouveau
                }
            }
            else{ Kick(playerid); }//Sinon (il a cliqué sur le bouton de droite: "Annuler")
        }
        case DIALOG_REGISTER:
        {
            SetPVarString(playerid, "passCheck", inputtext);//On stocke le mot de passe dans une PVar temporaire
            if(strlen(inputtext) >= MIN_PASS_LEN)//Si le mot de passe est assez long
            {
                ShowPlayerDialog(playerid, DIALOG_STYLE_PASSWORD, DIALOG_REGISTER_SECUR, "Securité", REGISTER_SECUR_MSG, "Ok", "");//On demande au joueur de retaper le même mot de passe
            }
            else//Sinon on demande au joueur d'en choisir un autre
            {
                ShowPlayerDialog(playerid, DIALOG_STYLE_PASSWORD, DIALOG_REGISTER, "Mot de passe trop court", REGISTER_MSG, "Ok", "");
            }
        }
        case DIALOG_REGISTER_SECUR:
        {
            new pwd[MAX_STRING];
            GetPVarString(playerid, "passCheck", pwd, sizeof(pwd));//On récupére le mot de passe stocké précédament
            
            if(!strcmp(inputtext, pwd) && strlen(pwd) && strlen(inputtext))//Si le mot de passe rentré la 1er fois est bien le même que celui rentré la seconde
            {
                new pIp[MAX_STRING];
                GetPlayerIp(playerid, pIp, sizeof(pIp));//On récupére l'adresse IP du joueur
                udb_Create(pName, inputtext);//On créer son compte
                udb_UserSet(pName, "Registered_IP", pIp);//On stocke son adresse IP d'enregistrement
                udb_UserSet(pName, "Last_IP", pIp);//Comme il viens de s'enregistrer, c'est à la fois son IP d'enregistrement et sa dérniére IP connue
                DeletePVar(playerid, "passCheck");//On supprime la PVar qui stockais temporairement la 1er saisie de son mot de passe
            }
            else//Sinon (le mot de passe ne corespond pas au 1er entré)
            {
                ShowPlayerDialog(playerid, DIALOG_STYLE_PASSWORD, DIALOG_REGISTER, "Mot de passe incorrect", REGISTER_SECUR_FAILED_MSG, "Ok", "");//Retour à la case départ!
            }
        }
    }
    return 1;
}
 
public IsPlayerLoguedIn(playerid)//Cette fonction permet de verifier facilement si un joueurs est logué ou non
{
    /*
    NB: Il est recommandé d'utiliser directement la PVar pour savoir si
    le joueur est logué ou non à partir d'un autre fichier.
    */
    
    if(GetPVarInt(playerid, IS_CONNECTED))
    {
        return true;
    }
    else{ return false;}
}

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎