Jump to content

Tutorial MySQL R41-4 | Data inregistrarii si ultima logare


Recommended Posts

Posted (edited)

Salut, astazi va voi arata cum sa faceti sa apara cand se conecteaza jucatorul data inregistrarii sale si ultima logare!

Pentru asta nu avem nevoie de include-uri/plugin-uri speciale, doar de mysql.

 

In primul si in primul rand, mergem in baza de date si facem doua campuri noi astfel: (Implicit: CURRENT_TIMESTAMP, nu incape tot)

image.png.f214e6ff73283e903846751790d4c94f.png

In MySQL, variabilele de tipul 'TIMESTAMP' pur si simplu sunt, ati ghicit, data si ora (in format "an/luna/zi - ora:minut:secunda"). Daca ii atribuim unei variabile valoarea implicita de 'CURRENT_TIMESTAMP' se va pune automat data si ora curenta cand se insereaza un rand in baza de date, adica cu RegisterDate deja suntem 95% gata. Singura "problema" la asta pana acum este cand le adaugam si avem deja conturi inregistrate, 'RegisterDate' va fi data si ora curenta pentru toate conturile, dar nu cred ca este mare scofala, poate fi resetat usor.

 

Mai apoi, mergem la enum-ul cu informatiile jucatorului (pInfo / pData / etc.) si adaugam urmatoarele:

enum pInfo {
	// restul variabilelor
	pRegisterDate[22], pLastLogin[22]
};

 

Acum, la OnPlayerConnect sau CheckAccount sau la ce functie aveti voi unde ii apare jucatorului dialog-ul de logare, adaugam urmatoarele linii inaintea afisarii acestuia:

cache_get_value_name(0, "RegisterDate", PlayerInfo[playerid][pRegisterDate]); // Ii luam data inregistrarii din baza de date si o stocam in 'PlayerInfo[playerid][pRegisterDate]'
cache_get_value_name(0, "LastLogin", PlayerInfo[playerid][pLastLogin]); // Ii luam data ultimei logari din baza de date si o stocam in 'PlayerInfo[playerid][pLastLogin]'

new string[120]; // Creem un string de 120 de caractere si il formatam aratandu-i aceste doua dati. Puteti schimba mesajul in ce doriti voi dar atentie sa mariti string-ul daca este mai lung!
format(string, sizeof(string), "Introdu parola contului tau:\n\nData inregistrarii: %s\nUltima logare: %s", PlayerInfo[playerid][pRegisterDate], PlayerInfo[playerid][pLastLogin]);

ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", string, "Login", "Cancel"); // din nou, modificati corespunzator id-ul dialogului si ce mai vreti voi pe aici.

 

Ultimul pas, la OnPlayerLogin ii setam LastLogin la data si ora curenta:

new query[80];
mysql_format(SQL, query, sizeof(query), "UPDATE `users` SET `LastLogin`=NOW() WHERE `ID`='%d' LIMIT 1", PlayerInfo[playerid][pSQLID]); // Modificati corespunzator acest query, cu baza de date corecta, tabelul potrivit, etc. Atentie, sa mariti query-ul definit mai sus daca este mai lung.
mysql_tquery(SQL, query, "", ""); // Trimitem query-ul catre baza de date si am terminat!

 

Rezultat in joc cu un cont nou:

image.png.98b97ffd27d53a8222c3eeb3bd71d09e.png

 

Sper ca acest tutorial v-a fost de folos, recent am auzit si eu de aceste variabile TIMESTAMP in mysql si am decis sa va ajut si pe voi! :)

 

 

 

Edited by NERS
  • 2 weeks later...
  • 1 year later...
Posted
On 4/20/2021 at 7:17 PM, NERS said:

Salut, astazi va voi arata cum sa faceti sa apara cand se conecteaza jucatorul data inregistrarii sale si ultima logare!

Pentru asta nu avem nevoie de include-uri/plugin-uri speciale, doar de mysql.

 

In primul si in primul rand, mergem in baza de date si facem doua campuri noi astfel: (Implicit: CURRENT_TIMESTAMP, nu incape tot)

image.png.f214e6ff73283e903846751790d4c94f.png

In MySQL, variabilele de tipul 'TIMESTAMP' pur si simplu sunt, ati ghicit, data si ora (in format "an/luna/zi - ora:minut:secunda"). Daca ii atribuim unei variabile valoarea implicita de 'CURRENT_TIMESTAMP' se va pune automat data si ora curenta cand se insereaza un rand in baza de date, adica cu RegisterDate deja suntem 95% gata. Singura "problema" la asta pana acum este cand le adaugam si avem deja conturi inregistrate, 'RegisterDate' va fi data si ora curenta pentru toate conturile, dar nu cred ca este mare scofala, poate fi resetat usor.

 

Mai apoi, mergem la enum-ul cu informatiile jucatorului (pInfo / pData / etc.) si adaugam urmatoarele:

enum pInfo {
	// restul variabilelor
	pRegisterDate[22], pLastLogin[22]
};

 

Acum, la OnPlayerConnect sau CheckAccount sau la ce functie aveti voi unde ii apare jucatorului dialog-ul de logare, adaugam urmatoarele linii inaintea afisarii acestuia:

cache_get_value_name(0, "RegisterDate", PlayerInfo[playerid][pRegisterDate]); // Ii luam data inregistrarii din baza de date si o stocam in 'PlayerInfo[playerid][pRegisterDate]'
cache_get_value_name(0, "LastLogin", PlayerInfo[playerid][pLastLogin]); // Ii luam data ultimei logari din baza de date si o stocam in 'PlayerInfo[playerid][pLastLogin]'

new string[120]; // Creem un string de 120 de caractere si il formatam aratandu-i aceste doua dati. Puteti schimba mesajul in ce doriti voi dar atentie sa mariti string-ul daca este mai lung!
format(string, sizeof(string), "Introdu parola contului tau:\n\nData inregistrarii: %s\nUltima logare: %s", PlayerInfo[playerid][pRegisterDate], PlayerInfo[playerid][pLastLogin]);

ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", string, "Login", "Cancel"); // din nou, modificati corespunzator id-ul dialogului si ce mai vreti voi pe aici.

 

Ultimul pas, la OnPlayerLogin ii setam LastLogin la data si ora curenta:

new query[80];
mysql_format(SQL, query, sizeof(query), "UPDATE `users` SET `LastLogin`=NOW() WHERE `ID`='%d' LIMIT 1", PlayerInfo[playerid][pSQLID]); // Modificati corespunzator acest query, cu baza de date corecta, tabelul potrivit, etc. Atentie, sa mariti query-ul definit mai sus daca este mai lung.
mysql_tquery(SQL, query, "", ""); // Trimitem query-ul catre baza de date si am terminat!

 

Rezultat in joc cu un cont nou:

image.png.98b97ffd27d53a8222c3eeb3bd71d09e.png

 

Sper ca acest tutorial v-a fost de folos, recent am auzit si eu de aceste variabile TIMESTAMP in mysql si am decis sa va ajut si pe voi! :)

 

 

 

C:\Users\user\Desktop\Server Samp\gamemodes\proiect.pwn(240) : error 017: undefined symbol "cache_get_value_name"
C:\Users\user\Desktop\Server Samp\gamemodes\proiect.pwn(241) : error 017: undefined symbol "cache_get_value_name"

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more details you can also review our Terms of Use and Privacy Policy.