Uloganigrac

Započeo Carera, Avgust 20, 2019, 16:17:44 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 4 gostiju pregledaju ovu temu.

Zanima me koja je razlika izmedju GetPVarInt UloganIgrac i IsplayerConnected, moze li se uloganigrac provjera izbrisati jer ima ih dosta?

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
My tutorials: y_inline & y_dialog, Ternary Operator, y_flooding, y_bit, samp-logger, Pawn Plus I Deo ( Dynamic Strings ), Map Zones, TextDraw Buttons, y_iterate, easyDialog, samp-plugin-timerfix
My includes: TextDraw Buttons


Respect: Bunta, Vedran, Ivan Bagarić, Itz.Yansi, Rade Ćurić (ni ja ne verujem)
Biggest respect goes to: ADRFranklin


Citat: Vodka PlayObožavam te "skriptere" koji probleme rešavaju tako što menjaju mod svaka 2 dana, tako će sigurno naučiti.
Neko im nacrta u temi Å¡ta treba uraditi, al' ne vredi nisu svi za skriptanje.

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
[pawn]
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[playerid][pAdmin] = 6;
return(true);
}
[/pawn]


[pawn]
CMD:test2(playerid)
{
if(UlogovanIgrac[playerid] == 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[playerid][pAdmin] = 6;
return(true);
}
[/pawn]
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  :P

[pawn]
COMMAND:msg(playerid, params[]) {
    if(sscanf(params, "u", params[0]))
        return ...

    if(!IsPlayerConnected(params[0]))
        return SendClientMessage(playerid, 0xFF0000AA, "(Error): {FFFFFF}Igrac nije konektovan na server!");

    if(playerLogged[params[0]] == false/0)
        return SendClientMessage(playerid, 0xFF0000AA, "(Error): {FFFFFF}Igrac se nije ulogovao!");

    SendClientMessage(params[0], "text");
    return 1;
}

//Kad uspesno ukuca sifru na login sistemu:
playerLogged[playerid] = true/1;

//to je to, playerLogged = Ako je igrac ulogovan, ako je prosao login, IsPlayerConnected = Ako je igrac uopste na serveru..
[/pawn]

@Itz.Yansi42O
[pawn]COMMAND:msg(playerid, params[])
{
    if(sscanf(params, "r", params[0]))
        return ...

    if(params[0] == 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[0], 0xFF0000AA, "text");
    return 1;
}

//Kad uspesno ukuca sifru na login sistemu:
Bit_Let(LoggedIn, playerid);[/pawn]
My tutorials: y_inline & y_dialog, Ternary Operator, y_flooding, y_bit, samp-logger, Pawn Plus I Deo ( Dynamic Strings ), Map Zones, TextDraw Buttons, y_iterate, easyDialog, samp-plugin-timerfix
My includes: TextDraw Buttons


Respect: Bunta, Vedran, Ivan Bagarić, Itz.Yansi, Rade Ćurić (ni ja ne verujem)
Biggest respect goes to: ADRFranklin


Citat: Vodka PlayObožavam te "skriptere" koji probleme rešavaju tako što menjaju mod svaka 2 dana, tako će sigurno naučiti.
Neko im nacrta u temi Å¡ta treba uraditi, al' ne vredi nisu svi za skriptanje.

Citat: Osamu Dazai poslato Avgust 20, 2019, 21:22:12 POSLE PODNE
@Itz.Yansi42O
[pawn]COMMAND:msg(playerid, params[])
{
    if(sscanf(params, "r", params[0]))
        return ...

    if(params[0] == 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[0], 0xFF0000AA, "text");
    return 1;
}

//Kad uspesno ukuca sifru na login sistemu:
Bit_Let(LoggedIn, playerid);[/pawn]
Ne koristi y_bit tako da  :D

Realno mogo bi da pocne xD

Mnogo imaš ti još da jedeš kačamak.
skrr
Moj tutorijali: Bazilion indent warninga
WORK? : Smart Project 1.2 , Leskovacki Detmec, Rodjendanski  server


Penzionisani balkanski samp kripter



Citat: // xunder poslato Avgust 21, 2019, 02:17:39 PRE PODNE
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


Citat: 002 poslato Avgust 21, 2019, 02:27:02 PRE PODNE
"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

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
My tutorials: y_inline & y_dialog, Ternary Operator, y_flooding, y_bit, samp-logger, Pawn Plus I Deo ( Dynamic Strings ), Map Zones, TextDraw Buttons, y_iterate, easyDialog, samp-plugin-timerfix
My includes: TextDraw Buttons


Respect: Bunta, Vedran, Ivan Bagarić, Itz.Yansi, Rade Ćurić (ni ja ne verujem)
Biggest respect goes to: ADRFranklin


Citat: Vodka PlayObožavam te "skriptere" koji probleme rešavaju tako što menjaju mod svaka 2 dana, tako će sigurno naučiti.
Neko im nacrta u temi Å¡ta treba uraditi, al' ne vredi nisu svi za skriptanje.

Citat: // xunder poslato Avgust 21, 2019, 02:17:39 PRE PODNE
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.
[pawn]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);
}[/pawn]
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:

[pawn]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);
}[/pawn]
1 executed in 942ms
2 executed in 1480ms



A sada kako treba...

[pawn]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);
}[/pawn]
1 executed in 937ms
2 executed in 26ms



Dokaz za ono gore:
[pawn]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);
}[/pawn]
1 executed in 945ms
2 executed in 959ms
Poslednja Izmena: Avgust 21, 2019, 03:02:17 PRE PODNE od Osamu Dazai
My tutorials: y_inline & y_dialog, Ternary Operator, y_flooding, y_bit, samp-logger, Pawn Plus I Deo ( Dynamic Strings ), Map Zones, TextDraw Buttons, y_iterate, easyDialog, samp-plugin-timerfix
My includes: TextDraw Buttons


Respect: Bunta, Vedran, Ivan Bagarić, Itz.Yansi, Rade Ćurić (ni ja ne verujem)
Biggest respect goes to: ADRFranklin


Citat: Vodka PlayObožavam te "skriptere" koji probleme rešavaju tako što menjaju mod svaka 2 dana, tako će sigurno naučiti.
Neko im nacrta u temi Å¡ta treba uraditi, al' ne vredi nisu svi za skriptanje.

//wrong tema
My tutorials: y_inline & y_dialog, Ternary Operator, y_flooding, y_bit, samp-logger, Pawn Plus I Deo ( Dynamic Strings ), Map Zones, TextDraw Buttons, y_iterate, easyDialog, samp-plugin-timerfix
My includes: TextDraw Buttons


Respect: Bunta, Vedran, Ivan Bagarić, Itz.Yansi, Rade Ćurić (ni ja ne verujem)
Biggest respect goes to: ADRFranklin


Citat: Vodka PlayObožavam te "skriptere" koji probleme rešavaju tako što menjaju mod svaka 2 dana, tako će sigurno naučiti.
Neko im nacrta u temi Å¡ta treba uraditi, al' ne vredi nisu svi za skriptanje.

Citat: Osamu Dazai poslato Avgust 21, 2019, 03:00:27 PRE PODNE
@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.
[pawn]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);
}[/pawn]
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:

[pawn]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);
}[/pawn]
1 executed in 942ms
2 executed in 1480ms



A sada kako treba...

[pawn]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);
}[/pawn]
1 executed in 937ms
2 executed in 26ms



Dokaz za ono gore:
[pawn]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);
}[/pawn]
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 :)

Pa? Integrated je u sam y_bit, svakako foreach je YSI funkcija, rekli smo cist SAMP PAWN vs YSI primer :D
Poslednja Izmena: Avgust 21, 2019, 13:54:11 POSLE PODNE od Osamu Dazai
My tutorials: y_inline & y_dialog, Ternary Operator, y_flooding, y_bit, samp-logger, Pawn Plus I Deo ( Dynamic Strings ), Map Zones, TextDraw Buttons, y_iterate, easyDialog, samp-plugin-timerfix
My includes: TextDraw Buttons


Respect: Bunta, Vedran, Ivan Bagarić, Itz.Yansi, Rade Ćurić (ni ja ne verujem)
Biggest respect goes to: ADRFranklin


Citat: Vodka PlayObožavam te "skriptere" koji probleme rešavaju tako što menjaju mod svaka 2 dana, tako će sigurno naučiti.
Neko im nacrta u temi Å¡ta treba uraditi, al' ne vredi nisu svi za skriptanje.