AutoIt - PixelGetColor Probem auf versch. PC

06/04/2008 19:38 mindless2k#1
Hallo,

möglicherweise kann jemand von Euch helfen. Derzeit bin ich dabei, einen
AOE Bot für Archlord zu schreiben. Dieser funktioniert recht ordentlich und
flott. Allerdings nur auf meinem Rechner und nicht auf einem anderen. Das
ist natürlich grossartig für mich aber nicht für andere ^.o

Das merkwürdiges Problem ist, dass ich mit PixelGetColor auf PC1 z.B. den
Farbwert 73695A erhalte aber auf PC2 einen völlig anderen Farbwert.

Versucht habe ich es mit allen Variationen der Auswertung. Da eine Änderung
der Texturaufösung sich nichts ändert, gehe ich davon aus, dass sich der
Farbwert sich von Monitor zu Monitor verändert (wg. Farbtemperatur) ?

Da der Bot auf jedem Rechner laufen sollte, benötige ich Hinweise und/oder
Lösungsansätze für diese Problem.

In der Zwischenzeit versuche ich dem Problem an die Kehle zu rücken. Sollte
ich eine Lösung finden, so poste ich diese hier.
06/04/2008 19:39 mark1212#2
do u have DARKRO duplicator or acc can u give it to me thx
06/04/2008 20:05 mindless2k#3
@mark1212 No i do not have any

Ok, nochmal zurück zu dem Problem. Wie es aussieht, habe ich vergessen,
dass Windows XP und Vista recht unterschiedlich sind. Zumindest was die
Darstellung betrifft. Also XP-Style, Aero usw.

Wie kann ich den tatsächlichen Fensterinhalt des aktiven Fensters korrekt
bestimmen, ohne Rücksicht auf mögliche verwendete Windows Styles zu
achten?

Grundsätzlich ist der Fensterinhalt doch unabhängig von dem "drumherum"?
Den Usern zu sagen, sie sollen alles auf Windows Standard setzen ist nicht
mein Ziel.

Software muss sich dem User anpassen und nicht andersrum!
06/04/2008 20:10 Normal111#4
Hi mindless2k,

ich erklär dir mal die Problematik mit der du momentan zu kämpfen hast.
Also es gibt folgende Faktoren bei einem pixelbasiernden Bot die dir Probleme bereiten könnten:
1. Der Farbwert richtet sich nicht an den Bildschirm^^, also kommt selbst der selbe Pixelwert raus wenn nichtmal einen Bildschirm angesteckt hast. :O

-Wenn dein Bot mit Archlord im Fenstermodus arbeitet -> Das Windowstheme -> Nicht jeder hat das selbe Windows aussehen wie du, z.b. sind bei manchen die Titelbars größer als bei den anderen etc.
-Die Auflösung von Archlord dadurch verschieben sich natürlich auch die gewünschten Pixel
-Farbtiefe von Archlord könnte auch der Fall sein siehe 16bit <> 32 bit
-etc. etc.

Ich schlage dir vor in Autoit, damit du das doch hinbekommst,dass dein Bot auf jeden Rechner läuft:
1. Archlord muss im Fenstermodus laufen
2. via winmove("Archlord",0,0) Das Archlordfenster oben links beim Bildschirm verschieben
3. Keine festen Werte für positionen hernehmen (am besten sollen diese automatisch geniert werden) sondern entweder mit PixelSearch (ein gebiet noch einer varition des pixels absuchen und die kordinaten bekommen z.b. Die Ziellebenbar ob überhaupt noch an manchen stellen die roten pixel vorhanden sind am besten bei 0% 1-40% 41-80% 91-100% aber ist natürlich deine Sache^^.

Versuch dich einfach mal mehr mit der PixelSearch Funktion anzufreunden : D.

EDDIT:// Du könntest mit wingetpos und WinGetClientSize doch mit pixelgetcolor arbeiten ;D sehs dir einfach mal an

Beim coden/skripten gibts keine festen Lösungswege, all dies ist dem coder/skripter vorenthalten ;-D.
06/04/2008 20:48 mindless2k#5
Hallo Normal111,

herzlichen Dank für die schnelle und informative Auskunft!

AutoIt ist ganz ok, normalerweise beschäftige ich mich ausschliesslich mit
PHP und MySQL Datenbanken, daher Neuland für mich aber mal eine Art
willkommenes Abenteuer ^^

Bevor ich Dein Reply gesehen habe, erzielte ich Ergebnisse mit Veränderung
des Window-Styles auf beiden Rechnern => Standard Darstellung. Ergebnis
waren identische Werte. Allerdings ist das ja nicht mein Ziel, dass der User
sein Windows umstellen muss aber immerhin komme ich voran.

Der Bot arbeitet im Fenstermodus, dies war mir lieber, denn konnte ich die
Messages des Bots besser lesen. Fullscreen musste der Bot mich whispern
und das war dann doch recht nervig auf Dauer :p

Inwiefern ist PixelSearch in Hinsicht auf Geschwindigkeit interessant? Einige
Aussagen laufen daraus hinaus, dass es wesentlich langsamer sein soll als
meine derzeitige Methode. Jedenfalls werde ich Deinen Tipp mal befolgen
und damit in der nächsten Version experimentieren.

Sehr interessant wäre auch, den kompletten Schirm in gleichmäßige Teilchen
aufzuteilen und dann auszuwerten... wie eine Matrix. Vermutlich mit Pixel-
Search möglich und elegant zu lösen.

Die jeweilige Auflösung des Clients kann man ermitteln und auf die jeweilige
Einstellung reagieren. Das habe ich mir schon einmal angeschaut. Das geht
dann in Richtung Deines Edits.

P.S. Deine Arbeit verfolge ich mit grossem Interesse ^.o Mein Kompliment!

EDIT
PixelSearch arbeitet besser als ich dachte. Schon erstaunlich, um wieviele Pixel die
verschiedenen Window Styles variieren O.o Dein Vorschlag, die HP Bar mit PixelSearch
zu prüfen, habe ich via checksum der Pixelarea realisiert. Ich denke, so kann ich am
schnellsten Ziele wechseln.