Szerző Téma: Gps munkaközben  (Megtekintve 882 alkalommal)

Gps munkaközben
« Dátum: 2013. december 12. - 22:34:17 »
0 Show voters
Sziasztok!
Az lenne a kérdésem hogyan lehetne megvalositani azt hogy ha dolgozik egy player akkor ne tudja hasznalni a /gps parancsot?(CP-s munkarol van szó)

Nem elérhető Elen

  • 222
  • Elen
    • Profil megtekintése
Gps munkaközben
« Válasz #1 Dátum: 2013. december 13. - 13:55:06 »
0 Show voters
így:
Mód elejére a többi változó közé/alá
 
new dolgozik[MAX_PLAYERS];

 
Aztán amikor elkezdi a munkát pl: /Munkakezd vagy /utattisztit
Írd bele a parancsba ezt:
 
dolgozik[playerid]=1;

 
Aztán amikor abbahagyja a munkát pl: /Munkaabbahagy
 
dolgozik[playerid]=0;

 
OnPlayerDisconnect részhez írd be ezt:
 
dolgozik[playerid]=0;

 
És amikor a gps-t használná pl:/gps bekapcsol
 
if(dolgozik[playerid]==1)return SendClientmessage(playerid,-1,\"Munka közben nem használhatod a gps-t\");

 
Ennyi lenne :)

Nem elérhető Szasza

  • 388
    • Profil megtekintése
Gps munkaközben
« Válasz #2 Dátum: 2013. december 13. - 22:07:14 »
0 Show voters

így:
Mód elejére a többi változó közé/alá
 
new dolgozik[MAX_PLAYERS];

 
Aztán amikor elkezdi a munkát pl: /Munkakezd vagy /utattisztit
Írd bele a parancsba ezt:
 
dolgozik[playerid]=1;

 
Aztán amikor abbahagyja a munkát pl: /Munkaabbahagy
 
dolgozik[playerid]=0;

 
OnPlayerDisconnect részhez írd be ezt:
 
dolgozik[playerid]=0;

 
És amikor a gps-t használná pl:/gps bekapcsol
 
if(dolgozik[playerid]==1)return SendClientmessage(playerid,-1,\"Munka közben nem használhatod a gps-t\");

 
Ennyi lenne :)
 
[/quote]
Miért foglalnál ennyi helyet a rendszerbõl?
Erre elég a bool változó is
 
new bool:dolgozik[MAX_PLAYERS];

 

dolgozik[playerid]=true;

 

dolgozik[playerid]=false;

Nem elérhető SnooP

  • 1798
  • SnooP
    • Profil megtekintése
Gps munkaközben
« Válasz #3 Dátum: 2013. december 13. - 22:28:56 »
0 Show voters
És a megoldás úgy lenne a legszebb és legtakarékosabb memóriában, ha a boolen változót átalakítanád bitmûvelettel integer változóba, hogy miért?
Integer változó - 32  igaz/hamis érték tárolására képes, 32 bit azaz 4 bájtot foglal le
Boolean változó - 1 igaz / hamis érték tárolására képes, 8 bit, azaz 1 bájtot foglal le
Ha 4 boolean változó kirak egy integer változót ami 32 értéket képes kezelni, míg a boolen csak négyet beláthatjuk, hogy elég memóriapazarló dolog. :)
Bitmûvelettel viszont megoldhatjuk, hogy ne foglaljon el ennyit és sokkal gyorsabb és spórosabb megoldás. (lásd 32 boolen esetén 31 kilobyte, 1 integer amiben ugyan úgy 32 érték fér csak 3,9 kilobyte)
Az adatok kiolvasására:
 

stock GetData(integer, bit)
{
   return integer >> bit & 1;
}

 
Az adat írására:
 

stock SetData(&integer, bit, value)
{
   integer |= value << bit;
   return 1;
}

 
A függvényeket  Anthony írta meg, a bitekrõl itt lehet még olvasni : http://sampforum.hu/index.php?topic=29621.0

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal