Ban system geht ned

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


    Was ist hier falsch?


    ´dcmd_hwban(playerid,params[])
    {
    new pID,Grund[128];
    if(sscanf(params,"us",pID,Grund)) return SendClientMessage(playerid,0xFF0000FF,"FEHLER: /hwban [playerid/PartOfName] [Grund]");
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,0xFF0000FF,"Dieser Spieler ist nicht online!");


    new pNamE[24];
    GetPlayerName(pID,pNamE,24);


    banplayerhdwid(pID,Grund);
    format(Grund,128,"Du hast %s gebannt, Grund: %s",pNamE,Grund);
    SendClientMessage(playerid,0xFF0000FF,Grund);
    return 1;
    }





    forward banplayerhdwid(playerid,const grund[]);
    public banplayerhdwid(playerid,const grund[])
    {
    new mysqlquery[128],string[255];
    gpci(playerid,string,255);
    GetPlayerName(playerid,mysqlquery,24);
    format(mysqlquery,256,"INSERT INTO `bans` (`hdwid`,`reason`,`banned_player`) VALUES ('%s','%s','%s')",string,grund,mysqlquery);
    mysql_query(mysqlquery);
    new kmsg2[256];
    format(kmsg2,256,"Du wurdest gebannt, Grund: %s",grund);
    SendClientMessage(playerid,0xFF0000FF,kmsg2);
    Kick(playerid);
    mysql_free_result();
    return 1;
    }

  • Wunderbares Beispiel,wieso man sizeof benutzen sollte.
    forward banplayerhdwid(playerid,const grund[]);
    public banplayerhdwid(playerid,const grund[])
    {
    new mysqlquery[128],string[255];
    gpci(playerid,string,255);
    GetPlayerName(playerid,mysqlquery,24);
    format(mysqlquery,256,"INSERT INTO `bans` (`hdwid`,`reason`,`banned_player`) VALUES ('%s','%s','%s')",string,grund,mysqlquery);
    // ^-- buffer overflow... du hast als größe 256 angegeben,möglich wäre aber nur 128.Nimm lieber sizeof(mysqlquery) ... damit verhinderst du sowas.
    mysql_query(mysqlquery);
    new kmsg2[256];
    format(kmsg2,256,"Du wurdest gebannt, Grund: %s",grund);
    SendClientMessage(playerid,0xFF0000FF,kmsg2);
    Kick(playerid);
    mysql_free_result();
    return 1;
    }
    Ich weiss nicht wie lang der String ist,den du von gpci bekommst.Probier mal 400 aus,als größe für mysqlquery. Reicht bestimmt aus, kannst es aber ja selber herrausfinden ob es reicht indem du mal mit strlen() die länge vom String ausgeben lässt.
    Ansonsten, füg nach jeder Zeile mal print("1") , print("2") usw ein, falls du immernoch

    Zitat

    Unknow command

    erhälst.

  • forward banplayerhdwid(playerid,const grund[]);
    public banplayerhdwid(playerid,const grund[])
    {
    new mysqlquery[128],string[255];
    gpci(playerid,string,255);
    GetPlayerName(playerid,mysqlquery,24);
    format(mysqlquery,128,"INSERT INTO `bans` (`hdwid`,`reason`,`banned_player`) VALUES ('%s','%s','%s')",string,grund,mysqlquery);
    // ^-- buffer overflow... du hast als größe 256 angegeben,möglich wäre aber nur 128.Nimm lieber sizeof(mysqlquery) ... damit verhinderst du sowas.
    mysql_query(mysqlquery);
    new kmsg2[256];
    format(kmsg2,256,"Du wurdest gebannt, Grund: %s",grund);
    SendClientMessage(playerid,0xFF0000FF,kmsg2);
    Kick(playerid);
    mysql_free_result();
    return 1;
    }


    so habe ichs geändert geht ned und du meinst so ändern


    forward banplayerhdwid(playerid,const grund[]);
    public banplayerhdwid(playerid,const grund[])
    {
    new mysqlquery[400],string[255];
    gpci(playerid,string,255);
    GetPlayerName(playerid,mysqlquery,24);
    format(mysqlquery,256,"INSERT INTO `bans` (`hdwid`,`reason`,`banned_player`) VALUES ('%s','%s','%s')",string,grund,mysqlquery);
    // ^-- buffer overflow... du hast als größe 256 angegeben,möglich wäre aber nur 128.Nimm lieber sizeof(mysqlquery) ... damit verhinderst du sowas.
    mysql_query(mysqlquery);
    new kmsg2[256];
    format(kmsg2,256,"Du wurdest gebannt, Grund: %s",grund);
    SendClientMessage(playerid,0xFF0000FF,kmsg2);
    Kick(playerid);
    mysql_free_result();
    return 1;
    }

  • Ich meine es so,wie ich es geschrieben habe. Hast dich nicht wirklich an den Post gehalten,schade :/.


    Wunderbares Beispiel,wieso man sizeof benutzen sollte.
    [...]
    Ich weiss nicht wie lang der String ist,den du von gpci bekommst.Probier mal 400 aus,als größe für mysqlquery. Reicht bestimmt aus, kannst es aber ja selber herrausfinden ob es reicht indem du mal mit strlen() die länge vom String ausgeben lässt.
    Ansonsten, füg nach jeder Zeile mal print("1") , print("2") usw ein, falls du immernoch

    erhälst.