Timeban

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
  • ok ....
    [ FILTERSCRIPT ] TimeBan Mysql by ZABUS da hast du mal ein system was auf mysql ist , was du aber leicht umschreiben kannst
    [ SCRIPTING ] Benutzung TimeStamp und hier ne erklärung vom timestamp .....


    Hier mal ne kleine Theoriestunde:
    Spieler A wird gebannt , für 1min ... also holst du dir den timestamp mit gettime()+1*60 --> mal 60 damit du die sekunden hast ... das speicherst du dann in die datei , und jedes mal wenn sich ein spieler connectet schaust du ob der jetzige timestamp größer ist als der was gespeichert worden ist. also

    if(gettime()>timestampvonderdatei) //.... wenn das eintrift dann löscht du den eintrag von der datei wieder und
    {
    Login(playerid); //der spieler kann sich ganz normal einloggen
    }
    else // wenn nicht dann schreibst du ihm ne message blabla timeban und kickst ihn anschliesend
    {
    SendClientmessage
    kick...
    }
    ps: das ist nur ein beispiel mit nicht korrekter Syntax es soll nur die Logik von oben wiederspiegeln

  • Okay danke :D
    Jetzt noch kurz ne Frage, was ist an meinem mute command falsch?

    public OnPlayerText(playerid, text[])
    {
    if(muted[playerid] == true)
    {
    SendClientMessage(playerid, COLOR_RED, "Du bist gemuted!");
    return 0;
    }
    return 1;
    }


    public Mute(playerid)
    {
    muted[playerid] = false;
    return 1;
    }



    ocmd:mute(playerid, params[])
    {
    new Grund[128], aName[MAX_PLAYER_NAME], pName[MAX_PLAYER_NAME], str[128], str2[128], pID, time;
    if(sscanf(params, "usi", pID, Grund, time)) SendClientMessage(playerid,COLOR_RED,"Benutzung: /mute [ID] [Grund] [Minuten]");
    else if(Spieler[playerid][pAdmin] < 3) SendClientMessage(playerid,COLOR_RED,"Du bist kein Supporter!");
    else if(muted[pID] == true) SendClientMessage(playerid, COLOR_RED, "Spieler ist bereits gemuted.");
    else
    {
    GetPlayerName(playerid, aName, sizeof(aName));
    GetPlayerName(pID, pName, sizeof(pName));
    format(str, sizeof(str), "Du wurdest von %s für %d Minuten gemuted. Grund: %s", aName, time, Grund);
    format(str2, sizeof(str2), "Du hast %s für %d Minuten gemuted. Grund: %s", pName, time, Grund);
    SendClientMessage(pID, COLOR_RED, str);
    SendClientMessage(playerid, COLOR_RED, str2);
    muted[playerid] = true;
    SetTimer("Mute", time*60*2, 0);
    }
    return 1;
    }



    Es kommen die richtigen Nachrichten, nur ich kann dann noch schreiben :/

  • 1. Wenn du true/false nutzt, muss "muted" ein Boolean sein
    new Bool:muted[MAX_PLAYERS];
    2. Setzt du "muted" immer für playerid auf false, sprich für den der den Befehl eingibt.
    3. Musst du SetTimerEx anstatt SetTimer nutzen.


    edit: Fehler

    Einmal editiert, zuletzt von MnKn ()

  • So siehts aus und ich kann immer noch schreiben wenn ich gemuted bin <_<

    public OnPlayerText(playerid, text[])
    {
    if(muted[playerid] == true)
    {
    SendClientMessage(playerid, COLOR_RED, "Du bist gemuted!");
    return 0;
    }
    return 1;
    }


    public Mute(playerid)
    {
    muted[playerid] = false;
    return 1;
    }



    ocmd:mute(playerid, params[])
    {
    new Grund[128], aName[MAX_PLAYER_NAME], pName[MAX_PLAYER_NAME], str[128], str2[128], pID, time;
    if(sscanf(params, "usi", pID, Grund, time)) SendClientMessage(playerid,COLOR_RED,"Benutzung: /mute [ID] [Grund] [Minuten]");
    else if(Spieler[playerid][pAdmin] < 3) SendClientMessage(playerid,COLOR_RED,"Du bist kein Supporter!");
    else if(muted[pID] == true) SendClientMessage(playerid, COLOR_RED, "Spieler ist bereits gemuted.");
    else
    {
    GetPlayerName(playerid, aName, sizeof(aName));
    GetPlayerName(pID, pName, sizeof(pName));
    format(str, sizeof(str), "Du wurdest von %s für %d Minuten gemuted. Grund: %s", aName, time, Grund);
    format(str2, sizeof(str2), "Du hast %s für %d Minuten gemuted. Grund: %s", pName, time, Grund);
    SendClientMessage(pID, COLOR_RED, str);
    SendClientMessage(playerid, COLOR_RED, str2);
    muted[playerid] = true;
    SetTimerEx("Mute",time*60*2,false,"i",pID);


    }
    return 1;
    }