hallo autoit - gemeinde,
ich habe mal eine frage ob man auch mit der
If Then funktion oder anderer, auch zeilen in einem script überspringen kann???
(ohne Else) :wacko:
mfg
hallo autoit - gemeinde,
ich habe mal eine frage ob man auch mit der
If Then funktion oder anderer, auch zeilen in einem script überspringen kann???
(ohne Else) :wacko:
mfg
Ja klar,
If $bla = 5 Then ...
Then wird nur gemacht wenn $bla wirklich 5 ist.
wenn das script aber in einer pause ist
und danach in einer anderen zeile weiter machen soll...???
wie spreche ich dann die zeile an von der aus das script weiterlaufen soll???
Es ist hier (mit hoher wahrschinlichkeit) sowas wie GOTO gemeint...
Nein, so ist das nicht (mehr) Möglich. Außer du schreibst dir einen eigenen Parser.
ja, so etwas wie goto... habe das mal gelesen
Da Goto einen Obfuscator überflüssig gemacht hat wurde es durch andere Strukturen wie While WEnd, For Next, Func EndFunc ersetzt.
Wenn dein Programm woanderst weiterlaufen soll musst du nur die Schleife abbrechen und anschließend per Funktion den gewünschten Code ausführen.
schleife abbrechen hört sich schon mal sehr gut an....
Global $bSchleifeRennt = True
Global $iTimer = TimerInit()
While $bSchleifeRennt
Sleep(200) ; Damit die Konsole nicht so zugemüllt wird
; Die Aktion in der Schleife
ConsoleWrite('Blubbersaft gibt selten Kraft.' & @CRLF)
; Nach 2 Sekunden aussteigen
;~ If TimerDiff($iTimer) > 2000 Then ExitLoop
; Alternativ auch so
If TimerDiff($iTimer) > 2000 Then $bSchleifeRennt = False
WEnd
ConsoleWrite('Schleife mit ExitLoop abgebrochen.' & @CRLF)
ConsoleWrite('Ich mache jetzt mit Exit das Licht aus' & @CRLF)
Exit
Beispiel zum Abbruch einer Schleife nach einer gewissen Zeit.
erst einmal danke für die schnellen antworten...
da werde ich als "newbie" wohl einiges ausprobieren müssen
Naja, eine alternative wäre auch Funktionen. Da kannst du dann deine Codes auslegen:
[autoit]ConsoleWrite(@CRLF)
[/autoit][autoit][/autoit][autoit]_F1()
_F2()
_F3()
ConsoleWrite(@CRLF)
[/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]Func _F1()
ConsoleWrite('"Sprung" zu Zeile ' & @ScriptLineNumber & @CRLF)
EndFunc
Func _F2()
ConsoleWrite('"Sprung" zu Zeile ' & @ScriptLineNumber & @CRLF)
EndFunc
Func _F3()
ConsoleWrite('"Sprung" zu Zeile ' & @ScriptLineNumber & @CRLF)
EndFunc
@ make - graf
frage zu :
Func _F1()
ConsoleWrite('"Sprung" zu Zeile ' & @ScriptLineNumber & @CRLF)
EndFunc
kann man das so schreiben wenn ich in zeile 24 springen will...
nachdem ich die pause beendet habe???
Func _F1()
ConsoleWrite('"Sprung" zu Zeile ' & 24 & @CRLF)
EndFunc
Das Geht nicht.
AutoIt ist nicht Zeilenorientiert. Du kannst ja z.B. oben 5 Zeilen einfügen und hast keine Lust deshalb das halbe Programm neu zu schreiben.
Man kann nur zu Funktionen springen, nicht zu Zeilen.
Die Zeilen sind hier nur zur Übersicht und nicht wie früher um das Skript damit zu koordinieren. (damals durfte man sich auch selbst die Zeilennummer danebenschreiben und hatte keine Vorgabe)
schade, das wäre so schön einfach gewesen
Pass auf:
Prinzipiell sind Funktionen so aufgebaut:
Funktion()
Func Funktion()
ConsoleWrite("Hello World!" & @CRLF)
EndFunc
Klar?
Das da oben ähnelt nebenbei Batch. ":" markiert eine Sprungmarke.
chess
könnte ich dann einen mouseclick dereigentlich nach der pause kommt als func 1 bezeichnen und ihn mit true / false ein und ausschalten?
beispiel:
$res = _imagesearcharea('27.bmp',1,213,232,265,256,$x,$y,100)
If $res = 1 Then
Send("{SPACE}") ..... für pause
Func 1 = false
Was ich immer interessant finde sind Leute die nichtmal die wirklich einfachen Basics können, aber mit Granaten wie ImageSearchArea hantieren^^
Am Besten lernst du den Skriptaufbau schritt für schritt mit leichten Funktionen und leichten Programmen.
PS: Im Skript wimmelt es von Fehlern.
[autoit]$res = _imagesearcharea('27.bmp',1,213,232,265,256,$x,$y,100) ; C&P, $x + $y = nicht definiert
If $res = 1 Then ; Hier fehlt das Endif, oder die Instruktion
Send("{SPACE}") ..... für pause ; Kommentare werden mit ; und nicht mit ..... eingeleitet
Func 1 = false ; Ergibt überhaupt keinen Sinn
das war nur ein auszug... fehler sind sind keine drin
sonst funzt es wunderbar. ich möchte nur einen mouseclick umgehen der kurz nach einer (spac) pause beginnt
Dann poste mal das komplette Skript, eventuell versteht dann jemand deine Intension oder dein Problem.
Anfänger mit "ImageSearch" und "Send" müssen einen guten Grund haben hier die Community zu fragen.
Edit: Auf jeden sind da Fehler drin. Das kann niemand ausführen selbst wenn es nur ein Auszug ist.
1. beschäftige ich mich erst seit einer woche mit autoit
bin ohne grundkenntnisse da so reingestolpert und habe immer weiter rumgespielt.
deshalb die wissenslücken
2. wie gesagt, mein script läuft tadellos. ich möchte nur den mousclick umgehen.
ich hoffe das sich niemand daran stört das jemand wie ich autoit einfach großartig findet und damit herumspielt
frei nach learn by doing.
3. #include <ImageSearch.au3>
$Click = True ; False
$x = 0
$y = 0
; Press Esc to terminate script, Pause/Break to "pause"
Global $Paused
HotKeySet("{SPACE}", "TogglePause")
HotKeySet("{ESC}", "Terminate")
HotKeySet("+!d", "ShowMessage") ;Shift-Alt-d
ist auch nur ein auszug
Hier geht es um moralische Grundsätze.
Ich störe mich nur daran, dass
- sich die Anfänger immer hier unerlaubte/zu komplexe Skripte besorgen und diese Modifizieren wollen
- immer nur Auszüge (die keiner von uns Testen oder verstehen kann, was vermutlich beabsichtigt ist)
- ImageSearch, Hotkeys, Send und Konsorten meistens in Bots/oä vorkommen
- ein AutoIt-Tag benutzt wird um zu Posten. [AutoIt ] ; Hallo [/AutoIt ]
; Hallo
[/autoit]