#pragma semicolon 1
#pragma newdecls required
bool
bGag[MAXPLAYERS+1][MAXPLAYERS+1];
public void OnPluginStart()
{
RegConsoleCmd("sm_ignore", Cmd_Ignore, "Disable chat messages from the player");
}
public Action Cmd_Ignore(int client, int args)
{
if(client) SendMenu(client);
return Plugin_Handled;
}
stock void SendMenu(int client, int pos = 0)
{
char item[8], name[MAX_NAME_LENGTH];
Menu menu = new Menu(Menu_Ignore);
menu.SetTitle("Display chat messages from:");
for(int i = 1; i <= MaxClients; i++)
if(IsClientInGame(i) && !IsFakeClient(i) && i != client && CanUserTarget(client, i))
{
FormatEx(item, sizeof(item), "%i", GetClientUserId(i));
if(!GetClientName(i, name, sizeof(name)) || !TrimString(name))
FormatEx(name, sizeof(name), "unnamed (#%s)", item);
Format(name, sizeof(name), "%s %s", bGag[client][i] ? "☐" : "☑", name);
menu.AddItem(item, name);
}
if(!menu.ItemCount) menu.AddItem("", "No targets", ITEMDRAW_DISABLED);
menu.ExitButton = true;
if(!pos) menu.Display(client, 0);
else menu.DisplayAt(client, GetMenuSelectionPosition(), MENU_TIME_FOREVER);
}
public int Menu_Ignore(Menu menu, MenuAction action, int client, int param)
{
switch(action)
{
case MenuAction_Select:
{
char item[8];
menu.GetItem(param, item, sizeof(item));
int id = GetClientOfUserId(StringToInt(item));
if(id) bGag[client][id] = !bGag[client][id];
SendMenu(client, GetMenuSelectionPosition());
}
case MenuAction_End: CloseHandle(menu);
}
return 0;
}
public void OnClientPutInServer(int client)
{
for(int i = 1; i <= MaxClients; i++) bGag[i][client] = false;
}