AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Text in Diablo II ausgeben

Ein Thema von SuPp3nHuHn · begonnen am 31. Aug 2004 · letzter Beitrag vom 13. Nov 2004
Antwort Antwort
Seite 3 von 4     123 4      
SuPp3nHuHn

Registriert seit: 31. Aug 2004
Ort: Kötzting
9 Beiträge
 
Delphi 6 Enterprise
 
#21

Re: Text in Diablo II ausgeben

  Alt 1. Sep 2004, 21:27
Naja weiß net inwiefern ihr Diablo kennt / spielt...

Einige kennen aber sicher das Program d2jsp (diablo 2 java script parser) - mit diesem kann man wie der name schon verrät javascript code ausführen welchen das program dann in diablo 2 umsetzt.

Mit diesem wird in diablo was geschrieben, ohne problem, ohne flimmern.... einfach so...

Also gehts irgendwie... (ich will NICHT d2jsp nachbauen!)

Kann ich mithilfe von d2jsp evtl. herauskriegen wie's geht (also programm "zerlegen")
So einfach wie möglich. Aber nicht einfacher!
(Einstein)
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#22

Re: Text in Diablo II ausgeben

  Alt 1. Sep 2004, 21:38
Am Rande: Hier schribt jemand, wie man einen Screenshot einer DirectX-Anwendung machen kann. Könnte man das nicht irgendwie verwursten? Hab das mal testweise in Delphi übersetzt (versucht) aber überhaupt nicht kompiliert bekommen, da mir wohl die DirectX 8.0 Header fehlen. Bis 7 hab ich sie, und da kennen die verwendeten Interfaces die ganzen Methoden die der Code benutzt nicht

Zum Thema "Zerlegen" hatten wir hier schon massig Diskussionen Hier im Forum suchendisassembler Hier im Forum suchendecompiler. Lies es, und du wirst sehen, dass man das getrost vergessen kann
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#23

Re: Text in Diablo II ausgeben

  Alt 1. Sep 2004, 21:44
Die flackernde Variante ist schon möglich, da DirectX sowieso im Fenster läuft, welches ein DC hat, auf das man zeichnen kann (ich hab das selbst mal ausprobiert). Einfach per FindWindow sich ein fensterhandle holen, dann per GetDc den dc holen, und dann einfach per TextOut draufzeichnen. TextOut muss man dann in einer schleife recht oft aufrufen, um auf (möglichst) jeden frame den text zu zeichnen. Das funktioniert, aber wie gesagt, es flackert.

Um aber mit DirectX zu zeichnen, z.B. mit der DrawTextA funktion aus ID3DXFont braucht man zum erstellen der Font (bei dx9) ein IDirect3DDevice9. Ohne das, keine font. Und selbst dabei muss man auch noch im richtigen moment zeichnen, damit der text nicht wie bei obiger variante flackert. Daher ist API bzw. Function-Hooking die EINZIGE akzeptable methode (außer man versucht sich an einem Graphikkartentreiber).

Ich hab mir nun vorgenommen das angesprochene Tutorial zu schreiben, und dies mit einem beispiel auszustatten, das zeigt, wie das möglich ist. Ihr müsst nur ein wenig gedult haben ...

@dizzy: Genau den code hab ich verwendet, um screenshots zu machen ... allerdings ist der für eigene programme gedacht ... ^^

ciao, Philipp
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
SuPp3nHuHn

Registriert seit: 31. Aug 2004
Ort: Kötzting
9 Beiträge
 
Delphi 6 Enterprise
 
#24

Re: Text in Diablo II ausgeben

  Alt 1. Sep 2004, 21:47
Jo, das hört sich schon sehr konkret an

Ja, das mit dem zerlegen weiß ich das es net wircklich effizient ist (wenn ich es zerlegen und das zerlegte zu 100% verstehen könnte würde ich wohl diablo einfach neu schreiben ^^)

Wie halt schon gesagt hab ich d2jsp und das hat auch eine dll, kann die diese nicht verwenden (copyright hab ich keine angst da es ja nur für mich + freundeskreis ist)

ahja, btw. bei d2jsp sieht es aus als wenn die nachricht vom server käme, wäre es evtl. nicht möglich einfach eine für diablo fingierte message zu schicken, also gar nicht diablos grafik selbst zu manipulieren sondern einfach über den port wo "der text kommt" an sich selbst quasi eine nachricht zu schreiben? Diablo würde diese dann ganz normal ausgeben.... (is nur so ein einfall)


Hier das mit dem DC .... geht nicht wircklich:

Delphi-Quellcode:
procedure TForm1.FWin;
var W: HWnd;
        D: HDC;
        x: cardinal;
begin
  W := FindWindow(NIL,'Diablo II');
  if W<>0 then begin

  Status.Caption:='Fenster gefunden!'; status.Refresh;
  sleep(1000);
  x:=0;
  D := GetDeviceContext(W);

    while x < 150 do begin
  sleep(50);
  inc(x,1);
  TextOut(D,2,2,'FOUND',5);
  Status.Caption:='Output '+IntToStr(x); status.Refresh;
    end;

  Status.Caption:='Output done!'; status.Refresh;

  end else Status.Caption:='Fenster nicht gefunden'; status.Refresh;
end;
Das Program zeichnet immer auf sein eigenes Fenster anstatt auf notepad, den rechner oder diablo ...
So einfach wie möglich. Aber nicht einfacher!
(Einstein)
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#25

Re: Text in Diablo II ausgeben

  Alt 2. Sep 2004, 12:57
Wenn ich sage GetDC, dann meine ich auch GetDC ... also, ersetze mal dein GetDeviceContext durch GetDC!

ciao, Philipp
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
SuPp3nHuHn

Registriert seit: 31. Aug 2004
Ort: Kötzting
9 Beiträge
 
Delphi 6 Enterprise
 
#26

Re: Text in Diablo II ausgeben

  Alt 2. Sep 2004, 17:00
jo hab es jetzt mit getdc und geht auch (die Hilfe schlug mir eben GetDeviceContext vor) ...

Aber die Möglichkeit dem Spiel eine Nachricht zu schicken wie als wenn Sie von dem Server käme wäre die nicht besser?
Weil mit OutputText is wie ja schon vorher bemerkt sehr flimmernd...
So einfach wie möglich. Aber nicht einfacher!
(Einstein)
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#27

Re: Text in Diablo II ausgeben

  Alt 2. Sep 2004, 17:57
Gibts denn keine Möglichkeit, einen Thread in den Diablo II Prozess zu "schummeln" und dann damit auf die D2 Libraries (d2client.dll, d2game.dll usw.) zuzugreifen? Du bräuchtest halt die Namen der Funktionen, aber ich schätze mal da wirst du in den Cheaterforen schon fündig...

btw: Bei FindWindow lieber nach dem Klassennamen "Diablo II" suchen anstatt des Fenstertitels
Dani H.
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#28

Re: Text in Diablo II ausgeben

  Alt 2. Sep 2004, 19:10
Zitat von Dani:
Gibts denn keine Möglichkeit, einen Thread in den Diablo II Prozess zu "schummeln" und dann damit auf die D2 Libraries (d2client.dll, d2game.dll usw.) zuzugreifen? Du bräuchtest halt die Namen der Funktionen, aber ich schätze mal da wirst du in den Cheaterforen schon fündig...
Dass du da was findest, bezweifle ich ... da deren namen alle nicht wirklich "sichtbar" sind ... soweit ich das gesehen hab ... bis auf eine ... in der d2client.dll gibt es eine funktion, die QueryInterface heißt ... vielleicht nützlich?

egal, ich bleibe bei meiner methode ... ^^ ... und wer keine gedult hat ist selbst schuld ...

ciao, Philipp

PS: mein mund ... AUUUAAA!
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
SuPp3nHuHn

Registriert seit: 31. Aug 2004
Ort: Kötzting
9 Beiträge
 
Delphi 6 Enterprise
 
#29

Re: Text in Diablo II ausgeben

  Alt 2. Sep 2004, 19:32
Zitat von Dani:
Gibts denn keine Möglichkeit, einen Thread in den Diablo II Prozess zu "schummeln" und dann damit auf die D2 Libraries (d2client.dll, d2game.dll usw.) zuzugreifen? Du bräuchtest halt die Namen der Funktionen, aber ich schätze mal da wirst du in den Cheaterforen schon fündig...

btw: Bei FindWindow lieber nach dem Klassennamen "Diablo II" suchen anstatt des Fenstertitels
Glaub auch das dies viel schwerer ist als es anders zu probieren.

Wie such ich nach dem Klassennamen anstatt nach dem Fenstertitel?
So einfach wie möglich. Aber nicht einfacher!
(Einstein)
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#30

Re: Text in Diablo II ausgeben

  Alt 2. Sep 2004, 19:42
 W := FindWindow('Diablo II', nil);
Dani H.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz