Tutorial Komplikationen

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
  • ocmd:kick(playerid,params[])
    {
    new pID,string[128],grund[128];
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,ROT,"Der angegebene Spieler ist nicht connected!");
    if(sscanf(params,"us",pID,grund))return SendClientMessage(playerid,ROT,"Benutzung: /kick [ID] [Grund]");
    if(IstSpielerAdmin(playerid,1))
    {
    format(string,sizeof(string),"[AdmCmd] %s hat %s vom Server gekickt. Grund: %s",SpielerName(pID),SpielerName(playerid),grund); // Müssten die zwei Methoden nicht genau anders herum ? Also zuerst SpielerName(playerid) ?
    SendClientMessageToAll(ROT,string);
    Kick(pID);
    FreezePlayer(pID);
    SpielerSpeichern(playerid); //Wieso speichert man die Stats von dem Spieler ab, welcher den Befehl nuttz ?
    SpielerSpeichern(pID); // Es macht doch gar keinen Sinn die Stats abzuspeichern, wenn der Spieler schon vom Server gekickt wurde ?
    return 1;
    }
    else
    {
    SendClientMessage(playerid,ROT,"Dein Adminlevel ist zu niedrig");
    return 1;
    }

    }


    So habe ich den Befehl aus einem Tutorial raus entwickelt, jedoch finde ich, dass er etwas falsch ist oder nicht ? Ich habe die Stellen welche sich überschneiden mal farbig makiert und eine anmerkunge verfasst


    Danke im Vorraus

    VIVA LA REVOLUCIÓN

  • SpielerSpeichern(playerid); //Wieso speichert man die Stats von dem Spieler ab, welcher den Befehl nuttz ?
    vollkommen richtig, vollkommen unnötig ;)



    SpielerSpeichern(pID); // Es macht doch gar keinen Sinn die Stats abzuspeichern, wenn der Spieler schon vom Server
    Das gehört über Kick(pID)...


    FreezePlayer(pID);
    und das ist unnötig


    So ist es richtig:


    format(string,sizeof(string),"[AdmCmd] %s hat %s vom Server gekickt. Grund: %s",SpielerName(playerid),SpielerName(pID),grund);
    SendClientMessageToAll(ROT,string);
    SpielerSpeichern(pID); //ausser du hast es schon unter OnPlayerDisconnect
    Kick(pID);
    return 1;

  • Das macht keinen Sinn, schreibe das mal so:


    ocmd:kick(playerid,params[])
    {
    new pID,string[128],grund[128];
    if(!IstSpielerAdmin(playerid,1)) return SendClientMessage(playerid,ROT,"Dein Adminlevel ist zu niedrig");
    if(sscanf(params,"us",pID,grund))return SendClientMessage(playerid,ROT,"Benutzung: /kick [ID] [Grund]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,ROT,"Der angegebene Spieler ist nicht connected!");
    format(string,sizeof(string),"[AdmCmd] %s hat %s vom Server gekickt. Grund: %s",SpielerName(pID),SpielerName(playerid),grund); // Müssten die zwei Methoden nicht genau anders herum ? Also zuerst SpielerName(playerid) ?
    SendClientMessageToAll(ROT,string);
    FreezePlayer(pID);
    Kick(pID);
    return 1;
    }


    Ich habe die Save Sachen rausgenommen, da der Spieler eh gespeichert wird, durch den Callback OnPlayerDisconnect ^^


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S