Timeban bannt jeden

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
  • Tag


    Wenn ich jemanden Banne (bsp. mich) und ich disconnecte mich mit nem anderen Acc einlogge bin ich auch gebannt eigt soll ja nur der Account gebannt sein
    den ich auch gebannt hab


    new timestamp = gettime();
    new tbanzeit = SpielerInfo[playerid][pTimeban];
    if(tbanzeit > gettime())
    {
    new differenz = tbanzeit - timestamp;
    new minuten = differenz / 60;
    new str[64];
    format(str,sizeof(str),"Info: Du bist noch %d Minuten gebannt.",minuten);
    SendClientMessage(playerid,ROT,str);
    Kick(playerid);
    return 1;
    }

    3 Mal editiert, zuletzt von Mr.Toast () aus folgendem Grund: Neues Problem


  • Scroll auch mal nach rechts,da ist noch eine Anmerkung bei der Zeile mit sscanf.

  • Das sieht soweit eigentlich richtig aus.
    Ich würde mir als nächste einfach mal kompletten Query ausgeben lassen.


    In der Funktion mysql_setint()

    format(query, 128, "UPDATE `%s` SET `%s` = '%d' WHERE `%s` = '%s'", Table, Field, To, Where, Where2);
    print(query); // <---
    mysql_query(query);

    Füg mal ein print hinzu für's Query. Dann kannst auch selber den mal versuchen an der Datenbank auszuführen ( phpmyadmin o.Ä. ). Poste ihn aber auch einfach mal hier.


    Ok Quatsch.


    mysql_SetInt("accounts", "Timeban", timestamp, "Name", sName(playerid));
    SavePlayer(pID); // <--- REFERENZ ***

    mysql_SetInt("accounts", "Timeban", SpielerInfo[playerid][pTimeban], "Name", SpielerInfo[playerid][pName]); <-- REFERENZ ***
    Du überschreibst den alten Eintrag wieder direkt. Du müsstest wohl noch den Timeban in die Variable des Spielers ( SpielerInfo ) schreiben.

  • [11:49:45] UPDATE `accounts` SET `Timeban` = '1348308285' WHERE `Name` = 'xMr_Toastx'
    [11:49:45] UPDATE `accounts` SET `Geld` = '0' WHERE `Name` = 'xMr_Toastx'
    [11:49:45] UPDATE `accounts` SET `Kills` = '0' WHERE `Name` = 'xMr_Toastx'
    [11:49:45] UPDATE `accounts` SET `Tode` = '0' WHERE `Name` = 'xMr_Toastx'
    [11:49:45] UPDATE `accounts` SET `Adminlevel` = '6' WHERE `Name` = 'xMr_Toastx'
    [11:49:45] UPDATE `accounts` SET `Warn` = '0' WHERE `Name` = 'xMr_Toastx'
    [11:49:45] UPDATE `accounts` SET `Warnung` = '0' WHERE `Name` = 'xMr_Toastx'
    [11:49:45] UPDATE `accounts` SET `Ban` = '0' WHERE `Name` = 'xMr_Toastx'
    [11:49:45] UPDATE `accounts` SET `Coins` = '-1' WHERE `Name` = 'xMr_Toastx'
    [11:49:45] UPDATE `accounts` SET `Timeban` = '0' WHERE `Name` = 'xMr_Toastx'
    [11:49:45] UPDATE `accounts` SET `Mute` = '0' WHERE `Name` = 'xMr_Toastx'
    [11:49:45] UPDATE `accounts` SET `Geld` = '0' WHERE `Name` = 'xMr_Toastx'
    [11:49:45] UPDATE `accounts` SET `Kills` = '0' WHERE `Name` = 'xMr_Toastx'
    [11:49:45] UPDATE `accounts` SET `Tode` = '0' WHERE `Name` = 'xMr_Toastx'
    [11:49:45] UPDATE `accounts` SET `Adminlevel` = '6' WHERE `Name` = 'xMr_Toastx'
    [11:49:45] UPDATE `accounts` SET `Warn` = '0' WHERE `Name` = 'xMr_Toastx'
    [11:49:45] UPDATE `accounts` SET `Warnung` = '0' WHERE `Name` = 'xMr_Toastx'
    [11:49:45] UPDATE `accounts` SET `Ban` = '0' WHERE `Name` = 'xMr_Toastx'
    [11:49:45] UPDATE `accounts` SET `Coins` = '-1' WHERE `Name` = 'xMr_Toastx'
    [11:49:45] UPDATE `accounts` SET `Timeban` = '0' WHERE `Name` = 'xMr_Toastx'
    [11:49:45] UPDATE `accounts` SET `Mute` = '0' WHERE `Name` = 'xMr_Toastx'


    Steht da so wie ich es vorher habe


    Hab den Befehl nun so gemacht und getestet


    ocmd:tban(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,1))return SendClientMessage(playerid,ROT,"Info: Du bist kein Admin.");
    new pID,grund[128],string[128],dauer;
    new timestamp;
    timestamp = gettime();
    if(sscanf(params, "uis", pID, dauer,grund))return SendClientMessage(playerid,HELLBLAU, "FEHLER: /tban [ID/Name] [Zeit in Minuten] [Grund]");
    new sekunden = dauer * 60;
    timestamp += sekunden;
    format(string,sizeof(string),"Info: Spieler %s wurde von %s für %d Minuten Gebannt. Grund: %s",sName(pID),sName(playerid),dauer,grund);
    SendClientMessageToAll(ROT,string);
    mysql_SetInt("accounts", "Timeban", SpielerInfo[playerid][pTimeban], "Name", SpielerInfo[playerid][pName]);
    SavePlayer(pID);
    Kick(pID);
    return 1;
    }


    Doch das wird auch nicht gespeichert. ..

  • Der Ban funktioniert nun Nur wenn ich mich banne neuen namen mache und connecte dann bin ich autom . getimebannt . Obwohl nur der eine acc gebannt sein soll


    hier die Abfrage


    new timestamp = gettime();
    new tbanzeit = SpielerInfo[playerid][pTimeban];
    if(timestamp > gettime())
    {
    new differenz = tbanzeit - timestamp;
    new minuten = differenz / 60;
    new str[64];
    format(str,sizeof(str),"Info: Du bist noch %d Minuten gebannt.",minuten);
    SendClientMessage(playerid,ROT,str);
    Kick(playerid);
    return 1;
    }

  • //edit: Problem genau beschrieben


    1) logge mich ein und banne mich mit tban
    2) Ändere mein Namen connecte und seh dann die gebannte Zeit obwohl ich ja mit dem acc nicht gebannt sein sollte



    Code:


    new timestamp = gettime();
    new tbanzeit = SpielerInfo[playerid][pTimeban];
    if(tbanzeit > gettime())
    {
    new differenz = tbanzeit - timestamp;
    new minuten = differenz / 60;
    new str[64];
    format(str,sizeof(str),"Info: Du bist noch %d Minuten gebannt.",minuten);
    SendClientMessage(playerid,ROT,str);
    Kick(playerid);
    return 1;
    }

    Einmal editiert, zuletzt von Mr.Toast () aus folgendem Grund: Hinzugefügt

  • wieso versucht du keine einfache Variable mit z.B.


    SpielerBanned[playerid] diese setzt du:
    1. beim conencten auf 0
    2.beim ausführen des timeban befehls auf 1


    Wenn ein neuer Spieler connected sollte dieser dann wie oben genannt den eintrag 0 erhalten
    Falls du das mittels SQL machst dass ganze dann für ein einfachen eintrag der auf 1 u 0 gesetzt wird in deiner tabelle.

  • Versuchs mal damit ;) (ist der Code ist meinem Selfmade MUSST du anpassen)


    Spoiler anzeigen
    ocmd:tban(playerid, params[])
    {
    if(IsPlayerInGame(playerid))
    {
    if(SpielerInfo[playerid][pAdmin] >= 2)
    {
    new grund[50], Zeit, wert;
    if(sscanf(params, "uis", pID, grund))return SendClientMessage(playerid, WEIß, "Nutze: /tban [ID] [Zeit in Stunden] [Grund]");
    if(Eingeloggt[pID] == 1)
    {
    if(Zeit >= 1)
    {
    wert = gettime() + (60 * 60 * Zeit);
    SendClientMessageToAll(ROT, "AdmCmd: %s wurde von %s für %i Stunden gebannt. Grund: %s", SpielerName(pID), SpielerName(playerid), wert, grund);
    SpielerInfo[pID][pTBan] = wert;
    format(SpielerInfo[pID][pBanAdmin], 16, SpielerName(playerid));
    format(SpielerInfo[pID][pBanGrund], 50, grund);
    SavePlayer(pID);
    Kick(pID);
    }
    else SendClientMessage(playerid, ROT, "Die Timeban Zeit muss mindestens eine Stunde betragen");
    }
    else SendClientMessage(playerid, ROT, " ID: %i (%s) ist nicht Online", pID, SpielerName(pID));
    }
    }
    return 1;
    }

  • new timestamp = gettime();
    new tbanzeit = SpielerInfo[playerid][pTimeban];
    if(timestamp > gettime())
    {
    new differenz = tbanzeit - timestamp;
    new minuten = differenz / 60;
    new str[64];
    format(str,sizeof(str),"Info: Du bist noch %d Minuten gebannt.",minuten);
    SendClientMessage(playerid,ROT,str);
    Kick(playerid);
    return 1;
    }
    Das heißt genau so wie
    Ist
    15 > 15...
    Du hast if total vermieselt.. das kann so nicht klappen..

  • Nicht mal mit einer Abfrage funzt es


    if(SpielerInfo[playerid][pTban] == 1)
    {
    new timestamp = gettime();
    if(SpielerInfo[playerid][pTimeban] > gettime())
    {
    new differenz = SpielerInfo[playerid][pTimeban] - timestamp;
    new minuten = differenz / 60;
    new str[64];
    format(str,sizeof(str),"Info: Du bist noch %d Minuten gebannt.",minuten);
    SendClientMessage(playerid,ROT,str);
    Kick(playerid);
    return 1;
    }
    }


    Kann mir niemand Helfen ? ;(