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