Timeban 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
  • Moin, mein Timeban Befehl geht nicht, die MEssage kommt, doch der Spieler wird nicht gebannt.


    BEFEHL:
    if(strcmp(cmd, "/tban", true) == 0 || strcmp(cmd, "/tb", true) == 0){


    if (SpielerInfo[playerid][pAdmin] >= 5)
    {
    new name[256], tbl, tbt[64];
    if(IsPlayerConnected(playerid)){
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)){
    SCM(playerid, 0xA734C2FF, "Verwendung: /timeban [Spieler-ID/Teil des Namens] [Bannlänge] [Bannart s/i/h/d/w/m/y] [Grund]");
    SCM(playerid, 0xA734C2FF, "s: Sekunden | i: Minuten | h: Stunden | d: Tage | w: Wochen | m: Monate | y: Jahre");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    GetPlayerName(playerid, name, sizeof(name));


    if(IsPlayerConnected(giveplayerid)){
    if(giveplayerid != INVALID_PLAYER_ID){
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)){
    SCM(playerid, 0xA734C2FF, "Verwendung: /timeban [Spieler-ID/Teil des Namens] [Bannlänge] [Bannart s/i/h/d/w/m/y] [Grund]");
    SCM(playerid, 0xA734C2FF, "s: Sekunden | i: Minuten | h: Stunden | d: Tage | w: Wochen | m: Monate | y: Jahre");
    return 1;
    }
    tbl = strval(tmp);


    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)){
    SCM(playerid, 0xA734C2FF, "Verwendung: /timeban [Spieler-ID/Teil des Namens] [Bannlänge] [Bannart s/i/h/d/w/m/y] [Grund]");
    SCM(playerid, 0xA734C2FF, "s: Sekunden | i: Minuten | h: Stunden | d: Tage | w: Wochen | m: Monate | y: Jahre");
    return 1;
    }
    format(tbt, sizeof(tbt), "%s", tmp);


    if(strcmp(tbt, "s", true) == 0 || strcmp(tbt, "i", true) == 0 || strcmp(tbt, "h", true) == 0 || strcmp(tbt, "d", true) == 0 || strcmp(tbt, "w", true) == 0 || strcmp(tbt, "m", true) == 0 || strcmp(tbt, "y", true) == 0){
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, name, sizeof(name));
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' ')){
    idx++;
    }
    new offset = idx;
    new result[256];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))){
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result)){
    SCM(playerid, 0xA734C2FF, "Verwendung: /timeban [Spieler-ID/Teil des Namens] [Bannlänge] [Bannart s/i/h/d/w/m/y] [Grund]");
    SCM(playerid, 0xA734C2FF, "s: Sekunden | i: Minuten | h: Stunden | d: Tage | w: Wochen | m: Monate | y: Jahre");
    return 1;
    }


    timeban(playerid, giveplayerid, tbl, tbt, result);
    }
    else{
    SCM(playerid, 0xA734C2FF, "Verwendung: /timeban [Spieler-ID/Teil des Namens] [Bannlänge] [Bannart s/i/h/d/w/m/y] [Grund]");
    SCM(playerid, 0xA734C2FF, "s: Sekunden | i: Minuten | h: Stunden | d: Tage | w: Wochen | m: Monate | y: Jahre");
    return 1;
    }


    return 1;
    }
    }
    }


    return 1;
    }
    }
    FUNKTIONEN
    FUNKTION: checktimeban(playerid){


    if(LogFilesJet == 1){
    printf("checktimeban 1 | Name: %s", PlayerName(playerid));
    }


    new stringgdfg[256];
    format(stringgdfg, sizeof(stringgdfg), "SELECT * FROM tb_outstanding WHERE usr_name LIKE '%s' AND status = '0' ORDER BY id ASC LIMIT 1", PlayerName(playerid));
    mysql_pquery(handle, stringgdfg, "CheckTimebans", "i", playerid);
    }
    FUNKTION: CheckTimebans(playerid){
    new rows, fields, query[256];
    cache_get_row_count(rows);
    cache_get_field_count(fields);


    if(LogFilesJet == 1) printf("CheckTimeBanExecute 1");


    if(rows){
    new string[256], tba[10], tbr[256], ablauf[64];
    new tbid, tbl, tbt, stamp;


    if(LogFilesJet == 1) printf("CheckTimeBanExecute 2");


    cache_get_value_name(0, "id", string, 128);
    tbid = strval(string);
    cache_get_value_name(0, "ban_ablauf", string, 128);
    tbt = strval(string);
    cache_get_value_name(0, "ts", string, 128);
    stamp = strval(string);
    cache_get_value_name(0, "ban_length", string, 128);
    tbl = strval(string);
    cache_get_value_name(0, "ban_reason", tbr, 128);
    cache_get_value_name(0, "ban_typ", tba, 128);
    cache_get_value_name(0, "ablauf", ablauf, 128);


    if(LogFilesJet == 1) printf("CheckTimeBanExecute 3");


    if( tbt > stamp ){
    if(LogFilesJet == 1) printf("CheckTimeBanExecute 3.1");


    if(strcmp(tba, "s", true) == 0)
    format(query, sizeof(query), "Du wurdest für %i Sekunden gebannt | Grund: %s", tbl, (tbr));
    if(strcmp(tba, "i", true) == 0)
    format(query, sizeof(query), "Du wurdest für %i Minuten gebannt | Grund: %s", tbl, (tbr));
    if(strcmp(tba, "h", true) == 0)
    format(query, sizeof(query), "Du wurdest für %i Stunden gebannt | Grund: %s", tbl, (tbr));
    if(strcmp(tba, "d", true) == 0)
    format(query, sizeof(query), "Du wurdest für %i Tage gebannt | Grund: %s", tbl, (tbr));
    if(strcmp(tba, "w", true) == 0)
    format(query, sizeof(query), "Du wurdest für %i Wochen gebannt | Grund: %s", tbl, (tbr));
    if(strcmp(tba, "m", true) == 0)
    format(query, sizeof(query), "Du wurdest für %i Monate gebannt | Grund: %s", tbl, (tbr));
    if(strcmp(tba, "y", true) == 0)
    format(query, sizeof(query), "Du wurdest für %i Jahre gebannt | Grund: %s", tbl, (tbr));


    SCM(playerid, 0xA734C2FF, query);
    format(query, sizeof(query), "Der Bann läuft ab am: %s", ablauf);
    SCM(playerid, 0xA734C2FF, query);
    SetTimerEx("DelayKick", 2000, 0, "d", playerid);
    }
    else{
    if(LogFilesJet == 1) printf("CheckTimeBanExecute 3.2");
    format(query, sizeof(query), "UPDATE server_timeban SET status = '1' WHERE id = '%d'", tbid);
    //mysql_query(query);
    }


    if(LogFilesJet == 1) printf("CheckTimeBanExecute 4");
    }


    if(LogFilesJet == 1) printf("CheckTimeBanExecute 5");
    }
    FUNKTION: timeban(playerid, pid, tbl, tbt[], tbr[]){
    new gip[128], plip[128], gname[MAX_PLAYER_NAME], name[MAX_PLAYER_NAME], query[512];


    GetPlayerIp(pid, gip, sizeof(gip));
    GetPlayerIp(playerid, plip, sizeof(plip));


    GetPlayerName(pid, gname, sizeof(gname));
    GetPlayerName(playerid, name, sizeof(name));


    if(strcmp(tbt, "s", true) == 0)
    format(query, sizeof(query), "Info: %s wurde von %s für %i Sekunden gebannt | Grund: %s", gname, name, tbl, (tbr));
    if(strcmp(tbt, "i", true) == 0)
    format(query, sizeof(query), "Info: %s wurde von %s für %i Minuten gebannt | Grund: %s", gname, name, tbl, (tbr));
    if(strcmp(tbt, "h", true) == 0)
    format(query, sizeof(query), "Info: %s wurde von %s für %i Stunden gebannt | Grund: %s", gname, name, tbl, (tbr));
    if(strcmp(tbt, "d", true) == 0)
    format(query, sizeof(query), "Info: %s wurde von %s für %i Tage gebannt | Grund: %s", gname, name, tbl, (tbr));
    if(strcmp(tbt, "w", true) == 0)
    format(query, sizeof(query), "Info: %s wurde von %s für %i Wochen gebannt | Grund: %s", gname, name, tbl, (tbr));
    if(strcmp(tbt, "m", true) == 0)
    format(query, sizeof(query), "Info: %s wurde von %s für %i Monate gebannt | Grund: %s", gname, name, tbl, (tbr));
    if(strcmp(tbt, "y", true) == 0)
    format(query, sizeof(query), "Info: %s wurde von %s für %i Jahre gebannt | Grund: %s", gname, name, tbl, (tbr));
    SCMTA(0xFF6347AA, query);
    format(query, sizeof(query), "INSERT INTO SoM_timeban(usr_id, usr_name, usr_ip, ban_time, ban_length, ban_typ, ban_reason, adm_name, adm_ip, status) VALUES(%d,'%s', '%s', UNIX_TIMESTAMP(), '%i', '%s', '%s', '%s', '%s', '0')", SpielerInfo[pid][Spielerzid], gname, gip, tbl, tbt, (tbr), name, plip);
    SCM(playerid, 0xA734C2FF, query);
    // mysql_query(query);
    printf(query);
    SetTimerEx("DelayKick", 2000, 0, "d", pid);
    }


    FUNKTION: checktimeban_execute(playerid,name[]){
    new rows, fields, stringkll[180];
    cache_get_row_count(rows);
    cache_get_field_count(fields);


    if(rows > 0){
    format(stringkll, sizeof(stringkll), "UPDATE `SoM_timeban` SET status = 1 WHERE `usr_name` = '%s' AND status = 0", name);
    //mysql_query(stringkll);


    format(stringkll,sizeof(stringkll),"%s.%s", PlayerName(playerid),name);


    for(new i = 0; i <= MAX_PLAYERS; i++){
    if(IsPlayerConnected(i)){
    if(SpielerInfo[i][pAdmin] !=0){
    format(stringkll,sizeof(stringkll),"- Admin %s hat den Spieler '%s' den Timeban weggenommen -", PlayerName(playerid), name);
    SCM(i, COLOR_YELLOW, stringkll);


    }
    }
    }


    }
    else
    {
    SCM(playerid, COLOR_RED, "Der Spieler hat keinen Timeban ..");
    }


    return 1;
    }
    TABELEN
    --
    -- Tabellenstruktur für Tabelle `SoM_timeban`
    --


    CREATE TABLE IF NOT EXISTS `SoM_timeban` (
    `id` int(9) NOT NULL,
    `usr_id` int(11) NOT NULL,
    `usr_name` text NOT NULL,
    `usr_ip` text NOT NULL,
    `ban_time` int(32) NOT NULL,
    `ban_length` int(9) NOT NULL,
    `ban_typ` text NOT NULL,
    `ban_reason` text NOT NULL,
    `adm_name` text NOT NULL,
    `adm_ip` text NOT NULL,
    `status` int(1) NOT NULL DEFAULT '0'
    ) ENGINE=MyISAM AUTO_INCREMENT=16911 DEFAULT CHARSET=latin1;


    --
    -- Indizes für die Tabelle `SoM_navi`
    --
    ALTER TABLE `SoM_navi`
    ADD PRIMARY KEY (`id`);
    --
    -- AUTO_INCREMENT für Tabelle `SoM_navi`
    --
    ALTER TABLE `SoM_navi`
    MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=146;


    --
    -- Indizes für die Tabelle `SoM_timeban`
    --
    ALTER TABLE `SoM_timeban`
    ADD PRIMARY KEY (`id`);
    -- AUTO_INCREMENT für Tabelle `SoM_timeban`
    --
    ALTER TABLE `SoM_timeban`
    MODIFY `id` int(9) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=16911;

  • Was heißt der Spieler wird nicht gebannt?
    Wird er nicht vom Server gekickt nach dem Befehl, wird der Eintrag nicht in die Tabelle eingetragen, wird er nicht gesperrt beim Wiederverbinden, ... ?


    Was sagt der Server Log und der MySQL Log?

  • Was heißt der Spieler wird nicht gebannt?
    Wird er nicht vom Server gekickt nach dem Befehl, wird der Eintrag nicht in die Tabelle eingetragen, wird er nicht gesperrt beim Wiederverbinden, ... ?


    Was sagt der Server Log und der MySQL Log?

    Wie ich gerade gemerkt habe lädt die Tabelle gar nicht.
    #1064 - Fehler in der SQL-Syntax.

  • Also die Syntax aus dem Code passt.
    Lässt du das über den PAWN Code ausführen, wenn ja, wie sieht der Code dazu aus?

    Alles was dazu gehört habe ich ja im Startpost eingefügt.

  • Ja, aber was meinst du damit:

    Ich habe es so verstanden, dass die gar nicht erstellt wird, oder?
    Wenn dem so ist, mit welchem PAWN Code erstellst du die, den finde ich nämlich oben nicht.

    Ich habe sie ja in meiner sql Datei erstellt und gespeichert. Wenn ich die .sql jetzt hochladen will bekomme ich diesen syntex Error und sie lädt nicht.
    Kurz gesagt: bei hocladen der Datenbank bekonme ich einen Error in myphpadmin.