Raised This Month: $30 Target: $400
 7% 

Solved Temporarily saving a player's message (Anti-Spam plugin)


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author Message
FAQU
Member
Join Date: Sep 2020
Location: Romania
Old 11-20-2020 , 05:56   Temporarily saving a player's message (Anti-Spam plugin)
Reply With Quote #1

I'm trying to make an anti-spam plugin. The basic ideea behind this is that if a player types the same message in chat 3 times in less than 10 seconds, he will be gagged.

The issue that I'm experiencing however is that if another player types anything in chat, the player who spammed won't get gagged anymore. For example if :

Player1: sourcemod
Player1: sourcemod
Player2: anything
Player1: sourcemod --> Player1 will not get gagged, although he spammed.

Basically what I need to make this work properly, is a way of temporarily storing the player's previous message.
Any help would be really appreciated.

Code here:
PHP Code:
#include <sourcemod>
#include <sdktools>

#pragma semicolon 1
#pragma newdecls required

char spamcount[MAXPLAYERS 1] =  { 0, ... };
char playermessage[200];
char samemessage[200];

public 
Plugin myinfo 
{
    
name "Anti-Spam",
    
author "FAQU",
    
description "Gags the player for sending the same message 3 times in less than 10 seconds."
};

public 
void OnPluginStart()
{
    
HookEvent("player_say"OnPlayerSay);
}

public 
void OnClientPutInServer(int client)
{
    
ResetSpamCount(client);
}

public 
void OnClientDisconnect(int client)
{
    
ResetSpamCount(client);
}

public 
Action OnPlayerSay(Handle event, const char[] namebool dontBroadcast)
{
    
int client GetClientOfUserId(GetEventInt(event"userid"));
    
GetEventString(event"text"playermessagesizeof(playermessage));
    
    if (
spamcount[client] == 0)
    {
        
strcopy(samemessagesizeof(samemessage), playermessage);
        
spamcount[client]++;
        
CreateTimer(10.0Timer_ResetLimitclient);
        return 
Plugin_Handled;
    }
    
    if (
spamcount[client] == 1)
    {
        
GetEventString(event"text"playermessagesizeof(playermessage));
        if (
StrEqual(playermessagesamemessage))
        {
            
spamcount[client]++;
        }
        return 
Plugin_Handled;
    }
    
    if (
spamcount[client] == 2)
    {
        
GetEventString(event"text"playermessagesizeof(playermessage));
        if (
StrEqual(playermessagesamemessage))
        {
            
ServerCommand("sm_gag %N"client);
            
ResetSpamCount(client);
        }
        return 
Plugin_Handled;
    }
    else
    return 
Plugin_Handled;
}

public 
Action Timer_ResetLimit(Handle timerint client)
{
    
ResetSpamCount(client);
}

void ResetSpamCount(int client)
{
    
spamcount[client] = 0;


Last edited by FAQU; 11-20-2020 at 11:11.
FAQU is offline
 


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 03:13.


Powered by vBulletin®
Copyright ©2000 - 2023, vBulletin Solutions, Inc.
Theme made by Freecode