Doppelklick-Bot

12/05/2010 23:10 Elborod#1
Servus,

ja, ich weiß, es ist wahrscheinlich nur eine Kleinigkeit, trotzdem würd ich gerne wissen, was ich hierbei falschgemacht habe.
PHP Code:
HotKeySet ("{F5},Start")
HotKeySet ("{F6},Close")

While 
1
    Func Start
()
        
$Klick MouseClick("left")
        If 
$Klick Then
            MouseClick 
("left")
        EndIf
    
EndFunc
WEnd

func Close
()
    Exit
EndFunc 
Ich wollte eigentlich nur, dass der Bot nocheinmal Klickt, wenn ich Klicke. Das Problem ist aber eher, dass der nicht mehr aufhört zu klicken oder?^^




Außerdem habe ich versucht einen Pixelbot für eine Shooter (CombatArms) zu schreiben.
Funktioniert ebenfalls nich ;)
PHP Code:
HotKeySet("{F6}""_exit")
HotKeySet("{F5}""_start")

Func _start()
While 
1
    $search 
PixelSearch(700,300,900,500,0x9A0003,40)
    If 
IsArray($searchThen
       MouseClick
("left")
    EndIf
WEnd
EndFunc


Func _exit
()
    Exit
EndFunc

While 1
    sleep
(1)
WEnd 
Naja falls jemand was Posten will würd ich mich freuen

Grüße
Stoani
12/05/2010 23:17 Samsusi#2
Warum schreibst du denn die Func Start() in die While-Schleife rein, das ist unnötig.


Code:
HotKeySet ("{F5}","Start")
HotKeySet ("{F6}","Close")

Func Start()
	Local $mousePos = MouseGetPos()
	MouseClick ("left",$mousePos[0], $mousePos[1],2)
EndFunc

Func Close()
	Exit
EndFunc

While True
	;Damit das Programm nicht zugeht
WEnd
Edit: habe das evtl etwas falsch verstanden, hier mein zweiter Versuch =D

Code:
Global $botEnabled=false
Global $dll = DllOpen("user32.dll")
HotKeySet ("{F5}","Start")
HotKeySet ("{F6}","Close")

Func Start()
	$botEnabled = true
EndFunc

Func Close()
	Exit
EndFunc

Func CheckForClick()
	if _IsPressed("01", $dll)  Then
	        Sleep(10);evtl variieren
		MouseClick ("left")
	EndIf
EndFunc

While True
        If $botEnabled Then
	        CheckForClick()
        EndIf
	;Damit das Programm nicht zugeht
WEnd
12/05/2010 23:34 Memphiisto#3
Quote:
Originally Posted by Elborod View Post
[PHP]HotKeySet ("{F5},Start")
HotKeySet ("{F6},Close")

While 1
Func Start()
$Klick = MouseClick("left")
If $Klick Then
MouseClick ("left")
EndIf
EndFunc
WEnd

func Close()
Exit
Soo gehts :D

PHP Code:
#include <misc.au3>

HotKeySet ("{F5},Start")
HotKeySet ("{F6},Close")

While 
1
Sleep 
10 )
WEnd

Func Start
()
While 
1
If _IsPressed(01Then
Sleep 
90 )
MouseClick ("left")
Endif
WEnd
EndFunc

Func Close
()
Exit
Endfunc 
12/05/2010 23:44 Elborod#4
Hey danke für die flotte Antwort :D

Ja das geht schon um einiges besser ;D

Leider funktioniert das ganze jetzt so, dass der Bot zwar zweimal Klickt, aber nur wenn ich
PHP Code:
("{F5}"
drücke. Da man bei einem Shooter eher selten mit F5 abrückt, ist das eher von Nachteil^^

Ich hab versucht den Mouseclick in HotKeySet einzubauen, aber das funzt nicht wirklich.

Grüße
Stoani
12/05/2010 23:53 Elborod#5
Quote:
PHP Code:
Global $botEnabled=false
Global $dll DllOpen("user32.dll")
HotKeySet ("{F5}","Start")
HotKeySet ("{F6}","Close")

Func Start()
    
$botEnabled true
EndFunc

Func Close
()
    Exit
EndFunc

Func CheckForClick
()
    if 
_IsPressed("01"$dll)  Then
            Sleep
(10);evtl variieren
        MouseClick 
("left")
    EndIf
EndFunc

While True
        
If $botEnabled Then
            CheckForClick
()
        EndIf
    ;
Damit das Programm nicht zugeht
WEnd 
Error ;) Irgendwas mit If is pressed. Soweit hab ich Autoit leider nicht kapiert^^

Trotzdem nochmal ein THANKS :pimp:
12/06/2010 07:37 Memphiisto#6
Wolltest du dass er einfach immer doppelt klickt sobald du das prog gestartet hast oder nur sibald F5 geklickt wurde?


Lg Magic
12/06/2010 07:57 Kamyshin#7
lies doch einfach - das Script soll doppelklicken wenn er einfach mit der Maus klickt. Ich weiß aber nicht ob das dann eine ewige Loop zur Folge hat :D

um _ispressed aufzurufen musst du vorher schon
#include <misc.au3>
verwenden.
12/06/2010 08:48 Memphiisto#8
Hab ich ja schon XD dann muss er den Hkey garnicht machen ( den Start )
Dann wärs so ...

PHP Code:
#include <misc.au3>

HotKeySet ("{F6},Close")


While 
1
If _IsPressed(01Then
Sleep 
90 )
MouseClick ("left")
Endif
WEnd


Func Close
()
Exit
Endfunc 
12/06/2010 15:41 Samsusi#9
Quote:
Originally Posted by Elborod View Post
Error ;) Irgendwas mit If is pressed. Soweit hab ich Autoit leider nicht kapiert^^

Trotzdem nochmal ein THANKS :pimp:
Es fehlt lediglich ein Include

Code:
#Include <Misc.au3>

Hier ein Copy&Paste-Fähiger Code

Code:
#Include <Misc.au3>

Global $botEnabled=false
Global $dll = DllOpen("user32.dll")
HotKeySet ("{F5}","Start")
HotKeySet ("{F6}","Close")

Func Start()
    $botEnabled = true
EndFunc

Func Close()
    Exit
EndFunc

Func CheckForClick()
    if _IsPressed("01", $dll) Then
		Local $mousePos = MouseGetPos()
		MouseClick ("primary",$mousePos[0],$mousePos[1],2)
    EndIf
EndFunc

While True
	If $botEnabled Then
		CheckForClick()
	EndIf
WEnd
Nach Starten der Exe - F5 Bot Starten / Aktivieren
- F6 Bot Beenden
12/06/2010 17:28 BlackHybrid#10
Quote:
Originally Posted by Samsusi View Post
Es fehlt lediglich ein Include

Code:
#Include <Misc.au3>

Hier ein Copy&Paste-Fähiger Code

Code:
#Include <Misc.au3>

Global $botEnabled=false
Global $dll = DllOpen("user32.dll")
HotKeySet ("{F5}","Start")
HotKeySet ("{F6}","Close")

Func Start()
    $botEnabled = true
EndFunc

Func Close()
    Exit
EndFunc

Func CheckForClick()
    if _IsPressed("01", $dll) Then
		Local $mousePos = MouseGetPos()
		MouseClick ("primary",$mousePos[0],$mousePos[1],2)
    EndIf
EndFunc

While True
	If $botEnabled Then
		CheckForClick()
	EndIf
WEnd
Nach Starten der Exe - F5 Bot Starten / Aktivieren
- F6 Bot Beenden
Der is schon so umständlich dass ich den schon fast net mehr verstehe :D

Hier nochmal einer der klappt auf jeden fall xD

PHP Code:
#include <Misc.au3>

HotKeySet("{F5}""Start")
HotKeySet("{F6}""Close")

Func Start()
    While 
1
        
If _IsPressed("01"Then
            $mousePos 
MouseGetPos()
            
MouseClick("left"$mousePos[0], $mousePos[1], 2)
        EndIf
    
WEnd
EndFunc   

Func Close
()
    Exit
EndFunc   

while (Sleep(1))
WEnd 
Und hier für dein anderen bot

PHP Code:
HotKeySet("{F6}""_exit")
HotKeySet("{F5}""_start")

Func _start()
While 
1
    $search 
PixelSearch(700,300,900,500,0x9A0003,40)
    If 
not @error Then
       MouseClick
("left",$search[0],$search[1])
    EndIf
WEnd
EndFunc


Func _exit
()
    Exit
EndFunc

While 1
    sleep
(1)
WEnd 
Allerdings bezweifel ich dass es geht, da die pixel bestimmt irgendwo in der Umgebung schon gebraucht werden.
12/07/2010 01:41 Samsusi#11
Wieso ist mein Code denn umständlich? ^^
Ich habe in der Endlosschleife eine Bool-Abfrage, ob der "Bot" gestartet ist, wenn ja, dann greift er auf die Funktion CheckForClick zu. In dieser wird geprüft ob der User geklickt hat, und reagiert entsprechend ;)

Zu dem Pixelsearch:

Warum definierst du nicht einfach ein Rechteck, welches sich nur um 20[LE] um die Mausposition herum befindet?
Damit minimierst du den Fall, dass der Pixel eventuell schon woanders sein könnte, als am Kopf des Gegners ^^

Code:
Local $mP = MouseGetPos()
Local $dx = 20
Local $search = PixelSearch(mP[0]-$dx,mP[1]-$dx,mP[0]+$dx,mP[1]+$dx,0x9A0003,40)
12/12/2010 14:16 Elborod#12
Danke Danke Danke für eure genialen Antworten ;D Ja die Idee mit dem Rechteck hatte ich auch schon in meine Bot eingebaut.

Nun gibt es noch ein Problem mit der Sache. Der Bot funktioniert irgendwie nicht, wenn CA gestartet ist. Vorher funktioniert er tadellos. Ich hab versucht, die Prioität im Taskmanager festzulegen aber das funzt irgendwie auch nicht.
Hat wer eine Ahnung wieso nicht?
Liegts daran, dass das Spiel nur im Vollbildmodus läuft?

nochmal Danke
Grüßé
Stoani
12/12/2010 14:19 BlackHybrid#13
Bei Vollbild kommt es darauf an wie die auflösung ist, ob sie die gleiche hat wie dein desktop oder so oder nicht, da der bot dann z.B. nicht mehr auf die position 1000, 1000 klicken kann, wenn du eine andere Auflösung im spiel hast
12/12/2010 14:30 Elborod#14
Es ist zwar eine andere auflösung, aber das dürfte diesen Bot eher wenig beeindrucken, da er ja eigentlich nichts mit pixelsearch oder so zu tun hat...

trotzdem ein dickes THX für die schnelle Antwort ;D

Güße Stoani
12/12/2010 15:02 BlackHybrid#15
Oh nicht aufgefallen aber bei games werden virtuelle eingaben oftmals geblockt.