|
You last visited: Today at 01:38
Advertisement
Timerdiff TimerInit Anwendungsproblem
Discussion on Timerdiff TimerInit Anwendungsproblem within the AutoIt forum part of the Coders Den category.
07/03/2011, 21:14
|
#1
|
elite*gold: 226
Join Date: Apr 2008
Posts: 630
Received Thanks: 241
|
Timerdiff TimerInit Anwendungsproblem
Edit
|
|
|
07/03/2011, 22:50
|
#2
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
wenn die sends jeweils nacheinander ausgeführt werden sollen, so wie bei dir aktuell, würde ich dir empfehlen dir einen zustand anzulegen, und einen neuen timer. die timervariable hält die jeweilige startzeit, der zustand hält das jeweils auszuführende send.
der übersicht halber würde ich dann eine funktion definieren, welche dann immer wieder nur aufgerufen werden muss, welche sendet, den timer neu startet und den zustand um eins erhöht.
das ganze könnte etwa so aussehen:
Code:
Global $sendTimer, $zustand=1
Func SendXtend($param, $sleep, $nr)
If $zustand=$nr And TimerDiff($sendTimer)>=$sleep Then
ControlSend($Fenstername,"","",$param)
$sendTimer = TimerInit()
$zustand += 1
EndIf
EndFunc
eingesetzt in deine endlosschleife in der funktion (was auf jedenfall noch geändert werden sollte, da es den rest vom script blockiert), würde das ganze dann etwa so aussehen:
Code:
[...]
$zustand = 1
SendXtend("{F12}", Random($Zeit1-$zeit3,$Zeit2-$zeit3), 1)
SendXtend("{F12}", Random($Zeit1-$zeit3,$Zeit2-$zeit3), 2)
SendXtend("{F12}", Random($Zeit1-$zeit3,$Zeit2-$zeit3), 3)
SendXtend("{Tab}", Random($Zeit1,$Zeit2), 4)
If _getCurrentColor(652, 53) == $colorfeindbalken AND _getCurrentColor(515, 40) == $balken And _getCurrentColor(443, 33) <> $ignorieren Then
SendXtend("{F1}", Random($Zeit1,$Zeit2), 5)
SendXtend("{F2}", Random($Zeit1,$Zeit2), 6)
SendXtend("{F3}", Random($Zeit1,$Zeit2), 7)
SendXtend("{F4}", Random($Zeit1,$Zeit2), 8)
SendXtend("{F6}", Random($Zeit1,$Zeit2), 9)
SendXtend("{F7}", Random($Zeit1,$Zeit2), 10)
SendXtend("{F8}", Random($Zeit1,$Zeit2), 11)
SendXtend("{F9}", Random($Zeit1,$Zeit2), 12)
SendXtend("{F10}", Random($Zeit1,$Zeit2), 13)
SendXtend("{F11}", Random($Zeit1,$Zeit2), 14)
SendXtend("{F12}", Random($Zeit1-$zeit3,$Zeit2-$zeit3), 15)
SendXtend("{F12}", Random($Zeit1-$zeit3,$Zeit2-$zeit3), 16)
SendXtend("{F12}", Random($Zeit1-$zeit3,$Zeit2-$zeit3), 17)
EndIf
[...]
|
|
|
07/04/2011, 09:57
|
#3
|
elite*gold: 226
Join Date: Apr 2008
Posts: 630
Received Thanks: 241
|
Kiss! Danke!
Hättest du noch eine idee wie ich die endlos schleife umgehen könnte damit ich trotzdem meine scripte ablaufen lassen kann? Der script sendet zudem derzeit leider noch nicht die tastenkombis, wie kann ich denn sicherstellen das er dies tut? Ich mein er verschluckt doch das senden der taste falls die zeit dafür noch nicht richtig war oder?
|
|
|
07/04/2011, 15:40
|
#4
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
ich verstehe nicht was du mit verschlucken meinst...
für das umgehen der überflüssigen endlosschleife, gilt einfach immer nur eine endlosschleife nutzen.
Edit:
ich persöhnlich habe ja nicht dein script bzw das nötige programm, aber wenn ich die abfragen durch einen toogle schlater ersetze, und die controlsends durch consolewrites, würde ich etwa dieses script erhalten:
Code:
HotKeySet('{F1}', 'blubb')
Global $sendTimer, $zustand=1, $blubb, $killTimer
Global $Zeit1 = 1000, $Zeit2 = 1300, $zeit3 = 500
Func SendXtend($param, $sleep, $nr)
If $zustand=$nr And TimerDiff($sendTimer)>=$sleep Then
ConsoleWrite('ControlSend($Fenstername,"","","'&$param&'")'&@CRLF)
$sendTimer = TimerInit()
$zustand += 1
If Not $blubb And $zustand > 4 Or $zustand > 18 Then $zustand = 1
EndIf
EndFunc
Func KillCounterCheck($intervall)
If TimerDiff($killTimer)>=$intervall Then
ConsoleWrite('Kill Counter Check'&@CRLF)
$killTimer = TimerInit()
EndIf
EndFunc
Func blubb()
$blubb = Not $blubb
EndFunc
While Sleep(50)
KillCounterCheck(5000)
SendXtend("{F12}", Random($Zeit1-$zeit3,$Zeit2-$zeit3), 1)
SendXtend("{F12}", Random($Zeit1-$zeit3,$Zeit2-$zeit3), 2)
SendXtend("{F12}", Random($Zeit1-$zeit3,$Zeit2-$zeit3), 3)
SendXtend("{Tab}", Random($Zeit1,$Zeit2), 4)
If $blubb Then
SendXtend("{F1}", Random($Zeit1,$Zeit2), 5)
SendXtend("{F2}", Random($Zeit1,$Zeit2), 6)
SendXtend("{F3}", Random($Zeit1,$Zeit2), 7)
SendXtend("{F4}", Random($Zeit1,$Zeit2), 8)
SendXtend("{F5}", Random($Zeit1,$Zeit2), 9)
SendXtend("{F6}", Random($Zeit1,$Zeit2), 10)
SendXtend("{F7}", Random($Zeit1,$Zeit2), 11)
SendXtend("{F8}", Random($Zeit1,$Zeit2), 12)
SendXtend("{F9}", Random($Zeit1,$Zeit2), 13)
SendXtend("{F10}", Random($Zeit1,$Zeit2), 14)
SendXtend("{F11}", Random($Zeit1,$Zeit2), 15)
SendXtend("{F12}", Random($Zeit1-$zeit3,$Zeit2-$zeit3), 16)
SendXtend("{F12}", Random($Zeit1-$zeit3,$Zeit2-$zeit3), 17)
SendXtend("{F12}", Random($Zeit1-$zeit3,$Zeit2-$zeit3), 18)
EndIf
WEnd
wie du siehst werden die keys in den gewünschten intervallen genutzt, und der killcountercheck alle 5 sekunden ausgeführt.
je nachdem, wieviele zustände du dir definierst, musst du selbstverständlich die sendxtend funktion immer anpassen.
|
|
|
07/04/2011, 18:42
|
#5
|
elite*gold: 226
Join Date: Apr 2008
Posts: 630
Received Thanks: 241
|
Wenn ich das zb so teste am editor dann schreibt er nix, gleiches gilt wenn ich es in meinen script ienbaue für das dazugehörige programm
Code:
HotKeySet("!s", "blubb")
HotKeySet("!x", "_exit")
Global $sendTimer, $zustand=1, $blubb, $killTimer
Global $Zeit1 = 1000, $Zeit2 = 1300, $zeit3 = 500
global $Fenstername = "Unbenannt - Editor"
Func SendXtend($param, $sleep, $nr)
If $zustand=$nr And TimerDiff($sendTimer)>=$sleep Then
ConsoleWrite('ControlSend($Fenstername,"","","'&$param&'")'&@CRLF)
$sendTimer = TimerInit()
$zustand += 1
If Not $blubb And $zustand > 4 Or $zustand > 18 Then $zustand = 1
EndIf
EndFunc
Func KillCounterCheck($intervall)
If TimerDiff($killTimer)>=$intervall Then
ConsoleWrite('Kill Counter Check'&@CRLF)
$killTimer = TimerInit()
EndIf
EndFunc
Func blubb()
$blubb = Not $blubb
Farm()
EndFunc
func _exit()
Exit
EndFunc
While 1
sleep(150)
WEnd
Func Farm()
While Sleep(50)
KillCounterCheck(5000)
SendXtend("1", Random($Zeit1-$zeit3,$Zeit2-$zeit3), 1)
SendXtend("2", Random($Zeit1-$zeit3,$Zeit2-$zeit3), 2)
SendXtend("3", Random($Zeit1-$zeit3,$Zeit2-$zeit3), 3)
SendXtend("4", Random($Zeit1,$Zeit2), 4)
;~ If $blubb Then
SendXtend("5", Random($Zeit1,$Zeit2), 5)
SendXtend("5", Random($Zeit1,$Zeit2), 6)
SendXtend("6", Random($Zeit1,$Zeit2), 7)
SendXtend("7", Random($Zeit1,$Zeit2), 8)
SendXtend("8", Random($Zeit1,$Zeit2), 9)
SendXtend("9", Random($Zeit1,$Zeit2), 10)
SendXtend("10", Random($Zeit1,$Zeit2), 11)
SendXtend("11", Random($Zeit1,$Zeit2), 12)
SendXtend("12", Random($Zeit1,$Zeit2), 13)
SendXtend("13", Random($Zeit1,$Zeit2), 14)
SendXtend("14", Random($Zeit1,$Zeit2), 15)
SendXtend("15", Random($Zeit1-$zeit3,$Zeit2-$zeit3), 16)
SendXtend("16}", Random($Zeit1-$zeit3,$Zeit2-$zeit3), 17)
SendXtend("17", Random($Zeit1-$zeit3,$Zeit2-$zeit3), 18)
;~ EndIf
WEnd
EndFunc
|
|
|
07/04/2011, 18:46
|
#6
|
elite*gold: 0
Join Date: Aug 2010
Posts: 880
Received Thanks: 113
|
Hatt er nicht etwas davon geschrieben du sollst sie anpassen die SendXtend befehle?
|
|
|
07/04/2011, 18:52
|
#7
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
ich habe die controlsend befehle doch asuskommentiert.
du startest das ganze im scite editor und er schreibt in der console was er jeweils ausführen sollte...
das ersetzen des consolewrites durch die jeweilige controlsend funktion solltest du schon selbst hinbekommen
Edit:
und mal davon abgesehen hast du schonwieder 2 endlosschleifen am laufen -.-
|
|
|
07/04/2011, 18:57
|
#8
|
elite*gold: 226
Join Date: Apr 2008
Posts: 630
Received Thanks: 241
|
Quote:
Originally Posted by lolkop
ich habe die controlsend befehle doch asuskommentiert.
du startest das ganze im scite editor und er schreibt in der console was er jeweils ausführen sollte...
das ersetzen des consolewrites durch die jeweilige controlsend funktion solltest du schon selbst hinbekommen
Edit:
und mal davon abgesehen hast du schonwieder 2 endlosschleifen am laufen -.-
|
Okey das war jetzt net so das problem ^^ hab des ' net gesehen
PHP Code:
ConsoleWrite(ControlSend($Fenstername,"","",$param)&@CRLF)
und die erste while schleife ist doch nur damit das prog sich net gleich wieder schließt?!
|
|
|
07/04/2011, 19:03
|
#9
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
funktionen sollten generell nur für zustandsänderungen, oder sich ständig wiederholende vorgänge genutzt werden.
den rest lässt man immer in einer hauptschleife laufen =)
|
|
|
Similar Threads
|
TimerInit, TimerDiff
01/01/2010 - AutoIt - 7 Replies
Hallo ich brauchte mal ne kleine hilfe. Ich bin dabei einen Angelbot zu schreiben und würde gern eine Zeitbegrenzung in die Angelrauszieh Funktion machen. Ich verstehe aber das mit TimerDiff und TimerInit nicht wirklich, wäre toll wenn jemand mir meine Funktion so einstellen könnte, dass nach 15sec die Scheife verlassen wird und es mir erklähren könnte.
Func _Angelraus()
Do
Sleep (50)
$fischblase = PixelSearch(336, 52, 400, 95, 0xFcF8Fc, 5)
Until Not @error
Sleep (...
|
All times are GMT +1. The time now is 01:39.
|
|