Par sitnih saveta koji će svima pomoći (nadam se)


Započeo malitoni, Februar 10, 2020, 14:28:48 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

- Savet -


Nije me dugo bilo i primetio sam da dosta vas ovde ne koristi neke fine stvari koje dosta ubrzavaju vreme pisanja koda tj. potrebno vam je manje vremena za to, primer iz nekog random SA moda:

forward AdminGameMaster(color, const string[]);
public AdminGameMaster(color, const string[])
{
	foreach(new i : Player)
	{
		if(PlayerInfo[i][pGM] >= 1|| PlayerInfo[i][pAdmin] >= 1)
		{
			SendClientMessage(i, color, string);
		}
	}
}
// I posle
new string[128];
format(string, sizeof(string), "Poruka od %s", GetName(playerid));
AdminGameMaster(-1, string);


Ovo bi moglo da bude mnogo drugačije:
stock AdminGameMaster(color, const string[], {Float,_}:...)
{
	if(numargs() > 2)
	{
		foreach(new i : Player)
		{
			if(PlayerInfo[i][pGM] >= 1 || PlayerInfo[i][pAdmin] >= 1)
			{
				va_SendClientMessage(i, color, string, ___(2));
			}
		}
	}
	else
	{
		foreach(new i : Player)
		{
			if(PlayerInfo[i][pGM] >= 1 || PlayerInfo[i][pAdmin] >= 1)
			{
				SendClientMessage(i, color, string);
			}
		}
	}
	return 1;
}
// I sada:
AdminGameMaster(0xFF0000FF, "Poruka od %s", GetName(playerid));

Takodje, kad smo vec kod ovog parčeta koda, ovo bi moglo malo (mnogo, zavisi od broja igrača na serveru) brže da radi:
#include <YSI_Data\y_iterate>

new Iterator:Admins<MAX_PLAYERS>;

public OnAccountLoaded(const playerid) // Recimo da ovo pozivate kada se igrac uloguje
{
	if (PlayerInfo[playerid][pAdmin] > 0) {
		Iter_Add(Admins, playerid); // Dodajmo igraca u iterator Admins
	}
}

public OnPlayerDisconnect(playerid, reason)
{
	if (PlayerInfo[playerid][pAdmin] > 0) {
		Iter_Remove(Admins, playerid); // Maknimo taj ID igraca iz iteratora
	}
}

YCMD:setadmin(playerid, const params[])
{
	new tagetID, level; // Necu celu CMD pisati sada, podrazumeva se da dole ima sve tj. kod vas
	// Kod

	if (level <= 0) { // Namerno <=, vi dodajte zastite ostale
		// Kod
		Iter_Remove(Admins, targetID);
	}
	else {
		// Kod
		Iter_Add(Admins, targetID);
	}

	return COMMAND_OK;
}

// I sada kada sam sve objasnio (valjda)
stock AdminGameMaster(color, const string[], {Float,_}:...)
{
	if(numargs() > 2)
	{
		foreach( new i : Admins ) { // Ime iteratora sa linije broj 3
			va_SendClientMessage(i, color, string, ___(2));
		}
	}
	else
	{
		foreach( new i : Admins ) { // Ime iteratora sa linije broj 3
			SendClientMessage(i, color, string);
		}
	}
	return 1;
}

// Sada umesto da npr loopujemo kroz 1000 igrača, mi loopujemo samo kroz one koji postoje u iteratoru (mnogo brže nego u primeru gore da uvek loopujemo kroz SVE igrače dok ovako loopujemo samo kroz slotove iteratora)






Stil pisanja koda treba biti individualan , u ostalom stil pisanja koda nije vazan ukoliko funkcija , komanda , sistem ili slicno radi normalno sto je najvaznije u celoj prici programiranja ne samo pawno nego i bilo koji drugi programski jezik ;)

Citat: #THEV1NNY_ poslato Februar 10, 2020, 17:34:08 POSLE PODNE
Stil pisanja koda treba biti individualan , u ostalom stil pisanja koda nije vazan ukoliko funkcija , komanda , sistem ili slicno radi normalno sto je najvaznije u celoj prici programiranja ne samo pawno nego i bilo koji drugi programski jezik ;)
Ko ovde pominje stil? :D
Ja kažem da je mnogo lakše i brže ovako (performanse servera UP).

Ja nikome nisam rekao "E nemoj tako", zato se zove Savet a ne Naredba, dal' ces ti mene poslusati ili ne kgjb :P

Svakako ovako je najbolje, posebno za Iteratore :)

Citat: #THEV1NNY_ poslato Februar 10, 2020, 17:34:08 POSLE PODNE
Stil pisanja koda treba biti individualan , u ostalom stil pisanja koda nije vazan ukoliko funkcija , komanda , sistem ili slicno radi normalno sto je najvaznije u celoj prici programiranja ne samo pawno nego i bilo koji drugi programski jezik ;)
Nije ovo nikakav stil već kako bi trebalo da bude ili bolje ako zna onda super, a ne prahistorijski kurci kao što je već naveo gore

Citat: #THEV1NNY_ poslato Februar 10, 2020, 17:34:08 POSLE PODNE
Stil pisanja koda treba biti individualan , u ostalom stil pisanja koda nije vazan ukoliko funkcija , komanda , sistem ili slicno radi normalno sto je najvaznije u celoj prici programiranja ne samo pawno nego i bilo koji drugi programski jezik ;)

ne slazem se bas toliko sa tobom o tome da treba biti individualan, losa praksa 'kod nas' sto se PAWN-a tice je npr sto lupaju 'forward + public' u istu liniju, bad code pracite ono bzvz ako je nesto lose i moze biti brze zasto ne bi bilo brze?

@tema i ja sam skoro saznao za `numargs` native i cini mi se da moze biti mnogo mnogoo koristan, i ne znam ako nisam ranije skontao za to :D
Poslednja Izmena: Februar 11, 2020, 00:58:48 PRE PODNE od omcho

Citat: omcho poslato Februar 11, 2020, 00:54:41 PRE PODNE
ne slazem se bas toliko sa tobom o tome da treba biti individualan, losa praksa 'kod nas' sto se PAWN-a tice je npr sto lupaju 'forward + public' u istu liniju, bad code pracite ono bzvz ako je nesto lose i moze biti brze zasto ne bi bilo brze?

@tema i ja sam skoro saznao za `numargs` native i cini mi se da moze biti mnogo mnogoo koristan, i ne znam ako nisam ranije skontao za to :D
Pa pazi bad code pada u drugi plan ukoliko funkcija , komanda ili sistem rade bez problema ;)
Neko je navikao na stariji sistem neko na noviji sistem pisanja sa novim opcijama ali ako ti umes da se snadjes u tom code-u i ako opet kao sto kazem code se pretvori u to da sistem radi onda ne treba menjati :)
Npr ja sam navikao da code pisem bez tih numargsa i iteratora i opet mi sistemi rade normalno :D
Poslednja Izmena: Februar 11, 2020, 01:06:06 PRE PODNE od #THEV1NNY_

Citat: #THEV1NNY_ poslato Februar 11, 2020, 01:03:16 PRE PODNE
Pa pazi bad code pada u drugi plan ukoliko funkcija , komanda ili sistem rade bez problema ;)
Neko je navikao na stariji sistem neko na noviji sistem pisanja sa novim opcijama ali ako ti umes da se snadjes u tom code-u i ako opet kao sto kazem code se pretvori u to da sistem radi onda ne treba menjati :)
Npr ja sam navikao da code pisem bez tih numargsa i iteratora i opet mi sistemi rade normalno :D

sistemi ti rade normalno, ali rade sporije nego sa iteratorima recimo...

OK su savjeti. Trebali bi pomoći početnicima, ali drugi put stavi više savjeta jer radi par njih se ne isplati otvarat temu. Pohvale za uloženi trud.

Citat: Aaron poslato Februar 11, 2020, 08:19:28 PRE PODNE
OK su savjeti. Trebali bi pomoći početnicima, ali drugi put stavi više savjeta jer radi par njih se ne isplati otvarat temu. Pohvale za uloženi trud.
Ako @Galardo bude dozvolio da apdejtam ovo, sve moze :D

Citat: #THEV1NNY_ poslato Februar 11, 2020, 01:03:16 PRE PODNE
Pa pazi bad code pada u drugi plan ukoliko funkcija , komanda ili sistem rade bez problema ;)
Neko je navikao na stariji sistem neko na noviji sistem pisanja sa novim opcijama ali ako ti umes da se snadjes u tom code-u i ako opet kao sto kazem code se pretvori u to da sistem radi onda ne treba menjati :)
Npr ja sam navikao da code pisem bez tih numargsa i iteratora i opet mi sistemi rade normalno :D
Uvrede bez baki ali nisam baš video da imaš server sa 500+ igraca :D
Ovo pomaze mnogo ako imaš igrace, ovo tebi tehnicki nikada nece trebati

EDIT: Postoji loša praksa i dobra praksa, pa sam skontaj na sta mislim...
Zašto bi ti format poruku koja nema args posle stringa? Besmisleno je i dzaba vuce performance dole
Poslednja Izmena: Februar 11, 2020, 11:18:06 PRE PODNE od malitoni

Galardo

*

mgWhosyGD