Befehl soll erst funktionieren wenn anderes Befehl eingegeben wurde

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
  • Moin,


    Also würde ich gerne wissen wie folgendes funktioniert,


    Es gibt Befehl A , und Befehl B


    Befehl B kann nur Funktioniert werden WENN Befehl A eingegeben wurde, dann ist es ERST möglich Befehl B zu verwenden..wie geht das?


    Danke für eure Hilfe


    Rapfabrik

    < Beatboxen ist leicht > Beatboxen & Singen/Rappen ist schwerer >

  • if (strcmp("/befehlA", cmdtext, true) == 0)
    {
    Spieler[playerid][befehlA] = 1;
    return 1;
    }
    if (strcmp("/befehlB", cmdtext, true) == 0)
    {
    if(Spieler[playerid][befehlA] == 1)
    {
    //Das was passieren soll
    Spieler[playerid][befehlA] = 0;
    return 1;
    }
    else
    {
    SendClientMessage(playerid,0xFFFFFFFF,"Du hast Befehl A noch nicht ausgeführt.");
    }
    return 0;
    }


    ungetestet!!!

    Einmal editiert, zuletzt von Virus ()

  • Ungefähr so:
    new AIsAktiviert;


    if (strcmp("/aktivierung", cmd, true, 11) == 0)
    {
    AIsAktiviert = 1;
    return 1;
    }


    if (strcmp("/b", cmd, true, 1) == 0)
    {
    if(AIsAktiviert)
    {
    SendClientMessage(playerid, COLOR_GREY, "Ich geh jetzt schlafen xD, also das mein ich jetzt auch ernst, bin voll müde.");
    return 1;
    }
    else
    {
    SendClientMessage(playerid,COLOR_GREY,"Es muss zuerst aktiviert sein.");
    }
    return 1;
    }


    Und um wieder zu deaktivieren einfach


    if (strcmp("/deaktivierung", cmd, true, 11) == 0)
    {
    AIsAktiviert = 0;
    return 1;
    }
    Naja bin derbe müde ich hoff es geht, ansonsten morgen oder andere verbessern es..
    Bin off...
    Mfg

  • und dann würde man /b immer wieder ausführen können^^ solange bis man es deaktiviert aber ich weiß ja net wie der threadersteller sich das vorgestellt hat^^

  • Spieler[playerid][befehlA] = 1;


    Spieler = wie genau soll ich das Definieren? Ich habe schon new PlayerInfo[MAX_PLAYERS][pInfo]; brauch ich das?


    befehlA = Muss ich einfach denn befehl rein schreiben? Also bei PlayerInfo definieren und dann oder?


    Danke

    < Beatboxen ist leicht > Beatboxen & Singen/Rappen ist schwerer >

  • 1. mach am besten nen Bool "new bool:AisActive"
    Warum? Spart recourcen da er nur 1 oder 0 ( 1= True ; 0=false) returnen kann und nicht wie oben "new AisActive" halt auch 1000000000 oder so dadurch sparse recourcen!

    GreetZ

    Zitat

    Joda21:47
    Joda = mein spritzname
    xD


    Ice21:47
    zeig mir dein lichtschwert !


    Joda21:47 spitzname* xDD

    Ich bin ein Vogel (Joda)


  • Ja theoretisch ist es mit nem bool besser doch er hat gefragt wie er das mit PlayerInfo verwendet und ich hab die Antwort gegeben


    Außerdem verliert man bei vielen Variablen schneller den überblick als mit einer Variable+enum

  • Ich habe jetzt einfach in meiner enum folgendes eingefügt zu die anderen,


    pBefehlA


    Dann habe ich


    (PlayerInfo[playerid][pWaterworld] == 1)


    Eingefügt und es funzt 1A !!!


    Ist das gut so oder gibt es eine besser bzw. Server schonende methode?


    danke

    < Beatboxen ist leicht > Beatboxen & Singen/Rappen ist schwerer >

  • Verstehe ich nicht..


    Also BefehlA ist pWaterworld xDDD


    Noch ne kleine Frage.. wie kann ich es machen das wenn man den Befehl eingibt das es erst in 10 Sekunden wirkbar wird.


    Danke

    < Beatboxen ist leicht > Beatboxen & Singen/Rappen ist schwerer >


  • Du erstellst einen Timer den du in den Befehl einfügst:
    oder direkt per public des Timers:


    forward Brotfish(playerid);


    public Brotfish(playerid)
    {
    //Das was passieren soll, bsp:
    SetPlayer(playerid, x,y,z);
    return 1;
    }

  • /*** dein befehl

    SetTimerEx("Brotfish",10000,false,"i",playerid);


    irgendwo

    forward Brotfish(playerid);
    public Brotfish(playerid)
    {


    return true;
    }



    //Schnacke bei deins würde nun ne schleife fehlen so gehts nur für playerid 0 da wird meins eher funktionieren

    RFT