Various minor things done to project files Updated sample extension project file and updated makefile to the new unified version (more changes likely on the way) Updated regex project file and makefile --HG-- extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401971
		
			
				
	
	
		
			661 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			SourcePawn
		
	
	
	
	
	
			
		
		
	
	
			661 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			SourcePawn
		
	
	
	
	
	
/**
 | 
						|
 * vim: set ts=4 :
 | 
						|
 * =============================================================================
 | 
						|
 * SourceMod (C)2004-2008 AlliedModders LLC.  All rights reserved.
 | 
						|
 * =============================================================================
 | 
						|
 *
 | 
						|
 * This file is part of the SourceMod/SourcePawn SDK.
 | 
						|
 *
 | 
						|
 * 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 <http://www.gnu.org/licenses/>.
 | 
						|
 *
 | 
						|
 * 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 <http://www.sourcemod.net/license.php>.
 | 
						|
 *
 | 
						|
 * Version: $Id$
 | 
						|
 */
 | 
						|
 | 
						|
#if defined _clients_included
 | 
						|
 #endinput
 | 
						|
#endif
 | 
						|
#define _clients_included
 | 
						|
 | 
						|
enum NetFlow
 | 
						|
{
 | 
						|
	NetFlow_Outgoing = 0,	/**< Outgoing traffic */
 | 
						|
	NetFlow_Incoming,		/**< Incoming traffic */
 | 
						|
	NetFlow_Both			/**< Incoming and outgoing traffic */
 | 
						|
};
 | 
						|
 | 
						|
#define MAXPLAYERS		64	/**< Maximum number of players that can be in server */
 | 
						|
#define MAX_NAME_LENGTH 32	/**< Maximum buffer required to store a client name */
 | 
						|
 | 
						|
/**
 | 
						|
 * Called on client connection.
 | 
						|
 *
 | 
						|
 * @param client		Client index.
 | 
						|
 * @param rejectmsg		Buffer to store the rejection message when the connection is refused.
 | 
						|
 * @param maxlen		Maximum number of characters for rejection buffer.
 | 
						|
 * @return				True to validate client's connection, false to refuse it.
 | 
						|
 */
 | 
						|
forward bool:OnClientConnect(client, String:rejectmsg[], maxlen);
 | 
						|
 | 
						|
/**
 | 
						|
 * Called when a client is entering the game.
 | 
						|
 *
 | 
						|
 * Whether a client has a steamid is undefined until OnClientAuthorized
 | 
						|
 * is called, which may occur either before or after OnClientPutInServer.
 | 
						|
 * Similarly, use OnClientPostAdminCheck() if you need to verify whether 
 | 
						|
 * connecting players are admins.
 | 
						|
 *
 | 
						|
 * GetClientCount() will include clients as they are passed through this 
 | 
						|
 * function, as clients are already in game at this point.
 | 
						|
 *
 | 
						|
 * @param client		Client index.
 | 
						|
 * @noreturn
 | 
						|
 */
 | 
						|
forward OnClientPutInServer(client);
 | 
						|
 | 
						|
/**
 | 
						|
 * Called when a client is disconnecting from the server.
 | 
						|
 *
 | 
						|
 * @param client		Client index.
 | 
						|
 * @noreturn
 | 
						|
 */
 | 
						|
forward OnClientDisconnect(client);
 | 
						|
 | 
						|
/**
 | 
						|
 * Called when a client is disconnected from the server.
 | 
						|
 *
 | 
						|
 * @param client		Client index.
 | 
						|
 * @noreturn
 | 
						|
 */
 | 
						|
forward OnClientDisconnect_Post(client);
 | 
						|
 | 
						|
/**
 | 
						|
 * Called when a client is sending a command.
 | 
						|
 *
 | 
						|
 * @param client		Client index.
 | 
						|
 * @param args			Number of arguments.
 | 
						|
 * @noreturn
 | 
						|
 */
 | 
						|
forward Action:OnClientCommand(client, args);
 | 
						|
 | 
						|
/**
 | 
						|
 * Called whenever the client's settings are changed.
 | 
						|
 *
 | 
						|
 * @param client		Client index.
 | 
						|
 * @noreturn
 | 
						|
 */
 | 
						|
forward OnClientSettingsChanged(client);
 | 
						|
 | 
						|
/**
 | 
						|
 * Called when a client receives a Steam ID.  The state of a client's 
 | 
						|
 * authorization via Steam or as an admin is not guaranteed here.  
 | 
						|
 * Use OnClientAuthorized() or OnClientPostAdminCheck() for those, 
 | 
						|
 * respectively.
 | 
						|
 *
 | 
						|
 * This is called by bots, but the ID will be "BOT".
 | 
						|
 *
 | 
						|
 * @param client		Client index.
 | 
						|
 * @param auth			Client auth string.
 | 
						|
 * @noreturn
 | 
						|
 */
 | 
						|
forward OnClientAuthorized(client, const String:auth[]);
 | 
						|
 | 
						|
/**
 | 
						|
 * Called once a client is authorized and fully in-game, but 
 | 
						|
 * before admin checks are done.  This can be used to override 
 | 
						|
 * the default admin checks for a client.  You should only use 
 | 
						|
 * this for overriding; use OnClientPostAdminCheck() instead 
 | 
						|
 * if you want notification.
 | 
						|
 *
 | 
						|
 * Note: If handled/blocked, PostAdminCheck must be signalled 
 | 
						|
 * manually via NotifyPostAdminCheck().
 | 
						|
 *
 | 
						|
 * This callback is gauranteed to occur on all clients, and always 
 | 
						|
 * after each OnClientPutInServer() call.
 | 
						|
 *
 | 
						|
 * @param client		Client index.
 | 
						|
 * @return				Plugin_Handled to block admin checks.
 | 
						|
 */
 | 
						|
forward Action:OnClientPreAdminCheck(client);
 | 
						|
 | 
						|
/**
 | 
						|
 * Called directly before OnClientPostAdminCheck() as a method to 
 | 
						|
 * alter administrative permissions before plugins perform final 
 | 
						|
 * post-connect operations.  
 | 
						|
 *
 | 
						|
 * In general, do not use this function unless you are specifically 
 | 
						|
 * attempting to change access permissions.  Use OnClientPostAdminCheck() 
 | 
						|
 * instead if you simply want to perform post-connect authorization 
 | 
						|
 * routines.
 | 
						|
 *
 | 
						|
 * See OnClientPostAdminCheck() for more information.
 | 
						|
 *
 | 
						|
 * @param client		Client index.
 | 
						|
 * @noreturn
 | 
						|
 */
 | 
						|
forward OnClientPostAdminFilter(client);
 | 
						|
 | 
						|
/**
 | 
						|
 * Called once a client is authorized and fully in-game, and 
 | 
						|
 * after all post-connection authorizations have been performed.  
 | 
						|
 *
 | 
						|
 * This callback is gauranteed to occur on all clients, and always 
 | 
						|
 * after each OnClientPutInServer() call.
 | 
						|
 *
 | 
						|
 * @param client		Client index.
 | 
						|
 * @noreturn
 | 
						|
 */
 | 
						|
forward OnClientPostAdminCheck(client);
 | 
						|
 | 
						|
/**
 | 
						|
 * Returns the maximum number of clients allowed on the server.  This may 
 | 
						|
 * return 0 if called before OnMapStart(), and thus should not be called 
 | 
						|
 * in OnPluginStart().  
 | 
						|
 *
 | 
						|
 * @return				Maximum number of clients allowed.
 | 
						|
 */
 | 
						|
native GetMaxClients();
 | 
						|
 | 
						|
/**
 | 
						|
 * Returns the client count put in the server.
 | 
						|
 *
 | 
						|
 * @param inGameOnly	If false connecting players are also counted.
 | 
						|
 * @return				Client count in the server.
 | 
						|
 */
 | 
						|
native GetClientCount(bool:inGameOnly=true);
 | 
						|
 | 
						|
/**
 | 
						|
 * Returns the client's name.
 | 
						|
 *
 | 
						|
 * @param client		Player index.
 | 
						|
 * @param name			Buffer to store the client's name.
 | 
						|
 * @param maxlen		Maximum length of string buffer (includes NULL terminator).
 | 
						|
 * @return				True on success, false otherwise.
 | 
						|
 * @error				If the client is not connected an error will be thrown.
 | 
						|
 */
 | 
						|
native bool:GetClientName(client, String:name[], maxlen);
 | 
						|
 | 
						|
/**
 | 
						|
 * Retrieves a client's IP address.
 | 
						|
 *
 | 
						|
 * @param client		Player index.
 | 
						|
 * @param name			Buffer to store the client's ip address.
 | 
						|
 * @param maxlen		Maximum length of string buffer (includes NULL terminator).
 | 
						|
 * @param remport		Remove client's port from the ip string (true by default).
 | 
						|
 * @return				True on success, false otherwise.
 | 
						|
 * @error				If the client is not connected or the index is invalid.
 | 
						|
 */
 | 
						|
native bool:GetClientIP(client, String:ip[], maxlen, bool:remport=true);
 | 
						|
 | 
						|
/**
 | 
						|
 * Retrieves a client's authentication string (SteamID).
 | 
						|
 *
 | 
						|
 * @param client		Player index.
 | 
						|
 * @param auth			Buffer to store the client's auth string.
 | 
						|
 * @param maxlen		Maximum length of string buffer (includes NULL terminator).
 | 
						|
 * @return				True on success, false otherwise.
 | 
						|
 * @error				If the client is not connected or the index is invalid.
 | 
						|
 */
 | 
						|
native bool:GetClientAuthString(client, String:auth[], maxlen);
 | 
						|
 | 
						|
/**
 | 
						|
 * Retrieves a client's user id, which is an index incremented for every client
 | 
						|
 * that joins the server.
 | 
						|
 *
 | 
						|
 * @param client		Player index.
 | 
						|
 * @return				User id of the client.
 | 
						|
 * @error 				If the client is not connected or the index is invalid.
 | 
						|
 */
 | 
						|
native GetClientUserId(client);
 | 
						|
 | 
						|
/**
 | 
						|
 * Returns if a certain player is connected.
 | 
						|
 *
 | 
						|
 * @param client		Player index.
 | 
						|
 * @return				True if player is connected to the server, false otherwise.
 | 
						|
 */
 | 
						|
native bool:IsClientConnected(client);
 | 
						|
 | 
						|
/**
 | 
						|
 * Returns if a certain player has entered the game.
 | 
						|
 *
 | 
						|
 * @param client		Player index (index does not have to be connected).
 | 
						|
 * @return				True if player has entered the game, false otherwise.
 | 
						|
 * @error				Invalid client index.
 | 
						|
 */
 | 
						|
native bool:IsClientInGame(client);
 | 
						|
 | 
						|
/**
 | 
						|
 * Returns if a client is in the "kick queue" (i.e. the client will be kicked 
 | 
						|
 * shortly and thus they should not appear as valid).
 | 
						|
 *
 | 
						|
 * @param client		Player index (must be connected).
 | 
						|
 * @return				True if in the kick queue, false otherwise.
 | 
						|
 * @error				Invalid client index.
 | 
						|
 */
 | 
						|
native bool:IsClientInKickQueue(client);
 | 
						|
 | 
						|
/**
 | 
						|
 * Backwards compatibility stock - use IsClientInGame
 | 
						|
 * @deprecated			Renamed to IsClientInGame
 | 
						|
 */
 | 
						|
#pragma deprecated Use IsClientInGame() instead
 | 
						|
stock bool:IsPlayerInGame(client)
 | 
						|
{
 | 
						|
	return IsClientInGame(client);
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Returns if a certain player has been authenticated.
 | 
						|
 *
 | 
						|
 * @param client		Player index.
 | 
						|
 * @return				True if player has been authenticated, false otherwise.
 | 
						|
 */
 | 
						|
native bool:IsClientAuthorized(client);
 | 
						|
 | 
						|
/**
 | 
						|
 * Returns if a certain player is a fake client.
 | 
						|
 *
 | 
						|
 * @param client		Player index.
 | 
						|
 * @return				True if player is a fake client, false otherwise.
 | 
						|
 */
 | 
						|
native bool:IsFakeClient(client);
 | 
						|
 | 
						|
/**
 | 
						|
 * Returns if a certain player is an observer/spectator.
 | 
						|
 *
 | 
						|
 * @param client		Player index.
 | 
						|
 * @return				True if player is an obverser, false otherwise.
 | 
						|
 */
 | 
						|
native bool:IsClientObserver(client);
 | 
						|
 | 
						|
/**
 | 
						|
 * Returns if the client is alive or dead.
 | 
						|
 *
 | 
						|
 * Note: This function was originally in SDKTools and was moved to core.
 | 
						|
 *
 | 
						|
 * @param client		Player's index.
 | 
						|
 * @return				True if the client is alive, false otherwise.
 | 
						|
 * @error				Invalid client index, client not in game, or no mod support.
 | 
						|
 */
 | 
						|
native bool:IsPlayerAlive(client);
 | 
						|
 | 
						|
/**
 | 
						|
 * Retrieves values from client replicated keys.
 | 
						|
 *
 | 
						|
 * @param client		Player's index.
 | 
						|
 * @param key			Key string.
 | 
						|
 * @param value			Buffer to store value.
 | 
						|
 * @param maxlen		Maximum length of valve (UTF-8 safe).
 | 
						|
 * @return 				True on success, false otherwise.
 | 
						|
 * @error				Invalid client index, or client not connected.
 | 
						|
 */
 | 
						|
native bool:GetClientInfo(client, const String:key[], String:value[], maxlen);
 | 
						|
 | 
						|
/**
 | 
						|
 * Retrieves a client's team index.
 | 
						|
 *
 | 
						|
 * @param client		Player's index.
 | 
						|
 * @return				Team index the client is on (mod specific).
 | 
						|
 * @error				Invalid client index, client not in game, or no mod support.
 | 
						|
 */
 | 
						|
native GetClientTeam(client);
 | 
						|
 
 | 
						|
/**
 | 
						|
 * Sets a client's AdminId.  
 | 
						|
 *
 | 
						|
 * @param client		Player's index.
 | 
						|
 * @param id			AdminId to set.  INVALID_ADMIN_ID removes admin permissions.
 | 
						|
 * @param temp			True if the id should be freed on disconnect.
 | 
						|
 * @noreturn
 | 
						|
 * @error				Invalid client index, client not connected, or bogus AdminId.
 | 
						|
 */
 | 
						|
native SetUserAdmin(client, AdminId:id, bool:temp=false);
 | 
						|
 | 
						|
/**
 | 
						|
 * Retrieves a client's AdminId.
 | 
						|
 *
 | 
						|
 * @param client		Player's index.
 | 
						|
 * @return				AdminId of the client, or INVALID_ADMIN_ID if none.
 | 
						|
 * @error				Invalid client index, or client not connected.
 | 
						|
 */
 | 
						|
native AdminId:GetUserAdmin(client);
 | 
						|
 | 
						|
/**
 | 
						|
 * Sets access flags on a client.  If the client is not an admin,
 | 
						|
 * a temporary, anonymous AdminId is given.
 | 
						|
 *
 | 
						|
 * @param client		Player's index.
 | 
						|
 * @param ...			Flags to set on the client.
 | 
						|
 * @noreturn
 | 
						|
 * @error				Invalid client index, or client not connected.
 | 
						|
 */
 | 
						|
native AddUserFlags(client, AdminFlag:...);
 | 
						|
 | 
						|
/**
 | 
						|
 * Removes flags from a client.  If the client is not an admin,
 | 
						|
 * this has no effect.
 | 
						|
 *
 | 
						|
 * @param client		Player's index.
 | 
						|
 * @param ...			Flags to remove from the client.
 | 
						|
 * @noreturn
 | 
						|
 * @error				Invalid client index, or client not connected.
 | 
						|
 */
 | 
						|
native RemoveUserFlags(client, AdminFlag:...);
 | 
						|
 | 
						|
/** 
 | 
						|
 * Sets access flags on a client using bits instead of flags.  If the
 | 
						|
 * client is not an admin, and flags not 0, a temporary, anonymous AdminId is given.
 | 
						|
 *
 | 
						|
 * @param client		Player's index.
 | 
						|
 * @param flags			Bitstring of flags to set on client.
 | 
						|
 * @noreturn
 | 
						|
 */
 | 
						|
native SetUserFlagBits(client, flags);
 | 
						|
 | 
						|
/**
 | 
						|
 * Returns client access flags.  If the client is not an admin,
 | 
						|
 * the result is always 0.
 | 
						|
 * 
 | 
						|
 * @param client		Player's index.
 | 
						|
 * @return				Flags
 | 
						|
 * @error				Invalid client index, or client not connected.
 | 
						|
 */
 | 
						|
native GetUserFlagBits(client);
 | 
						|
 | 
						|
/**
 | 
						|
 * Returns whether a user can target another user.
 | 
						|
 * This is a helper function for CanAdminTarget.
 | 
						|
 *
 | 
						|
 * @param client		Player's index.
 | 
						|
 * @param target		Target player's index.
 | 
						|
 * @return				True if target is targettable by the player, false otherwise.
 | 
						|
 * @error				Invalid or unconnected player indexers.
 | 
						|
 */
 | 
						|
native bool:CanUserTarget(client, target);
 | 
						|
 | 
						|
/**
 | 
						|
 * Runs through the Core-defined admin authorization checks on a player.
 | 
						|
 * Has no effect if the player is already an admin.
 | 
						|
 *
 | 
						|
 * Note: This function is based on the internal cache only.
 | 
						|
 *
 | 
						|
 * @param client		Client index.
 | 
						|
 * @return				True if access was changed, false if it did not.
 | 
						|
 * @error				Invalid client index or client not in-game AND authorized.
 | 
						|
 */
 | 
						|
native bool:RunAdminCacheChecks(client);
 | 
						|
 | 
						|
/**
 | 
						|
 * Signals that a player has completed post-connection admin checks.
 | 
						|
 * Has no effect if the player has already had this event signalled.
 | 
						|
 *
 | 
						|
 * Note: This must be sent even if no admin id was assigned.
 | 
						|
 *
 | 
						|
 * @param client		Client index.
 | 
						|
 * @noreturn
 | 
						|
 * @error				Invalid client index or client not in-game AND authorized.
 | 
						|
 */
 | 
						|
native NotifyPostAdminCheck(client);
 | 
						|
 | 
						|
/** 
 | 
						|
 * Creates a fake client.
 | 
						|
 *
 | 
						|
 * @param name			Name to use.
 | 
						|
 * @return				Client index on success, 0 otherwise.
 | 
						|
 */
 | 
						|
native CreateFakeClient(const String:name[]);
 | 
						|
 | 
						|
/**
 | 
						|
 * Sets a convar value on a fake client.
 | 
						|
 *
 | 
						|
 * @param client		Client index.
 | 
						|
 * @param cvar			ConVar name.
 | 
						|
 * @param value			ConVar value.
 | 
						|
 * @noreturn
 | 
						|
 * @error				Invalid client index, client not connected,
 | 
						|
 *						or client not a fake client.
 | 
						|
 */
 | 
						|
native SetFakeClientConVar(client, const String:cvar[], const String:value[]);
 | 
						|
 | 
						|
/**
 | 
						|
 * Returns the client's health.
 | 
						|
 *
 | 
						|
 * @param client		Player's index.
 | 
						|
 * @return				Health value.
 | 
						|
 * @error				Invalid client index, client not in game, or no mod support.
 | 
						|
 */
 | 
						|
native GetClientHealth(client);
 | 
						|
 | 
						|
/**
 | 
						|
 * Returns the client's model name.
 | 
						|
 *
 | 
						|
 * @param client		Player's index.
 | 
						|
 * @param model			Buffer to store the client's model name.
 | 
						|
 * @param maxlen		Maximum length of string buffer (includes NULL terminator).
 | 
						|
 * @noreturn
 | 
						|
 * @error				Invalid client index, client not in game, or no mod support.
 | 
						|
 */
 | 
						|
native GetClientModel(client, String:model[], maxlen);
 | 
						|
 | 
						|
/**
 | 
						|
 * Returns the client's weapon name.
 | 
						|
 *
 | 
						|
 * @param client		Player's index.
 | 
						|
 * @param weapon		Buffer to store the client's weapon name.
 | 
						|
 * @param maxlen		Maximum length of string buffer (includes NULL terminator).
 | 
						|
 * @noreturn
 | 
						|
 * @error				Invalid client index, client not in game, or no mod support.
 | 
						|
 */
 | 
						|
native GetClientWeapon(client, String:weapon[], maxlen);
 | 
						|
 | 
						|
/**
 | 
						|
 * Returns the client's max size vector.
 | 
						|
 *
 | 
						|
 * @param client		Player's index.
 | 
						|
 * @param vec			Destination vector to store the client's max size.
 | 
						|
 * @noreturn
 | 
						|
 * @error				Invalid client index, client not in game, or no mod support.
 | 
						|
 */
 | 
						|
native GetClientMaxs(client, Float:vec[3]);
 | 
						|
 | 
						|
/**
 | 
						|
 * Returns the client's min size vector.
 | 
						|
 *
 | 
						|
 * @param client		Player's index.
 | 
						|
 * @param vec			Destination vector to store the client's min size.
 | 
						|
 * @noreturn
 | 
						|
 * @error				Invalid client index, client not in game, or no mod support.
 | 
						|
 */
 | 
						|
native GetClientMins(client, Float:vec[3]);
 | 
						|
 | 
						|
/**
 | 
						|
 * Returns the client's position angle.
 | 
						|
 *
 | 
						|
 * @param client		Player's index.
 | 
						|
 * @param ang			Destination vector to store the client's position angle.
 | 
						|
 * @noreturn
 | 
						|
 * @error				Invalid client index, client not in game, or no mod support.
 | 
						|
 */
 | 
						|
native GetClientAbsAngles(client, Float:ang[3]);
 | 
						|
 | 
						|
/**
 | 
						|
 * Returns the client's origin vector.
 | 
						|
 *
 | 
						|
 * @param client		Player's index.
 | 
						|
 * @param vec			Destination vector to store the client's origin vector.
 | 
						|
 * @noreturn
 | 
						|
 * @error				Invalid client index, client not in game, or no mod support.
 | 
						|
 */
 | 
						|
native GetClientAbsOrigin(client, Float:vec[3]);
 | 
						|
 | 
						|
/**
 | 
						|
 * Returns the client's armor.
 | 
						|
 *
 | 
						|
 * @param client		Player's index.
 | 
						|
 * @return				Armor value.
 | 
						|
 * @error				Invalid client index, client not in game, or no mod support.
 | 
						|
 */
 | 
						|
native GetClientArmor(client);
 | 
						|
 | 
						|
/**
 | 
						|
 * Returns the client's death count.
 | 
						|
 *
 | 
						|
 * @param client		Player's index.
 | 
						|
 * @return				Death count.
 | 
						|
 * @error				Invalid client index, client not in game, or no mod support.
 | 
						|
 */
 | 
						|
native GetClientDeaths(client);
 | 
						|
 | 
						|
/**
 | 
						|
 * Returns the client's frag count.
 | 
						|
 *
 | 
						|
 * @param client		Player's index.
 | 
						|
 * @return				Frag count.
 | 
						|
 * @error				Invalid client index, client not in game, or no mod support.
 | 
						|
 */
 | 
						|
native GetClientFrags(client);
 | 
						|
 | 
						|
/**
 | 
						|
 * Returns the client's send data rate in bytes/sec.
 | 
						|
 *
 | 
						|
 * @param client		Player's index.
 | 
						|
 * @return				Data rate.
 | 
						|
 * @error				Invalid client index, client not in game, or fake client.
 | 
						|
 */
 | 
						|
native GetClientDataRate(client);
 | 
						|
 | 
						|
/**
 | 
						|
 * Returns if a client is timing out
 | 
						|
 *
 | 
						|
 * @param client		Player's index.
 | 
						|
 * @return				True if client is timing out, false otherwise.
 | 
						|
 * @error				Invalid client index, client not in game, or fake client.
 | 
						|
 */
 | 
						|
native bool:IsClientTimingOut(client);
 | 
						|
 | 
						|
/**
 | 
						|
 * Returns the client's connection time in seconds.
 | 
						|
 *
 | 
						|
 * @param client		Player's index.
 | 
						|
 * @return				Connection time.
 | 
						|
 * @error				Invalid client index, client not in game, or fake client.
 | 
						|
 */
 | 
						|
native Float:GetClientTime(client);
 | 
						|
 | 
						|
/**
 | 
						|
 * Returns the client's current latency (RTT), more accurate than GetAvgLatency but jittering.
 | 
						|
 *
 | 
						|
 * @param client		Player's index.
 | 
						|
 * @param flow			Traffic flowing direction.
 | 
						|
 * @return				Latency.
 | 
						|
 * @error				Invalid client index, client not in game, or fake client.
 | 
						|
 */
 | 
						|
native Float:GetClientLatency(client, NetFlow:flow);
 | 
						|
 | 
						|
/**
 | 
						|
 * Returns the client's average packet latency in seconds.
 | 
						|
 *
 | 
						|
 * @param client		Player's index.
 | 
						|
 * @param flow			Traffic flowing direction.
 | 
						|
 * @return				Average latency.
 | 
						|
 * @error				Invalid client index, client not in game, or fake client.
 | 
						|
 */
 | 
						|
native Float:GetClientAvgLatency(client, NetFlow:flow);
 | 
						|
 | 
						|
/**
 | 
						|
 * Returns the client's average packet loss, values go from 0 to 1 (for percentages).
 | 
						|
 *
 | 
						|
 * @param client		Player's index.
 | 
						|
 * @param flow			Traffic flowing direction.
 | 
						|
 * @return				Average packet loss.
 | 
						|
 * @error				Invalid client index, client not in game, or fake client.
 | 
						|
 */
 | 
						|
native Float:GetClientAvgLoss(client, NetFlow:flow);
 | 
						|
 | 
						|
/**
 | 
						|
 * Returns the client's average packet choke, values go from 0 to 1 (for percentages).
 | 
						|
 *
 | 
						|
 * @param client		Player's index.
 | 
						|
 * @param flow			Traffic flowing direction.
 | 
						|
 * @return				Average packet choke.
 | 
						|
 * @error				Invalid client index, client not in game, or fake client.
 | 
						|
 */
 | 
						|
native Float:GetClientAvgChoke(client, NetFlow:flow);
 | 
						|
 | 
						|
/**
 | 
						|
 * Returns the client's data flow in bytes/sec.
 | 
						|
 *
 | 
						|
 * @param client		Player's index.
 | 
						|
 * @param flow			Traffic flowing direction.
 | 
						|
 * @return				Data flow.
 | 
						|
 * @error				Invalid client index, client not in game, or fake client.
 | 
						|
 */
 | 
						|
native Float:GetClientAvgData(client, NetFlow:flow);
 | 
						|
 | 
						|
/**
 | 
						|
 * Returns the client's average packet frequency in packets/sec.
 | 
						|
 *
 | 
						|
 * @param client		Player's index.
 | 
						|
 * @param flow			Traffic flowing direction.
 | 
						|
 * @return				Packet frequency.
 | 
						|
 * @error				Invalid client index, client not in game, or fake client.
 | 
						|
 */
 | 
						|
native Float:GetClientAvgPackets(client, NetFlow:flow);
 | 
						|
 | 
						|
/**
 | 
						|
 * Translates an userid index to the real player index.
 | 
						|
 *
 | 
						|
 * @param userid		Userid value.
 | 
						|
 * @return				Client value.
 | 
						|
 * @error				Returns 0 if invalid userid.
 | 
						|
 */
 | 
						|
native GetClientOfUserId(userid);
 | 
						|
 | 
						|
/**
 | 
						|
 * Disconnects a client from the server.  
 | 
						|
 *
 | 
						|
 * Kicking clients from certain events or callbacks may cause crashes.  If in 
 | 
						|
 * doubt, create a short (0.1 second) timer to kick the client in the next 
 | 
						|
 * available frame.
 | 
						|
 *
 | 
						|
 * @param client		Client index.
 | 
						|
 * @param format		Optional formatting rules for disconnect reason.
 | 
						|
 *                      Note that a period is automatically appended to the string by the engine.
 | 
						|
 * @param ...			Variable number of format parameters.
 | 
						|
 * @noreturn
 | 
						|
 * @error				Invalid client index, or client not connected.
 | 
						|
 */
 | 
						|
native KickClient(client, const String:format[]="", any:...);
 | 
						|
 | 
						|
/**
 | 
						|
 * Changes a client's team through the mod's generic team changing function.
 | 
						|
 * On CS:S, this will kill the player.
 | 
						|
 *
 | 
						|
 * @param client		Client index.
 | 
						|
 * @param team			Mod-specific team index.
 | 
						|
 * @noreturn
 | 
						|
 * @error				Invalid client index, client not connected, or lack of 
 | 
						|
 *						mod support.
 | 
						|
 */
 | 
						|
native ChangeClientTeam(client, team);
 | 
						|
 |