Amirõl zsoleszka beszél az az, hogy hatékonyabb, ha bináris adatokkal dolgozol.
Tegyük fel, van 5 munka a szervereden. Simán használhatsz egy: 
new OnDuty[MAX_PLAYERS];
 tömböt is, és az egyes munkábaállásokat, mint a számon belüli bitekként kezelheted.
Öt munkánál, ha mind az ötben szolgálatban áll, a szám így nézne ki: 
new OnDuty[playerid] = 0b11111;
 Ha csak az elsõben, akkor: 
new OnDuty[playerid] = 0b00001;
 Számokban biteket a következõ függvénnyel kérdezhetsz le, illetve módosíthatsz: 
bit_leker(szam,hanyadik)
{
//megcsináljuk a maszkot
new constant = 1 << (hanyadik-1);
//ha 1, terjunk vissza 1-el
if( szam & constant ){
  return 1;
}
//egyebkent nullaval
return 0;
}
bit_allit(szam,hanyadik,bool:beki=true)
{
if(beki)   return szam | (1 << (hanyadik-1));
   return szam & (~(1 << (hanyadik-1)));
}
 Az elsõ függvény az adott szám n. bitjével tér vissza, míg a második az n. bitet kapcsolja ki vagy be (a bool változónak megfelelõen. ha igaz, akkor be, ha hamis, akkor ki, alapértelmezésként mindig bekapcsolja).
Innen egyszerû az egész: 
//1. munka: szerelõ
//2. munka: autókereskedõ
//3. munka: rendõr
new OnDuty[MAX_PLAYERS];
 Ha autókereskedõ dutyba áll: 
OnDuty[playerid] = bit_allit(OnDuty[playerid],2);
 Ha ez mellé rendõr is lesz: 
OnDuty[playerid] = bit_allit(OnDuty[playerid],3);
 Ezek után ha le akarod kérdezni, hogy szerelõdutyba van-e: 
bit_leker(OnDuty[playerid],1);
 Ha OffDuty-ba lép akkor ismét lefuttatod a bit_állítot, csak a beki paraméter legyen false.
Hogy miért van ez így, azt itt nem magyarázom el, Anthonynak van róla egy tutja, ha érdekel.