pixel zählen

  • Habe auch ne Lösung gebastelt... dauert aber auch extrem lang lol... trotzdem hier mal zum testen

    [autoit]

    _PixelCount(0x000000)

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

    Func _PixelCount($Color,$sX=1,$sY=1,$eX=@DesktopWidth,$eY=@DesktopHeight)
    Local $Pixel
    For $X = $sX To $eX
    For $Y = $sX To $eY
    If PixelGetColor($X,$Y) = $Color Then
    $Pixel += 1
    ConsoleWrite($Pixel & @CRLF)
    EndIf
    Next
    Next
    EndFunc

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

    Einmal editiert, zuletzt von SiLenCa (7. Dezember 2009 um 21:36)

  • Das bei nem 24" Monitor mit 1960x1080 Auflösung :D

  • Hi,
    ein Beispielscript um die Koordinaten aller schwarzen Pixel einer Grafik in eine Datei zu schreiben und auch noch die Farben der einzelnen Pixel in einem Array vorzuhalten habe ich vor kurzem im engl. Forum gepostet.
    Es gibt noch etwas Potenzial zur Geschwindigkeitsverbesserung der reinen AutoIt-Lösung, aber1680x1050 in einigen hundert Millisekunden war dem dortigen Threadersteller schnell genug. Übrigens ging es dort nicht um einen Bot, es hat im Bezug auf die Antworten große Vorteile, wenn man die "Karten offen auf den Tisch legt"!

    Zitat

    Aber andererseits finde ich das sogar gut. Das behindert die Botter.

    Naja, sagen wir mal so, wer darauf angewiesen ist, in einem sehr simplen Computerspiel zu betrügen bzw. nicht in der Lage ist, virtuelles Pixel-"Vermögen" auf rechtmäßige Art und Weise zu erreichen, dem fehlt auch meist der "Skill" um ein simples Script so umzuschreiben (und per Suchfunktion erstmal zu finden ^^ ), daß es auf die eigenen Anforderungen passt.... :rolleyes: Daher habe ich meistens kein Problem mit dezenten Hinweisen.

  • Habe es nocheinmal anders Versucht, jedoch ohne jegliche Beschleunigung ;)

    PixelGetColor Methode - 2207.39970534639ms für 10x10 Pixel

    Spoiler anzeigen
    [autoit]

    _PixelCount(0x000000,1,1,10,10)

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

    Func _PixelCount($Color,$sX=1,$sY=1,$eX=@DesktopWidth,$eY=@DesktopHeight)
    Local $Pixel = 0
    $t = TimerInit()
    For $X = $sX To $eX
    For $Y = $sX To $eY
    If PixelGetColor($X,$Y) = $Color Then
    $Pixel += 1
    ConsoleWrite($Pixel & @CRLF)
    EndIf
    Next
    Next
    ConsoleWrite("Es wurden " & $Pixel & " Pixel in " & TimerDiff($t) & "ms gefunden.")
    EndFunc

    [/autoit]

    PixelSearch Methode - 2172.71497319062ms für 10x10 Pixel

    Spoiler anzeigen
    [autoit]

    _PixelCount(0x000000,1,1,10,10)

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

    Func _PixelCount($Color,$sX=1,$sY=1,$eX=@DesktopWidth, $eY=@DesktopHeight)
    Local $Pixel = 0
    $t = TimerInit()
    For $X = $sX To $eX
    For $Y = $sX To $eY
    $Coord = PixelSearch( $X, $Y, $X, $Y, $Color)
    If Not @error Then
    $Pixel += 1
    ConsoleWrite($Pixel & "Pixel wurden gefunden." & @CRLF & "Der letzte bei: " & $Coord[0] & "," & $Coord[1] & @CRLF)
    EndIf
    Next
    Next
    ConsoleWrite("Es wurden " & $Pixel & " Pixel in " & TimerDiff($t) & "ms gefunden.")
    EndFunc

    [/autoit]
  • Naja, sagen wir mal so, wer darauf angewiesen ist, in einem sehr simplen Computerspiel zu betrügen bzw. nicht in der Lage ist, virtuelles Pixel-"Vermögen" auf rechtmäßige Art und Weise zu erreichen, dem fehlt auch meist der "Skill" um ein simples Script so umzuschreiben (und per Suchfunktion erstmal zu finden ^^ ), daß es auf die eigenen Anforderungen passt.... :rolleyes: Daher habe ich meistens kein Problem mit dezenten Hinweisen.

    naja bei dem spiel geht es halt um schnelligkeit^^ un da manche nur nach den items gucken un die grabben un ich die monster kill hab ich meist keine chance beim grabben...

  • Zitat

    naja bei dem spiel geht es halt um schnelligkeit^^ un da manche nur nach den items gucken un die grabben un ich die monster kill hab ich meist keine chance beim grabben...

    nothing more to say...

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D