Befehl mit mehreren Funktionen

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
  • Hui,
    in diesem Tutorial zeige ich euch wie man einen Befehl mit mehreren Funktionen macht z.B. /Duty hat dann 2 Funktionen einmal in Duty gehen und dann bei wiederholter Eingabe aus Duty gehen.


    Wie geht das?
    Ist ganz Simpel, mit einer Variabel.


    Zuerst müssen wir eine für alle erstellen, wir nennen sie test



    new test[MAX_PLAYERS]; //MAX_PLAYERS steht für alle Spieler (?)


    Ok, springen wir nun zum Befehl


    Hier ist erstmal ein Beispiel Befehl



    if (strcmp(cmd, "/test", true) ==0 )
    {
    if(test[playerid] == 0) //Wenn die Variable Test auf false/0 ist (0 = false, false = 0)
    {
    SendClientMessageToAll(0xFFFF00AA,"**Test ist jetzt auf true!"); //Sendet eine Nachricht in Gelb an alle
    test[playerid] = 1; //Jetzt ist die Variabel test auf True/1 (1 = true, true = 1)
    return 1;
    }
    else if(test[playerid] == 1) //Wenn er den Befehl eingibt und die Variable diesmal auf True/1 ist weil man den Befehl schonmal eingegeben hat
    {

    SendClientMessageToAll(0xFFFF00AA,"**Test ist jetzt auf false!");//Sendet eine Nachricht in Gelb an alle
    test[playerid] = 0; //die variabel test ist jetzt wieder auf false/0
    }
    return 1; //Der Befehl wurde erfolgreich beendet
    }


    Fertig, sage ich ja recht simpel, weil man die Variabel einfach immer nur umstellen muss


    Jetzt kann man auch viel komplexere Scripte machen


    if (strcmp(cmd, "/adminduty", true) ==0 )
    {
    if(!IsPlayerAdmin(playerid))
    {
    return SendClientMessage(playerid,Rot, "Du bist kein Admin!");
    }
    if(duty[playerid] == 0)
    {
    new name[MAX_PLAYER_NAME];
    new string[100];
    GetPlayerName(playerid,name,sizeof(name));
    format(string, sizeof(string), "**Admin %s ist nun im Dienst", name);
    SendClientMessageToAll(Gelb,string);
    duty[playerid] = 1;
    return 1;


    }
    else if(duty[playerid] == 1)
    {
    new name[MAX_PLAYER_NAME];
    new string[100];
    GetPlayerName(playerid,name,sizeof(name));
    format(string, sizeof(string), "**Admin %s ist nicht mehr im Dienst", name);
    SendClientMessageToAll(Gelb,string);
    duty[playerid] = 0;
    return 1;
    }
    return 1;
    }


    Cool oder?


    Einfach immer die Variabel umstellen ;)


    MfG

    Zitat

    Nimm die Dinge wie sie sind: schlag, wenn du schlagen musst, tritt, wenn du Treten musst
    -Bruce Lee

    Einmal editiert, zuletzt von zombie.modder ()

  • Hui,
    jo seeeehr cool :D


    Also ehm jo wie gesagt is recht simpel aber manche wissen es halt noch nicht^^

    Zitat

    Nimm die Dinge wie sie sind: schlag, wenn du schlagen musst, tritt, wenn du Treten musst
    -Bruce Lee

  • Gutes Tutorial ;)
    So habe ich das auch immer gemacht :)
    Nun habe ich eine Frage:
    Wieviele von diesen:
    new blabla[Max_PLAYERS];
    Kann man erstellen, habe davon jetzt knapp 30, und werde nochmehr brauhcen ;)
    Gibt es da ne Grenze, bis es laggt o.ä.?
    MfG
    Maxx

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Ich weiß det Thread ist schon seeehr alt :D aber trotzdem ma ne Frage^^ undzwar: kann man das auch mit dcmd machen? Ich glaub zwar nich aber vllt gehts ja doch.Freue mich über jede Antwort :D

    MFG MrTadäus

  • Jeahhaaa! danke! hat mir sehr weitergeholfen! ich krieg das langsam mit den scripten hin! :D