Hilfe bei dem /kick Befehl

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


    ich habe vor kurzem mit Scripten angefangen und wollte jetzt mit dcmd einen Kick Befehl erstellt.
    Ich habe mir bei Youtube dazu ein Tuturial angeguckt, wobei ich alles in dcmd umschreiben musste.


    wenn ich jetzt jedoch InGame /kick eingebe ( /kick [ID] [GRUND]) erscheint folgendes:



    So, das Problem ist denke ich mal für jeden Sichtbar.
    1. Wird die gekickt Person nicht angezeigt und 2. wird man nicht gekickt, sondern nur diese Meldung erscheint.



    Mein dcmd Befehl sieht so aus:


    dcmd(kick,4,cmdtext);//Kick Befehl


    dcmd_kick(playerid,params[])
    {
    new pID, reason[128],string[128];
    new Opfer[MAX_PLAYER_NAME];
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,COLOUR_ROT,"/kick [ID] [Grund]");
    GetPlayerName(pID,Opfer,sizeof(Opfer));
    format(string,sizeof(string),"AdmCmd: %s wurde von %s gekickt. Grund: %s",Opfer,Spielername(playerid),reason);
    SendClientMessageToAll(COLOUR_ROT,string);
    Kick(pID);
    return 1;
    }


    Habe auch schon einige Freunde gefragt, doch die konnten mir nicht weiter Helfen.


    Wo liegt mein Fehler ?


    MfG,
    Boogie-Woogie

  • Hier mal mein /kick Befehl, der zumindest auf meinem Server funktioniert :)
    dcmd_kick(playerid,params[])
    {
    if(!IsPlayerAnAdmin(playerid,3))return SendClientMessage(playerid,COLOR_RED,"* Du bist kein Moderator.");
    {
    new
    sGrund[128],
    pID;
    if(sscanf(params, "us",pID,sGrund))
    {
    return SendClientMessage(playerid,COLOR_WHITE,"BENUTZE: /kick [SpielerID] [Grund]");
    }
    if(!IsPlayerConnected(pID))
    {
    return SendClientMessage(playerid,COLOR_RED,"* Es ist kein Spieler mit der angegebenen ID online.");
    }
    new
    ThePlayer[MAX_PLAYER_NAME],
    Player[MAX_PLAYER_NAME],
    string[128];
    GetPlayerName(pID,ThePlayer,sizeof(ThePlayer));
    GetPlayerName(playerid,Player,sizeof(Player));
    format(string,sizeof(string),"AdmCmd: %s wurde von %s gekickt. Grund: %s",ThePlayer,Player,sGrund);
    SendClientMessageToAll(COLOR_RED,string);
    Kick(pID);
    }
    return 1;
    }


    Mit freundlichen Grüßen,
    Cr4sh

    Mit freundlichen Grüßen,
    Cr4sh


  • ocmd:kick(playerid,params[])
    {
    if(!IsPlayerAdmin(playerid))return SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin.");
    new pID, reason[128],string[128];
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,COLOR_BLUE,"/kick [id] [grund]");
    format(string,sizeof(string)," AdmCMD %s wurde von %s gekickt. Grund: %s",SpielerName(pID),SpielerName(playerid),reason);
    SendClientMessageToAll(COLOR_YELLOW,string);
    Kick(pID);
    return 1;
    }

  • dcmd_kick(playerid,params[])
    {
    new pID, reason[128],string[128];
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,COLOUR_ROT,"/kick [ID] [Grund]");
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,COLOUR_ROT,"Spieler ist nicht auf dem Server");
    if(pID == INVALID_PLAYER_ID) return SendClientMessage(playerid,COLOUR_ROT,"Ungültige ID");
    if(strlen(reason) == 0) return SendClientMessage(playerid,COLOUR_ROT,"Der Grund fehlt.");
    format(string,sizeof(string),"AdmCmd: %s wurde von %s gekickt. Grund: %s",Opfer,Spielername(playerid),reason);
    SendClientMessageToAll(COLOUR_ROT,string);
    Kick(pID);
    return 1;
    }


  • Selbe Problem
    "Spieler ist nicht auf dem Server"

  • if(strcmp(cmd, "/kick", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "FEHLER: /kick [playerid] [Grund]");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    if (PlayerInfo[playerid][pAdmin] >= 1 || PlayerInfo[playerid][pSupporter] >= 1)
    {
    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, "FEHLER: /kick [playerid] [Grund]");
    return 1;
    }
    if(PlayerInfo[giveplayerid][pAdmin] > PlayerInfo[playerid][pAdmin])
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Du kannst diesen Spieler nicht kicken, da er ein höheres Adminlevel hat als du!");
    return 1;
    }
    new year, month,day;
    getdate(year, month, day);
    format(string, sizeof(string), "AdmCmd: %s wurde von %s gekickt, Grund: %s (%d-%d-%d)", giveplayer, sendername, (result),month,day,year);
    KickLog(string);
    format(string, sizeof(string), "AdmCmd: %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);
    }

  • dcmd_kick(playerid,params[])
    {
    new id, reason[128];
    if (sscanf(params, "uz", id, reason)) SendClientMessage(playerid, COLOR_GREY, "Info: /kick [SpielerID] [Grund]");
    else if (id == INVALID_PLAYER_ID || IsPlayerNPC(id) || PlayerInfo[id][pAdmin] > 0) SendClientMessage(playerid, COLOR_GREY, "Dieser Spieler kann nicht gekickt werden.");
    else if(strlen(reason) < 4) SendClientMessage(playerid, COLOR_GREY, " Die Nachricht muss mindestens 4 Buchstaben haben! ");
    else
    {
    if(PlayerInfo[playerid][pAdmin] >= 3)
    {
    new string[256], kicker[MAX_PLAYER_NAME], gekickter[MAX_PLAYER_NAME], string2[256];
    GetPlayerName(playerid, kicker, sizeof(kicker));
    GetPlayerName(id, gekickter, sizeof(gekickter));
    format(string, sizeof(string), "[AdminCmd] Du wurdest von %s gekickt. Grund: %s",kicker,reason);
    format(string2, sizeof(string2), "[AdminCmd] Der Spieler %s wurde von %s gekickt. Grund: %s", gekickter, kicker, reason);
    KickLog(string2);
    SendClientMessage(id, COLOR_RED, string);
    SendClientMessageToAll(COLOR_YELLOW2, string2);
    Kick(id);
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Du bist kein Admin");
    }
    }
    return 1;
    }


    Musst du anpassen.. (nicht getestet)

  • Du kannst es ja auch mit ocmd machen so wie ich. ich lade dir gern gleich mal alles hoch. du gibst einfach Folgendes ein
    Erstmal Ganz oben #include <ocmd> (dini haste ja bestimmt schon :)!)


    ocmd:kick(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,1))return SendClientMessage(playerid,COLOR_GRAU,"Du bist kein Admin.");
    new pID, reason[128],string[128];
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,COLOR_GRAU,"/kick [id] [grund]");
    format(string,sizeof(string),"%s wurde vom Admin ( %s ) gekickt | Grund: %s",SpielerName(pID),SpielerName(playerid),reason);
    SendClientMessageToAll(COLOR_ROT,string);
    Kick(pID);
    return 1;
    }
    einfach irgendwo ins Script rein. aber nicht in n public! farben ect kannst du ja noch ändern.
    sscanf haste denke ich mal. wenn nicht.
    stock sscanf(sstring[], format[], {Float,_}:...)
    {
    #if defined isnull
    if (isnull(sstring))
    #else
    if (sstring[0] == 0 || (sstring[0] == 1 && sstring[1] == 0))
    #endif
    {
    return format[0];
    }
    #pragma tabsize 4
    new
    formatPos = 0,
    sstringPos = 0,
    paramPos = 2,
    paramCount = numargs(),
    delim = ' ';
    while (sstring[sstringPos] && sstring[sstringPos] <= ' ')
    {
    sstringPos++;
    }
    while (paramPos < paramCount && sstring[sstringPos])
    {
    switch (format[formatPos++])
    {
    case '\0':
    {
    return 0;
    }
    case 'i', 'd':
    {
    new
    neg = 1,
    num = 0,
    ch = sstring[sstringPos];
    if (ch == '-')
    {
    neg = -1;
    ch = sstring[++sstringPos];
    }
    do
    {
    sstringPos++;
    if ('0' <= ch <= '9')
    {
    num = (num * 10) + (ch - '0');
    }
    else
    {
    return -1;
    }
    }
    while ((ch = sstring[sstringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num * neg);
    }
    case 'h', 'x':
    {
    new
    num = 0,
    ch = sstring[sstringPos];
    do
    {
    sstringPos++;
    switch (ch)
    {
    case 'x', 'X':
    {
    num = 0;
    continue;
    }
    case '0' .. '9':
    {
    num = (num << 4) | (ch - '0');
    }
    case 'a' .. 'f':
    {
    num = (num << 4) | (ch - ('a' - 10));
    }
    case 'A' .. 'F':
    {
    num = (num << 4) | (ch - ('A' - 10));
    }
    default:
    {
    return -1;
    }
    }
    }
    while ((ch = sstring[sstringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num);
    }
    case 'c':
    {
    setarg(paramPos, 0, sstring[sstringPos++]);
    }
    case 'f':
    {


    new changestr[16], changepos = 0, strpos = sstringPos;
    while(changepos < 16 && sstring[strpos] && sstring[strpos] != delim)
    {
    changestr[changepos++] = sstring[strpos++];
    }
    changestr[changepos] = '\0';
    setarg(paramPos,0,_:floatstr(changestr));
    }
    case 'p':
    {
    delim = format[formatPos++];
    continue;
    }
    case '\'':
    {
    new
    end = formatPos - 1,
    ch;
    while ((ch = format[++end]) && ch != '\'') {}
    if (!ch)
    {
    return -1;
    }
    format[end] = '\0';
    if ((ch = strfind(sstring, format[formatPos], false, sstringPos)) == -1)
    {
    if (format[end + 1])
    {
    return -1;
    }
    return 0;
    }
    format[end] = '\'';
    sstringPos = ch + (end - formatPos);
    formatPos = end + 1;
    }
    case 'u':
    {
    new
    end = sstringPos - 1,
    id = 0,
    bool:num = true,
    ch;
    while ((ch = sstring[++end]) && ch != delim)
    {
    if (num)
    {
    if ('0' <= ch <= '9')
    {
    id = (id * 10) + (ch - '0');
    }
    else
    {
    num = false;
    }
    }
    }
    if (num && IsPlayerConnected(id))
    {
    setarg(paramPos, 0, id);
    }
    else
    {
    #if !defined foreach
    #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
    #define __SSCANF_FOREACH__
    #endif
    sstring[end] = '\0';
    num = false;
    new
    name[MAX_PLAYER_NAME];
    id = end - sstringPos;
    foreach (Player, playerid)
    {
    GetPlayerName(playerid, name, sizeof (name));
    if (!strcmp(name, sstring[sstringPos], true, id))
    {
    setarg(paramPos, 0, playerid);
    num = true;
    break;
    }
    }
    if (!num)
    {
    setarg(paramPos, 0, INVALID_PLAYER_ID);
    }
    sstring[end] = ch;
    #if defined __SSCANF_FOREACH__
    #undef foreach
    #undef __SSCANF_FOREACH__
    #endif
    }
    sstringPos = end;
    }
    case 's', 'z':
    {
    new
    i = 0,
    ch;
    if (format[formatPos])
    {
    while ((ch = sstring[sstringPos++]) && ch != delim)
    {
    setarg(paramPos, i++, ch);
    }
    if (!i)
    {
    return -1;
    }
    }
    else
    {
    while ((ch = sstring[sstringPos++]))
    {
    setarg(paramPos, i++, ch);
    }
    }
    sstringPos--;
    setarg(paramPos, i, '\0');
    }
    default:
    {
    continue;
    }
    }
    while (sstring[sstringPos] && sstring[sstringPos] != delim && sstring[sstringPos] > ' ')
    {
    sstringPos++;
    }
    while (sstring[sstringPos] && (sstring[sstringPos] == delim || sstring[sstringPos] <= ' '))
    {
    sstringPos++;
    }
    paramPos++;
    }
    do
    {
    if ((delim = format[formatPos++]) > ' ')
    {
    if (delim == '\'')
    {
    while ((delim = format[formatPos++]) && delim != '\'') {}
    }
    else if (delim != 'z')
    {
    return delim;
    }
    }
    }
    while (delim > ' ');
    return 0;
    }


    Entschuldige mich wenn ich Irgendwas vergessen habe. wenn ja stell ichs dir sofort nach. beitrag wird gleich editiert wegen der ocmd include.
    /edit: http://www.file-upload.net/download-4059341/ocmd.inc.html in pawno Includes rein

  • Ich lade mir gleich mal ocmd runter


    Sscanf habe ich als Plugin Installier, wodurch ich innerhalb des Scriptes Sscanf nicht mehr definieren muss



    Habe neues Script angefangen und wieder das selbe getan, was in dem Toturial gezeigt wurde und wieder das selbe..