From 9d4e101de9c428a3ae88047eced156219abe3ba3 Mon Sep 17 00:00:00 2001 From: Dogan Date: Thu, 11 Jul 2019 21:46:58 +0200 Subject: [PATCH] New Plugin: ChatFilter includes AntiLenny + new AntiCommand --- ChatFilter/scripting/ChatFilter.sp | 201 +++++++++++++++++++++++++++++ 1 file changed, 201 insertions(+) create mode 100644 ChatFilter/scripting/ChatFilter.sp diff --git a/ChatFilter/scripting/ChatFilter.sp b/ChatFilter/scripting/ChatFilter.sp new file mode 100644 index 00000000..2bba04b6 --- /dev/null +++ b/ChatFilter/scripting/ChatFilter.sp @@ -0,0 +1,201 @@ +#pragma semicolon 1 + +#include +#include +#include +#include +#include +#include +#include + +bool g_bHideLennies[MAXPLAYERS + 1] = { false, ... }; +Handle g_hCookieHideLennies = null; + +bool g_bBlockCommands[MAXPLAYERS + 1] = { false, ... }; +Handle g_hCookieBlockCommands = null; + +#define NUMBEROFLENNIES 23 + +char g_cLennies[NUMBEROFLENNIES][] = {"( ͡° ͜ʖ ͡°)", "͜ʖ", "(° ͜ʖ °)", "( ͝͠°͜ل͝͠°)", "( ͡° ͜ ͡°)", "( ͡°╭͜ʖ╮͡° )", "( ͠° ͜ʖ ͡°)", "( ° ͜ʖ °)", "(╯°□°)╯", "_(ツ)_", "_ツ_", "( ̿°̿ ͜ل͜ ̿°̿ )", "( ͡", "( ͠", "( ͝", "( °", "(͡", "ಠ_ಠ", "͡°", "°͡", "ʖ", "͡", "͜"}; + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public Plugin myinfo = +{ + name = "ChatFilter", + author = "Dogan", + description = "Makes it possible to selfmute several things in chat", + version = "2.0.0", + url = "" +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void OnPluginStart() +{ + RegConsoleCmd("sm_hide_lennies", OnToggleLennies, "Toggle blocking Lennies"); + g_hCookieHideLennies = RegClientCookie("lennies_blocked", "are lennies blocked", CookieAccess_Protected); + + RegConsoleCmd("sm_hide_commands", OnToggleCommands, "Toggle blocking Commands"); + g_hCookieBlockCommands = RegClientCookie("commands_blocked", "are commands blocked", CookieAccess_Protected); + + SetCookieMenuItem(MenuHandler_CookieMenu, 0, "ChatFilter"); +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public Action OnToggleLennies(int client, int args) +{ + ToggleLennies(client); + return Plugin_Handled; +} + +public Action OnToggleCommands(int client, int args) +{ + ToggleCommands(client); + return Plugin_Handled; +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void ShowSettingsMenu(int client) +{ + Menu menu = new Menu(MenuHandler_MainMenu); + + menu.SetTitle("ChatFilter Settings", client); + + char sBuffer[128]; + + Format(sBuffer, sizeof(sBuffer), "Hiding Lennies: %s", g_bHideLennies[client] ? "Enabled" : "Disabled"); + menu.AddItem("0", sBuffer); + + Format(sBuffer, sizeof(sBuffer), "Hiding Commands: %s", g_bBlockCommands[client] ? "Enabled" : "Disabled"); + menu.AddItem("1", sBuffer); + + menu.ExitBackButton = true; + + menu.Display(client, MENU_TIME_FOREVER); +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void MenuHandler_CookieMenu(int client, CookieMenuAction action, any info, char[] buffer, int maxlen) +{ + switch(action) + { + case(CookieMenuAction_DisplayOption): + { + Format(buffer, maxlen, "ChatFilter", client); + } + case(CookieMenuAction_SelectOption): + { + ShowSettingsMenu(client); + } + } +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public int MenuHandler_MainMenu(Menu menu, MenuAction action, int client, int selection) +{ + switch(action) + { + case(MenuAction_Select): + { + switch(selection) + { + case(0): ToggleLennies(client); + case(1): ToggleCommands(client); + } + + ShowSettingsMenu(client); + } + case(MenuAction_Cancel): + { + ShowCookieMenu(client); + } + case(MenuAction_End): + { + delete menu; + } + } +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public Action CCC_OnChatMessage(int client, int author, const char[] message) +{ + int index = FindCharInString(message, '!', false); + + for(int i = 0; i < NUMBEROFLENNIES; i++) + { + if((g_bHideLennies[client] && StrContains(message, g_cLennies[i], false) != -1) || (g_bBlockCommands[client] && (index == 0 || index == 7))) + { + return Plugin_Handled; + } + } + return Plugin_Continue; +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void ToggleLennies(int client) +{ + g_bHideLennies[client] = !g_bHideLennies[client]; + + SetClientCookie(client, g_hCookieHideLennies, g_bHideLennies[client] ? "1" : ""); + CPrintToChat(client, "{cyan}[ChatFilter] {white}%s", g_bHideLennies[client] ? "Lennies are now hidden." : "Lennies are not hidden anymore."); +} + +public void ToggleCommands(int client) +{ + g_bBlockCommands[client] = !g_bBlockCommands[client]; + + SetClientCookie(client, g_hCookieBlockCommands, g_bBlockCommands[client] ? "1" : ""); + CPrintToChat(client, "{cyan}[ChatFilter] {white}%s", g_bBlockCommands[client] ? "Commands are now hidden." : "Commands are not hidden anymore."); +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void OnClientCookiesCached(int client) +{ + char sBuffer[2]; + + GetClientCookie(client, g_hCookieHideLennies, sBuffer, sizeof(sBuffer)); + if(sBuffer[0] != '\0') + { + g_bHideLennies[client] = true; + } + else + { + g_bHideLennies[client] = false; + } + + GetClientCookie(client, g_hCookieBlockCommands, sBuffer, sizeof(sBuffer)); + if(sBuffer[0] != '\0') + { + g_bBlockCommands[client] = true; + } + else + { + g_bBlockCommands[client] = false; + } +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void OnClientDisconnect(int client) +{ + g_bHideLennies[client] = false; + g_bBlockCommands[client] = false; +} \ No newline at end of file