diff -r ab8bc0494926 -r 7eb2b72e42d8 plugins/basecomm/natives.sp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/basecomm/natives.sp Wed Jul 06 22:34:21 2011 -0400
@@ -0,0 +1,138 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Basecomm
+ * Part of Basecomm plugin, menu and other functionality.
+ *
+ * SourceMod (C)2004-2011 AlliedModders LLC. All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see .
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation. You must obey the GNU General Public License in
+ * all respects for all other code used. Additionally, AlliedModders LLC grants
+ * this exception to all derivative works. AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or .
+ *
+ * Version: $Id$
+ */
+
+ public Native_IsClientGagged(Handle:hPlugin, numParams)
+{
+ new client = GetNativeCell(1);
+ if (client < 1 || client > MaxClients)
+ {
+ return ThrowNativeError(SP_ERROR_NATIVE, "Invalid client index %d", client);
+ }
+
+ if (!IsClientInGame(client))
+ {
+ return ThrowNativeError(SP_ERROR_NATIVE, "Client %d is not in game", client);
+ }
+
+ return g_Gagged[client];
+}
+
+public Native_IsClientMuted(Handle:hPlugin, numParams)
+{
+ new client = GetNativeCell(1);
+ if (client < 1 || client > MaxClients)
+ {
+ return ThrowNativeError(SP_ERROR_NATIVE, "Invalid client index %d", client);
+ }
+
+ if (!IsClientInGame(client))
+ {
+ return ThrowNativeError(SP_ERROR_NATIVE, "Client %d is not in game", client);
+ }
+
+ return g_Muted[client];
+}
+
+public Native_SetClientGag(Handle:hPlugin, numParams)
+{
+ new client = GetNativeCell(1);
+ if (client < 1 || client > MaxClients)
+ {
+ return ThrowNativeError(SP_ERROR_NATIVE, "Invalid client index %d", client);
+ }
+
+ if (!IsClientInGame(client))
+ {
+ return ThrowNativeError(SP_ERROR_NATIVE, "Client %d is not in game", client);
+ }
+
+ new bool:gagState = GetNativeCell(2);
+
+ if (gagState)
+ {
+ if (g_Gagged[client])
+ {
+ return false;
+ }
+
+ PerformGag(-1, client, true);
+ }
+ else
+ {
+ if (!g_Gagged[client])
+ {
+ return false;
+ }
+
+ PerformUnGag(-1, client, true);
+ }
+
+ return true;
+}
+
+public Native_SetClientMute(Handle:hPlugin, numParams)
+{
+ new client = GetNativeCell(1);
+ if (client < 1 || client > MaxClients)
+ {
+ return ThrowNativeError(SP_ERROR_NATIVE, "Invalid client index %d", client);
+ }
+
+ if (!IsClientInGame(client))
+ {
+ return ThrowNativeError(SP_ERROR_NATIVE, "Client %d is not in game", client);
+ }
+
+ new bool:muteState = GetNativeCell(2);
+
+ if (muteState)
+ {
+ if (g_Muted[client])
+ {
+ return false;
+ }
+
+ PerformMute(-1, client, true);
+ }
+ else
+ {
+ if (!g_Muted[client])
+ {
+ return false;
+ }
+
+ PerformUnMute(-1, client, true);
+ }
+
+ return true;
+}