plugins/basechat.sp
author David Anderson <dvander@alliedmods.net>
Sat Dec 22 08:57:08 2007 +0000 (2007-12-22)
changeset 1813 372939c88bc7
parent 1748 11338c0f8d92
child 1947 e73a1e51833b
permissions -rw-r--r--
fixed amb1305 by making OnClientPostAdminCheck() always occur after OnClientPutInServer(). this is now GUARANTEED. it was undefined before, however the usual case was opposite. if plugins were relying on this, they were written poorly and shouldn't have worked in the first place, especially with the threaded SQL plugin.
ferret99gt@1174
     1
/**
ds@1330
     2
 * vim: set ts=4 :
ds@1330
     3
 * =============================================================================
ds@1330
     4
 * SourceMod Basic Chat Plugin
ds@1330
     5
 * Implements basic communication commands.
ds@1330
     6
 *
ds@1330
     7
 * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
ds@1330
     8
 * =============================================================================
ferret99gt@1174
     9
 *
ds@1330
    10
 * This program is free software; you can redistribute it and/or modify it under
ds@1330
    11
 * the terms of the GNU General Public License, version 3.0, as published by the
ds@1330
    12
 * Free Software Foundation.
ds@1330
    13
 * 
ds@1330
    14
 * This program is distributed in the hope that it will be useful, but WITHOUT
ds@1330
    15
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
ds@1330
    16
 * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
ds@1330
    17
 * details.
ferret99gt@1174
    18
 *
ds@1330
    19
 * You should have received a copy of the GNU General Public License along with
ds@1330
    20
 * this program.  If not, see <http://www.gnu.org/licenses/>.
ds@1330
    21
 *
ds@1330
    22
 * As a special exception, AlliedModders LLC gives you permission to link the
ds@1330
    23
 * code of this program (as well as its derivative works) to "Half-Life 2," the
ds@1330
    24
 * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
ds@1330
    25
 * by the Valve Corporation.  You must obey the GNU General Public License in
ds@1330
    26
 * all respects for all other code used.  Additionally, AlliedModders LLC grants
ds@1330
    27
 * this exception to all derivative works.  AlliedModders LLC defines further
ds@1330
    28
 * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
ds@1330
    29
 * or <http://www.sourcemod.net/license.php>.
ferret99gt@1174
    30
 *
ferret99gt@1174
    31
 * Version: $Id$
ferret99gt@1174
    32
 */
ferret99gt@1174
    33
ds@1330
    34
#pragma semicolon 1
ferret99gt@1174
    35
ds@1330
    36
#include <sourcemod>
ferret99gt@1174
    37
ferret99gt@1174
    38
public Plugin:myinfo = 
ferret99gt@1174
    39
{
ferret99gt@1174
    40
	name = "Basic Chat",
ferret99gt@1174
    41
	author = "AlliedModders LLC",
ferret99gt@1174
    42
	description = "Basic Communication Commands",
ferret99gt@1174
    43
	version = SOURCEMOD_VERSION,
ferret99gt@1174
    44
	url = "http://www.sourcemod.net/"
ferret99gt@1174
    45
};
ferret99gt@1174
    46
ferret99gt@1516
    47
#define CHAT_SYMBOL '@'
ferret99gt@1516
    48
ferret99gt@1179
    49
new String:g_ColorNames[13][10] = {"White", "Red", "Green", "Blue", "Yellow", "Purple", "Cyan", "Orange", "Pink", "Olive", "Lime", "Violet", "Lightblue"};
ferret99gt@1174
    50
new g_Colors[13][3] = {{255,255,255},{255,0,0},{0,255,0},{0,0,255},{255,255,0},{255,0,255},{0,255,255},{255,128,0},{255,0,128},{128,255,0},{0,255,128},{128,0,255},{0,128,255}};
ferret99gt@1174
    51
ferret99gt@1174
    52
new Handle:g_Cvar_Chatmode = INVALID_HANDLE;
ferret99gt@1174
    53
ferret99gt@1663
    54
new bool:g_DoColor = true;
ferret99gt@1174
    55
ferret99gt@1174
    56
public OnPluginStart()
ferret99gt@1174
    57
{
ferret99gt@1174
    58
	LoadTranslations("common.phrases");
ferret99gt@1174
    59
ferret99gt@1174
    60
	g_Cvar_Chatmode = CreateConVar("sm_chat_mode", "1", "Allows player's to send messages to admin chat.", 0, true, 0.0, true, 1.0);
ferret99gt@1174
    61
ferret99gt@1174
    62
	RegConsoleCmd("say", Command_SayChat);
ferret99gt@1174
    63
	RegConsoleCmd("say_team", Command_SayAdmin);		
ferret99gt@1174
    64
	RegAdminCmd("sm_say", Command_SmSay, ADMFLAG_CHAT, "sm_say <message> - sends message to all players");
ferret99gt@1174
    65
	RegAdminCmd("sm_csay", Command_SmCsay, ADMFLAG_CHAT, "sm_csay <message> - sends centered message to all players");
ferret99gt@1277
    66
	RegAdminCmd("sm_hsay", Command_SmHsay, ADMFLAG_CHAT, "sm_hsay <message> - sends hint message to all players");
ferret99gt@1174
    67
	RegAdminCmd("sm_tsay", Command_SmTsay, ADMFLAG_CHAT, "sm_tsay [color] <message> - sends top-left message to all players");
ferret99gt@1174
    68
	RegAdminCmd("sm_chat", Command_SmChat, ADMFLAG_CHAT, "sm_chat <message> - sends message to admins");
ferret99gt@1174
    69
	RegAdminCmd("sm_psay", Command_SmPsay, ADMFLAG_CHAT, "sm_psay <name or #userid> <message> - sends private message");
ferret99gt@1174
    70
	RegAdminCmd("sm_msay", Command_SmMsay, ADMFLAG_CHAT, "sm_msay <message> - sends message as a menu panel");
ferret99gt@1174
    71
	
ferret99gt@1174
    72
	decl String:modname[64];
ferret99gt@1174
    73
	GetGameFolderName(modname, sizeof(modname));
ferret99gt@1174
    74
	
ferret99gt@1663
    75
	if (strcmp(modname, "hl2mp") == 0)
ferret99gt@1174
    76
	{
ferret99gt@1663
    77
		g_DoColor = false;
ferret99gt@1174
    78
	}
ferret99gt@1174
    79
}
ferret99gt@1174
    80
ferret99gt@1174
    81
public Action:Command_SayChat(client, args)
ferret99gt@1174
    82
{	
ferret99gt@1174
    83
	decl String:text[192];
dvander@1469
    84
	if (IsChatTrigger() || GetCmdArgString(text, sizeof(text)) < 1)
dvander@1422
    85
	{
dvander@1422
    86
		return Plugin_Continue;
dvander@1422
    87
	}
ferret99gt@1174
    88
	
ferret99gt@1174
    89
	new startidx;
ferret99gt@1174
    90
	if (text[strlen(text)-1] == '"')
ferret99gt@1174
    91
	{
ferret99gt@1174
    92
		text[strlen(text)-1] = '\0';
ferret99gt@1174
    93
		startidx = 1;
ferret99gt@1174
    94
	}
ferret99gt@1174
    95
	
ferret99gt@1516
    96
	if (text[startidx] != CHAT_SYMBOL)
ferret99gt@1174
    97
		return Plugin_Continue;
ferret99gt@1174
    98
	
ferret99gt@1174
    99
	new msgStart = 1;
ferret99gt@1174
   100
	
ferret99gt@1516
   101
	if (text[startidx+1] == CHAT_SYMBOL)
ferret99gt@1174
   102
	{
ferret99gt@1174
   103
		msgStart = 2;
ferret99gt@1174
   104
		
ferret99gt@1516
   105
		if (text[startidx+2] == CHAT_SYMBOL)
ferret99gt@1174
   106
			msgStart = 3;
ferret99gt@1174
   107
	}
ferret99gt@1174
   108
	
ferret99gt@1174
   109
	decl String:message[192];
ferret99gt@1174
   110
	strcopy(message, 192, text[startidx+msgStart]);
ferret99gt@1174
   111
	
ferret99gt@1174
   112
	decl String:name[64];
ferret99gt@1174
   113
	GetClientName(client, name, sizeof(name));
ferret99gt@1174
   114
	
ferret99gt@1706
   115
	if (msgStart == 1 && CheckCommandAccess(client, "sm_say", ADMFLAG_CHAT)) // sm_say alias
ferret99gt@1174
   116
	{
ferret99gt@1174
   117
		SendChatToAll(name, message);
dvander@1378
   118
		LogAction(client, -1, "%L triggered sm_say (text %s)", client, message);
ferret99gt@1174
   119
	}
ferret99gt@1706
   120
	else if (msgStart == 3 && CheckCommandAccess(client, "sm_csay", ADMFLAG_CHAT)) // sm_csay alias
ferret99gt@1174
   121
	{
ferret99gt@1174
   122
		PrintCenterTextAll("%s: %s", name, message);
dvander@1378
   123
		LogAction(client, -1, "%L triggered sm_csay (text %s)", client, text);		
ferret99gt@1174
   124
	}	
ferret99gt@1706
   125
	else if (msgStart == 2 && CheckCommandAccess(client, "sm_psay", ADMFLAG_CHAT)) // sm_psay alias
ferret99gt@1174
   126
	{
ferret99gt@1178
   127
		decl String:arg[64];
ferret99gt@1174
   128
	
ferret99gt@1179
   129
		new len = BreakString(message, arg, sizeof(arg));
ferret99gt@1178
   130
		new target = FindTarget(client, arg, true, false);
ferret99gt@1174
   131
		
ferret99gt@1178
   132
		if (target == -1)
ferret99gt@1174
   133
			return Plugin_Handled;
ferret99gt@1174
   134
		
ferret99gt@1174
   135
		decl String:name2[64];
ferret99gt@1178
   136
		GetClientName(target, name2, sizeof(name2));
ferret99gt@1174
   137
	
ferret99gt@1174
   138
		if (g_DoColor)
ferret99gt@1174
   139
		{
ferret99gt@1174
   140
			PrintToChat(client, "\x04(Private to %s) %s: \x01%s", name2, name, message[len]);
ferret99gt@1178
   141
			PrintToChat(target, "\x04(Private to %s) %s: \x01%s", name2, name, message[len]);
ferret99gt@1174
   142
		}
ferret99gt@1174
   143
		else
ferret99gt@1174
   144
		{
ferret99gt@1174
   145
			PrintToChat(client, "(Private to %s) %s: %s", name2, name, message[len]);
ferret99gt@1178
   146
			PrintToChat(target, "(Private to %s) %s: %s", name2, name, message[len]);			
ferret99gt@1174
   147
		}
ferret99gt@1174
   148
dvander@1378
   149
		LogAction(client, -1, "%L triggered sm_psay to %L (text %s)", client, target, message);		
ferret99gt@1174
   150
	}
ferret99gt@1174
   151
	else
ferret99gt@1174
   152
		return Plugin_Continue;
ferret99gt@1174
   153
	
ferret99gt@1174
   154
	return Plugin_Handled;	
ferret99gt@1174
   155
}
ferret99gt@1174
   156
ferret99gt@1174
   157
public Action:Command_SayAdmin(client, args)
ferret99gt@1174
   158
{
ferret99gt@1706
   159
	if (!CheckCommandAccess(client, "sm_chat", ADMFLAG_CHAT) && !GetConVarBool(g_Cvar_Chatmode))
dvander@1434
   160
	{
ferret99gt@1174
   161
		return Plugin_Continue;	
dvander@1434
   162
	}
ferret99gt@1174
   163
	
ferret99gt@1174
   164
	decl String:text[192];
ferret99gt@1516
   165
	if (IsChatTrigger() || GetCmdArgString(text, sizeof(text)) < 1)
dvander@1434
   166
	{
dvander@1434
   167
		return Plugin_Continue;
dvander@1434
   168
	}
ferret99gt@1174
   169
	
ferret99gt@1174
   170
	new startidx;
ferret99gt@1174
   171
	if (text[strlen(text)-1] == '"')
ferret99gt@1174
   172
	{
ferret99gt@1174
   173
		text[strlen(text)-1] = '\0';
ferret99gt@1174
   174
		startidx = 1;
ferret99gt@1174
   175
	}
ferret99gt@1174
   176
	
ferret99gt@1516
   177
	if (text[startidx] != CHAT_SYMBOL)
ferret99gt@1174
   178
		return Plugin_Continue;
ferret99gt@1174
   179
	
ferret99gt@1174
   180
	decl String:message[192];
ferret99gt@1174
   181
	strcopy(message, 192, text[startidx+1]);
ferret99gt@1174
   182
ferret99gt@1174
   183
	decl String:name[64];
ferret99gt@1174
   184
	GetClientName(client, name, sizeof(name));
ferret99gt@1174
   185
	
ferret99gt@1174
   186
	SendChatToAdmins(name, message);
dvander@1378
   187
	LogAction(client, -1, "%L triggered sm_chat (text %s)", client, message);
ferret99gt@1174
   188
	
ferret99gt@1174
   189
	return Plugin_Handled;	
ferret99gt@1174
   190
}
ferret99gt@1174
   191
ferret99gt@1174
   192
public Action:Command_SmSay(client, args)
ferret99gt@1174
   193
{
ferret99gt@1174
   194
	if (args < 1)
ferret99gt@1174
   195
	{
ferret99gt@1174
   196
		ReplyToCommand(client, "[SM] Usage: sm_say <message>");
ferret99gt@1174
   197
		return Plugin_Handled;	
ferret99gt@1174
   198
	}
ferret99gt@1174
   199
	
ferret99gt@1174
   200
	decl String:text[192];
ferret99gt@1174
   201
	GetCmdArgString(text, sizeof(text));
ferret99gt@1174
   202
ferret99gt@1174
   203
	decl String:name[64];
ferret99gt@1174
   204
	GetClientName(client, name, sizeof(name));
ferret99gt@1174
   205
			
ferret99gt@1174
   206
	SendChatToAll(name, text);
dvander@1378
   207
	LogAction(client, -1, "%L triggered sm_say (text %s)", client, text);
ferret99gt@1174
   208
	
ferret99gt@1174
   209
	return Plugin_Handled;		
ferret99gt@1174
   210
}
ferret99gt@1174
   211
ferret99gt@1174
   212
public Action:Command_SmCsay(client, args)
ferret99gt@1174
   213
{
ferret99gt@1174
   214
	if (args < 1)
ferret99gt@1174
   215
	{
ferret99gt@1174
   216
		ReplyToCommand(client, "[SM] Usage: sm_csay <message>");
ferret99gt@1174
   217
		return Plugin_Handled;	
ferret99gt@1174
   218
	}
ferret99gt@1174
   219
	
ferret99gt@1174
   220
	decl String:text[192];
ferret99gt@1174
   221
	GetCmdArgString(text, sizeof(text));
ferret99gt@1174
   222
ferret99gt@1174
   223
	new String:name[64];
ferret99gt@1174
   224
	GetClientName(client, name, sizeof(name));
ferret99gt@1174
   225
	
ferret99gt@1174
   226
	PrintCenterTextAll("%s: %s", name, text);
dvander@1378
   227
	LogAction(client, -1, "%L triggered sm_csay (text %s)", client, text);
ferret99gt@1174
   228
	
ferret99gt@1174
   229
	return Plugin_Handled;		
ferret99gt@1174
   230
}
ferret99gt@1174
   231
ferret99gt@1174
   232
public Action:Command_SmHsay(client, args)
ferret99gt@1174
   233
{
ferret99gt@1174
   234
	if (args < 1)
ferret99gt@1174
   235
	{
ferret99gt@1174
   236
		ReplyToCommand(client, "[SM] Usage: sm_hsay <message>");
ferret99gt@1174
   237
		return Plugin_Handled;  
ferret99gt@1174
   238
	}
ferret99gt@1174
   239
    
ferret99gt@1174
   240
	decl String:text[192];
ferret99gt@1174
   241
	GetCmdArgString(text, sizeof(text));
ferret99gt@1174
   242
 
ferret99gt@1174
   243
	decl String:name[64];
ferret99gt@1174
   244
	GetClientName(client, name, sizeof(name));
ferret99gt@1174
   245
    
ferret99gt@1277
   246
	PrintHintTextToAll("%s: %s", name, text);
dvander@1378
   247
	LogAction(client, -1, "%L triggered sm_hsay (text %s)", client, text);
ferret99gt@1174
   248
    
ferret99gt@1174
   249
	return Plugin_Handled;    
ferret99gt@1174
   250
}
ferret99gt@1174
   251
ferret99gt@1174
   252
public Action:Command_SmTsay(client, args)
ferret99gt@1174
   253
{
ferret99gt@1174
   254
	if (args < 1)
ferret99gt@1174
   255
	{
ferret99gt@1174
   256
		ReplyToCommand(client, "[SM] Usage: sm_tsay <message>");
ferret99gt@1174
   257
		return Plugin_Handled;  
ferret99gt@1174
   258
	}
ferret99gt@1174
   259
    
ferret99gt@1174
   260
	decl String:text[192], String:colorStr[16];
ferret99gt@1174
   261
	GetCmdArgString(text, sizeof(text));
ferret99gt@1174
   262
	
ferret99gt@1174
   263
	new len = BreakString(text, colorStr, 16);
ferret99gt@1174
   264
 
ferret99gt@1174
   265
	decl String:name[64];
ferret99gt@1174
   266
	GetClientName(client, name, sizeof(name));
ferret99gt@1174
   267
		
ferret99gt@1174
   268
	new color = FindColor(colorStr);
ferret99gt@1174
   269
ferret99gt@1174
   270
	if (color == -1)    
ferret99gt@1178
   271
		SendDialogToAll(_, "%s: %s", name, text);
ferret99gt@1174
   272
	else
ferret99gt@1174
   273
		SendDialogToAll(color, "%s: %s", name, text[len]);
ferret99gt@1174
   274
dvander@1378
   275
	LogAction(client, -1, "%L triggered sm_tsay (text %s)", client, text);
ferret99gt@1174
   276
    
ferret99gt@1174
   277
	return Plugin_Handled;    
ferret99gt@1174
   278
}
ferret99gt@1174
   279
ferret99gt@1174
   280
public Action:Command_SmChat(client, args)
ferret99gt@1174
   281
{
ferret99gt@1174
   282
	if (args < 1)
ferret99gt@1174
   283
	{
ferret99gt@1174
   284
		ReplyToCommand(client, "[SM] Usage: sm_chat <message>");
ferret99gt@1174
   285
		return Plugin_Handled;	
ferret99gt@1174
   286
	}	
ferret99gt@1174
   287
	
ferret99gt@1174
   288
	decl String:text[192];
ferret99gt@1174
   289
	GetCmdArgString(text, sizeof(text));
ferret99gt@1174
   290
ferret99gt@1174
   291
	decl String:name[64];
ferret99gt@1174
   292
	GetClientName(client, name, sizeof(name));
ferret99gt@1174
   293
	
ferret99gt@1174
   294
	SendChatToAdmins(name, text);
dvander@1378
   295
	LogAction(client, -1, "%L triggered sm_chat (text %s)", client, text);
ferret99gt@1174
   296
	
ferret99gt@1174
   297
	return Plugin_Handled;	
ferret99gt@1174
   298
}
ferret99gt@1174
   299
ferret99gt@1174
   300
public Action:Command_SmPsay(client, args)
ferret99gt@1174
   301
{
ferret99gt@1174
   302
	if (args < 2)
ferret99gt@1174
   303
	{
ferret99gt@1174
   304
		ReplyToCommand(client, "[SM] Usage: sm_psay <name or #userid> <message>");
ferret99gt@1174
   305
		return Plugin_Handled;	
ferret99gt@1174
   306
	}	
ferret99gt@1174
   307
	
ferret99gt@1178
   308
	decl String:text[192], String:arg[64], String:message[192];
ferret99gt@1174
   309
	GetCmdArgString(text, sizeof(text));
ferret99gt@1174
   310
ferret99gt@1178
   311
	new len = BreakString(text, arg, sizeof(arg));
ferret99gt@1174
   312
	BreakString(text[len], message, sizeof(message));
ferret99gt@1174
   313
	
ferret99gt@1178
   314
	new target = FindTarget(client, arg, true, false);
ferret99gt@1178
   315
		
ferret99gt@1178
   316
	if (target == -1)
ferret99gt@1178
   317
		return Plugin_Handled;	
ferret99gt@1178
   318
		
ferret99gt@1174
   319
	decl String:name[64], String:name2[64];
dvander@1748
   320
dvander@1748
   321
	if (client == 0)
dvander@1748
   322
	{
dvander@1748
   323
		name = "Console";
dvander@1748
   324
	}
dvander@1748
   325
	else
dvander@1748
   326
	{
dvander@1748
   327
		GetClientName(client, name, sizeof(name));
dvander@1748
   328
	}
dvander@1748
   329
ferret99gt@1178
   330
	GetClientName(target, name2, sizeof(name2));
ferret99gt@1174
   331
dvander@1748
   332
	if (client == 0)
dvander@1748
   333
	{
dvander@1748
   334
		PrintToServer("(Private: %s) %s: %s", name2, name, message);
dvander@1748
   335
	}
dvander@1748
   336
	else if (g_DoColor)
dvander@1748
   337
	{
dvander@1748
   338
		PrintToChat(client, "\x04(Private: %s) %s: \x01%s", name2, name, message);
dvander@1748
   339
	}
dvander@1748
   340
	else
dvander@1748
   341
	{
dvander@1748
   342
		PrintToChat(client, "(Private: %s) %s: %s", name2, name, message);
dvander@1748
   343
	}
dvander@1748
   344
ferret99gt@1174
   345
	if (g_DoColor)
ferret99gt@1174
   346
	{
ferret99gt@1178
   347
		PrintToChat(target, "\x04(Private: %s) %s: \x01%s", name2, name, message);
ferret99gt@1174
   348
	}
ferret99gt@1174
   349
	else
ferret99gt@1174
   350
	{
ferret99gt@1178
   351
		PrintToChat(target, "(Private: %s) %s: %s", name2, name, message);		
ferret99gt@1174
   352
	}
ferret99gt@1174
   353
dvander@1378
   354
	LogAction(client, -1, "%L triggered sm_psay to %L (text %s)", client, target, message);
ferret99gt@1174
   355
	
ferret99gt@1174
   356
	return Plugin_Handled;	
ferret99gt@1174
   357
}
ferret99gt@1174
   358
ferret99gt@1174
   359
public Action:Command_SmMsay(client, args)
ferret99gt@1174
   360
{
ferret99gt@1174
   361
	if (args < 1)
ferret99gt@1174
   362
	{
ferret99gt@1174
   363
		ReplyToCommand(client, "[SM] Usage: sm_msay <message>");
ferret99gt@1174
   364
		return Plugin_Handled;	
ferret99gt@1174
   365
	}
ferret99gt@1174
   366
	
ferret99gt@1174
   367
	decl String:text[192];
ferret99gt@1174
   368
	GetCmdArgString(text, sizeof(text));
ferret99gt@1174
   369
ferret99gt@1174
   370
	decl String:name[64];
ferret99gt@1174
   371
	GetClientName(client, name, sizeof(name));
ferret99gt@1174
   372
		
ferret99gt@1174
   373
	SendPanelToAll(name, text);
ferret99gt@1174
   374
dvander@1378
   375
	LogAction(client, -1, "%L triggered sm_msay (text %s)", client, text);
ferret99gt@1174
   376
	
ferret99gt@1174
   377
	return Plugin_Handled;		
ferret99gt@1174
   378
}
ferret99gt@1174
   379
ferret99gt@1174
   380
FindColor(String:color[])
ferret99gt@1174
   381
{
ferret99gt@1174
   382
	for (new i = 0; i < 13; i++)
ferret99gt@1174
   383
	{
ferret99gt@1174
   384
		if (strcmp(color, g_ColorNames[i], false) == 0)
ferret99gt@1174
   385
			return i;
ferret99gt@1174
   386
	}
ferret99gt@1174
   387
	
ferret99gt@1174
   388
	return -1;
ferret99gt@1174
   389
}
ferret99gt@1174
   390
ferret99gt@1174
   391
SendChatToAll(String:name[], String:message[])
ferret99gt@1174
   392
{
ferret99gt@1174
   393
	if (g_DoColor)
ferret99gt@1174
   394
	{
ferret99gt@1174
   395
		PrintToChatAll("\x04(ALL) %s: \x01%s", name, message);
ferret99gt@1174
   396
	}
ferret99gt@1174
   397
	else
ferret99gt@1174
   398
	{
ferret99gt@1174
   399
		PrintToChatAll("(ALL) %s: %s", name, message);
ferret99gt@1174
   400
	}
ferret99gt@1174
   401
}
ferret99gt@1174
   402
ferret99gt@1174
   403
SendChatToAdmins(String:name[], String:message[])
ferret99gt@1174
   404
{
ferret99gt@1174
   405
	new iMaxClients = GetMaxClients();
ferret99gt@1174
   406
	
ferret99gt@1174
   407
	for (new i = 1; i <= iMaxClients; i++)
ferret99gt@1174
   408
	{
ferret99gt@1174
   409
		if (IsClientInGame(i))
ferret99gt@1174
   410
		{
ferret99gt@1706
   411
			if (CheckCommandAccess(i, "sm_chat", ADMFLAG_CHAT))
ferret99gt@1174
   412
			{
ferret99gt@1174
   413
				if (g_DoColor)
ferret99gt@1174
   414
				{
ferret99gt@1174
   415
					PrintToChat(i, "\x04(ADMINS) %s: \x01%s", name, message);
ferret99gt@1174
   416
				}
ferret99gt@1174
   417
				else
ferret99gt@1174
   418
				{
ferret99gt@1174
   419
					PrintToChat(i, "(ADMINS) %s: %s", name, message);
ferret99gt@1174
   420
				}
ferret99gt@1174
   421
			}
ferret99gt@1174
   422
		}	
ferret99gt@1174
   423
	}
ferret99gt@1174
   424
}
ferret99gt@1174
   425
ferret99gt@1174
   426
SendDialogToAll(color = 0, String:text[], any:...)
ferret99gt@1174
   427
{
ferret99gt@1174
   428
	new String:message[100];
ferret99gt@1174
   429
	VFormat(message, sizeof(message), text, 3);	
ferret99gt@1174
   430
	
ferret99gt@1174
   431
	new MaxClients = GetMaxClients();
ferret99gt@1174
   432
	for(new i = 1; i < MaxClients; i++)
ferret99gt@1174
   433
	{
ferret99gt@1174
   434
		if(IsClientInGame(i))
ferret99gt@1174
   435
		{
ferret99gt@1174
   436
			new Handle:kv = CreateKeyValues("Stuff", "title", message);
ferret99gt@1174
   437
			KvSetColor(kv, "color", g_Colors[color][0], g_Colors[color][1], g_Colors[color][2], 255);
ferret99gt@1174
   438
			KvSetNum(kv, "level", 1);
ferret99gt@1174
   439
			KvSetNum(kv, "time", 10);
ferret99gt@1174
   440
			
ferret99gt@1174
   441
			CreateDialog(i, kv, DialogType_Msg);
ferret99gt@1174
   442
			
ferret99gt@1174
   443
			CloseHandle(kv);
ferret99gt@1174
   444
		}
ferret99gt@1174
   445
	}	
ferret99gt@1174
   446
}
ferret99gt@1174
   447
ferret99gt@1174
   448
SendPanelToAll(String:name[], String:message[])
ferret99gt@1174
   449
{
ferret99gt@1174
   450
	decl String:title[100];
ferret99gt@1174
   451
	Format(title, 64, "%s:", name);
ferret99gt@1174
   452
	
ferret99gt@1174
   453
	ReplaceString(message, 192, "\\n", "\n");
ferret99gt@1174
   454
	
ferret99gt@1174
   455
	new Handle:mSayPanel = CreatePanel();
ferret99gt@1174
   456
	SetPanelTitle(mSayPanel, title);
ferret99gt@1174
   457
	DrawPanelItem(mSayPanel, "", ITEMDRAW_SPACER);
ferret99gt@1174
   458
	DrawPanelText(mSayPanel, message);
ferret99gt@1174
   459
	DrawPanelItem(mSayPanel, "", ITEMDRAW_SPACER);
ferret99gt@1174
   460
ferret99gt@1174
   461
	SetPanelCurrentKey(mSayPanel, 10);
ferret99gt@1174
   462
	DrawPanelItem(mSayPanel, "Exit", ITEMDRAW_CONTROL);
ferret99gt@1174
   463
ferret99gt@1174
   464
	new MaxClients = GetMaxClients();
ferret99gt@1174
   465
	for(new i = 1; i < MaxClients; i++)
ferret99gt@1174
   466
	{
ferret99gt@1174
   467
		if(IsClientInGame(i) && !IsFakeClient(i))
ferret99gt@1174
   468
		{
ferret99gt@1174
   469
			SendPanelToClient(mSayPanel, i, Handler_DoNothing, 10);
ferret99gt@1174
   470
		}
ferret99gt@1174
   471
	}
ferret99gt@1174
   472
ferret99gt@1174
   473
	CloseHandle(mSayPanel);
ferret99gt@1174
   474
}
ferret99gt@1174
   475
ferret99gt@1174
   476
public Handler_DoNothing(Handle:menu, MenuAction:action, param1, param2)
ferret99gt@1174
   477
{
ferret99gt@1174
   478
	/* Do nothing */
ds@1268
   479
}