Pixel search

02/19/2008 15:51 63rrit#1
hallihallo
bin immoment dabei einen meiner eigenen bots zu optimieren und wollte ne Pixelsearchfunktion einbauen.
Leider weiß ich nicht genau wie man das macht vorallem mit den farben.

mein ziel:
3 verschiedene punkte im gw fenster(mit: x1;y1;;x2;y2;;x3;y3) sollen geprüft werden ob sie in GRÜN sind.
falls x1;y1 grün ist -> (dollerzeichen)folge = 1
falls x2;y2 grün ist -> (dollerzeichen)folge = 2
falls x3;y3 grün ist -> (dollerzeichen)folge = 3

wäre nett wenn mir einer dabei helfen könnte.
wenn es fragen zu meinem "ziel" gibt einfach fragen :D

danke schonmal

edit: mit GRÜN ist die farbe gemeint, in der der eigene charaktername gefärbt ist.
02/19/2008 16:59 Azunai#2
-------------Code Begin-----------


$coords1 = PixelSearch($left,$top,$right,$bottom,$color,$shad e,$step)

if @error then
$treffer1 = False
Else
$folge = 1
EndIf


$coords2 = PixelSearch($left,$top,$right,$bottom,$color,$shad e,$step)
if @error then
$treffer2 = False
Else
$folge = 2
EndIf


$coords3 = PixelSearch($left,$top,$right,$bottom,$color,$shad e,$step)
if @error then
$treffer3 = False
Else
$folge = 3
EndIf

#cs
die $coords werden als Koordinaten in einer array für den punkt wo die farbe gefunden wird wiedergegeben

also in form von:
$coords[0] = x
$coords[1] = y)
#ce
-------------Code Ende-----------
02/19/2008 22:08 63rrit#3
danke aber ich miene das eigentlich anders^^
hab aber etwas gefunden was meinen anforderungen entspricht :
Quote:
RicoPausB

Könnte man mit PixelGetColor irgendwie Farbe im Belohnungen-Fenster abfragen?

Beispiel:
Wenn die 10.000/10.000 angezeigt werden, ist ja die POS der ersten "1" immer fest, und somit auch die Farbe der Pixel (bei mir in HEX = =0xDAD8DA)

Ich dachte so an folgendes:

Im unteren Teil statt und nur eine Global-Variable "" und die auf "0" setzen ...

= PixelGetColor ( X , Y )
If Hex(,6) = "DAD8DA" Then
= 1
EndIf

Dann nach dem Travel kurz das Belohnungsfenster auf, Farbe checken, Fenster zu ...
Und wenn auf 1 is, dann exchange ...

Am Ende von exchange dann wieder auf 0 setzen ...

Somit könnte man erreichen, dass er immer bei 10.000 pts tauschen geht ... hoffe ich
------------EDIT CODE:(das bekannte problem mit dem "$" zeichen)-----------

$color = PixelGetColor ( X , Y )
If Hex($color,6) = "DAD8DA" Then
$fullpoints = 1
EndIf

--------------------------------------ENDE CODE-----------------------





nur halt in nem anderen zusammenhang angwendet...

ist denn der code wie er in der quote steht so machbar?
02/20/2008 02:25 -Anthrax-#4
Syntaxmäßig richtig, ist nur die Frage ob die Farbe auch wirklich DAD8DA ist ;P
Hatte da mit WindowInfo mal einige Probleme mit falschen Farbcodes , war sogar bei grün ^^
02/20/2008 11:56 Azunai#5
nimm einfach bei mir das mit pixelsearch das wird dir mehr helfen als nur 1nen pixel zu prüfen!

@ color such nach 0x00ff00 mit shader 5/bzw 10 und step 1
02/20/2008 16:31 sc ho ko#6
Zustimm. Pixelsearch eignet sich hier besser.
Wenn alle 3 stellen gleichzeitig grün sein sollen würd ich die Funktion verschachteln.

WinInfo ist Mist für Farben^^ Zumindest habe ich diese Erfahrung gemacht)
Mach am besten einen Screenshot und nimm ein Bildbearbeitungsprogramm her, um die Farbe zu bestimmen.
02/20/2008 16:58 -Anthrax-#7
das nenn ich umständlich ^^
Einfach ein Script dazu schreiben

------------Cut here--------------
WinActivate("Guild Wars")
sleep (4000)
call ("getcolor")
exit
func getcolor()
Opt("PixelCoordMode", 1)
$color=PixelGetColor(538,319); Hier x und y koordinate eingeben

msgbox(0, "Farbcode", $color)
EndFunc
------------Cut here--------------

damit bekommt man auf jeden fall die richtige
02/20/2008 17:09 Azunai#8
call ("getcolor")

...
ich dachte du lernst dazu^^

und außerdem sollen 3 stellen nach grün geprüft werden :P und nicht auf die 3 stellen geclickt :P
02/20/2008 21:07 -Anthrax-#9
warum geklickt? xD da wird nix geklickt.....da kommt ne msg box mit dem fabcode o.O kannste dann ebenso ner variable zuweisen und im Script überprüfen obs grün ist .......
zu Call......
Quote:
Call Calls a user-defined function contained in a string parameter.

Call ( "function" [, param1 [, param2 [, paramN ]]] )
wo zum Teufel issn dein Problem? xDDD
02/21/2008 18:58 Azunai#10
Remarks: The Call() Function... blablabla... Buffer Overflow.... blablabla ^^
02/21/2008 20:09 blackWorkx#11
hi,

habe auch ma ne frage zu pixel ...

Ich habe jetzt bei TQuellen die 2te Gruppe auch ein Figth Script geschrieben. Problem hier ist nur das diese nicht immer da steht und es sinnlos ist wenn der Char trotzdem dort hin rennen tut auch wenn kein gegener dort steht. Habe mir gedacht ne abfrage über die mini map zu machen so das des script die pixel in der minimap nach roten pukten in der bestimmten ecke wo die 2te gruppe ab und an steht abfragt und erst dann sich das figth Script nr.2 für die 2te gruppe aktiviert "If True fight2 balala.." If False kein fight2 blalal"

mfg
02/22/2008 11:13 sc ho ko#12
Wo ist jetzt deine Frage?
Müsste eigentlich porblemlos gehen, der Char muss hald immer in die selbe Richtung schauen und fast an der selben Stelle stehen, wenn du die Karte scannst.
02/22/2008 12:37 blackWorkx#13
Ja da ich mit pixel blala noch net so viel ahnung habe... wollt ich wissen wie der code ansatz weiße aussehen müsste...
02/22/2008 15:28 sc ho ko#14
Ich verwende aus verschiedenen Gründen immer eine eigene Funktion für pixelsearch.
Hab da normal noch immer paar andere Sachen drinnen. Hier das Grundgerüst.
[Only registered and activated users can see links. Click Here To Register...]
Musst aber nicht zwingend eigene Funktionen erstellen, ich finde hald es ist so übersichtlicher^^
02/22/2008 20:33 blackWorkx#15
Quote:
Ich verwende aus verschiedenen Gründen immer eine eigene Funktion für pixelsearch.
Hab da normal noch immer paar andere Sachen drinnen. Hier das Grundgerüst.
klick mich
Musst aber nicht zwingend eigene Funktionen erstellen, ich finde hald es ist so übersichtlicher^^
Danke dir.. wird mir helfen :D bissel anschauen durch hcekcken wie das so abläuft und dann wird das schon danke auf jeden.