Abfrage Command

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 Leute,
    wie mache ich eine abfrage ob ein player zuvor einen Command eingegeben hat?


    beispiel
    AFK system


    Ein player muss bevor er /back eingibt /afk eingeben
    wenn er dennoch /back eingibt sollte dies nicht funktionieren aber wie frage ich die im script ab ob er vorher /afk eingegeben hat?


  • //oben
    new bool:IsAFK[MAX_PLAYERS];


    //command "/afk"
    if(IsAFK[playerid])
    {
    return SendClientMessage(playerid, COLOR, "Du bist bereits AFK!");
    }
    //...
    IsAFK[playerid]=true;
    //
    //command "/back"
    if(!IsAFK[playerid])
    {
    return SendClientMessage(playerid, COLOR, "Du musst AFK sein, um das zu machen!");
    }
    //...
    IsAFK[playerid]=false;


    allgemein immer bool-variablen für jeden spieler (arrays) erstellen und bei bestimmten bedingungen auf true/false setzen, und dann halt abfragen.

    Keine Scripting-Fragen per PM!


  • if(!strcmp(cmd, "/afk"))
    {
    if(GetPVarInt(playerid, "afk") == 0)
    {
    SetPVarInt(playerid, "afk", 1);
    return 1;
    }
    else
    {
    SendClientMessage(playerid,0xFF0000FF,"Du bist bereits afk!");
    SendClientMessage(playerid,0xFF0000FF,"Um den afk Modus zu verlassen, benutze /back.");
    return 1;
    }
    }


    if(!strcmp(cmd, "/back"))
    {
    if(GetPVarInt(playerid, "afk") == 1)
    {
    SetPVarInt(playerid, "afk", 0);
    return 1;
    }
    else
    {
    SendClientMessage(playerid,0xFF0000FF,"Du hast den afk Modus verlassen");
    return 1;
    }
    }



    Müsste so gehen :?



    MfG Butchey


    //edit: Crank war schneller :rolleyes:

  • ne ich glaub es hat sich schon erledigt, wenn nicht dann poste ich den mal
    hatte das 2 mal eingefügt ich dussel xD



    if(strcmp(cmdtext,"/afk",true)==0)
    {
    new Spielerdatei[64],playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid, playername, MAX_PLAYER_NAME);
    format(Spielerdatei,sizeof(Spielerdatei),"%s ist AFK gegangen!",playername);
    SendClientMessageToAll(GELB,Spielerdatei);
    TogglePlayerControllable(playerid,0);
    return 1;
    }
    if(IsAFK[playerid])
    {
    return SendClientMessage(playerid,GELB,"Du bist bereits AFK.");
    }

    IsAFK[playerid]=true;
    if(strcmp(cmdtext,"/back",true)==0)
    {
    new Spielerdatei[64],playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,MAX_PLAYER_NAME);
    format(Spielerdatei,sizeof(Spielerdatei),"%s ist vom AFK zurück!",playername);
    SendClientMessageToAll(GELB,Spielerdatei);
    TogglePlayerControllable(playerid,1);
    }
    if(!IsAFK[playerid])
    {
    return SendClientMessage(playerid, ROT,"Du musst AFK sein um das zu machen.");
    }
    IsAFK[playerid]=false;


    is jetzt eig fertig blos buggy kann mir jemand helfen?


    //edit: code zugefügt


    //edit 2: //edits hinzugefügt xD


    //edit 3: richtiger code drin


    //edit 4: kann mir kiener helfen?

    3 Mal editiert, zuletzt von Niko1561 ()

  • if(strcmp(cmdtext,"/afk",true)==0)
    {
    if(GetPVarInt(playerid,"AFK")==1) return SendClientMessage(playerid,COLOR,"DU bist bereits afk");
    SetPVarInt(playerid,"AFK",1);
    //Hier halt der rest den du willst
    }


    if(strcmp(cmdtext,"/back",true)==0)
    {
    if(GetPVarInt(playerid,"AFK")==0) return SendClientMessage(playerid,COLOR,"Du bist nicht afk");
    SetPVarInt(playerid,"AFK",0);
    //hier auch der rest den du willst


    }

  • machs doch einfach so:
    new AFK[MAX_PLAYERS];


    Bei afk einfach
    if(AFK[playerid] != 0) return SendClientMessage(playerid, farbe, "Du bist bereits AFK, Tippe /back!");


    bei back genau so nur:
    if(AFK[playerid] != 1) return SendClientMessage(playerid, farbe, "Du bist bereits zurück vom AFK, Tippe /afk!");


    :9
    //Edit:
    Ups, Vergessen:


    Bei /AFk
    AFK[playerid] = 1;
    und bei /back AFK[playerid] = 0;

    Einmal editiert, zuletzt von .Art. ()