Cleanly remove all hooks on extension unload

Allows to e.g. reload sdktools during runtime without crashing. Useful for fast development cycles.
This commit is contained in:
Peace-Maker
2020-12-16 15:52:48 +01:00
committed by peace-maker
parent e59fd9de96
commit ba8753836e
8 changed files with 109 additions and 14 deletions
+22
View File
@@ -121,6 +121,28 @@ void CStrike::SDK_OnUnload()
SH_REMOVE_HOOK(IServerGameDLL, LevelInit, gamedll, SH_MEMBER(&g_TimeLeftEvents, &TimeLeftEvents::LevelInit), true);
hooked_everything = false;
}
if (m_TerminateRoundDetourEnabled)
{
RemoveTerminateRoundDetour();
m_TerminateRoundDetourEnabled = false;
}
if (m_WeaponPriceDetourEnabled)
{
RemoveWeaponPriceDetour();
m_WeaponPriceDetourEnabled = false;
}
if (m_HandleBuyDetourEnabled)
{
RemoveHandleBuyDetour();
m_HandleBuyDetourEnabled = false;
}
if (m_CSWeaponDetourEnabled)
{
RemoveCSWeaponDropDetour();
m_CSWeaponDetourEnabled = false;
}
g_RegNatives.UnregisterAll();
gameconfs->CloseGameConfigFile(g_pGameConf);
plsys->RemovePluginsListener(this);