Frage zu: While Schleife (loop) im Alias

03/10/2008 20:36 MaGm4#1
Hi, habe da mal eine frage ... und zwar
Ich möchte einen loop (while) in ein alias verpacken, so das im script an bestimmter stelle der alias aufgerufen wird und somit an dieser stelle erst auch der loop aktiv wird.

dachte mir das so zb.

Code:
€heroskill(
	While 
		Send("{NUMPAD7}")
		Send("{NUMPAD8}")
		€rndnumber = Random(3200, 4000)
		Sleep($rndnumber)
	Wend
)

nur weiß ich nun nicht , wie ich die alias in meine function einbaue und zu aktivieren
03/10/2008 20:51 sirru#2
Autoit?
03/10/2008 20:57 MaGm4#3
ja, bin aber schon dahinter gestiegen, das es so niemals funzen wird
ka, mußmir da noch bissle input reinfuttern
03/10/2008 22:29 sirru#4
Was willst du denn programmieren?
03/10/2008 23:22 MaGm4#5
beispiel...

funk _start
taste 1
sleep
taste 2
sleep
(nun mein loop)
taste 3
sleep
etc etc etc
Endfunk

atm bin ich soweit, das er meine schleife annimmt.
Problem ist nur, das er dann in der schleife hängt , paralel aber die primäre funktion nicht weiterführt, ..erst wenn der loop wieder endet
03/10/2008 23:48 sirru#6
Ich kann mit deinem pseudo-Code leider nicht viel anfangen, meinst du zwei Schleifen die parallel ablaufen?
03/11/2008 17:36 MaGm4#7
ok,,dann mal ausführlicher

ein beispiel code


Code:
[zeile | code -->
1       Func _run()
2       Send("u")
3	 = Random(100, 150)
4	Sleep()
5       Send("{NUMPAD3}")
6           	 = Random(100, 150)
7	Sleep()
8       MouseMove(453,191)
9       MouseDown("left")
10      MouseUp("left")
11	 = Random(100, 150)
12	Sleep()
13     [B][COLOR="Red"]_loop - ab hier soll paralell zum code ein loop laufen ohne das andere zu unterbrechen [/COLOR][/B]
14     Send("{NUMPADDOT}")
15     MouseMove(375,357)
16     MouseDown("left")
17     MouseUp("left")
18	 = Random(36000, 36800)
19	Sleep()
20    EndFunc
21
22    Func _loop()
23	While True
24		Send("{NUMPAD7}")
25		Send("{NUMPAD8}")
26		 = Random(3200, 4000)
27		Sleep()
28	Wend 
29     EndFunc
03/11/2008 18:25 sirru#8
Da es leider kein Multithreading (parallel ablaufenden Programmcode) in Autoit gibt, musst du das anders lösen. Ich hab mal was programmiert:
[Only registered and activated users can see links. Click Here To Register...]
Kann sein, dass es nicht funktioniert, ich habs nicht getestet. Müsste aber :D
03/11/2008 23:21 MaGm4#9
Deine Variante ist übelst aufwendig und würde auch dazu führen , das primär die while bis zum ende läuft und dann erst wieder der andere code.
Das sollte so funzen, wie wenn ichmir den kopf kratze und dabei spazieren gehe
beides gleichzeitig paralell ^^ ...
Dennoch thx für dein bemühen
03/12/2008 00:48 sirru#10
Deinen Pseudo-Code interpretiere ich als "Drück vier Tastenkombinationen und warte dann 36000 Sekunden, nach der dritten Tastenkombi drücke noch zusätzlich alle 4 Sekunden zwei Tasten". Was ich oben programmiert habe tut genau das.
Wenn du willst, dass die beiden Tasten nach einmaligem Durchlauf der Schleife wieder gedrückt werden kannst du dir ja beispielsweise ne Merkervariable erstellen, die von false auf true gesetzt wird nachdem die while einmal durchgelaufen ist und dann bei Durchlauf 1 der For-Schleife prüfen, ob der Merker gesetzt wurde.
Wie schon gesagt gibt es in Autoit kein Multithreading, man muss es sich deswegen etwas "komplizierter" machen.