#include #include #include "MinHook.h" #pragma comment(lib, "libMinHook-x86-v141-mt.lib") typedef void ( __thiscall * tChatAddEntry ) ( void * , int nType , char * szText , char * szPrefix , DWORD textColor , DWORD prefixColor ) ; tChatAddEntry origChatAddEntry = nullptr ; void __fastcall HOOKED_ChatAddEntry ( void * _this , void * pUnk , int nType , char * szText , char * szPrefix , DWORD textColor , DWORD prefixColor ) { printf ( "type: %d, msg: %s\n" , nType , szText ) ; return origChatAddEntry ( _this , nType , szText , szPrefix , textColor , prefixColor ) ; } class CPluginInit { public : CPluginInit ( ) { base = ( DWORD ) GetModuleHandleA ( "samp.dll" ) ; MH_Initialize ( ) ; MH_CreateHook ( ( void * ) ( base + 0x0064010 ) , & HOOKED_ChatAddEntry , ( void * * ) & origChatAddEntry ) ; MH_EnableHook ( ( void * ) ( base + 0x0064010 ) ) ; } ; ~ CPluginInit ( ) { MH_DisableHook ( ( void * ) ( base + 0x0064010 ) ) ; } ; private : DWORD base = 0 ; } PluginInit ;