COMMAND KICK ERSTELLEN (hilfe)

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
  • Hi
    ich möchte gerne den Command Kick für Admins erstellen. Wie funzt das? Ich kriege das net hin! So weit bin ich schon dann kommen aber immer errors! BITTE UM HILFE



    if(strcmp(cmdtext, "/kick", true) == 0)
    {
    if(IsPlayerAdmin(playerid)){
    Kick(playerid,0xFFFFFF00);}
    else {
    SendClientMessage(playerid, 0x008A00FF, "Du hasst keine Rechte dazu!");
    }
    return 1;
    }


    Es funzt net! Bitte um Hilfe!


    MFG Maggi ;)

    2 Mal editiert, zuletzt von Maggi ()

  • ich will einfach den command kick für admins erstellen genau so: /kick [id] [grund]


    kannst du den den erneuern? ich kriege das net hin meiner iseht so aus:


    if(strcmp(cmdtext, "/kick", true) == 0)
    {
    if(IsPlayerAdmin(playerid)){
    Kick(playerid,0xFFFFFF00);}
    else {
    SendClientMessage(playerid, 0x008A00FF, "Du hasst keine Rechte dazu!");
    }
    return 1;
    }


    Ich will ja noch das man id und grund eingeben muss aber iw funzt das?


    MFG Maggi


  • if(!strcmp(strget(cmdtext, 0), "/kick"))
    {
    new giveplayer = strval(strget(cmdtext, 1));
    new grund = strval(strget(cmdtext, 2));
    Kick(giveplayer,grund);
    return 1;
    }


    versuchs ma so, aber ich befürchte das es bei dem grund probleme gibt.


    WICHITG: musst die strget funktion noch einbauen.

    stock strget(strx[], pos, search = ' ') {
    new arg, ret[128], idxx;
    for (new i = 0; i < strlen(strx); i++) {
    if(strx[i] == search || i == strlen(strx) || strx[i + 1] == 10) {
    arg++;
    if (arg == pos + 1){
    ret[i-idxx] = EOS;
    return ret;
    } else if (arg == pos)
    idxx= i+1;
    }
    else if (arg == pos)
    ret[i - idxx] = strx[i];
    }
    return ret;
    }

  • new command[256];
    new temp[256];
    new Index;
    command = strtok(cmdtext, Index);
    if(strcmp(command, "/kick", true) == 0)
    {
    if(IsPlayerAdmin(playerid))
    {
    new playerd;
    new reason;
    temp = strtok(cmdtext, Index);
    if(!strlen(temp))
    {
    //SendClientMessage(playerid, COLOR, "INFO: /kick [PLAYERID] [GRUND]");
    return 1;
    }
    playerd = strval(temp);
    temp = strtok(cmdtext, Index);
    if(!strlen(temp))
    {
    //SendClientMessage(playerid, COLOR, "INFO: /kick [PLAYERID] [GRUND]");
    return 1;
    }
    reason = strval(temp);
    new for22[256];
    format(for22,sizeof(for22), " Der Spieler %d wurde gekickt - Grund: %s",playerd,reason);
    //SendClientMessageToAll(COLOR,for22);
    Kick(playerd);
    }
    else
    {
    // Kein Admin Nachricht
    }
    return 1;
    }

    Mfg. BlackFoX_UD_ alias [BFX]Explosion



  • if(strcmp(cmdtext, "/kick", true) == 0)
    {
    if (PlayerInfo[playerid][pAdmin] >= 1)
    Kick(playerid,0xFFFFFF00);}
    else {
    SendClientMessage(playerid, 0x008A00FF, "Du hasst keine Rechte dazu!");
    }
    return 1;
    }


    Vlt das???



    wen nicht hier aus GF koppiert



    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] >= 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, "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;
    }

  • Es geht auch viel einfacher + besser + schneller.
    >> dcmd + sscanf
    dcmd_kick(playerid,params[]) {
    new
    sGrund[128],
    pID;
    if(sscanf(params, "dz",pID,sGrund)) {
    return SendClientMessage(playerid,COLOR_RED,"USAGE: /kick [playerid] ([grund],optional)");
    }
    if(!IsPlayerConnected(pID)) {
    return SendClientMessage(playerid,COLOR_RED,"Kein Spieler mit angegebener ID Online");
    }
    new
    ThePlayer[MAX_PLAYER_NAME],
    string[128];
    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>");
    SendClientMessageToAll(COLOR_YELLOW,string);
    Kick(pID);
    return 1;
    }

  • Bei sscanf kann man auch Name oder PlayerID nehmen. Man braucht dazu nicht einmal ReturnUser (Oder war es IsNumeric?). Man verwendet einfach statt dem Dateityp des Parameters der PlayerID den Typ "u". Damit kann man PlayerID ODER Name benutzen.


    Im Übrigen ist dcmd und sscanf viel ressourcenschonender als strtok bzw. strget.

    Help dcmd & sscanf to their way to Pawn domination. Read the tutorial below, and use it.
    dcmd & sscanf

  • if(Singo[playerid][admin] == 1)// das adminlevel steht oben beim enum und 1 ist das level was er sein muss.
    {
    CMD
    } else {
    MSG(playerid, COLOR,"du bist kein admin");
    }


    bzw. das
    if (PlayerInfo[playerid][pAdmin] >= 1)