[MySQL] Timeban - Frage

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
  • Hey,


    ich will in meinem Script das mit mysql läuft einen /timeban befehl einbauen, so das jmd. nur für eine bestimmte Zeit aus dem Spiel ausgegrenzt wird.


    Bitte kommt mir vorerst nicht mit Tutorials, die such ich mir schon selber, ich will nur wissen ob es so funktioniert wie ich es mir gedacht habe:


    Also, jeder Spieler bekommt eine weiter Spalte in der MySQL Tabelle mit dem Namen TimeBan. Die steht wenn er sich registriert oder auch sonst immer Standartmäßig auf 0.


    Bant man nun jmd., soll die Zahl auf die angegeben Minuten hochgesetz werden, und die Datenbank soll nach jeder Minute eine Zahl abziehen, bis man bei null ist. Solange die Zahl größer als 0 ist kann der Spieler halt nicht drauf.
    Meine Frage: Kann die MySQL Datenbank im gegensatz zu dini soetwas oder muss ich das anders lösen?


    Danke schonmal. :)


    MfG Tomsen



    Einmal editiert, zuletzt von Tomsen ()

  • Meine Frage war aber, kann die MySQL Datenbank einfach von der Bannzeit jede Minute eins abziehen bis zur null?


    Nur allein die Abfrage nützt mir nicht, er muss ja die Zeit verringern sonst bleibt die ewig auf zB. 60 Minuten und er ist permanent gebannt.

  • Meine Frage war aber, kann die MySQL Datenbank einfach von der Bannzeit jede Minute eins abziehen bis zur null?


    Nur allein die Abfrage nützt mir nicht, er muss ja die Zeit verringern sonst bleibt die ewig auf zB. 60 Minuten und er ist permanent gebannt.


    Häää??
    Hast du überhaupt ahnung von PWN ? so wie du es geschrieben hast wolltest du es z.b. so machen das wen man "/Tban 2 30" eingibt das dann in der Spielerdatei follgendes gespeichert wird
    SpielerInfo[pID][pTban] = 30; // 30 wurde ja bei /tban eingegeben


    wen du das so machst dann haste direkt verkackt da du es dir so umständlich machst nutz einfach die GetTime funktion.

  • Ich würde dir raten, dich mal mit Timestamps auseinander zu setzen.
    Ein Timestamp sieht so aus: 1347123496
    Realzeit: 08.09.2012 - 18:58:16


    Somit wird der User genau die Tage gebannt, die du in deinem CMD angibst.
    Ein Timestamp ist eine bestimmte Anzahl von Sekunden.
    60*60*24 = 1 Tag


    Beispiel CMD:
    ocmd:tban(playerid,params[])
    {
    if(PlayerInfo[playerid][pAdmin] >= 4)
    {
    new pID, Zeit,sperrzeit,akt,string[400];
    if(sscanf(params,"ui",pID,Zeit)) return SendClientMessage(playerid,COLOR_RED,"Nutzung: /tban [playerid] [Zeit in Tagen]");
    if(Zeit < 0) return SendClientMessage(playerid,COLOR_RED,"Die Zeit kann nicht kleiner als 0 sein.");
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,COLOR_RED,"Dieser Spieler ist nicht Online!");
    Tag = 60 * 60 * 24;
    Zeit = Zeit * Tag;
    sperrzeit = gettime() + Zeit;
    PlayerInfo[pID][pTBan] = sperrzeit;
    Kick(pID);
    }
    else SendClientMessage(playerid,COLOR_RED,"Du bist kein Rang 4 Admin!");
    return 1;
    }


    Abfrage ob er gebannt ist wäre dann:
    if(PlayerInfo[playerid][pTBan] > gettime())


    MfG.
    Me


    ##edit
    Das ist viel einfacher und ressourcensparender als deine Variante.