Spam schutz (anti spam)

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
  • new
    gSpamWarnings[MAX_PLAYERS],
    bool:gTextBlocked[MAX_PLAYERS];



    @gDeleteWarns(playerid);
    @gDeleteWarns(playerid)
    {
    gSpamWarnings[playerid]--;
    return 1;
    }



    @gAllowChat(playerid);
    @gAllowChat(playerid)
    {
    gTextBlocked[playerid] = false;
    SendClientMessage(playerid, 0xFFAA00FF, "Du kannst wieder chatten!");
    return 1;
    }



    public OnPlayerText(playerid, text[])
    {
    if(gTextBlocked[playerid] == true) {
    SendClientMessage(playerid, 0xFF0000FF, "Du darfst nichts schreiben!");
    return 0;
    }
    gSpamWarnings[playerid]++;
    if(gSpamWarnings[playerid] >= 3) {
    gTextBlocked[playerid] = true;
    SendClientMessage(playerid, 0xFF0000FF, "Du wurdest wegen Spam für 5 Minuten gemutet!");
    SetTimerEx("gAllowChat", 300000, false, "i", playerid);
    return 0;
    }
    SetTimerEx("gDeleteWarns", 2500, false, "i", playerid);
    return 1;
    }



    Funktioniert bei mir in abgeänderter Form perfekt.

  • new LastText[MAX_PLAYERS][128],SpokenTheSameText[MAX_PLAYERS];


    public OnPlayerText(playerid, text[])
    {
    if(!strcmp(LastText[playerid],text))
    {
    SpokenTheSameText[playerid]++;
    if(SpokenTheSameText[playerid] == 5)
    {
    new str[64],ppname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,ppname,sizeof ppname);
    format(str,sizeof str,"%s wurde gekickt, weil er gespammt hat.",ppname);
    SendClientMessageToAll(FARBE,str);
    Kick(playerid);
    format(LastText[playerid],sizeof LastText[playerid],"%s",text);
    }
    return 1;
    }


    UNGETESTET!

  • Danke geht so halb.


    wenn ich einmal gespammt habe, und ein anderer kommt aufn server, kann der andere ununterbrochen spamen und wenn der eine wieder aufn server kommt, kann er auch spamen, alsob sich das antispam dann zur ruhe legen würde :D

  • new LastText[MAX_PLAYERS][128],SpokenTheSameText[MAX_PLAYERS];


    public OnPlayerText(playerid, text[])
    {
    if(strlen(LastText[playerid]) != 0)
    {
    if(!strcmp(LastText[playerid],text))
    {
    SpokenTheSameText[playerid]++;
    if(SpokenTheSameText[playerid] == 5)
    {
    new str[64],ppname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,ppname,sizeof ppname);
    format(str,sizeof str,"%s wurde gekickt, weil er gespammt hat.",ppname);
    SendClientMessageToAll(FARBE,str);
    Kick(playerid);
    }
    }
    format(LastText[playerid],sizeof LastText[playerid],"%s",text);
    }
    return 1;
    }


    Probier es mal so.

  • Naja erstmal fehlen da 2 Klammern, dann sollte es so aussehen:


    format(LastText[playerid],sizeof (LastText[playerid]),"%s",text);


    Wenn dann immernoch Errors kommen, probier mal so:


    format(LastText[playerid],128,"%s",text);


    Und wenn dann immer noch Errors kommen, poste sie doch mal hier.

    ...