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