HTML Code:
#include <sourcemod>
#pragma semicolon 1
public void OnPluginStart()
{
RegConsoleCmd("sm_mute1", Command_Mute);
}
public Action:Command_Mute(id, args)
{
new client = id;
if(client == -1)
{
return Plugin_Handled;
}
DisplayTargetsMenu(client);
return Plugin_Handled;
}
void CheckAndPerformBan(int client, char[] sName, int minutes, char[] reason)
{
ServerCommand("sm_mute \"%s\" %d %s", sName, minutes, reason);
}
public void DisplayTargetsMenu(int client)
{
Menu MainMenu = new Menu(TargetsMenu_CallBack, MenuAction_Select | MenuAction_End);
MainMenu.SetTitle("Select a target!");
char sDisplayBuffer[128], sInfo2[32], sName[MAX_NAME_LENGTH];
//char sName[MAX_NAME_LENGTH], sInfo2[8];
for(int target = 1; target <= MaxClients; target++)
{
if(IsClientInGame(target) && !IsFakeClient(target) && CanUserTarget(client, target))
{
GetClientName(target, sName, sizeof(sName));
IntToString(GetClientUserId(target), sInfo2, sizeof(sInfo2));
Format(sDisplayBuffer, sizeof(sDisplayBuffer), "%s (%s)", sName, sInfo2);
MainMenu.AddItem(sName, sDisplayBuffer);
}
}
SetMenuExitBackButton(MainMenu, true);
DisplayMenu(MainMenu, client, MENU_TIME_FOREVER);
}
public int TargetsMenu_CallBack(Menu MainMenu, MenuAction action, int param1, int param2)
{
switch (action)
{
case MenuAction_Select:
{
char sInfo[128];
GetMenuItem(MainMenu, param2, sInfo, sizeof(sInfo));
DisplayBanTimeMenu(param1, sInfo);
}
case MenuAction_Cancel:
{
}
case MenuAction_End:
{
CloseHandle(MainMenu);
}
}
}
public void DisplayBanTimeMenu(int client, char[] sInfo)
{
Menu BanTimeMenu = new Menu(BanTime_CallBack, MenuAction_Select | MenuAction_End);
BanTimeMenu.SetTitle("Select A Time:");
char sInfoBuffer[128];
Format(sInfoBuffer, sizeof(sInfoBuffer), "%s,30240", sInfo);
BanTimeMenu.AddItem(sInfoBuffer, "1 Week");
Format(sInfoBuffer, sizeof(sInfoBuffer), "%s,0", sInfo);
BanTimeMenu.AddItem(sInfoBuffer, "Permanent");
Format(sInfoBuffer, sizeof(sInfoBuffer), "%s,5", sInfo);
BanTimeMenu.AddItem(sInfoBuffer, "5 Min");
Format(sInfoBuffer, sizeof(sInfoBuffer), "%s,30", sInfo);
BanTimeMenu.AddItem(sInfoBuffer, "30 Min");
Format(sInfoBuffer, sizeof(sInfoBuffer), "%s,360", sInfo);
BanTimeMenu.AddItem(sInfoBuffer, "1 Hour");
Format(sInfoBuffer, sizeof(sInfoBuffer), "%s,1440", sInfo);
BanTimeMenu.AddItem(sInfoBuffer, "1 Day");
Format(sInfoBuffer, sizeof(sInfoBuffer), "%s,30240", sInfo);
BanTimeMenu.AddItem(sInfoBuffer, "3 Weeks");
Format(sInfoBuffer, sizeof(sInfoBuffer), "%s,43830", sInfo);
BanTimeMenu.AddItem(sInfoBuffer, "1 Month");
Format(sInfoBuffer, sizeof(sInfoBuffer), "%s,131490", sInfo);
BanTimeMenu.AddItem(sInfoBuffer, "3 Months");
Format(sInfoBuffer, sizeof(sInfoBuffer), "%s,262980", sInfo);
BanTimeMenu.AddItem(sInfoBuffer, "6 Months");
SetMenuExitBackButton(BanTimeMenu, true);
DisplayMenu(BanTimeMenu, client, MENU_TIME_FOREVER);
}
public int BanTime_CallBack(Handle BanTimeMenu, MenuAction action, int param1, int param2)
{
switch (action)
{
case MenuAction_Select:
{
char sInfo[128];
GetMenuItem(BanTimeMenu, param2, sInfo, sizeof(sInfo));
DisplayBanReasonMenu(param1, sInfo);
}
case MenuAction_Cancel:
{
}
case MenuAction_End:
{
CloseHandle(BanTimeMenu);
}
}
}
void DisplayBanReasonMenu(int client, char[] sInfo)
{
Menu BanReasonMenu = new Menu(BanReason_CallBack, MenuAction_Select | MenuAction_End);
BanReasonMenu.SetTitle("Select A Reason:");
char sInfoBuffer[128];
Format(sInfoBuffer, sizeof(sInfoBuffer), "%s,DJ", sInfo);
BanReasonMenu.AddItem(sInfoBuffer, "DJ");
Format(sInfoBuffer, sizeof(sInfoBuffer), "%s,Mic spamming", sInfo);
BanReasonMenu.AddItem(sInfoBuffer, "Mic spamming");
Format(sInfoBuffer, sizeof(sInfoBuffer), "%s,Foreign Lanquage", sInfo);
BanReasonMenu.AddItem(sInfoBuffer, "Foreign Lanquage");
Format(sInfoBuffer, sizeof(sInfoBuffer), "%s,Ignoring Admin", sInfo);
BanReasonMenu.AddItem(sInfoBuffer, "Ignoring Admin");
Format(sInfoBuffer, sizeof(sInfoBuffer), "%s,Broken Mic", sInfo);
BanReasonMenu.AddItem(sInfoBuffer, "Broken Mic");
SetMenuExitBackButton(BanReasonMenu, true);
DisplayMenu(BanReasonMenu, client, MENU_TIME_FOREVER);
}
public int BanReason_CallBack(Handle BanReasonMenu, MenuAction action, int param1, int param2)
{
switch (action)
{
case MenuAction_Select:
{
char sInfo[128], sTempArray[3][64];
GetMenuItem(BanReasonMenu, param2, sInfo, sizeof(sInfo));
ExplodeString(sInfo, ",", sTempArray, 3, 64);
CheckAndPerformBan(param1, sTempArray[0], StringToInt(sTempArray[1]), sTempArray[2]);
}
case MenuAction_Cancel:
{
}
case MenuAction_End:
{
CloseHandle(BanReasonMenu);
}
}
}