plugins/include/clients.inc
author Scott Ehlert <ds@alliedmods.net>
Wed Aug 15 06:19:30 2007 +0000 (2007-08-15)
changeset 1330 ab94316bb52b
parent 1273 9afc766f8e9c
child 1342 0c7dc872bbae
permissions -rw-r--r--
Updated license headers on virtually all files with extremely minor changes in the name of some sort of strange consistency.
All plugin and include file headers also have been changed to say about GPL3 instead of GPL2.

(This day shall henceforth be known as the Eighty Column Massacre of '07)
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 */
ds@901
    46
dvander@545
    47
/**
dvander@545
    48
 * Called on client connection.
dvander@545
    49
 *
dvander@1273
    50
 * @param client		Client index.
dvander@545
    51
 * @param rejectmsg		Buffer to store the rejection message when the connection is refused.
dvander@545
    52
 * @param maxlen		Maximum number of characters for rejection buffer.
dvander@545
    53
 * @return				True to validate client's connection, false to refuse it.
dvander@545
    54
 */
dvander@545
    55
forward bool:OnClientConnect(client, String:rejectmsg[], maxlen);
dvander@545
    56
dvander@545
    57
/**
dvander@545
    58
 * Called when a client is entering to the game.
dvander@545
    59
 *
dvander@1273
    60
 * @param client		Client index.
dvander@545
    61
 * @noreturn
dvander@545
    62
 */
dvander@545
    63
forward OnClientPutInServer(client);
dvander@545
    64
dvander@545
    65
/**
dvander@545
    66
 * Called when a client is disconnecting from the server.
dvander@545
    67
 *
dvander@1273
    68
 * @param client		Client index.
dvander@545
    69
 * @noreturn
dvander@545
    70
 */
dvander@545
    71
forward OnClientDisconnect(client);
dvander@545
    72
dvander@545
    73
/**
dvander@545
    74
 * Called when a client is disconnected from the server.
dvander@545
    75
 *
dvander@1273
    76
 * @param client		Client index.
dvander@545
    77
 * @noreturn
dvander@545
    78
 */
dvander@545
    79
forward OnClientDisconnect_Post(client);
dvander@545
    80
dvander@545
    81
/**
dvander@545
    82
 * Called when a client is sending a command.
dvander@545
    83
 *
dvander@1273
    84
 * @param client		Client index.
dvander@545
    85
 * @param args			Number of arguments.
dvander@545
    86
 * @noreturn
dvander@545
    87
 */
dvander@545
    88
forward Action:OnClientCommand(client, args);
dvander@545
    89
dvander@545
    90
/**
dvander@545
    91
 * Called whenever the client's settings are changed.
dvander@545
    92
 *
dvander@1273
    93
 * @param client		Client index.
dvander@545
    94
 * @noreturn
dvander@545
    95
 */
dvander@545
    96
forward OnClientSettingsChanged(client);
dvander@545
    97
dvander@545
    98
/**
dvander@545
    99
 * Called when a client receives a Steam ID.
dvander@1273
   100
 
dvander@1273
   101
 * Admin properties are not assigned here, but on OnClientPostAdminCheck().
dvander@1273
   102
 * This is called by bots, but the ID will be "BOT".
dvander@545
   103
 *
dvander@1273
   104
 * @param client		Client index.
dvander@1273
   105
 * @param auth			Client auth string.
dvander@1273
   106
 * @noreturn
dvander@545
   107
 */
dvander@545
   108
forward OnClientAuthorized(client, const String:auth[]);
dvander@545
   109
dvander@545
   110
/**
dvander@1273
   111
 * Called once a client is authorized and fully in-game, but 
dvander@1273
   112
 * before admin checks are done.  This can be used to override 
dvander@1273
   113
 * the default admin checks for a client.
dvander@1273
   114
 *
dvander@1273
   115
 * Note: If handled/blocked, PostAdminCheck must be signalled 
dvander@1273
   116
 * manually via NotifyPostAdminCheck().
dvander@1273
   117
 *
dvander@1273
   118
 * @param client		Client index.
dvander@1273
   119
 * @return				Plugin_Handled to block admin checks.
dvander@1273
   120
 */
dvander@1273
   121
forward Action:OnClientPreAdminCheck(client);
dvander@1273
   122
dvander@1273
   123
/**
dvander@1273
   124
 * Called once a client is authorized and fully in-game, and 
dvander@1273
   125
 * after all post-connection authorizations have been performed.
dvander@1273
   126
 *
dvander@1273
   127
 * @param client		Client index.
dvander@1273
   128
 * @noreturn
dvander@1273
   129
 */
dvander@1273
   130
forward OnClientPostAdminCheck(client);
dvander@1273
   131
dvander@1273
   132
/**
dvander@545
   133
 * Returns the maximum number of clients allowed on the server.
dvander@545
   134
 *
dvander@545
   135
 * @return				Maximum number of clients allowed.
dvander@545
   136
 */
dvander@545
   137
native GetMaxClients();
dvander@545
   138
dvander@545
   139
/**
dvander@545
   140
 * Returns the client count put in the server.
dvander@545
   141
 *
dvander@545
   142
 * @param inGameOnly	If false connecting players are also counted.
dvander@545
   143
 * @return				Client count in the server.
dvander@545
   144
 */
dvander@545
   145
native GetClientCount(bool:inGameOnly=true);
dvander@545
   146
dvander@545
   147
/**
dvander@545
   148
 * Returns the client's name.
dvander@545
   149
 *
dvander@545
   150
 * @param client		Player index.
dvander@545
   151
 * @param name			Buffer to store the client's name.
dvander@545
   152
 * @param maxlen		Maximum length of string buffer (includes NULL terminator).
dvander@545
   153
 * @return				True on success, false otherwise.
dvander@545
   154
 * @error				If the client is not connected an error will be thrown.
dvander@545
   155
 */
dvander@545
   156
native bool:GetClientName(client, String:name[], maxlen);
dvander@545
   157
dvander@545
   158
/**
dvander@545
   159
 * Retrieves a client's IP address.
dvander@545
   160
 *
dvander@545
   161
 * @param client		Player index.
dvander@545
   162
 * @param name			Buffer to store the client's ip address.
dvander@545
   163
 * @param maxlen		Maximum length of string buffer (includes NULL terminator).
dvander@545
   164
 * @param remport		Remove client's port from the ip string (true by default).
dvander@545
   165
 * @return				True on success, false otherwise.
dvander@545
   166
 * @error				If the client is not connected or the index is invalid.
dvander@545
   167
 */
dvander@545
   168
native bool:GetClientIP(client, String:ip[], maxlen, bool:remport=true);
dvander@545
   169
dvander@545
   170
/**
dvander@545
   171
 * Retrieves a client's authentication string (SteamID).
dvander@545
   172
 *
dvander@545
   173
 * @param client		Player index.
dvander@545
   174
 * @param auth			Buffer to store the client's auth string.
dvander@545
   175
 * @param maxlen		Maximum length of string buffer (includes NULL terminator).
dvander@545
   176
 * @return				True on success, false otherwise.
dvander@545
   177
 * @error				If the client is not connected or the index is invalid.
dvander@545
   178
 */
dvander@545
   179
native bool:GetClientAuthString(client, String:auth[], maxlen);
dvander@545
   180
dvander@545
   181
/**
dvander@545
   182
 * Retrieves a client's user id, which is an index incremented for every client
dvander@545
   183
 * that joins the server.
dvander@545
   184
 *
dvander@545
   185
 * @param client		Player index.
dvander@545
   186
 * @return				User id of the client.
dvander@545
   187
 * @error 				If the client is not connected or the index is invalid.
dvander@545
   188
 */
dvander@545
   189
native GetClientUserId(client);
dvander@545
   190
dvander@545
   191
/**
dvander@545
   192
 * Returns if a certain player is connected.
dvander@545
   193
 *
dvander@545
   194
 * @param client		Player index.
dvander@545
   195
 * @return				True if player is connected to the server, false otherwise.
dvander@545
   196
 */
dvander@545
   197
native bool:IsClientConnected(client);
dvander@545
   198
dvander@545
   199
/**
dvander@545
   200
 * Returns if a certain player has entered the game.
dvander@545
   201
 *
dvander@545
   202
 * @param client		Player index.
dvander@545
   203
 * @return				True if player has entered the game, false otherwise.
dvander@545
   204
 */
ds@784
   205
native bool:IsClientInGame(client);
ds@784
   206
ds@784
   207
/**
ds@784
   208
 * Backwards compatibility stock - use IsClientInGame
ds@784
   209
 * @deprecated			Renamed to IsClientInGame
ds@784
   210
 */
ds@1268
   211
#pragma deprecated Use IsClientInGame() instead
ds@784
   212
stock bool:IsPlayerInGame(client)
ds@784
   213
{
ds@784
   214
	return IsClientInGame(client);
ds@784
   215
}
dvander@545
   216
dvander@545
   217
/**
dvander@545
   218
 * Returns if a certain player has been authenticated.
dvander@545
   219
 *
dvander@545
   220
 * @param client		Player index.
dvander@545
   221
 * @return				True if player has been authenticated, false otherwise.
dvander@545
   222
 */
dvander@545
   223
native bool:IsClientAuthorized(client);
dvander@545
   224
dvander@545
   225
/**
dvander@545
   226
 * Returns if a certain player is a fake client.
dvander@545
   227
 *
dvander@545
   228
 * @param client		Player index.
dvander@545
   229
 * @return				True if player is a fake client, false otherwise.
dvander@545
   230
 */
dvander@545
   231
native bool:IsFakeClient(client);
dvander@545
   232
dvander@545
   233
/**
ds@1001
   234
 * Returns if a certain player is an observer/spectator.
ds@1001
   235
 *
ds@1001
   236
 * @param client		Player index.
ds@1001
   237
 * @return				True if player is an obverser, false otherwise.
ds@1001
   238
 */
ds@1001
   239
native bool:IsClientObserver(client);
ds@1001
   240
ds@1001
   241
/**
dvander@545
   242
 * Retrieves values from client replicated keys.
dvander@545
   243
 *
dvander@545
   244
 * @param client		Player's index.
dvander@545
   245
 * @param key			Key string.
dvander@545
   246
 * @param value			Buffer to store value.
dvander@545
   247
 * @param maxlen		Maximum length of valve (UTF-8 safe).
dvander@545
   248
 * @return 				True on success, false otherwise.
dvander@545
   249
 * @error				Invalid client index, or client not connected.
dvander@545
   250
 */
dvander@545
   251
native bool:GetClientInfo(client, const String:key[], String:value[], maxlen);
dvander@545
   252
dvander@545
   253
/**
dvander@644
   254
 * Retrieves a client's team index.
dvander@644
   255
 *
dvander@644
   256
 * @param client		Player's index.
dvander@644
   257
 * @return				Team index the client is on (mod specific).
dvander@644
   258
 * @error				Invalid client index, client not in game, or no mod support.
dvander@644
   259
 */
dvander@644
   260
native GetClientTeam(client);
dvander@644
   261
 
dvander@644
   262
/**
dvander@545
   263
 * Sets a client's AdminId.  
dvander@545
   264
 *
dvander@545
   265
 * @param client		Player's index.
dvander@545
   266
 * @param id			AdminId to set.  INVALID_ADMIN_ID removes admin permissions.
dvander@545
   267
 * @param temp			True if the id should be freed on disconnect.
dvander@545
   268
 * @noreturn
dvander@545
   269
 * @error				Invalid client index, client not connected, or bogus AdminId.
dvander@545
   270
 */
dvander@545
   271
native SetUserAdmin(client, AdminId:id, bool:temp=false);
dvander@545
   272
dvander@545
   273
/**
dvander@545
   274
 * Retrieves a client's AdminId.
dvander@545
   275
 *
dvander@545
   276
 * @param client		Player's index.
dvander@545
   277
 * @return				AdminId of the client, or INVALID_ADMIN_ID if none.
dvander@545
   278
 * @error				Invalid client index, or client not connected.
dvander@545
   279
 */
dvander@545
   280
native AdminId:GetUserAdmin(client);
dvander@545
   281
dvander@545
   282
/**
dvander@545
   283
 * Sets access flags on a client.  If the client is not an admin,
dvander@545
   284
 * a temporary, anonymous AdminId is given.
dvander@545
   285
 *
dvander@545
   286
 * @param client		Player's index.
dvander@545
   287
 * @param ...			Flags to set on the client.
dvander@545
   288
 * @noreturn
dvander@545
   289
 * @error				Invalid client index, or client not connected.
dvander@545
   290
 */
ds@634
   291
native AddUserFlags(client, AdminFlag:...);
dvander@545
   292
dvander@545
   293
/**
dvander@545
   294
 * Removes flags from a client.  If the client is not an admin,
dvander@545
   295
 * this has no effect.
dvander@545
   296
 *
dvander@545
   297
 * @param client		Player's index.
dvander@545
   298
 * @param ...			Flags to remove from the client.
dvander@545
   299
 * @noreturn
dvander@545
   300
 * @error				Invalid client index, or client not connected.
dvander@545
   301
 */
ds@634
   302
native RemoveUserFlags(client, AdminFlag:...);
dvander@545
   303
dvander@545
   304
/** 
dvander@545
   305
 * Sets access flags on a client using bits instead of flags.  If the
dvander@545
   306
 * client is not an admin, and flags not 0, a temporary, anonymous AdminId is given.
dvander@545
   307
 *
dvander@545
   308
 * @param client		Player's index.
dvander@545
   309
 * @param flags			Bitstring of flags to set on client.
dvander@545
   310
 * @noreturn
dvander@545
   311
 */
dvander@545
   312
native SetUserFlagBits(client, flags);
dvander@545
   313
dvander@545
   314
/**
dvander@545
   315
 * Returns client access flags.  If the client is not an admin,
dvander@545
   316
 * the result is always 0.
dvander@545
   317
 * 
dvander@545
   318
 * @param client		Player's index.
dvander@545
   319
 * @return				Flags
dvander@545
   320
 * @error				Invalid client index, or client not connected.
dvander@545
   321
 */
dvander@545
   322
native GetUserFlagBits(client);
dvander@545
   323
dvander@545
   324
/**
dvander@545
   325
 * Returns whether a user can target another user.
dvander@545
   326
 * This is a helper function for CanAdminTarget.
dvander@545
   327
 *
dvander@545
   328
 * @param client		Player's index.
dvander@545
   329
 * @param target		Target player's index.
dvander@545
   330
 * @return				True if target is targettable by the player, false otherwise.
dvander@545
   331
 * @error				Invalid or unconnected player indexers.
dvander@545
   332
 */
dvander@545
   333
native bool:CanUserTarget(client, target);
dvander@545
   334
dvander@1273
   335
/**
dvander@1273
   336
 * Runs through the Core-defined admin authorization checks on a player.
dvander@1273
   337
 * Has no effect if the player is already an admin.
dvander@1273
   338
 *
dvander@1273
   339
 * Note: This function is based on the internal cache only.
dvander@1273
   340
 *
dvander@1273
   341
 * @param client		Client index.
dvander@1273
   342
 * @return				True if access was changed, false if it did not.
dvander@1273
   343
 * @error				Invalid client index or client not in-game AND authorized.
dvander@1273
   344
 */
dvander@1273
   345
native bool:RunAdminCacheChecks(client);
dvander@1273
   346
dvander@1273
   347
/**
dvander@1273
   348
 * Signals that a player has completed post-connection admin checks.
dvander@1273
   349
 * Has no effect if the player has already had this event signalled.
dvander@1273
   350
 *
dvander@1273
   351
 * Note: This must be sent even if no admin id was assigned.
dvander@1273
   352
 *
dvander@1273
   353
 * @param client		Client index.
dvander@1273
   354
 * @noreturn
dvander@1273
   355
 * @error				Invalid client index or client not in-game AND authorized.
dvander@1273
   356
 */
dvander@1273
   357
native NotifyPostAdminCheck(client);
dvander@1273
   358
dvander@545
   359
/** 
dvander@545
   360
 * Creates a fake client.
dvander@545
   361
 *
dvander@545
   362
 * @param name			Name to use.
dvander@545
   363
 * @return				Client index on success, 0 otherwise.
dvander@545
   364
 */
dvander@545
   365
native CreateFakeClient(const String:name[]);
dvander@545
   366
dvander@545
   367
/**
dvander@545
   368
 * Sets a convar value on a fake client.
dvander@545
   369
 *
dvander@545
   370
 * @param client		Client index.
dvander@545
   371
 * @param cvar			ConVar name.
dvander@545
   372
 * @param value			ConVar value.
dvander@545
   373
 * @noreturn
dvander@545
   374
 * @error				Invalid client index, client not connected,
dvander@545
   375
 *						or client not a fake client.
dvander@545
   376
 */
ds@621
   377
native SetFakeClientConVar(client, const String:cvar[], const String:value[]);
faluco@658
   378
faluco@658
   379
/**
faluco@658
   380
 * Returns the client's health.
faluco@658
   381
 *
faluco@658
   382
 * @param client		Player's index.
faluco@658
   383
 * @return				Health value.
faluco@658
   384
 * @error				Invalid client index, client not in game, or no mod support.
faluco@658
   385
 */
faluco@658
   386
native GetClientHealth(client);
faluco@658
   387
faluco@658
   388
/**
faluco@658
   389
 * Returns the client's model name.
faluco@658
   390
 *
faluco@658
   391
 * @param client		Player's index.
faluco@658
   392
 * @param model			Buffer to store the client's model name.
faluco@658
   393
 * @param maxlen		Maximum length of string buffer (includes NULL terminator).
faluco@658
   394
 * @noreturn
faluco@658
   395
 * @error				Invalid client index, client not in game, or no mod support.
faluco@658
   396
 */
faluco@658
   397
native GetClientModel(client, String:model[], maxlen);
faluco@658
   398
faluco@658
   399
/**
faluco@658
   400
 * Returns the client's weapon name.
faluco@658
   401
 *
faluco@658
   402
 * @param client		Player's index.
faluco@658
   403
 * @param weapon		Buffer to store the client's weapon name.
faluco@658
   404
 * @param maxlen		Maximum length of string buffer (includes NULL terminator).
faluco@658
   405
 * @noreturn
faluco@658
   406
 * @error				Invalid client index, client not in game, or no mod support.
faluco@658
   407
 */
faluco@658
   408
native GetClientWeapon(client, String:weapon[], maxlen);
faluco@658
   409
faluco@658
   410
/**
faluco@658
   411
 * Returns the client's max size vector.
faluco@658
   412
 *
faluco@658
   413
 * @param client		Player's index.
faluco@658
   414
 * @param vec			Destination vector to store the client's max size.
faluco@658
   415
 * @noreturn
faluco@658
   416
 * @error				Invalid client index, client not in game, or no mod support.
faluco@658
   417
 */
faluco@658
   418
native GetClientMaxs(client, Float:vec[3]);
faluco@658
   419
faluco@658
   420
/**
faluco@658
   421
 * Returns the client's min size vector.
faluco@658
   422
 *
faluco@658
   423
 * @param client		Player's index.
faluco@658
   424
 * @param vec			Destination vector to store the client's min size.
faluco@658
   425
 * @noreturn
faluco@658
   426
 * @error				Invalid client index, client not in game, or no mod support.
faluco@658
   427
 */
faluco@658
   428
native GetClientMins(client, Float:vec[3]);
faluco@658
   429
faluco@658
   430
/**
faluco@658
   431
 * Returns the client's position angle.
faluco@658
   432
 *
faluco@658
   433
 * @param client		Player's index.
faluco@658
   434
 * @param ang			Destination vector to store the client's position angle.
faluco@658
   435
 * @noreturn
faluco@658
   436
 * @error				Invalid client index, client not in game, or no mod support.
faluco@658
   437
 */
faluco@658
   438
native GetClientAbsAngles(client, Float:ang[3]);
faluco@658
   439
faluco@658
   440
/**
faluco@658
   441
 * Returns the client's origin vector.
faluco@658
   442
 *
faluco@658
   443
 * @param client		Player's index.
faluco@658
   444
 * @param vec			Destination vector to store the client's origin vector.
faluco@658
   445
 * @noreturn
faluco@658
   446
 * @error				Invalid client index, client not in game, or no mod support.
faluco@658
   447
 */
faluco@658
   448
native GetClientAbsOrigin(client, Float:vec[3]);
faluco@658
   449
faluco@658
   450
/**
faluco@658
   451
 * Returns the client's armor.
faluco@658
   452
 *
faluco@658
   453
 * @param client		Player's index.
faluco@658
   454
 * @return				Armor value.
faluco@658
   455
 * @error				Invalid client index, client not in game, or no mod support.
faluco@658
   456
 */
faluco@658
   457
native GetClientArmor(client);
faluco@658
   458
faluco@658
   459
/**
faluco@658
   460
 * Returns the client's death count.
faluco@658
   461
 *
faluco@658
   462
 * @param client		Player's index.
faluco@658
   463
 * @return				Death count.
faluco@658
   464
 * @error				Invalid client index, client not in game, or no mod support.
faluco@658
   465
 */
faluco@658
   466
native GetClientDeaths(client);
faluco@658
   467
faluco@658
   468
/**
faluco@658
   469
 * Returns the client's frag count.
faluco@658
   470
 *
faluco@658
   471
 * @param client		Player's index.
faluco@658
   472
 * @return				Frag count.
faluco@658
   473
 * @error				Invalid client index, client not in game, or no mod support.
faluco@658
   474
 */
faluco@658
   475
native GetClientFrags(client);
faluco@682
   476
faluco@682
   477
/**
faluco@682
   478
 * Returns the client's send data rate in bytes/sec.
faluco@682
   479
 *
faluco@682
   480
 * @param client		Player's index.
faluco@682
   481
 * @return				Data rate.
faluco@682
   482
 * @error				Invalid client index, client not in game, or fake client.
faluco@682
   483
 */
dvander@691
   484
native GetClientDataRate(client);
faluco@682
   485
faluco@682
   486
/**
faluco@682
   487
 * Returns if a client is timing out
faluco@682
   488
 *
faluco@682
   489
 * @param client		Player's index.
faluco@682
   490
 * @return				True if client is timing out, false otherwise.
faluco@682
   491
 * @error				Invalid client index, client not in game, or fake client.
faluco@682
   492
 */
dvander@691
   493
native bool:IsClientTimingOut(client);
faluco@682
   494
faluco@682
   495
/**
faluco@682
   496
 * Returns the client's connection time in seconds.
faluco@682
   497
 *
faluco@682
   498
 * @param client		Player's index.
faluco@682
   499
 * @return				Connection time.
faluco@682
   500
 * @error				Invalid client index, client not in game, or fake client.
faluco@682
   501
 */
dvander@691
   502
native Float:GetClientTime(client);
faluco@682
   503
faluco@682
   504
/**
faluco@682
   505
 * Returns the client's current latency (RTT), more accurate than GetAvgLatency but jittering.
faluco@682
   506
 *
faluco@682
   507
 * @param client		Player's index.
faluco@682
   508
 * @param flow			Traffic flowing direction.
faluco@682
   509
 * @return				Latency.
faluco@682
   510
 * @error				Invalid client index, client not in game, or fake client.
faluco@682
   511
 */
dvander@691
   512
native Float:GetClientLatency(client, NetFlow:flow);
faluco@682
   513
faluco@682
   514
/**
faluco@682
   515
 * Returns the client's average packet latency in seconds.
faluco@682
   516
 *
faluco@682
   517
 * @param client		Player's index.
faluco@682
   518
 * @param flow			Traffic flowing direction.
faluco@682
   519
 * @return				Average latency.
faluco@682
   520
 * @error				Invalid client index, client not in game, or fake client.
faluco@682
   521
 */
dvander@691
   522
native Float:GetClientAvgLatency(client, NetFlow:flow);
faluco@682
   523
faluco@682
   524
/**
faluco@682
   525
 * Returns the client's average packet loss, values go from 0 to 1 (for percentages).
faluco@682
   526
 *
faluco@682
   527
 * @param client		Player's index.
faluco@682
   528
 * @param flow			Traffic flowing direction.
faluco@682
   529
 * @return				Average packet loss.
faluco@682
   530
 * @error				Invalid client index, client not in game, or fake client.
faluco@682
   531
 */
dvander@691
   532
native Float:GetClientAvgLoss(client, NetFlow:flow);
faluco@682
   533
faluco@682
   534
/**
faluco@682
   535
 * Returns the client's average packet choke, values go from 0 to 1 (for percentages).
faluco@682
   536
 *
faluco@682
   537
 * @param client		Player's index.
faluco@682
   538
 * @param flow			Traffic flowing direction.
faluco@682
   539
 * @return				Average packet choke.
faluco@682
   540
 * @error				Invalid client index, client not in game, or fake client.
faluco@682
   541
 */
dvander@691
   542
native Float:GetClientAvgChoke(client, NetFlow:flow);
faluco@682
   543
faluco@682
   544
/**
faluco@682
   545
 * Returns the client's data flow in bytes/sec.
faluco@682
   546
 *
faluco@682
   547
 * @param client		Player's index.
faluco@682
   548
 * @param flow			Traffic flowing direction.
faluco@682
   549
 * @return				Data flow.
faluco@682
   550
 * @error				Invalid client index, client not in game, or fake client.
faluco@682
   551
 */
dvander@691
   552
native Float:GetClientAvgData(client, NetFlow:flow);
faluco@682
   553
faluco@682
   554
/**
faluco@682
   555
 * Returns the client's average packet frequency in packets/sec.
faluco@682
   556
 *
faluco@682
   557
 * @param client		Player's index.
faluco@682
   558
 * @param flow			Traffic flowing direction.
faluco@682
   559
 * @return				Packet frequency.
faluco@682
   560
 * @error				Invalid client index, client not in game, or fake client.
faluco@682
   561
 */
dvander@691
   562
native Float:GetClientAvgPackets(client, NetFlow:flow);
faluco@682
   563
faluco@682
   564
/**
faluco@682
   565
 * Translates an userid index to the real player index.
faluco@682
   566
 *
faluco@682
   567
 * @param userid		Userid value.
faluco@682
   568
 * @return				Client value.
faluco@682
   569
 * @error				Returns 0 if invalid userid.
faluco@682
   570
 */
faluco@682
   571
native GetClientOfUserId(userid);
ds@992
   572
ds@992
   573
/**
ds@992
   574
 * Disconnects a client from the server.
ds@992
   575
 *
ds@992
   576
 * @param client		Client index.
ds@992
   577
 * @param format		Optional formatting rules for disconnect reason.
ds@992
   578
 *                      Note that a period is automatically appended to the string by the engine.
ds@992
   579
 * @param ...			Variable number of format parameters.
ds@992
   580
 * @noreturn
ds@992
   581
 * @error				Invalid client index, or client not connected.
ds@992
   582
 */
ds@996
   583
native KickClient(client, const String:format[]="", any:...);
dvander@1033
   584
dvander@1033
   585
/**
dvander@1033
   586
 * Changes a client's team through the mod's generic team changing function.
dvander@1033
   587
 * On CS:S, this will kill the player.
dvander@1033
   588
 *
dvander@1033
   589
 * @param client		Client index.
dvander@1033
   590
 * @param team			Mod-specific team index.
dvander@1033
   591
 * @noreturn
dvander@1033
   592
 * @error				Invalid client index, client not connected, or lack of 
dvander@1033
   593
 *						mod support.
dvander@1033
   594
 */
dvander@1033
   595
native ChangeClientTeam(client, team);