Guten Abend,
ich habe mich Gestern zum ersten mal mit dem Thema D3D Hooking befasst, und nach etwas googeln auch die richtigen Ansätze gefunden und verwirklicht.
Mein Problem ist wenn ich nur Ahornholz abfrage, wird in manchen Blickwinkeln Ingame Jute auch mit gefärbt.
was auch merkwürdig ist wenn ich nur
mache ohne es auf true zu setzen wieder, wird die ganze Welt durchsichtig ( nicht spielbar also ) wenn ich in richtung von Ahornholz gucke,dass dürfe doch eigentlich nicht passieren da ich ja nicht nur die Stride abfrage sondern alle 3 Werte ?
ich habe mich Gestern zum ersten mal mit dem Thema D3D Hooking befasst, und nach etwas googeln auch die richtigen Ansätze gefunden und verwirklicht.
Code:
#define Jute ((NumVertices == 261) && (primCount == 232) && (uiStride == 36))
#define Ahornholz ((NumVertices == 792) && (primCount == 816) && (uiStride == 36))
HRESULT WINAPI hkDrawIndexedPrimitive(LPDIRECT3DDEVICE9 pDevice, D3DPRIMITIVETYPE PrimType, INT BaseVertexIndex, UINT MinVertexIndex, UINT NumVertices, UINT startIndex, UINT primCount)
{
if (DIPInit)
{
GenerateShader(pDevice, &RedShader, 1.0f, 0.0f, 0.0f);
GenerateShader(pDevice, &GreenShader, 0.0f, 1.0f, 0.0f);
DIPInit = false;
}
LPDIRECT3DVERTEXBUFFER9 Stream_Data;
UINT uiOffset = 0;
UINT uiStride = 0;
pDevice->SetRenderState(D3DRS_SHADEMODE, D3DSHADE_GOURAUD);
if (pDevice->GetStreamSource(0, &Stream_Data, &uiOffset, &uiStride) == D3D_OK)
Stream_Data->Release();
if (Jute)
{
pDevice->SetRenderState(D3DRS_ZENABLE, false);
pDevice->SetPixelShader(RedShader);
oDrawIndexedPrimitive(pDevice, PrimType, BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
pDevice->SetRenderState(D3DRS_ZENABLE, true);
pDevice->SetPixelShader(RedShader);
}
if (Ahornholz)
{
pDevice->SetRenderState(D3DRS_ZENABLE, false);
pDevice->SetPixelShader(GreenShader);
oDrawIndexedPrimitive(pDevice, PrimType, BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
pDevice->SetRenderState(D3DRS_ZENABLE, true);
pDevice->SetPixelShader(GreenShader);
}
return oDrawIndexedPrimitive(pDevice, PrimType, BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
}
was auch merkwürdig ist wenn ich nur
Code:
if (Ahornholz)
{
pDevice->SetRenderState(D3DRS_ZENABLE, false);
pDevice->SetPixelShader(GreenShader);
oDrawIndexedPrimitive(pDevice, PrimType, BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
}