plugins/basecomm/gag.sp
author Ruben Gonzalez <drifter01620@gmail.com>
Thu May 22 09:49:27 2014 -0400 (2014-05-22)
changeset 4378 568f4497ef4a
parent 3887 3e8a8d9903ce
permissions -rw-r--r--
Update CS:GO team score gamedata.
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
	{
skamonkey@3887
    57
		AddTranslatedMenuItem(menu, "0", "Mute Player", client);
pred@1536
    58
	}
pred@1536
    59
	else
pred@1536
    60
	{
skamonkey@3887
    61
		AddTranslatedMenuItem(menu, "1", "UnMute Player", client);
pred@1536
    62
	}
pred@1536
    63
	
pred@1536
    64
	if (!g_Gagged[target])
pred@1536
    65
	{
skamonkey@3887
    66
		AddTranslatedMenuItem(menu, "2", "Gag Player", client);
pred@1536
    67
	}
pred@1536
    68
	else
pred@1536
    69
	{
skamonkey@3887
    70
		AddTranslatedMenuItem(menu, "3", "UnGag Player", client);
pred@1536
    71
	}
pred@1536
    72
	
pred@1536
    73
	if (!g_Muted[target] || !g_Gagged[target])
pred@1536
    74
	{
skamonkey@3887
    75
		AddTranslatedMenuItem(menu, "4", "Silence Player", client);
pred@1536
    76
	}
pred@1536
    77
	else
pred@1536
    78
	{
skamonkey@3887
    79
		AddTranslatedMenuItem(menu, "5", "UnSilence Player", client);
pred@1536
    80
	}
pred@1536
    81
		
pred@1536
    82
	DisplayMenu(menu, client, MENU_TIME_FOREVER);
pred@1536
    83
}
pred@1536
    84
skamonkey@3887
    85
AddTranslatedMenuItem(Handle:menu, const String:opt[], const String:phrase[], client)
skamonkey@3887
    86
{
skamonkey@3887
    87
	decl String:buffer[128];
skamonkey@3887
    88
	Format(buffer, sizeof(buffer), "%T", phrase, client);
skamonkey@3887
    89
	AddMenuItem(menu, opt, buffer);
skamonkey@3887
    90
}
skamonkey@3887
    91
pred@1536
    92
DisplayGagPlayerMenu(client)
pred@1536
    93
{
pred@1536
    94
	new Handle:menu = CreateMenu(MenuHandler_GagPlayer);
pred@1536
    95
	
pred@1536
    96
	decl String:title[100];
dvander@1592
    97
	Format(title, sizeof(title), "%T:", "Gag/Mute player", client);
pred@1536
    98
	SetMenuTitle(menu, title);
pred@1536
    99
	SetMenuExitBackButton(menu, true);
pred@1536
   100
	
dvander@1682
   101
	AddTargetsToMenu(menu, client, true, false);
pred@1536
   102
	
pred@1536
   103
	DisplayMenu(menu, client, MENU_TIME_FOREVER);
pred@1536
   104
}
pred@1536
   105
pred@1536
   106
public AdminMenu_Gag(Handle:topmenu, 
pred@1536
   107
					  TopMenuAction:action,
pred@1536
   108
					  TopMenuObject:object_id,
pred@1536
   109
					  param,
pred@1536
   110
					  String:buffer[],
pred@1536
   111
					  maxlength)
pred@1536
   112
{
pred@1536
   113
	if (action == TopMenuAction_DisplayOption)
pred@1536
   114
	{
dvander@1592
   115
		Format(buffer, maxlength, "%T", "Gag/Mute player", param);
pred@1536
   116
	}
pred@1536
   117
	else if (action == TopMenuAction_SelectOption)
pred@1536
   118
	{
pred@1536
   119
		DisplayGagPlayerMenu(param);
pred@1536
   120
	}
pred@1536
   121
}
pred@1536
   122
pred@1536
   123
public MenuHandler_GagPlayer(Handle:menu, MenuAction:action, param1, param2)
pred@1536
   124
{
pred@1536
   125
	if (action == MenuAction_End)
pred@1536
   126
	{
pred@1536
   127
		CloseHandle(menu);
pred@1536
   128
	}
pred@1536
   129
	else if (action == MenuAction_Cancel)
pred@1536
   130
	{
pred@1536
   131
		if (param2 == MenuCancel_ExitBack && hTopMenu != INVALID_HANDLE)
pred@1536
   132
		{
pred@1536
   133
			DisplayTopMenu(hTopMenu, param1, TopMenuPosition_LastCategory);
pred@1536
   134
		}
pred@1536
   135
	}
pred@1536
   136
	else if (action == MenuAction_Select)
pred@1536
   137
	{
pred@1536
   138
		decl String:info[32];
pred@1536
   139
		new userid, target;
pred@1536
   140
		
pred@1536
   141
		GetMenuItem(menu, param2, info, sizeof(info));
pred@1536
   142
		userid = StringToInt(info);
pred@1536
   143
pred@1536
   144
		if ((target = GetClientOfUserId(userid)) == 0)
pred@1536
   145
		{
pred@1536
   146
			PrintToChat(param1, "[SM] %t", "Player no longer available");
pred@1536
   147
		}
pred@1536
   148
		else if (!CanUserTarget(param1, target))
pred@1536
   149
		{
pred@1536
   150
			PrintToChat(param1, "[SM] %t", "Unable to target");
pred@1536
   151
		}
pred@1536
   152
		else
pred@1536
   153
		{
pred@1536
   154
			g_GagTarget[param1] = GetClientOfUserId(userid);
pred@1536
   155
			DisplayGagTypesMenu(param1);
pred@1536
   156
		}
pred@1536
   157
	}
pred@1536
   158
}
pred@1536
   159
pred@1536
   160
public MenuHandler_GagTypes(Handle:menu, MenuAction:action, param1, param2)
pred@1536
   161
{
pred@1536
   162
	if (action == MenuAction_End)
pred@1536
   163
	{
pred@1536
   164
		CloseHandle(menu);
pred@1536
   165
	}
pred@1536
   166
	else if (action == MenuAction_Cancel)
pred@1536
   167
	{
pred@1536
   168
		if (param2 == MenuCancel_ExitBack && hTopMenu != INVALID_HANDLE)
pred@1536
   169
		{
pred@1536
   170
			DisplayTopMenu(hTopMenu, param1, TopMenuPosition_LastCategory);
pred@1536
   171
		}
pred@1536
   172
	}
pred@1536
   173
	else if (action == MenuAction_Select)
pred@1536
   174
	{
pred@1536
   175
		decl String:info[32];
pred@1536
   176
		new CommType:type;
pred@1536
   177
		
pred@1536
   178
		GetMenuItem(menu, param2, info, sizeof(info));
pred@1536
   179
		type = CommType:StringToInt(info);
dvander@1627
   180
		
dvander@1627
   181
		decl String:name[MAX_NAME_LENGTH];
dvander@1627
   182
		GetClientName(g_GagTarget[param1], name, sizeof(name));
pred@1536
   183
pred@1536
   184
		switch (type)
pred@1536
   185
		{
dvander@1627
   186
			case CommType_Mute:
dvander@1627
   187
			{
dvander@1627
   188
				PerformMute(param1, g_GagTarget[param1]);
dvander@1627
   189
				ShowActivity2(param1, "[SM] ", "%t", "Muted target", "_s", name);
dvander@1627
   190
			}
dvander@1627
   191
			case CommType_UnMute:
dvander@1627
   192
			{
dvander@1627
   193
				PerformUnMute(param1, g_GagTarget[param1]);
dvander@1627
   194
				ShowActivity2(param1, "[SM] ", "%t", "Unmuted target", "_s", name);
dvander@1627
   195
			}
dvander@1627
   196
			case CommType_Gag:
dvander@1627
   197
			{
dvander@1627
   198
				PerformGag(param1, g_GagTarget[param1]);
dvander@1627
   199
				ShowActivity2(param1, "[SM] ", "%t", "Gagged target", "_s", name);
dvander@1627
   200
			}
dvander@1627
   201
			case CommType_UnGag:
dvander@1627
   202
			{
dvander@1627
   203
				PerformUnGag(param1, g_GagTarget[param1]);
dvander@1627
   204
				ShowActivity2(param1, "[SM] ", "%t", "Ungagged target", "_s", name);
dvander@1627
   205
			}
dvander@1627
   206
			case CommType_Silence:
dvander@1627
   207
			{
dvander@1627
   208
				PerformSilence(param1, g_GagTarget[param1]);
dvander@1627
   209
				ShowActivity2(param1, "[SM] ", "%t", "Silenced target", "_s", name);
dvander@1627
   210
			}
dvander@1627
   211
			case CommType_UnSilence:
dvander@1627
   212
			{
dvander@1627
   213
				PerformUnSilence(param1, g_GagTarget[param1]);
dvander@1627
   214
				ShowActivity2(param1, "[SM] ", "%t", "Unsilenced target", "_s", name);
dvander@1627
   215
			}
pred@1536
   216
		}
pred@1536
   217
	}
pred@1536
   218
}
pred@1536
   219
skamonkey@3340
   220
PerformMute(client, target, bool:silent=false)
pred@1536
   221
{
pred@1536
   222
	g_Muted[target] = true;
drifter01620@3645
   223
	SetClientListeningFlags(target, VOICE_MUTED);
drifter01620@3645
   224
	
003@3761
   225
	FireOnClientMute(target, true);
skamonkey@3340
   226
	
skamonkey@3340
   227
	if (!silent)
skamonkey@3340
   228
	{
skamonkey@3340
   229
		LogAction(client, target, "\"%L\" muted \"%L\"", client, target);
skamonkey@3340
   230
	}
pred@1536
   231
}
pred@1536
   232
skamonkey@3340
   233
PerformUnMute(client, target, bool:silent=false)
pred@1536
   234
{
pred@1536
   235
	g_Muted[target] = false;
pred@1536
   236
	if (GetConVarInt(g_Cvar_Deadtalk) == 1 && !IsPlayerAlive(target))
pred@1536
   237
	{
pred@1536
   238
		SetClientListeningFlags(target, VOICE_LISTENALL);
pred@1536
   239
	}
pred@1536
   240
	else if (GetConVarInt(g_Cvar_Deadtalk) == 2 && !IsPlayerAlive(target))
pred@1536
   241
	{
pred@1536
   242
		SetClientListeningFlags(target, VOICE_TEAM);
pred@1536
   243
	}
pred@1536
   244
	else
pred@1536
   245
	{
pred@1536
   246
		SetClientListeningFlags(target, VOICE_NORMAL);
pred@1536
   247
	}
pred@1536
   248
	
003@3761
   249
	FireOnClientMute(target, false);
drifter01620@3645
   250
	
skamonkey@3340
   251
	if (!silent)
skamonkey@3340
   252
	{
skamonkey@3340
   253
		LogAction(client, target, "\"%L\" unmuted \"%L\"", client, target);
skamonkey@3340
   254
	}
pred@1536
   255
}
pred@1536
   256
skamonkey@3340
   257
PerformGag(client, target, bool:silent=false)
pred@1536
   258
{
pred@1536
   259
	g_Gagged[target] = true;
003@3761
   260
	FireOnClientGag(target, true);
skamonkey@3340
   261
	
skamonkey@3340
   262
	if (!silent)
skamonkey@3340
   263
	{
skamonkey@3340
   264
		LogAction(client, target, "\"%L\" gagged \"%L\"", client, target);
skamonkey@3340
   265
	}
pred@1536
   266
}
pred@1536
   267
skamonkey@3340
   268
PerformUnGag(client, target, bool:silent=false)
pred@1536
   269
{
pred@1536
   270
	g_Gagged[target] = false;
003@3761
   271
	FireOnClientGag(target, false);
skamonkey@3340
   272
	
skamonkey@3340
   273
	if (!silent)
skamonkey@3340
   274
	{
skamonkey@3340
   275
		LogAction(client, target, "\"%L\" ungagged \"%L\"", client, target);
skamonkey@3340
   276
	}
pred@1536
   277
}
pred@1536
   278
pred@1536
   279
PerformSilence(client, target)
pred@1536
   280
{
pred@1536
   281
	if (!g_Gagged[target])
pred@1536
   282
	{
pred@1536
   283
		g_Gagged[target] = true;
003@3761
   284
		FireOnClientGag(target, true);
pred@1536
   285
	}
pred@1536
   286
	
pred@1536
   287
	if (!g_Muted[target])
pred@1536
   288
	{
pred@1536
   289
		g_Muted[target] = true;
pred@1536
   290
		SetClientListeningFlags(target, VOICE_MUTED);
003@3761
   291
		FireOnClientMute(target, true);
dvander@1627
   292
	}
pred@1536
   293
	
dvander@1627
   294
	LogAction(client, target, "\"%L\" silenced \"%L\"", client, target);
pred@1536
   295
}
pred@1536
   296
pred@1536
   297
PerformUnSilence(client, target)
pred@1536
   298
{
pred@1536
   299
	if (g_Gagged[target])
pred@1536
   300
	{
pred@1536
   301
		g_Gagged[target] = false;
003@3761
   302
		FireOnClientGag(target, false);
pred@1536
   303
	}
pred@1536
   304
	
pred@1536
   305
	if (g_Muted[target])
pred@1536
   306
	{
pred@1536
   307
		g_Muted[target] = false;
pred@1536
   308
		
pred@1536
   309
		if (GetConVarInt(g_Cvar_Deadtalk) == 1 && !IsPlayerAlive(target))
pred@1536
   310
		{
pred@1536
   311
			SetClientListeningFlags(target, VOICE_LISTENALL);
pred@1536
   312
		}
pred@1536
   313
		else if (GetConVarInt(g_Cvar_Deadtalk) == 2 && !IsPlayerAlive(target))
pred@1536
   314
		{
pred@1536
   315
			SetClientListeningFlags(target, VOICE_TEAM);
pred@1536
   316
		}
pred@1536
   317
		else
pred@1536
   318
		{
pred@1536
   319
			SetClientListeningFlags(target, VOICE_NORMAL);
drifter01620@3645
   320
		}
003@3761
   321
		FireOnClientMute(target, false);
pred@1536
   322
	}
dvander@1627
   323
	
dvander@1627
   324
	LogAction(client, target, "\"%L\" unsilenced \"%L\"", client, target);
pred@1536
   325
}
pred@1536
   326
pred@1536
   327
public Action:Command_Mute(client, args)
pred@1536
   328
{	
pred@1536
   329
	if (args < 1)
pred@1536
   330
	{
pred@1536
   331
		ReplyToCommand(client, "[SM] Usage: sm_mute <player>");
pred@1536
   332
		return Plugin_Handled;
pred@1536
   333
	}
pred@1536
   334
	
pred@1536
   335
	decl String:arg[64];
pred@1536
   336
	GetCmdArg(1, arg, sizeof(arg));
pred@1536
   337
	
dvander@1627
   338
	decl String:target_name[MAX_TARGET_LENGTH];
dvander@1627
   339
	decl target_list[MAXPLAYERS], target_count, bool:tn_is_ml;
dvander@1627
   340
	
dvander@1627
   341
	if ((target_count = ProcessTargetString(
dvander@1627
   342
			arg,
dvander@1627
   343
			client, 
dvander@1627
   344
			target_list, 
dvander@1627
   345
			MAXPLAYERS, 
dvander@1627
   346
			0,
dvander@1627
   347
			target_name,
dvander@1627
   348
			sizeof(target_name),
dvander@1627
   349
			tn_is_ml)) <= 0)
pred@1536
   350
	{
dvander@1627
   351
		ReplyToTargetError(client, target_count);
pred@1536
   352
		return Plugin_Handled;
pred@1536
   353
	}
pred@1536
   354
dvander@1627
   355
	for (new i = 0; i < target_count; i++)
dvander@1627
   356
	{
dvander@1627
   357
		new target = target_list[i];
dvander@1627
   358
		
dvander@1627
   359
		PerformMute(client, target);
dvander@1627
   360
	}
dvander@1627
   361
	
dvander@1627
   362
	if (tn_is_ml)
dvander@1627
   363
	{
dvander@1627
   364
		ShowActivity2(client, "[SM] ", "%t", "Muted target", target_name);
dvander@1627
   365
	}
dvander@1627
   366
	else
dvander@1627
   367
	{
dvander@1627
   368
		ShowActivity2(client, "[SM] ", "%t", "Muted target", "_s", target_name);
dvander@1627
   369
	}
pred@1536
   370
	
pred@1536
   371
	return Plugin_Handled;	
pred@1536
   372
}
pred@1536
   373
pred@1536
   374
public Action:Command_Gag(client, args)
pred@1536
   375
{	
pred@1536
   376
	if (args < 1)
pred@1536
   377
	{
pred@1536
   378
		ReplyToCommand(client, "[SM] Usage: sm_gag <player>");
pred@1536
   379
		return Plugin_Handled;
pred@1536
   380
	}
pred@1536
   381
	
pred@1536
   382
	decl String:arg[64];
pred@1536
   383
	GetCmdArg(1, arg, sizeof(arg));
pred@1536
   384
	
dvander@1627
   385
	decl String:target_name[MAX_TARGET_LENGTH];
dvander@1627
   386
	decl target_list[MAXPLAYERS], target_count, bool:tn_is_ml;
dvander@1627
   387
	
dvander@1627
   388
	if ((target_count = ProcessTargetString(
dvander@1627
   389
			arg,
dvander@1627
   390
			client, 
dvander@1627
   391
			target_list, 
dvander@1627
   392
			MAXPLAYERS, 
dvander@1627
   393
			0,
dvander@1627
   394
			target_name,
dvander@1627
   395
			sizeof(target_name),
dvander@1627
   396
			tn_is_ml)) <= 0)
pred@1536
   397
	{
dvander@1627
   398
		ReplyToTargetError(client, target_count);
pred@1536
   399
		return Plugin_Handled;
pred@1536
   400
	}
pred@1536
   401
dvander@1627
   402
	for (new i = 0; i < target_count; i++)
dvander@1627
   403
	{
dvander@1627
   404
		new target = target_list[i];
dvander@1627
   405
		
dvander@1627
   406
		PerformGag(client, target);
dvander@1627
   407
	}
dvander@1627
   408
	
dvander@1627
   409
	if (tn_is_ml)
dvander@1627
   410
	{
dvander@1627
   411
		ShowActivity2(client, "[SM] ", "%t", "Gagged target", target_name);
dvander@1627
   412
	}
dvander@1627
   413
	else
dvander@1627
   414
	{
dvander@1627
   415
		ShowActivity2(client, "[SM] ", "%t", "Gagged target", "_s", target_name);
dvander@1627
   416
	}
pred@1536
   417
	
pred@1536
   418
	return Plugin_Handled;	
pred@1536
   419
}
pred@1536
   420
pred@1536
   421
public Action:Command_Silence(client, args)
pred@1536
   422
{	
pred@1536
   423
	if (args < 1)
pred@1536
   424
	{
pred@1536
   425
		ReplyToCommand(client, "[SM] Usage: sm_silence <player>");
pred@1536
   426
		return Plugin_Handled;
pred@1536
   427
	}
pred@1536
   428
	
pred@1536
   429
	decl String:arg[64];
pred@1536
   430
	GetCmdArg(1, arg, sizeof(arg));
pred@1536
   431
	
dvander@1627
   432
	decl String:target_name[MAX_TARGET_LENGTH];
dvander@1627
   433
	decl target_list[MAXPLAYERS], target_count, bool:tn_is_ml;
dvander@1627
   434
	
dvander@1627
   435
	if ((target_count = ProcessTargetString(
dvander@1627
   436
			arg,
dvander@1627
   437
			client, 
dvander@1627
   438
			target_list, 
dvander@1627
   439
			MAXPLAYERS, 
dvander@1627
   440
			0,
dvander@1627
   441
			target_name,
dvander@1627
   442
			sizeof(target_name),
dvander@1627
   443
			tn_is_ml)) <= 0)
pred@1536
   444
	{
dvander@1627
   445
		ReplyToTargetError(client, target_count);
pred@1536
   446
		return Plugin_Handled;
pred@1536
   447
	}
pred@1536
   448
dvander@1627
   449
	for (new i = 0; i < target_count; i++)
dvander@1627
   450
	{
dvander@1627
   451
		new target = target_list[i];
dvander@1627
   452
		
dvander@1627
   453
		PerformSilence(client, target);
dvander@1627
   454
	}
dvander@1627
   455
	
dvander@1627
   456
	if (tn_is_ml)
dvander@1627
   457
	{
dvander@1627
   458
		ShowActivity2(client, "[SM] ", "%t", "Silenced target", target_name);
dvander@1627
   459
	}
dvander@1627
   460
	else
dvander@1627
   461
	{
dvander@1627
   462
		ShowActivity2(client, "[SM] ", "%t", "Silenced target", "_s", target_name);
dvander@1627
   463
	}
pred@1536
   464
	
pred@1536
   465
	return Plugin_Handled;	
pred@1536
   466
}
pred@1536
   467
pred@1536
   468
public Action:Command_Unmute(client, args)
pred@1536
   469
{	
pred@1536
   470
	if (args < 1)
pred@1536
   471
	{
pred@1536
   472
		ReplyToCommand(client, "[SM] Usage: sm_unmute <player>");
pred@1536
   473
		return Plugin_Handled;
pred@1536
   474
	}
pred@1536
   475
	
pred@1536
   476
	decl String:arg[64];
pred@1536
   477
	GetCmdArg(1, arg, sizeof(arg));
pred@1536
   478
	
dvander@1627
   479
	decl String:target_name[MAX_TARGET_LENGTH];
dvander@1627
   480
	decl target_list[MAXPLAYERS], target_count, bool:tn_is_ml;
dvander@1627
   481
	
dvander@1627
   482
	if ((target_count = ProcessTargetString(
dvander@1627
   483
			arg,
dvander@1627
   484
			client, 
dvander@1627
   485
			target_list, 
dvander@1627
   486
			MAXPLAYERS, 
dvander@1627
   487
			0,
dvander@1627
   488
			target_name,
dvander@1627
   489
			sizeof(target_name),
dvander@1627
   490
			tn_is_ml)) <= 0)
pred@1536
   491
	{
dvander@1627
   492
		ReplyToTargetError(client, target_count);
pred@1536
   493
		return Plugin_Handled;
pred@1536
   494
	}
pred@1536
   495
dvander@1627
   496
	for (new i = 0; i < target_count; i++)
dvander@1627
   497
	{
dvander@1627
   498
		new target = target_list[i];
dvander@1627
   499
		
dvander@1659
   500
		if (!g_Muted[target])
dvander@1627
   501
		{
dvander@1627
   502
			continue;
dvander@1627
   503
		}
dvander@1627
   504
		
dvander@1627
   505
		PerformUnMute(client, target);
dvander@1627
   506
	}
dvander@1627
   507
	
dvander@1627
   508
	if (tn_is_ml)
dvander@1627
   509
	{
dvander@1627
   510
		ShowActivity2(client, "[SM] ", "%t", "Unmuted target", target_name);
dvander@1627
   511
	}
dvander@1627
   512
	else
dvander@1627
   513
	{
dvander@1627
   514
		ShowActivity2(client, "[SM] ", "%t", "Unmuted target", "_s", target_name);
dvander@1627
   515
	}
pred@1536
   516
	
pred@1536
   517
	return Plugin_Handled;	
pred@1536
   518
}
pred@1536
   519
pred@1536
   520
public Action:Command_Ungag(client, args)
pred@1536
   521
{	
pred@1536
   522
	if (args < 1)
pred@1536
   523
	{
pred@1536
   524
		ReplyToCommand(client, "[SM] Usage: sm_ungag <player>");
pred@1536
   525
		return Plugin_Handled;
pred@1536
   526
	}
pred@1536
   527
	
pred@1536
   528
	decl String:arg[64];
pred@1536
   529
	GetCmdArg(1, arg, sizeof(arg));
pred@1536
   530
	
dvander@1627
   531
	decl String:target_name[MAX_TARGET_LENGTH];
dvander@1627
   532
	decl target_list[MAXPLAYERS], target_count, bool:tn_is_ml;
dvander@1627
   533
	
dvander@1627
   534
	if ((target_count = ProcessTargetString(
dvander@1627
   535
			arg,
dvander@1627
   536
			client, 
dvander@1627
   537
			target_list, 
dvander@1627
   538
			MAXPLAYERS, 
dvander@1627
   539
			0,
dvander@1627
   540
			target_name,
dvander@1627
   541
			sizeof(target_name),
dvander@1627
   542
			tn_is_ml)) <= 0)
pred@1536
   543
	{
dvander@1627
   544
		ReplyToTargetError(client, target_count);
pred@1536
   545
		return Plugin_Handled;
pred@1536
   546
	}
pred@1536
   547
dvander@1627
   548
	for (new i = 0; i < target_count; i++)
dvander@1627
   549
	{
dvander@1627
   550
		new target = target_list[i];
dvander@1627
   551
		
dvander@1627
   552
		PerformUnGag(client, target);
dvander@1627
   553
	}
dvander@1627
   554
	
dvander@1627
   555
	if (tn_is_ml)
dvander@1627
   556
	{
dvander@1627
   557
		ShowActivity2(client, "[SM] ", "%t", "Ungagged target", target_name);
dvander@1627
   558
	}
dvander@1627
   559
	else
dvander@1627
   560
	{
dvander@1627
   561
		ShowActivity2(client, "[SM] ", "%t", "Ungagged target", "_s", target_name);
dvander@1627
   562
	}
pred@1536
   563
	
pred@1536
   564
	return Plugin_Handled;	
pred@1536
   565
}
pred@1536
   566
pred@1536
   567
public Action:Command_Unsilence(client, args)
pred@1536
   568
{	
pred@1536
   569
	if (args < 1)
pred@1536
   570
	{
pred@1536
   571
		ReplyToCommand(client, "[SM] Usage: sm_unsilence <player>");
pred@1536
   572
		return Plugin_Handled;
pred@1536
   573
	}
pred@1536
   574
	
pred@1536
   575
	decl String:arg[64];
pred@1536
   576
	GetCmdArg(1, arg, sizeof(arg));
pred@1536
   577
	
dvander@1627
   578
	decl String:target_name[MAX_TARGET_LENGTH];
dvander@1627
   579
	decl target_list[MAXPLAYERS], target_count, bool:tn_is_ml;
dvander@1627
   580
	
dvander@1627
   581
	if ((target_count = ProcessTargetString(
dvander@1627
   582
			arg,
dvander@1627
   583
			client, 
dvander@1627
   584
			target_list, 
dvander@1627
   585
			MAXPLAYERS, 
dvander@1627
   586
			0,
dvander@1627
   587
			target_name,
dvander@1627
   588
			sizeof(target_name),
dvander@1627
   589
			tn_is_ml)) <= 0)
pred@1536
   590
	{
dvander@1627
   591
		ReplyToTargetError(client, target_count);
pred@1536
   592
		return Plugin_Handled;
pred@1536
   593
	}
pred@1536
   594
dvander@1627
   595
	for (new i = 0; i < target_count; i++)
dvander@1627
   596
	{
dvander@1627
   597
		new target = target_list[i];
dvander@1627
   598
		
dvander@1627
   599
		PerformUnSilence(client, target);
dvander@1627
   600
	}
dvander@1627
   601
	
dvander@1627
   602
	if (tn_is_ml)
dvander@1627
   603
	{
dvander@1627
   604
		ShowActivity2(client, "[SM] ", "%t", "Unsilenced target", target_name);
dvander@1627
   605
	}
dvander@1627
   606
	else
dvander@1627
   607
	{
dvander@1627
   608
		ShowActivity2(client, "[SM] ", "%t", "Unsilenced target", "_s", target_name);
dvander@1627
   609
	}
pred@1536
   610
	
pred@1536
   611
	return Plugin_Handled;	
dvander@1627
   612
}