Jump to content

[Tutorial]Update PlayerData si query intr-o singura comanda


Recommended Posts

Posted

Well.. Nu prea ma pricep la titlu, nu e un titlu bun, dar o sa intelegi voi ce vreau eu sa fac! 

Se da urmatoarea comanda:

CMD:growOld(playerid, params[])
{
	new string[128];
	PlayerInfo[playerid][pAge] = 420;
	mysql_format(SQL, string, 128,"UPDATE `users` SET `Age`='%d' WHERE `ID`='%d' LIMIT 1",PlayerInfo[playerid][pAge],PlayerInfo[playerid][pSQLID]);
	mysql_pquery(SQL, string, "", "");
	return 1;
}

Ce face comanda? Este destul de simplu: seteaza varsta jucatorului atat pe server cat si in baza de date pe 420.

Ce ne facem daca noi avem sute astfel de UPDATE query-uri intr-un gamemode? Cum am putea sa mai scurtam din linii?

Stim ca "pAge" face parte din

enum PInfo
{
	pSQLID,
	pAge,
}
new PlayerInfo[MAX_PLAYERS][PInfo];

Si este o variabila ce face parte din "multimea" PInfo.

Haideti sa modificam putin comanda de mai sus, sa vedeti cum ar arata daca ar fi prescurtata

CMD:growOld(playerid, params[])
{
	setPlayerDataInt(playerid, PInfo:pAge, "Age", 1);
	return 1;
}

Mult mai bine, nu? 

Dar cum arata setPlayerDataInt?

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, "", "");
}

Comanda setPlayerDataInt primeste prin cei 4 parametrii:

  • id-ul jucatorului
  • un camp din pInfo
  • denumirea coloanei din baza de date, corespunzatoare campului din pinfo (o primeste sub forma de un simplu string)
  • noua valoare ce trebuie setata

Tot ceea ce am facut a fost sa ma folosesc de propietatea pe care o are initializatorul "enum". 

Aveti idei de titlu mai bun?

  • Upvote 2

Tutoriale despre tot si toate: Tutoriale-Pe.NET

Posted

Foarte interestant este o functie foarte utila, dar ma intreb cat de rapida este sau daca nu face lag pentru ca se executa prin stock fata de query direct din prima comanda

 

    __  ____      __           
   /  |/  (_)____/ /____  _____
  / /|_/ / / ___/ __/ _ \/ ___/
 / /  / / (__  ) /_/  __/ /    
/_/  /_/_/____/\__/\___/_/     
SERVICII SCRIPTING DE CALITATE
Pagina     Scripting     pawn
  • Administrator
Posted
1 hour ago, Mister said:

Foarte interestant este o functie foarte utila, dar ma intreb cat de rapida este sau daca nu face lag pentru ca se executa prin stock fata de query direct din prima comanda

Nu o să facă lag, e doar o apelare la o funcție și după atribuire, formatare și executare a unei comenzi SQL.

Posted
7 hours ago, Mister said:

Foarte interestant este o functie foarte utila, dar ma intreb cat de rapida este sau daca nu face lag pentru ca se executa prin stock fata de query direct din prima comanda

E tot una, n-o sa faca "lag' mai mare decat face in primul caz. O sa ai lag doar daca folosesti mysql_query si faci spam pe comanda. Cu pquery / tquery n-ar trebui sa ai probleme.

 

Imi place tutorialul, ai revenit in forta :))

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.