Thread: [Solved] Hook m_pfnThink
View Single Post
Author Message
Veteran Member
Join Date: Nov 2012
Old 03-28-2020 , 14:10   Hook m_pfnThink
Reply With Quote #1

I need to hook think function of "dronegun" entity. Inside it's just a prop_phusics with some extra stuff.

PHP Code:
typedef void (CBaseEntity::*VALVE_BASEPTR)(void);
VALVE_BASEPTR srcThinkFunc_;

void CDroneGun::onSpawnPost(void)
srcThinkFunc_ m_pfnThink// m_pfnThink is from CBaseEntity datamap
*(m_pfnThink) = reinterpret_cast<VALVE_BASEPTR>(&CDroneGun::Think);

void CDroneGun::Think()
getBaseEntity()->*srcThinkFunc_)(); // call the original Think function

if(*(m_pfnThink) != reinterpret_cast<VALVE_BASEPTR>(&CDroneGun::Think)) //If the Think function has changed, set up a new "hook"
srcThinkFunc_ m_pfnThink;

m_pfnThink) = reinterpret_cast<VALVE_BASEPTR>(&CDroneGun::Think);

The drone moves and attacks, but "CDroneGun::Think" is never shown, what am I doing wrong?

Last edited by kadet.89; 04-01-2020 at 17:16. Reason: Solved, found a solution in CEntity from CSS NPC extension
kadet.89 is offline
Send a message via Skype™ to kadet.89