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