Jump to content

SetPVar -> programare mai usoara?


[RW]Robi

Recommended Posts

SetPVar -> programare mai usoara?

M-am uitat la un topic numit 'Optimizare' pentru ca chiar eram curios ce se afla acolo, si am vazut ca s-a facut diferente intre variabila normala (new) si SetPVarInt/Float/String.

Si mi-a venit o idee spun eu destul de ok, care te ajuta sa programezi mai rapid.

Mai necesita extins, eu am facut un exemplu, pe care nici macar nu l-am testat dar presupun ca functioneaza.

Deci, sa spunem ca eu vreau sa fac o variabila pe 50 de stocari (pentru 50 de jucatori), pana fac new o setez la OnPlayerConnect pe 0, pana o incarc din baza de date dureaza ceva, asa ca in randurile de mai jos va voi explica ce face acest script.

ADDVAR -> Este o functie care adauga un SetPVarInt cu orice nume vrei si ce valoare vreti voi direct la incarcarea din baza de date.

In cazul de fata, va extrage variabila Bani si o va stoca fara ca noi sa o cream cu un new si sa o setam pe 0, doar cu simpla linie.

Parametrii

numevar -> numele variabilei si numele columnului care vrei sa fie extras din baza de date.

string -> puteti adauga de unde vreti sa selecteze, sau cat vreti sa selecteze, etc. 

de exemplu:

	ADDVAR(playerid, "Bani", "WHERE `id`='1' AND `Bani` < '500'");
	ADDVAR(playerid, "Bani", "WHERE `name`='[RW]Robi'");
	ADDVAR(playerid, "Bani", "WHERE `Bani` > '500000'");
	format(string, sizeof(string), "WHERE `id`='%d'",PlayerInfo[playerid][pSQLID]);
	ADDVAR(playerid, "Bani", string);

Dupa parerea mea, aceasta functie face treaba mai usoara in programare, daca credeti ca este nevoie de ea, lasati un reply sau un +1 si eu am sa o continui si am sa v-o ofer cand va fi gata complet.

 

 

public OnPlayerConnect(playerid)
{
	ADDVAR(playerid, "Bani", "WHERE `id`='1'");
	return 1;
}

stock ADDVAR(playerid, numevar[],string[])
{
	new sqlselect[256];
	mysql_format(SQL, sqlselect, sizeof(sqlselect), "SELECT * FROM `users` %s", string);
	new Cache: extragere = mysql_query(SQL, sqlselect);
	new rezultate = cache_get_row_count();
	if(rezultate > 0)
	{
		for(new i = 0; i < rezultate; i++)
		{
			SetPVarInt(playerid, numevar, cache_get_field_content_int(i, numevar));
		}
	}
	cache_delete(extragere);
	format(sqlselect, sizeof(sqlselect), "Bani: %d",GetPVarInt(playerid, "Bani"));
        SendClientMessage(playerid, -1, sqlselect);
	return 1;
}

[RW]Robi, all rights reserved.

Edited by RWRobiBG
Aliniere
  • Upvote 2

                        

 

 

Link to comment
Share on other sites

Imi place cum ai gandit si cum ai aranjat desi mai trebui retusuri este foarte ok, desi daca ai fi citit un post de pe acolo zicea ca desi e mai comoda asa cum spui si tu este mai inceata pvarul decat variabila normala. Dar 10 pentru ca te-ai gandit la o scurtatura ca asta in scriptat de la mine :)

 

    __  ____      __           
   /  |/  (_)____/ /____  _____
  / /|_/ / / ___/ __/ _ \/ ___/
 / /  / / (__  ) /_/  __/ /    
/_/  /_/_/____/\__/\___/_/     
SERVICII SCRIPTING DE CALITATE
Pagina     Scripting     pawn
Link to comment
Share on other sites

Acum 18 minute, KnowN a spus:

Mai bine ramai pe clasic, desi PVarul te ajuta pe tine, ingreuneaza serverul, adica nu pot sa zic ca chiar ingreuneaza, dar nu se executa mai rapid decat new-uri.

Asta este adevarat, dar este o scurtatura destul de ingenioasa, nu ingreuneaza chiar foarte tare serverul este o diferenta de cateva ms.

                        

 

 

Link to comment
Share on other sites

metoda nu e ingenioasa deloc, iar ceea ce tu nu stii e faptul ca exista o limita de 800 PVars.

Cand zic ca metoda nu e ingenioasa ma refer la nr de interogari trimise la baza de date cat si faptul ca sunt nonthreaded

 

  • Upvote 1
Link to comment
Share on other sites

La 1/17/2017 la 4:44, Ksenon a spus:

metoda nu e ingenioasa deloc, iar ceea ce tu nu stii e faptul ca exista o limita de 800 PVars.

Cand zic ca metoda nu e ingenioasa ma refer la nr de interogari trimise la baza de date cat si faptul ca sunt nonthreaded

 

Stiu foarte bine ca PVAR e limitat, dar tu tot un idiot ramai.

 

                        

 

 

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.