Jump to content
  • SA:MP
    SA:MP
    Only Launcher

    Owner

    GreenStone Community

[TUTORIAL] Cum sa salvezi conturile pe [.ini] #2


Recommended Posts

Acum incepem la partea a 2-a

Vom face un Stock

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

Stock este o functie scurta la care nu ai nevoie de forward(nu prea stiu cum sa explic stock-ul )
Acest stock ne va ajuta la aflarea numelui playerului
Acum vom merge la OnPlayerConnect
si vom faceasa

Apasati CTRL+F in GM si cautati OnPlayerConnect pana va apare asa:

 

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new file[500];
if(dialogid == Register)
{
if(!response) return Kick(playerid);
if(!strlen(inputtext)) return ShowPlayerDialog(playerid,register,DIALOG_STYLE_PASSWORD,"Register","Welcome\nPlease Register to save your Coins,Moneys,Score","Register","Cancel");
format(file,sizeof(file),Data,pName(playerid));
dini_Create(file);
dini_IntSet(file,"Password",udb_hash(inputtext));
dini_IntSet(file,"Moneys",PlayerInfouserbar[Moneys] += 30000);
dini_IntSet(file,"Score",PlayerInfouserbar[Score] += 3);
dini_IntSet(file,"Kills",PlayerInfouserbar[Kills] = 0);
dini_IntSet(file,"Deaths",PlayerInfouserbar[Deaths] = 0);
dini_IntSet(file,"Level",PlayerInfouserbar[Level] = 0);
PlayerInfouserbar[LoggedIn] = 1;
}
if(dialogid == Login)
{
format(file,sizeof(file),Data,pName(playerid));
if(!response) return Kick(playerid);
if(!strlen(inputtext)) return ShowPlayerDialog(playerid,login,DIALOG_STYLE_PASSWORD,"Login","Welcome\nPlease login to load your Coins,Moneys,Score","Login","Cancel");
new tmp;
tmp = dini_Int(file,"Password");
if(udb_hash(inputtext) != tmp)
{
ShowPlayerDialog(playerid,login,DIALOG_STYLE_PASSWORD,"Fail Login","Incorrect Password\nPlease try again","Login","Cancel");
}
else
{
PlayerInfouserbar[LoggedIn] = 1;
PlayerInfouserbar[Kills] = dini_Int(file,"Kills");
PlayerInfouserbar[Deaths] = dini_Int(file,"Deaths");
PlayerInfouserbar[Level] = dini_Int(file,"Level");
GivePlayerMoney(playerid,dini_Int(file,"Money") + GetPlayerMoney(playerid));
}
}
return 1;
}

dini_Create(file); - Cu functia asta se va crea contul
tmp = dini_Int(file,"Password"); - Afla parola playerului
Acum contul trebbuie sa se salveze in scriptfiles/Users
Dar cand playerul se va deconecta totul va disparea(banii,scorul si celelalte vor fi la 0)
Cum facem sa nu se reseteze?
Pai simplu
Ducetiva la OnPlayerDisconnect si faceti asa

if OnPlayerDisconnect(playerid, reason){
new file[255];
format(file,sizeof(file),Data,pName(playerid));
dini_IntSet(file,"Coins",PlayerInfouserbar[Coins]);
dini_IntSet(file,"Kills",PlayerInfouserbar[Kills]);
dini_IntSet(file,"Deaths",PlayerInfouserbar[Deaths]);
dini_IntSet(file,"Level",PlayerInfouserbar[Level]);
dini_IntSet(file,"Vip",PlayerInfouserbar[Vip]);
dini_IntSet(file,"Money",GetPlayerMoney(playerid));
dini_IntSet(file,"Score",GetPlayerScore(playerid));
return 1;
}

Cand playerul iese nu i se salveaza scorul
Cum facem sa i se salveze?
Pai ducetiva din nou la
OnPLayerConnect si puneti asa

SetPlayerScore(playerid,dini_Int(file,"Score")+GetPlayerScore(playerid));

SetPlayerScore - Ii reda scorul(cand sa deconectat i sa salvat iar acum ii reda scorul)
dini_IntSet - Seteaza statisticile playerului(banii , scorul si celelalte)
dini_Int - Ii reda playerului statisticile salvate

Daca nu ati inteles cv dati reply
PS:daca esti n00b si nu intelegi mai bine nu te mai apuca sa`l faci.

 

Este un tip de login/register : PE DIALOG.

 

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...