Timeban läuft nicht aus.

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
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
  • Hallo, ich habe hier im Tutorial Bereich, ein Timeban-Schnipsel gefunden.
    Dieses hab ich mir auf meine wünsche umgeschrieben jedoch läuft der Timeban nicht aus.


    Codes:
    Laden:

    if(PlayerInfo[playerid][pBanned] >= 1 && PlayerInfo[playerid][pAdmin] != 8 || timestamp > PlayerInfo[playerid][bTban])
    {
    format(BanInfo,sizeof(BanInfo),"Du bist gebannt\nGrund: %s\nAdmin: %s \n Dauer: %i",ban,banmin,PlayerInfo[playerid][bTban]);
    ShowPlayerDialog(playerid,1337,DIALOG_STYLE_MSGBOX,"Banübersicht",BanInfo,"","Okay");
    }

    Ban:
    CMD:tban(playerid,params[])
    {
    new ID,grund[64],dauer;
    if(sscanf(params,"us[64]i",ID,grund,dauer))return SendClientMessage(playerid,COLOR_RED,"Verwendung: /tban [Playerid] [Dauer] [Grund]");
    {
    new timestamp,str[254],query[500],name[MAX_PLAYER_NAME],bannername[MAX_PLAYER_NAME];
    timestamp = gettime();
    new sekunden = dauer * 60;
    timestamp += sekunden;
    GetPlayerName(playerid,name,sizeof(name));
    GetPlayerName(ID,bannername,sizeof(bannername));
    format(str,sizeof(str),"AdmMsg: %s wurde von %s für %d Minuten gebannt Grund: %s",name,bannername,dauer,grund);
    SendClientMessageToAll(ROT,str);
    format(query,sizeof(query),"UPDATE user SET Timeban='%i' WHERE username='%s'",dauer,bannername);
    mysql_function_query(Data,query,false,"","");
    }
    return 1;
    }

  • Hilft denke ich nicht so viel weiter,
    aber du hast ein kleinen Fehler gemacht:



    if(sscanf(params,"us[64]i",ID,grund,dauer))return SendClientMessage(playerid,COLOR_RED,"Verwendung: /tban [Playerid] [Dauer] [Grund]");


    Zu:



    if(sscanf(params,"us[64]i",ID,grund,dauer))return SendClientMessage(playerid,COLOR_RED,"Verwendung: /tban [Playerid] [Grund] [Dauer]");


  • Ich seh den Fehler nicht.
    Jedoch bekomm ich keine Errors, keine Warning.
    Es wird alles so ausgeführt wie es soll, nur der Ban bzw die Zeit bleibt stehen. :<


  • Ich seh den Fehler nicht.
    Jedoch bekomm ich keine Errors, keine Warning.
    Es wird alles so ausgeführt wie es soll, nur der Ban bzw die Zeit bleibt stehen. :<


    Achte mal auf die Reihenfolge der Return-Nachricht.
    So wie du es gehabt hast konnte man sich denken, dass zuerst die Playerid, die Dauer und dann der Grund angegeben werden muss, wobei es umgekehrt sein sollte.
    Erst die Playerid, dann der Grund und dann die Dauer, so wie du es vor der Return-Nachricht definiert hast.


  • Achte mal auf die Reihenfolge der Return-Nachricht.
    So wie du es gehabt hast konnte man sich denken, dass zuerst die Playerid, die Dauer und dann der Grund angegeben werden muss, wobei es umgekehrt sein sollte.
    Erst die Playerid, dann der Grund und dann die Dauer, so wie du es vor der Return-Nachricht definiert hast.


    Ahja, okay ich Danke dir für die Korrektur!

  • HALT STOP JETZT REDE ICH! :cursing:


    Was hat jetzt die [64] zwischen den Params verloren? Wer hat sie dahin gepackt?!



    Die ist nämlich falsch ;)


    Nope
    Sobald es raus is krieg ich nen Sscanf warning in der Console angezeigt und damit nicht.
    Außerdem geht es jetzt.
    Lief die ganze zeit ab, hab nur nicht gewusst das der eintrag trodzdem bleibt.

  • Yo da haste Recht, bin momentan Müde und hab mich jetzt seit 4 Monaten nur noch mit Java beschäftigt von daher, Fehler sind in Ordnung, da mein Selfmade schon läääängst fertig ist ;)

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Neben dem sscanf Fehler der ja schon ausführlich besprochen wurde,hast du noch einen Fehler:


    timestamp = gettime();
    new sekunden = dauer * 60;
    timestamp += sekunden;
    format(query,sizeof(query),"UPDATE user SET Timeban='%i' WHERE username='%s'",dauer,bannername);

    Mal überdenken,ob dort wirklich "dauer" richtig ist als Wert für Timeban.

  • Mal abgesehen davon sowas kann man auch alles über MySQL regeln find ich persönlich am praktischen aber nun gut das ist eine subjektive Meinungsbild.


    format(query,sizeof(query),"UPDATE `user` SET `Timeban` = DATE_ADD(NOW(),INTERVAL %d MINUTE) WHERE `username` = '%s';",dauer,bannername);


    Zu dem kann man das auch formatiert auslesen

    DATE_FORMAT(`Timeban`, 'Am %%d.%%m.%%Y um %%T Uhr') AS `LoadTimeban`