|
You last visited: Today at 16:16
Advertisement
Hilfe
Discussion on Hilfe within the AutoIt forum part of the Coders Den category.
01/01/2012, 19:29
|
#1
|
elite*gold: 3
Join Date: Dec 2010
Posts: 183
Received Thanks: 19
|
Hilfe
AutoItSetOption("WinTitleMatchMode", 4)
Global $Paused
HotKeySet("{PAUSE}", "TogglePause")
HotKeySet("{ESC}", "Terminate")
$windowname="World of Warcraft"
$handle = WinGetHandle($windowname, "")
If @error Then
MsgBox(4096, "Error", "Could not find the correct window")
Else
while 1
ControlSend($windowname,'','',"Hi")
sleep(1500)
WEnd
Func TogglePause()
$Paused = Not $Paused
While $Paused
sleep(100)
WEnd
EndFunc
Func Terminate()
Exit 0
EndFunc
EndIf
Beim starten kommt die meldung:
Line 16 (XXXXXXXX) :
Func TogglePause()
Error: "If" statement has no matching "EndIf" statement.
|
|
|
01/01/2012, 19:33
|
#2
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
du kannst eine funktion nicht optional deklarieren.
funktions-definitionen immer ausserhalb von abfragen und schleifen anordnen.
|
|
|
01/01/2012, 19:37
|
#3
|
elite*gold: 574
Join Date: Nov 2010
Posts: 2,498
Received Thanks: 726
|
Deklariere die Funktionen em Ende des Scripts
PHP Code:
AutoItSetOption("WinTitleMatchMode", 4)
Global $Paused, $windowname = "World of Warcraft", $handle = WinGetHandle($windowname, "")
HotKeySet("{PAUSE}", "TogglePause")
HotKeySet("{ESC}", "Terminate")
If $handle = "" or @error Then MsgBox(4096, "Error", "Could not find the correct window") Else while 1 ControlSend($windowname,'','',"Hi") sleep(1500) WEnd EndIf
Func Terminate() Exit EndFunc
Func TogglePause() If $Paused = False then $Paused = True Elseif $Paused = True then $Paused = False Endif While $Paused = True sleep(100) WEnd Endfunc
|
|
|
01/01/2012, 19:53
|
#4
|
elite*gold: 0
Join Date: Mar 2009
Posts: 2,317
Received Thanks: 1,255
|
Quote:
If $Paused = False then
$Paused = True
Elseif $Paused = True then
$Paused = False
Endif
|
oder gleich:
$Pause = Not $Pause
|
|
|
01/01/2012, 23:56
|
#5
|
elite*gold: 0
Join Date: Nov 2009
Posts: 221
Received Thanks: 71
|
Code:
[FONT=Courier New][COLOR=#0000bb]Func TogglePause[/COLOR][/FONT][FONT=Courier New][COLOR=#007700]()[/COLOR][/FONT]
[FONT=Courier New][COLOR=#007700]If [/COLOR][COLOR=#0000bb]$Paused [/COLOR][COLOR=#007700]= [/COLOR][/FONT][FONT=Courier New][COLOR=#0000bb]False then[/COLOR][/FONT]
[FONT=Courier New][COLOR=#0000bb]$Paused [/COLOR][COLOR=#007700]= [/COLOR][/FONT][FONT=Courier New][COLOR=#0000bb]True[/COLOR][/FONT]
[FONT=Courier New][COLOR=#007700]Elseif [/COLOR][COLOR=#0000bb]$Paused [/COLOR][COLOR=#007700]= [/COLOR][/FONT][FONT=Courier New][COLOR=#0000bb]True then[/COLOR][/FONT]
[FONT=Courier New][COLOR=#0000bb]$Paused [/COLOR][COLOR=#007700]= [/COLOR][/FONT][COLOR=#0000bb][FONT=Courier New]False[/FONT][/COLOR]
[FONT=Courier New][COLOR=#007700]Endif[/COLOR][/FONT]
[FONT=Courier New][COLOR=#007700]While [/COLOR][COLOR=#0000bb]$Paused [/COLOR][COLOR=#007700]= [/COLOR][/FONT][FONT=Courier New][COLOR=#0000bb]True[/COLOR][/FONT]
[FONT=Courier New][COLOR=#0000bb]sleep[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]100[/COLOR][/FONT][COLOR=#007700][FONT=Courier New])[/FONT][/COLOR]
[COLOR=#0000bb][FONT=Courier New]WEnd[/FONT][/COLOR]
[FONT=Courier New][COLOR=#0000bb]Endfunc [/COLOR][/FONT]
so wie ich das sehe (verbesser mich wens falsch ist) ist das eine pause Funktion die ein und ausgeschalten werden (kann/sollte).
Sie lässt sich jedoch nur ein und nicht mehr abschalten da $Pause in der While Schleife nicht mehr abgefragt wird ändert sich der Zustand auch nicht mehr.
Du musst dort in die Schleife eine Abfrage einbauen
Code:
[FONT=Courier New][COLOR=#007700]While [/COLOR][COLOR=#0000bb]$Paused [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]True[/COLOR][/FONT]
[COLOR=#0000bb][FONT=Courier New][COLOR=#0000bb][COLOR=red]if .... then $pause=False[/COLOR][/COLOR][/FONT]
[COLOR=#0000bb][FONT=Courier New]sleep[/FONT][/COLOR][FONT=Courier New][COLOR=#007700]([/COLOR][COLOR=#0000bb]100[/COLOR][/FONT][COLOR=#007700][FONT=Courier New])[/FONT][/COLOR]
[COLOR=#0000bb][FONT=Courier New]WEnd[/FONT][/COLOR]
[/COLOR]
|
|
|
01/02/2012, 02:12
|
#6
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
hotkeys funktionieren in autoit als interrupts. dh das script springt aus der aktuellen schleife/funktion/abfrage, führt die hotkey funktion aus, und setzt die schleife/funktion/abfrage weiter fort.
dh, wird die pausefunktion aufgerufen, so wird der $pause zustand neu gesetzt, und die schleife wird mit dem neuen $pause zustand fortgesetzt. womit der schleifenkopf bei $pause=false direkt aus der schleife springt.
dennoch ist diese, unnötig komplizierte variante einer pause funktion, sehr ineffektiv und sollte immer durch eine einfache zustandswechselform, gepaart mit der zustandsabfrage in der main-schleife ersetzt werden.
|
|
|
01/02/2012, 13:43
|
#7
|
elite*gold: 3
Join Date: Dec 2010
Posts: 183
Received Thanks: 19
|
ok danke leute.
|
|
|
Similar Threads
|
HILFE HILFE HILFE MIT SjSro Startproblem
12/14/2009 - SRO Private Server - 4 Replies
Hi Leute hab ein Problem mit SjSro wenn ich auf starten klicke kommt diese Meldung Sorry.Failed to execute Silkroad. bitte helfen hab anti virus aus geht immer noch nicht wo liegt das problem
thx schon mal im voraus
BITTE HELFEN BITTE
WILL UMBEDINGT ZOCKEN!!
|
All times are GMT +1. The time now is 16:17.
|
|