Wie wird das Programm geschrieben ?

12/20/2011 17:25 .Stefan#1
Guten Tag, wie schreibt man in autoit folgendes Programm mit den Funktionen in Autoit ?

Der Bot soll :
- Ununterbrochen die Leertaste drücken bzw gedrückt halten
- So oft wie es möglich ist die "1" drücken und
- Alle 10 Sekunden die "2" drücken

Ich bin leider ein totaler anfänger und habe keine Ahnung

Mfg,
Stefan
12/20/2011 17:28 lolkop#2
lies dir die anfänger tutorials durch...
12/20/2011 17:31 .Stefan#3
Ich habe bisher das :

HotKeySet("ESC","_Exit")

while 1
Send("{SPACE DOWN}")

send("{y down}")
send("{1 down}")


WEnd

Func _Exit()
Exit
endfunc

Da fehlt jedoch die Taste "2" mit dem 10 sekunden abstand und die "1" wird iwie nicht richtig gesendet.
12/20/2011 17:33 TimeTooChill#4
lad dir die deutsche autoit hilfe runter so lernt mans meiner meinung nach am besten
[Only registered and activated users can see links. Click Here To Register...]

Quote:
send("{y down}")
send("{1 down}")
mach
send("y")
send("1")
sleep(10000)
send("2")
draus das reicht aus. :)
12/20/2011 17:44 lolkop#5
das sieht doch schonmal nach etwas aus =)

das du in deinem script keine "UP" befehle für die tastenm definiert hast, wird beim nächsten drücken der taste das ganze von autoit sowieso gemacht.

dh diese ganzen down befehle kannst du auch weglassen:
Code:
HotKeySet("ESC","_Exit")

while 1
    Send("{space}")
    Send('y')
    Send(1)
WEnd

Func _Exit()
Exit
endfunc
willst du nun noch eine zeitabfrage einbauen, so kannst du das über timerfunktionen machen.

TimerInit() hat als rückgabewert immer die aktuelle Laufzeit deiner CPU (in ms), gibt dir also eine art ZeitStempel zurück.
TimerDiff($ZeitStempel) subtrahiert den ZeitStempel von der aktuellen Laufzeit der CPU.

willst du also eine zeitabfrage einbauen machst du das folgendermaßen_
Code:
$ZeitStempel = TimerInit() ; Aktuelle Laufzeit in $ZeitStempel speichern.
While 1 ; Endlos-Schleife Starten
    If TimerDiff($ZeitStempel) >= 5000 Then ExitLoop
    ; Wenn die Differenz von aktueller Laufzeit und ZeitStempel
    ; 5000 ms überschreitet, so Springe aus der Schleife!
WEnd ; Endlos-Schleife Weiterführen
MsgBox(0, 'Info', '5 Sekunden sind vergangen!')
Edit:
Natürlich wird hier subtrahiert und nicht dividiert :s
12/21/2011 19:04 Genau123456#6
hier hab einen selst gemacht dafür das die taste f6 jeden 5 sec. gedrückt wird


HotKeySet("{NUMPAD3}", "an")
HotKeySet("{NUMPAD2}", "aus")

While 1
Sleep(1)
Wend

Func an ()
While 1
send("{F8}")
sleep(5000)
Wend
EndFunc

Func aus ()
exit 0
EndFunc



HotKeySet("{NUMPAD3}", "an") = mit der taste 3 auf dem numpad wird der script gestartet

HotKeySet("{NUMPAD2}", "aus") = mit der taste 2 auf dem numpad wird der script aus gemacht

send("{F8}") = die Taste die gedrück werden soll , in diesem fall F8

sleep(5000)= in welchem abstand die taste gedrück werden soll
(1000= 1 secunde ) in diesem beispiel 5 sec.


800er post :D^^
12/21/2011 20:22 lolkop#7
viele von den "scriptern" in dieser sektion scheinen immer noch nicht verstanden zu haben, das sleep das gesamte script blockiert...

will man getimte aktionen ausführen, nutzt man timer funktionen. genau dafür gibt es sie ja schließlig...

wenn ich weis das ich in 30minuten etwas machen soll, dann heist das doch lange nicht, das ich 30minuten lange jetzt nichts mehr tuhe, und auf das ereignis warten muss o0. natürlich gucke ich einfach ab und zu mal auf die uhr, und mache nebenbei das zeug was ich sowieso erledigen muss... sobald Aktuellezeit - Startzeit dann die 30minuten erreicht hat, bzw überschreitet, führe ich die gewünschte aktion aus.

und genau so schreibt man auch scripte. das ist die einfachste form von logik, welche man sich vorstellen kann. und dennoch scheint das ganze für einige leute zu kompliziert zu sein :S

wer in einer scriptsprache immernoch sleep befehle benutzt, um wartezeiten zu überbrücken, hat meiner meinung nach absolut garnichts von dem ganzen verstanden...