/kick befehl(name anzeigen)

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.
    Unzwar habe ich einen /kick befehl allerdings möchte ich das angezeigt wird:


    Niko1561 wurde von Admin "hier der name des admins" gekick.


    das niko1561 hab ich aber das da auch noch der name steht von wem er gekickt wurde kann mir das jemand machen? hier mien aktueller code :d



    if(strcmp(cmdtext,"/Kick",true)==0)


    {
    new Spielerdatei[64],playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid, playername, MAX_PLAYER_NAME);
    format(Spielerdatei,sizeof(Spielerdatei),"%s wurde von %d gekickt.",playername);
    SendClientMessageToAll(GELB,Spielerdatei);


    SendClientMessage(playerid,ROT,"Du wurdest gekickt!");
    Kick(playerid);
    return 1;
    }


    danke im vorraus


    mfg. Niko

  • if(strcmp(cmdtext,"/Kick",true)==0)


    {
    new sendername[MAX_PLAYER_NAME];
    new Spielerdatei[64],playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid, playername, MAX_PLAYER_NAME);
    GetPlayerName(playerid, sendername, sizeof(sendername));
    format(Spielerdatei,sizeof(Spielerdatei),"%s wurde von %d gekickt.",playername, sendername);
    SendClientMessageToAll(GELB,Spielerdatei);


    SendClientMessage(playerid,ROT,"Du wurdest gekickt!");
    Kick(playerid);
    return 1;
    }


    Edit

  • hier ist der fehler:
    format(Spielerdatei,sizeof(Spielerdatei),"%s wurde von %d gekickt.",playername, sendername);


    so ist es richtig:


    format(Spielerdatei,sizeof(Spielerdatei),"%s wurde von %s gekickt.",playername, sendername);


    %d ist eine zahl der name ist jedoch ein string also auch hier %s

  • Ja da bin ich grad bei ;) Liam sowas zu lernen :p fang auch grad erst an deswegen und das kann ich noch nicht ^^



    @ thommy
    hab ich auch schon versucht aber das problem ist, dass das feld dann einfach freigealssen wird wo eig der 2. name stehen sollte...

  • Man kann ihn dann auch z.B so gestalten, wie meiner:


    dcmd_kick(playerid,params[])
    {
    new pID; //die pID bzw die ID der Person die gekickt werden soll
    new sGrund[50]; // ein String, der ermöglicht, den Grund zu senden nachher

    if(sscanf(params, "dz",pID,sGrund))
    {
    return SendClientMessage(playerid,Blau,"Benutze: /kick [ID] [Grund](muss nicht angegeben werden)"); //Wie man den Befehl benutzen muss
    }
    if(!IsPlayerConnected(pID))
    {
    return SendClientMessage(playerid,KRot,"Kein Spieler mit angegebener ID Online"); //Wenn pID, also die Person die Gekickt werden soll nicht vergeben ist bzw nicht online
    }
    if(pInfo[playerid][padminlevel]>=2) //Abfrage des Adminlevels von playerid(also dem ausführenden
    {
    new
    ThePlayer[MAX_PLAYER_NAME],//Name von pID
    string[128];//weiterer String
    GetPlayerName(pID,ThePlayer,sizeof(ThePlayer));
    format(string,sizeof(string),"%s (ID %d) wurde vom Server gekickt,Grund: %s",ThePlayer,pID,sGrund[0] ? sGrund : "<Kein Grund>");//hier wird die Message erstellt, die versendet wird, mit Namen des Admins, dem Kick Opfer und dem Grund, wenn kein Grund angegeben ist, kommt [Kein Grund]
    SendClientMessageToAll(KRot,string);//Hiermit wird der String von einer Zeile weiter oben versendet, an alle Player auf dem Server
    Kick(pID);
    }
    else
    {
    SendClientMessage(playerid,Rot,"Du bist kein Mod/Admin");//Message an playerid, wenn er kein Admin lvl 2 ist
    }
    return 1;
    }


    Der tut, wurde mehrfach getestet, und ich bin einfach zufrieden damit ^^


    //edit: n par Kommentare hinzu gefügt, ich weiß ich bin kein Held im erklären von dingen, aber ich hofe, es macht es ein wenig verständlicher ^^

    Einmal editiert, zuletzt von Thommylee ()

  • Wenn ich Selfmade's machen würde, könnte ich dir sagen wie du deinen /Kickbefehl machen könntest.
    Da ich aber mit einem komplett ungescripteten Godfather arbeite, ist das etwas schwer. ;)


    Wenn du aber willst, kann ich dir meinen Kick Befehl einfügen.
    Dann kannste wenigstens, deine Sachen bearbeiten.
    Farben, und sowas.


    if(strcmp(cmd, "/kick", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /kick [playerid/PartOfName] [reason]");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    if (PlayerInfo[playerid][pAdmin] >= 2)
    {
    if(IsPlayerConnected(giveplayerid))
    {
    if(giveplayerid != INVALID_PLAYER_ID)
    {
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[64];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /kick [playerid/PartOfName] [reason]");
    return 1;
    }
    new year, month,day;
    getdate(year, month, day);
    format(string, sizeof(string), "AdminCmd: %s wurde von %s gekickt. Grund: %s (%d-%d-%d)", giveplayer, sendername, (result),month,day,year);
    KickLog(string);
    format(string, sizeof(string), "AdminCmd: %s wurde von %s gekickt. Grund: %s", giveplayer, sendername, (result));
    SendClientMessageToAll(COLOR_LIGHTRED, string);
    Kick(giveplayerid);
    return 1;
    }
    }
    }
    else
    {
    format(string, sizeof(string), " %d ist kein Aktiver Spieler.", giveplayerid);
    SendClientMessage(playerid, COLOR_GRAD1, string);
    }
    }
    return 1;
    }