Jump to content

Recommended Posts

Posted (edited)

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

                        

 

 

Posted

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
Posted

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.

  • Upvote 1

242086.png

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

                        

 

 

Posted

GVar se bazeaza pe acelasi principiu, doar ca nu e limitat doar la playeri, viteza de citire e mai rapida si are ceva functii in plus.

Posted

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

 

                        

 

 

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.