Kétféle képpen is meg lehet oldani.
Az alap helyzet az, hogy van egy bool változód, amibe eltárolsz minden játékost.
A parancs beírásánál ellenõrzöd, hogy az adott player börtönben van-e.
Az ellenõrzés ugye úgy zajla
na le, hogy ahhoz a parancshoz amit nem szeretnéd hogy használhasson börtönben odaírod a feltételt, és ha börtönben van akkor nem enged semmit csinálni.
Nos, ez hosszadalmas, bonyodalmas mûvelet, ezért inkább azt kéne csinálni, hogy egyáltalán semmilyen parancsot ne engedjen használni.
Én ezt ZCMD-re írtam meg, mert sima feldolgozóra logikusabb.
Ehun vane.
Amit tesztelésnek raktam bele azt kiszedheted.
#include <a_samp>
#include <zcmd>
new bool:inJail[MAX_PLAYERS]; // ez fogja tárolni azt, hogy móricka börtönben van-e
public OnPlayerCommandReceived(playerid, cmdtext[]) // Ezt az eljárást a ZCMD plugin adja hozzá.
{
if(inJail[playerid] == true) { // Ha a játékos börtönben van, akkor küldünk neki tájékoztatóüzenetet, valamint visszatérünk nullával.
SendClientMessage(playerid,-1,\"Mivel börtönben vagy, ezért nem használhatsz semmilyen parancsot!\");
return 0;
}
SendClientMessage(playerid,-1,\"Nem vagy börtönben, ezért használhatod a parancsot!\"); // Ezt teszteléshez raktam be
return 1;
}
// Ezeket a sorokat csak teszteléshez raktam be:
public OnPlayerKeyStateChange(playerid,newkeys,oldkeys) {
if(newkeys == KEY_NO) {
inJail[playerid] = (inJail[playerid]) ? (true) : (false);
SendClientMessage(playerid,-1,(inJail[playerid]) ? (\"Börtönben vagy!\") : (\"Kikerültél a börtönbõl!\"));
printf(\"ID %d: %d\",playerid,(inJail[playerid]) ? (1) : (0));
}
return 1;
}