|
You last visited: Today at 05:10
Advertisement
AutoIt Pixelproblem
Discussion on AutoIt Pixelproblem within the AutoIt forum part of the Coders Den category.
06/28/2010, 17:58
|
#1
|
elite*gold: 0
Join Date: Mar 2010
Posts: 54
Received Thanks: 18
|
AutoIt Pixelproblem
Guten Tag,
ich bin noch mal, mit folgendem Problem: Ich habe mir mal einen "Pixelbot" gecodet, der nach dem bestimmten Pixel sucht und ihn dann anklickt. Das klappt auch alles sehr gut, nur möchte ich jetzt noch eine Funktion einbauen: Wenn ein anderer Pixel erscheint soll der Bot dann auch einmal auf diesen Pixel klicken. Leider passiert das in meinem Scipt noch nicht.
Danke!
|
|
|
06/28/2010, 18:51
|
#2
|
elite*gold: 0
Join Date: Jul 2009
Posts: 2,241
Received Thanks: 848
|
PHP Code:
$check = PixelSearch(...)
If _IsArray($check) Then
...
Else
...
EndIf
|
|
|
06/28/2010, 20:18
|
#3
|
elite*gold: 20
Join Date: Feb 2007
Posts: 3,080
Received Thanks: 4,294
|
ohne dein script gesehen zu haben kann man nur raten was bei dir nicht funktioniert.
|
|
|
06/28/2010, 23:02
|
#4
|
elite*gold: 0
Join Date: Mar 2010
Posts: 54
Received Thanks: 18
|
Okay, ich habe mal ein Testscript gemacht.
Also: Wir haben z.B. eine Plattform vor uns, in der sich rote Pixel bewegen. Auf diese Pixel soll der Bot klicken. Dann erscheint auf einmal ein weißer Pixel. Nun sieht man mehrere rote und den einen weißen Pixel. Der Bot soll nun aber nur auf den weißen Pixel klicken. Dann weiter auf die roten.
PHP Code:
#include <GUIConstants.au3>
#Region ### START Koda GUI section ### Form= $Form1 = GUICreate("Form1", 253, 145, 193, 125) $Checkbox1 = GUICtrlCreateCheckbox("Rot", 16, 40, 97, 17) GUICtrlSetState(-1, $GUI_CHECKED) $Checkbox2 = GUICtrlCreateCheckbox("Grün", 16, 64, 97, 17) GUICtrlSetState(-1, $GUI_CHECKED) $Label1 = GUICtrlCreateLabel("Nach welchen Farben sollen gesucht werden?", 16, 16, 224, 17) $Button1 = GUICtrlCreateButton("Start", 16, 96, 219, 33, 0) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ###
While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit
Case $Button1 EndSwitch WEnd
|
|
|
06/28/2010, 23:29
|
#5
|
elite*gold: 0
Join Date: Mar 2009
Posts: 2,317
Received Thanks: 1,255
|
ist zwar ein cpu killer wegen den vielen while schleifen, aber müsste klappen:
halt farbe und bildschirm anpassen...
dann einfach im spiel F1 bzw F2 drücken....
PHP Code:
HotKeySet("{ESC}", "_exit") HotKeySet("{F1}", "_rot") HotKeySet("{F2}", "_grun")
Func _rot() While 1 $B = PixelSearch(4, 145, 1016, 709, 0xDC2435) If IsArray($B) = True Then MouseMove($B[0], $B[1], 1) MouseClick("left") EndIf WEnd EndFunc
Func _grun() While 1 $B1 = PixelSearch(4, 145, 1016, 709, 0xF4AA15) If IsArray($B1) = True Then MouseMove($B1[0], $B1[1], 1) MouseClick("left") EndIf WEnd EndFunc
While 1 Sleep(100) WEnd
Func _exit() Exit EndFunc
|
|
|
06/28/2010, 23:48
|
#6
|
elite*gold: 0
Join Date: Mar 2010
Posts: 54
Received Thanks: 18
|
Das, mit meiner Theorie, im Vorpost, war nur ein Beispiel. Also, ich würde das Script gerne durch einen Klick, auf den Button starten. Auch die Checkboxen sollen mit eingebaut werden.
Danke!
|
|
|
06/29/2010, 08:24
|
#7
|
elite*gold: 0
Join Date: Mar 2008
Posts: 1,524
Received Thanks: 285
|
das ist ja wohl mehr als simpel,
einfach so machen:
PHP Code:
Case $Button1
if GUICtrlRead($Checkbox1) = 1 Then
ist ja wohl ziemlich selbst erklärend oder findest du nicht?
|
|
|
06/29/2010, 10:58
|
#8
|
elite*gold: 0
Join Date: Mar 2010
Posts: 54
Received Thanks: 18
|
Quote:
Originally Posted by bladerofdarknes
das ist ja wohl mehr als simpel,
einfach so machen:
PHP Code:
Case $Button1 if GUICtrlRead($Checkbox1) = 1 Then
ist ja wohl ziemlich selbst erklärend oder findest du nicht? 
|
Es geht ja leider auch nicht darum, wie man eine Checkbox checkt, sondern wie man nach 2 Pixeln suchen lässt.
Ich gebe mal eine kleine Starthilfe:
PHP Code:
#include <GUIConstants.au3>
#Region ### START Koda GUI section ### Form= $Form1 = GUICreate("Form1", 253, 145, 193, 125) $Checkbox1 = GUICtrlCreateCheckbox("Rot", 16, 40, 97, 17) GUICtrlSetState(-1, $GUI_CHECKED) $Checkbox2 = GUICtrlCreateCheckbox("Grün", 16, 64, 97, 17) GUICtrlSetState(-1, $GUI_CHECKED) $Label1 = GUICtrlCreateLabel("Nach welchen Farben sollen gesucht werden?", 16, 16, 224, 17) $Button1 = GUICtrlCreateButton("Start", 16, 96, 219, 33, 0) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ###
While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit
Case $Button1 if GUICtrlRead($Checkbox1) = 1 Then While 1 $ps = pixelsearch(xx,xx,xx,xx,0xxxxxx) If IsArray($ps) = True Then MouseClick("left",$ps[0],$ps[1]) EndIf
;So, jezt sucht der Bot nach der Farbe 0xxxxxx. Wie muss das jetzt aussehen, wenn auf einmal die andere Farbe auftaucht, auf die dann geklickt werden soll?
EndSwitch WEnd
|
|
|
07/03/2010, 23:57
|
#9
|
elite*gold: 0
Join Date: Mar 2010
Posts: 54
Received Thanks: 18
|
push
niemand ne lösung? oO
|
|
|
07/04/2010, 00:28
|
#10
|
elite*gold: 2
Join Date: Mar 2008
Posts: 1,778
Received Thanks: 1,222
|
Nur mal so zur Info:
Eine Checkbox kann mehrere Styles besitzen, also geht GUICtrlRead($CheckBox) = 1 nicht immer, besser ist If BitAND($CheckBox, 1) Then
Code:
#include <GUIConstants.au3>
#region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 253, 145, 193, 125)
$Checkbox1 = GUICtrlCreateCheckbox("Rot", 16, 40, 97, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Checkbox2 = GUICtrlCreateCheckbox("Grün", 16, 64, 97, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Label1 = GUICtrlCreateLabel("Nach welchen Farben sollen gesucht werden?", 16, 16, 224, 17)
$Button1 = GUICtrlCreateButton("Start", 16, 96, 219, 33, 0)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
If BitAND($CheckBox1, 1) Then
_PixelSearch(...) ;Hier einfach die PixelSearch Parameter rein für Rot
ElseIf BitAND($CheckBox2, 1) Then
_PixelSearch(...) ;Hier einfach die PixelSearch Parameter rein für Grün
Else
MsgBox(0, "Error", "Please tick one of the checkboxes.")
Exit
EndIf
EndSwitch
WEnd
Func _PixelSearch($iLeft, $iTop, $iRight, $iBottom, $iHex)
Do
$Color = PixelSearch($iLeft, $iTop, $iRight, $iBottom, $iHex)
If IsArray($Color) Then
MouseClick("left", $Color[0], $Color[1], 1)
EndIf
Until GUIGetMsg() = -3
EndFunc
|
|
|
All times are GMT +1. The time now is 05:10.
|
|