Chams pentru cunoscatori
Chams pentru cunoscători.
trișor Bine ai venit și chitmeykery. În acest subiect, vreau să arăt cum să facă chams, dar punctul culminant al întregului nu este cum să-l creeze, și cum să facă „non-standard“. + De la codul pe care voi da va fi de a acumula cunoștințe în aimbot creație și d3d triggerbota, iar dacă nu lipsește imaginația, și este ceva mai mult.
Bineînțeles, voi presupune că le-ați făcut deja o vallhak simplu + chams. Provocarea este de a intercepta funcția DrawIndexedPrimitive bibliotecă d3dx9.dll și determinarea datelor pentru modelele dorite, cu asta tot ce știi, astfel încât să descrie întregul proces nu se va.
În ceea ce va fi neobișnuit chams nostru? Și este că, cu ajutorul oportunităților d3dx, vom trage modelele noastre nu sunt pur și simplu vopsite peste culoarea implicită de credit, dar, de asemenea, cu un oarecare efect.
Mai exact, exemplul meu va chams vvide silueta. Pentru a face acest lucru, avem nevoie de a utiliza un shader, dacă nu știi ce este, găsiți informații pe Internet. Apoi, cu o bază, voi da un cod, puteți face foc chams, luminos, strălucire, tot ce a intrat în capul nostru, schimbând doar codul shaderului, avantajul că acestea sunt scrise într-un limbaj HLSL foarte similar cu dumneavoastră preferat B + +. Cu toate acestea, utilizarea de shader I aduc la Delphi, dar nu vă faceți griji, să fie rescris în C ++, totul va fi foarte ușor, așa cum am folosi doar direktiks bibliotecă și C ++ toate funcțiile sunt de asemenea descrise.
Acum, descrie algoritmul.
1) Crearea obiectelor necesare noi d3dx: shader, texturi, tampoane vertex. Textura trebuie să-l facă pur și simplu avem nevoie de ochiuri de plasă. Într-un exemplu specific, vom face modelele de jucător. tampon Vertex, trebuie să impună pe el textura și afișarea rezultatului. Textura, de asemenea, trebuie să se așeze pe ceva. Și doi shader, primul standard, care se revarsă pur și simplu model de culoare, al doilea cu efect de silueta noastra.
2) În DrawIndexedPrimitive, modelul necesar pentru a face textura (modelul definește felul său, acest lucru este un clasic - numvertices și primcount (numărul de noduri, numărul de primitivelor)).
3) În EndScene aplică shaderului la textura, ceea ce a făcut modelele noastre. Shader își va face lucrarea și va reduce mijlocul ochiurilor.
4) După această remiză teksuru pe ecran. După ce desenați textura trebuie să fie curățate, în caz contrar, ecranul va fi un nonsens necunoscut.
Crearea obiectelor necesare.
d3ddev. GetDeviceCaps (capace);
VERSPX1: = (inttostr (D3DSHADER_VERSION_MAJOR (capace PixelShaderVersion)).);
VERSPX2: = (inttostr (D3DSHADER_VERSION_MINOR (capace PixelShaderVersion)).);
STRASM: 'ps_' = + VERSPX1 + '_' + VERSPX2 + # 13 + 'mov oC0, c0' + # 13; // aceasta este codul primului shaderului pentru a umple ochiuri de culoare, dacă sunteți șocați de aceste simboluri nu vă faceți griji, a doua shader vom scrie în HLSL
pixelshader: = zero;
dacă D3DXASSEMBLESHADER (PCHAR (STRASM), lungime (strasm), zero. zero. 0, @ pshader. nil) = d3d_ok apoi începe
d3ddev. CreatePixelShader (Pshader GetBufferPointer pixelshader..);
se încheie;
pshader: = zero;
d3ddev. GetRenderTarget (0. backbuffer);
dacă backbuffer <> zero atunci backbuffer. GetDesc (desc);
D3DDEV. CreateTexture (. DESC Lățime DESC Înălțime 1. D3DUSAGE_RENDERTARGET D3DFMT_A8R8G8B8 D3DPOOL_DEFAULT sil_texture NIL .......);
sil_texture. GetSurfaceLevel (0. rendersurface);
// shader silueta, codul este într-un fișier t.fx
dacă D3DXCompileShaderFromFile (pchar (str + '\ t.fx'), zero. zero. 'main'. pchar ( 'ps_' + VERSpx1 + '_' + VERSpx2), 0, @ pshader. zero. nil) = d3d_ok atunci
d3ddev. CreatePixelShader (pshader GetBufferPointer sil_ps ..);
d3ddev. CreateVertexBuffer (sizeof (TVertex2) * 4. 0. fvf2 D3DPOOL_MANAGED sil_vertex zero ...);
fl: = 0;
// definirea unui model
dacă check_model1 (numvertices promcount.) apoi fl: = 1
dacă check_model2 (numvertices promcount.) apoi fl: = 2
dacă (fl> 0), apoi începe
d3ddev. CreateStateBlock (D3DSBT_ALL pStateBlock.); // a salva setările curente renderstate. și chiar și după trecerea de ieșire face într-un alt loc, se întâmplă doar prostii.
dacă fl = 1 apoi începe
r: = 1; g: = 1; b: = 0;
se încheie;
dacă fl = 2, atunci începe
r: = 0; g: = 1; b: = 1;
se încheie;
d3ddev. getrenderstate (d3drs_zenable old_zenable.);
d3ddev. SetRenderTarget (0. rendersurface); // setați tencuielii la textura
d3ddev. setrenderstate (ifalse d3drs_zenable.); //
pixelvalue # 91; 0 # 93 ;: = r; pixelvalue # 91; 1 # 93 ;: = g; pixelvalue # 91; 2 # 93 ;: = b; pixelvalue # 91; 3 # 93 ;: = 1;
d3ddev. SetPixelShader (pixelshader);
d3ddev. SetPixelShaderConstantF (0, @ pixelvalue 1.); // folosi prima shader, pentru culoarea de umplere. Vom fi stocate în textura umbrită modele și un ecran normal, că această metodă poate fi utilizată pentru a aimbot culoare fără chams.
Rezultatul: = or_drawindexedprimitive (auto _Type BasevertexIndex Minvertexindex Numvertices startIndex Primcount ......);
/////
dacă fl = 1 apoi începe
r: = 1; g: = 0; b: = 0;
se încheie;
dacă fl = 2, atunci începe
r: = 0; g: = 1; b: = 0;
se încheie;
d3ddev. setrenderstate (d3drs_zenable old_zenable.);
pixelvalue # 91; 0 # 93 ;: = r; pixelvalue # 91; 1 # 93 ;: = g; pixelvalue # 91; 2 # 93 ;: = b; pixelvalue # 91; 3 # 93 ;: = 1;
d3ddev. SetPixelShader (pixelshader);
d3ddev. SetPixelShaderConstantF (0, @ pixelvalue 1.);
Rezultatul: = or_drawindexedprimitive (auto _Type BasevertexIndex Minvertexindex Numvertices startIndex Primcount ......);
d3ddev. SetRenderTarget (0. oldrendersurface); // restaura tencuiala veche
d3ddev. SetPixelShader (oldpixelshader);
d3ddev. SetPixelShaderConstantF (0, @ oldpixelvalue 1.);
pStateBlock. se aplică; // au fost setate fac setări.
pStateBlock: = zero;
se încheie;
Rezultatul: = or_drawindexedprimitive (auto _Type BasevertexIndex Minvertexindex Numvertices startIndex Primcount ......);
Scris astfel protsedurku la ieșire un shader textura.
Procedura draw_texture (x1 y1 x2 y2 singur;. ... textura idirect3dtexture9 ;. ps idirect3dpixelshader9.);
var
Nodurile. mulțime # 91; 0..3 # 93; din TVertex2;
pVertices. Pointer;
începe
// structura vertex
// fvf2 = D3DFVF_XYZRHW sau D3DFVF_TEX1;
// TVertex2 = înregistrare
// x, y, z, rhw: singur;
// tu, tv: singur;
// end;
dacă d3ddev = zero atunci ieșire;
dacă sil_vertex = zero atunci ieșire;
// coordonate set și coordonatele nodurilor de textură
nodurile # 91; 0 # 93;. x: = x1; nodurile # 91; 0 # 93;. y: = y1; nodurile # 91; 0 # 93;. z: = 0; nodurile # 91; 0 # 93;. rhw: = 1;
nodurile # 91; 0 # 93;. tu: = 0; nodurile # 91; 0 # 93;. tv: = 0;
nodurile # 91; 1 # 93;. x: = x2; nodurile # 91; 1 # 93;. y: = y1; nodurile # 91; 1 # 93;. z: = 0; nodurile # 91; 1 # 93;. rhw: = 1;
nodurile # 91; 1 # 93;. tu: = 1; nodurile # 91; 1 # 93;. tv: = 0;
nodurile # 91; 2 # 93;. x: = x1; nodurile # 91; 2 # 93;. y: = y2; nodurile # 91; 2 # 93;. z: = 0; nodurile # 91; 2 # 93;. rhw: = 1;
nodurile # 91; 2 # 93;. tu: = 0; nodurile # 91; 2 # 93;. tv: = 1;
nodurile # 91; 3 # 93;. x: = x2; nodurile # 91; 3 # 93;. y: = y2; nodurile # 91; 3 # 93;. z: = 0; nodurile # 91; 3 # 93;. rhw: = 1;
nodurile # 91; 3 # 93;. tu: = 1; nodurile # 91; 3 # 93;. tv: = 1;
Rezultat: = sil_vertex. Lock (0. sizeof (TVertex2) * 4. pVertices 0.);
dacă FAILED (Rezultat) apoi Exit;
Mutare (Nodurile # 91; 0 # 93;, pVertices ^, sizeof (TVertex2) * 4);
sil_vertex. debloca;
d3ddev. CreateStateBlock (D3DSBT_ALL pStateBlock.);
d3ddev. SetPixelShader (NIL);
d3ddev. SetPixelShader (ps); // sculpta textura noastră dreptunghi și de a folosi un shader
d3ddev. SetTexture (0. textura);
d3ddev. SetStreamSource (0. sil_vertex 0. sizeof (TVertex2).);
d3ddev. SetFVF (FVF2);
d3ddev. DrawPrimitive (D3DPT_trianglestrip 0. 2).
pStateBlock. se aplică;
pStateBlock: = zero;
// desena un pătrat, este avem nevoie pentru a curăța textura
Procedura DrawRect (x1 y1 x2 y2 întreg;. ... r g b byte ...);
var BarRect. D3DRECT; Cor. D3DCOLOR;
începe
cor: = ((b) + ((g) shl 8) + ((r) shl 16));
BarRect. x1: = x1; BarRect. y1: = y1; BarRect. x2: = x2; BarRect. y2: = y2;
dacă d3ddev <> zero atunci d3ddev. Șterge (1 @ BarRect D3DCLEAR_TARGET sau D3DCLEAR_ZBUFFER Cor 0. 0 ...);
se încheie;
draw_texture (0. 0. desc sil_ps Lățime desc Inaltime sil_texture .....); // trage textura
Rezultatul: = or_endscene (auto);
// Curățăm teksturku
dacă d3ddev <> nil apoi începe
d3ddev. GetRenderTarget (0. oldrendersurface);
d3ddev. SetRenderTarget (0. rendersurface);
drawrect (0. 0. desc Lățime desc Înălțime 0. 0. 0 ....);
d3ddev. SetRenderTarget (0. oldrendersurface);
se încheie;
Aici el shader cod siluetă pishitsya în notebook-uri de obicei, în acest exemplu, t.fx numele de fișier
// silueta Shader de Baunti
prelevator TextureSampler;
struct PixelInput
<
float2 TexCoord. TEXCOORD0;
>;
sum float (float4 a)
întoarce (o # 91; 0 # 93; + o # 91; 1 # 93; + o # 91; 2 # 93; + o # 91; 3 # 93);
>;
float4 principal (input PixelInput). COLOR0
float xx = 0,003; // latimea silueta
colorout float4;
float4 color = tex2D (... TextureSampler float2 (intrare TexCoord x intrare TexCoord y) ...);
float4 culoare1 = tex2D (. float2 TextureSampler (intrare TexCoord x + xx intrare TexCoord y) .....);
float4 COLOR2 = tex2D (... float2 TextureSampler (intrare TexCoord x - xx intrare TexCoord y) ...);
float4 color3 = tex2D (... TextureSampler float2 (intrare TexCoord x intrare TexCoord y + xx) ...);
float4 color4 = tex2D (... TextureSampler float2 (intrare TexCoord x intrare TexCoord y - xx) ...);
colorout = culoare;
if ((sum (culoare1)> 0) (suma (culoare) == 0))
colorout = culoare1;
>;
if ((sum (COLOR2)> 0) (suma (culoare) == 0))
colorout = COLOR2;
>;
if ((sum (color3)> 0) (suma (culoare) == 0))
colorout = color3;
>;
if ((sum (color4)> 0) (suma (culoare) == 0))
colorout = color4;
>;
Dacă cineva a însușit tot ceea ce am scris, propun, în această ordine răspândit shader și capturi de ecran, am fost încă mai face mini shader „sticlă“ efect, cineva va fi interesat să arunc.
Re: chams pentru cunoscatori.
Iată un shader, pe care o numesc sticla, există o siluetă, și ea modelc plin de culoare cu transparență. Cum va fi clar, specificate în codul Shader. Toate acestea pentru o lungă perioadă de timp am scris acum 5 luni, dar a marcat shaders'll întoarce și va crea ceva mai interesant și mai complicat.
// Shader de Baunti
prelevator TextureSampler;
struct PixelInput
<
float2 TexCoord. TEXCOORD0;
>;
sum float (float4 a)
<
întoarce (o # 91; 0 # 93; + o # 91; 1 # 93; + o # 91; 2 # 93; + o # 91; 3 # 93);
>;
float4 principal (input PixelInput). COLOR0
<
float xx = 0,004;
float4 color = tex2D (... TextureSampler float2 (intrare TexCoord x intrare TexCoord y) ...);
float4 culoare1 = tex2D (. float2 TextureSampler (intrare TexCoord x + xx intrare TexCoord y) .....);
float4 COLOR2 = tex2D (... float2 TextureSampler (intrare TexCoord x - xx intrare TexCoord y) ...);
float4 color3 = tex2D (... TextureSampler float2 (intrare TexCoord x intrare TexCoord y + xx) ...);
float4 color4 = tex2D (... TextureSampler float2 (intrare TexCoord x intrare TexCoord y - xx) ...);
float4 colorout = culoare;
if ((sum (culoare1)> 0) (suma (culoare) == 0))
<
colorout = culoare1;
colorout # 91; 3 # 93 = 0,7;
>;
if ((sum (COLOR2)> 0) (suma (culoare) == 0))
<
colorout = COLOR2;
colorout # 91; 3 # 93 = 0,7;
>;
if ((sum (color3)> 0) (suma (culoare) == 0))
<
colorout = color3;
colorout # 91; 3 # 93 = 0,7;
>;
if ((sum (color4)> 0) (suma (culoare) == 0))
<
colorout = color4;
colorout # 91; 3 # 93 = 0,7;
>;
Postat de Baunti [Trebuie sa fie înregistrat și nu este blocat de către utilizator pentru a vizualiza link-uri pentru a înregistra la acest link]
Iată un shader, pe care o numesc sticla, există o siluetă, și ea modelc plin de culoare cu transparență. Cum va fi clar, specificate în codul Shader. Toate acestea pentru o lungă perioadă de timp am scris acum 5 luni, dar a marcat shaders'll întoarce și va crea ceva mai interesant și mai complicat.
// Shader de Baunti
prelevator TextureSampler;
struct PixelInput
<
float2 TexCoord. TEXCOORD0;
>;
sum float (float4 a)
<
întoarce (o # 91; 0 # 93; + o # 91; 1 # 93; + o # 91; 2 # 93; + o # 91; 3 # 93);
>;
float4 principal (input PixelInput). COLOR0
<
float xx = 0,004;
float4 color = tex2D (... TextureSampler float2 (intrare TexCoord x intrare TexCoord y) ...);
float4 culoare1 = tex2D (. float2 TextureSampler (intrare TexCoord x + xx intrare TexCoord y) .....);
float4 COLOR2 = tex2D (... float2 TextureSampler (intrare TexCoord x - xx intrare TexCoord y) ...);
float4 color3 = tex2D (... TextureSampler float2 (intrare TexCoord x intrare TexCoord y + xx) ...);
float4 color4 = tex2D (... TextureSampler float2 (intrare TexCoord x intrare TexCoord y - xx) ...);
float4 colorout = culoare;
if ((sum (culoare1)> 0) (suma (culoare) == 0))
<
colorout = culoare1;
colorout # 91; 3 # 93 = 0,7;
>;
if ((sum (COLOR2)> 0) (suma (culoare) == 0))
<
colorout = COLOR2;
colorout # 91; 3 # 93 = 0,7;
>;
if ((sum (color3)> 0) (suma (culoare) == 0))
<
colorout = color3;
colorout # 91; 3 # 93 = 0,7;
>;
if ((sum (color4)> 0) (suma (culoare) == 0))
<
colorout = color4;
colorout # 91; 3 # 93 = 0,7;
>;
pzhlst Prompt. Și ce procedură pentru a împinge acest cod unul (pentru a crea toate necesare)?
și de ce jocul se blochează aici, pe această linie de cod Deviceinterface.SetPixelShader (pixelshader);?
Doar de ce aici, în procedura de rezultat :. = DrawIndexedPrimitiveNext (auto, _Type ca IDirect3DDevice9 servește de sine și nu am DrawIndexedPrimitiveNext intercepta (DrawIndexedPrimitiveCallback funcția (Deviceinterface IDirect3DDevice9 :?;.)
În general, în cazul în care cineva poate, vă rugăm să citi întregul cod cu lista variabilelor și a procedurilor, și poate că am fost greșit pentru a ajuta un perete de novice hacking te rog ..
Aici este lista mea de variabile globale, constante și tipuri:
Postat de arxlex [Trebuie sa fie înregistrat și nu este blocat de către utilizator pentru a vizualiza link-uri pentru a înregistra la acest link]
De ce nu aveți codul sursă, totul este scris în detaliu. Doar citiți cu atenție. Primerchik foarte original, dar foarte mult frânele. Există o idee vpihat acest miracol în fluxuri?
Postat de arxlex [Trebuie sa fie înregistrat și nu este blocat de către utilizator pentru a vizualiza link-uri pentru a înregistra la acest link]
Primul acord cu acest lucru:
Ce crezi că am un dispozitiv 3D nu a mai văzut niciodată. Și acest cod este deja rezultatul cu degetul îndreptat spre cer! Pentru că a trecut deja prin toate variantele din cod și această creație și nu au de lucru.