Timeban Fehler

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
  • Morgen,
    Ich habe mich eben an einen Timeban Befehl gesetzt.
    Das Timeban geht, aber wenn ich sofort wieder connecte kann ich mich einloggen.
    ocmd:tban(playerid,params[])
    {
    new str[180],grund[40],pID,dauer;
    if(Spieler[playerid][SpielerAdmin]<3)return KeinAdmin(playerid)
    if(sscanf(params,"uis[40]",pID,dauer,grund))return SendClientMessage(playerid,grau,"Benutze: /tban [SpielerID | Name] [Dauer(in Minuten)] [Grund]");
    new timestamp=gettime(),sekunden=dauer*60;
    timestamp+=sekunden;
    format(str,180,"AdmCmd: %s wurde von Administrator %s für %d Minuten gebannt, Grund: %s",GetName(pID),GetName(playerid),dauer,grund);
    SendClientMessageToAll(arot,str);
    format(str,180,"UPDATE `accounts` SET `TBan`='%d' WHERE `SpielerName`='%s'",dauer,GetName(pID));
    mysql_tquery(handle,str,"","");
    Kick(pID);
    return 1;
    }


    //OnPlayerConnect
    format(query,128,"SELECT `TBan` FROM `accounts` WHERE `SpielerName`='%s'",GetName(playerid));
    mysql_tquery(handle,query,"OnTBanLoad","d",playerid);


    public OnTBanLoad(playerid)
    {
    new row,field;
    cache_get_data(row,field,handle);
    if(row == 1)
    {
    new timestamp=gettime(),str[128];
    Spieler[playerid][TBan]=cache_get_field_content_int(0,"TBan",handle);
    if(timestamp<Spieler[playerid][TBan])
    {
    new differenz=Spieler[playerid][TBan]-timestamp,minuten=differenz/60;
    format(str,128,"AdmCmd: Du bist noch für %d Minuten gebannt!",minuten);
    SendClientMessage(playerid,arot,str);
    Kick(playerid);
    return 1;
    }
    }
    else if(row==0)return 1;
    return 1;
    }
    Die Minuten werden in der DB auch nicht runtergezählt, und die Nachricht beim connecten kommt auch nicht.

    Einmal editiert, zuletzt von AirM4X ()

  • format(str,180,"UPDATE `accounts` SET `TBan`='%d' WHERE `SpielerName`='%s'",dauer,GetName(pID));
    Da liegt der Fehler: Du speicherst die Dauer ab, willst sie aber später mit einem timestamp vergleichen.


    Versuchs so:
    format(str,180,"UPDATE `accounts` SET `TBan`='%d' WHERE `SpielerName`='%s'",timestamp,GetName(pID));


    Wenn du Spieler[playerid][TBan] nicht in anderen Funktionen verwendest, kannst du das ganze auch über eine lokale Variable lösen.