Не строится прэкт - Общение разработчиков - Программирование для Point Blank, общение и обсуждение разработок
17.10.2012, 14:05
#16
Старший сержант
Регистрация: 04.02.2011
Сообщений: 198
Популярность: 12244
Сказал(а) спасибо: 453
Поблагодарили 435 раз(а) в 242 сообщениях
Re: Не строится прэкт
Цитата:
так у тебя точка входа не цепляет не как деректив...
Удали main.h, удали все c main.cpp и перенеси туда все с loger.h, и допиши точку входа в самый низ:
Код:
bool WINAPI DllMain(HMODULE hDll, DWORD dwReason, LPVOID lpReserved)
{
if ( dwReason == DLL_PROCESS_ATTACH )
{
CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)MyThread, NULL,NULL,NULL);
}
return TRUE;
}
Весь логгер у тебя будет состоять из одного фаила(без учета дополнительный включений если потребуется)
Полный листинг
Код:
#pragma comment (lib, "d3dx9.lib")
#pragma comment (lib, "d3d9.lib")
#include <Windows.h>
#include <d3d9.h>
#include <d3dx9.h>
#include <iostream>
#include <fstream>
using namespace std;
#define HOOK(func,addy) o##func = (t##func)DetourFunction((PBYTE)addy,(PBYTE)hk##func)
#define DetourFunction
#define STRIDE 0
#define NUMVERTS 1
#define PRIMCOUNT 2
#define STARTINDEX 3
#define LOGVALUES 4
#define ES 0
#define DIP 1
#define SSS 2
void Log(char* fmt, ...);
void ModelRecLoggerMenu();
struct ModelRecLogger_t
{
char* type;
int value;
bool isLogging;
};
ModelRecLogger_t model[5] = {
{"Stride:", 0, false},
{"NumVert:", 0, false},
{"PrimCount:", 0, false},
{"StartIndex:", 0, false},
{"LOG ALL VALUES", 0, false}
};
unsigned int g_uiTimer = NULL;
unsigned int g_uiStride = NULL;
LPD3DXFONT g_pFont = NULL;
LPD3DXLINE g_pLine = NULL;
D3DVIEWPORT9 g_ViewPort;
LPDIRECT3DTEXTURE9 g_pTexRed = NULL;
LPDIRECT3DTEXTURE9 g_pTexOrange = NULL;
const BYTE red[ 58 ] = {
0x42, 0x4D, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x28, 0x00,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x18, 0x00, 0x00, 0x00,
0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00
};
const BYTE orange[ 58 ] = {
0x42, 0x4D, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x28, 0x00,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x18, 0x00, 0x00, 0x00,
0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA5, 0xFF, 0x00
};
//-------------------------------------------------
typedef HRESULT (WINAPI* tSetStreamSource)(LPDIRECT3DDEVICE9 pDevice,UINT StreamNumber,IDirect3DVertexBuffer9* pStreamData,UINT OffsetInBytes,UINT Stride);
tSetStreamSource oSetStreamSource;
typedef HRESULT (WINAPI* tEndScene)(LPDIRECT3DDEVICE9 pDevice);
tEndScene oEndScene;
typedef HRESULT (WINAPI* tDrawIndexedPrimitive)(LPDIRECT3DDEVICE9 pDevice, D3DPRIMITIVETYPE PrimType,INT BaseVertexIndex,UINT MinVertexIndex,UINT NumVertices,UINT startIndex,UINT primCount);
tDrawIndexedPrimitive oDrawIndexedPrimitive;
//---DrawString------------------------------------
void DrawString(int x, int y, DWORD color, const char *fmt, ...)
{
RECT FontPos = { x, y, x + 120, y + 16 };
char buf[1024] = {'\0'};
va_list va_alist;
va_start(va_alist, fmt);
vsprintf(buf, fmt, va_alist);
va_end(va_alist);
g_pFont->DrawText(NULL, buf, -1, &FontPos, DT_NOCLIP, color);
}
//---DrawRectangle---------------------------------
void DrawRectangle(float x, float y, float w, int h)
{
D3DXVECTOR2 vLine1[2];
D3DXVECTOR2 vLine2[2];
D3DXVECTOR2 vLine3[2];
D3DXVECTOR2 vLine4[2];
vLine1[0].x = x;
vLine1[0].y = y;
vLine1[1].x = x;
vLine1[1].y = y+h;
vLine2[0].x = x+w;
vLine2[0].y = y;
vLine2[1].x = x+w;
vLine2[1].y = y+h;
vLine3[0].x = x;
vLine3[0].y = y;
vLine3[1].x = x+w;
vLine3[1].y = y;
vLine4[0].x = x;
vLine4[0].y = y+h;
vLine4[1].x = x+w;
vLine4[1].y = y+h;
g_pLine->SetWidth(2);
g_pLine->SetAntialias(false);
g_pLine->SetGLLines(false);
g_pLine->Begin();
g_pLine->Draw(vLine1, 2, 0xFF0000FF);
g_pLine->Draw(vLine2, 2, 0xFF0000FF);
g_pLine->Draw(vLine3, 2, 0xFF0000FF);
g_pLine->Draw(vLine4, 2, 0xFF0000FF);
g_pLine->End();
}
//---Hooked DirectX Functions------------------------------------------
HRESULT WINAPI hkEndScene(LPDIRECT3DDEVICE9 pDevice)
{
if(g_pTexRed == NULL) D3DXCreateTextureFromFileInMemory(pDevice, (LPCVOID)&red, sizeof(red), &g_pTexRed);
if(g_pTexOrange == NULL) D3DXCreateTextureFromFileInMemory(pDevice, (LPCVOID)&orange, sizeof(orange), &g_pTexOrange);
if(g_pFont == NULL) D3DXCreateFont(pDevice, 15, 0, FW_BOLD, 1, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Verdana", &g_pFont);
if(g_pLine == NULL) D3DXCreateLine(pDevice, &g_pLine);
pDevice->GetViewport(&g_ViewPort);
if(g_pFont != NULL && g_pLine != NULL){
ModelRecLoggerMenu();
if(g_uiTimer > GetTickCount()){
DrawString(g_ViewPort.Width/2,g_ViewPort.Height/2, 0xFF00FF00, "Values Saved");
}
}
return oEndScene(pDevice);
}
HRESULT WINAPI hkDrawIndexedPrimitive(LPDIRECT3DDEVICE9 pDevice, D3DPRIMITIVETYPE PrimType,INT BaseVertexIndex,UINT MinVertexIndex,UINT NumVertices,UINT startIndex,UINT primCount)
{
__asm nop
HRESULT hRet = oDrawIndexedPrimitive(pDevice, PrimType, BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
bool bIsLogging = false;
for(int i = 0; i < 4; i++){
if(model[i].isLogging == true){
bIsLogging = true;
break;
}
}
if(bIsLogging){
if((model[STRIDE].isLogging == true ? model[STRIDE].value : g_uiStride) == g_uiStride &&
(model[NUMVERTS].isLogging == true ? model[NUMVERTS].value : NumVertices) == NumVertices &&
(model[PRIMCOUNT].isLogging == true ? model[PRIMCOUNT].value : primCount) == primCount &&
(model[STARTINDEX].isLogging == true ? model[STARTINDEX].value : startIndex) == startIndex)
{
pDevice->SetRenderState( D3DRS_ZENABLE,false );
pDevice->SetRenderState( D3DRS_FILLMODE,D3DFILL_SOLID );
pDevice->SetTexture( 0, g_pTexOrange );
oDrawIndexedPrimitive(pDevice, PrimType, BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
pDevice->SetRenderState( D3DRS_ZENABLE, true );
pDevice->SetRenderState( D3DRS_FILLMODE,D3DFILL_SOLID );
pDevice->SetTexture( 0, g_pTexRed );
}
}
return hRet;
}
HRESULT WINAPI hkSetStreamSource(LPDIRECT3DDEVICE9 pDevice,UINT StreamNumber,IDirect3DVertexBuffer9* pStreamData,UINT OffsetInBytes,UINT Stride)
{
__asm nop
if(StreamNumber == 0){
g_uiStride = Stride;
}
return oSetStreamSource(pDevice, StreamNumber, pStreamData, OffsetInBytes, Stride);
}
//-------------------------------------------------
void Log(char* fmt, ...)
{
char buf[1024] = {0};
va_list va_alist;
ofstream output;
va_start(va_alist, fmt);
vsnprintf(buf, sizeof(buf), fmt, va_alist);
va_end(va_alist);
output.open("D3D9 Model Logger.txt", ios::app);
if(output.fail()) return;
output << buf << endl;
output.close();
}
//--Credits to DrUnKeN ChEeTaH--------------------------------------------
LRESULT CALLBACK MsgProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam){return DefWindowProc(hwnd, uMsg, wParam, lParam);}
void DX_Init(DWORD* table)
{
WNDCLASSEX wc = {sizeof(WNDCLASSEX),CS_CLASSDC,MsgProc,0L,0L,GetModuleHandle(NULL),
NULL,NULL,NULL,NULL,"DX",NULL};
RegisterClassEx(&wc);
HWND hWnd = CreateWindow("DX",NULL,WS_OVERLAPPEDWINDOW,
100,100,300,300,GetDesktopWindow(),NULL,wc.hInstance,
NULL);
LPDIRECT3D9 pD3D = Direct3DCreate9( D3D_SDK_VERSION );
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory( &d3dpp, sizeof(d3dpp) );
d3dpp.Windowed = TRUE;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;
LPDIRECT3DDEVICE9 pd3dDevice;
pD3D->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,
hWnd,D3DCREATE_SOFTWARE_VERTEXPROCESSING,&d3dpp,
&pd3dDevice);
DWORD* pVTable = (DWORD*)pd3dDevice;
pVTable = (DWORD*)pVTable[0];
table[ES] = pVTable[42];
table[DIP] = pVTable[82];
table[SSS] = pVTable[100];
DestroyWindow(hWnd);
}
//-------------------------------------------------
void ModelRecLoggerMenu()
{
static int menuIndex = 0;
static int incrementBy = 1;
DrawString(10, 10, 0xFFFFFFFF, "In/Decrement By: %i", incrementBy);
for(int i = 0; i < 5; i++){
if(i == menuIndex){
DrawRectangle(8, 23+(i*15), 140, 18);
}
DrawString(10, 25+(i*15), model[i].isLogging==true?0xFF00FF00:0xFFFF0000,
"%s", model[i].type);
if(i != LOGVALUES){
DrawString(100, 25+(i*15), model[i].isLogging==true?0xFF00FF00:0xFFFF0000,
"%i", model[i].value);
}
}
if(GetAsyncKeyState(VK_UP)&1) menuIndex--;
if(GetAsyncKeyState(VK_DOWN)&1) menuIndex++;
if(GetAsyncKeyState(VK_LEFT)&1) model[menuIndex].value-=incrementBy;
if(GetAsyncKeyState(VK_RIGHT)&1) model[menuIndex].value+=incrementBy;
if(GetAsyncKeyState(VK_DELETE)&1)model[menuIndex]
.isLogging = !model[menuIndex].isLogging;
if(GetAsyncKeyState(VK_INSERT)&1)model[menuIndex]
.value = 0;
if(GetAsyncKeyState(VK_NEXT)&1){
incrementBy *= 10;
if(incrementBy > 1000){
incrementBy = 1;
}
}
if(GetAsyncKeyState(VK_END)&1){
for(int i = 0; i < 4; i++){
model[i].isLogging = false;
}
}
if(model[LOGVALUES].isLogging == true){
model[LOGVALUES].isLogging = false;
g_uiTimer = GetTickCount() + 2000;
Log("Stride: %i | NumVerts: %i | PrimCount: %i | StartIndex: %i",
model[STRIDE].isLogging == true ? model[STRIDE].value : -1,
model[NUMVERTS].isLogging == true ? model[NUMVERTS].value : -1,
model[PRIMCOUNT].isLogging == true ? model[PRIMCOUNT].value : -1,
model[STARTINDEX].isLogging == true ? model[STARTINDEX].value : -1);
}
if(menuIndex > 4) menuIndex = 0;
if(menuIndex < 0) menuIndex = 4;
if(model[menuIndex].value < 0) model[menuIndex].value = 0;
}
//-------------------------------------------------
DWORD WINAPI MyThread(LPVOID)
{
DWORD VTable[3] = {0};
while(GetModuleHandle("d3d9.dll")==NULL){
Sleep(250);
}
DX_Init(VTable);
HOOK(EndScene,VTable[ES]);
HOOK(DrawIndexedPrimitive,VTable[DIP]);
HOOK(SetStreamSource,VTable[SSS]);
return 0;
}
bool WINAPI DllMain(HMODULE hDll, DWORD dwReason, LPVOID lpReserved)
{
if ( dwReason == DLL_PROCESS_ATTACH )
{
CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)MyThread, NULL,NULL,NULL);
}
return TRUE;
}
________________
-Отложи на послезавтра то что можешь сделать сегодня, и тогда у тебя появятся два свободных дня!
Последний раз редактировалось крайслер; 17.10.2012 в 14:07 .
17.10.2012, 14:15
#17
Разведчик
Регистрация: 06.09.2012
Сообщений: 23
Популярность: 488
Сказал(а) спасибо: 10
Поблагодарили 11 раз(а) в 10 сообщениях
Re: Не строится прэкт
17.10.2012, 15:19
#18
Разведчик
Регистрация: 06.09.2012
Сообщений: 23
Популярность: 488
Сказал(а) спасибо: 10
Поблагодарили 11 раз(а) в 10 сообщениях
Re: Не строится прэкт
17.10.2012, 18:22
#19
Старший сержант
Регистрация: 09.03.2012
Сообщений: 172
Популярность: 607
Сказал(а) спасибо: 368
Поблагодарили 112 раз(а) в 67 сообщениях
Re: Не строится прэкт
все это конец, это надо исход удалять в конец ошибки не как не убрать
и другие не строить иначе так и будет везде
17.10.2012, 19:36
#20
Разведчик
Регистрация: 06.09.2012
Сообщений: 23
Популярность: 488
Сказал(а) спасибо: 10
Поблагодарили 11 раз(а) в 10 сообщениях
Re: Не строится прэкт
17.10.2012, 22:35
#21
Разведчик
Регистрация: 22.02.2012
Сообщений: 49
Популярность: 2418
Сказал(а) спасибо: 123
Поблагодарили 79 раз(а) в 56 сообщениях
Re: Не строится прэкт
Цитата:
ну это супер пупер аим какой то)
________________
Украина не победима...
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Кто имел дело с ring0 пишите в лс...
17.10.2012, 23:33
#22
Разведчик
Регистрация: 07.04.2012
Сообщений: 34
Популярность: 718
Сказал(а) спасибо: 47
Поблагодарили 63 раз(а) в 49 сообщениях
Re: Не строится прэкт
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]
Делаю Музыкальные сеты
Последний раз редактировалось Re.PaCK; 17.10.2012 в 23:46 .
18.10.2012, 07:02
#23
Разведчик
Регистрация: 01.09.2012
Сообщений: 8
Популярность: 151
Сказал(а) спасибо: 1
Поблагодарили 7 раз(а) в 7 сообщениях
Re: Не строится прэкт
Цитата:
это ещё фигня..
ты не видел что немцы и тайцы вытворяют...
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]
Еще прочти пару тем, только потом спать, Mazafuckas! Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
18.10.2012, 10:03
#24
Разведчик
Регистрация: 06.09.2012
Сообщений: 23
Популярность: 488
Сказал(а) спасибо: 10
Поблагодарили 11 раз(а) в 10 сообщениях
Re: Не строится прэкт
Засрали всю тему ))может уже помогать начнем ?
18.10.2012, 11:35
#25
Старший сержант
Регистрация: 04.02.2011
Сообщений: 198
Популярность: 12244
Сказал(а) спасибо: 453
Поблагодарили 435 раз(а) в 242 сообщениях
Re: Не строится прэкт
________________
-Отложи на послезавтра то что можешь сделать сегодня, и тогда у тебя появятся два свободных дня!
18.10.2012, 12:22
#26
Старший сержант
Регистрация: 18.02.2011
Сообщений: 232
Популярность: 8824
Сказал(а) спасибо: 43
Поблагодарили 801 раз(а) в 240 сообщениях
Re: Не строится прэкт
Цитата:
это уже не аим...
18.10.2012, 15:52
#27
Разведчик
Регистрация: 22.02.2012
Сообщений: 49
Популярность: 2418
Сказал(а) спасибо: 123
Поблагодарили 79 раз(а) в 56 сообщениях
Re: Не строится прэкт
________________
Украина не победима...
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Кто имел дело с ring0 пишите в лс...
18.10.2012, 15:54
#28
Разведчик
Регистрация: 07.04.2012
Сообщений: 34
Популярность: 718
Сказал(а) спасибо: 47
Поблагодарили 63 раз(а) в 49 сообщениях
Re: Не строится прэкт
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]
Делаю Музыкальные сеты
18.10.2012, 18:51
#29
Фельдмаршал
Регистрация: 22.02.2011
Сообщений: 949
Популярность: 34698
Сказал(а) спасибо: 939
Поблагодарили 2,534 раз(а) в 911 сообщениях
Re: Не строится прэкт
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
18.10.2012, 18:52
#30
Разведчик
Регистрация: 22.02.2012
Сообщений: 49
Популярность: 2418
Сказал(а) спасибо: 123
Поблагодарили 79 раз(а) в 56 сообщениях
Re: Не строится прэкт
________________
Украина не победима...
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Кто имел дело с ring0 пишите в лс...
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 17:59 .