Timerdiff TimerInit Anwendungsproblem

07/03/2011 21:14 ouka#1
Edit
07/03/2011 22:50 lolkop#2
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 ouka#3
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 lolkop#4
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 ouka#5
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 Ludder231#6
Hatt er nicht etwas davon geschrieben du sollst sie anpassen die SendXtend befehle?
07/04/2011 18:52 lolkop#7
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 ouka#8
Quote:
Originally Posted by lolkop View Post
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 lolkop#9
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 =)