Jump to content

Tutorial MySQL R41-4 | Data inregistrarii si ultima logare


NERS

Recommended Posts

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
Link to comment
Share on other sites

  • 2 weeks later...
  • 1 year later...
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"

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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.