diff --git a/regamedll/dlls/API/CAPI_Impl.cpp b/regamedll/dlls/API/CAPI_Impl.cpp index 5bb6b3940..3f3ce0dc9 100644 --- a/regamedll/dlls/API/CAPI_Impl.cpp +++ b/regamedll/dlls/API/CAPI_Impl.cpp @@ -336,6 +336,8 @@ GAMEHOOK_REGISTRY(CSGameRules_SendDeathMessage); GAMEHOOK_REGISTRY(CBasePlayer_PlayerDeathThink); GAMEHOOK_REGISTRY(CBasePlayer_Observer_Think); +GAMEHOOK_REGISTRY(PrecacheItemInfo); + int CReGameApi::GetMajorVersion() { return REGAMEDLL_API_VERSION_MAJOR; } diff --git a/regamedll/dlls/API/CAPI_Impl.h b/regamedll/dlls/API/CAPI_Impl.h index 0548a841f..eecc5a262 100644 --- a/regamedll/dlls/API/CAPI_Impl.h +++ b/regamedll/dlls/API/CAPI_Impl.h @@ -745,6 +745,10 @@ typedef IHookChainRegistryClassImpl CReGameHookRegistry_CBase typedef IHookChainClassImpl CReGameHook_CBasePlayer_Observer_Think; typedef IHookChainRegistryClassImpl CReGameHookRegistry_CBasePlayer_Observer_Think; +// PrecacheItemInfo hook +typedef IHookChainImpl CReGameHook_PrecacheItemInfo; +typedef IHookChainRegistryImpl CReGameHookRegistry_PrecacheItemInfo; + class CReGameHookchains: public IReGameHookchains { public: // CBasePlayer virtual @@ -906,6 +910,8 @@ class CReGameHookchains: public IReGameHookchains { CReGameHookRegistry_CBasePlayer_PlayerDeathThink m_CBasePlayer_PlayerDeathThink; CReGameHookRegistry_CBasePlayer_Observer_Think m_CBasePlayer_Observer_Think; + CReGameHookRegistry_PrecacheItemInfo m_PrecacheItemInfo; + public: virtual IReGameHookRegistry_CBasePlayer_Spawn *CBasePlayer_Spawn(); virtual IReGameHookRegistry_CBasePlayer_Precache *CBasePlayer_Precache(); @@ -1064,6 +1070,8 @@ class CReGameHookchains: public IReGameHookchains { virtual IReGameHookRegistry_CBasePlayer_PlayerDeathThink *CBasePlayer_PlayerDeathThink(); virtual IReGameHookRegistry_CBasePlayer_Observer_Think *CBasePlayer_Observer_Think(); + + virtual IReGameHookRegistry_PrecacheItemInfo* PrecacheItemInfo(); }; extern CReGameHookchains g_ReGameHookchains; diff --git a/regamedll/dlls/weapons.cpp b/regamedll/dlls/weapons.cpp index ad8de9d25..8b6f6dfef 100644 --- a/regamedll/dlls/weapons.cpp +++ b/regamedll/dlls/weapons.cpp @@ -262,6 +262,11 @@ int AddAmmoNameToAmmoRegistry(const char *szAmmoname) return giAmmoIndex; } +void EXT_FUNC PrecacheItemInfo(ItemInfo *info) +{ + +} + // Precaches the weapon and queues the weapon info for sending to clients void UTIL_PrecacheOtherWeapon(const char *szClassname) { @@ -281,6 +286,7 @@ void UTIL_PrecacheOtherWeapon(const char *szClassname) pItem->Precache(); if (pItem->GetItemInfo(&info)) { + g_ReGameHookchains.m_PrecacheItemInfo.callChain(PrecacheItemInfo, &info); CBasePlayerItem::m_ItemInfoArray[info.iId] = info; AddAmmoNameToAmmoRegistry(info.pszAmmo1); diff --git a/regamedll/public/regamedll/regamedll_api.h b/regamedll/public/regamedll/regamedll_api.h index 4aeb12545..c1cf0a2bd 100644 --- a/regamedll/public/regamedll/regamedll_api.h +++ b/regamedll/public/regamedll/regamedll_api.h @@ -624,6 +624,10 @@ typedef IHookChainRegistryClass IReGameHookRegistry_CBa typedef IHookChainClass IReGameHook_CBasePlayer_Observer_Think; typedef IHookChainRegistryClass IReGameHookRegistry_CBasePlayer_Observer_Think; +// PrecacheItemInfo hook +typedef IHookChain IReGameHook_PrecacheItemInfo; +typedef IHookChainRegistry IReGameHookRegistry_PrecacheItemInfo; + class IReGameHookchains { public: virtual ~IReGameHookchains() {} @@ -785,6 +789,8 @@ class IReGameHookchains { virtual IReGameHookRegistry_CBasePlayer_PlayerDeathThink *CBasePlayer_PlayerDeathThink() = 0; virtual IReGameHookRegistry_CBasePlayer_Observer_Think *CBasePlayer_Observer_Think() = 0; + + virtual IReGameHookRegistry_PrecacheItemInfo* PrecacheItemInfo() = 0; }; struct ReGameFuncs_t {