diff --git a/src/mm_plugin.cpp b/src/mm_plugin.cpp index 182ed648b..b8f6aa91c 100644 --- a/src/mm_plugin.cpp +++ b/src/mm_plugin.cpp @@ -208,16 +208,17 @@ void CounterStrikeSharpMMPlugin::Hook_StartupServer(const GameSessionConfigurati { globals::entitySystem = interfaces::pGameResourceServiceServer->GetGameEntitySystem(); - // Temporary hack until CGameEntitySystem is updated in the sdk -#ifdef PLATFORM_LINUX - int offset = 8512; -#else - int offset = 8480; -#endif + if (!globals::entitySystem) + { + CSSHARP_CORE_ERROR("Failed to obtain CGameEntitySystem instance during server startup."); + return; + } - auto pListeners = (CUtlVector*)((byte*)globals::entitySystem + offset); + auto entityListener = &globals::entityManager.entityListener; - if (pListeners->Find(&globals::entityManager.entityListener) == -1) pListeners->AddToTail(&globals::entityManager.entityListener); + // Make sure we do not register multiple times across restarts. + globals::entitySystem->RemoveListenerEntity(entityListener); + globals::entitySystem->AddListenerEntity(entityListener); globals::timerSystem.OnStartupServer();