/ban Befehl funktioniert nicht

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 arbeite momentan an meinem eigenen Gamemode und habe es nach vielen Versuchen immer noch nicht hingekriegt zu fixxen, dass mein Ban Befehl ordentlich funktioniert, hier ist der Code:


    Und den stock BanWithReason den ich benutze:


    Wenn ich versuche jemanden InGame zu bannen kriege ich den Fehler: "Fehler beim Bannen von (name)" und ich mache eigentlich auch alles richtig also ich nutze /pban 1 Test
    Wobei 1 die ID ist und Test der Grund, aber warum funktioniert es immer noch nicht? Ich hoffe ihr könnt mir helfen.

  • Erstelle bitte mal in den pawno Ordner eine


    config.cfg mit folgendem inhalt


    -d3


    danach führst du den ban befehl aus und sendest mir die neu erstellte Log datei. Bei mir im Sampordner/logs/plugins/mysql.log



    Vielleicht kann ich dir dann danach helfen


    Compilen nicht vergessen !

  • Welchen Sampordner meinst du?

  • Ich vermute nach dem Check über Skype das du



    format(Query, sizeof(Query), "INSERT INTO `BANNED` (`NAME`, `IP`, `REASON`, `ADMIN`, `DATE`, `TIME`) VALUES ('%s', '%s', '%s', '%s', '%s', '%s')", GetName(targetid), PlayerIP(targetid), reason, GetName(playerid), datestring, timestring);


    nicht absendest und du daher kein Resultat erhälst

  • Fehler gefunden.


    stock BanWithReason(playerid = INVALID_PLAYER_ID, targetid, reason[])
    {
    new Query[240], string[112], DBResult:result, day, month, year, second, minute, hour, datestring[24], timestring[24];
    getdate(day, month, year);
    gettime(hour, minute, second);



    format(datestring, sizeof(datestring), "%i-%i-%i", day, month, year);
    format(timestring, sizeof(timestring), "%i:%i:%i", hour, minute, second);



    if(playerid != INVALID_PLAYER_ID)
    {
    format(Query, sizeof(Query), "INSERT INTO BANNED (`NAME`, `IP`, `REASON`, `ADMIN`, `DATE`, `TIME`) VALUES ('%s', '%s', '%s', '%s', '%s', '%s')", GetName(targetid), PlayerIP(targetid), reason, GetName(playerid), datestring, timestring);
    result = db_query(bans,Query);
    Query = db_query(bans,Query);
    if(result)
    {
    format(string, sizeof(string), "BAN: %s(%d) wurde von %s(%d) gebannt. [Grund: %s]", GetName(targetid), targetid, GetName(playerid), playerid, reason);
    SendClientMessageToAll(-1, string), string = "\1";
    printf("[ban] [%s]: Erfolgreich %s's Bann Info hinzugefügt", GetName(playerid), GetName(targetid));
    }
    else
    {
    format(string, sizeof(string), "SERVER: Fehler beim Bannen von '%s'", GetName(targetid));
    SendClientMessageToAll(-1, string), string = "\1";
    printf("[ban] [%s]: Fehler beim hinzufügen von %s's Bann Info", GetName(playerid), GetName(targetid));
    }
    }
    /*
    else
    {
    format(Query, sizeof(Query), "INSERT INTO `BANNED` (`NAME`, `IP`, `REASON`, `ADMIN`, `DATE`, `TIME`) VALUES ('%s', '%s', '%s', 'Server', '%s', '%s')", DB_Escape(GetName(targetid)), DB_Escape(PlayerIP(targetid)), reason, datestring, timestring);
    result = db_query(bans, Query);
    format(string, sizeof(string), "BAN: %s(%d) has been banned by the Server due to %s", GetName(targetid), targetid, reason);
    SendClientMessageToAll(COLOR_RED, string), string = "\1";
    }
    for anti-cheat purposes ^
    */
    Query = "\1", db_free_result(result);
    SetTimerEx("KickTimer", 100, true, "i", targetid);
    }


    Die markierte Stelle funktioniert aber leider nicht obwohl es sollte. "error 033: array must be indexed (variable "Query")"
    @Jeffry

  • Wenn ich versuche jemanden zu bannen zu bannen kriege ich nur den Fehler: "SERVER: Fehler beim Bannen von (Name)"
    Ich denke mal der Fehler ist das der Query garnicht abgeschickt wird, kenne mich mit SQLite leider nicht sehr aus.
    Fehlermeldungen in der Konsole habe ich keine und logs habe ich auch keine die erstellt werden.

  • Versuche es so:
    stock BanWithReason(playerid = INVALID_PLAYER_ID, targetid, reason[])
    {
    if(playerid == INVALID_PLAYER_ID) return 1;
    new Query[256], string[145], day, month, year, second, minute, hour, datestring[24], timestring[24];
    getdate(day, month, year);
    gettime(hour, minute, second);


    format(datestring, sizeof(datestring), "%i-%i-%i", day, month, year);
    format(timestring, sizeof(timestring), "%i:%i:%i", hour, minute, second);

    format(Query, sizeof(Query), "INSERT INTO BANNED (`NAME`, `IP`, `REASON`, `ADMIN`, `DATE`, `TIME`) VALUES ('%s', '%s', '%s', '%s', '%s', '%s')", GetName(targetid), PlayerIP(targetid), reason, GetName(playerid), datestring, timestring);
    db_query(bans,Query);
    format(string, sizeof(string), "BAN: %s(%d) wurde von %s(%d) gebannt. [Grund: %s]", GetName(targetid), targetid, GetName(playerid), playerid, reason);
    SendClientMessageToAll(-1, string), string = "\1";
    printf("[ban] [%s]: Erfolgreich %s's Bann Info hinzugefügt", GetName(playerid), GetName(targetid));
    printf("Query: %s", Query);
    SetTimerEx("KickTimer", 100, true, "i", targetid);
    return 1;
    }

  • Versuche es so:
    stock BanWithReason(playerid = INVALID_PLAYER_ID, targetid, reason[]){ if(playerid == INVALID_PLAYER_ID) return 1; new Query[256], string[145], day, month, year, second, minute, hour, datestring[24], timestring[24]; getdate(day, month, year); gettime(hour, minute, second); format(datestring, sizeof(datestring), "%i-%i-%i", day, month, year); format(timestring, sizeof(timestring), "%i:%i:%i", hour, minute, second); format(Query, sizeof(Query), "INSERT INTO BANNED (`NAME`, `IP`, `REASON`, `ADMIN`, `DATE`, `TIME`) VALUES ('%s', '%s', '%s', '%s', '%s', '%s')", GetName(targetid), PlayerIP(targetid), reason, GetName(playerid), datestring, timestring); db_query(bans,Query); format(string, sizeof(string), "BAN: %s(%d) wurde von %s(%d) gebannt. [Grund: %s]", GetName(targetid), targetid, GetName(playerid), playerid, reason); SendClientMessageToAll(-1, string), string = "\1"; printf("[ban] [%s]: Erfolgreich %s's Bann Info hinzugefügt", GetName(playerid), GetName(targetid)); printf("Query: %s", Query); SetTimerEx("KickTimer", 100, true, "i", targetid); return 1;}

    Danke, das hat schonmal funktioniert, InGame steht nun dass ich gebannt wurde und in der Konsole stehen auch die Daten die in die DB soll, aber die Daten sind leider nicht in der DB.