Jump to content

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


Maurice

Recommended Posts

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

Link to comment
Share on other sites

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

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.

Link to comment
Share on other sites

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 :))

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.