//============================ //LTFX Menu Base By GHOSTER #include "stdafx.h" #include "cLTFX.h" #include CD3DFont* menuFont = NULL; pMenu mainMenu[15]; cvars cvar; extern cFont ltfx; int curItem; void cFont::InitalizeFont(char *font, int size, IDirect3DDevice8* pD3Ddev) { menuFont = new CD3DFont(font, size, 0); menuFont->InitDeviceObjects(pD3Ddev); menuFont->RestoreDeviceObjects(); } void cFont::PostReset(char *font, int size, IDirect3DDevice8* pD3Ddev) { menuFont = new CD3DFont(font, size,0); menuFont->InitDeviceObjects(pD3Ddev); menuFont->RestoreDeviceObjects(); } void cFont::PreReset() { menuFont->InvalidateDeviceObjects(); menuFont->DeleteDeviceObjects(); menuFont = NULL; } void cFont::DrawGameText(int x, int y, DWORD color, char *text) { menuFont->DrawText((float)x, (float)y, color, text); } cMenu::cMenu( ) { MAX_ITEMS = 0; } cMenu::~cMenu( ) { MAX_ITEMS = 0; } void cMenu::AddMenuItem(char title[16], float *cvar, int min, int max) { mainMenu[MAX_ITEMS].value = cvar; strcpy(mainMenu[MAX_ITEMS].title, title); mainMenu[MAX_ITEMS].max = max; mainMenu[MAX_ITEMS].min = min; MAX_ITEMS++; } void cMenu::DrawMenu(int x, int y) { char value[256]; for (int i = 0; i < MAX_ITEMS + 1; i++) { sprintf(value, "%2.2f", mainMenu[i].value[0]); if( i == curItem && mainMenu[i].value[0] >= 0) { ltfx.DrawGameText(x, y + (i * 20), 0xFF00FF00, mainMenu[i].title); ltfx.DrawGameText(x + 50, y + (i * 20), 0xFFFFFFFF, value); } else { ltfx.DrawGameText(x, y + (i * 20), 0xFFFFFF00, mainMenu[i].title); ltfx.DrawGameText(x + 50, y + (i * 20), 0xFFFFFFFF, value); } } } void cMenu::CheckNav() { if(GetAsyncKeyState(VK_UP)&1) curItem--; if(GetAsyncKeyState(VK_DOWN)&1) curItem++; if(curItem < 0) curItem = MAX_ITEMS; if(curItem > MAX_ITEMS) curItem = 0; if(GetAsyncKeyState(VK_RIGHT)&1) { mainMenu[curItem].value[0] += 1; if( mainMenu[curItem].value[0] > mainMenu[curItem].max ) mainMenu[curItem].value[0] = (float)mainMenu[curItem].min; } if(GetAsyncKeyState(VK_LEFT)&1) { mainMenu[curItem].value[0] -= 1; if( mainMenu[curItem].value[0] < mainMenu[curItem].min ) mainMenu[curItem].value[0] = (float)mainMenu[curItem].max; } } //============================ #include "d3dfont.h" #define MAX_MENU 15 class cFont { public: void InitalizeFont(char *font, int size, IDirect3DDevice8* pD3Ddev); //Set font name, and size. (Call in initalize) void PreReset(); // Call in prereset void PostReset(char *font, int size, IDirect3DDevice8* pD3Ddev); //Call in prereset void DrawGameText(int x, int y, DWORD color, char *text); //Color can by D3DCOLOR_ARGB(x, x, x, x)) or 0xFFFFFFFF etc private: }; class cMenu { public: cMenu( ); ~cMenu( ); void AddMenuItem(char title[16], float* cvar, int min, int max); //Add a menu item void DrawMenu(int x, int y); //Draw our menu on coords we want void CheckNav(); //... private: int MAX_ITEMS; }; struct cvars { float menu; }; struct pMenu { char title[16]; float* value; int max, min; }; extern pMenu mainMenu[MAX_MENU]; //15 items extern cMenu menu; //============================ #include "stdafx.h" #include "d3d8hook.h" #include "d3d8dev.h" #include "CDetour.h" #include #include #include "cLTFX.h" #include "modulehandler.h" Reset_t pReset; BeginScene_t pBeginScene; EndScene_t pEndScene; DrawIndexedPrimitive_t pDrawIndexedPrimitive; SetStreamSource_t pSetStreamSource; cMenu* ltfx; cFont* font; struct sVars{ float walls; float zoom; float clock; float opk; float asus; }; sVars cvar; //---------- bool bSetup = false; //---------- //===================================================================================================================================================== void InitHack( LPDIRECT3DDEVICE8 pDev ) { font = new cFont( ); ltfx = new cMenu( ); ltfx->AddMenuItem( "WallHack", &cvar.walls, 0, 4 ); ltfx->AddMenuItem( "Asus", &cvar.asus, 0, 1 ); ltfx->AddMenuItem( "Clock", &cvar.clock, 0, 1 ); } //===================================================================================================================================================== void PreReset( LPDIRECT3DDEVICE8 pDevice ) { font->PreReset( ); //pre-reset, destroy } //===================================================================================================================================================== void PostReset( LPDIRECT3DDEVICE8 pDevice ) { font->PostReset( "Arial", 8, pDevice ); //post-reset, re-init } //===================================================================================================================================================== HRESULT WINAPI nReset( LPDIRECT3DDEVICE8 pDevice, D3DPRESENT_PARAMETERS* pPresentationParameters ) { PreReset( pDevice ); HRESULT hRet = pReset( pDevice, pPresentationParameters ); if( SUCCEEDED( hRet ) ) { PostReset( pDevice ); } return hRet; } //===================================================================================================================================================== HRESULT WINAPI nBeginScene(LPDIRECT3DDEVICE8 pDevice) { if( !bSetup ) { InitHack( pDevice ); bSetup = true; } return pBeginScene(pDevice); } //===================================================================================================================================================== HRESULT WINAPI nEndScene(LPDIRECT3DDEVICE8 pDevice) { ltfx->CheckNav( ); ltfx->DrawMenu( 10, 10 ); return pEndScene(pDevice); } //===================================================================================================================================================== HRESULT WINAPI nDrawIndexedPrimitive(LPDIRECT3DDEVICE8 pDevice, D3DPRIMITIVETYPE pType, unsigned int uiMinIndex, unsigned int uiNumVertices, unsigned int uiStartIndex, unsigned int uiPrimitiveCount) { return pDrawIndexedPrimitive(pDevice, pType, uiMinIndex, uiNumVertices, uiStartIndex, uiPrimitiveCount); } //===================================================================================================================================================== HRESULT WINAPI nSetStreamSource(LPDIRECT3DDEVICE8 pDevice, unsigned int uiStreamNumber, LPDIRECT3DVERTEXBUFFER8 pStreamData, unsigned int uiStride) { return pSetStreamSource(pDevice, uiStreamNumber, pStreamData, uiStride); } //=====================================================================================================================================================