1
0
mirror of https://github.com/alliedmodders/metamod-source.git synced 2024-12-01 13:24:25 +01:00
HLMetaModOfficial/sample_mm/sample_mm.h
Scott Ehlert 424d46b9ad Updated stub_mm, sample_mm, and project templates for changes from 1.8 (bug 4107, r=dvander).
- Added build configurations for Left 4 Dead 2 and Orange Box Valve.
- Now uses MMSOURCE18 as environment variable.
- Removed deprecated callclass usage.
- Now uses GetVSPInfo() API on old engine build.
2009-11-13 18:25:56 -06:00

79 lines
2.4 KiB
C++

/**
* vim: set ts=4 sw=4 tw=99 noet :
* ======================================================
* Metamod:Source Sample Plugin
* Written by AlliedModders LLC.
* ======================================================
*
* This software is provided 'as-is', without any express or implied warranty.
* In no event will the authors be held liable for any damages arising from
* the use of this software.
*
* This sample plugin is public domain.
*/
#ifndef _INCLUDE_METAMOD_SOURCE_STUB_PLUGIN_H_
#define _INCLUDE_METAMOD_SOURCE_STUB_PLUGIN_H_
#include <ISmmPlugin.h>
#include <igameevents.h>
#include <iplayerinfo.h>
#include <sh_vector.h>
#include "engine_wrappers.h"
#if defined WIN32 && !defined snprintf
#define snprintf _snprintf
#endif
class SamplePlugin : public ISmmPlugin, public IMetamodListener
{
public:
bool Load(PluginId id, ISmmAPI *ismm, char *error, size_t maxlen, bool late);
bool Unload(char *error, size_t maxlen);
bool Pause(char *error, size_t maxlen);
bool Unpause(char *error, size_t maxlen);
void AllPluginsLoaded();
public: //IMetamodListener stuff
void OnVSPListening(IServerPluginCallbacks *iface);
public: //hooks
void Hook_ServerActivate(edict_t *pEdictList, int edictCount, int clientMax);
bool Hook_LevelInit(const char *pMapName,
char const *pMapEntities,
char const *pOldLevel,
char const *pLandmarkName,
bool loadGame,
bool background);
void Hook_GameFrame(bool simulating);
void Hook_LevelShutdown(void);
void Hook_ClientActive(edict_t *pEntity, bool bLoadGame);
void Hook_ClientDisconnect(edict_t *pEntity);
void Hook_ClientPutInServer(edict_t *pEntity, char const *playername);
void Hook_SetCommandClient(int index);
void Hook_ClientSettingsChanged(edict_t *pEdict);
bool Hook_ClientConnect(edict_t *pEntity,
const char *pszName,
const char *pszAddress,
char *reject,
int maxrejectlen);
#if SOURCE_ENGINE >= SE_ORANGEBOX
void Hook_ClientCommand(edict_t *pEntity, const CCommand &args);
#else
void Hook_ClientCommand(edict_t *pEntity);
#endif
public:
const char *GetAuthor();
const char *GetName();
const char *GetDescription();
const char *GetURL();
const char *GetLicense();
const char *GetVersion();
const char *GetDate();
const char *GetLogTag();
};
extern SamplePlugin g_SamplePlugin;
PLUGIN_GLOBALVARS();
#endif //_INCLUDE_METAMOD_SOURCE_STUB_PLUGIN_H_