sâmbătă, 3 ianuarie 2015

Cum faci un sistem de înregistrare pe DINI

In acest tutorial va voi arata cum sa faceti un sistem de inregistrare pe baza DINI.

În primul rând avem nevoide de includerul DINI .

Pasul 1. Vom începe prin adăugarea includerelor în script.

#include <a_samp>#include <dini>

Pasul 2. Definim id-urile dialogurilor.



enum
{
    DIALOG_INREGISTRAT = 5,// 5 este numarul dialogului
    DIALOG_LOGIN //va avea id-ul 6
}

Pasul 3. Definim un enum, unde stocăm variabilele unui jucător.


enum pData
{
  oras[30],
  varsta,
  sex[20],
  logged,
}
new P_Data[MAX_PLAYERS][pData];
new incercari[MAX_PLAYERS];


Pasul 4. Mergem la OnPlayerConnect și facem o verificare dacă fișierul jucătorului există:

new file[20+MAX_PLAYER_NAME];
format(file, sizeof(file), "/Jucatori/%s.ini", pName(playerid));//vom stoca in variabila file, locul unde se afla fisierul jucatorului
incercari[playerid] = 0;
if(!dini_Exists(file))
                                                                                                                            
{                                                                                                                                                           
    //daca jucatorul nu este inregistrat
    ShowPlayerDialog(playerid, DIALOG_INREGISTRAT, DIALOG_STYLE_INPUT, "Inregistrare", "Scrieti parola pentru a te inregistra", "OK", "Cancel");
}
else
{
    //daca jucatorul este inregistrat
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT, "Logare", "Scrieti parola pentru a te loga", "OK", "Cancel");
}


Pasul 5. Mergem la OnPlayerRequestClass si la OnPlayerRequestSpawn si vom scrie acelasi lucru ca la pasul 4

Pasul 6. Mergem la OnDialogResponse și adăugam răspunsurile la dialoguri:

new  file[20+MAX_PLAYER_NAME];
format(file, sizeof(file), "/Jucatori/%s.ini", pName(playerid));

switch(dialogid)
{
  case DIALOG_INREGISTRAT:
  {
  if(!response) return Kick(playerid);//daca va da cancel ii vom da kick
  else
  {
        new pwlength = strlen(inputtext);
        if(pwlength > 3)//daca parola are mai mult de 3 caractere
      {
        dini_Create(file); //vom creea fisierul
        dini_Set(file, "parola", inputtext);//vom seta parola
                dini_Set(file, "oras", "Los Santos"); //vom seta orasul
                dini_IntSet(file, "varsta", 0);  //vom seta varsta
                dini_Set(file, "sex", "Barbat");  //vom seta sex-ul
                P_Data[playerid][logged] = 1;
                SpawnPlayer(playerid);
      }
      else
      {
        ShowPlayerDialog(playerid, DIALOG_INREGISTRAT, DIALOG_STYLE_MSGBOX, "Inregistrare", "Trebuie sa introduci o parola!", "OK", "Cancel");
        }
  }
  }
  case DIALOG_LOGIN:
  {
  if(!response) Kick(playerid);
  else
  {
        incercari[playerid]++;
        if(incercari[playerid] == 3) return Kick(playerid);
    new pwlength = strlen(inputtext);
    if(pwlength > 3)
    {
        new pw[200];
        format(pw, sizeof(pw), "%s", dini_Get(file, "parola");//stocam parola in variabila pw
        if(strcmp(inputtext, pw) == 0)
        {
                    format(P_Data[MAX_PLAYERS][oras], 30, dini_Get(file, "oras");
                    P_Data[playerid][varsta] = dini_Get(file, "varsta");
                    format(P_Data[MAX_PLAYERS][sex], 20, dini_Get(file, "sex");
              P_Data[playerid][logged] = 1;
                    SpawnPlayer(playerid);
        }
        else
        {
              ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_MSGBOX, "Login", "Parola Gresita!", "OK", "Cancel");
        }
    }
    else
    {
        ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_MSGBOX,  "Login", "Trebuie sa introduci o parola", "OK", "Cancel");
    }
  }
  }[

Pasul 7. Mergem la sfârșitul gamemode-ului și scriem:

stock pName(playerid)
{
    new nume[MAX_PLAYER_NAME];
    GetPlayerName(playerid, nume, sizeof(nume));
    return nume;
}


Daca am facut vreo greseala va rog sa imi dati PM.

Niciun comentariu:

Trimiteți un comentariu