3 megoldás ajánlott:
az egyikek leírta cappsy amikor eltárolod 1 változóban hogy bent van a dm-ben...de ezt kifejtem bõvebben és magyarázom is mindjárt...de kezdjük a másik kettõvel mert azok rövidebbek
1. megoldás:
http://wiki.sa-mp.com/wiki/GetPlayerInterior if(GetPlayerInterior(playerid) != 0) { return 1; }
HA a játékos interiorja NEM 0 akkor nem fut le az alatta levõ kód !
Ennél csak annyi a gond hogy pl van a bank interior ami 0-s int-en van és ott már tudja használni...
2. megoldás:
http://wiki.sa-mp.com/wiki/IsPlayerInRangeOfPointEz arra jó ha bizonyos távolságnál messzebb van a játékos egy megadott ponttól akkor hamis értékkel tér vissza...
if(!IsPlayerInRangeOfPoint(playerid,100.0,X,Y,Z) { return 1; }
HA a játékos X Y Z pozíciótól 100 méternél messzebb van nem tudja használni a parancsot ! Ez zónához kötött parancs ha kiveszed a !-et akkor fordított szóval a zónában nem tudja majd használni...
3. megoldás V1:
Egy változóban eltárolod hogy a játékos bent van e a DM zónában:
Tömb amiben tárolod a játékosok adatait:
new bool:dm[MAX_PLAYERS];
DM-be csatlakozásnál / DM elhagyásnál érték változtatás:
dm[playerid] = true;
dm[playerid] = false;
Amikor fellép/lelép törlöd a játékos adatot ! ( elég 1x törölni ! )
dm[playerid] = false;
Ellenõrzés, hogy a zónában van e, ha nincs a zónában ne fusson tovább a parancs:
if(!dm[playerid]) { return 1; }
Ez 1 zónára vonatkozik ha több zónád van akkor nem ajánlott több változót használni mert az kicsit megdobná a forráskód méretét és minden feltétel ellenõrzésnél többször kell ellenõriznie szóval még kicsit lassabb is lesz a kód...
Több zóna esetén:
3. megoldás V2:
Létrehozol 1 tömböt amiben tárolod a játékos zóna ID-ját...
new zone[MAX_PLAYERS];
Ajánlott a zóna ID-kat konstans-al használni hogy egyszerûsítsd a dolgod...
#define ZONE_NONE
#define ZONE_DM1
#define ZONE_DM2
#define ZONE_DERBY
#define ZONE_RACE
Zóna értékét változtatod minden zóna belépésnél / kilépésnél...
zone[playerid] = ZONE_NONE;
zone[playerid] = ZONE_DM1;
Amikor elhagyja a játékos a szervert akkor ZONE_NONE-ra állítod !
Feltétel:
if(zone[playerid] == ZONE_DM1)
if(zone[playerid] == ZONE_DERBY || zone[playerid] == ZONE_RACE)
És ha akarod nem csak pozíciót hanem Virtuális Világot állítasz be egyes zónákhoz és akár ezt is használhatod Zóna azonosításnak csak akkor figyelj milyen scripteket alkalmazol a módod mellett !
http://wiki.sa-mp.com/wiki/SetPlayerVirtualWorldhttp://wiki.sa-mp.com/wiki/GetPlayerVirtualWorld