Ban Befehl funktioniert nicht (DCMD)

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
  • N'Abend.
    Ich scripte derzeit an meinem Adminsystem. Jedoch möchte mein Ban Befehl nicht so, wie ich. Es hat den Anschein, das ich nen Klammerfehler reingehaun habe, aber ich finde diesen nicht. Hoffe ihr könnt mir Helfen.


    Errors
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(104) : error 017: undefined symbol "UserSpeichern"
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(138) : error 017: undefined symbol "dcmd_ban"
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(141) : error 017: undefined symbol "IstUserAdmin"
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(305) : error 017: undefined symbol "Login"
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(325) : error 017: undefined symbol "Register"
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(340) : error 017: undefined symbol "sscanf"
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(344) : error 017: undefined symbol "IstUserAdmin"
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(350) : error 017: undefined symbol "IstUserAdmin"
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(371) : error 017: undefined symbol "sscanf"
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(394) : warning 225: unreachable code
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(394) : warning 217: loose indentation
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(398) : warning 225: unreachable code
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(398) : warning 217: loose indentation
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(398) : error 017: undefined symbol "dcmd_ban"
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(400) : warning 219: local variable "pID" shadows a variable at a preceding level
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(400) : warning 219: local variable "str" shadows a variable at a preceding level
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(401) : error 017: undefined symbol "sscanf"
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(424) : warning 225: unreachable code
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(424) : warning 217: loose indentation
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(429) : warning 225: unreachable code
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(429) : warning 217: loose indentation
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(429) : error 029: invalid expression, assumed zero
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(429) : error 017: undefined symbol "IstUserAdmin"
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(431) : error 017: undefined symbol "level"
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(435) : warning 225: unreachable code
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(435) : error 029: invalid expression, assumed zero
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(435) : error 017: undefined symbol "Register"
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(442) : error 017: undefined symbol "key"
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(448) : error 017: undefined symbol "UserReset"
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(452) : warning 225: unreachable code
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(452) : error 029: invalid expression, assumed zero
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(452) : error 017: undefined symbol "Login"
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(458) : error 017: undefined symbol "key"
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(461) : error 017: undefined symbol "UserLaden"
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(472) : warning 225: unreachable code
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(472) : error 029: invalid expression, assumed zero
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(472) : error 017: undefined symbol "UserSpeichern"
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(488) : warning 225: unreachable code
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(488) : error 029: invalid expression, assumed zero
    C:\Users\Dominik\Desktop\Dome\SampServer\gamemodes\nl.pwn(488) : error 017: undefined symbol "UserLaden"

    Errors
    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase

    Errors
    26 Errors.


    Ban Befehl
    dcmd_ban(playerid,params[])
    {
    new pID, str[64];
    if(sscanf(params,"uz",pID,str))
    {
    return SendClientMessage(playerid,BLAU,"Verwendung: /ban [ID] [Grund]");
    }
    if (pID == INVALID_PLAYER_ID)
    {
    return SendClientMessage(playerid,ROT,"[Warnung] Ungültiger User!");
    }
    if (pID == playerid)
    {
    return SendClientMessage(playerid,ROT,"[Warnung] Du kannst dich nicht selber Bannen!");
    }
    if(sUser[playerid][AdminLevel] > 0)
    {
    new ThePlayer[MAX_PLAYER_NAME], str2[128];
    GetPlayerName(pID,ThePlayer,sizeof(ThePlayer));
    format(str2,sizeof(str2),"%s wurde von New Lost verbannt!(Grund: %s)",ThePlayer,str[0] ? str : "<Kein Grund>");
    SendClientMessageToAll(ROT,str);
    Ban(pID);
    }
    else
    {
    return SendClientMessage(playerid, 0xFF0000FF, "[Warnung] Du darfst diesen Befehl nicht nutzen!");
    {
    return 1;
    }

    dcmd(ban,3,cmdtext);


    Davor habe ich einen SetAdmin & einen Kick Befehl gescriptet & erst bei dem Ban Befehl habe ich dir Errors bekommen.


    MfG

  • Probiers mal so


    dcmd_ban(playerid,params[])
    {
    new pID, str[64];
    if(sscanf(params,"uz",pID,str))
    {
    return SendClientMessage(playerid,BLAU,"Verwendung: /ban [ID] [Grund]");
    }
    if (pID == INVALID_PLAYER_ID)
    {
    return SendClientMessage(playerid,ROT,"[Warnung] Ungültiger User!");
    }
    if (pID == playerid)
    {
    return SendClientMessage(playerid,ROT,"[Warnung] Du kannst dich nicht selber Bannen!");
    }
    if(sUser[playerid][AdminLevel] > 0)
    {
    new ThePlayer[MAX_PLAYER_NAME], str2[128];
    GetPlayerName(pID,ThePlayer,sizeof(ThePlayer));
    format(str2,sizeof(str2),"%s wurde von New Lost verbannt!(Grund: %s)",ThePlayer,str[0] ? str : "<Kein Grund>");
    SendClientMessageToAll(ROT,str);
    Ban(pID);
    }
    else
    {
    return SendClientMessage(playerid, 0xFF0000FF, "[Warnung] Du darfst diesen Befehl nicht nutzen!");
    }
    return 1;
    }

  • Kann sein das ich schon zu viel Getrunken habe, aber kann es daran liegen, das /kick & /ban "gleich" aufgebaut sind?
    Erst nachdem ich die beiden Befehle rausgenommen habe, sind die Errors verschwunden.

    Befehle
    /*dcmd_kick(playerid,params[])
    {
    new pID, str[64];
    if(sscanf(params,"uz",pID,str))
    {
    return SendClientMessage(playerid,BLAU,"Verwendung: /kick [ID] [Grund]");
    }
    if (pID == INVALID_PLAYER_ID)
    {
    return SendClientMessage(playerid,ROT,"[Warnung] Ungültiger User!");
    }
    if (pID == playerid)
    {
    return SendClientMessage(playerid,ROT,"[Warnung] Du kannst dich nicht selber Kicken!");
    }
    if(sUser[playerid][AdminLevel] > 0)
    {
    new ThePlayer[MAX_PLAYER_NAME], str2[128];
    GetPlayerName(pID,ThePlayer,sizeof(ThePlayer));
    format(str2,sizeof(str2),"%s wurde von New Lost gekickt!(Grund: %s)",ThePlayer,str[0] ? str : "<Kein Grund>");
    SendClientMessageToAll(ROT,str);
    Kick(pID);
    }
    else
    {
    return SendClientMessage(playerid, 0xFF0000FF, "[Warnung] Du darfst diesen Befehl nicht nutzen!");
    {
    return 1;
    }*/

    Befehle
    /*dcmd_ban(playerid,params[])
    {
    new pID, str[64];
    if(sscanf(params,"uz",pID,str))
    {
    return SendClientMessage(playerid,BLAU,"Verwendung: /ban [ID] [Grund]");
    }
    if (pID == INVALID_PLAYER_ID)
    {
    return SendClientMessage(playerid,ROT,"[Warnung] Ungültiger User!");
    }
    if (pID == playerid)
    {
    return SendClientMessage(playerid,ROT,"[Warnung] Du kannst dich nicht selber Bannen!");
    }
    if(sUser[playerid][AdminLevel] > 0)
    {
    new ThePlayer[MAX_PLAYER_NAME], str2[128];
    GetPlayerName(pID,ThePlayer,sizeof(ThePlayer));
    format(str2,sizeof(str2),"%s wurde von New Lost verbannt!(Grund: %s)",ThePlayer,str[0] ? str : "<Kein Grund>");
    SendClientMessageToAll(ROT,str);
    Ban(pID);
    }
    else
    {
    return SendClientMessage(playerid, 0xFF0000FF, "[Warnung] Du darfst diesen Befehl nicht nutzen!");
    {
    return 1;
    }*/

  • Hier mal ein kompakter Code:


    dcmd_ban(playerid,params[])
    {
    if(sUser[playerid][AdminLevel] > 0)return SendClientMessage(playerid, 0xFF0000FF, "[Warnung] Du darfst diesen Befehl nicht benutzen!"); // Wenn der User nicht das Admlvl > 0 hat, wird die SendClientMessage wiedergegeben
    new pID, str[64], str2[128], ThePlayer[MAX_PLAYER_NAME]; // Variablen
    if(sscanf(params,"us",pID,str))return SendClientMessage(playerid,BLAU,"Nutze: /ban [Spieler/ID] [Grund]"); // Wenn der Admin nur /ban eingibt, wird SendClientMessage wiedergegeben
    if(pID == INVALID_PLAYER_ID)return SendClientMessage(playerid, ROT, "Ungültiger User!"); // Wenn der Admin eine falsche ID eingibt, wird SendClientMessage wiedergegeben
    if(pID == playerid)return SendClientMessage(playerid, ROT, "Du kannst dich nicht selber bannen!");
    GetPlayerName(pID,ThePlayer,sizeof(ThePlayer));
    format(str2,sizeof(str2),"%s wurde von New Lost verbannt!(Grund: %s)",ThePlayer,str[0] ? str : "<Kein Grund>");
    SendClientMessageToAll(ROT,str2);
    Ban(pID);
    return 1;
    }


    Versuch es mal damit, hab es aber nicht getestet!


  • z ist für Optionale Sachen, das heißt da muss dann der Grund nicht angezeigt werden ;)


    Right.


    Danke an alle


    MfG