aboutsummaryrefslogtreecommitdiff
path: root/mp/src/public/engine/iserverplugin.h
diff options
context:
space:
mode:
Diffstat (limited to 'mp/src/public/engine/iserverplugin.h')
-rw-r--r--mp/src/public/engine/iserverplugin.h326
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