Auto GetMousePos & Pixelsearch

06/07/2010 15:06 Traumverderber#1
Hi,
arbeite seid ein paar tagen jetzt an einen kleinen "klick-bot" für ein browsergame
würde es natürlich auch iergendwann mal public machen wenn er mal richtig funktzt.. Bin jetzt zurzeit an dem Problem angelangt das natürlich nicht jeder die Auflösung 1440 x 900 hat.
Hier mal das ganze script:
(Gui ist zurzeit nur profesorisch dargestellt)

PHP Code:
#region ---Au3Recorder generated code Start ---
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 GUICreate("Mojoklicker.v.1.0"20780467328)
$start GUICtrlCreateButton("Start"241615341$WS_GROUP)
GUICtrlSetFont(-1154000"MS Sans Serif")
GUICtrlSetCursor (-12)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

Opt("WinWaitDelay",100)
Opt("WinDetectHiddenText",1)
Opt("MouseCoordMode",0)

Global 
$Paused
HotKeySet
("p""TogglePause")
HotKeySet("{ESC}""Terminate")
HotKeySet("j""Mouse"

While 
1
    $nMsg 
GUIGetMsg()
    Switch 
$nMsg
        
Case $GUI_EVENT_CLOSE
            
Exit
        Case 
$start
            Start
()

    EndSwitch
WEnd

Func Start
()
_WinWaitActivate("Program Manager","")
MouseClick("left",284,887,1)
While 
2
_WinWaitActivate
("Online games – Seafight, the highlight of online pirate games - Mozilla Firefox","")
MouseClick("left",435,766,1)
WEnd
EndFunc

Func TogglePause
()
    
$Paused NOT $Paused
    
While $Paused
        sleep
(100)
        
ToolTip('Script is "Paused"',0,0)
    
WEnd
    ToolTip
("")
EndFunc

Func Terminate
()
    Exit 
0
EndFunc

Func Mouse
()
Mouseclick("left",291,720,1)
EndFunc

#region --- Internal functions Au3Recorder Start ---
Func _WinWaitActivate($title,$text,$timeout=0)
    
WinWait($title,$text,$timeout)
    If 
Not WinActive($title,$textThen WinActivate($title,$text)
    
WinWaitActive($title,$text,$timeout)
EndFunc
#endregion --- Internal functions Au3Recorder End ---

#endregion --- Au3Recorder generated code End ---  

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 GUICreate("Mojoklicker.v.1.0"20780467328)
$Button1 GUICtrlCreateButton("Start"241615341$WS_GROUP)
GUICtrlSetFont(-1154000"MS Sans Serif")
GUICtrlSetCursor (-12)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ### 
der eigentliche teil bezieht sich ja ledeglich nur auf:
PHP Code:
Func Start()
_WinWaitActivate("Program Manager","")
MouseClick("left",284,887,1)
While 
2
_WinWaitActivate
("Online games – Seafight, the highlight of online pirate games - Mozilla Firefox","")
MouseClick("left",435,766,1)
WEnd
EndFunc 
würde gerne an 2 Punkten was einfügen das der Benutzer selber seine Punkte/Markierungen setzen kann, weiß das sowas geht, aber wie? pixel search?,denke ist aber bestimmt schwer, hier das bild:
[Only registered and activated users can see links. Click Here To Register...]

wäre toll wenn man mir weiterhelfen könnte!
06/07/2010 15:30 AMrK#2
du kannst einfach ne funktion machen die den benutzter sagt er soll einen punkt makieren, indem er seine maus auf diesen punkt bewegt und dann z.B. STRG drückt... dadurch wird dann der Punkt gespeichert^^
Bsp.:
PHP Code:
#include <Misc.au3> ;Included die Misc.au3 für _IsPressed

Local $aBenutzerdefniertePosition ErzeugeBenutzterdefiniertePosition() ;Erzeugt Position
If Not @error Then ;Wenn es keinen Fehler gab
    Sleep
(1000) ;Wartet kurz
    MouseClick
("LEFT"$aBenutzerdefniertePosition[0], $aBenutzerdefniertePosition[1]) ;Klickt auf Position
EndIf

Func ErzeugeBenutzterdefiniertePosition()
    
Local $aMousePosition
    MsgBox
(0'Benutzerdefinierte Position''Klicken sie auf < OK > und bewegen sie ihre Maus bitte auf den "Use Joker"-Button und drücken sie dann STRG!') ;Zeigt einen Dialog
    
Do
        
Sleep(10)
    
Until _IsPressed("11") ;Wartet bis STRG gedrückt wird
    $aMousePosition 
MouseGetPos() ;Speichert die Position
    
If not @error Then ;Wenn es keinen Fehler gab
        MsgBox
(0'Benutzerdefinierte Position''Die Position ' $aMousePosition[0] & 'x' $aMousePosition[1] & ' wurde gespeichert!') ;Zeigt einen Dialog
        
Return $aMousePosition ;Gibt die Position zurück
    
Else
        
MsgBox(16'Benutzerdefinierte Position''Beim Speichern der Position ist ein Fehler aufgetreten!') ;Zeigt einen Dialog
        
Return SetError(10False) ;Gibt einen Fehler zurück
    
EndIf
EndFunc 
06/07/2010 15:45 Traumverderber#3
Quote:
Originally Posted by AMrK View Post
du kannst einfach ne funktion machen die den benutzter sagt er soll einen punkt makieren, indem er seine maus auf diesen punkt bewegt und dann z.B. STRG drückt... dadurch wird dann der Punkt gespeichert^^
Bsp.:
PHP Code:
#include <Misc.au3> ;Included die Misc.au3 für _IsPressed

Local $aBenutzerdefniertePosition ErzeugeBenutzterdefiniertePosition() ;Erzeugt Position
If Not @error Then ;Wenn es keinen Fehler gab
    Sleep
(1000) ;Wartet kurz
    MouseClick
("LEFT"$aBenutzerdefniertePosition[0], $aBenutzerdefniertePosition[1]) ;Klickt auf Position
EndIf

Func ErzeugeBenutzterdefiniertePosition()
    
Local $aMousePosition
    MsgBox
(0'Benutzerdefinierte Position''Klicken sie auf < OK > und bewegen sie ihre Maus bitte auf den "Use Joker"-Button und drücken sie dann STRG!') ;Zeigt einen Dialog
    
Do
        
Sleep(10)
    
Until _IsPressed("11") ;Wartet bis STRG gedrückt wird
    $aMousePosition 
MouseGetPos() ;Speichert die Position
    
If not @error Then ;Wenn es keinen Fehler gab
        MsgBox
(0'Benutzerdefinierte Position''Die Position ' $aMousePosition[0] & 'x' $aMousePosition[1] & ' wurde gespeichert!') ;Zeigt einen Dialog
        
Return $aMousePosition ;Gibt die Position zurück
    
Else
        
MsgBox(16'Benutzerdefinierte Position''Beim Speichern der Position ist ein Fehler aufgetreten!') ;Zeigt einen Dialog
        
Return SetError(10False) ;Gibt einen Fehler zurück
    
EndIf
EndFunc 
Erstmal danke für die schnelle antwort = )

Hab aber noch ein/zwei Problem(e),

1. Brauche 2 Optionen die zum festlegen gebraucht werden.
-------------------- Ok also ich hab jetzt schon herausgefunden wie
ich 2 Optionen festlegen kann, einfach nochmal das ganze kopieren und hinter ErzeugeBenutzterdefiniertePosition eine 2 geschrieben

2. Ich muss ja dann bei dem Use-Joker die gespeicherte position iergendwie
noch hier wo einfügen, wie genau ist mir aber unklar
PHP Code:
Func Mouse()
Mouseclick("left",291,720,1)
EndFunc 
einfügen..

so dann anscheinend auch bei der 2ten Option (hab da noch was verändert)
PHP Code:
Func Start()
While 
2
_WinWaitActivate
("Online games – Seafight, the highlight of online pirate games - Mozilla Firefox","")
MouseClick("left",435,766,1)
WEnd
EndFunc 
06/07/2010 15:54 AMrK#4
Wenn du nicht verstehst wie MouseClick funktioniert, solltest du erstmal bevor du nen Bot programmierst dir dazu die Hilfedatei anguckn ;)
die Positionen sind in dem Rückgabewert der Funktion die ich dir geschrieben habe gespeichert^^ unzwar so:
$Blabla[0] = X-Koordinate
$Blabla[1] = Y-Koordinate
06/07/2010 16:15 Traumverderber#5
Ok also hab jetzt bisschen probiert und meine optionen sehen so aus

PHP Code:
;<<<<<<<<< User Pos JOKER>>>>>>>>>>>>>>>
Local $aBenutzerdefniertePosition ErzeugeBenutzterdefiniertePosition() ;Erzeugt Position
If Not @error Then ;Wenn es keinen Fehler gab
    Sleep
(1000) ;Wartet kurz
    MouseClick
("LEFT"$aBenutzerdefniertePosition[0], $aBenutzerdefniertePosition[1]) ;Klickt auf Position
EndIf

Func ErzeugeBenutzterdefiniertePosition()
    
Local $aMousePosition
    MsgBox
(0'Benutzerdefinierte Position''Klicken sie auf < OK > und bewegen sie ihre Maus bitte auf den "Use Joker"-Button und drücken sie dann STRG!') ;Zeigt einen Dialog
    
Do
        
Sleep(10)
    
Until _IsPressed("11") ;Wartet bis STRG gedrückt wird
    $aMousePosition 
MouseGetPos() ;Speichert die Position
    
If not @error Then ;Wenn es keinen Fehler gab
        MsgBox
(0'Benutzerdefinierte Position''Die Position ' $aMousePosition[0] & 'x' $aMousePosition[1] & ' wurde gespeichert!') ;Zeigt einen Dialog
        
Return $aMousePosition ;Gibt die Position zurück
    
Else
        
MsgBox(16'Benutzerdefinierte Position''Beim Speichern der Position ist ein Fehler aufgetreten!') ;Zeigt einen Dialog
        
Return SetError(10False) ;Gibt einen Fehler zurück
    
EndIf
EndFunc  
;<<<<<<<<<<<<<  User Pos Ende  JOKER>>>>>>>>>>>>>

;<<<<<<<<<<<< 
USER POS MOJO  >>>>>>>>>>>>>>>>
Local $aBenutzerdefniertePosition ErzeugeBenutzterdefiniertePosition2() ;Erzeugt Position
If Not @error Then ;Wenn es keinen Fehler gab
    Sleep
(1000) ;Wartet kurz
    MouseClick
("LEFT"$aBenutzerdefniertePosition[0], $aBenutzerdefniertePosition[1]) ;Klickt auf Position
EndIf

Func ErzeugeBenutzterdefiniertePosition2()
    
Local $aMousePosition
    MsgBox
(0'Benutzerdefinierte Position''Klicken sie auf < OK > und bewegen sie ihre Maus bitte auf den "Mojo-Einwurf"-Button und drücken sie dann STRG!') ;Zeigt einen Dialog
    
Do
        
Sleep(10)
    
Until _IsPressed("11") ;Wartet bis STRG gedrückt wird
    $aMousePosition 
MouseGetPos() ;Speichert die Position
    
If not @error Then ;Wenn es keinen Fehler gab
        MsgBox
(0'Benutzerdefinierte Position''Die Position ' $aMousePosition[0] & 'x' $aMousePosition[1] & ' wurde gespeichert!') ;Zeigt einen Dialog
        
Return $aMousePosition ;Gibt die Position zurück
    
Else
        
MsgBox(16'Benutzerdefinierte Position''Beim Speichern der Position ist ein Fehler aufgetreten!') ;Zeigt einen Dialog
        
Return SetError(10False) ;Gibt einen Fehler zurück
    
EndIf
EndFunc  
;<<<<<<<<<<<<<<<<< USER POS MOJO ENDE >>>>>>>>>>>>>>>>>>> 
Meine Func sieht so aus:
Mojo:
PHP Code:
Func Start()
While 
2
_WinWaitActivate
("Online games – Seafight, the highlight of online pirate games - Mozilla Firefox","")
MouseClick("LEFT"$aBenutzerdefniertePosition[0], $aBenutzerdefniertePosition[1])
WEnd
EndFunc 
Joker:
PHP Code:
Func Mouse()
MouseClick("LEFT"$aBenutzerdefniertePosition[0], $aBenutzerdefniertePosition[1])
EndFunc 
Funktioniert soweit, bisauf das Joker die selbe pos hat wie Mojo, was auch klar ist weil beide ("LEFT", $aBenutzerdefniertePosition[0], $aBenutzerdefniertePosition[1]) haben.
aber weiß nich wie ichs ändern soll

----------------------------------------
Problem gelöst =)

PHP Code:
;<<<<<<<<< User Pos JOKER>>>>>>>>>>>>>>>
Local $aBenutzerdefniertePosition ErzeugeBenutzterdefiniertePosition() ;Erzeugt Position
If Not @error Then ;Wenn es keinen Fehler gab
    Sleep
(1000) ;Wartet kurz
    MouseClick
("LEFT"$aBenutzerdefniertePosition[0], $aBenutzerdefniertePosition[1]) ;Klickt auf Position
EndIf

Func ErzeugeBenutzterdefiniertePosition()
    
Local $aMousePosition
    MsgBox
(0'Benutzerdefinierte Position''Klicken sie auf < OK > und bewegen sie ihre Maus bitte auf den "Use Joker"-Button und drücken sie dann STRG!') ;Zeigt einen Dialog
    
Do
        
Sleep(10)
    
Until _IsPressed("11") ;Wartet bis STRG gedrückt wird
    $aMousePosition 
MouseGetPos() ;Speichert die Position
    
If not @error Then ;Wenn es keinen Fehler gab
        MsgBox
(0'Benutzerdefinierte Position''Die Position ' $aMousePosition[0] & 'x' $aMousePosition[1] & ' wurde gespeichert!') ;Zeigt einen Dialog
        
Return $aMousePosition ;Gibt die Position zurück
    
Else
        
MsgBox(16'Benutzerdefinierte Position''Beim Speichern der Position ist ein Fehler aufgetreten!') ;Zeigt einen Dialog
        
Return SetError(10False) ;Gibt einen Fehler zurück
    
EndIf
EndFunc  
;<<<<<<<<<<<<<  User Pos Ende  JOKER>>>>>>>>>>>>>

;<<<<<<<<<<<< 
USER POS MOJO  >>>>>>>>>>>>>>>>
Local $bBenutzerdefniertePosition ErzeugeBenutzterdefiniertePosition2() ;Erzeugt Position
If Not @error Then ;Wenn es keinen Fehler gab
    Sleep
(1000) ;Wartet kurz
    MouseClick
("LEFT"$bBenutzerdefniertePosition[0], $bBenutzerdefniertePosition[1]) ;Klickt auf Position
EndIf

Func ErzeugeBenutzterdefiniertePosition2()
    
Local $aMousePosition
    MsgBox
(0'Benutzerdefinierte Position''Klicken sie auf < OK > und bewegen sie ihre Maus bitte auf den "Mojo-Einwurf"-Button und drücken sie dann STRG!') ;Zeigt einen Dialog
    
Do
        
Sleep(10)
    
Until _IsPressed("11") ;Wartet bis STRG gedrückt wird
    $aMousePosition 
MouseGetPos() ;Speichert die Position
    
If not @error Then ;Wenn es keinen Fehler gab
        MsgBox
(0'Benutzerdefinierte Position''Die Position ' $aMousePosition[0] & 'x' $aMousePosition[1] & ' wurde gespeichert!') ;Zeigt einen Dialog
        
Return $aMousePosition ;Gibt die Position zurück
    
Else
        
MsgBox(16'Benutzerdefinierte Position''Beim Speichern der Position ist ein Fehler aufgetreten!') ;Zeigt einen Dialog
        
Return SetError(10False) ;Gibt einen Fehler zurück
    
EndIf
EndFunc  
;<<<<<<<<<<<<<<<<< USER POS MOJO ENDE >>>>>>>>>>>>>>>>>>> 
PHP Code:
Func Start()
While 
2
_WinWaitActivate
("Online games – Seafight, the highlight of online pirate games - Mozilla Firefox","")
MouseClick("LEFT"$bBenutzerdefniertePosition[0], $bBenutzerdefniertePosition[1])
WEnd
EndFunc



Func Mouse
()
MouseClick("LEFT"$aBenutzerdefniertePosition[0], $aBenutzerdefniertePosition[1])
EndFunc