Arkshine,help me please.
PHP Code:
#include "amxxmodule.h"
#include "chooker.h"
CHooker HookerClass;
CHooker* Hooker = &HookerClass;
typedef void ( *Func_RadiusDamage )( Vector, entvars_t, entvars_t, float, float, int, int );
Func_RadiusDamage RadiusDamage_Addr = NULL;
bool hookRadiusDamage();
void RadiusDamage_Hook( Vector vecSrc, entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, float flRadius, int iClassIgnore, int bitsDamageType );
void RadiusDamage_Hook( Vector vecSrc, entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, float flRadius, int iClassIgnore, int bitsDamageType )
{
GET_ORIG_FUNC( func );
if( func->Restore() )
{
RadiusDamage_Addr( vecSrc, pevInflictor, pevAttacker, flDamage, flRadius, iClassIgnore, bitsDamageType );
func->Patch();
}
printf( "\n\t\tHook RadiusDamage.\n" );
}
bool hookRadiusDamage()
{
#ifdef _WIN32
RadiusDamage_Addr = Hooker->MemorySearch< Func_RadiusDamage>( "0xD9,*,*,*,0xD8,*,*,*,*,*,0x56,0x8B,0xF1,0x8B,0x4C,*,*,0xDF,*,0x25,*,*,*,*,0x8B", ( void* )gpGlobals, FALSE );
#else
RadiusDamage_Addr = Hooker->MemorySearch< Func_RadiusDamage>( "RadiusDamage__12CBaseMonsterP9entvars_sT1fii", ( void* )gpGlobals, TRUE );
#endif
return Hooker->CreateHook( ( void* )RadiusDamage_Addr, ( void* )RadiusDamage_Hook, TRUE ) ? true : false;
}
void OnMetaAttach()
{
bool result = hookRadiusDamage();
printf( " %s.\n\n", result ? "Loaded with success" : "Failed to create hook" );
}