Code:
void speeds()
{
DWORD dwPlayerPtr = *(DWORD*)ADR_PLAYERPOINTER;
if(dwPlayerPtr != 0)
{
if(GetAsyncKeyState(VK_F5) &1<< 0xF)
{
*(float*)(OFS_Speed) = 0.0f;
}
if(GetAsyncKeyState(VK_F6) &1<< 0xF)
{
*(float*)(OFS_Speed) =97.0f;
}
if(GetAsyncKeyState(VK_F7) &1<< 0xF)
{
*(float*)(OFS_Speed) =150.0f;
[COLOR="red"]{[/COLOR][COLOR="Green"]// Vielleicht machst du daraus mal } o0[/COLOR]
if(GetAsyncKeyState(VK_F8) &1<< 0xF)
{
*(float*)(OFS_Speed) = 250.0f;
}
if(GetAsyncKeyState(VK_F9) &1<< 0xF)
{
*(float*)(OFS_Speed) = 350.0f;
[COLOR="Red"]{[/COLOR][COLOR="Green"]// Vielleicht machst du daraus mal } o0[/COLOR]
if(GetAsyncKeyState(VK_F10) &1<< 0xF)
{
*(float*)(OFS_Speed) = 500.0f;
}
if(GetAsyncKeyState(VK_F11) &1<< 0xF)
{
*(float*)(OFS_Speed) = 750.0f;
}
[COLOR="Red"]}[/COLOR][COLOR="SeaGreen"]// Fehlt.[/COLOR]
Btw der bessere Weg würde ungefähr so aussehen :
Code:
#define ADR_Speed 0x8F37B4
int speedstufe;
void speeds()
{
if( (GetAsyncKeyState(VK_F5)&1) && ( speedstufe < 7 ) )
{
speedstufe++;
}
if( (GetAsyncKeyState(VK_F6)&1) && ( speedstufe != 0 ) )
{
speedstufe--;
}
*(float*)(ADR_Speed) = (97 * speedstufe);
}
Mit F5 geht die Geschwindigkeit hoch - Mit F6 geht die Geschwindigkeit runter. :o
------------------------------------------------------------------------------
Zu dem Code:
Code:
VOID Hook(VOID)
{
hD3D9Dll = GetModuleHandleA("d3d9.dll");
do {
hEhSvc = GetModuleHandleA("EhSvc.dll");
Sleep(20);
}
while(!hD3D9Dll);
Sleep(100);
DWORD * VtablePtr = FindDevice((DWORD) hD3D9Dll, 0x128000);
if(VtablePtr == NULL)
{
MessageBoxA(NULL, "D3DDevice Pointer Not Found!", 0, MB_OK);
ExitProcess(0);
}
DWORD * VTable = 0;
*(DWORD *) &VTable = *(DWORD *) VtablePtr;
pReset = (oReset)cDetour((Dd)VTable[16],(Dd)myReset,5);
pPresent = (oPresent)cDetour((DWORD)VTable[17],(DWORD)myPresent,5);
pDrawIndexedPrimitive = (oDrawIndexedPrimitive) B8Detours((DWORD)VTable[82], (DWORD)myDrawIndexedPrimitive, 7);
while(1)
{
if(memcmp((void*)VTable[82],(void*)(PBYTE)"\x8B\xFF",2)== 0)
{
pDrawIndexedPrimitive = (oDrawIndexedPrimitive) B8Detours((DWORD)VTable[82], (DWORD)myDrawIndexedPrimitive, 7);
}
Sleep(458.50);
}
return ;
}
Erstmal muss ich sagen:
Quote:
Du hast DIP 2mal "erstellt" einmal in der schleife und einmal davor mach das DIP einfach mal NUR in die Present funk kurz vor ende und lass die schleife weg...
bei mir gehts so...
|
Stimmt nicht.
Er Hookt erst die DrawIndexedPrimitive und in der Schleife überprüft er ob die DrawIndexedPrimitive noch gehookt ist.
Falls sie nicht mehr gehookt ist , hookt er sie neu.
Ich frag mich zwar was dir das bringt:
Quote:
do {
hEhSvc = GetModuleHandleA("EhSvc.dll");
Sleep(20);
}
|
aber egal.
Versuch mal dieses Rehook:
Code:
do{
if(memcmp((void*)VTable[82],(void*)(PBYTE)"\x8B\xFF",2)== 0)
{
pDrawIndexedPrimitive = (oDrawIndexedPrimitive) B8Detours((DWORD)VTable[82], (DWORD)myDrawIndexedPrimitive, 7);
}
Sleep(2000);
}while(TRUE);
Habe es noch nicht getestet aber sollte klappen. :)