[Tutorial] Cum sa faci un sistem de logare/inregistrare!
:: Ro-SAMP | Servicii :: Tutoriale :: Tutoriale SA:MP
Pagina 1 din 1
[Tutorial] Cum sa faci un sistem de logare/inregistrare!
Salut la toti azi revin cu un nou tutorial la cererea lui Sa-Mp No Limit!
Iar titlul spune tot !
Bun vom avea nevoie de 2 includeri : dini si dutils care ne vor ajuta pe parcursul lucrului!
Le downloadam le puteti gasi pe google !
Si incepem :
Deci mergem la linia OnDialogResponse si vom adauga urmatoarele voi fii cat mai explicit!
Tutorial creat de: NaGaz000r !
Sursa: http://www.sa-mp.ro/
Iar titlul spune tot !
Bun vom avea nevoie de 2 includeri : dini si dutils care ne vor ajuta pe parcursul lucrului!
Le downloadam le puteti gasi pe google !
Si incepem :
- Cod:
#include <a_samp>
#include <dutils>
#include <dini>
- Cod:
enum pInfo[playerid] { // cu acest enum vom pune tot ce vrem sa stim despre player cand se inregistreaza //
AdminLevel, // daca are admin sau nu //
level, // levelul //
cash, // banii //
password, // parola jucatorului //
}
new PlayerInfo[MAX_PLAYER_NAME][pInfo] // adica ce am enumerat noi mai sus! //
- Cod:
public OnPlayerConnect(playerid) {
new name[MAX_PLAYER_NAME], file[128]; // name - numele lui , file - fisierul lui!
GetPlayerName(playerid, name, MAX_PLAYER_NAME); // ii va verifica numele daca este inregistrat
format(file, sizeof(file), ".../Users/%s.ini", name); // locul unde se inregistreaza
if(!fexist(file)) { // daca nu este inregistrat ii va trimite mesaj
SendClientMessage(playerid, 0xAA3333AA, "Nu esti inregistrat te rog inregistreaza-te!");
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Inregistreaza-te te rog!", "Introdu parola ", "Inregistreaza-te", "Iesi"); // acesta este dialogul in care-l va pune sa se inregistreze!
}
else {
new str[128]; // dar daca playerul este deja inregistrat il va pune sa se logheze!
GetPlayerName(playerid, name, MAX_PLAYER_NAME); // ii verifica numele
format(str, sizeof(str), "Bine ai venit inapoi pe server ~r~%s. Distreaza-te!", name); // Va primi un mesaj de bun venit inapoi!
SendClientMessage(playerid, 0xAA3333AA, str);
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Te rugam logheaza-te", "Introdu parola", "Login", "Cancel"); // si aici este dialogul in care se va loga jucatorul respectiv!
}
return 1;
}
- Cod:
public OnPlayerDisconnect(playerid, reason)
{
new file[128], name[MAX_PLAYER_NAME]; // noul fisier ce se va crea daca nu este inregistrat!
GetPlayerName(playerid, name, MAX_PLAYER_NAME); // ii va detecta numele!
format(file, sizeof(file), ".../Users/%s.ini", name); // iar aici i se va salva puteti modifica cum vreti voi!
if(dini_Exists(file)) { // Iar acum pur si simplu cu dini_IntSet vom salva ce am enumerat noi mai sus!
dini_IntSet(file, "password", PlayerInfo[playerid][password]); // parola jucatorului ..
dini_IntSet(file, "AdminLevel", PlayerInfo[playerid][AdminLevel]); // admin level //
dini_IntSet(file, "cash", PlayerInfo[playerid][cash]); // banii jucatorului //
dini_IntSet(file, "level", PlayerInfo[playerid][level]); // levelul jucatorului! // ATENTIE le puteti modifica sau puteti creea mai multe! //
}
return 1; // Si asta e tot am reusit sa salvam contul jucatorului //
}
Deci mergem la linia OnDialogResponse si vom adauga urmatoarele voi fii cat mai explicit!
- Cod:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 1) { // Primul dialog cu id 1 este acel in care jucatorul isi introduce parola pentru a se inregistra !
new file[128], name[MAX_PLAYER_NAME], str[128]; // ii va crea un fiser de maxim 128 de caractere!
GetPlayerName(playerid, name, MAX_PLAYER_NAME); // ii va detecta numele pt salvare!
format(file, sizeof(file), ".../Users/%s.ini", name); // Aici este locul unde se va salva !
if(response) { // iar acuma dupa ce si- scirs parola i se va crea un fiser !
if(strlen(inputtext)) {
dini_Create(file); // Aceasta comanda ii va crea fisierul cu urmatoarele!
dini_IntSet(file, "password", num_hash(inputtext)); // parola jucatorul dar aceasta va fi criptata!
dini_IntSet(file, "AdminLevel", PlayerInfo[playerid][AdminLevel]); // adminul //
dini_IntSet(file, "cash", PlayerInfo[playerid][cash]); // Banii jucatorului //
dini_IntSet(file, "level", PlayerInfo[playerid][level]); // levelul //
format(str, sizeof(str), "Esti inregistrat ~r~%s. Parola ta este~r~%s.Nu o uita !", name, inputtext); // dupa ce se inregistreaza ii va trimite un mesaj cu parola si faptul ca s-a inregistrat cu succes//
SendClientMessage(playerid, 0xAA3333AA, str); // ii trimite jucatorului mesajul !//
PlayerInfo[playerid][level] = dini_Int(file, "level"); // levelul //
PlayerInfo[playerid][cash] = dini_Int(file, "cash"); // bani //
PlayerInfo[playerid][AdminLevel] = dini_Int(file, "AdminLevel"); // adminul //
}
}
else {
Kick(playerid); // iar daca da iesi si nu se inregistreaza va primi automat KICK!
}
}
if(dialogid == 2) { // iar acuma daca jucatorul este inregistrat va trebui sa se logheze!
new file[128], name[MAX_PLAYER_NAME], str[128]; // fisierul //
GetPlayerName(playerid, name, MAX_PLAYER_NAME); // ii detecteaza numele sa vada daca este inregistrat!
format(str, sizeof(str), ".../Users/%s.ini", name); // locul unde sunt conturile //
if(response) { // daca va scrie o parola gresita aceasta va fi verificata cu cea din fisier iar daca este incorecta ii va trimite mesaj cum ca a gresit parola!
if(strlen(inputtext)) {
if(num_hash(inputtext) != dini_Int(file, "password")) { // aici verifica parola //
SendClientMessage(playerid, 0xAA3333AA, "Parola este gresita!");
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Te rog logheaza-te!", "Introdu parola", "Login", "Cancel");
}
else {
SendClientMessage(playerid, 0xAA3333AA, "Te-ai logat cu succes distractie placuta pe server!");
PlayerInfo[playerid][level] = dini_Int(file, "level"); // dupa ce s-a logat ii va da playerului ce a avut dupa deconectare adica levelul
PlayerInfo[playerid][cash] = dini_Int(file, "cash"); // banii //
GivePlayerMoney(playerid, dini_Int(file, "cash")); // iar cu aceasta functie ii va da banii inapoi //
PlayerInfo[playerid][AdminLevel] = dini_Int(file, "AdminLevel"); // adminul //
}
}
}
else {
Kick(playerid); // daca greseste parola va primi kick //
}
}
return 1;
}
Tutorial creat de: NaGaz000r !
Sursa: http://www.sa-mp.ro/
Subiecte similare
» [Tutorial]Schimbare Sistem PayDay
» RPG.B-Zone.Ro:7777 Roleplay, Refferal ID la logare: 407234
» RPG.B-Zone.Ro:7777 Roleplay , Refferal ID la logare pe server: 407234.
» RPG.B-Zone.Ro:7777 Roleplay, Refferal ID la logare: 407234
» RPG.B-Zone.Ro:7777 Roleplay , Refferal ID la logare pe server: 407234.
:: Ro-SAMP | Servicii :: Tutoriale :: Tutoriale SA:MP
Pagina 1 din 1
Permisiunile acestui forum:
Nu puteti raspunde la subiectele acestui forum