Zaključano
Uloganigrac
2,443
pregleda
26
postova
Ova tema je zaključana. Samo moderatori i administratori mogu odgovarati.
pre 6 godina
Prvo: ProÄitaj pravila molim te
Drugo: Razlika je u tome da je IsPlayerConnected provera da li je igraÄ KONEKTOVAN a UlogovanIgrac da li je igraÄ ULOGOVAN Script-sided, potpuno razliÄiti pojmovi
Drugo: Razlika je u tome da je IsPlayerConnected provera da li je igraÄ KONEKTOVAN a UlogovanIgrac da li je igraÄ ULOGOVAN Script-sided, potpuno razliÄiti pojmovi
pre 6 godina
IsPlayerConnect proverava da li ti je igrac konektovan na server,
dok je UlogovanIgrac varijabla, ali u vecini skripti je ta varijabla stavljena kada igrac ukuca sifru bude 1, pst ne znam bolje da ti objasnim evo ti primer
Moja preporuka ti je da to ne brises jer fazon ako ti se ucitavaju podatci na Connectu, igrac moze da stavi vlasnikovo ime i bez da ukuca sifru moze da vrsi komande i pobanuje pola servera 😛
dok je UlogovanIgrac varijabla, ali u vecini skripti je ta varijabla stavljena kada igrac ukuca sifru bude 1, pst ne znam bolje da ti objasnim evo ti primer
CMD:test(playerid)
{
if(IsPlayerConnected(playerid)) return SendClientMessage(playerid,-1,"Nisi konektovan"); // ali nema kome da posalje poruku iks de IsPlayerConnected mozes da koristis da li je neki drugi igrac konektovan primer
if(IsPlayerConnected(igrac)) return SendClientMessage(playerid,-1,"Taj igrac nije konektovan");
PlayerInfo = 6;
return(true);
}
CMD:test2(playerid)
{
if(UlogovanIgrac == 0 ) return SCM(playerid,-1,"moras se ulogovati"); // u /test komandi igrac bi mogao da vrsi tu komandu cak i kad nije ulogovan dok ovde ne.
PlayerInfo = 6;
return(true);
}
Moja preporuka ti je da to ne brises jer fazon ako ti se ucitavaju podatci na Connectu, igrac moze da stavi vlasnikovo ime i bez da ukuca sifru moze da vrsi komande i pobanuje pola servera 😛
pre 6 godina
COMMAND:msg(playerid, params[]) {
if(sscanf(params, "u", params))
return ...
if(!IsPlayerConnected(params))
return SendClientMessage(playerid, 0xFF0000AA, "(Error): {FFFFFF}Igrac nije konektovan na server!");
if(playerLogged[params] == false/0)
return SendClientMessage(playerid, 0xFF0000AA, "(Error): {FFFFFF}Igrac se nije ulogovao!");
SendClientMessage(params, "text");
return 1;
}
//Kad uspesno ukuca sifru na login sistemu:
playerLogged = true/1;
//to je to, playerLogged = Ako je igrac ulogovan, ako je prosao login, IsPlayerConnected = Ako je igrac uopste na serveru..
pre 6 godina
@Itz.Yansi42O
COMMAND:msg(playerid, params[])
{
if(sscanf(params, "r", params))
return ...
if(params == INVALID_PLAYER_ID)
return SendClientMessage(playerid, 0xFF0000AA, "(Error): {FFFFFF}Igrac nije konektovan na server!");
if(Bit_Get(LoggedIn, playerid) == false)
return SendClientMessage(playerid, 0xFF0000AA, "(Error): {FFFFFF}Igrac se nije ulogovao!");
SendClientMessage(params, 0xFF0000AA, "text");
return 1;
}
//Kad uspesno ukuca sifru na login sistemu:
Bit_Let(LoggedIn, playerid);
pre 6 godina
Osamu Dazai wrote on August 20, 2019, 7:22 pm:
@Itz.Yansi42O
COMMAND:msg(playerid, params[])
{
if(sscanf(params, "r", params))
return ...
if(params == INVALID_PLAYER_ID)
return SendClientMessage(playerid, 0xFF0000AA, "(Error): {FFFFFF}Igrac nije konektovan na server!");
if(Bit_Get(LoggedIn, playerid) == false)
return SendClientMessage(playerid, 0xFF0000AA, "(Error): {FFFFFF}Igrac se nije ulogovao!");
SendClientMessage(params, 0xFF0000AA, "text");
return 1;
}
//Kad uspesno ukuca sifru na login sistemu:
Bit_Let(LoggedIn, playerid);Ne koristi y_bit tako da 😄
pre 6 godina
// xunder wrote on August 21, 2019, 12:17 am:
Prednost - memorija
Mana - brzina
Mozda coek ima server od 1k igraca XD
Mana - brzina
Mozda coek ima server od 1k igraca XD
pre 6 godina
002 wrote on August 21, 2019, 12:27 am:
"Brzina nije bitna ako ima memorije tj memorija nije bitna ako ima brzine" - Isaac Newton
%20Gecko%2F20100101%20Firefox%2F68.0&aac=&if=1&uid=1566077669&cid=2&v=421)
S tim da mod ne moze zauzimati vise od 100mb (lele) ja idem na vise mem i vise brzine XD
pre 6 godina
rBits, manje memorija ali su brze obiÄno varijable na primer, ali na primer ne koristiti y_hooks je idiotizam jer je 100% brzi od ALSa
pre 6 godina
// xunder wrote on August 21, 2019, 12:17 am:
Prednost - memorija
Mana - brzina
Mozda coek ima server od 1k igraca XD
Mana - brzina
Mozda coek ima server od 1k igraca XD
@Rade (YSI Hejter), evo primer o nepravilnom korištenju koje dovodi do tvojih rezultata,
znaÄi u 10000 puta obiÄnog bool-a, y_bit možeÅ¡ izvrÅ¡iti po istoj toj brzini za oko malo manje od 1350000 puta.
main()
{
new tick_b_start, tick_b_end, tick_ba_start, tick_ba_end;
tick_b_start = GetTickCount();
for(new k = 0; k < 10000; k++)
{
for(new i = 0; i < MAX_PLAYERS; i++)
just_a_bool = false;
}
tick_b_end = GetTickCount();
tick_ba_start = GetTickCount();
for(new k = 0; k < 10000; k++)
{
Bit_SetAll(just_a_bit, false);
}
tick_ba_end = GetTickCount();
printf("1 executed in %dms", tick_b_end - tick_b_start);
printf("2 executed in %dms", tick_ba_end - tick_ba_start);
}Rezultat ( 2 puta sam pokretao, isto je koji god da se prvi izvrsi ):
1 executed in 948ms
2 executed in 7ms
Sada cu pokazati kako NE TREBA da se koristi YSI paket pa dobijem rezultate kao rade:
main()
{
new tick_b_start, tick_b_end, tick_ba_start, tick_ba_end;
tick_b_start = GetTickCount();
for(new k = 0; k < 10000; k++)
{
for(new i = 0; i < MAX_PLAYERS; i++)
just_a_bool = false;
}
tick_b_end = GetTickCount();
tick_ba_start = GetTickCount();
for(new k = 0; k < 10000; k++)
{
for(new i = 0; i < MAX_PLAYERS; i++)
Bit_Vet(just_a_bit, i);
}
tick_ba_end = GetTickCount();
printf("1 executed in %dms", tick_b_end - tick_b_start);
printf("2 executed in %dms", tick_ba_end - tick_ba_start);
}1 executed in 942ms
2 executed in 1480ms
A sada kako treba...
main()
{
new tick_b_start, tick_b_end, tick_ba_start, tick_ba_end;
tick_b_start = GetTickCount();
for(new k = 0; k < 10000; k++)
{
for(new i = 0; i < MAX_PLAYERS; i++)
just_a_bool = false;
}
tick_b_end = GetTickCount();
tick_ba_start = GetTickCount();
for(new k = 0; k < 10000; k++)
{
foreach(new i : Bits(just_a_bit))
Bit_Vet(just_a_bit, i);
}
tick_ba_end = GetTickCount();
printf("1 executed in %dms", tick_b_end - tick_b_start);
printf("2 executed in %dms", tick_ba_end - tick_ba_start);
}1 executed in 937ms
2 executed in 26ms
Dokaz za ono gore:
main()
{
new tick_b_start, tick_b_end, tick_ba_start, tick_ba_end;
tick_b_start = GetTickCount();
for(new k = 0; k < 10000; k++)
{
for(new i = 0; i < MAX_PLAYERS; i++)
just_a_bool = false;
}
tick_b_end = GetTickCount();
tick_ba_start = GetTickCount();
for(new k = 0; k < 1350000; k++)
{
Bit_SetAll(just_a_bit, false);
}
tick_ba_end = GetTickCount();
printf("1 executed in %dms", tick_b_end - tick_b_start);
printf("2 executed in %dms", tick_ba_end - tick_ba_start);
}1 executed in 945ms
2 executed in 959ms
pre 6 godina
Osamu Dazai wrote on August 21, 2019, 1:00 am:
@Rade (YSI Hejter), evo primer o nepravilnom korištenju koje dovodi do tvojih rezultata,
znaÄi u 10000 puta obiÄnog bool-a, y_bit možeÅ¡ izvrÅ¡iti po istoj toj brzini za oko malo manje od 1350000 puta.
Rezultat ( 2 puta sam pokretao, isto je koji god da se prvi izvrsi ):
1 executed in 948ms
2 executed in 7ms
Sada cu pokazati kako NE TREBA da se koristi YSI paket pa dobijem rezultate kao rade:
1 executed in 942ms
2 executed in 1480ms
A sada kako treba...
1 executed in 937ms
2 executed in 26ms
Dokaz za ono gore:
1 executed in 945ms
2 executed in 959ms
znaÄi u 10000 puta obiÄnog bool-a, y_bit možeÅ¡ izvrÅ¡iti po istoj toj brzini za oko malo manje od 1350000 puta.
main()
{
new tick_b_start, tick_b_end, tick_ba_start, tick_ba_end;
tick_b_start = GetTickCount();
for(new k = 0; k < 10000; k++)
{
for(new i = 0; i < MAX_PLAYERS; i++)
just_a_bool = false;
}
tick_b_end = GetTickCount();
tick_ba_start = GetTickCount();
for(new k = 0; k < 10000; k++)
{
Bit_SetAll(just_a_bit, false);
}
tick_ba_end = GetTickCount();
printf("1 executed in %dms", tick_b_end - tick_b_start);
printf("2 executed in %dms", tick_ba_end - tick_ba_start);
}Rezultat ( 2 puta sam pokretao, isto je koji god da se prvi izvrsi ):
1 executed in 948ms
2 executed in 7ms
Sada cu pokazati kako NE TREBA da se koristi YSI paket pa dobijem rezultate kao rade:
main()
{
new tick_b_start, tick_b_end, tick_ba_start, tick_ba_end;
tick_b_start = GetTickCount();
for(new k = 0; k < 10000; k++)
{
for(new i = 0; i < MAX_PLAYERS; i++)
just_a_bool = false;
}
tick_b_end = GetTickCount();
tick_ba_start = GetTickCount();
for(new k = 0; k < 10000; k++)
{
for(new i = 0; i < MAX_PLAYERS; i++)
Bit_Vet(just_a_bit, i);
}
tick_ba_end = GetTickCount();
printf("1 executed in %dms", tick_b_end - tick_b_start);
printf("2 executed in %dms", tick_ba_end - tick_ba_start);
}1 executed in 942ms
2 executed in 1480ms
A sada kako treba...
main()
{
new tick_b_start, tick_b_end, tick_ba_start, tick_ba_end;
tick_b_start = GetTickCount();
for(new k = 0; k < 10000; k++)
{
for(new i = 0; i < MAX_PLAYERS; i++)
just_a_bool = false;
}
tick_b_end = GetTickCount();
tick_ba_start = GetTickCount();
for(new k = 0; k < 10000; k++)
{
foreach(new i : Bits(just_a_bit))
Bit_Vet(just_a_bit, i);
}
tick_ba_end = GetTickCount();
printf("1 executed in %dms", tick_b_end - tick_b_start);
printf("2 executed in %dms", tick_ba_end - tick_ba_start);
}1 executed in 937ms
2 executed in 26ms
Dokaz za ono gore:
main()
{
new tick_b_start, tick_b_end, tick_ba_start, tick_ba_end;
tick_b_start = GetTickCount();
for(new k = 0; k < 10000; k++)
{
for(new i = 0; i < MAX_PLAYERS; i++)
just_a_bool = false;
}
tick_b_end = GetTickCount();
tick_ba_start = GetTickCount();
for(new k = 0; k < 1350000; k++)
{
Bit_SetAll(just_a_bit, false);
}
tick_ba_end = GetTickCount();
printf("1 executed in %dms", tick_b_end - tick_b_start);
printf("2 executed in %dms", tick_ba_end - tick_ba_start);
}1 executed in 945ms
2 executed in 959ms
Ne znam koliko je tesko primijetiti da ti tu koristis foreach za bitove?
Na to sto si rekao da sam hejter YSI-a cu se samo nasmijat 🙂
pre 6 godina
Pa? Integrated je u sam y_bit, svakako foreach je YSI funkcija, rekli smo cist SAMP PAWN vs YSI primer 😄
Morate biti prijavljeni da biste odgovorili na ovu temu.
Prijava