AutoIt Pixelproblem

06/28/2010 17:58 SpuaḺ#1
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 mipez#2
PHP Code:
$check PixelSearch(...)

If 
_IsArray($checkThen
...
Else
...
EndIf 
06/28/2010 20:18 kknb#3
ohne dein script gesehen zu haben kann man nur raten was bei dir nicht funktioniert.
06/28/2010 23:02 SpuaḺ#4
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"253145193125)
$Checkbox1 GUICtrlCreateCheckbox("Rot"16409717)
GUICtrlSetState(-1$GUI_CHECKED)
$Checkbox2 GUICtrlCreateCheckbox("Grün"16649717)
GUICtrlSetState(-1$GUI_CHECKED)
$Label1 GUICtrlCreateLabel("Nach welchen Farben sollen gesucht werden?"161622417)
$Button1 GUICtrlCreateButton("Start"1696219330)
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 omer36#5
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(414510167090xDC2435)
    If 
IsArray($B) = True Then
        MouseMove
($B[0], $B[1], 1)
        
MouseClick("left")
    EndIf
WEnd
EndFunc


Func _grun
()
While 
1
    $B1 
PixelSearch(414510167090xF4AA15)
    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 SpuaḺ#6
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 bladerofdarknes#7
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 SpuaḺ#8
Quote:
Originally Posted by bladerofdarknes View Post
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.:facepalm:

Ich gebe mal eine kleine Starthilfe:

PHP Code:
#include <GUIConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 GUICreate("Form1"253145193125)
$Checkbox1 GUICtrlCreateCheckbox("Rot"16409717)
GUICtrlSetState(-1$GUI_CHECKED)
$Checkbox2 GUICtrlCreateCheckbox("Grün"16649717)
GUICtrlSetState(-1$GUI_CHECKED)
$Label1 GUICtrlCreateLabel("Nach welchen Farben sollen gesucht werden?"161622417)
$Button1 GUICtrlCreateButton("Start"1696219330)
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

;
Sojezt sucht der Bot nach der Farbe 0xxxxxxWie muss das jetzt aussehenwenn auf einmal die andere Farbe auftauchtauf die dann geklickt werden soll?

    EndSwitch
WEnd 
07/03/2010 23:57 SpuaḺ#9
push

niemand ne lösung? oO

:awesome:
07/04/2010 00:28 PenGuin :O#10
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