Pixelsearch mit 2 Farben?

03/20/2012 15:41 Skatefreaky#1
Hey Com,

kann mir vielleicht einer sagen, ob es möglich ist, mit Pixelsearch nach 2 Farben zu suchen? Also z.B bei einem HP Balken. Wenn der leer ist, dann soll irgendwas passieren. Aber die HP sind nicht nur rot, wie es normalerweise ist. Bei manchen Attacken färbt sich der HP Balken auch schonmal grün und dann erkennt das Programm nicht, dass noch Leben im HP Balken ist, weil es nun nicht mehr rot sondern grün ist und führt das aus, was eigentlich nur passieren sollte, wenn der Balken leer, also das Monster tot ist.

Kann einer helfen? Vielen Dank schonmal.
03/20/2012 16:00 BotofWar#2
pixelserch rot,
if @error then
Pixelsearch grün
if @error then
tot
03/20/2012 16:14 lolkop#3
du kannst bei derartigen balken auch per PixelGetColor die farben in einer schleife untersuchen, und gleichzeitig den derzeitigen prozentuellen wert berechnen.

hilfreich hierbei kann es auch sein, auf die hintergrundfarbe, hinter dem "roten balken", zu prüfen, da diese in der regel nicht variiert.
03/20/2012 16:30 Skatefreaky#4
@Botofwar vielen Dank, es klappt. @lolkop Würd mich jetzt schon mal interessieren, wie man den prozentuellen Wert ausrechnet. Könntest du mir das kurz erklären?
03/20/2012 17:48 jacky919#5
Quote:
Originally Posted by Skatefreaky View Post
@Botofwar vielen Dank, es klappt. @lolkop Würd mich jetzt schon mal interessieren, wie man den prozentuellen Wert ausrechnet. Könntest du mir das kurz erklären?
Du kannst gucken wo der letzte Pixel des Balkens liegt. Dann teilst du die gesamte Länge durch die Position des letzten Pixels und schon hast du die aktuelle Prozentzahl. Am besten prüfst du einen vorderen Pixel und gehst dann schrittweise nach hinten. Um die richtige Performance zu erlangen, müsstest du dannach noch die Schrittlänge anpassen.
03/20/2012 18:22 Skatefreaky#6
Okay. Also was bedeutet die Gesamtlänge? Könntest du mir das vielleicht nochmal an nem Beispielsscript deutlicher machen?
03/20/2012 19:47 bollen#7
Hier ist mal ein Beispiel ich hab das wichtigste dazugeschrieben
mit der gesammtlänge meinte er die gesammte länge des Balkens
03/20/2012 21:14 lolkop#8
Quote:
Originally Posted by Skatefreaky View Post
Okay. Also was bedeutet die Gesamtlänge? Könntest du mir das vielleicht nochmal an nem Beispielsscript deutlicher machen?
angenommen deine hp-bar ist 50 pixel lang. daraus lässt sich ja dann logisch schließen, das 0 pixel 0% entsprechen, und 50 pixel 100%. hierraus lässt sich doch eine einfache verhältnisgleichung aufstellen.

X% zu länge Y verhält sich wie 100% zu länge 50. mathematisch (formal) ausgedrückt:
Code:
X   100
- = ---
Y   50
wobei X für deinen gesuchten prozentwert steht, und Y für die aktuelle länge.

stellt man diese gleichung nach X um, so erhält man:
Code:
X = (Y / 50) * 100
bzw
aktuellerProzentWert = (aktuelleLänge / gesamtLänge) * 100
sollte durch reine logik, bzw einfache mathematik sehr leicht verständlich sein =)
03/21/2012 06:56 Masterscripter#9
Ich versteh nicht wie er das dann eintragen soll. Ich mein ein Pixel hat ja x und y koordinate und um die Gesamtlänge auszurechen braucht man ja 2 Pixel. Meint ihr dann mit Gesamtlänge x und y Koordinate oder nur eines der beiden?
03/21/2012 11:19 lolkop#10
die x achse ist ja im grund nichts anderes als eine horizontale linie, linear wachsend von links nach rechts...

demzufolge kannst du dort den x wert, des sich am weitesten "rechts" befindlichen pixels, minus dem des sich am weitesten "links" befindlichen pixels nehmen, und hast die gesamtlänge...

Edit:
zur veranschauung hier nochmal ein screenshot:
[Only registered and activated users can see links. Click Here To Register...]
03/21/2012 18:07 Skatefreaky#11
Ja okay das versteh ich. Aber ich brauch doch trotzdem noch die Position des HP Balkens oder irre ich mich da? Kann ich die derzeitige Länge auch ausrechnen?
03/21/2012 20:48 lolkop#12
die derzeitige länge ist eben der letzte farbige pixel, welcher nicht die farbe des untergrunds hat, minus dem ersten pixel der hp leiste-.-

ein wenig nachdenken sollte schon drinn sein eigentlich :o
03/22/2012 07:21 Skatefreaky#13
Ja das weiß ich :p aber ich meinte wie man auf den Letzten farbigen (also roten) Pixel kommt? Wie man herausfindet wo gerade der letzze rote Pixel ist?
03/22/2012 10:14 lolkop#14
indem du einfach von vorne nach hinten durchläufst und guckst, welche farbe der pixel hat...

Code:
For $i=<ersterPixel> To <letzterPixel>
    If PixelGetColor($i, $y) <> ... Then ... ($i-1 ist wohl der letzte passende pixel)
Next
03/22/2012 18:06 Skatefreaky#15
Ich bin glaub ich zu blöd :p. Ich hab jetzt alles versucht, aber es kommt nie das richtige heraus...