Jump to content
  • 0

problema salvare/scriere bani in mysql


r0hanescu

Question

Salut.

La inregistrare incerc sa ii dau playerului o suma de bani, o primesc in joc dar nu se salveaza in baza de date din mysql, adica se salveaza 0 sau 1 si nu stiu ce imi scapa.

In mysql nu am nici o eroare, tabelul este creat. Randul este formatat ca si int.

 

Am incercat si asa

					GivePlayerMoney(playerid,50000);
					mysql_format(handle, query, sizeof(query), "UPDATE `conturi` SET `Cash`= %d WHERE `Nume`='%s'", P_Data[playerid][pCash], 	 		GetName(playerid));//
					mysql_query(handle, query);
                    SendClientMessage(playerid,-1,"Ai primit 50000$ de inceput.");

Si asa

				new cash;
				GivePlayerMoney(playerid, 50000);
				P_Data[playerid][pCash] = cash;
				mysql_format(handle, query, sizeof(query), "UPDATE `conturi` SET `Cash`= '%d' WHERE `Nume`='%s'", P_Data[playerid][pCash], GetName(playerid));
				mysql_query(handle, query);
                SendClientMessage(playerid,-1,"Ai primit 50000$ de inceput.");
Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0

Salut @r0hanescu,

Problema e ca tu nu ai setat o valoare pentru variabila "cash", deci aceasta este default, adică 0. Exemplu:

new cash = 50000; // valoarea e acum 50000
P_Data[playerid][pCash] += cash; aici adaugi 50000 la suma curenta.

Sau poti trece direct 50.000 în pCash fara sa mai creezi variabila respectiva. Ex: 

P_Data[playerid][pCash] += 50000;

Iar ca niste sfaturi, la salvarile de genul in baza, foloseste mysql_tquery in loc decat mysql_query. (Diferența e "t" inaintea lui query. Pentru detalii cauta pe forum sau pe internet informatii despre mysql). El se salvează, dar e mai ok in varianta mea.

Iar ca un alt sfat, ai grija cum concepi sistemul, sa nu detectezi niciodata suma de bani a unui jucător prin intermediul "GetPlayerMoney", pentru ca poți oricand sa-ti faci de cap la hacku si sa dispui de bani infiniti. Uite un exemplu cum sa-l concepi:

stock GivePlayerCash( playerid, cash ) {

	new Query[ 100 ];

	P_Data[ playerid ][ pCash ] += cash;

	mysql_format( handle, Query, sizeof Query, "UPDATE `conturi` SET `Cash`='%d' WHERE `Nume`='%s';", P_Data[ playerid ][ pCash ], GetName( playerid ) );
	mysql_tquery( handle, Query, "", "" );

	return true; }

stock GetPlayerCash( playerid ) return P_Data[ playerid ][ pCash ];

[...] prin exemplu de mai sus, tot ce trebuie sa mai faci e un timer in care sa fie resetata suma de bani din HUD, adica aia din GTA, cu suma de bani pe care o are jucatorul. Ca sa te pun sa mai "faci" si tu ceva, ca practic ti-am oferit pe tava, te las pe tine sa cauti metoda prin care poti face acel timer. Iar ca sa te ajut putin si aici, eu cunosc doar 2 metode, metoda generala a samp-ului, "SetTimer" / "SetTimerEx" sau folosirea unui include din libraria YSI, "y_timers", pe care o si recomand (a 2-a metoda). Daca cauti "YSI by Y_Less" pe google, e primul rezultat.

Multa bafta.

Edited by shane
  • Thanks 1

Daca te-am ajutat =>

spacer.png

Link to comment
Share on other sites

  • 0
12 hours ago, shane said:

Salut @r0hanescu,

Problema e ca tu nu ai setat o valoare pentru variabila "cash", deci aceasta este default, adică 0. Exemplu:


new cash = 50000; // valoarea e acum 50000
P_Data[playerid][pCash] += cash; aici adaugi 50000 la suma curenta.

Sau poti trece direct 50.000 în pCash fara sa mai creezi variabila respectiva. Ex: 


P_Data[playerid][pCash] += 50000;

Iar ca niste sfaturi, la salvarile de genul in baza, foloseste mysql_tquery in loc decat mysql_query. (Diferența e "t" inaintea lui query. Pentru detalii cauta pe forum sau pe internet informatii despre mysql). El se salvează, dar e mai ok in varianta mea.

Iar ca un alt sfat, ai grija cum concepi sistemul, sa nu detectezi niciodata suma de bani a unui jucător prin intermediul "GetPlayerMoney", pentru ca poți oricand sa-ti faci de cap la hacku si sa dispui de bani infiniti. Uite un exemplu cum sa-l concepi:


stock GivePlayerCash( playerid, cash ) {

	new Query[ 100 ];

	P_Data[ playerid ][ pCash ] += cash;

	mysql_format( handle, Query, sizeof Query, "UPDATE `conturi` SET `Cash`='%d' WHERE `Nume`='%s';", P_Data[ playerid ][ pCash ], GetName( playerid ) );
	mysql_tquery( handle, Query, "", "" );

	return true; }

stock GetPlayerCash( playerid ) return P_Data[ playerid ][ pCash ];

[...] prin exemplu de mai sus, tot ce trebuie sa mai faci e un timer in care sa fie resetata suma de bani din HUD, adica aia din GTA, cu suma de bani pe care o are jucatorul. Ca sa te pun sa mai "faci" si tu ceva, ca practic ti-am oferit pe tava, te las pe tine sa cauti metoda prin care poti face acel timer. Iar ca sa te ajut putin si aici, eu cunosc doar 2 metode, metoda generala a samp-ului, "SetTimer" / "SetTimerEx" sau folosirea unui include din libraria YSI, "y_timers", pe care o si recomand (a 2-a metoda). Daca cauti "YSI by Y_Less" pe google, e primul rezultat.

Multa bafta.

+1, ti-a dat tot mura-n gura, ca sa salvezi o variabila in db, trebuie sa ii atribui o valoare mai intai.

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
Answer this question...

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