public/IPlayerHelpers.h
author David Anderson <dvander@alliedmods.net>
Fri Jun 08 03:50:23 2007 +0000 (2007-06-08)
changeset 925 2cd3d817b5ab
parent 729 110c14c99545
child 1137 049e7c6bf36b
permissions -rw-r--r--
added sm_unban
dvander@435
     1
/**
dvander@435
     2
 * vim: set ts=4 :
dvander@435
     3
 * ===============================================================
dvander@435
     4
 * SourceMod, Copyright (C) 2004-2007 AlliedModders LLC. 
dvander@435
     5
 * All rights reserved.
dvander@435
     6
 * ===============================================================
dvander@435
     7
 *
dvander@435
     8
 *  This file is part of the SourceMod/SourcePawn SDK.  This file may only be 
dvander@435
     9
 * used or modified under the Terms and Conditions of its License Agreement, 
dvander@435
    10
 * which is found in public/licenses/LICENSE.txt.  As of this notice, derivative 
dvander@435
    11
 * works must be licensed under the GNU General Public License (version 2 or 
dvander@435
    12
 * greater).  A copy of the GPL is included under public/licenses/GPL.txt.
dvander@435
    13
 * 
dvander@435
    14
 * To view the latest information, see: http://www.sourcemod.net/license.php
dvander@435
    15
 *
dvander@435
    16
 * Version: $Id$
dvander@435
    17
 */
dvander@435
    18
dvander@435
    19
#ifndef _INCLUDE_SOURCEMOD_INTERFACE_IPLAYERHELPERS_H_
dvander@435
    20
#define _INCLUDE_SOURCEMOD_INTERFACE_IPLAYERHELPERS_H_
dvander@435
    21
dvander@435
    22
#include <IShareSys.h>
dvander@458
    23
#include <IAdminSystem.h>
dvander@435
    24
dvander@435
    25
#define SMINTERFACE_PLAYERMANAGER_NAME		"IPlayerManager"
dvander@435
    26
#define SMINTERFACE_PLAYERMANAGER_VERSION	1
dvander@435
    27
dvander@435
    28
struct edict_t;
dvander@435
    29
dvander@435
    30
/**
dvander@435
    31
 * @file IPlayerHelpers.h
dvander@435
    32
 * @brief Defines basic helper functions for Half-Life 2 clients
dvander@435
    33
 */
dvander@435
    34
namespace SourceMod
dvander@435
    35
{
dvander@435
    36
	/**
dvander@435
    37
	 * @brief Abstracts some Half-Life 2 and SourceMod properties about clients.
dvander@435
    38
	 */
dvander@435
    39
	class IGamePlayer
dvander@435
    40
	{
dvander@435
    41
	public:
dvander@435
    42
		/**
dvander@435
    43
		 * @brief Returns the player's name.
dvander@435
    44
		 *
dvander@435
    45
		 * @return		String containing the player's name,
dvander@435
    46
		 *				or NULL if unavailable.
dvander@435
    47
		 */
dvander@615
    48
		virtual const char *GetName() =0;
dvander@435
    49
dvander@435
    50
		/**
dvander@435
    51
		 * @brief Returns the player's IP address.
dvander@435
    52
		 *
dvander@435
    53
		 * @return		String containing the player's IP address,
dvander@435
    54
		 *				or NULL if unavailable.
dvander@435
    55
		 */
dvander@615
    56
		virtual const char *GetIPAddress() =0;
dvander@435
    57
dvander@435
    58
		/**
dvander@435
    59
		 * @brief Returns the player's authentication string.
dvander@435
    60
		 *
dvander@435
    61
		 * @return		String containing the player's auth string.
dvander@435
    62
		 *				May be NULL if unavailable.
dvander@435
    63
		 */
dvander@615
    64
		virtual const char *GetAuthString() =0;
dvander@435
    65
dvander@435
    66
		/**
dvander@435
    67
		 * @brief Returns the player's edict_t structure.
dvander@435
    68
		 *
dvander@435
    69
		 * @return		edict_t pointer, or NULL if unavailable.
dvander@435
    70
		 */
dvander@615
    71
		virtual edict_t *GetEdict() =0;
dvander@435
    72
dvander@435
    73
		/**
dvander@435
    74
		 * @brief Returns whether the player is in game (putinserver).
dvander@435
    75
		 *
dvander@435
    76
		 * @return		True if in game, false otherwise.
dvander@435
    77
		 */
dvander@615
    78
		virtual bool IsInGame() =0;
dvander@435
    79
dvander@435
    80
		/**
dvander@435
    81
		 * @brief Returns whether the player is connected.
dvander@435
    82
		 *
dvander@435
    83
		 * Note: If this returns true, all above functions except for
dvander@435
    84
		 * GetAuthString() should return non-NULL results.
dvander@435
    85
		 *
dvander@435
    86
		 * @return		True if connected, false otherwise.
dvander@435
    87
		 */
dvander@615
    88
		virtual bool IsConnected() =0;
dvander@435
    89
dvander@435
    90
		/**
dvander@435
    91
		 * @brief Returns whether the player is a fake client.
dvander@435
    92
		 *
dvander@435
    93
		 * @return		True if a fake client, false otherwise.
dvander@435
    94
		 */
dvander@615
    95
		virtual bool IsFakeClient() =0;
dvander@458
    96
dvander@458
    97
		/**
dvander@458
    98
		 * @brief Returns the client's AdminId, if any.
dvander@458
    99
		 *
dvander@458
   100
		 * @return		AdminId, or INVALID_ADMIN_ID if none.
dvander@458
   101
		 */
dvander@615
   102
		virtual AdminId GetAdminId() =0;
dvander@458
   103
dvander@458
   104
		/**
dvander@458
   105
		 * @brief Sets the client's AdminId.
dvander@458
   106
		 *
dvander@458
   107
		 * @param id	AdminId to set.
dvander@458
   108
		 * @param temp	If true, the id will be invalidated on disconnect.
dvander@458
   109
		 */
dvander@458
   110
		virtual void SetAdminId(AdminId id, bool temp) =0;
dvander@435
   111
	};
dvander@435
   112
dvander@435
   113
	/**
dvander@435
   114
	 * @brief Provides callbacks for important client events.
dvander@435
   115
	 */
dvander@435
   116
	class IClientListener
dvander@435
   117
	{
dvander@435
   118
	public:
faluco@620
   119
	   /**
faluco@620
   120
		* @brief Returns the current client listener version.
faluco@620
   121
		*
faluco@620
   122
		* @return		Client listener version.
faluco@620
   123
		*/
dvander@541
   124
		virtual unsigned int GetClientListenerVersion()
dvander@435
   125
		{
dvander@435
   126
			return SMINTERFACE_PLAYERMANAGER_VERSION;
dvander@435
   127
		}
dvander@435
   128
	public:
dvander@435
   129
		/**
dvander@435
   130
		 * @brief Called when a client requests connection.
dvander@435
   131
		 *
dvander@435
   132
		 * @param client		Index of the client.
dvander@435
   133
		 * @param error			Error buffer for a disconnect reason.
dvander@435
   134
		 * @param maxlength		Maximum length of error buffer.
dvander@435
   135
		 * @return				True to allow client, false to reject.
dvander@435
   136
		 */
dvander@435
   137
		virtual bool InterceptClientConnect(int client, char *error, size_t maxlength)
dvander@435
   138
		{
dvander@435
   139
			return true;
dvander@435
   140
		}
dvander@435
   141
dvander@435
   142
		/**
dvander@435
   143
		 * @brief Called when a client has connected.
dvander@435
   144
		 *
dvander@435
   145
		 * @param client		Index of the client.
dvander@435
   146
		 */
dvander@435
   147
		virtual void OnClientConnected(int client)
dvander@435
   148
		{
dvander@435
   149
		}
dvander@435
   150
dvander@435
   151
		/**
dvander@435
   152
		 * @brief Called when a client is put in server.
dvander@435
   153
		 *
dvander@435
   154
		 * @param client		Index of the client.
dvander@435
   155
		 */
dvander@435
   156
		virtual void OnClientPutInServer(int client)
dvander@435
   157
		{
dvander@435
   158
		}
dvander@435
   159
dvander@435
   160
		/**
dvander@435
   161
		 * @brief Called when a client is disconnecting (not fully disconnected yet).
dvander@435
   162
		 *
dvander@435
   163
		 * @param client		Index of the client.
dvander@435
   164
		 */
dvander@435
   165
		virtual void OnClientDisconnecting(int client)
dvander@435
   166
		{
dvander@435
   167
		}
dvander@435
   168
dvander@435
   169
		/**
dvander@435
   170
		 * @brief Called when a client has fully disconnected.
dvander@435
   171
		 *
dvander@435
   172
		 * @param client		Index of the client.
dvander@435
   173
		 */
dvander@435
   174
		virtual void OnClientDisconnected(int client)
dvander@435
   175
		{
dvander@435
   176
		}
dvander@435
   177
dvander@435
   178
		/**
ds@729
   179
		 * @brief Called when a client has received authorization.
dvander@435
   180
		 *
dvander@435
   181
		 * @param client		Index of the client.
dvander@435
   182
		 * @param authstring	Authorization string.
dvander@435
   183
		 */
dvander@435
   184
		virtual void OnClientAuthorized(int client, const char *authstring)
dvander@435
   185
		{
dvander@435
   186
		}
dvander@435
   187
	};
dvander@435
   188
dvander@435
   189
	class IPlayerManager : public SMInterface
dvander@435
   190
	{
dvander@435
   191
	public:
dvander@435
   192
		const char *GetInterfaceName()
dvander@435
   193
		{
dvander@435
   194
			return SMINTERFACE_PLAYERMANAGER_NAME;
dvander@435
   195
		}
dvander@435
   196
		unsigned int GetInterfaceVersion()
dvander@435
   197
		{
dvander@435
   198
			return SMINTERFACE_PLAYERMANAGER_VERSION;
dvander@435
   199
		}
dvander@435
   200
	public:
dvander@435
   201
		/**
dvander@435
   202
		 * @brief Adds a client listener.
dvander@435
   203
		 *
dvander@435
   204
		 * @param listener		Pointer to an IClientListener.
dvander@435
   205
		 */
dvander@435
   206
		virtual void AddClientListener(IClientListener *listener) =0;
dvander@435
   207
dvander@435
   208
		/**
dvander@435
   209
		 * @brief Removes a client listener.
dvander@435
   210
		 *
dvander@435
   211
		 * @param listener		Pointer to an IClientListener.
dvander@435
   212
		 */
dvander@435
   213
		virtual void RemoveClientListener(IClientListener *listener) =0;
dvander@435
   214
dvander@435
   215
		/**
dvander@435
   216
		 * @brief Retrieves an IGamePlayer object by its client index.
dvander@435
   217
		 *
dvander@435
   218
		 * Note: This will return a valid object for any player, connected or not.
dvander@435
   219
		 * Note: Client indexes start at 1, not 0.
dvander@435
   220
		 *
dvander@435
   221
		 * @param client		Index of the client.
dvander@435
   222
		 * @return				An IGamePlayer pointer, or NULL if out of range.
dvander@435
   223
		 */
dvander@435
   224
		virtual IGamePlayer *GetGamePlayer(int client) =0;
dvander@435
   225
dvander@435
   226
		/**
dvander@435
   227
		 * @brief Retrieves an IGamePlayer object by its edict_t pointer.
dvander@435
   228
		 *
dvander@435
   229
		 * @param pEdict		Index of the client
dvander@435
   230
		 * @return				An IGamePlayer pointer, or NULL if out of range.
dvander@435
   231
		 */
dvander@435
   232
		virtual IGamePlayer *GetGamePlayer(edict_t *pEdict) =0;
dvander@435
   233
dvander@435
   234
		/**
dvander@435
   235
		 * @brief Returns the maximum number of clients.
dvander@435
   236
		 *
dvander@435
   237
		 * @return				Maximum number of clients.
dvander@435
   238
		 */
dvander@435
   239
		virtual int GetMaxClients() =0;
dvander@435
   240
dvander@435
   241
		/**
dvander@435
   242
		 * @brief Returns the number of players currently connected.
dvander@435
   243
		 *
dvander@435
   244
		 * @return				Current number of connected clients.
dvander@435
   245
		 */
dvander@435
   246
		virtual int GetNumPlayers() =0;
faluco@682
   247
faluco@682
   248
		/**
faluco@682
   249
		 * @brief Returns the client index by its userid.
faluco@682
   250
		 *
faluco@682
   251
		 * @param userid		Userid of the client.
faluco@682
   252
		 * @return				Client index, or 0 if invalid userid passed.
faluco@682
   253
		 */
faluco@682
   254
		virtual int GetClientOfUserId(int userid) =0;
dvander@435
   255
	};
dvander@435
   256
}
dvander@435
   257
dvander@435
   258
#endif //_INCLUDE_SOURCEMOD_INTERFACE_IPLAYERHELPERS_H_