/kick System (Scriptversion: dcmd + sscanf)

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,
    ich wollte nun auch endlich mal was auf Breadfish starten, und dachte mir das ich einfach mal nen kleines Tutorial machen werden.
    Mein Tutorial beinhaltet das Thema wie man ein funktionstüchtiges (/kick) System erstellen kann. Ich werde es mit der Script Version
    DCMD und SSCANF vor Scripten.


    Es ist nichts großes, aber sollte für Anfänger eigentlich ganz nützlich sein.


    Okay, fangen wir an.


    __________________________________________________________________________________________________________________________________________________________


    Den Befehl scripten wir wie gewohnt unter
    public OnPlayerCommandText(playerid, cmdtext[])


    Als aller erstes erstellen wir den Befehl.
    Man schreibt den Befehl so aufgebaut direkt unter OnPlayerCommandtext. So sieht er aus: dcmd(BEFEHL,BUCHSTABEN ANZAHL,cmdtext);. Direkt darunter setzten wir return 0;


    Ist dies erfolt sollte es bei OnPlayerCommandtext so aussehen:
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    dcmd(kick,4,cmdtext);
    return 0;
    }


    WICHTIG: Ihr müsst die richtige Buchstaben Anzahl angeben. Ist diese Falsch, wird der Server den Befehl nicht erkennen und würde euch sagen, dass es diesen Befehl nicht gibt.
    Ich sage es noch einmal. Die Zeile ist so aufgebaut: dcmd(ANAHL, BUCHSTABENANZAHL,cmdtext);


    _______________________________________________________________________________________________________________________________________________________


    Nun scripten wir den Befehl.Alle Informationen stehen rechts neben jeder gescripteten Zeile:


    Als erstes: So sollte der Befehl ohne meine Grünen Informationen aussehen.


    dcmd_kick(playerid,params[]) // Erstellt den Befehl
    {
    new pID; // Erstellt die ID des anderen Spieler (des Spielers der gekickt werden soll.)
    new string[128]; // string sollte eigentlich klar sein. 128 ist die länge des Strings.
    new grund[128]; // DAs ist die Variabel des Grundes (Im Befehl muss man /kick [playerid] und den [Grund] eingeben.
    new spieler[MAX_PLAYER_NAME], spieler2[MAX_PLAYER_NAME]; // Gehört zur erstellung der IDs von uns und des anderen Spielers. (spieler sind wir, spieler 2 der andere spieler)


    if(Spieler[playerid][Adminlevel] >= 3) // Wenn der Spieler admin rank 3 ist oder einen höheren besitzt. alles dadrunter kann den befehl nicht ausführen.
    {
    if(sscanf(params,"us",pID,grund)) // was soll alles geschehen ?? (einmal soll die id des Spielers angegeben werden und danach der Grund.. "u = ID, s = grund"
    return SendClientMessage(playerid,weiß,"Verwendung: /kick [playerid] [Grund]"); // siehe eine Zeile oben
    if(!IsPlayerConnected(pID)) { return SendClientMessage(playerid,weiß,"Der Spieler ist offline"); } // Wenn der angegebene Spieler nicht da ist.
    GetPlayerName(playerid,spieler,sizeof spieler);//erstellt unsere ID und dient dazu damit später unser name in der nachricht angezeigt werden kann
    GetPlayerName(pID,spieler2,sizeof spieler2); // erstellt die ID des gekickten spielers. pID = spieler2. Dient auch für die spätere Nachricht
    format(string,sizeof string,"AdmCmd: %s wurde von %s gekickt. Grund: %s.",spieler2,spieler,grund); // ist die nachricht und sollte eigentlich klar sein,
    SendClientMessageToAll(adminrot,string); // diese nachricht wird dem Server angezeigt. bei %s werden die Ids angezeigt und der angegebene Grund.
    format(string,sizeof string,"AdmCmd: Du wurdest von %s gekickt. Grund: %s.",spieler,grund); // diese nachricht wird dem gekickten spieler vor dem kick mit
    SendClientMessage(pID,adminrot,string); // kick (pID) angezeigt.
    Kick(pID); // kickt den spieler im anschluss
    }
    return 1;
    }


    _______________________________________________________________________________________________________________________________________________________


    Bitte Bewerten und Kommentieren. Ich würde gerne eure Meinungen über dieses Tutorial wissen !! :)
    Feedback erlaubt :)


    MFG

    | Green Day - Nickelback - Rise Against - 3 Doors Down | \m/

  • Wenn man das Sccanf Plugin verwendet kommt es zu Warnings. Der String Platzhalter wurde im Sccanf Plugin verändert man muss also s[String Länge] benutzen.


    Viele Grüße
    Nms