Wie Kick per Dialog bestätigen lassen?

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 möchte, wenn man jemand via /kick kickt, dass da denn sich ein Dialog öffnet wo drin steht:


    Möchtest du wirglich NAME mit dem Grund GRUND kicken?


    [Ja] [Nein] <-- Button


    In diesem /kick befehl:


    //====================================KICK=====================================
    if(strcmp(cmd, "/kick", true) == 0)
    {
    ShowPlayerDialog(playerid,DIALOG_KICK,DIALOG_STYLE_MSGBOX,"Info","Die ist ein Info Dialog","OK","Abbruch") ;
    return 1;
    }
    {
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "/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, pname, sizeof(pname));
    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;
    }
    format(string, sizeof(string), "AdminChat: %s wurde von %s aus dem Spielt entfernt|[Grund: %s]", giveplayer, pname, (result));
    SendClientMessageToAll(COLOR_LIGHTRED, string);
    SetTimerEx("Kickplayer",0000,0,"i",giveplayerid);
    return 1;
    }
    }
    }
    else
    {
    format(string, sizeof(string), " %d ist kein aktiver Spieler.", giveplayerid);
    SendClientMessage(playerid, COLOR_GRAD1, string);
    }
    }
    return 1;
    }


    Wäre über Hilfe dankbar..


    Diese Signatur wird erneuert.
    Bitte haben Sie ein wenig geduld...



  • das wurde erst vor ein paar tage (vor 1 - 2 tage) gefragt also dafür sollte das jetzt geschlossen werden. Benutz die Suchfunktion tut auch nicht weh.

  • Hallo,


    hab das mal gemacht, weiß aber nicht ob das jetzt hinhaut. ich habe absichtlich deinen /kick befehl nicht verwendet, da ich das zu umständlich finde ...


    meine idee einen ocmd befehl der dich dann fragt ja oder nein und ihn dann kickst.


    bei dem string in dem dialog bin ich mir ned sicher ob das geht, stelle mir das aber so vor :D naja probiers mal aus und berichte.
    lasse mich gerne verbessern.


    mfg bossa



    #define DIALOG_KICK 1


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == DIALOG_KICK)
    {
    if(response == 0)
    {
    SendClientMessage(playerid, COLOR_RED, "Du hast den Vorgang abgebrochen!");
    }
    if(response == 1)
    {
    new Meldung[200];
    format( Meldung, sizeof (Meldung), "Adminsystem: %s wurde von %s vom Server gekickt. Grund: %s", SpielerName(sID), SpielerName(playerid), Grund);
    SendClientMessageToAll(COLOR_RED, Meldung);
    Kick(sID);
    }
    }



    ocmd:kick(playerid, params[])
    {
    if(!PlayerInfo[playerid][pAdmin] >= 1 || !PlayerInfo[playerid][pSupporter] >= 1))return SendClientMessage(playerid, FARBE_ROT, "Du bist nicht im Adminteam!");
    new sID, Grund[200], Meldung[200];
    if(sscanf(params, "us", sID, Grund))return SendClientMessage(playerid, COLOR_RED, "Der Befehl lautet: /kick [Spielerid][Grund]");
    new string[200];
    format(string, sizeof (string), "Möchtest du %s wirklich wegen %s kicken", sID, Grund);
    ShowPlayerDialog(playerid, DIALOG_KICK, DIALOG_STYLE_MSGBOX, "Kicksystem ...", string, "Ja", "Nein"); //bin mir nicht sicher ob das mit dem string geht ....
    return 1;
    }