/* * CMMH - Chaplja's Movie Makers Hack * http://chaplja.com - chaplja@gmail.com * * Credit me if used * */ #include "cmmh.h" SaveJPG_t o_SaveJPG = NULL; Cmd_AddCommand_t o_Cmd_AddCommand = NULL; Cvar_Get_t o_Cvar_Get = NULL; ConsolePrint_t CPrint = NULL; void __cdecl h_SaveJPG( char *filename, int quality, int image_width, int image_height, unsigned char *image_buffer ) { /* if user specifies JPEG quality value in range 1-100, use that one, otherwise force 100 */ if ( h_jpegQuality->integer > 100 || h_jpegQuality->integer < 1 ) o_SaveJPG( filename, 100, image_width, image_height, image_buffer ); else o_SaveJPG( filename, h_jpegQuality->integer, image_width, image_height, image_buffer ); } void __cdecl h_Cmd_AddCommand( const char *name, void *function ) { static bool first = true; if ( first ) { AddConsoleCommands( ); first = false; } o_Cmd_AddCommand( name, function ); } cvar_t *__cdecl h_Cvar_Get( const char *var_name, const char *value, int flags ) { cvar_t *ret = o_Cvar_Get( var_name, value, flags ); static bool first = true; if ( first ) { RegisterCvars( ); first = false; } return ret; } void IncreaseScreenshotLimit( ) { Cmd_NextCaptureSession( ); // lastNumber checks, make the maximum 0xFFFFFF (16777215) replace32bitvalue( 0x46CF4D, 0xFFFFFF ); // TGA replace32bitvalue( 0x46CF58, 0xFFFFFF ); // TGA replace32bitvalue( 0x46CFAA, 0xFFFFFF ); // TGA replace32bitvalue( 0x46CFB6, 0xFFFFFF ); // TGA replace32bitvalue( 0x46D0BD, 0xFFFFFF ); // JPG replace32bitvalue( 0x46D0C8, 0xFFFFFF ); // JPG replace32bitvalue( 0x46D11A, 0xFFFFFF ); // JPG replace32bitvalue( 0x46D126, 0xFFFFFF ); // JPG // cl_avidemo command Cmd_ToggleScreenshotType( ); } void HackEngine( ) { IncreaseScreenshotLimit( ); CPrint = (ConsolePrint_t) 0x421860; o_SaveJPG = (SaveJPG_t) DetourFunction( (BYTE *) 0x47BC20, (BYTE *) h_SaveJPG ); o_Cmd_AddCommand = (Cmd_AddCommand_t) DetourFunction( (BYTE *) 0x41FD20, (BYTE *) h_Cmd_AddCommand ); o_Cvar_Get = (Cvar_Get_t) DetourFunction( (BYTE *) 0x425760, (BYTE *) h_Cvar_Get ); }