//Убран код с подключением библиотек и mainloop(). urmem :: hook urmemHook ; void __fastcall UpdateAimingCoors ( void * _this , void * edx , CVector const * AimingTargetCoors ) { SF -> getSAMP ( ) -> getChat ( ) -> AddChatMessage ( - 1 , "UpdateAimingCoors" ) ; SF -> getSAMP ( ) -> getChat ( ) -> AddChatMessage ( - 1 , "UpdateAimingCoors. posX: %f; posY: %f; posZ: %f" , AimingTargetCoors -> fX , AimingTargetCoors -> fY , AimingTargetCoors -> fZ ) ; urmemHook . call ( _this , AimingTargetCoors ) ; } void __fastcall DoBulletImpact ( void * _this , void * edx , CEntity * owner , CEntity * victim , CVector * startPoint , CVector * endPoint , CColPoint * colPoint , int arg5 ) { SF -> getSAMP ( ) -> getChat ( ) -> AddChatMessage ( - 1 , "DoBulletImpact" ) ; urmemHook . call ( _this , owner , victim , startPoint , endPoint , colPoint , arg5 ) ; } BOOL APIENTRY DllMain ( HMODULE hModule , DWORD dwReasonForCall , LPVOID lpReserved ) { switch ( dwReasonForCall ) { case DLL_PROCESS_ATTACH : SF -> initPlugin ( mainloop , hModule ) ; urmemHook . install ( 0x50CB10 , urmem :: get_func_addr ( & UpdateAimingCoors ) ) ; urmemHook . install ( 0x73B550 , urmem :: get_func_addr ( & DoBulletImpact ) ) ; break ; case DLL_THREAD_ATTACH : case DLL_THREAD_DETACH : case DLL_PROCESS_DETACH : urmemHook . disable ( ) ; break ; } return TRUE ; }