Code:
#include <windows.h>
#include <stdlib.h>
#include "main.h"
#include "d3d9.h"
int m_stride= 64;
int a=1;
float ScreenCenterX = 0.0f;//Horizontal Position
float ScreenCenterY = 0.0f;//Vertical Position
bool xhair = true;
bool chams = true;
int loggerstrideint = 64;
char loggerstridestr[5];
int loggernumvertint = 0;
char loggernumvertstr[5];
bool logger = false;
bool wallhack = false;
bool bigchams = true;
bool once = true;
D3DCOLOR redt = D3DCOLOR_XRGB( 255, 0, 0 );
LPDIRECT3DTEXTURE9 xxxPink = NULL;
UINT m_Stride;
LPDIRECT3DTEXTURE9 texRed,texGreen,texYellow,texOrange,texBlue,texCyan,texPink,texPurple,texWhite,texBlack,texOra,texLila,texTur;
const BYTE bPink[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,
0x80, 0x00, 0xFF, 0x00
};
//model rec start-->
#define DEFENDER_ASSAULT (( NumVertices == 10858 && primCount == 738) || (NumVertices == 9810 && primCount == 1174)||(NumVertices == 8752 && primCount == 1250)||(NumVertices == 7374 && primCount == 1500)||(NumVertices == 1884 && primCount == 612)||(NumVertices == 1818 && primCount == 965)||(NumVertices == 2231 && primCount == 282)||(NumVertices == 836 && primCount == 360)||(NumVertices == 866 && primCount == 28)||(NumVertices == 4015 && primCount == 675)||(NumVertices == 8878 && primCount == 116))
#define DEFENDER_ENGINEER ((NumVertices == 13537 && primCount == 1454) || (NumVertices == 1994 && primCount == 906) || (NumVertices == 1148 && primCount == 218) || (NumVertices == 279 && primCount == 64) || (NumVertices == 464 && primCount == 134) || (NumVertices == 464 && primCount == 134) || (NumVertices == 2899 && primCount == 2462) || (NumVertices == 1393 && primCount == 466) || (NumVertices == 1093 && primCount == 88) || (NumVertices == 1015 && primCount == 481) || (NumVertices == 13537 && primCount == 1454) || (NumVertices == 12015 && primCount == 950) || (NumVertices == 8082 && primCount == 240) || (NumVertices == 3022 && primCount == 876) || (NumVertices == 9439 && primCount == 1227) || (NumVertices == 10681 && primCount == 517) || (NumVertices == 8456 && primCount == 412) || (NumVertices == 7129 && primCount == 612))
#define DEFENDER_MEDIC ((NumVertices == 13972 && primCount == 930) || (NumVertices == 577 && primCount == 436) || (NumVertices == 8070 && primCount == 1206) || (NumVertices == 12831 && primCount == 895) || (NumVertices == 11324 && primCount == 744) || (NumVertices == 10664 && primCount == 1087) || (NumVertices == 11459 && primCount == 160) || (NumVertices == 3519 && primCount == 1142) || (NumVertices == 6169 && primCount == 253) || (NumVertices == 6687 && primCount == 612) )
#define DEFENDER_RECON ((NumVertices == 14077 && primCount == 436) || (NumVertices == 12227 && primCount == 1717) || (NumVertices == 971 && primCount == 481) || (NumVertices == 3442 && primCount == 802) || (NumVertices == 2824 && primCount == 2462) || (NumVertices == 1319 && primCount == 88) || (NumVertices == 1241 && primCount == 442) || (NumVertices == 6440 && primCount == 1012) || (NumVertices == 4760 && primCount == 772) || (NumVertices == 2345 && primCount == 328) || (NumVertices == 5463 && primCount == 1010) || (NumVertices == 9423 && primCount == 252))
#define ATTACKER_ASSAULT ((NumVertices == 2991 && primCount == 1052) || (NumVertices == 1327 && primCount == 168) || (NumVertices == 8180 && primCount == 281) || (NumVertices == 2073 && primCount == 1105) || (NumVertices == 3132 && primCount == 160) || (NumVertices == 6876 && primCount == 1374) || (NumVertices == 9229 && primCount == 995) || (NumVertices == 8398 && primCount == 165) || (NumVertices == 4447 && primCount == 1326) || (NumVertices == 5399 && primCount == 1310) || (NumVertices == 2046 && primCount == 700) || (NumVertices == 4707 && primCount == 2448) || (NumVertices == 681 && primCount == 28) || (NumVertices == 1200 && primCount == 360) || (NumVertices == 1165 && primCount == 17) || (NumVertices == 1447 && primCount == 149) )
#define ATTACKER_ENGINEER ((NumVertices == 8332 && primCount == 1052) || (NumVertices == 8967 && primCount == 706) || (NumVertices == 12486 && primCount == 365) || (NumVertices == 3701 && primCount == 160) || (NumVertices == 11958 && primCount == 958) || (NumVertices == 2271 && primCount == 1112) || (NumVertices == 3563 && primCount == 57) || (NumVertices == 12785 && primCount == 142) || (NumVertices == 8967 && primCount == 706) || (NumVertices == 9945 && primCount == 1258) || (NumVertices == 7155 && primCount == 346) || (NumVertices == 11075 && primCount == 1326) || (NumVertices == 3488 && primCount == 186) || (NumVertices == 1573 && primCount == 1856) )
#define ATTACKER_MEDIC ((NumVertices == 11098 && primCount == 1065) || (NumVertices == 2581 && primCount == 450) || (NumVertices == 2019 && primCount == 2448) || (NumVertices == 2312 && primCount == 204) || (NumVertices == 3460 && primCount == 518) || (NumVertices == 2883 && primCount == 466) || (NumVertices == 10047 && primCount == 320) || (NumVertices == 6639 && primCount == 228) || (NumVertices == 5505 && primCount == 1260) || (NumVertices == 6339 && primCount == 902) || (NumVertices == 4525 && primCount == 1262) || (NumVertices == 8075 && primCount == 1326) || (NumVertices == 3395 && primCount == 1052) || (NumVertices == 9185 && primCount == 1132))
#define ATTACKER_RECON ((NumVertices == 14077 && primCount == 436) || (NumVertices == 12227 && primCount == 1717) || (NumVertices == 971 && primCount == 481) || (NumVertices == 3442 && primCount == 802) || (NumVertices == 2824 && primCount == 2462) || (NumVertices == 1319 && primCount == 88) || (NumVertices == 1241 && primCount == 442) || (NumVertices == 6440 && primCount == 1012) || (NumVertices == 4760 && primCount == 772) || (NumVertices == 2345 && primCount == 328) || (NumVertices == 5463 && primCount == 1010) || (NumVertices == 9423 && primCount == 252))
#define Team1 (ATTACKER_ASSAULT) || (ATTACKER_ENGINEER) || (ATTACKER_MEDIC) || (ATTACKER_RECON)
#define Team2 (DEFENDER_ASSAULT) || (DEFENDER_ENGINEER) || (DEFENDER_MEDIC) || (DEFENDER_RECON)
#define Teamall (Team1 || Team2)
#define ammobox (m_Stride == 32 && (NumVertices == 592 && primCount == 277))
#define tow (m_Stride == 48 && (NumVertices == 11215 && primCount == 6561))
#define mg (m_Stride == 48 && (NumVertices == 8107 && primCount == 1877) || m_Stride == 48 && (NumVertices == 3257 && primCount == 1886) || m_Stride == 48 && (NumVertices == 13798 && primCount == 7226))
#define tank (m_Stride == 64 && (NumVertices == 1899 && primCount == 867) || m_Stride == 64 && (NumVertices == 1282 && primCount == 990) || m_Stride == 64 && (NumVertices == 27096 && primCount == 14941) || m_Stride == 64 && (NumVertices == 27096 && primCount == 627))
#define apc (m_Stride == 48 && (NumVertices == 24978 && primCount == 15289) || m_Stride == 48 && (NumVertices == 764 && primCount == 740))
#define heli (m_Stride == 48 && (NumVertices == 29045 && primCount == 9738) || m_Stride == 48 && (NumVertices == 29045 && primCount == 4597) || m_Stride == 48 && (NumVertices == 294 && primCount == 360) || m_Stride == 48 && (NumVertices == 42110 && primCount == 12604) || m_Stride == 48 && (NumVertices == 42110 && primCount == 4235) || m_Stride == 48 && (NumVertices == 42110 && primCount == 2958) || m_Stride == 48 && (NumVertices == 42110 && primCount == 817))
#define vehicles (apc || heli || tank || ammobox || tow || mg)
#define D3DHOOK_TEXTURES //comment this to disable texture hooking
LPD3DXFONT m_font;
void DisplayText()
{
// Create a colour for the text - in this case blue
D3DCOLOR fontColor = D3DCOLOR_ARGB(255,0,0,255);
D3DCOLOR offColor = D3DCOLOR_ARGB(255,255,0,0);
D3DCOLOR onColor = D3DCOLOR_ARGB(255,0,255,0);
// Create a rectangle to indicate where on the screen it should be drawn
RECT rct;
rct.left=2;
rct.right=780;
rct.top=10;
rct.bottom=rct.top+20;
// Draw some text
m_font->DrawText(NULL, "Pohead Hax v15.1 Injected Successfully! - Note: Hack hotkeys will only work once in a server!", -1, &rct, 0, fontColor );
rct.top=100;
rct.bottom=rct.top+20;
if (logger) {
m_font->DrawText(NULL, "D3D Logger = ON (press HOME to turn off)", -1, &rct, 0, onColor );
rct.top=120;
rct.bottom=rct.top+20;
m_font->DrawText(NULL, "Stride: ", -1, &rct, 0, onColor );
rct.left=65;
itoa(loggerstrideint, loggerstridestr, 5);
m_font->DrawText(NULL, loggerstridestr, -1, &rct, 0, offColor );
rct.top=140;
rct.bottom=rct.top+20;
rct.left=2;
m_font->DrawText(NULL, "Numvert: ", -1, &rct, 0, onColor );
rct.left=65;
itoa(loggernumvertint, loggernumvertstr, 5);
m_font->DrawText(NULL, loggernumvertstr, -1, &rct, 0, offColor );
}
else
{
//for now, logger disabled
// m_font->DrawText(NULL, "D3D Logger = OFF (press HOME to turn on - advanced users only)", -1, &rct, 0, offColor );
}
rct.top=380;
rct.bottom=rct.top+20;
if (xhair) {
m_font->DrawText(NULL, "Crosshair = ON (press DELETE to toggle)", -1, &rct, 0, onColor );
}
else
{
m_font->DrawText(NULL, "Crosshair = OFF (press DELETE to toggle)", -1, &rct, 0, offColor );
}
rct.top=400;
rct.bottom=rct.top+20;
if (chams){
m_font->DrawText(NULL, "Chams = ON (press INSERT to toggle)", -1, &rct, 0, onColor );
}
else {
m_font->DrawText(NULL, "Chams = OFF (press INSERT to toggle)", -1, &rct, 0, offColor );
}
rct.top=420;
rct.bottom=rct.top+20;
if (wallhack){
m_font->DrawText(NULL, "Wallhack = ON (press END to toggle)", -1, &rct, 0, onColor );
}
else {
m_font->DrawText(NULL, "Wallhack = OFF (press END to toggle)", -1, &rct, 0, offColor );
}
}
HRESULT GenerateTexture(IDirect3DDevice9 *m_pD3Ddev, IDirect3DTexture9 **ppD3Dtex, DWORD colour32)
{
if( FAILED(m_pD3Ddev->CreateTexture(8, 8, 1, 0, D3DFMT_A4R4G4B4, D3DPOOL_MANAGED, ppD3Dtex, NULL)) )
return E_FAIL;
WORD colour16 = ((WORD)((colour32>>28)&0xF)<<12)
|(WORD)(((colour32>>20)&0xF)<<8)
|(WORD)(((colour32>>12)&0xF)<<4)
|(WORD)(((colour32>>4)&0xF)<<0);
D3DLOCKED_RECT d3dlr;
(*ppD3Dtex)->LockRect(0, &d3dlr, 0, 0);
WORD *pDst16 = (WORD*)d3dlr.pBits;
for(int xy=0; xy < 8*8; xy++)
*pDst16++ = colour16;
(*ppD3Dtex)->UnlockRect(0);
//f
return S_OK;
}
HRESULT CD3DManager::Initialize()
{
/*
initialize Resources such as textures
(managed and unmanaged [D3DPOOL]),
vertex buffers, and other D3D rendering resources
...
m_pD3Ddev->CreateTexture(..., ..., &m_pD3Dtexture);
*/
return S_OK;
}
HRESULT APIENTRY hkIDirect3DDevice9::BeginScene()
{
if (once) {
once = false;
D3DXCreateFont( m_pD3Ddev, 20, 0, FW_BOLD, 0, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, TEXT("Arial"), &m_font );
GenerateTexture(m_pD3Ddev, &texGreen, D3DCOLOR_ARGB(255,0,255,0));
GenerateTexture(m_pD3Ddev, &texRed, D3DCOLOR_ARGB(255,255,0,0));
GenerateTexture(m_pD3Ddev, &texBlue, D3DCOLOR_ARGB(255,0,0,255));
GenerateTexture(m_pD3Ddev, &texOrange, D3DCOLOR_ARGB(255,255,165,0));
GenerateTexture(m_pD3Ddev, &texYellow, D3DCOLOR_ARGB(255,255,255,0));
GenerateTexture(m_pD3Ddev, &texPink, D3DCOLOR_ARGB(255,255,192,203));
GenerateTexture(m_pD3Ddev, &texCyan, D3DCOLOR_ARGB(255,0,255,255));
GenerateTexture(m_pD3Ddev, &texPurple, D3DCOLOR_ARGB(255,160,32,240));
GenerateTexture(m_pD3Ddev, &texBlack, D3DCOLOR_ARGB(255,0,0,0));
GenerateTexture(m_pD3Ddev, &texWhite, D3DCOLOR_ARGB(255,255,255,255));
GenerateTexture(m_pD3Ddev, &texLila,D3DCOLOR_ARGB(255,138,43,226));
GenerateTexture(m_pD3Ddev, &texOra,D3DCOLOR_ARGB(255,255,140,0));
}
return m_pD3Ddev->BeginScene();
}
HRESULT APIENTRY hkIDirect3DDevice9::DrawIndexedPrimitive(D3DPRIMITIVETYPE Type,INT BaseVertexIndex,UINT MinVertexIndex,UINT NumVertices,UINT startIndex,UINT primCount)
{
//HERE DO SHIZNIT
if( GetAsyncKeyState( VK_INSERT ) & 1 )
{
if (chams) {
chams = false;
}
else if (!logger) {
chams = true;
}
}
if( GetAsyncKeyState( VK_DELETE ) & 1 )
{
if (xhair)
{
xhair = false;
}
else {
xhair = true;
}
}
if( GetAsyncKeyState( VK_END ) & 1 )
{
if (wallhack)
{
wallhack = false;
}
else {
wallhack = true;
}
}
if( GetAsyncKeyState( VK_HOME ) & 1 )
{
if (logger)
{
loggerstrideint = 64; //reset back to proper value for wallhack
logger = false;
}
else {
loggerstrideint = 64;
chams = false;
wallhack = false;
xhair = false;
//logger = true; disabled for now
}
}
if (logger && m_Stride == loggerstrideint && NumVertices == loggernumvertint)
{
DWORD dwOldZEnable = D3DZB_TRUE;
if (wallhack) {
m_pD3Ddev->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable);
m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);
for(int i = 0; i <6; i++)
{
m_pD3Ddev->SetTexture(i,texRed); //0 should be i if enabled
}
m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
}
m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, dwOldZEnable);
for(int i = 0; i <6; i++)
{
m_pD3Ddev->SetTexture(i,texYellow);
}
return m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
}
else if (chams) {
if(m_Stride == 64)
{
DWORD dwOldZEnable = D3DZB_TRUE;
if (wallhack) {
m_pD3Ddev->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable);
m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);
for(int i = 0; i <6; i++)
{
m_pD3Ddev->SetTexture(i,texRed); //0 should be i if enabled
}
m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
}
m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, dwOldZEnable);
for(int i = 0; i <6; i++)
{
m_pD3Ddev->SetTexture(i,texYellow);
}
return m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
}
else if (m_Stride = 64 && Teamall) {
DWORD dwOldZEnable = D3DZB_TRUE;
m_pD3Ddev->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable);
m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);
for(int i = 0; i <6; i++)
{
m_pD3Ddev->SetTexture(i,texRed);
}
m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, dwOldZEnable);
for(int i = 0; i <6; i++)
{
m_pD3Ddev->SetTexture(i,texYellow);
}
return m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
}
else if (vehicles)
{
DWORD dwOldZEnable = D3DZB_TRUE;
m_pD3Ddev->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable);
m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);
for(int i = 0; i <6; i++)
{
m_pD3Ddev->SetTexture(i,texGreen);
}
m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, dwOldZEnable);
for(int i = 0; i <6; i++)
{
m_pD3Ddev->SetTexture(i,texGreen);
}
return m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
}
else
{
return m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
}
}
else {
return m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
}
//d
//if (Team1 || Team2)
//{
// m_pD3Ddev->SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID);
//m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, false);
// m_pD3Ddev->SetTexture(0, texRed);
// m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
// m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, true);
// m_pD3Ddev->SetTexture(0, texBlue);
// return m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
//}
}
HRESULT APIENTRY hkIDirect3DDevice9::EndScene()
{
if( GetAsyncKeyState( VK_NUMPAD4 ) & 1 )
{
loggerstrideint = loggerstrideint++;
}
if( GetAsyncKeyState( VK_NUMPAD1 ) & 1 )
{
loggerstrideint = loggerstrideint--;
}
if( GetAsyncKeyState( VK_NUMPAD5 ) & 1 )
{
loggernumvertint = loggernumvertint++;
}
if( GetAsyncKeyState( VK_NUMPAD2 ) & 1 )
{
loggernumvertint = loggernumvertint--;
}
DisplayText();
//croshair
if (xhair) {
D3DRECT rec2 = {ScreenCenterX-20, ScreenCenterY, ScreenCenterX+ 20, ScreenCenterY+2};
D3DRECT rec3 = {ScreenCenterX, ScreenCenterY-20, ScreenCenterX+ 2,ScreenCenterY+20};
m_pD3Ddev->Clear(1, &rec2, D3DCLEAR_TARGET,redt, 0, 0);
m_pD3Ddev->Clear(1, &rec3, D3DCLEAR_TARGET,redt, 0, 0);
//end crosshair
}
//chams
if (chams) {
if(xxxPink == NULL) D3DXCreateTextureFromFileInMemory(m_pD3Ddev, (LPCVOID)&bPink, 58, &xxxPink);
}
//end chams code
return m_pD3Ddev->EndScene();
}
HRESULT APIENTRY hkIDirect3DDevice9::SetStreamSource(UINT StreamNumber,IDirect3DVertexBuffer9* pStreamData,UINT OffsetInBytes,UINT Stride)
{
if (StreamNumber==0)
{
m_Stride = Stride;
}
return m_pD3Ddev->SetStreamSource(StreamNumber, pStreamData,OffsetInBytes, Stride);
}
Some1 has to compile this hack.