Sicherheits dialog - wie geht das ?

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
  • Hey Leute,


    Ichw ollte mal fragen wie ich einen Sicherheits dialog hinkriege



    ocmd:ban(playerid,params[])
    {
    new pID, grund[128],string[128];
    if(!IsPlayerAnAdmin(playerid,4))return SendClientMessage(playerid,FRot,"[ERROR:] Server unknow command ['/ban'], use '/help' .");
    if(sscanf(params,"us",pID,grund))return SendClientMessage(playerid,FGrau,"Fehler: benutze /ban [ID] [Grund]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,FGrau,"Fehler: Dieser spieler ist nicht online !");
    if(IsPlayerNPC(pID))return SendClientMessage(playerid,FGrau,"Fehler: Du kannst keine NPCs bannen !");
    if(pID == playerid)return SendClientMessage(playerid,FGrau,"Fehler: Du kannst dich nicht selber bannen!");
    if(!IsPlayerAnAdmin(pID,6))
    {
    if(IsPlayerAnAdmin(pID,5))return SendClientMessage(playerid,FGrau,"Fehler: Du darfst keine admins bannen die über admin level 5 sind!");
    }
    format(string,sizeof(string),"[SERVER:] %s [ID: %d] has been banned from the server ! Reason: %s",pName[pID],pID,grund);
    SendClientMessageToAll(FRot,string);
    SpielerInfo[pID][pGebannt] = 1;
    SpielerInfo[pID][pAdmin] = 0;
    mysql_SetString("accounts", "GebanntGrund", grund ,"Name", pName[pID]);
    Kick(pID);
    return 1;
    }


    Das hab ich bisjetz


    nun möchte ich aber nicht das ich irgendwann mal ne falsche id banne ;(


    deswegen wollte ich fragen wie ich einen Dialog hinbekomme


    Wo:


    Spielername steht (bei mir pName[playerid])
    die ID (pID)
    und der Grund (grund)


    Wenn man auf Ja drückt bannen und auf abbrechen halt abbrechen :D


    Fg

  • @Poster oben: Weder noch gibt wirklich Sinn, ich würde da mal gerne sehen wir ihr die jeweilige Ansicht im Code vertreten würdet, so dass es auch funktioniert.


    --------------------------------------
    Im enum hinzufügen:
    pToBanID,
    pToBanID[128],
    Diese brauchen wir, um später die Informationen zu speichern.


    Definieren:
    #define BAN_DIALOG 1337


    Der Command:
    ocmd:ban(playerid,params[])
    {
    new pID, grund[128],string[128];
    if(!IsPlayerAnAdmin(playerid,4))return SendClientMessage(playerid,FRot,"[ERROR:] Server unknow command ['/ban'], use '/help' .");
    if(sscanf(params,"us",pID,grund))return SendClientMessage(playerid,FGrau,"Fehler: benutze /ban [ID] [Grund]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,FGrau,"Fehler: Dieser spieler ist nicht online !");
    if(IsPlayerNPC(pID))return SendClientMessage(playerid,FGrau,"Fehler: Du kannst keine NPCs bannen !");
    if(pID == playerid)return SendClientMessage(playerid,FGrau,"Fehler: Du kannst dich nicht selber bannen!");
    if(!IsPlayerAnAdmin(pID,6))
    {
    if(IsPlayerAnAdmin(pID,5))return SendClientMessage(playerid,FGrau,"Fehler: Du darfst keine admins bannen die über admin level 5 sind!");
    }
    format(string,sizeof(string),"Bis du sicher, dass du %s [ID: %d]\nmit dem Grund %s\nbannen willst?",pName[pID],pID,grund);
    SpielerInfo[playerid][pToBanID] = pID; //Hier speichern wir die eingegebene ID.
    SpielerInfo[playerid][pToBanID] = grund; //Hier speichern wir den eingegebenen Grund.
    ShowPlayerDialog(playerid, BAN_DIALOG, DIALOG_STYLE_MSGBOX, "Bestätige:", string, "Ban!", "Abbrechen");
    return 1;
    }


    OnDialogResponse:
    if(dialogid == BAN_DIALOG && response == 1)
    {
    new pID, grund[128],string[128];
    pID= SpielerInfo[playerid][pToBanID]; //Hier laden wir die ID
    grund = SpielerInfo[playerid][pToBanGrund]; //Hier laden wir den Grund
    if(!IsPlayerAnAdmin(playerid,4))return SendClientMessage(playerid,FRot,"[ERROR:] Server unknow command ['/ban'], use '/help' .");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,FGrau,"Fehler: Dieser spieler ist nicht online !");
    if(IsPlayerNPC(pID))return SendClientMessage(playerid,FGrau,"Fehler: Du kannst keine NPCs bannen !");
    if(pID == playerid)return SendClientMessage(playerid,FGrau,"Fehler: Du kannst dich nicht selber bannen!");
    if(!IsPlayerAnAdmin(pID,6))
    {
    if(IsPlayerAnAdmin(pID,5))return SendClientMessage(playerid,FGrau,"Fehler: Du darfst keine admins bannen die über admin level 5 sind!");
    }
    format(string,sizeof(string),"[SERVER:] %s [ID: %d] has been banned from the server ! Reason: %s",pName[pID],pID,grund);
    SendClientMessageToAll(FRot,string);
    SpielerInfo[pID][pGebannt] = 1;
    SpielerInfo[pID][pAdmin] = 0;
    mysql_SetString("accounts", "GebanntGrund", grund ,"Name", pName[pID]);
    Kick(pID);
    return 1;
    }


    Sollte verständlich sein, ist ja größtenteils eh dein Code, nur leicht verdreht. Ich gehe aber mal davon aus, dass es hier nicht nötig ist viel zu erklären, da der Code für sich selbst spricht.
    Falls was unklar ist, kannst du ja fragen.