Zaključano

Uloganigrac

Započeo Carera
pre 6 godina
2,443
pregleda
26
postova
Ova tema je zaključana. Samo moderatori i administratori mogu odgovarati.
AdmirTM
Enforcer
pre 6 godina
Zanima me koja je razlika izmedju GetPVarInt UloganIgrac i IsplayerConnected, moze li se uloganigrac provjera izbrisati jer ima ih dosta?
VinlandRP
Made Man
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
Exnas.pwn
Godfather
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

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  😛
ᗪ乇Ҝ丂卂
Underboss
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..
VinlandRP
Made Man
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);
ᗪ乇Ҝ丂卂
Underboss
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  😄
Nikola-.-
Kingpin
pre 6 godina
Realno mogo bi da pocne xD
Rax_King
Godfather
pre 6 godina
ʙᴜɴᴛᴀ ꜰᴜᴊɪᴡᴀʀᴀ wrote on August 20, 2019, 8:07 pm:
Realno mogo bi da pocne xD


Prednost - memorija
Mana - brzina

Mozda coek ima server od 1k igraca XD
Exnas.pwn
Godfather
pre 6 godina
// xunder wrote on August 21, 2019, 12:17 am:
Prednost - memorija
Mana - brzina

Mozda coek ima server od 1k igraca XD
"Brzina nije bitna ako ima memorije tj memorija nije bitna ako ima brzine" - Isaac Newton

Rax_King
Godfather
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



S tim da mod ne moze zauzimati vise od 100mb (lele) ja idem na vise mem i vise brzine XD
VinlandRP
Made Man
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
VinlandRP
Made Man
pre 6 godina
// xunder wrote on August 21, 2019, 12:17 am:
Prednost - memorija
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
VinlandRP
Made Man
pre 6 godina
//wrong tema
Rax_King
Godfather
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.
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 🙂
VinlandRP
Made Man
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