D3D Menu помогите решить проблемку - Вопросы и ответы, обсуждения - Ваши вопросы по C/C++ только в данном разделе
17.08.2011, 22:27
#1
Фельдмаршал
Регистрация: 22.02.2011
Сообщений: 949
Популярность: 34698
Сказал(а) спасибо: 939
Поблагодарили 2,534 раз(а) в 911 сообщениях
D3D Menu помогите решить проблемку
Скрин 1 [Ссылки могут видеть только зарегистрированные пользователи. ]
Скрин 2 [Ссылки могут видеть только зарегистрированные пользователи. ]
На скринах видно мою проблему.
Код Menu.cpp
Код:
#include "Stdafx.h"
#include "Menu.h"
#include "detours.h"
#include <windows.h>
BOOL CarregaFonte = false;
typedef HRESULT(WINAPI* BeginScene_)(LPDIRECT3DDEVICE9 pDevice);
BeginScene_ pBeginScene;
typedef HRESULT ( WINAPI* Reset_t )( LPDIRECT3DDEVICE9 pDevice, D3DPRESENT_PARAMETERS* pPresentationParameters );
Reset_t pReset;
HRESULT WINAPI nBeginScene(LPDIRECT3DDEVICE9 pDevice)
{
_asm NOP;
HRESULT hRet = pBeginScene(pDevice);
if(!CarregaFonte) {
CarregaFonte=true;
D3DXCreateFont( pDevice, 14, 0, FW_NORMAL, 0, FALSE,DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Times New Roman", &Fonte[0]);
D3DXCreateFont( pDevice, 14, 0, FW_BOLD, 0, FALSE,DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Times New Roman", &Fonte[1]);
D3DXCreateFont( pDevice, 14, 0, FW_BOLD, 0, FALSE,DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Times New Roman", &Fonte[2]);
D3DXCreateFont( pDevice, 14, 0, FW_BOLD, 1, FALSE,DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Times New Roman", &Fonte[3]);
D3DXCreateFont( pDevice, 14, 0, FW_BOLD, 1, FALSE,DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Times New Roman", &Fonte[4]);
D3DXCreateFont( pDevice, 14, 0, FW_BOLD, 1, FALSE,DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Times New Roman", &Fonte[5]);
D3DXCreateFont( pDevice, 14, 0, FW_BOLD, 1, FALSE,DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Times New Roman", &Fonte[6]);
D3DXCreateFont( pDevice, 14, 0, FW_BOLD, 1, FALSE,DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Times New Roman", &Fonte[7]);
D3DXCreateFont( pDevice, 12, 0, FW_BOLD, 1, FALSE,DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Times New Roman", &Fonte[8]);
D3DXCreateFont( pDevice, 14, 0, FW_BOLD, 1, FALSE,DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Times New Roman", &Fonte[9]);
D3DXCreateFont( pDevice, 8, 0, FW_BOLD, 1, FALSE,DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Times New Roman", &Fonte[10]);
D3DXCreateFont( pDevice, 38, 0, FW_BOLD, 1, FALSE,DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Times New Roman", &Fonte[11]);
D3DXCreateFont( pDevice, 16, 0, FW_BOLD, 1, FALSE,DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Times New Roman", &Fonte[12]);
}
BaseJanela.BaseX = 10;
BaseJanela.BaseY = 150;
BaseJanela.BaseW = 150;
BaseJanela.BaseH = (30 * MENU_ITEM_MAX);
if(GetAsyncKeyState(VK_HOME)&1)
{
BaseJanela.Mostrar = !BaseJanela.Mostrar;
}
if(BaseJanela.Mostrar)
{
if(GetAsyncKeyState(VK_LEFT)&1)
{
setadireita = true;
}
else
setadireita = false;
if(GetAsyncKeyState(VK_RIGHT)&1)
{
setaesquerda = true;
}
else
setaesquerda = false;
MenuEspaco = BaseJanela.BaseH / MENU_ITEM_MAX;
if(GetAsyncKeyState(VK_DOWN)&1){MenuSelecionado +=1;}
if(GetAsyncKeyState(VK_UP)&1){MenuSelecionado -=1;}
if(setadireita && MenuSelecionado == 1){Item1 -=1;}
if(setaesquerda && MenuSelecionado == 1){Item1 +=1;}
if(setadireita && MenuSelecionado == 2){Item2 -=1;}
if(setaesquerda && MenuSelecionado == 2){Item2 +=1;}
if(setadireita && MenuSelecionado == 3){Item3 -=1;}
if(setaesquerda && MenuSelecionado == 3){Item3 +=1;}
if(setadireita && MenuSelecionado == 4){Item4 -=1;}
if(setaesquerda && MenuSelecionado == 4){Item4 +=1;}
if(setadireita && MenuSelecionado == 5){Item5 -=1;}
if(setaesquerda && MenuSelecionado == 5){Item5 +=1;}
if(setadireita && MenuSelecionado == 6){Item6 -=1;}
if(setaesquerda && MenuSelecionado == 6){Item6 +=1;}
if(setadireita && MenuSelecionado == 7){Item7 -=1;}
if(setaesquerda && MenuSelecionado == 7){Item7 +=1;}
if(MenuSelecionado > MENU_ITEM_MAX){MenuSelecionado = MENU_ITEM_MIN;}
if(MenuSelecionado < MENU_ITEM_MIN){MenuSelecionado = MENU_ITEM_MAX;}
if(Item1 > ITEM1_MAX)
Item1 = ITEM1_MIN;
if(Item1 < ITEM1_MIN)
Item1 = ITEM1_MAX;
if(Item2 > ITEM2_MAX)
Item2 = ITEM2_MIN;
if(Item2 < ITEM2_MIN)
Item2 = ITEM2_MAX;
if(Item3 > ITEM3_MAX)
Item3 = ITEM3_MIN;
if(Item3 < ITEM3_MIN)
Item3 = ITEM3_MAX;
if(Item4 > ITEM4_MAX)
Item4 = ITEM4_MIN;
if(Item4 < ITEM4_MIN)
Item4 = ITEM4_MAX;
if(Item5 > ITEM5_MAX)
Item5 = ITEM5_MIN;
if(Item5 < ITEM5_MIN)
Item5 = ITEM5_MAX;
if(Item6 > ITEM6_MAX)
Item6 = ITEM6_MIN;
if(Item6 < ITEM6_MIN)
Item6 = ITEM6_MAX;
if(Item7 > ITEM7_MAX)
Item7 = ITEM7_MIN;
if(Item7 < ITEM7_MIN)
Item7 = ITEM7_MAX;
Menu(pDevice,"Menu Universal ",BaseJanela.BaseX,BaseJanela.BaseY-50,210,300,0x44FFFFFF,0x44FFFFFF,0xFF848484,"V0.5");
Botao(pDevice,BaseJanela.BaseX + 8,BaseJanela.BaseY-MenuEspaco + (MenuSelecionado * MenuEspaco) ,4,20,0xFF2E2E2E,0xFF2E2E2E,0xFFFF0000,"");
Botao(pDevice,BaseJanela.BaseX +15,BaseJanela.BaseY+ (MenuEspaco * 0),175,20,0xFF2E2E2E,0xFF2E2E2E,0xFF848484,"Names ESP");
Botao(pDevice,BaseJanela.BaseX +15,BaseJanela.BaseY+ (MenuEspaco * 1),175,20,0xFF2E2E2E,0xFF2E2E2E,0xFF848484,"Distance ESP");
Botao(pDevice,BaseJanela.BaseX +15,BaseJanela.BaseY+ (MenuEspaco * 2),175,20,0xFF2E2E2E,0xFF2E2E2E,0xFF848484,"Heath ESP");
Botao(pDevice,BaseJanela.BaseX +15,BaseJanela.BaseY+ (MenuEspaco * 3),175,20,0xFF2E2E2E,0xFF2E2E2E,0xFF848484,"Objects ESP");
Botao(pDevice,BaseJanela.BaseX +15,BaseJanela.BaseY+ (MenuEspaco * 4),175,20,0xFF2E2E2E,0xFF2E2E2E,0xFF848484,"Weapon ESP");
Botao(pDevice,BaseJanela.BaseX +15,BaseJanela.BaseY+ (MenuEspaco * 5),175,20,0xFF2E2E2E,0xFF2E2E2E,0xFF848484,"Box ESP");
Botao(pDevice,BaseJanela.BaseX +15,BaseJanela.BaseY+ (MenuEspaco * 6),175,20,0xFF2E2E2E,0xFF2E2E2E,0xFF848484,"Barrel ESP");
GravaTexto(BaseJanela.BaseX +(BaseJanela.BaseW+30) ,BaseJanela.BaseY+ (MenuEspaco * 0) , 0xFFFF9900, Fonte[12],"%d", Item1);
GravaTexto(BaseJanela.BaseX +(BaseJanela.BaseW+30) ,BaseJanela.BaseY+ (MenuEspaco * 1) , 0xFFFF9900, Fonte[12],"%d", Item2);
GravaTexto(BaseJanela.BaseX +(BaseJanela.BaseW+30) ,BaseJanela.BaseY+ (MenuEspaco * 2) , 0xFFFF9900, Fonte[12],"%d", Item3);
GravaTexto(BaseJanela.BaseX +(BaseJanela.BaseW+30) ,BaseJanela.BaseY+ (MenuEspaco * 3) , 0xFFFF9900, Fonte[12],"%d", Item4);
GravaTexto(BaseJanela.BaseX +(BaseJanela.BaseW+30) ,BaseJanela.BaseY+ (MenuEspaco * 4) , 0xFFFF9900, Fonte[12],"%d", Item5);
GravaTexto(BaseJanela.BaseX +(BaseJanela.BaseW+30) ,BaseJanela.BaseY+ (MenuEspaco * 5) , 0xFFFF9900, Fonte[12],"%d", Item6);
GravaTexto(BaseJanela.BaseX +(BaseJanela.BaseW+30) ,BaseJanela.BaseY+ (MenuEspaco * 6) , 0xFFFF9900, Fonte[12],"%d", Item7);
}
if(Item1==1)
//ON
if(Item1==0)
//OFF
//#define ITEM2_MAX 1 add ++
//if(Item==2) etc.....
return hRet;
}
HRESULT WINAPI nReset( LPDIRECT3DDEVICE9 pDevice, D3DPRESENT_PARAMETERS* pPresentationParameters )
{
_asm NOP;
if( Fonte[12] )
Fonte[12]->OnLostDevice();
HRESULT hRet = pReset(pDevice, pPresentationParameters);
if(hRet == D3D_OK) {
if( Fonte[12] )
Fonte[12]->OnLostDevice();
}
return hRet;
}
int InicializarD3D(void)
{
DWORD D3DBase, ResultadoD3DBase, *vTable;
D3DBase=0;do {
D3DBase = (DWORD)GetModuleHandle("d3d9.dll");
Sleep(10);
}
while(!D3DBase);
ResultadoD3DBase = ProcurePattern(D3DBase, 0x128000, (PBYTE)"\xC7\x06\x00\x00\x00\x00\x89\x86\x00\x00\x00\x00\x89\x86", "xx????xx????xx");
if (ResultadoD3DBase) {
memcpy(&vTable,(void *)(ResultadoD3DBase+2),4);
pBeginScene = (BeginScene_)DetourFunction((PBYTE)vTable[42],(PBYTE)nBeginScene);
pReset = (Reset_t)DetourFunction((PBYTE)vTable[16],(PBYTE)nReset);
}
return 0;
}
BOOL WINAPI DllMain (HMODULE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
switch (fdwReason)
{
case DLL_PROCESS_ATTACH:
{
CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE) InicializarD3D, NULL, NULL, NULL);
}
break;
}
return TRUE;
}
Menu.h
Код:
#include "stdafx.h"
#include <d3dx9.h>
#include <vector>
#pragma comment(lib,"d3dx9.lib")
ID3DXFont * Fonte[13];
ID3DXFont * fonte;
int MenuSelecionado = 1;
bool setadireita;
bool setaesquerda;
#define MENU_ITEM_MAX 7
#define MENU_ITEM_MIN 1
#define ITEM1_MAX 1
#define ITEM1_MIN 0
#define ITEM2_MAX 1
#define ITEM2_MIN 0
#define ITEM3_MAX 1
#define ITEM3_MIN 0
#define ITEM4_MAX 1
#define ITEM4_MIN 0
#define ITEM5_MAX 1
#define ITEM5_MIN 0
#define ITEM6_MAX 1
#define ITEM6_MIN 0
#define ITEM7_MAX 1
#define ITEM7_MIN 0
int Item1 = 0;
int Item2 = 0;
int Item3 = 0;
int Item4 = 0;
int Item5 = 0;
int Item6 = 0;
int Item7 = 0;
struct Janela{
int BaseX;
int BaseY;
int BaseW;
int BaseH;
bool Mostrar;
} BaseJanela;
int MenuEspaco = 25;
void GravaTexto(int X, int Y, D3DCOLOR Cor, ID3DXFont *fonte, const char* sNome,...)
{
char sTexto[1024] = "";
va_list ap;
if( !sNome || *sNome == '\0' )
return;
va_start( ap, sNome );
_vsnprintf_s( sTexto, 1024, 1023, sNome, ap );
va_end( ap );
RECT Posicao = { X, Y, X+500, Y+50 };
fonte->DrawText( NULL, sTexto, -1, &Posicao, DT_LEFT | DT_WORDBREAK, Cor);
}
void DrawRect(IDirect3DDevice9* Unidade, int baseX, int baseY, int baseW, int baseH, D3DCOLOR Cor)
{
D3DRECT BarRect = { baseX, baseY, baseX + baseW, baseY + baseH };
Unidade->Clear(1, &BarRect, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, Cor, 0, 0);
}
void Base(IDirect3DDevice9* Unidade,int baseX, int baseY, int baseW, int baseH, D3DCOLOR Cor, D3DCOLOR Cor1, D3DCOLOR Cor2)
{
DrawRect(Unidade,baseX+1, baseY+1, baseW+1, baseH+1, Cor);
DrawRect(Unidade,baseX, baseY-1, baseW+1 , baseH, Cor1);
DrawRect(Unidade,baseX+1, baseY, baseW , baseH , Cor2);
}
void Menu(IDirect3DDevice9* Unidade,char *sTitulo, int baseX, int baseY, int baseW, int baseH, D3DCOLOR Cor, D3DCOLOR Cor1, D3DCOLOR Cor2,const char* sVersao,...)
{
DrawRect(Unidade,baseX+1, baseY+1, baseW+1, baseH+1, Cor);
DrawRect(Unidade,baseX, baseY-1, baseW+1 , baseH, Cor1);
DrawRect(Unidade,baseX+1, baseY, baseW , baseH , Cor2);
GravaTexto(baseX +5 ,baseY + 2 , 0x77FFFFFF, Fonte[12], sTitulo);
GravaTexto(baseX +5 ,baseY + baseH - 20 , 0x55FFFFFF, Fonte[12], sVersao);
Base(Unidade,baseX+5,baseY+30,baseW-10,baseH-60,0x44FFFFFF,0x44FFFFFF,0xFF2E2E2E);
}
void Botao(IDirect3DDevice9* Unidade,int baseX, int baseY, int baseW, int baseH, D3DCOLOR Cor, D3DCOLOR Cor1, D3DCOLOR Cor2,const char* sNome,...)
{
DrawRect(Unidade, baseX+1, baseY+1, baseW+1, baseH+1, Cor);
DrawRect(Unidade, baseX, baseY-1, baseW+1 , baseH, Cor1);
DrawRect(Unidade, baseX, baseY, baseW , baseH , Cor2);
GravaTexto(baseX + 10, baseY + 4, 0xFFFFFF00, Fonte[12], sNome);
}
bool Compare(const BYTE* pData, const BYTE* bMaskara, const char* szMaskara){
for(;*szMaskara;++szMaskara,++pData,++bMaskara)
if(*szMaskara=='x' && *pData!=*bMaskara )
return false;
return (*szMaskara) == NULL;
}
DWORD ProcurePattern(DWORD dValor,DWORD dLer,BYTE *bMaskara,char * szMaskara)
{
for(DWORD i=0; i < dLer; i++)
if( Compare( (BYTE*)( dValor+i ),bMaskara,szMaskara) )
return (DWORD)(dValor+i);
return 0;
}
Уже незнаю что делать.
18.08.2011, 07:08
#2
Сержант
Регистрация: 03.04.2011
Сообщений: 167
Популярность: 898
Сказал(а) спасибо: 156
Поблагодарили 402 раз(а) в 85 сообщениях
Re: D3D Menu помогите решить проблемку
Dimedrol1536(2) , У меня дак наоборот Хд На 3д текст под меню, а в игре над =)
18.08.2011, 11:14
#3
Разведчик
Регистрация: 17.07.2011
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Re: D3D Menu помогите решить проблемку
знаешь что, дай кому-нибудь из друзей, мб это ток у тебя на компе так
18.08.2011, 12:55
#4
Фельдмаршал
Регистрация: 22.02.2011
Сообщений: 949
Популярность: 34698
Сказал(а) спасибо: 939
Поблагодарили 2,534 раз(а) в 911 сообщениях
Re: D3D Menu помогите решить проблемку
18.08.2011, 15:00
#5
Разведчик
Регистрация: 14.06.2011
Сообщений: 3
Популярность: 12
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Re: D3D Menu помогите решить проблемку
Дай ссыль в ЛС на эту прогу д3д ТЕСТ !!
18.08.2011, 21:31
#6
Рыцарь-капитан
Регистрация: 29.01.2010
Сообщений: 547
Популярность: 41279
Сказал(а) спасибо: 692
Поблагодарили 2,270 раз(а) в 1,035 сообщениях
Re: D3D Menu помогите решить проблемку
сначала рисуй текст а потом спрайты
19.08.2011, 12:47
#7
Разведчик
Регистрация: 14.06.2011
Сообщений: 3
Популярность: 12
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Re: D3D Menu помогите решить проблемку
Dimedrol1536(2) сорр за тупость но дай мне ссыль а эту прогу D3D TEST !!! пллз
19.08.2011, 23:39
#8
Рыцарь-капитан
Регистрация: 29.01.2010
Сообщений: 547
Популярность: 41279
Сказал(а) спасибо: 692
Поблагодарили 2,270 раз(а) в 1,035 сообщениях
Re: D3D Menu помогите решить проблемку
20.08.2011, 12:33
#9
Фельдмаршал
Регистрация: 22.02.2011
Сообщений: 949
Популярность: 34698
Сказал(а) спасибо: 939
Поблагодарили 2,534 раз(а) в 911 сообщениях
Re: D3D Menu помогите решить проблемку
20.08.2011, 22:19
#10
Рыцарь
Регистрация: 19.04.2011
Сообщений: 369
Популярность: 11508
Сказал(а) спасибо: 342
Поблагодарили 784 раз(а) в 257 сообщениях
Re: D3D Menu помогите решить проблемку
У меня тоже такой исходник был и ошибка такая была...
Исправить ошибку на смог, и забил на него.
20.08.2011, 22:33
#11
Рыцарь-капитан
Регистрация: 29.01.2010
Сообщений: 547
Популярность: 41279
Сказал(а) спасибо: 692
Поблагодарили 2,270 раз(а) в 1,035 сообщениях
Re: D3D Menu помогите решить проблемку
чем вам мой исходник не нравиться?, он ведь отлично настроен под пб
28.08.2011, 18:51
#12
Фельдмаршал
Регистрация: 22.02.2011
Сообщений: 949
Популярность: 34698
Сказал(а) спасибо: 939
Поблагодарили 2,534 раз(а) в 911 сообщениях
Re: D3D Menu помогите решить проблемку
09.12.2011, 17:20
#13
Разведчик
Регистрация: 06.07.2011
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Re: D3D Menu помогите решить проблемку
Кто нашёл ответ, напишите пожалуйста ответ.
Переделываю исходы под другую игру, та же проблема.
17.01.2012, 18:47
#14
Сержант
Регистрация: 12.04.2011
Сообщений: 142
Популярность: 3904
Сказал(а) спасибо: 279
Поблагодарили 361 раз(а) в 174 сообщениях
Re: D3D Menu помогите решить проблемку
Такая проблема у меня была с исходом Оверлорда!
Там были вот такие строчки
Цитата:
if(Font())
pFont1->OnLostDevice();
FPScheck(sFPS,"%d Fps"); //ФПС
GetTimeFormat(NULL,NULL,NULL,NULL,Timestruct,15);
sprintf(TimeString,"%s",Timestruct); //время
sprintf(Resolution,"%d x %d",Viewport.Width,Viewport.Height); //Разрешение
if(Mmax==0)DiamondMenu(pDevice);
//MenuShow(30,75,pDevice); //координаты меню x,y УБИРАЕТЕ палочки "//" если хотите что бы показывало в Д3Д_Тесте
MenuNav();
if(Mvisible)
{
spHeader->Begin(D3DXSPRITE_ALPHABLEND);
spHeader->Draw(txHeader, NULL, NULL, &pHeader, 0xFFFFFFFF);
spHeader->End();
spFooter->Begin(D3DXSPRITE_ALPHABLEND);
spFooter->Draw(txFooter, NULL, NULL, &pFooter, 0xFFFFFFFF);
spFooter->End();
spBody->Begin(D3DXSPRITE_ALPHABLEND);
spBody->Draw(txBody,0,0,&pBody,0xFFFFFFFF);
spBody->End();
}
//MenuShow(30,75,pDevice); //координаты меню x,y МОЖЕТЕ убрать тут, но там (чуть выше, где закоментированно) палочки нужно убрать... Если оставить две, то нагрузка будет. Если у вас полупрозрачный спрайт, то ничего не меняем.
Возможно у тебя что-то похожее, просто твой исход для меня УГ!
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 09:44 .