Jump to content

[TUTORIAL] Query update


Syntetick

Recommended Posts

Acest tutorial a fost STRICT făcut pentru jucătorii care încă folosesc bigzone sau încă mai au query-update de forma aceasta:

#define pNoobx	1

Update(playerid, pNoobx);

Reveniți-vă fraților! Sper ca din acest tutorial să schimbe majoritatea modul de query update. Această metodă este una simplă, făcută de mine, probabil a mai făcut lumea query update asemănător cu al meu.

Acest tutorial este compatibil cu ORICE GAMEMODE.

Pentru început, trebuie să aveți conexiune MySQL între server și baza de date, tutorial pentru acest lucru  puteți găsi pe net, sunt foarte multe.

Eu vă voi explica query update pentru tabelul „users„ sau „accounts„ din baza de date. Dacă aveți alt nume la tabel modificați codul scris de mine.

 

// 1 - integer
// 2 - float
// 3 - string

// (codul de mai sus nu este obligatoriu să-l scrieți, doar v-am scris în caz că nu vă descurcați.

// pentru a nu ne complica cu forward-uri si public-uri, folosim acest cod și ne ușurează viața.


#define function%0(%1) forward %0(%1); public %0(%1)

new iString [ 145 ];

// iar acum codul în sine
  
function Update(playerid, type, var[], var2[]) {
	iString [ 0 ] = '\0';
	
	switch(type) {
		case 1: mysql_format(numele_bazei_de_date, iString, sizeof iString, "UPDATE `users` SET `%s` = '%d' WHERE `ID` = '%d'", var, var2, playerid), 		mysql_tquery(numele_bazei_de_date, iString, "", "");
		case 2: mysql_format(numele_bazei_de_date, iString, sizeof iString, "UPDATE `users` SET `%s` = '%f' WHERE `ID` = '%d'", var, Float:var2, playerid), 		mysql_tquery(numele_bazei_de_date, iString, "", "");
		case 3: mysql_format(numele_bazei_de_date, iString, sizeof iString, "UPDATE `users` SET `%s` = '%s' WHERE `ID` = '%d'", var, var2, playerid), 		mysql_tquery(numele_bazei_de_date, iString, "", "");

	}
	return true;
}

* Testat pe partea de cod (nicio eroare / warning)

* Netestat pe joc (daca nu functioneaza cum trebuie postati aici)

* Nu aveți voie de funcții suplimentare pentru a rula acest cod.

 

Ce am făcut eu mai exact?

- parametrul „type„ are 3 valori în cazul nostru, iar eu la fiecare valoare am modificat modul în care se face actualizarea query-ului (nu știu dacă m-am exprimat bine). Cele 3 moduri sunt integer, float și string (3 variabile din PAWN).

- parametrul „var„ reprezintă câmpul din baza de date, de exemplu (Money).

- parametrul var2 este variabila din joc, care este integer, float sau string.

 

Exemplu:

 

Update( playerid, 1, "Money", playerVariables[ playerid ] [ pCash ] );

 

de unde:

1 - tipul (in cazul nostru integer), așa numitul ”type„

"Money" - câmpul din baza de date, așa numitul "var"

"playerVariables[ playerid ] [ pCash ]" - variabila din gamemode, așa numitul "var2"

Edited by Krypton.
Link to comment
Share on other sites

stock setPlayerDataInt(playerid, PInfo:pVar, dbField[32], value)
{
	new string[128];
	PlayerInfo[playerid][pVar] = value;
	mysql_format(SQL, string, 128,"UPDATE `users` SET `%s`='%d' WHERE `ID`='%d' LIMIT 1",dbField, PlayerInfo[playerid][pVar],PlayerInfo[playerid][pSQLID]);
	mysql_pquery(SQL, string, "", "");
}

By Maurice mai usor si face cam accelasi lucru.

 

  • Like 1
Link to comment
Share on other sites

35 minutes ago, Dennis12. said:

stock setPlayerDataInt(playerid, PInfo:pVar, dbField[32], value)
{
	new string[128];
	PlayerInfo[playerid][pVar] = value;
	mysql_format(SQL, string, 128,"UPDATE `users` SET `%s`='%d' WHERE `ID`='%d' LIMIT 1",dbField, PlayerInfo[playerid][pVar],PlayerInfo[playerid][pSQLID]);
	mysql_pquery(SQL, string, "", "");
}

By Maurice mai usor si face cam accelasi lucru.

 

În cazul string-ului nu merge această funcție, parcă era cu strmid la string. Mă rog, merge și așa la integer, dar eu am făcut și pt. float și pt. string și pt integer.

 

edit: acum mi-am dat seama ca a facut 3 functii, scz.

Edited by Krypton.
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.