Beiträge von LeonMrBonnie

    Schließt du die Datenbank dann zwischen OnGameModeInit und dem Ban Befehl wieder?
    Anders kann ich mir das nicht erklären. Schau mal ob du irgendwo den Befehl zum schließen von "bans" drin hast.


    Oh mein Gott danke... Ich habe in OnPlayerRequestClass db_close(bans); stehen, ich werde das mal löschen und es nochmal versuchen.


    //EDIT:
    Danke! Es hat funktioniert, klappt jetzt einwandfrei.

    Gut, dann sende das Query bitte mal direkt nach dem CREATE TABLE in OnGameModeInit ab, so:
    db_query(bans, "INSERT INTO BANNED (`NAME`, `IP`, `REASON`, `ADMIN`, `DATE`, `TIME`) VALUES ('LeonMrBonnie', '127.0.0.1', 'test', 'LeonMrBonnie', '2017-2-15', '18:21:59')");


    Klappt das?
    Eventuell vorher den Eintrag aus der Datenbank löschen.

    Ja funktioniert, erstellt sich eine neue Zeile mit den Daten.

    Hi,
    wenn ich mich auf meinen Server connecte kriege ich folgenden Fehler:
    [debug] Run time error 4: "Array index out of bounds"
    [debug] Accessing element at index 65535 past array upper bound 999
    [debug] AMX backtrace:
    [debug] #0 00021620 in public OnPlayerTakeDamage (playerid=0, issuerid=65535, Float:amount=4.95000, weaponid=54, bodypart=3) at C:\Users\Agando\Desktop\Garage\AnotherLife Keybinder\SAMP 1HK Server\gamemodes\1hk.pwn:1329


    In meinem Script auf Zeile 1329 ist das:

    Code
    InFight[issuerid] = 1;


    Was ist daran falsch?

    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.

    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.

    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

    Welchen Sampordner meinst du?