PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe bei DirectX9 Hook!



Darti401
28.08.2010, 23:38
Hi,

ich bräuchte mal ehrlich hilfe von Profis hier!
Ich habe diesen Hook hier:
DirectX9 Base Hook. - rohitab.com - Forums (http://www.rohitab.com/discuss/index.php?showtopic=35950) runtergeladen und gehofft er funktioniert einwandfrei, und siehe da!
Es geht!!
Endlich ein Overlay Hook was funktioniert.
Natürlich wärs mir lieber wenns im VB.net oder C# gewesen wäre, aber was solls ich versuch hiermit mein Glück.
Nun wollte ich wissen, wie ich es schaffe anstatt einer weißen kleinen Box ein Text anzeigen lasse?
Code:
pDevice->Clear(1, &rec, D3DCLEAR_TARGET, D3DCOLOR_XRGB(255, 255, 255), 0, 0);

Habe gegoogelt, habe anstatt D3DCOLOR_XRGB(255, 255, 255) einfach "test" probiert. Geht leider auch nicht, kann einer mir helfen?

gruß
Dennis

Kid Icarus
28.08.2010, 23:40
Vielleicht erstmal C lernen oder versuchen den Source zu verstehen ?

Darti401
29.08.2010, 00:21
Ich habe nun Verstanden, dass man mit pDevice arbeiten muss.


HRESULT (APIENTRY *pfnEndScene)( IDirect3DDevice9 *pDevice );
HRESULT APIENTRY hook_EndScene( IDirect3DDevice9 *pDevice )

{
D3DRECT rec = { 0, 0, 20, 20 };
//pDevice->Clear(1, &rec, D3DCLEAR_TARGET, 0, 0, 0);

//pDevice->DrawText = geht leider nicht....
return pfnEndScene(pDevice);
}
Wie könnte man das am besten lösen, weil ja DrawText nicht im IDirect3DDevice9 drinne is?

//Update:

Bin nun soweit gekommen, fehlt nur noch das mit der Text displayed wird...



INT DrawText(
LPD3DXSPRITE pSprite,
LPCTSTR pString,
int Count,
LPRECT pRect,
DWORD Format,
D3DCOLOR Color
);
HRESULT WINAPI D3DXCreateFont(
LPDIRECT3DDEVICE9 pDevice,
unsigned int Height,
unsigned int Width,
unsigned int Weight,
unsigned int MipLevels,
BOOL Italic,
DWORD CharSet,
DWORD OutputPrecision,
DWORD Quality,
DWORD PitchAndFamily,
LPCTSTR pFacename,
LPD3DXFONT *ppFont
);
HRESULT hr;
HRESULT (APIENTRY *pfnEndScene)( IDirect3DDevice9 *pDevice );
HRESULT APIENTRY hook_EndScene( IDirect3DDevice9 *pDevice ){

ID3DXFont *g_font=NULL;

const char *fps_string;
RECT font_rect;

fps_string= "test";

SetRect(&font_rect,0,0,20,20);

D3DRECT rec = { 0, 0, 20, 20 };
//pDevice->Clear(1, &rec, D3DCLEAR_TARGET, 0, 0, 0);


hr=D3DXCreateFont(pDevice, //D3D Device
22, //Font height
0, //Font width
FW_NORMAL, //Font Weight
1, //MipLevels
false, //Italic
DEFAULT_CHARSET, //CharSet
OUT_DEFAULT_PRECIS, //OutputPrecision
ANTIALIASED_QUALITY, //Quality
DEFAULT_PITCH|FF_DONTCARE,//PitchAndFamily
"Arial", //pFacename,
&g_font); //ppFont

g_font->DrawText(NULL, //pSprite
fps_string, //pString
-1, //Count
&font_rect, //pRect
DT_LEFT|DT_NOCLIP,//Format,
0xFFFFFFFF);


pDevice->Clear(1, &rec, D3DCLEAR_TARGET, D3DCOLOR_ARGB(255,255, 0, 255), 0, 0);
return pfnEndScene(pDevice);
}

ocz
29.08.2010, 02:48
Lies dir mal durch was die FUnktionen überhaupt machen, mit denen du um dich wirfst. Wieso clearst du wenn du nen Text willst?

IDirect3DDevice9 Interface (Windows) (http://msdn.microsoft.com/en-us/library/bb174336%28v=VS.85%29.aspx)

Darti401
29.08.2010, 09:14
Entschuldigung, bin neu in VC++ und ich möchte einfach nur was probieren ob das funktioniert. Ich könnte das ganze auch versuchen in vb.net zu portieren, aber ich lasse es bei Vc++ möchte auch was neues lernen.
Und bevor das geflame anfängt, "Lern doch erstma nen Taschenrechner"
Sorry, ich habe VB.net auch so gelernt. Mich an Sources gewagt, und die versucht zu verstehen, und bis jetzt hat das bestens geklappt, nur wenn ich irgendwo hänge möchte ich halt leute Fragen die Ahnung davon haben.

Sorry für OT, B2T:
Also, die Funktionen habe ich mir schon angesehen, nur nichts mit Text, bzw. Font oder ähnlichem gesehen, da kann man nur Texturen, Meshes etc, erstellen aber keine Texte.

penguin
29.08.2010, 10:03
Evtl. Wäre XNA ja eher was für dich, das ist sowas ähnliches wie DirectX, nur in C# und ein bisschen leichter (Meiner Meinung nach :D).

Habe auch schon bisschen im 2D-Bereich damit gearbeitet ist ganz nett :)

Edit://
Link vergessen :P
http://creators.xna.com/de-DE/

Darti401
29.08.2010, 10:12
Nee, ich habe ja schon ein Source Code, der einfach nur genial ist, weil der bei jedem Spiel funktioniert!
Grade mit Mafia2 probiert, und da wird mir mein Weißes Kästchen im Eck rechtsoben angezeigt!
GTA San Andreas geht auch, Startcraft 2 geht, F.E.A.R.2 geht auch!
Es wäre einfach nur geil, wenn mir jemand sagen könnte wie man anstatt der weißen Box eine Schrift anzeigt.

CyphaX
29.08.2010, 10:53
C/C++ Forum :: Hilfe bei DirectX9 Hook! (http://www.c-plusplus.de/forum/viewtopic-var-p-is-1945564.html)

is das dein Post? -.-

Ich kann es zwar nicht, aber Bitte Lern einfach C++

blackberry
29.08.2010, 11:34
Und bevor das geflame anfängt, "Lern doch erstma nen Taschenrechner"
Sorry, ich habe VB.net auch so gelernt.

Ich möchte mich an dieser Stelle zwar nur ungern allzu weit aus dem Fenster lehnen, aber erfahrungsgemäß heißt das, dass du überhaupt keine Ahnung von VB.net hast.

Dabei verweise ich dann auch gleich mal auf:
Free-Hack.com - Ankündigungen im Forum : Ansi-C, C, C++ (http://free-hack.com/announcement.php?f=635)

Was deine Probleme angeht: eine Farbe (D3DCOLOR_XRGB(255, 255, 255)) durch einen String ersetzen? Das wäre ja so als würdest du versuchen einen Elefanten in eine Hundehütte zu quetschen (was, wenn das nicht gerade der Hund von Paris Hilton ist, sicher schief gehen wird).

Ungeachtet dessen, dass du kein C(++) kannst würde ich dir doch zumindest ans Herz legen dich mit DirectX/Direct3D zu beschäftigen, bevor du damit beginnst irgendwas zu hooken.

Bis dahin:
/closed