[Lernprogramm] Farbe erkennen draufklicken

  • Also habe selbst schon ein paar Programme mit AutoIT geschrieben (Autologin für ein Spiel). Halt etwas leichtes. Nun wollt ich mal was anderes machen und habe mich entschieden bei dem Spiel Runescape ein Programm zu schreiben, dass selbst bei diesen Mienen arbeitet.

    Mein Problem fängt schon gleich am Anfang an, und zwar bei Pixelsearch. Dort muss ich die Koordinaten eingeben nur weis ich nicht wo ich sie her bekomme und wie das so abläuft. Im moment sieht es so aus -> PixelSearch ( 0, 0, 0, 0, 0x845A36 ). Habe 0 benutzt weil ich nicht weis was ich da für zaheln benutzen soll. Sucht er so dann den ganzen Monitor nach der Farbe ab oder garnicht?

    MfG
    XaliadE

  • Wenn du die Forenregeln durchgelesen hättest, wüsstest du jetzt, dass hier keine Bots unterstützt werden.

    mfg Troin

  • Sollte eigentlich kein Bot sein, sondern einfach ne Übung. Habe Runescape ausgewählt, weil es mir spontan als erstes eingefallen ist von meiner früheren Spielzeit. Weis nicht wo ich ansonsten sowas trainieren kann. Wenn ihr vorschläge habt her damit.

  • Es muss ja nicht gleich ein Spiel sein um sowas zu trainieren... Du kannst auch auf dem Desktop irgendwas suchen.

    Um die Koordinaten herauszufinden benutze mal das "AutoIt Window Info" dort kannst du bequem die Koordinaten ablesen.

    mfg Troin

  • Ok Danke. Habe mal nun angefangen. Das mit AutoIT Window Info war mir auch klar, nur er gibt mir ja x und y Werte. Welche muss ich aber benutzen?

  • Wenn du da auf den Tab "Control" gehst bei Position, ist der erste Wert der vom linken Rand aus und der Zweite ist der Wert vom oberen Bildschirmrand aus.
    Deshalb ist ganz links oben in der Ecke auch der Wert 0, 0
    Wenn du das jetzt mit der Hilfedatei anschaust solltest du selbst auf die Lösung kommen.

    Parameter

    left Linke Koordinate des Rechteckes.
    top Obere Koordinate des Rechteckes.
    right Rechte Koordinate des Rechteckes.
    bottom Untere Koordinate des Rechteckes.
    colour Farbwert, der gesucht werden soll (dezimal oder hexadezimal).

    mfg Troin

  • So habe nun die Werte eingetragen. Und wie kann ich nun überprüfen ob alles richtig funktioniert? Habe einfach eine Farbe von einer Datei genommen. Müsste er dann von selbst die Maus dahin bewegen?

    Edit: Habe nun die Sufu benutzt und bin auf etwas gestoßen. Habe mal die Sachen von dort kopiert die ich für wichtig hielt und siehe da er fährt mit der Maus zum gewollten Punkt. So hier erstmal mein Script.

    [autoit][/autoit][autoit][/autoit][autoit]

    While True
    $pixel = PixelSearch ( 0, 0, 455, 476, 0x233654 )
    If Not @error Then
    MouseMove($pixel[0],$pixel[1])
    MouseClick("left")
    Endif
    WEnd

    [/autoit][autoit][/autoit][autoit][/autoit]

    Meine Frage nun was bedeutet dieses [0] und [1] bei MouseMove?

    Einmal editiert, zuletzt von XaliadE (17. Juli 2009 um 12:18)

  • Überleg doch mal ^^
    Du hast bis jetzt nur gesagt, dass er überprüfen soll ob eine Farbe vorhanden ist.
    Jetzt musst du ihm natürlich noch sagen, dass er die Maus dort hinbewegen bzw. klicken soll...

    Das Programm macht nur das, was du ihm befiehlst.

    mfg Troin

  • Wenn die Pixelsuche erfolgreich war wird ein Array zurückgegeben mit den Koordinaten.

    PixelSearch

    Rückgabewert
    Erfolg: Gibt ein Array mit zwei Elementen mit den Pixelkoordinaten zurück. (Array[0] = x, Array[1] = y)
    Fehler: Setzt @error auf 1 wenn die Farbe nicht gefunden wurde.

    Das Beispiel aus der Hilfedatei kann dir sicherlich helfen:

    [autoit]

    ; Find a pure red pixel in the range 0,0-20,300
    $coord = PixelSearch( 0, 0, 20, 300, 0xFF0000 )
    If Not @error Then
    MsgBox(0, "X and Y are:", $coord[0] & "," & $coord[1])
    EndIf

    [/autoit]

    Edit:
    Wenn dir der Begriff "Array" fremd ist, so lies dir mal das Array Tutorial durch:
    http://www.bug-fix.info/array_tut.htm

    mfg Troin