Tratsch rund um Autoit / Autoit Talk | kleinere Fragen

04/08/2013 15:35 Cyddra#1051
Wenns schon so nen tollen Thread gibt... :)

Mouseklick geht nicht, da die Ziele nach einer bestimmten Zeit auftauchen und ich nichts "falsches" anklicken will.
Es geht um ein Handyspiel, das ich via Bluestacks am PC spiele.

Koordinaten sowie Farben habe ich mir schon rausgeschrieben, weiß allerdings nicht, wie ich das vernünftig anwenden kann! :)
04/08/2013 15:38 Achat#1052
Könntest du einen Screenshot von deinem Handyspiel und den Zielen hier [Only registered and activated users can see links. Click Here To Register...] hochladen? Sowie die Farbcodes der Ziele.

MfG
04/08/2013 15:40 Der-Eddy#1053
Entweder regelst du das über eine Wartezeit (Sleep) oder prüfst einen bestimmten Pixel über Pixelsearch bis er seine Farbe ändert auf eine gewünschte (z.B. ein Button wurde anklickbar oder erscheint)

das ganze wäre über Pixelsearch, Scheifen und If Abfragen lösbar
04/08/2013 15:43 butter123#1054
moinsen

wie funktioniert die imagesearch.au3 genau?
Ich habe eine unförmige figur, bei der sich der hintergrund ändert. hintergund löschen und transparent machen? oder wird transparenz nicht unterstützt?
04/08/2013 15:53 Cyddra#1055
Quote:
Originally Posted by Achat View Post
Könntest du einen Screenshot von deinem Handyspiel und den Zielen hier [Only registered and activated users can see links. Click Here To Register...] hochladen? Sowie die Farbcodes der Ziele.

MfG
Quote:
Originally Posted by Der-Eddy View Post
Entweder regelst du das über eine Wartezeit (Sleep) oder prüfst einen bestimmten Pixel über Pixelsearch bis er seine Farbe ändert auf eine gewünschte (z.B. ein Button wurde anklickbar oder erscheint)

das ganze wäre über Pixelsearch, Scheifen und If Abfragen lösbar
Ziel 1:
[Only registered and activated users can see links. Click Here To Register...]
Bereich 755,97 - 813,115
Farbe 0x889E0D

Ziel 2:
[Only registered and activated users can see links. Click Here To Register...]
Bereich 626,926 - 656,960
Farbe 0xFF6600

Ziel 3:
[Only registered and activated users can see links. Click Here To Register...]
Bereich 778,921 - 827,968
Farbe 0x565656

Zwischen jedem Ziel ist immer eine variable Zeitdauer, bis sich der Bildschirm ändert. Daher bringt Sleep auch nicht viel, da es mal 10 Sek oder mal 90 Sek dauern kann.
04/08/2013 16:05 butter123#1056
Quote:
Originally Posted by butter123 View Post
moinsen

wie funktioniert die imagesearch.au3 genau?
Ich habe eine unförmige figur, bei der sich der hintergrund ändert. hintergund löschen und transparent machen? oder wird transparenz nicht unterstützt?
noch ne 2. frage dazu:
ich hab 3 quadrate. in einem befindet sich die figur. allerdings sind die quadrate gedreht also eher rauten. ich will rausfinden in welchem sie ist. jetzt such ich den einfachsten weg^^

drehmatrix und alles grade machen und dann normal obs dazwischen war meine erste idee, ist aber auch relativ aufwändig.

zweite idee: in polarkoordinaten bringen und koordinaten ursprung verschieben und über den winkel gehen.
04/08/2013 16:46 Achat#1057
@butter & @ cyddra

PixelSearch kann benutzt werden, bei größeren Bildern mehrere Farbwerte prüfen,
bei dem Bild [Only registered and activated users can see links. Click Here To Register...] nach Blau suchen mit Pixelsearch, wenn dann bei 2. Pixelgetcolor($aPixelsearch[0]+X,$aPixelSearch[1]+Y) und 3. Pixelgetcolor($aPixelsearch[0]+X,$aPixelSearch[1]+Y) die Farbe auch dem Blau entspricht, dann wurde das Bild gefunden. $aPixelSearch entspricht der Position 1.

ImageSearch ist etwas verbuggt, außerdem erfordert ImageSearch eine DLL, zudem müssen noch Bilder von den Bildern eingebunden werden. PixelSearch/getcolor mit den richtigen Offsets ist eine gute Alternative zu Imagesearch.

Zur Geschwindigkeitsoptimierung:
Quote:
Originally Posted by Achat View Post
Aero Design deaktivieren, beschleunigt PixelSearch/GetColor um 100 bis 1000
ca. <0.1 ms / Pixelgetcolor

MfG
MfG
04/09/2013 09:34 Cyddra#1058
Quote:
Originally Posted by Achat View Post
@butter & @ cyddra

PixelSearch kann benutzt werden, bei größeren Bildern mehrere Farbwerte prüfen,
bei dem Bild [Only registered and activated users can see links. Click Here To Register...] nach Blau suchen mit Pixelsearch, wenn dann bei 2. Pixelgetcolor($aPixelsearch[0]+X,$aPixelSearch[1]+Y) und 3. Pixelgetcolor($aPixelsearch[0]+X,$aPixelSearch[1]+Y) die Farbe auch dem Blau entspricht, dann wurde das Bild gefunden. $aPixelSearch entspricht der Position 1.

MfG
Ah ok, verstehe. Aber ein Befehl würde auch langen? Oder braucht man mehrere Referenzpunkte?
Wie genau packe ich das in eine Schleife, also dass er bei "If Not then" weitersucht?

EDIT: Also den ersten findet er immer und klickt auch brav dorthin. Ab dann ist irgendwie schluss...
04/09/2013 14:58 Requi#1059
Code:
$key = FileOpen("\key.txt")
StringReplace($key, "[LCLICK]", "")
StringReplace($key, "[RCLICK]", "")
StringReplace($key, "[EN]", "")
StringReplace($key, "[BS]", "")
FileClose($key)
Was ist daran falsch?
Wieso ersetzt er es nicht?

Also es passiert nada :(

Hab jz länger nicht mehr in AutoIt was gemacht und das wäre das einzige was mir einfällt

Quote:
Originally Posted by Cyddra View Post
Ah ok, verstehe. Aber ein Befehl würde auch langen? Oder braucht man mehrere Referenzpunkte?
Wie genau packe ich das in eine Schleife, also dass er bei "If Not then" weitersucht?

EDIT: Also den ersten findet er immer und klickt auch brav dorthin. Ab dann ist irgendwie schluss...
AutoIt macht nur 1 nach dem anderen. Aber, da du in einer Schleife bist, kann er ja nicht in den nächsten Befehl springen.
Du müsstest du das mit einem Timer in eins packen, dann sollte es funktionieren.
Oder ExitLoop. Bin mir aber nicht sicher ob das für While war oder nicht ;)
04/09/2013 15:33 -STORM-#1060
Du veränderst zwar die Variable $key, aber vergisst, den veränderten Text auch wieder in die Datei zu schreiben.
04/09/2013 16:00 Requi#1061
Also müsste ich den StringReplace auch als $key deklarieren, oder?
04/09/2013 16:03 Der-Eddy#1062
Jop
außerdem ihn vielleicht noch irgendwo hinspeichern, sonst bleibt es nur bei einer Variable im Script
04/09/2013 16:05 Requi#1063
Huch.
Daran gar nicht gedacht :D
04/09/2013 17:59 Cyddra#1064
Quote:
Originally Posted by Achat View Post
AutoIt macht nur 1 nach dem anderen. Aber, da du in einer Schleife bist, kann er ja nicht in den nächsten Befehl springen.
Du müsstest du das mit einem Timer in eins packen, dann sollte es funktionieren.
Oder ExitLoop. Bin mir aber nicht sicher ob das für While war oder nicht ;)
Ah ok, danke!
Ich hab gedacht, wenn pixelsearch den pixel findet und dann den mouseclick macht, das dann die Schleife beendet wird.

Vielleicht weiß ja jemand, wie man sowas dann beenden kann?
Evtl einfach mit dem mouseclick eine variable hochsetzten, die die While Schleife beendet?
04/09/2013 18:50 Der-Eddy#1065
Quote:
Originally Posted by Cyddra View Post
Ah ok, danke!
Ich hab gedacht, wenn pixelsearch den pixel findet und dann den mouseclick macht, das dann die Schleife beendet wird.

Vielleicht weiß ja jemand, wie man sowas dann beenden kann?
Evtl einfach mit dem mouseclick eine variable hochsetzten, die die While Schleife beendet?
Schau dir mal den Befehl ExitLoop an