D3D, believe it or not you can color anything in, you want to make a fun little project?
Color the Wallz in Yellow , Red , Green Whatever!
How you say?
Code:
Globals: int colored walls;
Code:
If(colored walls)//your bool statement in globals
texnum = (nNumVertices*100000)+nPrimitiveCount;//having it in texnums never hurts, unless its just a stride
if(m_Stride == model_rec)//Model Recognition, this recognizes what you want to color in, so we would have to get a Model Recognition logger, go in game and find the Stride for the wall/floor
{
{
pDevice->SetTexture( 0, Red ); //we colored it red. How'd we get to color it check out the next shizznet under this, chams..
}
return pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount);
}
Chams however work differently, you have point out whether the person is behind the wall or not, and when in front, and then give it colors... when behind something.
Here, this is how i color in my chams.
SO it would be:
Code:
//==================================Defines============================================ #define ForceRecon (nNumVertices == 83 && nPrimitiveCount == 137 || nNumVertices == 79 && nPrimitiveCount == 105 || nNumVertices == 142 && nPrimitiveCount == 174 || nNumVertices == 278 && nPrimitiveCount == 462 || nNumVertices == 263 && nPrimitiveCount == 290 || nNumVertices == 316 && nPrimitiveCount == 556) #define ForceReconAddons (nNumVertices == 432 && nPrimitiveCount == 354 || nNumVertices == 144 && nPrimitiveCount == 136 || nNumVertices == 299 && nPrimitiveCount == 311 || nNumVertices == 167 && nPrimitiveCount == 252 || nNumVertices == 298 && nPrimitiveCount == 506 || nNumVertices == 168 && nPrimitiveCount == 254 || nNumVertices == 860 && nNumVertices == 778 || nNumVertices == 648 && nPrimitiveCount == 710 || nNumVertices == 113 && nPrimitiveCount == 189 || nNumVertices == 142 && nPrimitiveCount == 172 || nNumVertices == 87 && nPrimitiveCount == 90 || nNumVertices == 79 && nPrimitiveCount == 105 || nNumVertices == 84 && nPrimitiveCount == 110 || nNumVertices == 70 && nPrimitiveCount == 70 || nNumVertices == 860 && nPrimitiveCount == 778 || nNumVertices == 85 && nPrimitiveCount == 137) #define Mulan (nNumVertices == 118 && nPrimitiveCount == 126|| nNumVertices == 121 && nPrimitiveCount == 180|| nNumVertices == 124 && nPrimitiveCount == 126|| nNumVertices == 295 && nPrimitiveCount == 482|| nNumVertices == 299 && nPrimitiveCount == 452|| nNumVertices == 474 && nPrimitiveCount == 728) #define MulanAddons (nNumVertices == 162 && nPrimitiveCount == 200|| nNumVertices == 120 && nPrimitiveCount == 188|| nNumVertices == 167 && nPrimitiveCount == 276|| nNumVertices == 108 && nPrimitiveCount == 198|| nNumVertices == 512 && nPrimitiveCount == 728|| nNumVertices == 790 && nPrimitiveCount == 881|| nNumVertices == 619 && nPrimitiveCount == 800|| nNumVertices == 399 && nPrimitiveCount == 532|| nNumVertices == 402 && nPrimitiveCount == 580|| nNumVertices == 102 && nPrimitiveCount == 170|| nNumVertices == 125 && nPrimitiveCount == 98|| nNumVertices == 116 && nPrimitiveCount == 128|| nNumVertices == 160 && nPrimitiveCount == 174) //========================================================
Globals: We have to declare something , so the codes know what we're talking about
:
Code:
int m_Stride; int texnum; int nNumVertices; int nPrimitiveCount; LPDIRECT3DTEXTURE8 Red; LPDIRECT3DTEXTURE8 Yellow; LPDIRECT3DTEXTURE8 Green; LPDIRECT3DTEXTURE8 Blue; LPDIRECT3DTEXTURE8 Purple; LPDIRECT3DTEXTURE8 Orange; LPDIRECT3DTEXTURE8 Pink; LPDIRECT3DTEXTURE8 White; LPDIRECT3DTEXTURE8 Black; bool chams = false; bool Color = true;
So to demonstrate how to generate these colors we would use this function:
Code:
//======================================================================================================================================================================================================================================================================================================================//
HRESULT GenerateTexture(IDirect3DDevice8 *pD3Ddev, IDirect3DTexture8 **ppD3Dtex, DWORD colour32)
{
if( FAILED(pD3Ddev->CreateTexture(8, 8, 1, 0, D3DFMT_A4R4G4B4, D3DPOOL_MANAGED, ppD3Dtex)) )
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);
return S_OK;
}
//==============================================================================================================
But wait theres more, you generate the colors but we still dont have it..
this is where
Code:
bool Color = true;
In Endscene, which is another D3D function we must define these colors :P
Code:
typedef HRESULT ( WINAPI* oEndScene ) ( LPDIRECT3DDEVICE8 pDevice );
oEndScene pEndScene;
HRESULT WINAPI myEndScene(LPDIRECT3DDEVICE8 pDevice)
{
if(Color)
{
GenerateTexture(pDevice, &Red, D3DCOLOR_ARGB (255 , 255 , 0 , 0 ));
GenerateTexture(pDevice, &Yellow, D3DCOLOR_ARGB (255 , 255 , 255 , 0 ));
GenerateTexture(pDevice, &Green, D3DCOLOR_ARGB (255 , 0 , 255 , 0 ));
GenerateTexture(pDevice, &Blue, D3DCOLOR_ARGB (255 , 0 , 0 , 255 ));
GenerateTexture(pDevice, &Purple, D3DCOLOR_ARGB (255 , 102 , 0 , 153 ));
GenerateTexture(pDevice, &Pink, D3DCOLOR_ARGB (255 , 255 , 20 , 147 ));
GenerateTexture(pDevice, &Orange, D3DCOLOR_ARGB (255 , 255 , 165 , 0 ));
GenerateTexture(pDevice, &Black, D3DCOLOR_ARGB (255 , 0 , 0 , 0 ));
GenerateTexture(pDevice, &White, D3DCOLOR_ARGB (255 , 255 , 255 , 255 ));
Color=false;
}
return pEndScene(pDevice);
}
Btw we will be adding more to endscene.
Now where do we draw this? I might have not pointed this out before, but we would color shit in a D3D Function, known as DrawIndexedPrimitive. All the drawing takes place, like our Colored floors and walls... :P
Cham Code :
Code:
typedef HRESULT ( WINAPI* oDrawIndexedPrimitive ) ( LPDIRECT3DDEVICE8 pDevice, D3DPRIMITIVETYPE pType, UINT nMinIndex, UINT nNumVertices, UINT nStartIndex, UINT nPrimitiveCount );
oDrawIndexedPrimitive pDrawIndexedPrimitive;
HRESULT WINAPI myDrawIndexedPrimitive(LPDIRECT3DDEVICE8 pDevice, D3DPRIMITIVETYPE pType, UINT nMinIndex, UINT nNumVertices, UINT nStartIndex, UINT nPrimitiveCount)
{
if(chams)
{
texnum = (nNumVertices*100000)+nPrimitiveCount;
if(m_Stride==40 &&
(texnum==34900580)|| // Delta Force Head
(texnum==36100604)|| // Spetsnaz Head
(texnum==38000658)|| // Spetsnaz Legs
(texnum==18300268)|| // Spetsnaz Body
(texnum==36200604)|| // GIGN Head
(texnum==21200306)|| // GIGN Body
(texnum==35500568)|| // GSG9 Head
(texnum==2200024)|| // GSG9 Bangs
(texnum==8800105)|| // GSG9 Feet
(texnum==36900650)|| // GSG9 Legs
(texnum==19600314)|| // GSG9 Body
(texnum==36700612)|| // SAS Head
(texnum==8500105)|| // SAS Feet
(texnum==37000650)|| // SAS Legs
(texnum==18000274)|| // SAS Body
(texnum==35300556)|| // KSF Head
(texnum==7500121)|| // KSF Arms
(texnum==9200115)|| // KSF Feet
(texnum==12400168)|| // KSF Hands
(texnum==30100522)|| // KSF Legs
(texnum==18700288)|| // KSF Body
(texnum==40900594)|| // ARTC Head
(texnum==11700190)|| // ARTC Arms
(texnum==9100118)|| // ARTC Feet
(texnum==12500170)|| // ARTC Hands
(texnum==37000634)|| // ARTC Legs
(texnum==41700516)|| // ARTC Body
(texnum==19400260)|| // ROKMC Body
(texnum==37900592)|| // ROKMC Head
(texnum==36500642)|| // ROKMC Legs
(texnum==44800776)|| // SRG Head
(texnum==15900200)|| // SRG Left Arm
(texnum==10500168)|| // SRG Right Arm
(texnum==80401016)|| // SRG Body
(texnum==10000121)|| // SRG Feet
(texnum==13200180)|| // SRG Hands
(ForceRecon)|| // ForceRecon
(Mulan)||
(texnum==33800534)) // SRG Leg
{
pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);
pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_NEVER);
pDevice->SetTexture(0,Yellow);
pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount);
pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);
pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_LESSEQUAL);
pDevice->SetTexture(0,Red);
}
if (nNumVertices == 213 && nPrimitiveCount == 174) // M67 Grenade =============== //
{
pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);
pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_NEVER);
pDevice->SetTexture(0,Red);
pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount);
pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);
pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_LESSEQUAL);
pDevice->SetTexture(0,Green);
}
if (nNumVertices == 158 && nPrimitiveCount == 131) // Flashbang =============== //
{
pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);
pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_NEVER);
pDevice->SetTexture(0,Red);
pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount);
pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);
pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_LESSEQUAL);
pDevice->SetTexture(0,Green);
}
if (nNumVertices == 171 && nPrimitiveCount == 143) // Smoke Grenade =============== //
{
pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);
pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_NEVER);
pDevice->SetTexture(0,Red);
pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount);
pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);
pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_LESSEQUAL);
pDevice->SetTexture(0,Blue);
}
if (nNumVertices == 271 && nPrimitiveCount == 257) // VX Grenade =============== //
{
pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);
pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_NEVER);
pDevice->SetTexture(0,Red);
pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount);
pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);
pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_LESSEQUAL);
pDevice->SetTexture(0,Blue);
}
if (nNumVertices == 338 && nPrimitiveCount == 339) // RGD-5 Grenade =============== //
{
pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);
pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_NEVER);
pDevice->SetTexture(0,Red);
pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount);
pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);
pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_LESSEQUAL);
pDevice->SetTexture(0,Yellow);
}
if (m_Stride==40 && // Equipment =============== //
(texnum==13200212)|| // Delta Force Helmet
(texnum==13200212)|| // Delta Force Helmet 2
(texnum==34700538)|| // Delta Force Gas Mask
(texnum==19500352)|| // Delta Force Balaclava
(texnum==84900778)|| // Delta Force Clan BDU
(texnum==27500442)|| // Delta Force Body Armor
(texnum==42800576)|| // Delta Force Body Armor 2
(texnum==52100658)|| // Delta Force Tactical Vest
(texnum==12200196)|| // Spetsnaz Helmet
(texnum==27100464)|| // Spetsnaz Gas Mask
(texnum==33600552)|| // Spetsnaz Body Armor
(texnum==44100646)|| // Spetsnaz Tactical Vest
(texnum==17800292)|| // GIGN Red Bandana
(texnum==21300290)|| // GIGN Helmet
(texnum==2800036)|| // GIGN Helmet Lens
(texnum==35700558)|| // GIGN Gas Mask
(texnum==22100396)|| // GIGN Balaclava
(texnum==29700492)|| // GIGN Body Armor
(texnum==11200188)|| // ROKMC Beret
(texnum==12000194)|| // ROKMC Helmet
(texnum==29800450)|| // ROKMC Gas Mask
(texnum==27100394)|| // ROKMC Body Armor
(texnum==28700374)|| // ROKMC X Harness
(texnum==34700470)|| // ROKMC X Harness
(texnum==5100056)|| // ROKMC Pouch
(texnum==9900163)|| // ROKMC Left Arm
(texnum==18300163)|| // ROKMC Right Arm
(texnum==16400266)|| // GSG9 Red Bandana
(texnum==16200243)|| // GSG9 Helmet
(texnum==31900466)|| // GSG9 Gas Mask
(texnum==19300342)|| // GSG9 Balaclava
(texnum==83600752)|| // GSG9 Clan BDU
(texnum==33400477)|| // GSG9 Body Armor
(texnum==10500163)|| // GSG9 Rolled Up Sleeves
(texnum==38100666)|| // GSG9 Tactical Knee Pads
(texnum==9600172)|| // SAS Boonie Hat
(texnum==14200236)|| // SAS Helmet
(texnum==37800552)|| // SAS Gas Mask
(texnum==28100486)|| // SAS Balaclava
(texnum==62400752)|| // SAS Clan BDU
(texnum==27900456)|| // SAS Body Armor
(texnum==45700654)|| // SAS Tactical Vest
(texnum==39800532)|| // SAS Tactical Vest 2
(texnum==9200100)|| // SAS Holster
(texnum==4800040)|| // SAS Magazine Pouch
(texnum==4000044)|| // SAS Pouch
(texnum==6500110) || // KSF Boonie Hat
(texnum==12900208)|| // KSF Helmet
(texnum==29600448)|| // KSF Gas Mask
(texnum==31100398)|| // KSF Sunglasses
(texnum==84700776)|| // KSF Clan BDU
(texnum==600004)|| // KSF Clan BDU Logo
(texnum==36500606)|| // KSF Body Armor
(texnum==63100646)|| // KSF Tactical Vest
(texnum==19800163)|| // KSF Rolled Up Sleeves
(texnum==7000066)|| // KSF Holster
(texnum==10400190)|| // SRG Beret
(texnum==23800294)|| // SRG Deer Head
(texnum==11600180)|| // SRG NIJ IIIA Helmet
(texnum==17100278)|| // SRG Red Bandana
(texnum==14600198)|| // SRG Battle Cap
(texnum==18200266)|| // SRG Helmet
(texnum==19100106)|| // SRG Gas Mask
(texnum==54300350)|| // SRG Sunglasses
(texnum==30800380)|| // SRG Mid Class Sunglasses
(texnum==79300995)|| // SRG Clan BDU 1
(texnum==13300138)|| // SRG Clan BDU 2
(texnum==300001)|| // SRG Clan BDU 3
(texnum==1200012)|| // SRG Clan BDU Logo
(texnum==10900110)|| // SRG Bulletproof Vest
(texnum==6200064)|| // SRG Holster
(ForceReconAddons)||
(MulanAddons)||
(texnum==22700250)) // SRG Pouch
{
pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);
pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_NEVER);
pDevice->SetTexture(0,Green);
pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount);
pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);
pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_LESSEQUAL);
pDevice->SetTexture(0,Blue);
}
if (m_Stride==40 && // Guns =============== //
(texnum==187200968)|| // GALIL
(texnum==187200968)|| // GALIL 2
(texnum==149701124)|| // UZI
(texnum==193701304)|| // M249
(texnum==232501431)|| // SIG551
(texnum==161500751)|| // FA-MAS
(texnum==107400724)|| // FR-F2
(texnum==141600900)|| // AN94
(texnum==145900805)|| // G36C
(texnum==42200339)|| // K1
(texnum==23400116)|| // K1 2
(texnum==17500073)|| // K1 3
(texnum==3200012)|| // K1 4
(texnum==2300012)|| // K1 5
(texnum==71900459)|| // MP5
(texnum==1800008)|| // MP5 2
(texnum==20300084)|| // MP5 3
(texnum==16700083)|| // MP5 4
(texnum==79100469)|| // M4A1
(texnum==12000044)|| // M4A1 2
(texnum==16800062)|| // M4A1 3
(texnum==2400008)|| // M4A1 4
(texnum==600002)|| // M4A1 5
(texnum==12800050)|| // M4A1 6
(texnum==2600010)|| // M4A1 7
(texnum==4200014)|| // M4A1 8
(texnum==1400008)|| // M4A1 9
(texnum==80600442)|| // M16A2
(texnum==13400052)|| // M16A2 2
(texnum==17600066)|| // M16A2 3
(texnum==5400018)|| // M16A2 4
(texnum==46200348)|| // STEYR_AUG
(texnum==27000133)|| // STEYR_AUG 2
(texnum==4100025)|| // STEYR_AUG 3
(texnum==1200006)|| // STEYR_AUG 4
(texnum==400002)|| // STEYR_AUG 5
(texnum==46800367)|| // PSG-1
(texnum==9600042)|| // PSG-1 2
(texnum==18800092)|| // PSG-1 3
(texnum==16900071)|| // PSG-1 4
(texnum==3400012)|| // PSG-1 5
(texnum==800004)|| // PSG-1 6
(texnum==40500383)|| // K2
(texnum==15800089)|| // K2 2
(texnum==2200012)|| // K2 3
(texnum==7000034)|| // K2 4
(texnum==60700349)|| // P90
(texnum==5500033)|| // P90 2
(texnum==47700227)|| // P90 3
(texnum==10300047)|| // P90 4
(texnum==3800014)|| // P90 5
(texnum==50300349)|| // AK-74
(texnum==14700071)|| // AK-74 2
(texnum==13100061)|| // AK-74 3
(texnum==194501145)|| // MG36
(texnum==116000670)|| // DESERT EAGLE
(texnum==182101089)|| // MR73
(texnum==62500454)|| // REMINGTON M870
(texnum==95200571)|| // BENELLI M1
(texnum==40700334)|| // GLOCK 23
(texnum==71500449)|| // BERETTA M92F
(texnum==11000044)|| // BERETTA M92F 2
(texnum==16500075)|| // BERETTA M92F 3
(texnum==4400020)|| // BERETTA M92F 4
(texnum==2800014)|| // BERETTA M92F 5
(texnum==92000543)|| // COLT 45
(texnum==239001276)) // DRAGONUV
{
pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);
pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_NEVER);
pDevice->SetTexture(0,Blue);
pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount);
pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);
pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_LESSEQUAL);
pDevice->SetTexture(0,Green);
}
}
return pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount);
}
Now ill be explaining a lot... :P
Remember these:
Code:
int m_Stride; int texnum; int nNumVertices; int nPrimitiveCount; bool chams = false;
The first 4 are different types of model recognitions... Every model, like a player body has a stride, or a Numvertices or Primcount. In Soldierfront case, the Stride is 40, when the Stride is 40, everything would be chammed... but we use numvertices and primcount to point out the things we want colored in. and in all of that, we simplify it to texnums
So texnum is
Code:
texnum = (nNumVertices*100000)+nPrimitiveCount;
only use this function when you are useing nNumvertices and primcout.
Now we recognize everything with our texnums and shit...
Then you get to this...
Code:
pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_NEVER); pDevice->SetTexture(0,Yellow); pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount); pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE); pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_LESSEQUAL); pDevice->SetTexture(0,Red);
This is the wallhack code, all you guys need to know is that we enable buffers and switch them enable to see people behind walls.. and
you see
Code:
pDevice->SetTexture(0,Yellow);
Code:
pDevice->SetTexture(0,Red);
The first one is behind walls color, the second one, is in front of walls color.. You can change it to any colors we've mentioned in our globals.. since we generated it and declared it.
The Colors(Just in case you forgot):
Code:
LPDIRECT3DTEXTURE8 Red; LPDIRECT3DTEXTURE8 Yellow; LPDIRECT3DTEXTURE8 Green; LPDIRECT3DTEXTURE8 Blue; LPDIRECT3DTEXTURE8 Purple; LPDIRECT3DTEXTURE8 Orange; LPDIRECT3DTEXTURE8 Pink; LPDIRECT3DTEXTURE8 White; LPDIRECT3DTEXTURE8 Black;
Now thats our chams, oh and the guns, you can just modify there colors on the wallhack code right under it.. :P
SO what i'm trying to say is you can color anything in as long as you have its model recognition.
Moving on!
//================================================== ================================================== ================================================== ================================================== ================================================== ================================================== =========//
Now we have our chams... and anything really.... that we want to color in.. but our recognition comes from a different place SetStreamSource :P another d3d Function
Code:
typedef HRESULT ( WINAPI* oSetStreamSource ) ( LPDIRECT3DDEVICE8 pDevice, UINT nStreamNumber, LPDIRECT3DVERTEXBUFFER8 pStreamData, UINT nStride );
oSetStreamSource pSetStreamSource;
HRESULT WINAPI mySetStreamSource(LPDIRECT3DDEVICE8 pDevice, UINT nStreamNumber, LPDIRECT3DVERTEXBUFFER8 pStreamData, UINT nStride)
{
if(nStreamNumber==0)
m_Stride = nStride;
return pSetStreamSource(pDevice, nStreamNumber, pStreamData, nStride);
Well nStride is apart of a modelrecognition, and we used m_Stride, by saying that they equal each other.. m_Stride in our chams code = nStride.. now you say, why dontwe just use nStride instead? Well we have to use this function to identify or use the model recognition system :P
Now we're almost done, we have to assign it a hotkey.. :P
Back to endscene... Now why is Endscene so important? Because it renders every frame per second :P
To add a hotkey. we would do it like this..
Code:
if (GetAsyncKeyState(VK_F1)&1) // if we click f1
{ chams = !chams; } // chams = on
Code:
if (GetAsyncKeyState(VK_F2)&1) // if we click f2
{ colored walls = !colored walls; } // colored walls = on
The hotkeys name has to be the same as the if function and as it is in the globals, thats why we define shit like
bool chams = false;
so we can add a hotkey to chams and recognize it :P
phew that was alot
But theres more(Dam billy mayes)
Want no fog, xray , fullbright?
declare them first like chams.. :P
Code:
int nofog; int xray; int fullbright;
Code:
typedef HRESULT ( WINAPI* oSetRenderState ) ( LPDIRECT3DDEVICE8 pDevice, D3DRENDERSTATETYPE State, DWORD Value);
oSetRenderState pSetRenderState;
HRESULT WINAPI mySetRenderState(LPDIRECT3DDEVICE8 pDevice, D3DRENDERSTATETYPE State, DWORD Value)
{
if(fullbright)
{
pDevice->SetRenderState(D3DRS_LIGHTING, false); //d3d lighting off
pDevice->SetRenderState(D3DRS_AMBIENT,D3DCOLOR_ARGB(255,255,255,255)); // use all colors to glow up the lighting ingame
}
if(nofog) // if nofog on
{ // then
pDevice->SetRenderState(D3DRS_FOGENABLE, false); // Disable the Fog
} // end of then
if(xray)
{
if(m_Stride == Modelrecognition) //you can define the stride like this to
{
m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);
}
}
return pSetRenderState(pDevice,State, Value);
}
Like before we just have to set a hotkey for it... IN ENDSCENE!
Code:
if (GetAsyncKeyState(VK_F3)&1) // if we click f3
{ //then
nofog = !nofog; //nofog = on
} //end of then
phew a lot of hacks..
What we've nailed down..
-Wallhack
-Chams
-NoFog
-Xray
-FullBright
whats left?
Crosshair :P
in globals we put:
Code:
float ScreenCenterX = 0.0f; float ScreenCenterY = 0.0f; bool xhair = false; D3DCOLOR redt = D3DCOLOR_XRGB( 255, 0, 0 );
Centering and declaring the xhair.. also giving it the color of red(You also just use the regular red,or whatever color)
SO here we are back to endscene again
Code:
if(xhair)
{
D3DRECT rec2 = {ScreenCenterX-20, ScreenCenterY, ScreenCenterX+ 20, ScreenCenterY+2};
D3DRECT rec3 = {ScreenCenterX, ScreenCenterY-20, ScreenCenterX+ 2,ScreenCenterY+20};
pDevice->Clear(1, &rec2, D3DCLEAR_TARGET,redt, 0, 0);
pDevice->Clear(1, &rec3, D3DCLEAR_TARGET,redt, 0, 0);
}
But to adding a crosshair we need screenpositioning... we use the d3d function SetViewPort
Code:
typedef HRESULT (WINAPI* oSetViewport)(LPDIRECT3DDEVICE8 pDevice,CONST D3DVIEWPORT8* pViewport);
oSetViewport pSetViewport;
HRESULT WINAPI mySetViewport(LPDIRECT3DDEVICE8 pDevice,CONST D3DVIEWPORT8* pViewport)
{
ScreenCenterX = ( float )pViewport->Width / 2;
ScreenCenterY = ( float )pViewport->Height / 2;
return pSetViewport(pDevice,pViewport);
}
it just positions it.. and you know whats next.. back to Endscene...
add the hotkey
Code:
if (GetAsyncKeyState(VK_F8)&1) // if we click f8
{ xhair = !xhair; } // xhair = on
-WallHack
-Chams
-Nofog
-Xray
-Fullbright
-Crosshair
whats left how about wire frame?
Code:
typedef HRESULT ( WINAPI* oDrawIndexedPrimitive ) ( LPDIRECT3DDEVICE8 pDevice, D3DPRIMITIVETYPE pType, UINT nMinIndex, UINT nNumVertices, UINT nStartIndex, UINT nPrimitiveCount );
oDrawIndexedPrimitive pDrawIndexedPrimitive, OriginalDrawIndexedPrimitive;
HRESULT WINAPI myDrawIndexedPrimitive(LPDIRECT3DDEVICE8 pDevice, D3DPRIMITIVETYPE pType, UINT nMinIndex, UINT nNumVertices, UINT nStartIndex, UINT nPrimitiveCount)
{
if(WireFame)
if(m_Stride == modelrecog)
{ // then
pDevice->SetRenderState(D3DRS_FILLMODE, D3DFILL_WIREFRAME);
} // end of then
You will need a model recognition to choose what you want to wireframe like what you want to color..
remember in globals
Code:
int WireFrame;
Code:
if (GetAsyncKeyState(VK_F3)&1) // if we click f3
{ //then
wireframe = !wireframe; //wireframe = on
} // end of then
But you will need the modelrecognition of the smoke and flash...
Remember how i said Stride == 40 Renders everything in soldierfront? If we do
Code:
if(m_Stride == 40)
{ // then
pDevice->SetRenderState(D3DRS_FILLMODE, D3DFILL_WIREFRAME);
} // end of then
Time for uber sexy AsusWallhack
Globals
Code:
int AsusWallhack;
Example in DIP
Code:
typedef HRESULT ( WINAPI* oDrawIndexedPrimitive ) ( LPDIRECT3DDEVICE8 pDevice, D3DPRIMITIVETYPE pType, UINT nMinIndex, UINT nNumVertices, UINT nStartIndex, UINT nPrimitiveCount );
oDrawIndexedPrimitive pDrawIndexedPrimitive, OriginalDrawIndexedPrimitive;
HRESULT WINAPI myDrawIndexedPrimitive(LPDIRECT3DDEVICE8 pDevice, D3DPRIMITIVETYPE pType, UINT nMinIndex, UINT nNumVertices, UINT nStartIndex, UINT nPrimitiveCount)
{
if(AsusWallhack)
if(Model_rec//for walls)
{
pDevice->SetRenderState( D3DRS_SRCBLEND, 3 );
pDevice->SetRenderState( D3DRS_DESTBLEND, 4 );
pDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, true );
}
}
then add hotkey
so now we have
-WallHack
-Chams
-NoFog
-FullBright
-Xray
-NoSmoke(wireFrame)
-NoFlash(Wireframe)
-WireFrame(Whole screen)
-Crosshair
-Asus Wallhack
Whats left?
-NoRecoil
-NoSpread
-Shoot with nades
-ESP(Coming soon)
-ColorAimbot(Easier now that we have chams)
-SuperJump
Coming Soon:
-Debugging boxes(Sexy)
-PixelShaderChams(Sexy)
-Esp(Meh)
-NoSky(another easy one)
UPDATE: NoSKy,NOFlash,NoSmoke,NoWater -> D3D Style.
NoSky:
Start off with
Code:
int nosky;
Now in DIP:
Code:
if(nosky)
{
if(modelrec)
{
return D3D_OK
}
}
NoFlash:
Code:
int noflash;
Code:
if(noflash)
{
if(ModelRec)
{
return D3D_OK;
}
}
Code:
int nosmoke;
Code:
in DIP
if(nosmoke)
{
if(ModelRec)
{
return D3D_OK;
}
}
int nosmoke;
in DIP
Code:
if(nosmoke)
{
if(ModelRec)
{
return D3D_OK;
}
}
Code:
int nowater;
Code:
if(nowater)
{
if(ModelRec)
{
return D3D_OK;
}
}
Btw.. going over some detection.. On Windows XP, Soldierfront Scans DrawIndexedPrimitive so its detected..So chams and Wallhack will have to wait.. for now render all the stuff you can in setrenderstate... Full Screen WireFrame will still help.
Now for hooking you will need to use detours..
Detours: Add this to your source..
Code:
//==========================================FindPatt======================================================================//
bool bCompare(const BYTE* pData, const BYTE* bMask, const char* szMask)
{
for(;*szMask;++szMask,++pData,++bMask)
if(*szMask=='x' && *pData!=*bMask) return 0;
return (*szMask) == NULL;
}
//=======================================================================
DWORD FindPattern(DWORD dwAddress,DWORD dwLen,BYTE *bMask,char * szMask)
{
for(DWORD i=0; i<dwLen; i++)
if (bCompare((BYTE*)(dwAddress+i),bMask,szMask)) return (DWORD)(dwAddress+i);
return 0;
}
//=======================================================================
void *DetourFunc(BYTE *src, const BYTE *dst, const int len)
{
BYTE *jmp = (BYTE*)malloc(len+5);
DWORD dwBack;
VirtualProtect(src, len, PAGE_READWRITE, &dwBack);
memcpy(jmp, src, len);
jmp += len;
jmp[0] = 0xE9;
*(DWORD*)(jmp+1) = (DWORD)(src+len - jmp) - 5;
src[0] = 0x90; //50
src[1] = 0x90; // 58
src[2] = 0xE9;
*(DWORD*)(&src[3]) = (DWORD)(dst - src) - 7;
for (int i=7; i<len; i++) src[i] = 0x90;
VirtualProtect(src, len, dwBack, &dwBack);
return (jmp-len);
}
now how do we use this? Remember we need to define these too!
Code:
bool bCompare(const BYTE* pData, const BYTE* bMask, const char* szMask); DWORD FindPattern(DWORD dwAddress,DWORD dwLen,BYTE *bMask,char * szMask); void *DetourFunc(BYTE *src, const BYTE *dst, const int len); int D3D8BASE (void); int sleepthread2 (void); int sleepthread (void);
Code:
//=======================================Vtable Hook====================================================================//
int D3D8BASE (void)
{
HMODULE D3D8BASE = NULL;
for (;D3D8BASE == NULL;Sleep(100))
D3D8BASE = LoadLibrary("d3d8.dll");
DWORD* VTableHook = 0;
DWORD hD3D8 = (DWORD)GetModuleHandle("d3d8.dll");
DWORD VIRTUALTABLE = FindPattern(hD3D8, 0x128000, (PBYTE)"\xC7\x06\x00\x00\x00\x00\x89\x86\x00\x00\x00\x00\x89\x86", "xx????xx????xx");
memcpy(&VTableHook, (void*)(VIRTUALTABLE+2), 4);
DWORD dwEndScene = VTableHook[35];
DWORD dwDrawIndexedPrimitive = VTableHook[71];
DWORD dwSetStreamSource = VTableHook[83];
DWORD dwSetViewport = VTableHook[40];
DWORD dwSetRenderState = VTableHook[50];
pDrawIndexedPrimitive = (oDrawIndexedPrimitive)DetourFunc((PBYTE)dwDrawIndexedPrimitive, (PBYTE)myDrawIndexedPrimitive, 7);
pSetStreamSource = (oSetStreamSource)DetourFunc((PBYTE)dwSetStreamSource, (PBYTE)mySetStreamSource, 7);
pEndScene = (oEndScene)DetourFunc((PBYTE)dwEndScene, (PBYTE)myEndScene, 7);
pSetViewport = (oSetViewport)DetourFunc((PBYTE)dwSetViewport, (PBYTE)mySetViewport, 7);
pSetRenderState = (oSetRenderState)DetourFunc((PBYTE)dwSetRenderState, (PBYTE)mySetRenderState, 7);
return 0;
}
BOOL WINAPI DllMain ( HMODULE hDll, DWORD dwReason, LPVOID lpReserved )
{
DisableThreadLibraryCalls(hDll);
if ( dwReason == DLL_PROCESS_ATTACH )
{
CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)D3D8BASE, NULL, NULL, NULL);
}
return TRUE;
}
Good luck and have fun!
Compile These in C++.
If u dont have one, Download this.






