plugins/basecomm/gag.sp
author Nicholas Hastings <skamonkey@gmail.com>
Wed Jul 25 08:38:11 2012 -0400 (2012-07-25)
changeset 3588 fb1ad1323d75
parent 3340 7eb2b72e42d8
child 3645 80c9ae186971
permissions -rw-r--r--
Merge.
ferret99gt@1789
     1
/**
ferret99gt@1789
     2
 * vim: set ts=4 :
ferret99gt@1789
     3
 * =============================================================================
ferret99gt@1789
     4
 * SourceMod Basecomm
ferret99gt@1789
     5
 * Part of Basecomm plugin, menu and other functionality.
ferret99gt@1789
     6
 *
ds@1947
     7
 * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
ferret99gt@1789
     8
 * =============================================================================
ferret99gt@1789
     9
 *
ferret99gt@1789
    10
 * This program is free software; you can redistribute it and/or modify it under
ferret99gt@1789
    11
 * the terms of the GNU General Public License, version 3.0, as published by the
ferret99gt@1789
    12
 * Free Software Foundation.
ferret99gt@1789
    13
 * 
ferret99gt@1789
    14
 * This program is distributed in the hope that it will be useful, but WITHOUT
ferret99gt@1789
    15
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
ferret99gt@1789
    16
 * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
ferret99gt@1789
    17
 * details.
ferret99gt@1789
    18
 *
ferret99gt@1789
    19
 * You should have received a copy of the GNU General Public License along with
ferret99gt@1789
    20
 * this program.  If not, see <http://www.gnu.org/licenses/>.
ferret99gt@1789
    21
 *
ferret99gt@1789
    22
 * As a special exception, AlliedModders LLC gives you permission to link the
ferret99gt@1789
    23
 * code of this program (as well as its derivative works) to "Half-Life 2," the
ferret99gt@1789
    24
 * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
ferret99gt@1789
    25
 * by the Valve Corporation.  You must obey the GNU General Public License in
ferret99gt@1789
    26
 * all respects for all other code used.  Additionally, AlliedModders LLC grants
ferret99gt@1789
    27
 * this exception to all derivative works.  AlliedModders LLC defines further
ferret99gt@1789
    28
 * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
ferret99gt@1789
    29
 * or <http://www.sourcemod.net/license.php>.
ferret99gt@1789
    30
 *
ds@1990
    31
 * Version: $Id$
ferret99gt@1789
    32
 */
ferret99gt@1789
    33
pred@1536
    34
enum CommType
pred@1536
    35
{
pred@1536
    36
	CommType_Mute,
pred@1536
    37
	CommType_UnMute,
pred@1536
    38
	CommType_Gag,
pred@1536
    39
	CommType_UnGag,
pred@1536
    40
	CommType_Silence,
pred@1536
    41
	CommType_UnSilence
pred@1536
    42
};
pred@1536
    43
pred@1536
    44
DisplayGagTypesMenu(client)
pred@1536
    45
{
pred@1536
    46
	new Handle:menu = CreateMenu(MenuHandler_GagTypes);
pred@1536
    47
	
pred@1536
    48
	decl String:title[100];
fyrenmoo@2640
    49
	Format(title, sizeof(title), "%T: %N", "Choose Type", client, g_GagTarget[client]);
pred@1536
    50
	SetMenuTitle(menu, title);
pred@1536
    51
	SetMenuExitBackButton(menu, true);
pred@1536
    52
	
pred@1536
    53
	new target = g_GagTarget[client];
pred@1536
    54
	
pred@1536
    55
	if (!g_Muted[target])
pred@1536
    56
	{
pred@1536
    57
		AddMenuItem(menu, "0", "Mute Player");
pred@1536
    58
	}
pred@1536
    59
	else
pred@1536
    60
	{
pred@1536
    61
		AddMenuItem(menu, "1", "UnMute Player");
pred@1536
    62
	}
pred@1536
    63
	
pred@1536
    64
	if (!g_Gagged[target])
pred@1536
    65
	{
pred@1536
    66
		AddMenuItem(menu, "2", "Gag Player");
pred@1536
    67
	}
pred@1536
    68
	else
pred@1536
    69
	{
pred@1536
    70
		AddMenuItem(menu, "3", "UnGag Player");
pred@1536
    71
	}
pred@1536
    72
	
pred@1536
    73
	if (!g_Muted[target] || !g_Gagged[target])
pred@1536
    74
	{
pred@1536
    75
		AddMenuItem(menu, "4", "Silence Player");
pred@1536
    76
	}
pred@1536
    77
	else
pred@1536
    78
	{
pred@1536
    79
		AddMenuItem(menu, "5", "UnSilence Player");
pred@1536
    80
	}
pred@1536
    81
		
pred@1536
    82
	DisplayMenu(menu, client, MENU_TIME_FOREVER);
pred@1536
    83
}
pred@1536
    84
pred@1536
    85
DisplayGagPlayerMenu(client)
pred@1536
    86
{
pred@1536
    87
	new Handle:menu = CreateMenu(MenuHandler_GagPlayer);
pred@1536
    88
	
pred@1536
    89
	decl String:title[100];
dvander@1592
    90
	Format(title, sizeof(title), "%T:", "Gag/Mute player", client);
pred@1536
    91
	SetMenuTitle(menu, title);
pred@1536
    92
	SetMenuExitBackButton(menu, true);
pred@1536
    93
	
dvander@1682
    94
	AddTargetsToMenu(menu, client, true, false);
pred@1536
    95
	
pred@1536
    96
	DisplayMenu(menu, client, MENU_TIME_FOREVER);
pred@1536
    97
}
pred@1536
    98
pred@1536
    99
public AdminMenu_Gag(Handle:topmenu, 
pred@1536
   100
					  TopMenuAction:action,
pred@1536
   101
					  TopMenuObject:object_id,
pred@1536
   102
					  param,
pred@1536
   103
					  String:buffer[],
pred@1536
   104
					  maxlength)
pred@1536
   105
{
pred@1536
   106
	if (action == TopMenuAction_DisplayOption)
pred@1536
   107
	{
dvander@1592
   108
		Format(buffer, maxlength, "%T", "Gag/Mute player", param);
pred@1536
   109
	}
pred@1536
   110
	else if (action == TopMenuAction_SelectOption)
pred@1536
   111
	{
pred@1536
   112
		DisplayGagPlayerMenu(param);
pred@1536
   113
	}
pred@1536
   114
}
pred@1536
   115
pred@1536
   116
public MenuHandler_GagPlayer(Handle:menu, MenuAction:action, param1, param2)
pred@1536
   117
{
pred@1536
   118
	if (action == MenuAction_End)
pred@1536
   119
	{
pred@1536
   120
		CloseHandle(menu);
pred@1536
   121
	}
pred@1536
   122
	else if (action == MenuAction_Cancel)
pred@1536
   123
	{
pred@1536
   124
		if (param2 == MenuCancel_ExitBack && hTopMenu != INVALID_HANDLE)
pred@1536
   125
		{
pred@1536
   126
			DisplayTopMenu(hTopMenu, param1, TopMenuPosition_LastCategory);
pred@1536
   127
		}
pred@1536
   128
	}
pred@1536
   129
	else if (action == MenuAction_Select)
pred@1536
   130
	{
pred@1536
   131
		decl String:info[32];
pred@1536
   132
		new userid, target;
pred@1536
   133
		
pred@1536
   134
		GetMenuItem(menu, param2, info, sizeof(info));
pred@1536
   135
		userid = StringToInt(info);
pred@1536
   136
pred@1536
   137
		if ((target = GetClientOfUserId(userid)) == 0)
pred@1536
   138
		{
pred@1536
   139
			PrintToChat(param1, "[SM] %t", "Player no longer available");
pred@1536
   140
		}
pred@1536
   141
		else if (!CanUserTarget(param1, target))
pred@1536
   142
		{
pred@1536
   143
			PrintToChat(param1, "[SM] %t", "Unable to target");
pred@1536
   144
		}
pred@1536
   145
		else
pred@1536
   146
		{
pred@1536
   147
			g_GagTarget[param1] = GetClientOfUserId(userid);
pred@1536
   148
			DisplayGagTypesMenu(param1);
pred@1536
   149
		}
pred@1536
   150
	}
pred@1536
   151
}
pred@1536
   152
pred@1536
   153
public MenuHandler_GagTypes(Handle:menu, MenuAction:action, param1, param2)
pred@1536
   154
{
pred@1536
   155
	if (action == MenuAction_End)
pred@1536
   156
	{
pred@1536
   157
		CloseHandle(menu);
pred@1536
   158
	}
pred@1536
   159
	else if (action == MenuAction_Cancel)
pred@1536
   160
	{
pred@1536
   161
		if (param2 == MenuCancel_ExitBack && hTopMenu != INVALID_HANDLE)
pred@1536
   162
		{
pred@1536
   163
			DisplayTopMenu(hTopMenu, param1, TopMenuPosition_LastCategory);
pred@1536
   164
		}
pred@1536
   165
	}
pred@1536
   166
	else if (action == MenuAction_Select)
pred@1536
   167
	{
pred@1536
   168
		decl String:info[32];
pred@1536
   169
		new CommType:type;
pred@1536
   170
		
pred@1536
   171
		GetMenuItem(menu, param2, info, sizeof(info));
pred@1536
   172
		type = CommType:StringToInt(info);
dvander@1627
   173
		
dvander@1627
   174
		decl String:name[MAX_NAME_LENGTH];
dvander@1627
   175
		GetClientName(g_GagTarget[param1], name, sizeof(name));
pred@1536
   176
pred@1536
   177
		switch (type)
pred@1536
   178
		{
dvander@1627
   179
			case CommType_Mute:
dvander@1627
   180
			{
dvander@1627
   181
				PerformMute(param1, g_GagTarget[param1]);
dvander@1627
   182
				ShowActivity2(param1, "[SM] ", "%t", "Muted target", "_s", name);
dvander@1627
   183
			}
dvander@1627
   184
			case CommType_UnMute:
dvander@1627
   185
			{
dvander@1627
   186
				PerformUnMute(param1, g_GagTarget[param1]);
dvander@1627
   187
				ShowActivity2(param1, "[SM] ", "%t", "Unmuted target", "_s", name);
dvander@1627
   188
			}
dvander@1627
   189
			case CommType_Gag:
dvander@1627
   190
			{
dvander@1627
   191
				PerformGag(param1, g_GagTarget[param1]);
dvander@1627
   192
				ShowActivity2(param1, "[SM] ", "%t", "Gagged target", "_s", name);
dvander@1627
   193
			}
dvander@1627
   194
			case CommType_UnGag:
dvander@1627
   195
			{
dvander@1627
   196
				PerformUnGag(param1, g_GagTarget[param1]);
dvander@1627
   197
				ShowActivity2(param1, "[SM] ", "%t", "Ungagged target", "_s", name);
dvander@1627
   198
			}
dvander@1627
   199
			case CommType_Silence:
dvander@1627
   200
			{
dvander@1627
   201
				PerformSilence(param1, g_GagTarget[param1]);
dvander@1627
   202
				ShowActivity2(param1, "[SM] ", "%t", "Silenced target", "_s", name);
dvander@1627
   203
			}
dvander@1627
   204
			case CommType_UnSilence:
dvander@1627
   205
			{
dvander@1627
   206
				PerformUnSilence(param1, g_GagTarget[param1]);
dvander@1627
   207
				ShowActivity2(param1, "[SM] ", "%t", "Unsilenced target", "_s", name);
dvander@1627
   208
			}
pred@1536
   209
		}
pred@1536
   210
	}
pred@1536
   211
}
pred@1536
   212
skamonkey@3340
   213
PerformMute(client, target, bool:silent=false)
pred@1536
   214
{
pred@1536
   215
	g_Muted[target] = true;
dvander@1627
   216
	SetClientListeningFlags(target, VOICE_MUTED);	
skamonkey@3340
   217
	
skamonkey@3340
   218
	if (!silent)
skamonkey@3340
   219
	{
skamonkey@3340
   220
		LogAction(client, target, "\"%L\" muted \"%L\"", client, target);
skamonkey@3340
   221
	}
pred@1536
   222
}
pred@1536
   223
skamonkey@3340
   224
PerformUnMute(client, target, bool:silent=false)
pred@1536
   225
{
pred@1536
   226
	g_Muted[target] = false;
pred@1536
   227
	if (GetConVarInt(g_Cvar_Deadtalk) == 1 && !IsPlayerAlive(target))
pred@1536
   228
	{
pred@1536
   229
		SetClientListeningFlags(target, VOICE_LISTENALL);
pred@1536
   230
	}
pred@1536
   231
	else if (GetConVarInt(g_Cvar_Deadtalk) == 2 && !IsPlayerAlive(target))
pred@1536
   232
	{
pred@1536
   233
		SetClientListeningFlags(target, VOICE_TEAM);
pred@1536
   234
	}
pred@1536
   235
	else
pred@1536
   236
	{
pred@1536
   237
		SetClientListeningFlags(target, VOICE_NORMAL);
pred@1536
   238
	}
pred@1536
   239
	
skamonkey@3340
   240
	if (!silent)
skamonkey@3340
   241
	{
skamonkey@3340
   242
		LogAction(client, target, "\"%L\" unmuted \"%L\"", client, target);
skamonkey@3340
   243
	}
pred@1536
   244
}
pred@1536
   245
skamonkey@3340
   246
PerformGag(client, target, bool:silent=false)
pred@1536
   247
{
pred@1536
   248
	g_Gagged[target] = true;
skamonkey@3340
   249
	
skamonkey@3340
   250
	if (!silent)
skamonkey@3340
   251
	{
skamonkey@3340
   252
		LogAction(client, target, "\"%L\" gagged \"%L\"", client, target);
skamonkey@3340
   253
	}
pred@1536
   254
}
pred@1536
   255
skamonkey@3340
   256
PerformUnGag(client, target, bool:silent=false)
pred@1536
   257
{
pred@1536
   258
	g_Gagged[target] = false;
skamonkey@3340
   259
	
skamonkey@3340
   260
	if (!silent)
skamonkey@3340
   261
	{
skamonkey@3340
   262
		LogAction(client, target, "\"%L\" ungagged \"%L\"", client, target);
skamonkey@3340
   263
	}
pred@1536
   264
}
pred@1536
   265
pred@1536
   266
PerformSilence(client, target)
pred@1536
   267
{
pred@1536
   268
	if (!g_Gagged[target])
pred@1536
   269
	{
pred@1536
   270
		g_Gagged[target] = true;
pred@1536
   271
	}
pred@1536
   272
	
pred@1536
   273
	if (!g_Muted[target])
pred@1536
   274
	{
pred@1536
   275
		g_Muted[target] = true;
pred@1536
   276
		SetClientListeningFlags(target, VOICE_MUTED);
dvander@1627
   277
	}
pred@1536
   278
	
dvander@1627
   279
	LogAction(client, target, "\"%L\" silenced \"%L\"", client, target);
pred@1536
   280
}
pred@1536
   281
pred@1536
   282
PerformUnSilence(client, target)
pred@1536
   283
{
pred@1536
   284
	if (g_Gagged[target])
pred@1536
   285
	{
pred@1536
   286
		g_Gagged[target] = false;
pred@1536
   287
	}
pred@1536
   288
	
pred@1536
   289
	if (g_Muted[target])
pred@1536
   290
	{
pred@1536
   291
		g_Muted[target] = false;
pred@1536
   292
		
pred@1536
   293
		if (GetConVarInt(g_Cvar_Deadtalk) == 1 && !IsPlayerAlive(target))
pred@1536
   294
		{
pred@1536
   295
			SetClientListeningFlags(target, VOICE_LISTENALL);
pred@1536
   296
		}
pred@1536
   297
		else if (GetConVarInt(g_Cvar_Deadtalk) == 2 && !IsPlayerAlive(target))
pred@1536
   298
		{
pred@1536
   299
			SetClientListeningFlags(target, VOICE_TEAM);
pred@1536
   300
		}
pred@1536
   301
		else
pred@1536
   302
		{
pred@1536
   303
			SetClientListeningFlags(target, VOICE_NORMAL);
dvander@1627
   304
		}	
pred@1536
   305
	}
dvander@1627
   306
	
dvander@1627
   307
	LogAction(client, target, "\"%L\" unsilenced \"%L\"", client, target);
pred@1536
   308
}
pred@1536
   309
pred@1536
   310
public Action:Command_Mute(client, args)
pred@1536
   311
{	
pred@1536
   312
	if (args < 1)
pred@1536
   313
	{
pred@1536
   314
		ReplyToCommand(client, "[SM] Usage: sm_mute <player>");
pred@1536
   315
		return Plugin_Handled;
pred@1536
   316
	}
pred@1536
   317
	
pred@1536
   318
	decl String:arg[64];
pred@1536
   319
	GetCmdArg(1, arg, sizeof(arg));
pred@1536
   320
	
dvander@1627
   321
	decl String:target_name[MAX_TARGET_LENGTH];
dvander@1627
   322
	decl target_list[MAXPLAYERS], target_count, bool:tn_is_ml;
dvander@1627
   323
	
dvander@1627
   324
	if ((target_count = ProcessTargetString(
dvander@1627
   325
			arg,
dvander@1627
   326
			client, 
dvander@1627
   327
			target_list, 
dvander@1627
   328
			MAXPLAYERS, 
dvander@1627
   329
			0,
dvander@1627
   330
			target_name,
dvander@1627
   331
			sizeof(target_name),
dvander@1627
   332
			tn_is_ml)) <= 0)
pred@1536
   333
	{
dvander@1627
   334
		ReplyToTargetError(client, target_count);
pred@1536
   335
		return Plugin_Handled;
pred@1536
   336
	}
pred@1536
   337
dvander@1627
   338
	for (new i = 0; i < target_count; i++)
dvander@1627
   339
	{
dvander@1627
   340
		new target = target_list[i];
dvander@1627
   341
		
dvander@1627
   342
		PerformMute(client, target);
dvander@1627
   343
	}
dvander@1627
   344
	
dvander@1627
   345
	if (tn_is_ml)
dvander@1627
   346
	{
dvander@1627
   347
		ShowActivity2(client, "[SM] ", "%t", "Muted target", target_name);
dvander@1627
   348
	}
dvander@1627
   349
	else
dvander@1627
   350
	{
dvander@1627
   351
		ShowActivity2(client, "[SM] ", "%t", "Muted target", "_s", target_name);
dvander@1627
   352
	}
pred@1536
   353
	
pred@1536
   354
	return Plugin_Handled;	
pred@1536
   355
}
pred@1536
   356
pred@1536
   357
public Action:Command_Gag(client, args)
pred@1536
   358
{	
pred@1536
   359
	if (args < 1)
pred@1536
   360
	{
pred@1536
   361
		ReplyToCommand(client, "[SM] Usage: sm_gag <player>");
pred@1536
   362
		return Plugin_Handled;
pred@1536
   363
	}
pred@1536
   364
	
pred@1536
   365
	decl String:arg[64];
pred@1536
   366
	GetCmdArg(1, arg, sizeof(arg));
pred@1536
   367
	
dvander@1627
   368
	decl String:target_name[MAX_TARGET_LENGTH];
dvander@1627
   369
	decl target_list[MAXPLAYERS], target_count, bool:tn_is_ml;
dvander@1627
   370
	
dvander@1627
   371
	if ((target_count = ProcessTargetString(
dvander@1627
   372
			arg,
dvander@1627
   373
			client, 
dvander@1627
   374
			target_list, 
dvander@1627
   375
			MAXPLAYERS, 
dvander@1627
   376
			0,
dvander@1627
   377
			target_name,
dvander@1627
   378
			sizeof(target_name),
dvander@1627
   379
			tn_is_ml)) <= 0)
pred@1536
   380
	{
dvander@1627
   381
		ReplyToTargetError(client, target_count);
pred@1536
   382
		return Plugin_Handled;
pred@1536
   383
	}
pred@1536
   384
dvander@1627
   385
	for (new i = 0; i < target_count; i++)
dvander@1627
   386
	{
dvander@1627
   387
		new target = target_list[i];
dvander@1627
   388
		
dvander@1627
   389
		PerformGag(client, target);
dvander@1627
   390
	}
dvander@1627
   391
	
dvander@1627
   392
	if (tn_is_ml)
dvander@1627
   393
	{
dvander@1627
   394
		ShowActivity2(client, "[SM] ", "%t", "Gagged target", target_name);
dvander@1627
   395
	}
dvander@1627
   396
	else
dvander@1627
   397
	{
dvander@1627
   398
		ShowActivity2(client, "[SM] ", "%t", "Gagged target", "_s", target_name);
dvander@1627
   399
	}
pred@1536
   400
	
pred@1536
   401
	return Plugin_Handled;	
pred@1536
   402
}
pred@1536
   403
pred@1536
   404
public Action:Command_Silence(client, args)
pred@1536
   405
{	
pred@1536
   406
	if (args < 1)
pred@1536
   407
	{
pred@1536
   408
		ReplyToCommand(client, "[SM] Usage: sm_silence <player>");
pred@1536
   409
		return Plugin_Handled;
pred@1536
   410
	}
pred@1536
   411
	
pred@1536
   412
	decl String:arg[64];
pred@1536
   413
	GetCmdArg(1, arg, sizeof(arg));
pred@1536
   414
	
dvander@1627
   415
	decl String:target_name[MAX_TARGET_LENGTH];
dvander@1627
   416
	decl target_list[MAXPLAYERS], target_count, bool:tn_is_ml;
dvander@1627
   417
	
dvander@1627
   418
	if ((target_count = ProcessTargetString(
dvander@1627
   419
			arg,
dvander@1627
   420
			client, 
dvander@1627
   421
			target_list, 
dvander@1627
   422
			MAXPLAYERS, 
dvander@1627
   423
			0,
dvander@1627
   424
			target_name,
dvander@1627
   425
			sizeof(target_name),
dvander@1627
   426
			tn_is_ml)) <= 0)
pred@1536
   427
	{
dvander@1627
   428
		ReplyToTargetError(client, target_count);
pred@1536
   429
		return Plugin_Handled;
pred@1536
   430
	}
pred@1536
   431
dvander@1627
   432
	for (new i = 0; i < target_count; i++)
dvander@1627
   433
	{
dvander@1627
   434
		new target = target_list[i];
dvander@1627
   435
		
dvander@1627
   436
		PerformSilence(client, target);
dvander@1627
   437
	}
dvander@1627
   438
	
dvander@1627
   439
	if (tn_is_ml)
dvander@1627
   440
	{
dvander@1627
   441
		ShowActivity2(client, "[SM] ", "%t", "Silenced target", target_name);
dvander@1627
   442
	}
dvander@1627
   443
	else
dvander@1627
   444
	{
dvander@1627
   445
		ShowActivity2(client, "[SM] ", "%t", "Silenced target", "_s", target_name);
dvander@1627
   446
	}
pred@1536
   447
	
pred@1536
   448
	return Plugin_Handled;	
pred@1536
   449
}
pred@1536
   450
pred@1536
   451
public Action:Command_Unmute(client, args)
pred@1536
   452
{	
pred@1536
   453
	if (args < 1)
pred@1536
   454
	{
pred@1536
   455
		ReplyToCommand(client, "[SM] Usage: sm_unmute <player>");
pred@1536
   456
		return Plugin_Handled;
pred@1536
   457
	}
pred@1536
   458
	
pred@1536
   459
	decl String:arg[64];
pred@1536
   460
	GetCmdArg(1, arg, sizeof(arg));
pred@1536
   461
	
dvander@1627
   462
	decl String:target_name[MAX_TARGET_LENGTH];
dvander@1627
   463
	decl target_list[MAXPLAYERS], target_count, bool:tn_is_ml;
dvander@1627
   464
	
dvander@1627
   465
	if ((target_count = ProcessTargetString(
dvander@1627
   466
			arg,
dvander@1627
   467
			client, 
dvander@1627
   468
			target_list, 
dvander@1627
   469
			MAXPLAYERS, 
dvander@1627
   470
			0,
dvander@1627
   471
			target_name,
dvander@1627
   472
			sizeof(target_name),
dvander@1627
   473
			tn_is_ml)) <= 0)
pred@1536
   474
	{
dvander@1627
   475
		ReplyToTargetError(client, target_count);
pred@1536
   476
		return Plugin_Handled;
pred@1536
   477
	}
pred@1536
   478
dvander@1627
   479
	for (new i = 0; i < target_count; i++)
dvander@1627
   480
	{
dvander@1627
   481
		new target = target_list[i];
dvander@1627
   482
		
dvander@1659
   483
		if (!g_Muted[target])
dvander@1627
   484
		{
dvander@1627
   485
			continue;
dvander@1627
   486
		}
dvander@1627
   487
		
dvander@1627
   488
		PerformUnMute(client, target);
dvander@1627
   489
	}
dvander@1627
   490
	
dvander@1627
   491
	if (tn_is_ml)
dvander@1627
   492
	{
dvander@1627
   493
		ShowActivity2(client, "[SM] ", "%t", "Unmuted target", target_name);
dvander@1627
   494
	}
dvander@1627
   495
	else
dvander@1627
   496
	{
dvander@1627
   497
		ShowActivity2(client, "[SM] ", "%t", "Unmuted target", "_s", target_name);
dvander@1627
   498
	}
pred@1536
   499
	
pred@1536
   500
	return Plugin_Handled;	
pred@1536
   501
}
pred@1536
   502
pred@1536
   503
public Action:Command_Ungag(client, args)
pred@1536
   504
{	
pred@1536
   505
	if (args < 1)
pred@1536
   506
	{
pred@1536
   507
		ReplyToCommand(client, "[SM] Usage: sm_ungag <player>");
pred@1536
   508
		return Plugin_Handled;
pred@1536
   509
	}
pred@1536
   510
	
pred@1536
   511
	decl String:arg[64];
pred@1536
   512
	GetCmdArg(1, arg, sizeof(arg));
pred@1536
   513
	
dvander@1627
   514
	decl String:target_name[MAX_TARGET_LENGTH];
dvander@1627
   515
	decl target_list[MAXPLAYERS], target_count, bool:tn_is_ml;
dvander@1627
   516
	
dvander@1627
   517
	if ((target_count = ProcessTargetString(
dvander@1627
   518
			arg,
dvander@1627
   519
			client, 
dvander@1627
   520
			target_list, 
dvander@1627
   521
			MAXPLAYERS, 
dvander@1627
   522
			0,
dvander@1627
   523
			target_name,
dvander@1627
   524
			sizeof(target_name),
dvander@1627
   525
			tn_is_ml)) <= 0)
pred@1536
   526
	{
dvander@1627
   527
		ReplyToTargetError(client, target_count);
pred@1536
   528
		return Plugin_Handled;
pred@1536
   529
	}
pred@1536
   530
dvander@1627
   531
	for (new i = 0; i < target_count; i++)
dvander@1627
   532
	{
dvander@1627
   533
		new target = target_list[i];
dvander@1627
   534
		
dvander@1627
   535
		PerformUnGag(client, target);
dvander@1627
   536
	}
dvander@1627
   537
	
dvander@1627
   538
	if (tn_is_ml)
dvander@1627
   539
	{
dvander@1627
   540
		ShowActivity2(client, "[SM] ", "%t", "Ungagged target", target_name);
dvander@1627
   541
	}
dvander@1627
   542
	else
dvander@1627
   543
	{
dvander@1627
   544
		ShowActivity2(client, "[SM] ", "%t", "Ungagged target", "_s", target_name);
dvander@1627
   545
	}
pred@1536
   546
	
pred@1536
   547
	return Plugin_Handled;	
pred@1536
   548
}
pred@1536
   549
pred@1536
   550
public Action:Command_Unsilence(client, args)
pred@1536
   551
{	
pred@1536
   552
	if (args < 1)
pred@1536
   553
	{
pred@1536
   554
		ReplyToCommand(client, "[SM] Usage: sm_unsilence <player>");
pred@1536
   555
		return Plugin_Handled;
pred@1536
   556
	}
pred@1536
   557
	
pred@1536
   558
	decl String:arg[64];
pred@1536
   559
	GetCmdArg(1, arg, sizeof(arg));
pred@1536
   560
	
dvander@1627
   561
	decl String:target_name[MAX_TARGET_LENGTH];
dvander@1627
   562
	decl target_list[MAXPLAYERS], target_count, bool:tn_is_ml;
dvander@1627
   563
	
dvander@1627
   564
	if ((target_count = ProcessTargetString(
dvander@1627
   565
			arg,
dvander@1627
   566
			client, 
dvander@1627
   567
			target_list, 
dvander@1627
   568
			MAXPLAYERS, 
dvander@1627
   569
			0,
dvander@1627
   570
			target_name,
dvander@1627
   571
			sizeof(target_name),
dvander@1627
   572
			tn_is_ml)) <= 0)
pred@1536
   573
	{
dvander@1627
   574
		ReplyToTargetError(client, target_count);
pred@1536
   575
		return Plugin_Handled;
pred@1536
   576
	}
pred@1536
   577
dvander@1627
   578
	for (new i = 0; i < target_count; i++)
dvander@1627
   579
	{
dvander@1627
   580
		new target = target_list[i];
dvander@1627
   581
		
dvander@1627
   582
		PerformUnSilence(client, target);
dvander@1627
   583
	}
dvander@1627
   584
	
dvander@1627
   585
	if (tn_is_ml)
dvander@1627
   586
	{
dvander@1627
   587
		ShowActivity2(client, "[SM] ", "%t", "Unsilenced target", target_name);
dvander@1627
   588
	}
dvander@1627
   589
	else
dvander@1627
   590
	{
dvander@1627
   591
		ShowActivity2(client, "[SM] ", "%t", "Unsilenced target", "_s", target_name);
dvander@1627
   592
	}
pred@1536
   593
	
pred@1536
   594
	return Plugin_Handled;	
dvander@1627
   595
}