Mysql - Timeban 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
  • ocmd:tban(playerid,params[])
    {
    new pID,grund[64],dauer;
    if(!isPlayerAnAdmin(playerid,1)) return SendClientMessage(playerid,GRAU,"Du bist kein Admin!");
    if(sscanf(params, "us[64]i", pID, grund,dauer))return SendClientMessage(playerid,GRAU, "/tban [SpielerName/ID] [Grund] [Dauer (in Minuten)]");
    TBan(pID,grund,dauer,playerid);
    return 1;
    }


    stock TBan(playerid,const string[],dauer,bannerid)
    {
    new timestamp,str[128];
    timestamp = gettime();
    new sekunden = dauer * 60;
    timestamp += sekunden;
    new name[MAX_PLAYER_NAME],bannername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    GetPlayerName(bannerid,bannername,sizeof(bannername));
    format(str,sizeof(str),"AdmCmd: %s wurde von %s für %d Minuten gebannt, Grund: %s ",name,bannername,dauer,string);
    SendClientMessageToAll(ROT,str);
    Kick(playerid);
    mysql_SetInt("accounts", "tBan", timestamp, "Name", name);
    return 1;
    }



    stock LoadPlayer(playerid)
    {
    new str5[128];
    new timestamp = gettime();
    new bisgebannt = mysql_GetInt("accounts", "tBan", "Name", SpielerName(playerid));




    if(timestamp < bisgebannt)
    {
    new differenz = bisgebannt - timestamp;
    new minuten = differenz / 60;
    new str[64];
    format(str,sizeof(str),"Dein Account ist noch für %i Minuten gebannt!",minuten);
    SendClientMessage(playerid,ROT,str);
    Kick(playerid);
    }
    if(timestamp < bisgemuted)
    {
    new differenz = bisgebannt - timestamp;
    new minuten = differenz / 60;
    new str[64];
    format(str,sizeof(str),"Dein Account ist noch für %i Minuten gemuted!",minuten);
    SendClientMessage(playerid,ROT,str);
    Kick(playerid);
    }


    Der trägt in die Datebank irendeine lange Zahl ein z.b 5345151 aber wenn ich mich mit dem Account einlogge passiert nichts und in der Datenbank geht die Zahl auch nicht runter


    mfg

  • Diese Zahl wird wohl der Unix Timestamp sein, den du auch eingetragen hast oO Aber warum sollte der runter gehen? Das ist in deinem Script nicht veranlasst und auch garnicht notwendig.
    Was verstehst du unter "passiert nichts"? Kannst du einfach normal weiterzocken während du gebanned sein solltest, oder kannst du dich garnicht mehr einloggen?


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'

  • Diese Zahl wird wohl der Unix Timestamp sein, den du auch eingetragen hast oO Aber warum sollte der runter gehen? Das ist in deinem Script nicht veranlasst und auch garnicht notwendig.
    Was verstehst du unter "passiert nichts"? Kannst du einfach normal weiterzocken während du gebanned sein solltest, oder kannst du dich garnicht mehr einloggen?


    Kann mich ganz normal einloggen

  • Also was definitiv in 59 von 60 fällen falsch ist, ist deine Rechnung minuten = differenz / 60, da dort fast immer ne Dezimalzahl und somit Float rauskommen wird.


    Vielleicht liegts schon daran, nen anderen Fehler seh ich so auf Anhieb nicht.


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'

  • new Float:minuten = differenz / 60;
    new str[64];
    format(str,sizeof(str),"Dein Account ist noch für %f Minuten gebannt!",minuten);


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'

  • Also was definitiv in 59 von 60 fällen falsch ist, ist deine Rechnung minuten = differenz / 60, da dort fast immer ne Dezimalzahl und somit Float rauskommen wird.


    Vielleicht liegts schon daran, nen anderen Fehler seh ich so auf Anhieb nicht.


    dann hat er eben das ergebnis ohne komma ;)


    125/60 ist dann 2 (der Rest interessiert dann einfach nicht)

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen