plugins/include/clients.inc
author David Anderson <dvander@alliedmods.net>
Fri Mar 02 08:34:13 2007 +0000 (2007-03-02)
changeset 558 fc0eec032efb
parent 545 f7e7a7a413cc
child 619 6934bf39171e
permissions -rw-r--r--
added state change function
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
dvander@545
    21
/**
dvander@545
    22
 * Called on client connection.
dvander@545
    23
 *
dvander@545
    24
 * @param client		Player index.
dvander@545
    25
 * @param rejectmsg		Buffer to store the rejection message when the connection is refused.
dvander@545
    26
 * @param maxlen		Maximum number of characters for rejection buffer.
dvander@545
    27
 * @return				True to validate client's connection, false to refuse it.
dvander@545
    28
 */
dvander@545
    29
forward bool:OnClientConnect(client, String:rejectmsg[], maxlen);
dvander@545
    30
dvander@545
    31
/**
dvander@545
    32
 * Called when a client is entering to the game.
dvander@545
    33
 *
dvander@545
    34
 * @param client		Player index.
dvander@545
    35
 * @noreturn
dvander@545
    36
 */
dvander@545
    37
forward OnClientPutInServer(client);
dvander@545
    38
dvander@545
    39
/**
dvander@545
    40
 * Called when a client is disconnecting from the server.
dvander@545
    41
 *
dvander@545
    42
 * @param client		Player index.
dvander@545
    43
 * @noreturn
dvander@545
    44
 */
dvander@545
    45
forward OnClientDisconnect(client);
dvander@545
    46
dvander@545
    47
/**
dvander@545
    48
 * Called when a client is disconnected from the server.
dvander@545
    49
 *
dvander@545
    50
 * @param client		Player index.
dvander@545
    51
 * @noreturn
dvander@545
    52
 */
dvander@545
    53
forward OnClientDisconnect_Post(client);
dvander@545
    54
dvander@545
    55
/**
dvander@545
    56
 * Called when a client is sending a command.
dvander@545
    57
 *
dvander@545
    58
 * @param client		Player index.
dvander@545
    59
 * @param args			Number of arguments.
dvander@545
    60
 * @noreturn
dvander@545
    61
 */
dvander@545
    62
forward Action:OnClientCommand(client, args);
dvander@545
    63
dvander@545
    64
/**
dvander@545
    65
 * Called whenever the client's settings are changed.
dvander@545
    66
 *
dvander@545
    67
 * @param client		Player index.
dvander@545
    68
 * @noreturn
dvander@545
    69
 */
dvander@545
    70
forward OnClientSettingsChanged(client);
dvander@545
    71
dvander@545
    72
/**
dvander@545
    73
 * Called when a client receives a Steam ID.
dvander@545
    74
 * @note This is called by bots, but the ID will be "BOT"
dvander@545
    75
 *
dvander@545
    76
 * @param client		Player index.
dvander@545
    77
 * @param auth			Player auth string.
dvander@545
    78
 */
dvander@545
    79
forward OnClientAuthorized(client, const String:auth[]);
dvander@545
    80
dvander@545
    81
/**
dvander@545
    82
 * Returns the maximum number of clients allowed on the server.
dvander@545
    83
 *
dvander@545
    84
 * @return				Maximum number of clients allowed.
dvander@545
    85
 */
dvander@545
    86
native GetMaxClients();
dvander@545
    87
dvander@545
    88
/**
dvander@545
    89
 * Returns the client count put in the server.
dvander@545
    90
 *
dvander@545
    91
 * @param inGameOnly	If false connecting players are also counted.
dvander@545
    92
 * @return				Client count in the server.
dvander@545
    93
 */
dvander@545
    94
native GetClientCount(bool:inGameOnly=true);
dvander@545
    95
dvander@545
    96
/**
dvander@545
    97
 * Returns the client's name.
dvander@545
    98
 *
dvander@545
    99
 * @param client		Player index.
dvander@545
   100
 * @param name			Buffer to store the client's name.
dvander@545
   101
 * @param maxlen		Maximum length of string buffer (includes NULL terminator).
dvander@545
   102
 * @return				True on success, false otherwise.
dvander@545
   103
 * @error				If the client is not connected an error will be thrown.
dvander@545
   104
 */
dvander@545
   105
native bool:GetClientName(client, String:name[], maxlen);
dvander@545
   106
dvander@545
   107
/**
dvander@545
   108
 * Retrieves a client's IP address.
dvander@545
   109
 *
dvander@545
   110
 * @param client		Player index.
dvander@545
   111
 * @param name			Buffer to store the client's ip address.
dvander@545
   112
 * @param maxlen		Maximum length of string buffer (includes NULL terminator).
dvander@545
   113
 * @param remport		Remove client's port from the ip string (true by default).
dvander@545
   114
 * @return				True on success, false otherwise.
dvander@545
   115
 * @error				If the client is not connected or the index is invalid.
dvander@545
   116
 */
dvander@545
   117
native bool:GetClientIP(client, String:ip[], maxlen, bool:remport=true);
dvander@545
   118
dvander@545
   119
/**
dvander@545
   120
 * Retrieves a client's authentication string (SteamID).
dvander@545
   121
 *
dvander@545
   122
 * @param client		Player index.
dvander@545
   123
 * @param auth			Buffer to store the client's auth string.
dvander@545
   124
 * @param maxlen		Maximum length of string buffer (includes NULL terminator).
dvander@545
   125
 * @return				True on success, false otherwise.
dvander@545
   126
 * @error				If the client is not connected or the index is invalid.
dvander@545
   127
 */
dvander@545
   128
native bool:GetClientAuthString(client, String:auth[], maxlen);
dvander@545
   129
dvander@545
   130
/**
dvander@545
   131
 * Retrieves a client's user id, which is an index incremented for every client
dvander@545
   132
 * that joins the server.
dvander@545
   133
 *
dvander@545
   134
 * @param client		Player index.
dvander@545
   135
 * @return				User id of the client.
dvander@545
   136
 * @error 				If the client is not connected or the index is invalid.
dvander@545
   137
 */
dvander@545
   138
native GetClientUserId(client);
dvander@545
   139
dvander@545
   140
/**
dvander@545
   141
 * Returns if a certain player is connected.
dvander@545
   142
 *
dvander@545
   143
 * @param client		Player index.
dvander@545
   144
 * @return				True if player is connected to the server, false otherwise.
dvander@545
   145
 */
dvander@545
   146
native bool:IsClientConnected(client);
dvander@545
   147
dvander@545
   148
/**
dvander@545
   149
 * Returns if a certain player has entered the game.
dvander@545
   150
 *
dvander@545
   151
 * @param client		Player index.
dvander@545
   152
 * @return				True if player has entered the game, false otherwise.
dvander@545
   153
 */
dvander@545
   154
native bool:IsPlayerInGame(client);
dvander@545
   155
dvander@545
   156
/**
dvander@545
   157
 * Returns if a certain player has been authenticated.
dvander@545
   158
 *
dvander@545
   159
 * @param client		Player index.
dvander@545
   160
 * @return				True if player has been authenticated, false otherwise.
dvander@545
   161
 */
dvander@545
   162
native bool:IsClientAuthorized(client);
dvander@545
   163
dvander@545
   164
/**
dvander@545
   165
 * Returns if a certain player is a fake client.
dvander@545
   166
 *
dvander@545
   167
 * @param client		Player index.
dvander@545
   168
 * @return				True if player is a fake client, false otherwise.
dvander@545
   169
 */
dvander@545
   170
native bool:IsFakeClient(client);
dvander@545
   171
dvander@545
   172
/**
dvander@545
   173
 * Retrieves values from client replicated keys.
dvander@545
   174
 *
dvander@545
   175
 * @param client		Player's index.
dvander@545
   176
 * @param key			Key string.
dvander@545
   177
 * @param value			Buffer to store value.
dvander@545
   178
 * @param maxlen		Maximum length of valve (UTF-8 safe).
dvander@545
   179
 * @return 				True on success, false otherwise.
dvander@545
   180
 * @error				Invalid client index, or client not connected.
dvander@545
   181
 */
dvander@545
   182
native bool:GetClientInfo(client, const String:key[], String:value[], maxlen);
dvander@545
   183
dvander@545
   184
/**
dvander@545
   185
 * Sets a client's AdminId.  
dvander@545
   186
 *
dvander@545
   187
 * @param client		Player's index.
dvander@545
   188
 * @param id			AdminId to set.  INVALID_ADMIN_ID removes admin permissions.
dvander@545
   189
 * @param temp			True if the id should be freed on disconnect.
dvander@545
   190
 * @noreturn
dvander@545
   191
 * @error				Invalid client index, client not connected, or bogus AdminId.
dvander@545
   192
 */
dvander@545
   193
native SetUserAdmin(client, AdminId:id, bool:temp=false);
dvander@545
   194
dvander@545
   195
/**
dvander@545
   196
 * Retrieves a client's AdminId.
dvander@545
   197
 *
dvander@545
   198
 * @param client		Player's index.
dvander@545
   199
 * @return				AdminId of the client, or INVALID_ADMIN_ID if none.
dvander@545
   200
 * @error				Invalid client index, or client not connected.
dvander@545
   201
 */
dvander@545
   202
native AdminId:GetUserAdmin(client);
dvander@545
   203
dvander@545
   204
/**
dvander@545
   205
 * Sets access flags on a client.  If the client is not an admin,
dvander@545
   206
 * a temporary, anonymous AdminId is given.
dvander@545
   207
 *
dvander@545
   208
 * @param client		Player's index.
dvander@545
   209
 * @param ...			Flags to set on the client.
dvander@545
   210
 * @noreturn
dvander@545
   211
 * @error				Invalid client index, or client not connected.
dvander@545
   212
 */
dvander@545
   213
native AddUserFlags(client, {AdminFlag}:...);
dvander@545
   214
dvander@545
   215
/**
dvander@545
   216
 * Removes flags from a client.  If the client is not an admin,
dvander@545
   217
 * this has no effect.
dvander@545
   218
 *
dvander@545
   219
 * @param client		Player's index.
dvander@545
   220
 * @param ...			Flags to remove from the client.
dvander@545
   221
 * @noreturn
dvander@545
   222
 * @error				Invalid client index, or client not connected.
dvander@545
   223
 */
dvander@545
   224
native RemoveUserFlags(client, {AdminFlag}:...);
dvander@545
   225
dvander@545
   226
/** 
dvander@545
   227
 * Sets access flags on a client using bits instead of flags.  If the
dvander@545
   228
 * client is not an admin, and flags not 0, a temporary, anonymous AdminId is given.
dvander@545
   229
 *
dvander@545
   230
 * @param client		Player's index.
dvander@545
   231
 * @param flags			Bitstring of flags to set on client.
dvander@545
   232
 * @noreturn
dvander@545
   233
 */
dvander@545
   234
native SetUserFlagBits(client, flags);
dvander@545
   235
dvander@545
   236
/**
dvander@545
   237
 * Returns client access flags.  If the client is not an admin,
dvander@545
   238
 * the result is always 0.
dvander@545
   239
 * 
dvander@545
   240
 * @param client		Player's index.
dvander@545
   241
 * @return				Flags
dvander@545
   242
 * @error				Invalid client index, or client not connected.
dvander@545
   243
 */
dvander@545
   244
native GetUserFlagBits(client);
dvander@545
   245
dvander@545
   246
/**
dvander@545
   247
 * Returns whether a user can target another user.
dvander@545
   248
 * This is a helper function for CanAdminTarget.
dvander@545
   249
 *
dvander@545
   250
 * @param client		Player's index.
dvander@545
   251
 * @param target		Target player's index.
dvander@545
   252
 * @return				True if target is targettable by the player, false otherwise.
dvander@545
   253
 * @error				Invalid or unconnected player indexers.
dvander@545
   254
 */
dvander@545
   255
native bool:CanUserTarget(client, target);
dvander@545
   256
dvander@545
   257
dvander@545
   258
/** 
dvander@545
   259
 * Creates a fake client.
dvander@545
   260
 *
dvander@545
   261
 * @param name			Name to use.
dvander@545
   262
 * @return				Client index on success, 0 otherwise.
dvander@545
   263
 */
dvander@545
   264
native CreateFakeClient(const String:name[]);
dvander@545
   265
dvander@545
   266
/**
dvander@545
   267
 * Sets a convar value on a fake client.
dvander@545
   268
 *
dvander@545
   269
 * @param client		Client index.
dvander@545
   270
 * @param cvar			ConVar name.
dvander@545
   271
 * @param value			ConVar value.
dvander@545
   272
 * @noreturn
dvander@545
   273
 * @error				Invalid client index, client not connected,
dvander@545
   274
 *						or client not a fake client.
dvander@545
   275
 */
dvander@545
   276
native SetFakeClientConVar(client, const String:cvar[], const String:value[]);