SelfMute: add !su menu after 10000 years in development
This commit is contained in:
		
							parent
							
								
									17fac0b9ec
								
							
						
					
					
						commit
						a3ec778ff7
					
				@ -284,47 +284,40 @@ void FormatSpecialMutes(int SpecialMute, char[] aBuf, int BufLen)
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	bool Status = false;
 | 
						bool Status = false;
 | 
				
			||||||
	int MuteCount = RoundFloat(Logarithm(float(MUTE_LAST), 2.0));
 | 
						if(SpecialMute & MUTE_ALL)
 | 
				
			||||||
	for(int i = 0; i <= MuteCount; i++)
 | 
					 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		switch(SpecialMute & RoundFloat(Pow(2.0, float(i))))
 | 
							StrCat(aBuf, BufLen, "Everyone, ");
 | 
				
			||||||
		{
 | 
							Status = true;
 | 
				
			||||||
			case MUTE_SPEC:
 | 
						}
 | 
				
			||||||
			{
 | 
						if(SpecialMute & MUTE_SPEC)
 | 
				
			||||||
				StrCat(aBuf, BufLen, "Spectators, ");
 | 
						{
 | 
				
			||||||
				Status = true;
 | 
							StrCat(aBuf, BufLen, "Spectators, ");
 | 
				
			||||||
			}
 | 
							Status = true;
 | 
				
			||||||
			case MUTE_CT:
 | 
						}
 | 
				
			||||||
			{
 | 
						if(SpecialMute & MUTE_CT)
 | 
				
			||||||
				StrCat(aBuf, BufLen, "CTs, ");
 | 
						{
 | 
				
			||||||
				Status = true;
 | 
							StrCat(aBuf, BufLen, "Counter-Terrorists, ");
 | 
				
			||||||
			}
 | 
							Status = true;
 | 
				
			||||||
			case MUTE_T:
 | 
						}
 | 
				
			||||||
			{
 | 
						if(SpecialMute & MUTE_T)
 | 
				
			||||||
				StrCat(aBuf, BufLen, "Ts, ");
 | 
						{
 | 
				
			||||||
				Status = true;
 | 
							StrCat(aBuf, BufLen, "Terrorists, ");
 | 
				
			||||||
			}
 | 
							Status = true;
 | 
				
			||||||
			case MUTE_DEAD:
 | 
						}
 | 
				
			||||||
			{
 | 
						if(SpecialMute & MUTE_DEAD)
 | 
				
			||||||
				StrCat(aBuf, BufLen, "Dead players, ");
 | 
						{
 | 
				
			||||||
				Status = true;
 | 
							StrCat(aBuf, BufLen, "Dead players, ");
 | 
				
			||||||
			}
 | 
							Status = true;
 | 
				
			||||||
			case MUTE_ALIVE:
 | 
						}
 | 
				
			||||||
			{
 | 
						if(SpecialMute & MUTE_ALIVE)
 | 
				
			||||||
				StrCat(aBuf, BufLen, "Alive players, ");
 | 
						{
 | 
				
			||||||
				Status = true;
 | 
							StrCat(aBuf, BufLen, "Alive players, ");
 | 
				
			||||||
			}
 | 
							Status = true;
 | 
				
			||||||
			case MUTE_NOTFRIENDS:
 | 
						}
 | 
				
			||||||
			{
 | 
						if(SpecialMute & MUTE_NOTFRIENDS)
 | 
				
			||||||
				StrCat(aBuf, BufLen, "Not Steam friends, ");
 | 
						{
 | 
				
			||||||
				Status = true;
 | 
							StrCat(aBuf, BufLen, "Not Steam friends, ");
 | 
				
			||||||
			}
 | 
							Status = true;
 | 
				
			||||||
			case MUTE_ALL:
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
				StrCat(aBuf, BufLen, "Everyone, ");
 | 
					 | 
				
			||||||
				Status = true;
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Cut off last ', '
 | 
						// Cut off last ', '
 | 
				
			||||||
@ -705,7 +698,7 @@ void DisplayMuteMenu(int client)
 | 
				
			|||||||
	menu.AddItem("@dead", "Dead players");
 | 
						menu.AddItem("@dead", "Dead players");
 | 
				
			||||||
	menu.AddItem("@alive", "Alive players");
 | 
						menu.AddItem("@alive", "Alive players");
 | 
				
			||||||
	if(g_Plugin_AdvancedTargeting)
 | 
						if(g_Plugin_AdvancedTargeting)
 | 
				
			||||||
		menu.AddItem("@!friends", "Not Steam friend");
 | 
							menu.AddItem("@!friends", "Not Steam friends");
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
		menu.AddItem("", "", ITEMDRAW_RAWLINE);
 | 
							menu.AddItem("", "", ITEMDRAW_RAWLINE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -900,7 +893,175 @@ public int MenuHandler_MuteMenu(Menu menu, MenuAction action, int param1, int pa
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void DisplayUnMuteMenu(int client)
 | 
					void DisplayUnMuteMenu(int client)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	// TODO: Implement me
 | 
						Menu menu = new Menu(MenuHandler_UnMuteMenu, MenuAction_Select|MenuAction_Cancel|MenuAction_End|MenuAction_DrawItem|MenuAction_DisplayItem);
 | 
				
			||||||
 | 
						menu.SetTitle("[Self-UnMute]");
 | 
				
			||||||
 | 
						menu.ExitButton = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if(g_SpecialMutes[client] & MUTE_ALL)
 | 
				
			||||||
 | 
							menu.AddItem("@all", "Everyone");
 | 
				
			||||||
 | 
						if(g_SpecialMutes[client] & MUTE_SPEC)
 | 
				
			||||||
 | 
							menu.AddItem("@spec", "Spectators");
 | 
				
			||||||
 | 
						if(g_SpecialMutes[client] & MUTE_CT)
 | 
				
			||||||
 | 
							menu.AddItem("@ct", "Counter-Terrorists");
 | 
				
			||||||
 | 
						if(g_SpecialMutes[client] & MUTE_T)
 | 
				
			||||||
 | 
							menu.AddItem("@t", "Terrorists");
 | 
				
			||||||
 | 
						if(g_SpecialMutes[client] & MUTE_DEAD)
 | 
				
			||||||
 | 
							menu.AddItem("@dead", "Dead players");
 | 
				
			||||||
 | 
						if(g_SpecialMutes[client] & MUTE_ALIVE)
 | 
				
			||||||
 | 
							menu.AddItem("@alive", "Alive players");
 | 
				
			||||||
 | 
						if(g_SpecialMutes[client] & MUTE_NOTFRIENDS)
 | 
				
			||||||
 | 
							menu.AddItem("@!friends", "Not Steam friends");
 | 
				
			||||||
 | 
						if(g_SpecialMutes[client])
 | 
				
			||||||
 | 
							menu.AddItem("", "", ITEMDRAW_RAWLINE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int[] aClients = new int[MaxClients + 1];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Count valid players and insert id's into aClients array
 | 
				
			||||||
 | 
						int Players = 0;
 | 
				
			||||||
 | 
						for(int i = 1; i <= MaxClients; i++)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							if(i != client && IsClientInGame(i) && !IsFakeClient(i) && (GetIgnored(client, i) || GetExempt(client, i)))
 | 
				
			||||||
 | 
								aClients[Players++] = i;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// insert player names into g_PlayerNames array
 | 
				
			||||||
 | 
						for(int i = 0; i < Players; i++)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							GetClientName(aClients[i], g_PlayerNames[aClients[i]], sizeof(g_PlayerNames[]));
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// sort aClients array by player name
 | 
				
			||||||
 | 
						SortCustom1D(aClients, Players, SortByPlayerName);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// insert players sorted
 | 
				
			||||||
 | 
						char aBuf[12];
 | 
				
			||||||
 | 
						for(int i = 0; i < Players; i++)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							IntToString(GetClientUserId(aClients[i]), aBuf, sizeof(aBuf));
 | 
				
			||||||
 | 
							menu.AddItem(aBuf, g_PlayerNames[aClients[i]]);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if(!menu.ItemCount)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							delete menu;
 | 
				
			||||||
 | 
							PrintToChat(client, "\x04[Self-Mute]\x01 You haven't muted or exempted anyone.");
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						menu.Display(client, MENU_TIME_FOREVER);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public int MenuHandler_UnMuteMenu(Menu menu, MenuAction action, int param1, int param2)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						switch(action)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							case MenuAction_End:
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								if(param1 != MenuEnd_Selected)
 | 
				
			||||||
 | 
									CloseHandle(menu);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							case MenuAction_Select:
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								int Style;
 | 
				
			||||||
 | 
								char aItem[32];
 | 
				
			||||||
 | 
								char aDisp[MAX_NAME_LENGTH + 4];
 | 
				
			||||||
 | 
								menu.GetItem(param2, aItem, sizeof(aItem), Style, aDisp, sizeof(aDisp));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if(Style != ITEMDRAW_DEFAULT || !aItem[0])
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									PrintToChat(param1, "Internal error: aItem[0] -> %d | Style -> %d", aItem[0], Style);
 | 
				
			||||||
 | 
									return 0;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if(aItem[0] == '@')
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									int Flag = GetSpecialMutesFlags(aItem);
 | 
				
			||||||
 | 
									if(Flag && g_SpecialMutes[param1] & Flag)
 | 
				
			||||||
 | 
										UnMuteSpecial(param1, aItem);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									menu.RemoveItem(GetMenuSelectionPosition());
 | 
				
			||||||
 | 
									menu.DisplayAt(param1, GetMenuSelectionPosition(), MENU_TIME_FOREVER);
 | 
				
			||||||
 | 
									return 0;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								int UserId = StringToInt(aItem);
 | 
				
			||||||
 | 
								int client = GetClientOfUserId(UserId);
 | 
				
			||||||
 | 
								if(!client)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									PrintToChat(param1, "\x04[Self-Mute]\x01 Player no longer available.");
 | 
				
			||||||
 | 
									menu.DisplayAt(param1, GetMenuSelectionPosition(), MENU_TIME_FOREVER);
 | 
				
			||||||
 | 
									return 0;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if(GetIgnored(param1, client))
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									UnIgnore(param1, client);
 | 
				
			||||||
 | 
									PrintToChat(param1, "\x04[Self-Mute]\x01 You have self-unmuted:\x04 %N", client);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								else if(GetExempt(param1, client))
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									UnExempt(param1, client);
 | 
				
			||||||
 | 
									PrintToChat(param1, "\x04[Self-Mute]\x01 You have removed exempt from self-mute:\x04 %N", client);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								menu.RemoveItem(GetMenuSelectionPosition());
 | 
				
			||||||
 | 
								menu.DisplayAt(param1, GetMenuSelectionPosition(), MENU_TIME_FOREVER);
 | 
				
			||||||
 | 
								return 0;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							case MenuAction_DrawItem:
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								int Style;
 | 
				
			||||||
 | 
								char aItem[32];
 | 
				
			||||||
 | 
								menu.GetItem(param2, aItem, sizeof(aItem), Style);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if(!aItem[0])
 | 
				
			||||||
 | 
									return ITEMDRAW_DISABLED;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if(aItem[0] == '@')
 | 
				
			||||||
 | 
									return Style;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								int UserId = StringToInt(aItem);
 | 
				
			||||||
 | 
								int client = GetClientOfUserId(UserId);
 | 
				
			||||||
 | 
								if(!client) // Player disconnected
 | 
				
			||||||
 | 
									return ITEMDRAW_DISABLED;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								return Style;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							case MenuAction_DisplayItem:
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								int Style;
 | 
				
			||||||
 | 
								char aItem[32];
 | 
				
			||||||
 | 
								char aDisp[MAX_NAME_LENGTH + 4];
 | 
				
			||||||
 | 
								menu.GetItem(param2, aItem, sizeof(aItem), Style, aDisp, sizeof(aDisp));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if(!aItem[0])
 | 
				
			||||||
 | 
									return 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								int UserId = StringToInt(aItem);
 | 
				
			||||||
 | 
								int client = GetClientOfUserId(UserId);
 | 
				
			||||||
 | 
								if(!client) // Player disconnected
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									char aBuf[MAX_NAME_LENGTH + 4] = "[D] ";
 | 
				
			||||||
 | 
									StrCat(aBuf, sizeof(aBuf), aDisp);
 | 
				
			||||||
 | 
									if(!StrEqual(aDisp, aBuf))
 | 
				
			||||||
 | 
										return RedrawMenuItem(aBuf);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if(GetExempt(param1, client))
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									char aBuf[MAX_NAME_LENGTH + 4] = "[E] ";
 | 
				
			||||||
 | 
									GetClientName(client, g_PlayerNames[client], sizeof(g_PlayerNames[]));
 | 
				
			||||||
 | 
									StrCat(aBuf, sizeof(aBuf), g_PlayerNames[client]);
 | 
				
			||||||
 | 
									if(!StrEqual(aDisp, aBuf))
 | 
				
			||||||
 | 
										return RedrawMenuItem(aBuf);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								return 0;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user