diff --git a/core/PlayerManager.cpp b/core/PlayerManager.cpp index 1a63bed8..4225eed5 100644 --- a/core/PlayerManager.cpp +++ b/core/PlayerManager.cpp @@ -67,7 +67,12 @@ SH_DECL_HOOK2_void(IServerGameClients, ClientCommand, SH_NOATTRIB, 0, edict_t *, SH_DECL_HOOK1_void(IServerGameClients, ClientCommand, SH_NOATTRIB, 0, edict_t *); #endif SH_DECL_HOOK1_void(IServerGameClients, ClientSettingsChanged, SH_NOATTRIB, 0, edict_t *); + +#if SOURCE_ENGINE == SE_DOTA +SH_DECL_HOOK0_void(IServerGameDLL, ServerActivate, SH_NOATTRIB, 0); +#else SH_DECL_HOOK3_void(IServerGameDLL, ServerActivate, SH_NOATTRIB, 0, edict_t *, int, int); +#endif #if SOURCE_ENGINE == SE_DOTA SH_DECL_EXTERN2_void(ConCommand, Dispatch, SH_NOATTRIB, false, void *, const CCommand &); @@ -246,7 +251,11 @@ ConfigResult PlayerManager::OnSourceModConfigChanged(const char *key, return ConfigResult_Ignore; } +#if SOURCE_ENGINE == SE_DOTA +void PlayerManager::OnServerActivate() +#else void PlayerManager::OnServerActivate(edict_t *pEdictList, int edictCount, int clientMax) +#endif { static ConVar *tv_enable = icvar->FindVar("tv_enable"); #if SOURCE_ENGINE == SE_ORANGEBOXVALVE @@ -282,7 +291,12 @@ void PlayerManager::OnServerActivate(edict_t *pEdictList, int edictCount, int cl g_OnMapStarted = true; +#if SOURCE_ENGINE == SE_DOTA + extsys->CallOnCoreMapStart(gpGlobals->pEdicts, gpGlobals->maxEntities, gpGlobals->maxClients); +#else extsys->CallOnCoreMapStart(pEdictList, edictCount, m_maxClients); +#endif + m_onActivate->Execute(NULL); m_onActivate2->Execute(NULL); diff --git a/core/PlayerManager.h b/core/PlayerManager.h index e4b0b52a..33eeaf1e 100644 --- a/core/PlayerManager.h +++ b/core/PlayerManager.h @@ -198,7 +198,11 @@ public: unsigned int SetReplyTo(unsigned int reply); void MaxPlayersChanged(int newvalue = -1); private: +#if SOURCE_ENGINE == SE_DOTA + void OnServerActivate(); +#else void OnServerActivate(edict_t *pEdictList, int edictCount, int clientMax); +#endif void InvalidatePlayer(CPlayer *pPlayer); private: List m_hooks;