From bdbc3c3b589d1e70d72a045bed5466a8c74f30d3 Mon Sep 17 00:00:00 2001 From: Nicholas Hastings Date: Sat, 28 Dec 2013 08:19:34 -0500 Subject: [PATCH] Fix SDKHooks Spawn hook crashing in Dota. --HG-- extra : rebase_source : dfe1eb22256268b321b8c24be718fbc7c770e74e --- extensions/sdkhooks/extension.cpp | 12 ++++++++++++ extensions/sdkhooks/extension.h | 9 +++++++++ 2 files changed, 21 insertions(+) diff --git a/extensions/sdkhooks/extension.cpp b/extensions/sdkhooks/extension.cpp index 0cf257cb..d4c6de12 100644 --- a/extensions/sdkhooks/extension.cpp +++ b/extensions/sdkhooks/extension.cpp @@ -144,7 +144,11 @@ SH_DECL_MANUALHOOK0_void(PostThink, 0, 0, 0); SH_DECL_MANUALHOOK0(Reload, 0, 0, 0, bool); SH_DECL_MANUALHOOK2_void(SetTransmit, 0, 0, 0, CCheckTransmitInfo *, bool); SH_DECL_MANUALHOOK2(ShouldCollide, 0, 0, 0, bool, int, int); +#if SOURCE_ENGINE == SE_DOTA +SH_DECL_MANUALHOOK1_void(Spawn, 0, 0, 0, CEntityKeyValues *); +#else SH_DECL_MANUALHOOK0_void(Spawn, 0, 0, 0); +#endif SH_DECL_MANUALHOOK1_void(StartTouch, 0, 0, 0, CBaseEntity *); SH_DECL_MANUALHOOK0_void(Think, 0, 0, 0); SH_DECL_MANUALHOOK1_void(Touch, 0, 0, 0, CBaseEntity *); @@ -1202,7 +1206,11 @@ bool SDKHooks::Hook_ShouldCollide(int collisionGroup, int contentsMask) RETURN_META_VALUE(MRES_SUPERCEDE, ret); } +#if SOURCE_ENGINE == SE_DOTA +void SDKHooks::Hook_Spawn(CEntityKeyValues *kv) +#else void SDKHooks::Hook_Spawn() +#endif { int entity = gamehelpers->EntityToBCompatRef(META_IFACEPTR(CBaseEntity)); IPluginFunction *callback = NULL; @@ -1224,7 +1232,11 @@ void SDKHooks::Hook_Spawn() RETURN_META(MRES_IGNORED); } +#if SOURCE_ENGINE == SE_DOTA +void SDKHooks::Hook_SpawnPost(CEntityKeyValues *kv) +#else void SDKHooks::Hook_SpawnPost() +#endif { Call(META_IFACEPTR(CBaseEntity), SDKHook_SpawnPost); } diff --git a/extensions/sdkhooks/extension.h b/extensions/sdkhooks/extension.h index 9965f6fa..df2e68ec 100644 --- a/extensions/sdkhooks/extension.h +++ b/extensions/sdkhooks/extension.h @@ -25,6 +25,10 @@ #define GAMEDESC_CAN_CHANGE #endif +#if SOURCE_ENGINE == SE_DOTA +class CEntityKeyValues; +#endif + /** * Globals @@ -266,8 +270,13 @@ public: bool Hook_ReloadPost(); void Hook_SetTransmit(CCheckTransmitInfo *pInfo, bool bAlways); bool Hook_ShouldCollide(int collisonGroup, int contentsMask); +#if SOURCE_ENGINE == SE_DOTA + void Hook_Spawn(CEntityKeyValues *kv); + void Hook_SpawnPost(CEntityKeyValues *kv); +#else void Hook_Spawn(); void Hook_SpawnPost(); +#endif void Hook_StartTouch(CBaseEntity *pOther); void Hook_StartTouchPost(CBaseEntity *pOther); void Hook_Think();