pixelgetcolor im Hintergrund?

03/04/2009 23:08 Enders#1
wie der titel schon sagt würde ich gerne wissen ob es auch ein pixelgetcolor fürn hintergrudmode gibt(wär ja komisch da es ja die grafik an dem punkt sucht:D)
oda wie mann sowas lösen kann

also ich brache das zu folgendem:

ich lasse ich schleife so lang durch laufen bis der der nächste gegner (durch ständiges "nächstbefindlicher gegner" drücken:D) der fern kämpfer ist
also While not pixelgetcolor (......)
......
WEnd
lauf zu fehrkämpfer und beende

die brache ich da die nah kämpfer immer unter schiedlich lange dauern getöten zu werden.

lg ender
03/04/2009 23:44 blauwiggle#2
Quote:
Originally Posted by Enders View Post
wie der titel schon sagt würde ich gerne wissen ob es auch ein pixelgetcolor fürn hintergrudmode gibt(wär ja komisch da es ja die grafik an dem punkt sucht:D)
oda wie mann sowas lösen kann

also ich brache das zu folgendem:

ich lasse ich schleife so lang durch laufen bis der der nächste gegner (durch ständiges "nächstbefindlicher gegner" drücken:D) der fern kämpfer ist
also While not pixelgetcolor (......)
......
WEnd
lauf zu fehrkämpfer und beende

die brache ich da die nah kämpfer immer unter schiedlich lange dauern getöten zu werden.

lg ender
Ein Blick in der Hilfe, hätte dir das hier gezeigt:

Function PixelGetColorPixelGetColor ( x , y [, hwnd] )


Parameters
x x coordinate of pixel. y y coordinate of pixel. hwnd [optional] Window handle to be used.
03/05/2009 14:38 Dunham#3
hmm funktioniert das auch richtig? weil wenn ja könnte man dadurch doch so ne art "pixelchecksum" schreiben ^^ x bis x und y bis y jeden pixel checken dann die werte addieren und damits vll nicht so ne groé zahl wird durch 10, 100 oder so teilen...

also vll etwa so ka ob es geht
PHP Code:
Func bgpixelcheck($x1$x2$y1$y2$window)
    
$hwnd $window
    $dx 
$x2 $x1
    $dy 
$y2 $y1
    $bgpixelcheck 
0
    
For $i $dy To 1 Step -1
        $y 
$y1 1
        
For $i $dx To 1 Step -1
            $x 
$x1 1
            $bgpixelcheck 
$bgpixelcheck PixelGetColor($x$y$hwnd)
        
Next
    Next
EndFunc   
;==>bgpixelcheck 
03/05/2009 21:08 tonitusch666#4
jo also nö das funktioniert nicht wirklich im "hintergrund", man kann zwar mit den Autoit funktionen die pixel lesen oder auch checksum prüfen, das fenster muss dabei nicht das vorderste aktive sein, ABER der Bereich wo man die pixel liest darf nicht durch ein anderes fenster überdeckt sein. Das hat folgenden Grund: Autoit benutzt GDI um den Device Context des Screens zu bekommen (GetDC), wenn man so die pixel eines directx fenster liest sind die alle schwarz (zumindest ist das sicher so in Vista), was jedoch geht ist den DC vom ganzen Screen zu holen, den offset des fenster bestimmen und dann die pixel relativ lesen, daher darf der Bereich nicht überdeckt sein.
In Autoit wird übrigens die Adler32 checksum benutzt, die ist recht kompakt und performant zu implementieren und hat eine recht gute Genauigkeit.

Das könnte aber recht spannend sein das mit DX9 hinzubekommen, dann könnte man im background auch pixelcolor/pixelchecksum usw. benutzen. Ich hab da ein openspurce tool gefunden, das das können sollte Taksi, hat aber bei mir unter Vista und mit GW nicht funktioniert. Vielleicht könnte das weiterhelfen [Only registered and activated users can see links. Click Here To Register...]

mfg
03/05/2009 23:20 Dunham#5
hmm hab ichs mir schon gedacht... bzw schonmal getestet.. schade eigenlich
03/06/2009 14:27 Kaneoxi#6
Für jmd mit zwei Monitoren, müsste dann die Prüfung aber funktionieren? Zumindest wenn er auf dem zweiten Monitor nur GW laufen hat.
03/06/2009 14:59 Enders#7
also pixelgetcolour (x , y , "Guild Wars") geht auch im hinter grund
habs mal aus getestet und einfach ein fenster von die auszulesende stelle geschoben funktionierte ohne probleme.
03/06/2009 15:19 Dunham#8
bist du dir sicher? haste auch mal den pixel verändert?
03/06/2009 15:32 blauwiggle#9
Quote:
Originally Posted by Dunham View Post
bist du dir sicher? haste auch mal den pixel verändert?
Selber testen, dann weist du es auch ;)
03/06/2009 15:43 Dunham#10
jo hab ich deshalb frag ich ja ^^
03/06/2009 16:39 Enders#11
also joar ich habs ma verändert
also ziehmlich sicher das es geht
hab nen while not pixelgetcclour schleife
also sehe ich ja wann er die verlässt und aufgibt
03/06/2009 17:14 Dunham#12
hmm dann müsste das ja meine idee auch umsetzen können
03/06/2009 18:54 Enders#13
try and error;)
03/06/2009 19:23 Moppel123#14
aber Pixlesearch geht leider nicht :(

wäre echt hammer, ne goldifunc im hintergrund zu haben :-)
03/06/2009 21:24 tonitusch666#15
hmm also bei mir unter Vista32 klappts leider nicht, alles durchprobiert verschiedene coordmodes und als hwnd sowohl string als auch nen handle von getwindowhandle. Hat jemand das unter Vista hinbekommen?
Würde mich wundern wenn man über getpixel das performant hinbekommt, dazu gibts längliche diskussionen in diversen foren...