diff options
Diffstat (limited to 'mp/src/public/engine/iserverplugin.h')
| -rw-r--r-- | mp/src/public/engine/iserverplugin.h | 326 |
1 files changed, 163 insertions, 163 deletions
diff --git a/mp/src/public/engine/iserverplugin.h b/mp/src/public/engine/iserverplugin.h index e1a0267f..608583ba 100644 --- a/mp/src/public/engine/iserverplugin.h +++ b/mp/src/public/engine/iserverplugin.h @@ -1,163 +1,163 @@ -//========= Copyright Valve Corporation, All rights reserved. ============//
-//
-// Purpose:
-//
-// $NoKeywords: $
-//
-//=============================================================================//
-
-#ifndef ISERVERPLUGIN_H
-#define ISERVERPLUGIN_H
-
-#ifdef _WIN32
-#pragma once
-#endif
-
-#include "edict.h"
-#include "tier1/interface.h"
-#include "tier1/KeyValues.h"
-
-class CCommand;
-
-//
-// you will also want to listen for game events via IGameEventManager::AddListener()
-//
-
-typedef enum
-{
- PLUGIN_CONTINUE = 0, // keep going
- PLUGIN_OVERRIDE, // run the game dll function but use our return value instead
- PLUGIN_STOP, // don't run the game dll function at all
-} PLUGIN_RESULT;
-
-
-typedef enum
-{
- eQueryCvarValueStatus_ValueIntact=0, // It got the value fine.
- eQueryCvarValueStatus_CvarNotFound=1,
- eQueryCvarValueStatus_NotACvar=2, // There's a ConCommand, but it's not a ConVar.
- eQueryCvarValueStatus_CvarProtected=3 // The cvar was marked with FCVAR_SERVER_CAN_NOT_QUERY, so the server is not allowed to have its value.
-} EQueryCvarValueStatus;
-
-
-typedef int QueryCvarCookie_t;
-#define InvalidQueryCvarCookie -1
-
-
-#define INTERFACEVERSION_ISERVERPLUGINCALLBACKS_VERSION_1 "ISERVERPLUGINCALLBACKS001"
-#define INTERFACEVERSION_ISERVERPLUGINCALLBACKS_VERSION_2 "ISERVERPLUGINCALLBACKS002"
-#define INTERFACEVERSION_ISERVERPLUGINCALLBACKS "ISERVERPLUGINCALLBACKS003"
-
-//-----------------------------------------------------------------------------
-// Purpose: callbacks the engine exposes to the 3rd party plugins (ala MetaMod)
-//-----------------------------------------------------------------------------
-abstract_class IServerPluginCallbacks
-{
-public:
- // Initialize the plugin to run
- // Return false if there is an error during startup.
- virtual bool Load( CreateInterfaceFn interfaceFactory, CreateInterfaceFn gameServerFactory ) = 0;
-
- // Called when the plugin should be shutdown
- virtual void Unload( void ) = 0;
-
- // called when a plugins execution is stopped but the plugin is not unloaded
- virtual void Pause( void ) = 0;
-
- // called when a plugin should start executing again (sometime after a Pause() call)
- virtual void UnPause( void ) = 0;
-
- // Returns string describing current plugin. e.g., Admin-Mod.
- virtual const char *GetPluginDescription( void ) = 0;
-
- // Called any time a new level is started (after GameInit() also on level transitions within a game)
- virtual void LevelInit( char const *pMapName ) = 0;
-
- // The server is about to activate
- virtual void ServerActivate( edict_t *pEdictList, int edictCount, int clientMax ) = 0;
-
- // The server should run physics/think on all edicts
- virtual void GameFrame( bool simulating ) = 0;
-
- // Called when a level is shutdown (including changing levels)
- virtual void LevelShutdown( void ) = 0;
-
- // Client is going active
- virtual void ClientActive( edict_t *pEntity ) = 0;
-
- // Client is disconnecting from server
- virtual void ClientDisconnect( edict_t *pEntity ) = 0;
-
- // Client is connected and should be put in the game
- virtual void ClientPutInServer( edict_t *pEntity, char const *playername ) = 0;
-
- // Sets the client index for the client who typed the command into their console
- virtual void SetCommandClient( int index ) = 0;
-
- // A player changed one/several replicated cvars (name etc)
- virtual void ClientSettingsChanged( edict_t *pEdict ) = 0;
-
- // Client is connecting to server ( set retVal to false to reject the connection )
- // You can specify a rejection message by writing it into reject
- virtual PLUGIN_RESULT ClientConnect( bool *bAllowConnect, edict_t *pEntity, const char *pszName, const char *pszAddress, char *reject, int maxrejectlen ) = 0;
-
- // The client has typed a command at the console
- virtual PLUGIN_RESULT ClientCommand( edict_t *pEntity, const CCommand &args ) = 0;
-
- // A user has had their network id setup and validated
- virtual PLUGIN_RESULT NetworkIDValidated( const char *pszUserName, const char *pszNetworkID ) = 0;
-
- // This is called when a query from IServerPluginHelpers::StartQueryCvarValue is finished.
- // iCookie is the value returned by IServerPluginHelpers::StartQueryCvarValue.
- // Added with version 2 of the interface.
- virtual void OnQueryCvarValueFinished( QueryCvarCookie_t iCookie, edict_t *pPlayerEntity, EQueryCvarValueStatus eStatus, const char *pCvarName, const char *pCvarValue ) = 0;
-
- // added with version 3 of the interface.
- virtual void OnEdictAllocated( edict_t *edict ) = 0;
- virtual void OnEdictFreed( const edict_t *edict ) = 0;
-};
-
-#define INTERFACEVERSION_ISERVERPLUGINHELPERS "ISERVERPLUGINHELPERS001"
-
-
-typedef enum
-{
- DIALOG_MSG = 0, // just an on screen message
- DIALOG_MENU, // an options menu
- DIALOG_TEXT, // a richtext dialog
- DIALOG_ENTRY, // an entry box
- DIALOG_ASKCONNECT // Ask the client to connect to a specified IP address. Only the "time" and "title" keys are used.
-} DIALOG_TYPE;
-
-//-----------------------------------------------------------------------------
-// Purpose: functions that only 3rd party plugins need
-//-----------------------------------------------------------------------------
-abstract_class IServerPluginHelpers
-{
-public:
- // creates an onscreen menu with various option buttons
- // The keyvalues param can contain these fields:
- // "title" - (string) the title to show in the hud and in the title bar
- // "msg" - (string) a longer message shown in the GameUI
- // "color" - (color) the color to display the message in the hud (white by default)
- // "level" - (int) the priority of this message (closer to 0 is higher), only 1 message can be outstanding at a time
- // "time" - (int) the time in seconds this message should stay active in the GameUI (min 10 sec, max 200 sec)
- //
- // For DIALOG_MENU add sub keys for each option with these fields:
- // "command" - (string) client command to run if selected
- // "msg" - (string) button text for this option
- //
- virtual void CreateMessage( edict_t *pEntity, DIALOG_TYPE type, KeyValues *data, IServerPluginCallbacks *plugin ) = 0;
- virtual void ClientCommand( edict_t *pEntity, const char *cmd ) = 0;
-
- // Call this to find out the value of a cvar on the client.
- //
- // It is an asynchronous query, and it will call IServerPluginCallbacks::OnQueryCvarValueFinished when
- // the value comes in from the client.
- //
- // Store the return value if you want to match this specific query to the OnQueryCvarValueFinished call.
- // Returns InvalidQueryCvarCookie if the entity is invalid.
- virtual QueryCvarCookie_t StartQueryCvarValue( edict_t *pEntity, const char *pName ) = 0;
-};
-
-#endif //ISERVERPLUGIN_H
+//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +// +//=============================================================================// + +#ifndef ISERVERPLUGIN_H +#define ISERVERPLUGIN_H + +#ifdef _WIN32 +#pragma once +#endif + +#include "edict.h" +#include "tier1/interface.h" +#include "tier1/KeyValues.h" + +class CCommand; + +// +// you will also want to listen for game events via IGameEventManager::AddListener() +// + +typedef enum +{ + PLUGIN_CONTINUE = 0, // keep going + PLUGIN_OVERRIDE, // run the game dll function but use our return value instead + PLUGIN_STOP, // don't run the game dll function at all +} PLUGIN_RESULT; + + +typedef enum +{ + eQueryCvarValueStatus_ValueIntact=0, // It got the value fine. + eQueryCvarValueStatus_CvarNotFound=1, + eQueryCvarValueStatus_NotACvar=2, // There's a ConCommand, but it's not a ConVar. + eQueryCvarValueStatus_CvarProtected=3 // The cvar was marked with FCVAR_SERVER_CAN_NOT_QUERY, so the server is not allowed to have its value. +} EQueryCvarValueStatus; + + +typedef int QueryCvarCookie_t; +#define InvalidQueryCvarCookie -1 + + +#define INTERFACEVERSION_ISERVERPLUGINCALLBACKS_VERSION_1 "ISERVERPLUGINCALLBACKS001" +#define INTERFACEVERSION_ISERVERPLUGINCALLBACKS_VERSION_2 "ISERVERPLUGINCALLBACKS002" +#define INTERFACEVERSION_ISERVERPLUGINCALLBACKS "ISERVERPLUGINCALLBACKS003" + +//----------------------------------------------------------------------------- +// Purpose: callbacks the engine exposes to the 3rd party plugins (ala MetaMod) +//----------------------------------------------------------------------------- +abstract_class IServerPluginCallbacks +{ +public: + // Initialize the plugin to run + // Return false if there is an error during startup. + virtual bool Load( CreateInterfaceFn interfaceFactory, CreateInterfaceFn gameServerFactory ) = 0; + + // Called when the plugin should be shutdown + virtual void Unload( void ) = 0; + + // called when a plugins execution is stopped but the plugin is not unloaded + virtual void Pause( void ) = 0; + + // called when a plugin should start executing again (sometime after a Pause() call) + virtual void UnPause( void ) = 0; + + // Returns string describing current plugin. e.g., Admin-Mod. + virtual const char *GetPluginDescription( void ) = 0; + + // Called any time a new level is started (after GameInit() also on level transitions within a game) + virtual void LevelInit( char const *pMapName ) = 0; + + // The server is about to activate + virtual void ServerActivate( edict_t *pEdictList, int edictCount, int clientMax ) = 0; + + // The server should run physics/think on all edicts + virtual void GameFrame( bool simulating ) = 0; + + // Called when a level is shutdown (including changing levels) + virtual void LevelShutdown( void ) = 0; + + // Client is going active + virtual void ClientActive( edict_t *pEntity ) = 0; + + // Client is disconnecting from server + virtual void ClientDisconnect( edict_t *pEntity ) = 0; + + // Client is connected and should be put in the game + virtual void ClientPutInServer( edict_t *pEntity, char const *playername ) = 0; + + // Sets the client index for the client who typed the command into their console + virtual void SetCommandClient( int index ) = 0; + + // A player changed one/several replicated cvars (name etc) + virtual void ClientSettingsChanged( edict_t *pEdict ) = 0; + + // Client is connecting to server ( set retVal to false to reject the connection ) + // You can specify a rejection message by writing it into reject + virtual PLUGIN_RESULT ClientConnect( bool *bAllowConnect, edict_t *pEntity, const char *pszName, const char *pszAddress, char *reject, int maxrejectlen ) = 0; + + // The client has typed a command at the console + virtual PLUGIN_RESULT ClientCommand( edict_t *pEntity, const CCommand &args ) = 0; + + // A user has had their network id setup and validated + virtual PLUGIN_RESULT NetworkIDValidated( const char *pszUserName, const char *pszNetworkID ) = 0; + + // This is called when a query from IServerPluginHelpers::StartQueryCvarValue is finished. + // iCookie is the value returned by IServerPluginHelpers::StartQueryCvarValue. + // Added with version 2 of the interface. + virtual void OnQueryCvarValueFinished( QueryCvarCookie_t iCookie, edict_t *pPlayerEntity, EQueryCvarValueStatus eStatus, const char *pCvarName, const char *pCvarValue ) = 0; + + // added with version 3 of the interface. + virtual void OnEdictAllocated( edict_t *edict ) = 0; + virtual void OnEdictFreed( const edict_t *edict ) = 0; +}; + +#define INTERFACEVERSION_ISERVERPLUGINHELPERS "ISERVERPLUGINHELPERS001" + + +typedef enum +{ + DIALOG_MSG = 0, // just an on screen message + DIALOG_MENU, // an options menu + DIALOG_TEXT, // a richtext dialog + DIALOG_ENTRY, // an entry box + DIALOG_ASKCONNECT // Ask the client to connect to a specified IP address. Only the "time" and "title" keys are used. +} DIALOG_TYPE; + +//----------------------------------------------------------------------------- +// Purpose: functions that only 3rd party plugins need +//----------------------------------------------------------------------------- +abstract_class IServerPluginHelpers +{ +public: + // creates an onscreen menu with various option buttons + // The keyvalues param can contain these fields: + // "title" - (string) the title to show in the hud and in the title bar + // "msg" - (string) a longer message shown in the GameUI + // "color" - (color) the color to display the message in the hud (white by default) + // "level" - (int) the priority of this message (closer to 0 is higher), only 1 message can be outstanding at a time + // "time" - (int) the time in seconds this message should stay active in the GameUI (min 10 sec, max 200 sec) + // + // For DIALOG_MENU add sub keys for each option with these fields: + // "command" - (string) client command to run if selected + // "msg" - (string) button text for this option + // + virtual void CreateMessage( edict_t *pEntity, DIALOG_TYPE type, KeyValues *data, IServerPluginCallbacks *plugin ) = 0; + virtual void ClientCommand( edict_t *pEntity, const char *cmd ) = 0; + + // Call this to find out the value of a cvar on the client. + // + // It is an asynchronous query, and it will call IServerPluginCallbacks::OnQueryCvarValueFinished when + // the value comes in from the client. + // + // Store the return value if you want to match this specific query to the OnQueryCvarValueFinished call. + // Returns InvalidQueryCvarCookie if the entity is invalid. + virtual QueryCvarCookie_t StartQueryCvarValue( edict_t *pEntity, const char *pName ) = 0; +}; + +#endif //ISERVERPLUGIN_H |