In acest tutorial va voi arata cum sa faceti un sistem de inregistrare pe baza DINI. In primul rand avem nevoide de bineinteles includerul DINI. Pasul 1. Vom incepe sa punem includerele. #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 stocam variabilele unui jucator.
enum pData
{
oras[30],
varsta,
sex[20],
logged,
}
new P_Data[MAX_PLAYERS][pData];
new incercari[MAX_PLAYERS];
Pasul 4. Mergem la OnPlayerConnect si scriem:
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 si scriem:
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 sfarsitul gamemode-ului si 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.