plugins/include/clients.inc
author David Anderson <dvander@alliedmods.net>
Sun Oct 21 20:06:30 2007 +0000 (2007-10-21)
changeset 1621 ac5d4c68a99a
parent 1509 cbb82af65663
child 1813 372939c88bc7
permissions -rw-r--r--
- added ShowActivity2() which has a more convenient display algorithm
- added commandfilters.inc and ProcessTargetString(), an extensible API for processing a command target and getting back formatted replies + player lists. This makes SearchForClients() look paltry, and base plugins will slowly be moved to support the new functionality
- removed IsPlayerAlive() from SDKTools, added it to Core
- fixed a small bug in re-entrant translations
- core.games.txt is now automatically added to all plugins
dvander@545
     1
/**
dvander@545
     2
 * vim: set ts=4 :
ds@1330
     3
 * =============================================================================
dvander@545
     4
 * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
ds@1330
     5
 * =============================================================================
ds@1330
     6
 *
ds@1330
     7
 * This file is part of the SourceMod/SourcePawn SDK.
dvander@545
     8
 *
ds@1330
     9
 * This program is free software; you can redistribute it and/or modify it under
ds@1330
    10
 * the terms of the GNU General Public License, version 3.0, as published by the
ds@1330
    11
 * Free Software Foundation.
ds@1330
    12
 * 
ds@1330
    13
 * This program is distributed in the hope that it will be useful, but WITHOUT
ds@1330
    14
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
ds@1330
    15
 * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
ds@1330
    16
 * details.
ds@1330
    17
 *
ds@1330
    18
 * You should have received a copy of the GNU General Public License along with
ds@1330
    19
 * this program.  If not, see <http://www.gnu.org/licenses/>.
ds@1330
    20
 *
ds@1330
    21
 * As a special exception, AlliedModders LLC gives you permission to link the
ds@1330
    22
 * code of this program (as well as its derivative works) to "Half-Life 2," the
ds@1330
    23
 * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
ds@1330
    24
 * by the Valve Corporation.  You must obey the GNU General Public License in
ds@1330
    25
 * all respects for all other code used.  Additionally, AlliedModders LLC grants
ds@1330
    26
 * this exception to all derivative works.  AlliedModders LLC defines further
ds@1330
    27
 * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
ds@1330
    28
 * or <http://www.sourcemod.net/license.php>.
dvander@545
    29
 *
dvander@545
    30
 * Version: $Id$
dvander@545
    31
 */
dvander@545
    32
dvander@545
    33
#if defined _clients_included
dvander@545
    34
 #endinput
dvander@545
    35
#endif
dvander@545
    36
#define _clients_included
dvander@545
    37
faluco@682
    38
enum NetFlow
faluco@682
    39
{
ds@873
    40
	NetFlow_Outgoing = 0,	/**< Outgoing traffic */
faluco@682
    41
	NetFlow_Incoming,		/**< Incoming traffic */
faluco@682
    42
	NetFlow_Both			/**< Incoming and outgoing traffic */
faluco@682
    43
};
faluco@682
    44
ds@901
    45
#define MAXPLAYERS		64	/**< Maximum number of players that can be in server */
dvander@1343
    46
#define MAX_NAME_LENGTH 32	/**< Maximum buffer required to store a client name */
ds@901
    47
dvander@545
    48
/**
dvander@545
    49
 * Called on client connection.
dvander@545
    50
 *
dvander@1273
    51
 * @param client		Client index.
dvander@545
    52
 * @param rejectmsg		Buffer to store the rejection message when the connection is refused.
dvander@545
    53
 * @param maxlen		Maximum number of characters for rejection buffer.
dvander@545
    54
 * @return				True to validate client's connection, false to refuse it.
dvander@545
    55
 */
dvander@545
    56
forward bool:OnClientConnect(client, String:rejectmsg[], maxlen);
dvander@545
    57
dvander@545
    58
/**
dvander@545
    59
 * Called when a client is entering to the game.
dvander@545
    60
 *
dvander@1381
    61
 * @note Whether a client has a steamid is undefined until OnClientAuthorized
dvander@1381
    62
 * is called, which may occur either before or after OnClientPutInServer.
dvander@1381
    63
 *
dvander@1273
    64
 * @param client		Client index.
dvander@545
    65
 * @noreturn
dvander@545
    66
 */
dvander@545
    67
forward OnClientPutInServer(client);
dvander@545
    68
dvander@545
    69
/**
dvander@545
    70
 * Called when a client is disconnecting from the server.
dvander@545
    71
 *
dvander@1273
    72
 * @param client		Client index.
dvander@545
    73
 * @noreturn
dvander@545
    74
 */
dvander@545
    75
forward OnClientDisconnect(client);
dvander@545
    76
dvander@545
    77
/**
dvander@545
    78
 * Called when a client is disconnected from the server.
dvander@545
    79
 *
dvander@1273
    80
 * @param client		Client index.
dvander@545
    81
 * @noreturn
dvander@545
    82
 */
dvander@545
    83
forward OnClientDisconnect_Post(client);
dvander@545
    84
dvander@545
    85
/**
dvander@545
    86
 * Called when a client is sending a command.
dvander@545
    87
 *
dvander@1273
    88
 * @param client		Client index.
dvander@545
    89
 * @param args			Number of arguments.
dvander@545
    90
 * @noreturn
dvander@545
    91
 */
dvander@545
    92
forward Action:OnClientCommand(client, args);
dvander@545
    93
dvander@545
    94
/**
dvander@545
    95
 * Called whenever the client's settings are changed.
dvander@545
    96
 *
dvander@1273
    97
 * @param client		Client index.
dvander@545
    98
 * @noreturn
dvander@545
    99
 */
dvander@545
   100
forward OnClientSettingsChanged(client);
dvander@545
   101
dvander@545
   102
/**
dvander@545
   103
 * Called when a client receives a Steam ID.
dvander@1273
   104
 
dvander@1273
   105
 * Admin properties are not assigned here, but on OnClientPostAdminCheck().
dvander@1273
   106
 * This is called by bots, but the ID will be "BOT".
dvander@545
   107
 *
dvander@1273
   108
 * @param client		Client index.
dvander@1273
   109
 * @param auth			Client auth string.
dvander@1273
   110
 * @noreturn
dvander@545
   111
 */
dvander@545
   112
forward OnClientAuthorized(client, const String:auth[]);
dvander@545
   113
dvander@545
   114
/**
dvander@1273
   115
 * Called once a client is authorized and fully in-game, but 
dvander@1273
   116
 * before admin checks are done.  This can be used to override 
dvander@1273
   117
 * the default admin checks for a client.
dvander@1273
   118
 *
dvander@1273
   119
 * Note: If handled/blocked, PostAdminCheck must be signalled 
dvander@1273
   120
 * manually via NotifyPostAdminCheck().
dvander@1273
   121
 *
dvander@1273
   122
 * @param client		Client index.
dvander@1273
   123
 * @return				Plugin_Handled to block admin checks.
dvander@1273
   124
 */
dvander@1273
   125
forward Action:OnClientPreAdminCheck(client);
dvander@1273
   126
dvander@1273
   127
/**
dvander@1273
   128
 * Called once a client is authorized and fully in-game, and 
dvander@1273
   129
 * after all post-connection authorizations have been performed.
dvander@1273
   130
 *
dvander@1273
   131
 * @param client		Client index.
dvander@1273
   132
 * @noreturn
dvander@1273
   133
 */
dvander@1273
   134
forward OnClientPostAdminCheck(client);
dvander@1273
   135
dvander@1273
   136
/**
dvander@1342
   137
 * Returns the maximum number of clients allowed on the server.  This may 
dvander@1342
   138
 * return 0 if called before OnMapStart(), and thus should not be called 
dvander@1342
   139
 * in OnPluginStart().  
dvander@545
   140
 *
dvander@545
   141
 * @return				Maximum number of clients allowed.
dvander@545
   142
 */
dvander@545
   143
native GetMaxClients();
dvander@545
   144
dvander@545
   145
/**
dvander@545
   146
 * Returns the client count put in the server.
dvander@545
   147
 *
dvander@545
   148
 * @param inGameOnly	If false connecting players are also counted.
dvander@545
   149
 * @return				Client count in the server.
dvander@545
   150
 */
dvander@545
   151
native GetClientCount(bool:inGameOnly=true);
dvander@545
   152
dvander@545
   153
/**
dvander@545
   154
 * Returns the client's name.
dvander@545
   155
 *
dvander@545
   156
 * @param client		Player index.
dvander@545
   157
 * @param name			Buffer to store the client's name.
dvander@545
   158
 * @param maxlen		Maximum length of string buffer (includes NULL terminator).
dvander@545
   159
 * @return				True on success, false otherwise.
dvander@545
   160
 * @error				If the client is not connected an error will be thrown.
dvander@545
   161
 */
dvander@545
   162
native bool:GetClientName(client, String:name[], maxlen);
dvander@545
   163
dvander@545
   164
/**
dvander@545
   165
 * Retrieves a client's IP address.
dvander@545
   166
 *
dvander@545
   167
 * @param client		Player index.
dvander@545
   168
 * @param name			Buffer to store the client's ip address.
dvander@545
   169
 * @param maxlen		Maximum length of string buffer (includes NULL terminator).
dvander@545
   170
 * @param remport		Remove client's port from the ip string (true by default).
dvander@545
   171
 * @return				True on success, false otherwise.
dvander@545
   172
 * @error				If the client is not connected or the index is invalid.
dvander@545
   173
 */
dvander@545
   174
native bool:GetClientIP(client, String:ip[], maxlen, bool:remport=true);
dvander@545
   175
dvander@545
   176
/**
dvander@545
   177
 * Retrieves a client's authentication string (SteamID).
dvander@545
   178
 *
dvander@545
   179
 * @param client		Player index.
dvander@545
   180
 * @param auth			Buffer to store the client's auth string.
dvander@545
   181
 * @param maxlen		Maximum length of string buffer (includes NULL terminator).
dvander@545
   182
 * @return				True on success, false otherwise.
dvander@545
   183
 * @error				If the client is not connected or the index is invalid.
dvander@545
   184
 */
dvander@545
   185
native bool:GetClientAuthString(client, String:auth[], maxlen);
dvander@545
   186
dvander@545
   187
/**
dvander@545
   188
 * Retrieves a client's user id, which is an index incremented for every client
dvander@545
   189
 * that joins the server.
dvander@545
   190
 *
dvander@545
   191
 * @param client		Player index.
dvander@545
   192
 * @return				User id of the client.
dvander@545
   193
 * @error 				If the client is not connected or the index is invalid.
dvander@545
   194
 */
dvander@545
   195
native GetClientUserId(client);
dvander@545
   196
dvander@545
   197
/**
dvander@545
   198
 * Returns if a certain player is connected.
dvander@545
   199
 *
dvander@545
   200
 * @param client		Player index.
dvander@545
   201
 * @return				True if player is connected to the server, false otherwise.
dvander@545
   202
 */
dvander@545
   203
native bool:IsClientConnected(client);
dvander@545
   204
dvander@545
   205
/**
dvander@545
   206
 * Returns if a certain player has entered the game.
dvander@545
   207
 *
dvander@1509
   208
 * @param client		Player index (index does not have to be connected).
dvander@545
   209
 * @return				True if player has entered the game, false otherwise.
dvander@1509
   210
 * @error				Invalid client index.
dvander@545
   211
 */
ds@784
   212
native bool:IsClientInGame(client);
ds@784
   213
ds@784
   214
/**
dvander@1509
   215
 * Returns if a client is in the "kick queue" (i.e. the client will be kicked 
dvander@1509
   216
 * shortly and thus they should not appear as valid).
dvander@1509
   217
 *
dvander@1509
   218
 * @param client		Player index (must be connected).
dvander@1509
   219
 * @return				True if in the kick queue, false otherwise.
dvander@1509
   220
 * @error				Invalid client index.
dvander@1509
   221
 */
dvander@1509
   222
native bool:IsClientInKickQueue(client);
dvander@1509
   223
dvander@1509
   224
/**
ds@784
   225
 * Backwards compatibility stock - use IsClientInGame
ds@784
   226
 * @deprecated			Renamed to IsClientInGame
ds@784
   227
 */
ds@1268
   228
#pragma deprecated Use IsClientInGame() instead
ds@784
   229
stock bool:IsPlayerInGame(client)
ds@784
   230
{
ds@784
   231
	return IsClientInGame(client);
ds@784
   232
}
dvander@545
   233
dvander@545
   234
/**
dvander@545
   235
 * Returns if a certain player has been authenticated.
dvander@545
   236
 *
dvander@545
   237
 * @param client		Player index.
dvander@545
   238
 * @return				True if player has been authenticated, false otherwise.
dvander@545
   239
 */
dvander@545
   240
native bool:IsClientAuthorized(client);
dvander@545
   241
dvander@545
   242
/**
dvander@545
   243
 * Returns if a certain player is a fake client.
dvander@545
   244
 *
dvander@545
   245
 * @param client		Player index.
dvander@545
   246
 * @return				True if player is a fake client, false otherwise.
dvander@545
   247
 */
dvander@545
   248
native bool:IsFakeClient(client);
dvander@545
   249
dvander@545
   250
/**
ds@1001
   251
 * Returns if a certain player is an observer/spectator.
ds@1001
   252
 *
ds@1001
   253
 * @param client		Player index.
ds@1001
   254
 * @return				True if player is an obverser, false otherwise.
ds@1001
   255
 */
ds@1001
   256
native bool:IsClientObserver(client);
ds@1001
   257
ds@1001
   258
/**
dvander@1621
   259
 * Returns if the client is alive or dead.
dvander@1621
   260
 *
dvander@1621
   261
 * Note: This function was originally in SDKTools and was moved to core.
dvander@1621
   262
 *
dvander@1621
   263
 * @param client		Player's index.
dvander@1621
   264
 * @return				True if the client is alive, false otherwise.
dvander@1621
   265
 * @error				Invalid client index, client not in game, or no mod support.
dvander@1621
   266
 */
dvander@1621
   267
native bool:IsPlayerAlive(client);
dvander@1621
   268
dvander@1621
   269
/**
dvander@545
   270
 * Retrieves values from client replicated keys.
dvander@545
   271
 *
dvander@545
   272
 * @param client		Player's index.
dvander@545
   273
 * @param key			Key string.
dvander@545
   274
 * @param value			Buffer to store value.
dvander@545
   275
 * @param maxlen		Maximum length of valve (UTF-8 safe).
dvander@545
   276
 * @return 				True on success, false otherwise.
dvander@545
   277
 * @error				Invalid client index, or client not connected.
dvander@545
   278
 */
dvander@545
   279
native bool:GetClientInfo(client, const String:key[], String:value[], maxlen);
dvander@545
   280
dvander@545
   281
/**
dvander@644
   282
 * Retrieves a client's team index.
dvander@644
   283
 *
dvander@644
   284
 * @param client		Player's index.
dvander@644
   285
 * @return				Team index the client is on (mod specific).
dvander@644
   286
 * @error				Invalid client index, client not in game, or no mod support.
dvander@644
   287
 */
dvander@644
   288
native GetClientTeam(client);
dvander@644
   289
 
dvander@644
   290
/**
dvander@545
   291
 * Sets a client's AdminId.  
dvander@545
   292
 *
dvander@545
   293
 * @param client		Player's index.
dvander@545
   294
 * @param id			AdminId to set.  INVALID_ADMIN_ID removes admin permissions.
dvander@545
   295
 * @param temp			True if the id should be freed on disconnect.
dvander@545
   296
 * @noreturn
dvander@545
   297
 * @error				Invalid client index, client not connected, or bogus AdminId.
dvander@545
   298
 */
dvander@545
   299
native SetUserAdmin(client, AdminId:id, bool:temp=false);
dvander@545
   300
dvander@545
   301
/**
dvander@545
   302
 * Retrieves a client's AdminId.
dvander@545
   303
 *
dvander@545
   304
 * @param client		Player's index.
dvander@545
   305
 * @return				AdminId of the client, or INVALID_ADMIN_ID if none.
dvander@545
   306
 * @error				Invalid client index, or client not connected.
dvander@545
   307
 */
dvander@545
   308
native AdminId:GetUserAdmin(client);
dvander@545
   309
dvander@545
   310
/**
dvander@545
   311
 * Sets access flags on a client.  If the client is not an admin,
dvander@545
   312
 * a temporary, anonymous AdminId is given.
dvander@545
   313
 *
dvander@545
   314
 * @param client		Player's index.
dvander@545
   315
 * @param ...			Flags to set on the client.
dvander@545
   316
 * @noreturn
dvander@545
   317
 * @error				Invalid client index, or client not connected.
dvander@545
   318
 */
ds@634
   319
native AddUserFlags(client, AdminFlag:...);
dvander@545
   320
dvander@545
   321
/**
dvander@545
   322
 * Removes flags from a client.  If the client is not an admin,
dvander@545
   323
 * this has no effect.
dvander@545
   324
 *
dvander@545
   325
 * @param client		Player's index.
dvander@545
   326
 * @param ...			Flags to remove from the client.
dvander@545
   327
 * @noreturn
dvander@545
   328
 * @error				Invalid client index, or client not connected.
dvander@545
   329
 */
ds@634
   330
native RemoveUserFlags(client, AdminFlag:...);
dvander@545
   331
dvander@545
   332
/** 
dvander@545
   333
 * Sets access flags on a client using bits instead of flags.  If the
dvander@545
   334
 * client is not an admin, and flags not 0, a temporary, anonymous AdminId is given.
dvander@545
   335
 *
dvander@545
   336
 * @param client		Player's index.
dvander@545
   337
 * @param flags			Bitstring of flags to set on client.
dvander@545
   338
 * @noreturn
dvander@545
   339
 */
dvander@545
   340
native SetUserFlagBits(client, flags);
dvander@545
   341
dvander@545
   342
/**
dvander@545
   343
 * Returns client access flags.  If the client is not an admin,
dvander@545
   344
 * the result is always 0.
dvander@545
   345
 * 
dvander@545
   346
 * @param client		Player's index.
dvander@545
   347
 * @return				Flags
dvander@545
   348
 * @error				Invalid client index, or client not connected.
dvander@545
   349
 */
dvander@545
   350
native GetUserFlagBits(client);
dvander@545
   351
dvander@545
   352
/**
dvander@545
   353
 * Returns whether a user can target another user.
dvander@545
   354
 * This is a helper function for CanAdminTarget.
dvander@545
   355
 *
dvander@545
   356
 * @param client		Player's index.
dvander@545
   357
 * @param target		Target player's index.
dvander@545
   358
 * @return				True if target is targettable by the player, false otherwise.
dvander@545
   359
 * @error				Invalid or unconnected player indexers.
dvander@545
   360
 */
dvander@545
   361
native bool:CanUserTarget(client, target);
dvander@545
   362
dvander@1273
   363
/**
dvander@1273
   364
 * Runs through the Core-defined admin authorization checks on a player.
dvander@1273
   365
 * Has no effect if the player is already an admin.
dvander@1273
   366
 *
dvander@1273
   367
 * Note: This function is based on the internal cache only.
dvander@1273
   368
 *
dvander@1273
   369
 * @param client		Client index.
dvander@1273
   370
 * @return				True if access was changed, false if it did not.
dvander@1273
   371
 * @error				Invalid client index or client not in-game AND authorized.
dvander@1273
   372
 */
dvander@1273
   373
native bool:RunAdminCacheChecks(client);
dvander@1273
   374
dvander@1273
   375
/**
dvander@1273
   376
 * Signals that a player has completed post-connection admin checks.
dvander@1273
   377
 * Has no effect if the player has already had this event signalled.
dvander@1273
   378
 *
dvander@1273
   379
 * Note: This must be sent even if no admin id was assigned.
dvander@1273
   380
 *
dvander@1273
   381
 * @param client		Client index.
dvander@1273
   382
 * @noreturn
dvander@1273
   383
 * @error				Invalid client index or client not in-game AND authorized.
dvander@1273
   384
 */
dvander@1273
   385
native NotifyPostAdminCheck(client);
dvander@1273
   386
dvander@545
   387
/** 
dvander@545
   388
 * Creates a fake client.
dvander@545
   389
 *
dvander@545
   390
 * @param name			Name to use.
dvander@545
   391
 * @return				Client index on success, 0 otherwise.
dvander@545
   392
 */
dvander@545
   393
native CreateFakeClient(const String:name[]);
dvander@545
   394
dvander@545
   395
/**
dvander@545
   396
 * Sets a convar value on a fake client.
dvander@545
   397
 *
dvander@545
   398
 * @param client		Client index.
dvander@545
   399
 * @param cvar			ConVar name.
dvander@545
   400
 * @param value			ConVar value.
dvander@545
   401
 * @noreturn
dvander@545
   402
 * @error				Invalid client index, client not connected,
dvander@545
   403
 *						or client not a fake client.
dvander@545
   404
 */
ds@621
   405
native SetFakeClientConVar(client, const String:cvar[], const String:value[]);
faluco@658
   406
faluco@658
   407
/**
faluco@658
   408
 * Returns the client's health.
faluco@658
   409
 *
faluco@658
   410
 * @param client		Player's index.
faluco@658
   411
 * @return				Health value.
faluco@658
   412
 * @error				Invalid client index, client not in game, or no mod support.
faluco@658
   413
 */
faluco@658
   414
native GetClientHealth(client);
faluco@658
   415
faluco@658
   416
/**
faluco@658
   417
 * Returns the client's model name.
faluco@658
   418
 *
faluco@658
   419
 * @param client		Player's index.
faluco@658
   420
 * @param model			Buffer to store the client's model name.
faluco@658
   421
 * @param maxlen		Maximum length of string buffer (includes NULL terminator).
faluco@658
   422
 * @noreturn
faluco@658
   423
 * @error				Invalid client index, client not in game, or no mod support.
faluco@658
   424
 */
faluco@658
   425
native GetClientModel(client, String:model[], maxlen);
faluco@658
   426
faluco@658
   427
/**
faluco@658
   428
 * Returns the client's weapon name.
faluco@658
   429
 *
faluco@658
   430
 * @param client		Player's index.
faluco@658
   431
 * @param weapon		Buffer to store the client's weapon name.
faluco@658
   432
 * @param maxlen		Maximum length of string buffer (includes NULL terminator).
faluco@658
   433
 * @noreturn
faluco@658
   434
 * @error				Invalid client index, client not in game, or no mod support.
faluco@658
   435
 */
faluco@658
   436
native GetClientWeapon(client, String:weapon[], maxlen);
faluco@658
   437
faluco@658
   438
/**
faluco@658
   439
 * Returns the client's max size vector.
faluco@658
   440
 *
faluco@658
   441
 * @param client		Player's index.
faluco@658
   442
 * @param vec			Destination vector to store the client's max size.
faluco@658
   443
 * @noreturn
faluco@658
   444
 * @error				Invalid client index, client not in game, or no mod support.
faluco@658
   445
 */
faluco@658
   446
native GetClientMaxs(client, Float:vec[3]);
faluco@658
   447
faluco@658
   448
/**
faluco@658
   449
 * Returns the client's min size vector.
faluco@658
   450
 *
faluco@658
   451
 * @param client		Player's index.
faluco@658
   452
 * @param vec			Destination vector to store the client's min size.
faluco@658
   453
 * @noreturn
faluco@658
   454
 * @error				Invalid client index, client not in game, or no mod support.
faluco@658
   455
 */
faluco@658
   456
native GetClientMins(client, Float:vec[3]);
faluco@658
   457
faluco@658
   458
/**
faluco@658
   459
 * Returns the client's position angle.
faluco@658
   460
 *
faluco@658
   461
 * @param client		Player's index.
faluco@658
   462
 * @param ang			Destination vector to store the client's position angle.
faluco@658
   463
 * @noreturn
faluco@658
   464
 * @error				Invalid client index, client not in game, or no mod support.
faluco@658
   465
 */
faluco@658
   466
native GetClientAbsAngles(client, Float:ang[3]);
faluco@658
   467
faluco@658
   468
/**
faluco@658
   469
 * Returns the client's origin vector.
faluco@658
   470
 *
faluco@658
   471
 * @param client		Player's index.
faluco@658
   472
 * @param vec			Destination vector to store the client's origin vector.
faluco@658
   473
 * @noreturn
faluco@658
   474
 * @error				Invalid client index, client not in game, or no mod support.
faluco@658
   475
 */
faluco@658
   476
native GetClientAbsOrigin(client, Float:vec[3]);
faluco@658
   477
faluco@658
   478
/**
faluco@658
   479
 * Returns the client's armor.
faluco@658
   480
 *
faluco@658
   481
 * @param client		Player's index.
faluco@658
   482
 * @return				Armor value.
faluco@658
   483
 * @error				Invalid client index, client not in game, or no mod support.
faluco@658
   484
 */
faluco@658
   485
native GetClientArmor(client);
faluco@658
   486
faluco@658
   487
/**
faluco@658
   488
 * Returns the client's death count.
faluco@658
   489
 *
faluco@658
   490
 * @param client		Player's index.
faluco@658
   491
 * @return				Death count.
faluco@658
   492
 * @error				Invalid client index, client not in game, or no mod support.
faluco@658
   493
 */
faluco@658
   494
native GetClientDeaths(client);
faluco@658
   495
faluco@658
   496
/**
faluco@658
   497
 * Returns the client's frag count.
faluco@658
   498
 *
faluco@658
   499
 * @param client		Player's index.
faluco@658
   500
 * @return				Frag count.
faluco@658
   501
 * @error				Invalid client index, client not in game, or no mod support.
faluco@658
   502
 */
faluco@658
   503
native GetClientFrags(client);
faluco@682
   504
faluco@682
   505
/**
faluco@682
   506
 * Returns the client's send data rate in bytes/sec.
faluco@682
   507
 *
faluco@682
   508
 * @param client		Player's index.
faluco@682
   509
 * @return				Data rate.
faluco@682
   510
 * @error				Invalid client index, client not in game, or fake client.
faluco@682
   511
 */
dvander@691
   512
native GetClientDataRate(client);
faluco@682
   513
faluco@682
   514
/**
faluco@682
   515
 * Returns if a client is timing out
faluco@682
   516
 *
faluco@682
   517
 * @param client		Player's index.
faluco@682
   518
 * @return				True if client is timing out, false otherwise.
faluco@682
   519
 * @error				Invalid client index, client not in game, or fake client.
faluco@682
   520
 */
dvander@691
   521
native bool:IsClientTimingOut(client);
faluco@682
   522
faluco@682
   523
/**
faluco@682
   524
 * Returns the client's connection time in seconds.
faluco@682
   525
 *
faluco@682
   526
 * @param client		Player's index.
faluco@682
   527
 * @return				Connection time.
faluco@682
   528
 * @error				Invalid client index, client not in game, or fake client.
faluco@682
   529
 */
dvander@691
   530
native Float:GetClientTime(client);
faluco@682
   531
faluco@682
   532
/**
faluco@682
   533
 * Returns the client's current latency (RTT), more accurate than GetAvgLatency but jittering.
faluco@682
   534
 *
faluco@682
   535
 * @param client		Player's index.
faluco@682
   536
 * @param flow			Traffic flowing direction.
faluco@682
   537
 * @return				Latency.
faluco@682
   538
 * @error				Invalid client index, client not in game, or fake client.
faluco@682
   539
 */
dvander@691
   540
native Float:GetClientLatency(client, NetFlow:flow);
faluco@682
   541
faluco@682
   542
/**
faluco@682
   543
 * Returns the client's average packet latency in seconds.
faluco@682
   544
 *
faluco@682
   545
 * @param client		Player's index.
faluco@682
   546
 * @param flow			Traffic flowing direction.
faluco@682
   547
 * @return				Average latency.
faluco@682
   548
 * @error				Invalid client index, client not in game, or fake client.
faluco@682
   549
 */
dvander@691
   550
native Float:GetClientAvgLatency(client, NetFlow:flow);
faluco@682
   551
faluco@682
   552
/**
faluco@682
   553
 * Returns the client's average packet loss, values go from 0 to 1 (for percentages).
faluco@682
   554
 *
faluco@682
   555
 * @param client		Player's index.
faluco@682
   556
 * @param flow			Traffic flowing direction.
faluco@682
   557
 * @return				Average packet loss.
faluco@682
   558
 * @error				Invalid client index, client not in game, or fake client.
faluco@682
   559
 */
dvander@691
   560
native Float:GetClientAvgLoss(client, NetFlow:flow);
faluco@682
   561
faluco@682
   562
/**
faluco@682
   563
 * Returns the client's average packet choke, values go from 0 to 1 (for percentages).
faluco@682
   564
 *
faluco@682
   565
 * @param client		Player's index.
faluco@682
   566
 * @param flow			Traffic flowing direction.
faluco@682
   567
 * @return				Average packet choke.
faluco@682
   568
 * @error				Invalid client index, client not in game, or fake client.
faluco@682
   569
 */
dvander@691
   570
native Float:GetClientAvgChoke(client, NetFlow:flow);
faluco@682
   571
faluco@682
   572
/**
faluco@682
   573
 * Returns the client's data flow in bytes/sec.
faluco@682
   574
 *
faluco@682
   575
 * @param client		Player's index.
faluco@682
   576
 * @param flow			Traffic flowing direction.
faluco@682
   577
 * @return				Data flow.
faluco@682
   578
 * @error				Invalid client index, client not in game, or fake client.
faluco@682
   579
 */
dvander@691
   580
native Float:GetClientAvgData(client, NetFlow:flow);
faluco@682
   581
faluco@682
   582
/**
faluco@682
   583
 * Returns the client's average packet frequency in packets/sec.
faluco@682
   584
 *
faluco@682
   585
 * @param client		Player's index.
faluco@682
   586
 * @param flow			Traffic flowing direction.
faluco@682
   587
 * @return				Packet frequency.
faluco@682
   588
 * @error				Invalid client index, client not in game, or fake client.
faluco@682
   589
 */
dvander@691
   590
native Float:GetClientAvgPackets(client, NetFlow:flow);
faluco@682
   591
faluco@682
   592
/**
faluco@682
   593
 * Translates an userid index to the real player index.
faluco@682
   594
 *
faluco@682
   595
 * @param userid		Userid value.
faluco@682
   596
 * @return				Client value.
faluco@682
   597
 * @error				Returns 0 if invalid userid.
faluco@682
   598
 */
faluco@682
   599
native GetClientOfUserId(userid);
ds@992
   600
ds@992
   601
/**
dvander@1346
   602
 * Disconnects a client from the server.  
dvander@1346
   603
 *
dvander@1346
   604
 * Kicking clients from certain events or callbacks may cause crashes.  If in 
dvander@1346
   605
 * doubt, create a short (0.1 second) timer to kick the client in the next 
dvander@1346
   606
 * available frame.
ds@992
   607
 *
ds@992
   608
 * @param client		Client index.
ds@992
   609
 * @param format		Optional formatting rules for disconnect reason.
ds@992
   610
 *                      Note that a period is automatically appended to the string by the engine.
ds@992
   611
 * @param ...			Variable number of format parameters.
ds@992
   612
 * @noreturn
ds@992
   613
 * @error				Invalid client index, or client not connected.
ds@992
   614
 */
ds@996
   615
native KickClient(client, const String:format[]="", any:...);
dvander@1033
   616
dvander@1033
   617
/**
dvander@1033
   618
 * Changes a client's team through the mod's generic team changing function.
dvander@1033
   619
 * On CS:S, this will kill the player.
dvander@1033
   620
 *
dvander@1033
   621
 * @param client		Client index.
dvander@1033
   622
 * @param team			Mod-specific team index.
dvander@1033
   623
 * @noreturn
dvander@1033
   624
 * @error				Invalid client index, client not connected, or lack of 
dvander@1033
   625
 *						mod support.
dvander@1033
   626
 */
dvander@1033
   627
native ChangeClientTeam(client, team);
dvander@1423
   628