|
You last visited: Today at 16:43
Advertisement
Zeitsteuerung
Discussion on Zeitsteuerung within the AutoIt forum part of the Coders Den category.
12/17/2009, 22:51
|
#1
|
elite*gold: 0
Join Date: Nov 2009
Posts: 44
Received Thanks: 1
|
Zeitsteuerung
Hallo zusammen.
Ich versuche derzeit eine Art zeitgesteuertes Script mit AutoIt zu erstellen.
Die Kurzbeschreibung, was das Script machen soll
- Dauerhaft diverse Tastendrücke ausführen
- Jede Stunde die Taste 5 betätigen
- Alle 15 Minuten die Taste 4 betätigen und 2 Mausklicks auf statische Koordinaten
- Alle 5 Minuten die Taste 6 betätigen
Nun mein derzeitiger vorhandener Code:
Code:
While 1
$timer = TimerInit ()
While 1
If TimerDiff ($timer) > 900000 Then
sleep(1000)
Send("4")
MouseClick("left", 802, 562, 2)
Sleep(1000)
MouseClick("left", 859, 605, 2)
sleep(13000)
ExitLoop
EndIf
While 1
If TimerDiff ($timer) > 3600000 Then
Send("5")
ExitLoop
EndIf
While 1
If TimerDiff ($timer) > 30000 Then
Send("6")
ExitLoop
EndIf
Sleep(500)
############################################################
# //--> Die eigentliche Funktion die dauerhaft läuft <--\\ #
############################################################
Sleep(500
WEnd
WEnd
WEnd
WEnd
Seid gnädig mit mir, ist mein erstes Script in AutoIt ^^
Nun die Frage: Gibt es da eine bessere bzw. elegantere Lösung, oder macht das Script das, was es wie o.g. soll. Denn eine Stunde warten ob auch alle Funktionen wirklich ihren Dienst erledigen wollte Ich dann doch nicht.
Gruss Madingo
|
|
|
12/17/2009, 22:52
|
#2
|
elite*gold: 0
Join Date: Dec 2008
Posts: 12,369
Received Thanks: 2,168
|
Quote:
Originally Posted by Madingo
Denn eine Stunde warten ob auch alle Funktionen wirklich ihren Dienst erledigen wollte Ich dann doch nicht.
Gruss Madingo
|
Dann setz die Timer was runter, sodass du nur eine Minute o.ä. warten musst...
|
|
|
12/17/2009, 22:54
|
#3
|
elite*gold: 0
Join Date: Nov 2009
Posts: 44
Received Thanks: 1
|
Quote:
Originally Posted by Cr0nicl3
Dann setz die Timer was runter, sodass du nur eine Minute o.ä. warten musst...
|
Würde mich das nicht unmengen von Ingame-Material kosten würde Ich das tun
|
|
|
12/18/2009, 00:35
|
#4
|
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 438
|
dann setz statt dem mouseclick ne msgbox
Thema eleganter: schau dir mal die Makros @MIN und @HOUR bzw. die Funktion TimerDiff() und TimerInit()
|
|
|
12/18/2009, 12:21
|
#5
|
elite*gold: 0
Join Date: Nov 2009
Posts: 44
Received Thanks: 1
|
Quote:
Originally Posted by | Moep |
dann setz statt dem mouseclick ne msgbox
Thema eleganter: schau dir mal die Makros @MIN und @HOUR bzw. die Funktion TimerDiff() und TimerInit()
|
Nochmal für AotuIt Newbies bitte ^^
Und zum Script:
Ich habe das jetzt vorerst mal mit Tränken und niedriger Zeitangabe probiert.
Allerdings ist es so, daß sobald die Zeit abgelaufen ist, die Tasten immerwieder gedrückt werden, und der Rest vom Script nicht mehr weiterläuft. Ich möchte aber, daß im Beispiel oben, die Taste 6 alle 5 Minuten betätigt wird, und danach das Script weiterläuft.
Kann mir da mal jemand ein Beispiel geben oder mir helfen bitte ? =/
|
|
|
12/18/2009, 13:02
|
#6
|
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 438
|

Damit kann man gut debuggen

mit @MIN und @HOUR kannst du die derzeitige Stunden und Minuten auslesen.
|
|
|
12/18/2009, 13:07
|
#7
|
elite*gold: 0
Join Date: Nov 2009
Posts: 44
Received Thanks: 1
|
Quote:
Originally Posted by | Moep |

Damit kann man gut debuggen

mit @MIN und @HOUR kannst du die derzeitige Stunden und Minuten auslesen.
|
Das behebt natürlich das Problem, daß die Tasten dauerhaft gedrückt werden. Danke -_-
Das mit MIN und HOUR habe Ich mittlerweile raus, aber keine Lösung auf das "Dauerdrücken".
Das Script macht das was es soll, eben mit dem kleinen Fehler, daß sobald die 5 Minuten beispielsweise abgelaufen sind, die Taste 6 immerwieder gedrückt wird, statt einmal.
Und jetzt nochmal: Wie muss Ich das im oben gezeigtem Code ändern, daß die Taste nur 1 mal alle 5 Minuten gedrückt wird ?
|
|
|
12/18/2009, 13:35
|
#8
|
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 438
|
Code:
$Timer1 = TimerInit()
$Timer2 = TimerInit()
$Timer3 = TimerInit()
While 1
If TimerDiff($Timer1)>= 5000 Then
$Timer1 = TimerInit()
ElseIf TimerDiff($Timer2) >= 15000 Then
$Timer2 = TimerInit()
ElseIf TimerDiff($Timer3) >= 60000 Then
$Timer3 = TimerInit()
EndIf
ToolTip("Timer1 = "&int(TimerDiff($Timer1)/1000)& @CRLF & _
"Timer2 = "&int(TimerDiff($Timer2)/1000)& @CRLF & _
"Timer3 = "&int(TimerDiff($Timer3)/1000))
WEnd
Jetzt bin ich aber mal gespannt ob du weißt was da passiert
|
|
|
12/18/2009, 14:00
|
#9
|
elite*gold: 0
Join Date: Apr 2009
Posts: 793
Received Thanks: 366
|
Quote:
Originally Posted by | Moep |

Damit kann man gut debuggen
|
Ich bevorzuge ConsoleWrite(); Pausiert das Script nicht
|
|
|
12/18/2009, 17:29
|
#10
|
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 438
|
Ja ok, kann man auch nehmen. Aber manchmal ist es auch ganz hilfreich das Script pausieren zu lassen.
|
|
|
12/19/2009, 19:59
|
#11
|
elite*gold: 0
Join Date: Nov 2009
Posts: 44
Received Thanks: 1
|
Ich hab´s hinbekommen.
//-> Ironie
Danke für die Hilfe..
Ironie <-\\
|
|
|
12/20/2009, 13:23
|
#12
|
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 438
|
Wieso Ironie? Also willst du dich nicht bei uns bedanken? pfff...
|
|
|
12/23/2009, 20:08
|
#13
|
elite*gold: 0
Join Date: Nov 2009
Posts: 44
Received Thanks: 1
|
Quote:
Originally Posted by | Moep |
Wieso Ironie? Also willst du dich nicht bei uns bedanken? pfff...
|
Bedanken ? Für genau was ?
Würdest Du dich bei nem Huchschuldozenten bedanken, wenn der dir erklärt das 1+1 = 2 ist ? Dir also Dinge erklärt die Du bereits weisst, aber nicht zur Lösung deines Problems führen ? Ja ? Respekt ^^
|
|
|
12/24/2009, 09:51
|
#14
|
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 438
|
Wenn dir jemand erklärt wie du 1+1 zusammenrechnest, muss er dir dann auch noch erklären wie du 10+10 rechnest oder wie du 1+1-2 rechnest? Nein! Er hat die das Werkzeug gegeben mit den du deine Probleme in Zukuft selber lösen kannst. Wenn du nämlich nicht verstehst wie du 1+1 rechnest, sondern dir nur merkst dass 1+1=2 ist, dann wirst du ihn bei jeder Aufgabe die ihr noch nicht zusammengerechnet habt wieder fragen müssen ob dein Ergebnis das richtige ist...
So, und nun um dir zu zeigen dass du mit mit ein bisschen Eigeninitiative mit meinem Ansatz zum Ziel gekommen wärst.
Dein Request:
Quote:
Originally Posted by Madingo
- Dauerhaft diverse Tastendrücke ausführen
- Jede Stunde die Taste 5 betätigen
- Alle 15 Minuten die Taste 4 betätigen und 2 Mausklicks auf statische Koordinaten
- Alle 5 Minuten die Taste 6 betätigen
|
Mein Lösungsansatz:
Quote:
Originally Posted by | Moep |
Code:
$Timer1 = TimerInit()
$Timer2 = TimerInit()
$Timer3 = TimerInit()
While 1
If TimerDiff($Timer1)>= 5000 Then
$Timer1 = TimerInit()
ElseIf TimerDiff($Timer2) >= 15000 Then
$Timer2 = TimerInit()
ElseIf TimerDiff($Timer3) >= 60000 Then
$Timer3 = TimerInit()
EndIf
ToolTip("Timer1 = "&int(TimerDiff($Timer1)/1000)& @CRLF & _
"Timer2 = "&int(TimerDiff($Timer2)/1000)& @CRLF & _
"Timer3 = "&int(TimerDiff($Timer3)/1000))
WEnd
|
Dein Request + Mein Lösungsansatz oder anders gesagt 1+1:
Code:
$Timer1 = TimerInit()
$Timer2 = TimerInit()
$Timer3 = TimerInit()
While 1
If TimerDiff($Timer1)>= 5*60000 Then
Send("6")
$Timer1 = TimerInit()
ElseIf TimerDiff($Timer2) >= 15*60000 Then
Send("4")
MouseClick("left",100,100)
MouseClick("left",200,200)
$Timer2 = TimerInit()
ElseIf TimerDiff($Timer3) >= 60*60000 Then
Send("5")
$Timer3 = TimerInit()
Else
Send("Diverse Tastendrücke")
EndIf
ToolTip("Timer1 = "&int(TimerDiff($Timer1)/1000)& @CRLF & _
"Timer2 = "&int(TimerDiff($Timer2)/1000)& @CRLF & _
"Timer3 = "&int(TimerDiff($Timer3)/1000))
WEnd
Frohe Weinachten.
|
|
|
12/24/2009, 19:12
|
#15
|
elite*gold: 0
Join Date: Nov 2009
Posts: 44
Received Thanks: 1
|
Quote:
Originally Posted by | Moep |
Wenn dir jemand erklärt wie du 1+1 zusammenrechnest, muss er dir dann auch noch erklären wie du 10+10 rechnest oder wie du 1+1-2 rechnest? Nein! Er hat die das Werkzeug gegeben mit den du deine Probleme in Zukuft selber lösen kannst. Wenn du nämlich nicht verstehst wie du 1+1 rechnest, sondern dir nur merkst dass 1+1=2 ist, dann wirst du ihn bei jeder Aufgabe die ihr noch nicht zusammengerechnet habt wieder fragen müssen ob dein Ergebnis das richtige ist...
|
Oder man bringt sich einfach alles selbst bei, weil jeder anders rechnet, und den anderen unter die Nase reiben will, daß er mit dem Löffel der Weisheit im Schnabel geboren wurde  :
Code:
#include <Timers.au3>
HotKeySet("!e", "_end")
$timer_1h = TimerInit()
$timer_15m = TimerInit()
$timer_5m = TimerInit()
While 1
If Int(TimerDiff($timer_1h )/ 1000) >= 3600 Then
Send("5")
$timer_1h = TimerInit()
EndIf
If Int(TimerDiff($timer_15m)/ 1000) >= 900 Then
sleep(1000)
Send("4")
MouseClick("left", 553, 760,2 )
Sleep(1000)
MouseClick("left", 618, 803, 2)
sleep(13000)
$timer_15m = TimerInit()
EndIf
If Int(TimerDiff($timer_5m)/ 1000) >= 300 Then
Send("6")
$timer_5m = TimerInit()
EndIf
[....]
WEnd
Func _end()
Exit
EndFunc ;==>_end
|
|
|
All times are GMT +1. The time now is 16:43.
|
|