ExitLoop?

  • Hey zusammen,
    bin noch ganz Neu in diesem Forum und auch in sachen AutoIT erst seit ein paar stunden am testen. :p

    Ich hab schon "gegoogled" etc. aber ich find da einfach nicht das was ich nur wissen will..
    ist wahrscheinlich einfach so leicht das es niemand anderes nötig hatte zu fragen. ^^

    Und zwar.. wenn ich mit ExitLoop die "while schleife" verlasse .. springt der Script immer wieder in die schleife zurück..
    Damit ist es mir unmöglich wärend der pause zb. das "$GUI_EVENT_CLOSE" ( kleines rotes X oben Rechts im Fenster ) zu drücken..
    Es passiert einfach nichts da er halt in der schleife steckt.. wenn ich nun aber die pause func nicht als schleife definiere,
    dann springt das/der Script automatisch wieder in die schleife eins drüber.. gibt es keine "pause > nul" funktion wie bei batch zb.?
    (sry hab mit batch meine ersten schritte gemacht daher kann ich nur das beispiel nenen.)

    mein pause code:

    Spoiler anzeigen
    Code
    func _pause()
    			While 1
    			   sleep (500)
    			WEnd
    		 EndFunc

    Danke schonmal im vorraus.
    Ich komm da einfach nicht drauf. :/

    Wer Rechtschreibfehler findet darf sie behalten. :D

    Einmal editiert, zuletzt von ThirtySix (4. Juli 2013 um 10:28)

  • Zunächst Herzlich Willkommen im Forum ;)

    Was genau willst du denn pausieren und warum?
    Anhand deines Code's lässt sich nur sagen dass die Pause ziemlich lang dauern wird :D
    Ohne abbruchbedingung in der While schleife macht das keinen Sinn.

    (Am besten ganzen Code posten und Autoit Tag benutzen)


  • Zunächst Herzlich Willkommen im Forum ;)

    Was genau willst du denn pausieren und warum?
    Anhand deines Code's lässt sich nur sagen dass die Pause ziemlich lang dauern wird :D
    Ohne abbruchbedingung in der While schleife macht das keinen Sinn.

    (Am besten ganzen Code posten und Autoit Tag benutzen)


    Danke erstmal.. werdet mich wohl jetzt öfters sehen :p

    naja.. ich habs jetzt tatsächlich gelöst bekommen...
    das Problem war einfach das die schleife davor nicht beendet wurde.. und die pausenschleife mit Exitloop nur die eine schleife beendet hat.
    ich hab aber nochnicht verstanden gehabt das der Script danach wieder in die nicht beendete schleife zurückspringt.

    mit "ExitLoop 2" war die sache geregelt :p

    nach inzwischen 6 stunden Arbeit an meinem aller ersten autoit script ist es nun vollbracht.

    was man damit machen kann überlass ich eurer fantasie.
    aufjedenfall funktioniert es schonmal :p

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Include <Misc.au3>
    #Region ### START Koda GUI section ### Form=C:\Users\ThirtySix\Desktop\BySkiLLz.kxf
    $BySkiLLz = GUICreate("BySkiLLz", 172, 266, 641, 318)
    GUISetBkColor(0x99B4D1)
    $GetPosNW = GUICtrlCreateButton("Get Pos", 8, 16, 67, 41)
    $GetPosSO = GUICtrlCreateButton("Get Pos", 8, 64, 67, 41)
    $GetPixel = GUICtrlCreateButton("Get Pixel", 8, 112, 67, 41)
    $Info = GUICtrlCreateButton("Info", 8, 160, 67, 25)
    $NWX = GUICtrlCreateLabel("X = ", 88, 24, 68, 12)
    $NWY = GUICtrlCreateLabel("Y = ", 88, 40, 68, 12)
    $SOX = GUICtrlCreateLabel("X = ", 88, 72, 68, 12)
    $SOY = GUICtrlCreateLabel("Y = ", 88, 88, 68, 12)
    $Pixel = GUICtrlCreateLabel("C = ", 88, 128, 68, 12)
    $MouseClick = GUICtrlCreateCheckbox("Click Target", 88, 160, 81, 17)
    $Start = GUICtrlCreateButton("Start", 8, 200, 67, 25)
    $Pause = GUICtrlCreateButton("Pause", 8, 232, 67, 25)
    $HotkeyF9 = GUICtrlCreateLabel("Hotkey: F9", 88, 208, 56, 17)
    $HotkeyF8 = GUICtrlCreateLabel("Hotkey: F8", 88, 240, 56, 17)
    Dim $BySkiLLz_AccelTable[2][2] = [["{F9}", $Start],["{F8}", $Pause]]
    GUISetAccelerators($BySkiLLz_AccelTable)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    HotKeySet("{f9}","_search")
    HotKeySet("{f8}","_pause")
    HotKeySet("{ESC}","_exit")

    [/autoit] [autoit][/autoit] [autoit]

    $dll= DllOpen("user32.dll")
    Global $MC = 0

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    _exit()

    [/autoit] [autoit][/autoit] [autoit]

    Case $GetPosNW
    while 1
    sleep (50)
    $OL = MouseGetPos()
    ToolTip("Oben Links mit Mausklick Definieren"&@CRLF&"x = "&$OL[0]&@CRLF&"y = "&$OL[1])
    if _ispressed(01,$dll) then
    $OL = MouseGetPos()
    ExitLoop
    EndIf
    WEnd
    ToolTip("")
    $NWX = GUICtrlCreateLabel("X = "&$OL[0], 88, 24, 68, 12)
    $NWY = GUICtrlCreateLabel("Y = "&$OL[1], 88, 40, 68, 12)

    Case $GetPosSO
    while 1
    sleep (50)
    $UR = MouseGetPos()
    ToolTip("Unten Rechts mit Mausklick Definieren"&@CRLF&"x = "&$OL[0]&@CRLF&"y = "&$OL[1])
    if _ispressed(01,$dll) then
    $UR = MouseGetPos()
    ExitLoop
    EndIf
    WEnd
    ToolTip("")
    $SOX = GUICtrlCreateLabel("X = "&$UR[0], 88, 72, 68, 12)
    $SOY = GUICtrlCreateLabel("Y = "&$UR[1], 88, 88, 68, 12)

    Case $GetPixel
    While 1
    sleep (50)
    $pos = MouseGetPos()
    $color = PixelGetColor($pos[0],$pos[1])
    ToolTip("Definiere eine Pixelfarbe nach der gesucht werden soll"&@CRLF&"Farbe = "&$Color)
    if _ispressed(01,$dll) then
    $pos = MouseGetPos()
    $color = PixelGetColor($pos[0],$pos[1])
    ToolTip("C = : "&$color)
    ExitLoop
    EndIf
    WEnd
    ToolTip("")
    $Pixel = GUICtrlCreateLabel("C = "&$color, 88, 128, 68, 12)

    Case $MouseClick
    If (GUICtrlRead($MouseClick) ) = $GUI_CHECKED Then
    $MC = 1
    else
    $MC = 0
    EndIf

    Case $Info
    MsgBox(0,"Made By SkiLLz","Der Infotext ist nicht Hilfreich."&@CRLF&"Mir ist halt nichts eingefallen!")

    Case $Start
    _search()

    Case $Pause
    _pause()

    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _search()
    While 1
    if $MC = 1 Then
    $ps = PixelSearch($OL[0],$OL[1],$UR[0],$UR[1],$color,10)
    If isArray($ps) Then
    MouseMove($ps[0],$ps[1],0)
    MouseClick("left")
    EndIf
    EndIf
    if $MC = 0 Then
    $ps = PixelSearch($OL[0],$OL[1],$UR[0],$UR[1],$color,10)
    If isArray($ps) Then
    MouseMove($ps[0],$ps[1],0)
    EndIf
    EndIf
    WEnd
    EndFunc

    func _pause()
    While 1
    ExitLoop 2
    WEnd
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _exit()
    Exit
    EndFunc

    [/autoit]

    Wer Rechtschreibfehler findet darf sie behalten. :D

  • Wozu ist denn die Schleife in _pause?
    Wenn du DllOpen nutzt, musst du auch mit DllClose die DLL wieder freigeben.


  • Wozu ist denn die Schleife in _pause?
    Wenn du DllOpen nutzt, musst du auch mit DllClose die DLL wieder freigeben.


    wenn ich die schleife nicht mache versteht er den "exitloop" befehl nicht.
    die dll closen? da alles funktioniert bin ich da nicht auf ein problem gestoßen... was ist denn wenn ich sie offen lasse?
    edit: und an welcher stelle soll/muss ich sie closen?

    Wer Rechtschreibfehler findet darf sie behalten. :D

    Einmal editiert, zuletzt von ThirtySix (4. Juli 2013 um 12:17)

  • Einiges an dem Script ist stark verbesserungswürdig...
    Da das offensichtlich aber ein Bot werden soll ("oder schon ist") darfst du hier keinen Support erwarten

  • Einiges an dem Script ist stark verbesserungswürdig...
    Da das offensichtlich aber ein Bot werden soll ("oder schon ist") darfst du hier keinen Support erwarten

    Ich hab keine böswilligen absichten falls das für beruhigung sorgt..
    Es ist einfach zufall das ich als erstes auf die Idee gekommen bin.

    Ich hätte zwar gern dazugelernt.. aber verstehe das man dabei nicht helfen will...
    An sich funktioniert es.. und nun werd ich mir was neues suchen.
    Vielleicht interessiert das ja dann mehr ^^
    Ich mach das alles nur zu lernzwecken und Interesse..
    Für ein richtigen "Bot" den man in spielen benutzen will, würde das hier eh nicht klappen.
    Da denk ich Programmiert man ganz anders solche sachen.. zudem gibts sowas wie sand am meer.

    aber falls doch noch was dazu gesagt werden will... ich bin lernfreudig :thumbup: .

    Grüße aus Berlin.


    :: Edit

    Wenn ihr wollt nehm ich den Spoiler mit dem script auch wieder raus.

    Wer Rechtschreibfehler findet darf sie behalten. :D