Auf Screen von "fremden" Spiel zeichnen?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

was auch logisch und einsehbar ist.
ich wollte einfach nur nachhaken, was AND meinte mit seiner 1...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

OK, dann wär das (mit der 1) ja geklärt. Und wie geht's weiter?
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
real
Beiträge: 468
Registriert: 05.10.2004 14:43

Beitrag von real »

Genau, und was meint eigentlich Programie dazu?
K.Putt
Beiträge: 122
Registriert: 01.09.2006 00:17

Beitrag von K.Putt »

Ich weiss nicht, ob ich jetzt den falschen Ansatz habe,
ich habe mir mal einen einfaches Crosshair programmiert das ich über
ein 3D Fullscreen gelegt habe.

Ich habe dazu einfach SetPixel_() genutzt, Text könnte man auch mit
TextOut_() setzen.
Das ist sicherlich nicht die "schönste" Variante, funktioniert aber flimmerfrei.
Für umfangreichere grafiken ist es womöglich nicht mehr so geeignet für kleinere Sachen reicht es aber aus, komt sicher auch auf CPU Auslastung an.

MSDN CDC Member Functions

http://msdn2.microsoft.com/en-us/librar ... S.71).aspx
PB 5.x & Win 7 64Bit
real
Beiträge: 468
Registriert: 05.10.2004 14:43

Beitrag von real »

Du hast aber schon bemerkt, dass Programmie in ein anderes Spiel reinzeichnen will.

Und da geht das, was Du vorgeschlagen hast, definitiv nicht (und schon gar nicht flimmerfrei).
Benutzeravatar
Programie
Beiträge: 1280
Registriert: 06.08.2005 22:56
Computerausstattung: https://www.sysprofile.de/id160800
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von Programie »

real hat geschrieben:Schau Dir mal den Speedometer-Mod fuer GTA an, in dem ein Analog-Tachometer in's Spiel eingeblendet wird. (Der Quellcode ist verfuegbar unter http://www.pawfectfilms.com/mods/speedo_src.zip)
So etwas Ähnliches möchte ich machen.
Es soll nicht nur ein Text/String auf dem Screen des Spiels dargestellt werden, sondern auch ein Bild (Wie bei dem Speedometer).

Aber es gibt noch ein "kleines" Problem: Ich verstehe kein C#-Code (oder was das ist). :(

Aber sonst: Danke für die Antworten! :allright:

PS: Kann man den C#-Code zu PureBasic-Code irgendwie "übersetzen"?

Achja, das mit dem Overlay hat leider nicht funktioniert. :(
BildBildBildBild
K.Putt
Beiträge: 122
Registriert: 01.09.2006 00:17

Beitrag von K.Putt »

real hat geschrieben:Du hast aber schon bemerkt, dass Programmie in ein anderes Spiel reinzeichnen will.

Und da geht das, was Du vorgeschlagen hast, definitiv nicht (und schon gar nicht flimmerfrei).
Schon klar,

1. definitiv nicht
2. schon gar nicht flimmerfrei

Komisch ist nur dass es bei mir geht,
aber die Antwort hast Du sicherlich schon:

1. es gibt mich gar nicht
2. schon gar nicht im PB Forum.
;-)

Du hättest vielleicht zuerst einfach mal nach Code fragen sollen :twisted:

Das hier ist ein ColorBot mit automatischer Positionierung der Maus
und zeichnen eines Fadenkreuzes in jeder beliebigen 3D FullScreen-
Anwendung.

Man starte das Spiel, dann diese Anwendung, scharf gemacht wird das Tool beim ersten Rechtsklick mit der Maus.

Enjoy.

Code: Alles auswählen

Titel$= "NameDesSpiels"				;Titel der Anwendung/Fenstername (Taskmanager)

;OpenConsole()
;EnableGraphicalConsole(#True)			;Bildschirmgrösse (ich hatte es auskommentiert, weiss nicht mehr warum)
;wx.w=GetSystemMetrics_(#SM_CXFULLSCREEN)	
;wy.w=GetSystemMetrics_(#SM_CYFULLSCREEN)
     
wx=1280
wy=1024
    
WindowID = FindWindow_(#Null, Titel$)
dc= GetDC_(WindowID)
     
center_x = wx/2-1
center_y = wy/2-2
halfsize = 20/2
    
Repeat

If GetAsyncKeyState_(#VK_RBUTTON)<>0
	If counter=0
  		WindowID = FindWindow_(#Null, Titel$)
  		If WindowID = 0 
      			Debug "Window not Exists"
    		EndIf
    	WindowDC.l = GetWindowDC_(#Null)
    	counter=1
  	EndIf
  
sleeptime = 1
range=16
r=8
While GetAsyncKeyState_(#VK_ESCAPE) <> -32767
	For i= 0 To range
      		For k= 0 To range
        		x=center_x-r+i
        		y=center_y-r+k
        		Colour = GetPixel_(GetDC_(WindowID), x, y)

			If colour=16185078
               			movex=r-range+i
          			movey=r-range+k        
          			mouse_event_(#MOUSEEVENTF_MOVE, movex,movey, 0, 0 )
          			;Sleep_(sleeptime) 
        		EndIf
        
           		For X2= center_x-range/2 To center_x+range/2
      				SetPixel_(dc, X2, center_y-range/2, RGB(55,100,200))
       				SetPixel_(dc, X2, center_y+range/2, RGB(55,100,200))
    			Next
    
    			For Y2= center_y-range/2 To center_y+range/2
      				SetPixel_(dc,  center_x-range/2,Y2, RGB(55,100,200))
    				SetPixel_(dc,  center_x+range/2,Y2, RGB(55,100,200))  
			Next
            
    		ReleaseDC_(WindowID, dc)  
        	;Delay(1) 
        	Next
    	Next
Wend
EndIf
;Delay(1)
ForEver 
;CloseConsole()
End 
Zuletzt geändert von K.Putt am 29.05.2007 01:47, insgesamt 2-mal geändert.
PB 5.x & Win 7 64Bit
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

K.Putt hat geschrieben:Komisch ist nur dass es bei mir geht,
aber die Antwort hast Du sicherlich schon:

1. es gibt mich gar nicht
2. schon gar nicht im PB Forum.
;-)
Bild
...und damit gewinnst du den Sarcasm-of-the-Day-Award...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
K.Putt
Beiträge: 122
Registriert: 01.09.2006 00:17

Beitrag von K.Putt »

Hehe, sorry :-)

Du hast schneller geantwortet als ich meinen Code zurechtgebogen habe,
meine Antwort hatte ich natürlich zum Beweis ergänzt.
PB 5.x & Win 7 64Bit
Benutzeravatar
D@nte
Beiträge: 324
Registriert: 24.04.2007 15:33
Wohnort: Berlin

Beitrag von D@nte »

Der Source von K.Putt ist ja ganz nett aber ist es mit dem auch irgendwie möglich komplexe Zeichenketten direkt auf den Screen zu bringen oder muss man da jeden Buchstaben einzeln mit Pixeln darstellen?!

Und flimmer frei ist der Source trotzdem nit...
Antworten