Simples Leertasten drücken

05/31/2014 13:34 Hellreser#1
Hallo,

ich suche nun schon fast 2 Stunden verzweifelt nach einer Lösung, aber ich komme nicht weiter. Ich bin in AutoIt ein Neueinsteiger.

Ich brauche nur etwas ganz simples. Und zwar möchte ich in meinem Spiel (Arma 3) des öfteren die Leertaste drücken. Das ganze soll so schnell wie möglich passieren, am besten so schnell, als ob ich mehrmals auf einmal drücken würde.

Dabei will ich das ganze über die Taste 7 auf dem Numpad aktivieren. Deaktivieren sollte es sich automatisch nach "x" Tastendrücken. "x" will ich dabei selber jederzeit ändern können im Script.

Ich hoffe, es ist verständlich. Falls es schon irgendwo eine Antwort gibt, verzeiht es mir bitte.

Gruß und Dank Hellreser
05/31/2014 13:36 SickOfItAll#2
Also willst du nur einen An und Aus Button haben ? Oder das ganze Script haben ?
05/31/2014 13:41 Hellreser#3
Quote:
Originally Posted by SickOfItAll View Post
Also willst du nur einen An und Aus Button haben ? Oder das ganze Script haben ?
Mir dem hier sollte es ja die Leertaste Drücken:
Code:
Func Loop()
    Send( "{Space}" )
    Sleep(1)
 EndFunc
Ich weiß jetzt nicht, wie ich effektiv die For-Schleife setze und ich weiß nicht, wie ich das ganze per Druck auf die Taste 7 in anderen Programmen aktiviere.
05/31/2014 13:49 Terreox#4
Schau dir mal diese Funktion an -> [Only registered and activated users can see links. Click Here To Register...]
05/31/2014 16:07 Tiimä#5
Code:
HotKeySet("{NUMPAD7}", "_meinefunktion") ;Hotkey NUM7 zum starten

$x = "10" ;Wie oft SPACE gedrückt werden soll

While 1 ;Leerlauf bis NUM7 gedrückt wurde

WEnd

Func _meinefunktion()
    For $i = 0 To $x ; $x Wiederholungen (10)
        Send("{SPACE}") ;Drückt Space
        Sleep(10) ;Wartezeit bis zum nächsten Mal (einfach austesten was passt)
    Next ;Danach
    Exit ;Aus (Kannst ersetzen oder weglassen)
EndFunc
Bei weiteren Fragen, kannst mich ja mal in Skype adden: crazylumi
05/31/2014 19:18 Hellreser#6
Geil Timmä

Genau das habe ich gesucht. Läuft super. Vielen Dank
05/31/2014 22:32 alpines#7
Von der Optimierung her ist das Script hier Abfall

Die CPU-Auslastung ist unnötig hoch und das Script läuft Gefahr zu crashen, wenn der HotKey gedrückt wird, bevor $x deklariert wird.

Das hier sollte diese Mängel beheben
06/01/2014 10:36 YatoDev#8
sleep(100) ist effektiver als sleep(1000)
06/01/2014 11:40 alpines#9
Quote:
Originally Posted by »FlutterShy™ View Post
sleep(100) ist effektiver als sleep(1000)
Falsch.

HotKeys werden bei HotKeySet global als Event gesetzt, d.h. sie werden nicht in der Laufzeit des Programmes abgefragt sondern nur dann wenn die Taste gedrückt wird.
Anders bei _IsPressed, da ist das lokal und muss immer selber abgefragt werden.
Die Sleep(100) würden bewirken, das die Schleife 10x durchläuft während sie bei 1000 nur theoretisch einmal durchläuft.
Damit erhöhst du die CPU Auslastung, wenn innerhalb der While-Schleife ein GUIHandler wäre (ohne EventMode) dann würde ich Sleep(100) selbstverständlich verstehen - das ist hier aber nicht der Fall.
06/02/2014 17:57 ruffnirs#10
Quote:
$x = "10"...
warum das ganze als String?
Also letzen Endes ist es bei Autoit egal, aber das ist doch eine Zahl die als Integer genutzt wird also warum als String? :confused:
06/02/2014 18:41 alpines#11
Eine Frage des Codingstils.
06/02/2014 22:14 YatoDev#12
Quote:
Originally Posted by alpines View Post
Eine Frage des Codingstils.
ist bei autoit wirklich egal da ich denke das der interpret den datentyp ins jeweilige format automatisch konvertiert oder anders damit umgeht oder?
06/03/2014 06:57 alpines#13
Wird wohl vermutlich so sein.