Beta version of SCP. This really doesn't give the server owner anything extra other than CSGO support (assuming it uses the same chat translation strings that CSS does).
But for developers, I have added a new private forward support, while still keeping the old global forward for backwards compatibility. This new private forward (with its native) is what's going to be updated and built upon from now on; the global forward will remain the same throughout all versions, however.
Here's the new include file:
PHP Code:
/************************************************************************
*************************************************************************
Simple Plugins
Description:
Included file for Simple Chat Processor in the Simple Plugins project
*************************************************************************
*************************************************************************
This file is part of Simple Plugins project.
This plugin is free software: you can redistribute
it and/or modify it under the terms of the GNU General Public License as
published by the Free Software Foundation, either version 3 of the License, or
later version.
This plugin 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 plugin. If not, see <http://www.gnu.org/licenses/>.
*************************************************************************
*************************************************************************
File Information
$Id$
$Author$
$Revision$
$Date$
$LastChangedBy$
$LastChangedDate$
$URL$
$Copyright: (c) Simple Plugins 2008-2009$
*************************************************************************
*************************************************************************/
#if defined _scp_included
#endinput
#endif
#define _scp_included
#define MAXLENGTH_INPUT 128 // Inclues \0 and is the size of the chat input box.
#define MAXLENGTH_NAME 64 // This is backwords math to get compability. Sourcemod has it set at 32, but there is room for more.
#define MAXLENGTH_MESSAGE 256 // This is based upon the SDK and the length of the entire message, including tags, name, : etc.
#define CHATFLAGS_INVALID 0
#define CHATFLAGS_ALL (1<<0)
#define CHATFLAGS_TEAM (1<<1)
#define CHATFLAGS_SPEC (1<<2)
#define CHATFLAGS_DEAD (1<<3)
/**
*
* When a player types a chat message
*
* NOTES:
* Use MAXLENGTH_ constants above for formating the strings
* Do not rely on the recipients handle to exist beyond the forward
* Do not start another usermessage (PrintToChat) within this forward
*
* @param author The client index of the player who sent the chat message (Byref)
* @param recipients The handle to the client index adt array of the players who should recieve the chat message
* @param name The client's name of the player who sent the chat message (Byref)
* @param message The contents of the chat message (Byref)
*
* @note This version is only kept for backwards compatibility. Developers, use the native HookChatMessage.
*
* @return Plugin_Changed or Plugin_Handled to proceed to change a modified value, Plugin_Stop to block the message and Plugin_Continue to go through with the message with no changes.
*
*/
forward Action:OnChatMessage(&author, Handle:recipients, String:name[], String:message[]);
funcenum ChatMessageHook
{
/**
*
* When a player types a chat message
*
* NOTES:
* Use MAXLENGTH_ constants above for formating the strings
* Do not rely on the recipients handle to exist beyond the forward
* Do not start another usermessage (PrintToChat) within this forward
*
* @param author The client index of the player who sent the chat message (By-ref)
* @param recipients The handle to the client index adt array of the players who should recieve the chat message (By-ref)
* @param name The client's name of the player who sent the chat message (By-ref)
* @param message The contents of the chat message (Byref)
*
* @note This is considered to be the 'newer' version of OnChatMessage. The old version will be kept for backwards compatibility.
*
* @return Plugin_Changed to proceed to change a modified value, Plugin_Stop or Plugin_Handled to block the message and Plugin_Continue to go through with the message with no changes.
*
*/
Action:public(&author, &Handle:recipients, String:name[], String:message[]),
};
/**
*
* Hooks when a client types a chat message.
*
* @param func The ChatMessageHook function that should be called.
*
* @return True on success. False otherwise.
*
*/
native bool:HookChatMessage(ChatMessageHook:func);
/**
*
* Removes a ChatMessageHook hook.
*
* @param func The ChatMessageHook function that should be removed.
*
* @return True on success. False otherwise.
*
*/
native bool:UnhookChatMessage(ChatMessageHook:func);
/**
*
* Gets the current flags for the chat message
* Should only be called within OnChatMessage()
*
* @return The current type of chat message (see constants)
*
*/
native GetMessageFlags();
/**
Shared plugin information
**/
public SharedPlugin:_pl_scp =
{
name = "scp",
file = "simple-chatprocessor.smx",
#if defined REQUIRE_PLUGIN
required = 1
#else
required = 0
#endif
};
#if !defined REQUIRE_PLUGIN
public _pl_scp_SetNTVOptional()
{
MarkNativeAsOptional("GetMessageFlags");
MarkNativeAsOptional("HookChatMessage");
MarkNativeAsOptional("UnhookChatMessage");
}
#endif