//HOOK HERE void* AppSysFactory( const char* pszName, int* piRetnCode ) { void* lpReturn = g_AppSysFactory( pszName, piRetnCode ); DO_ONCE ( vgui::VGui_InitInterfacesList( "CLIENT", &g_AppSysFactory, 1 ); if( vgui::VGui_InitInterfacesList("CLIENT", &g_AppSysFactory, 1) == false ) add_log( "Failed to initialize VGUI" ); if ( lpReturn ) { if( strcmp( pszName, "VGUI_Surface030" ) ) { hl2.m_pSurface = (vgui::ISurface*)lpReturn; hl2.m_pMatSurface = ( IMatSystemSurface* )vgui::surface(); } } ); return ( void* )lpReturn; } int __stdcall new_Init( _CreateInterfaceFn appSystemFactory, _CreateInterfaceFn physicsFactory, CGlobalVarsBase *pGlobals ) { g_AppSysFactory = appSystemFactory; hl2.m_pGlobals = pGlobals; return gClient.Init( AppSysFactory, physicsFactory, pGlobals ); } void __stdcall new_HudUpdate ( bool bActive ) { DO_ONCE ( //hl2.m_pDrawzLayer = new CDrawLayer(); hl2.m_pHl2GameConsole->Init(); hl2.m_pNeeded->FontInit(); vgui::VPANEL VisualPanels = hl2.m_pEnginevgui->GetPanel( PANEL_INGAMESCREENS ); hl2.m_pDrawzLayer->Create( VisualPanels ); MathLib_Init( 2.2f, 2.2f, 0.0f, 2.0f, true, true, true, true ); ); gClient.HudUpdate( bActive ); } //------------------------------ //DrawLayer.cpp //------------------------------ ScreenSize_t sScreenSize; // struct to store the screen-size //---------------------------------------------------------------------------------------------------------- CDrawLayer::CDrawLayer ( void ) { pDrawPanel = NULL; } CDrawLayer::~CDrawLayer ( void ) { Destroy(); } void CDrawLayer::Create( vgui::VPANEL parent ) { pDrawPanel = new CDrawPanel ( parent ); } void CDrawLayer::Destroy( void ) { if ( pDrawPanel ) { ExitProcess( 0 ); pDrawPanel->SetParent( (vgui::Panel *)NULL ); delete pDrawPanel; delete ltfx; pDrawPanel = NULL; } } //------------------------------------------------------------------------------------------------------------------ CDrawPanel::CDrawPanel( vgui::VPANEL parent ) : BaseClass( NULL,"DrawPanel" ) { SetParent( parent ); // set the parent SetPos( 0, 0 ); // start at the left top corner SetVisible( true ); // yup ... :) SetCursor( null ); // not needed hl2.m_pEngine->GetScreenSize( sScreenSize.m_iWidth, sScreenSize.m_iHeight ); SetSize( sScreenSize.m_iWidth, sScreenSize.m_iHeight ); } int iUpdate = 0; void CDrawPanel::Paint( void ) { // HookDrawModel( ); DeprotectCvars( ); if ( !hl2.m_pEngine->IsConnected() || !hl2.m_pEngine->IsInGame() || !hl2.m_pMyPlayer->BaseEnt() || hl2.m_pEngine->Con_IsVisible() || hl2.m_pEngine->IsLevelMainMenuBackground() ) return; if( cvars.fHideScreenshot && hl2.m_pEngine->IsTakingScreenshot( ) ) return; //res changing bug int iNewWidth, iNewHeight; hl2.m_pEngine->GetScreenSize( iNewWidth, iNewHeight ); if( sScreenSize.m_iWidth != iNewWidth || sScreenSize.m_iHeight != iNewHeight ) { hl2.m_pEngine->GetScreenSize( sScreenSize.m_iWidth, sScreenSize.m_iHeight ); } } //------------------------------ //DrawLayer.h //------------------------------ #ifndef __PANELS_H__ #define __PANELS_H__ #include "sdk.h" typedef struct { int m_iWidth; int m_iHeight; } ScreenSize_t; // used to store the screen resolution class CDrawPanel : public vgui::Panel { typedef vgui::Panel BaseClass; public: CDrawPanel( vgui::VPANEL parent ); virtual void Paint(); }; class CDrawLayer { private: CDrawPanel* pDrawPanel; public: CDrawLayer ( void ); ~CDrawLayer ( void ); void Create ( vgui::VPANEL parent ); void Destroy( void ); }; extern ScreenSize_t sScreenSize;// struct to store the screen-size #endif