Beim Jail kein Command nutzbar geht das

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo User,
    Also ich hab ein /jail befehl gescript und ich will das wenn jemand in jail ist kein command nutzen kann auser /o oder so geht das?


    Mein /jail befehl:



    if(strcmp(cmd, "/jail", true) == 0)
    {
    if (AccountInfo[playerid][AdminLevel] >= 1 || IsPlayerAdmin(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, ORANGE, "Benutze: /jail [playerid] [Grund]");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    if(IsPlayerConnected(giveplayerid))
    {
    if(giveplayerid != INVALID_PLAYER_ID)
    {
    if(AccountInfo[giveplayerid][Jail] == 0)
    {
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, player, sizeof(player));
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new reason[256];
    while ((idx < length) && ((idx - offset) < (sizeof(reason) - 1)))
    {
    reason[idx - offset] = cmdtext[idx];
    idx++;
    }
    reason[idx - offset] = EOS;
    if(!strlen(reason))
    {
    SendClientMessage(playerid, ORANGE, "Benutze: /jail [playerid] [Grund]");
    return 1;
    }
    format(string, sizeof(string), "Du wurdest von Admin %s. eingespert Grund: %s", player, reason);
    SendClientMessage(giveplayerid, ADMIN_RED, string);
    format(string, sizeof(string), "-| Admin %s hat %s. eingespert [ Reason: %s ] |-",player ,giveplayer, reason);
    SendClientMessageToAll(ADMIN_RED,string);
    OnPlayerJailed(giveplayerid);
    return 1;
    }
    else
    {
    SendClientMessage(playerid, RED, "Player ist bereits eingespert!");
    }
    }
    else
    {
    format(string, sizeof(string), "%d ist kein Aktive Spieler.", giveplayerid);
    SendClientMessage(playerid, RED, string);
    }
    }
    else
    {
    format(string, sizeof(string), "%d ist keine aktive Spieler.", giveplayerid);
    SendClientMessage(playerid, RED, string);
    }
    }
    else
    {
    format(string, sizeof(string), "Sie sind kein Admin!");
    SendClientMessage(playerid, RED, string);
    }
    return 1;
    }

  • NEIN
    Unter OnPlayerJailed(giveplayerid);



    Als allererstes definierst du oben im Script eine neue Variable. Unter OnPlayerJailed(giveplayerid); Setzt du diese auf 1 und zwar nur beim spieler ([giveplayerid]) und bei jedem Befehl fragst du mit einer if Abfrage ab ob die Var 1 ist. Wenn ja returnst du irgendwas (Text bzw garnichts).

  • Iwo ins Script bzw oben:


    new nocmd[264];


    Dann unter OnPlayerJailed(giveplayerid) bei /jail:


    nocmd = 1;



    Dann bei jedem einzelnen Befehl der nicht gehen soll einfach unter das {


    if(nocmd == 1)
    {
    SendClientMessage(playerid,Farbe,"Du bist im Jail und kannst keine Befehle benutzen");
    }



    MfG

  • The_Cop: Deine Lösung würde nicht funktionieren. nocmd ist bei dir ein Array wird aber als normale Variable verwendet... Außerdem würde dann niemand einen Befehl verwenden können wenn irgendein Spieler ins Gefängnis kommt.
    Ich würds einfach so machen:
    //bei OnPlayerJailed:
    SetPVarInt(playerid,"in_jail",1);
    dann bei jedem Befehl:
    if(GetPVarInt(playerid,"in_jail") ==1)return SendClientMessage(playerid,rot,"Du bist im Gefängnis und kannst diesen Befehl nicht verwenden!");

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen