1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

If schleife weiter fortsetzen?

Dieses Thema im Forum "Support & Discussion" wurde erstellt von edpowah, 28. Oktober 2017.

  1. edpowah

    edpowah New Member

    Registriert seit:
    18. Oktober 2017
    Beiträge:
    5
    Zustimmungen:
    1
    Punkte für Erfolge:
    3
    Geschlecht:
    männlich
    Heyho!
    Ich hätte es gerne so das der nicht immer wieder von vorne anfängt sondern weiter durchgeht, wenn er ein Monster zuende attackiert, dann geht er wieder zur ersten waypoint1, wie muss ich es machen das er weiter fortsetzt und weiter macht und nicht wieder von Anfang an, anfängt??


    Code (AutoIt):



    HotKeySet("{f1}", "myExit")
    Global $attacking = False ;
    Global $needRest = False ;
    Global $waypoint1 = False ;
    Global $waypoint2 = False ;
    Global $waypoint3 = False ;
    Global $waypoint4 = False ;
    Global $waypoint5 = False ;
    Global $waypoint6 = False ;

    ;0x694018
    Global $HuntingForColor = [0xA0AF31, 0x732318, 0xD47968, 0x463129]


    While (1)
       WinActivate("Tibia - Long Doong Silver")


       ;- pixel searchmob, start attack, if no mob stop attack

       $pix = PixelSearch(2, 63, 158, 1032, $HuntingForColor, 10)

       If Not (@error) Then
           MouseClick("left", $pix[0], $pix[1], 3, 1)
           $attacking = True



           ;- gotowaypoint1, start attack, if no mob stop attack

       ElseIf @error Then
           $attacking = False
           $waypoint1 = PixelSearch(1754, 31, 1854, 132, 0x0101F0, 1)
           MouseClick("left", $waypoint1[0], $waypoint1[1], 3, 1)
           Sleep(3500)
           $pix = PixelSearch(2, 63, 158, 1032, $HuntingForColor, 1)
           $attacking = True

           If @error Then
               $attacking = False

               ;- gotowaypoint2, startattack, if no mob stop attack

               $waypoint2 = PixelSearch(1754, 31, 1854, 132, 0x461B02, 3)
               MouseClick("left", $waypoint2[0], $waypoint2[1], 3, 1)
               Sleep(3500)
               $pix = PixelSearch(2, 63, 158, 1032, $HuntingForColor, 1)
               $attacking = True

               If @error Then
                   $attacking = False

                   ;- gotowaypoint3, startattack, if no mob stop attack
                   $waypoint3 = PixelSearch(1754, 31, 1854, 132, 0x585252, 3)
                   MouseClick("left", $waypoint3[0], $waypoint3[1], 3, 1)
                   Sleep(3500)
                   $pix = PixelSearch(2, 63, 158, 1032, $HuntingForColor, 1)
                   $attacking = True

                   If @error Then
                       $attacking = False

                       ;- gotowaypoint4, startattack, if no mob stop attack
                       $waypoint4 = PixelSearch(1754, 31, 1854, 132, 0xF26521, 3)
                       MouseClick("left", $waypoint4[0], $waypoint4[1], 3, 1)
                       Sleep(3500)
                       $pix = PixelSearch(2, 63, 158, 1032, $HuntingForColor, 1)
                       $attacking = True

                       If @error Then
                           $attacking = False

                           ;- gotowaypoint5, startattack, if no mob stop attack
                           $waypoint5 = PixelSearch(1754, 31, 1854, 132, 0xBB8E0C, 3)
                           MouseClick("left", $waypoint5[0], $waypoint5[1], 3, 1)
                           Sleep(3500)
                           $pix = PixelSearch(2, 63, 158, 1032, $HuntingForColor, 1)
                           $attacking = True

                           If @error Then
                               $attacking = False


                               ;- gotowaypoint6, startattack, if no mob stop attack
                               $waypoint6 = PixelSearch(1754, 31, 1854, 132, 0xFFE8C5, 3)
                               MouseClick("left", $waypoint6[0], $waypoint6[1], 3, 1)
                               Sleep(3500)
                               $pix = PixelSearch(2, 63, 158, 1032, $HuntingForColor, 1)
                               $attacking = True

                               If @error Then
                                   $attacking = False
                                   ;- gotowaypoint5,

                                   $waypoint5 = PixelSearch(1754, 31, 1854, 132, 0xBB8E0C, 3)
                                   MouseClick("left", $waypoint5[0], $waypoint5[1], 3, 1)
                                   Sleep(3500)
                                   $pix = PixelSearch(2, 63, 158, 1032, $HuntingForColor, 1)
                                   $attacking = True

                                   If @error Then
                                       $attacking = False
                                       ;- gotowaypoint4,

                                       $waypoint4 = PixelSearch(1754, 31, 1854, 132, 0xF26521, 3)
                                       MouseClick("left", $waypoint4[0], $waypoint4[1], 3, 1)
                                       Sleep(3500)
                                       $pix = PixelSearch(2, 63, 158, 1032, $HuntingForColor, 1)
                                       $attacking = True

                                       If @error Then
                                           $attacking = False
                                           ;- gotowaypoint3,
                                           $waypoint3 = PixelSearch(1754, 31, 1854, 132, 0x585252, 3)
                                           MouseClick("left", $waypoint3[0], $waypoint3[1], 3, 1)
                                           Sleep(3500)
                                           $pix = PixelSearch(2, 63, 158, 1032, $HuntingForColor, 1)
                                           $attacking = True

                                           If @error Then
                                               $attacking = False
                                               ;- gotowaypoint2,
                                               $waypoint2 = PixelSearch(1754, 31, 1854, 132, 0x461B02, 3)
                                               MouseClick("left", $waypoint2[0], $waypoint2[1], 3, 1)
                                               Sleep(3500)
                                               $pix = PixelSearch(2, 63, 158, 1032, $HuntingForColor, 1)
                                               $attacking = True

                                               If @error Then
                                                   $attacking = False

                                               EndIf
                                           EndIf
                                       EndIf
                                   EndIf
                               EndIf
                           EndIf
                       EndIf
                   EndIf
               EndIf
           EndIf
       EndIf
    WEnd





    Func myExit()
       MsgBox(0, "Ending", "Bot has exited")
       Exit
    EndFunc   ;==>myExit
     


     
    Zuletzt von einem Moderator bearbeitet: 28. Oktober 2017
  2. Best Answer:
    Post #8 by SilverHazard, 27. Dezember 2017 (3 points)
  3. SilverHazard

    SilverHazard Moderator Mitarbeiter Moderator

    Registriert seit:
    2. Juli 2017
    Beiträge:
    59
    Zustimmungen:
    48
    Punkte für Erfolge:
    18
    Geschlecht:
    männlich
    Hi,

    bitte formatiere in Zukunft deinen Code, das macht ihn deutlich einfacher zu lesen. Am einfachsten geht das, indem du in SciTE Strg+T drückst oder unter Tools den Punkt "Tidy Autoit Source" auswählst :)

    Wo genau soll das Programm denn fortgesetzt werden? Soll bspw. nach waypoint3 mit waypoint 4 weitergemacht werden, auch wenn kein Monster gefunden wurde?
     
  4. Obstcoder

    Obstcoder New Member

    Registriert seit:
    11. Oktober 2017
    Beiträge:
    11
    Zustimmungen:
    5
    Punkte für Erfolge:
    3
    Geschlecht:
    männlich
    Ich hab die Frage nicht ganz verstanden, aber ich habe bei mir immer unterschiedliche Funktionen erstellt.
    So fand ich alles übersichtlicher und konnte auch leichter Fehler finden.



    Func Reset()

    If $i = 20 Then
    Send("^{w}")
    sleep(500)
    $i = 0
    Zero()

    Else
    MouseClickDrag("", 1912, 580 , 1912, 136)
    $i = $i + 1
    Send("{F5}")
    Start()

    EndIf
    EndFunc



    So springe bei If = true zu Zero() und bei If = false zu Start(), somit beginnt nicht immer alles wieder von vorne sondern erst ab dem Punkt, ab dem If = ??? ist.
    Ich hoffe, das ist verständlich so :D
     
  5. edpowah

    edpowah New Member

    Registriert seit:
    18. Oktober 2017
    Beiträge:
    5
    Zustimmungen:
    1
    Punkte für Erfolge:
    3
    Geschlecht:
    männlich
    Bspw. Nach waypoint 2, wenn die attack funktion zuende ist, dass er automatisch zur nächsten waypoint geht und nicht von Anfang an anfängt, weil er einen Monster attackiert hat(gefunden hat)

    Zurzeit läuft er alle waypoints ab, wenn er einen Monster findet, dann killt er den und geht leider wieder zur waypoint1.. Ich hätte es gerne so das er dann trotzdem weiter sein weg läuft (zum nächsten waypoint, nicht zum ersten)

    Hilft mir bitte, ich hab schon wieder mehrere Tage investiert und es nicht geschafft :D
     
  6. Obstcoder

    Obstcoder New Member

    Registriert seit:
    11. Oktober 2017
    Beiträge:
    11
    Zustimmungen:
    5
    Punkte für Erfolge:
    3
    Geschlecht:
    männlich
    Wie oben erklärt müsstest du mit 6 Waypoints müsstest du 6 unterschiedliche Attack Funktionen machen und einfach nach Attack1 zu Waypoint 2, nach Attack2 zu Waypoint 3 usw. das klappt, ist aber bisschen viel Code und evtl. auch umständlich. Kenne aber sonst (noch) keine Möglichkeit, da ich selbst erst seit kurzem in AutoIt programmiere.
     
  7. SilverHazard

    SilverHazard Moderator Mitarbeiter Moderator

    Registriert seit:
    2. Juli 2017
    Beiträge:
    59
    Zustimmungen:
    48
    Punkte für Erfolge:
    18
    Geschlecht:
    männlich
    Wenn ich dein Problem richtig verstanden habe, würde ich es so lösen:
    1. Wie @Obstcoder vorgeschlagen hatte, eine eigene Funktion für die sich wiederholenden Code-Teile verwenden. Die Farbe als Parameter übergeben
    2. Inhalt der einzelnen If-Konstrukte durch Methodenaufruf ersetzen
    3. If entfernen. Dadurch wird auf jeden Fall zum nächsten Waypoint gegangen, egal, ob am vorherigen Waypoint ein Monster war oder nicht
    Code (AutoIt):

    HotKeySet("{f1}", "myExit")
    Global $attacking = False ;
    Global $needRest = False ;

    ;0x694018
    Global $HuntingForColor = [0xA0AF31, 0x732318, 0xD47968, 0x463129]

    Func Waypoint($color)
       $attacking = False
       $waypoint = PixelSearch(1752, 31, 1854, 132, $color, 1)
       MouseClick("left", $waypoint[0], $waypoint[1], 3, 1)
       Sleep(3500)
       $pix = PixelSearch(2, 63, 158, 1032, $HuntingForColor, 1)
       $attacking = True
       Return @error
    EndFunc   ;==>Waypoint

    While (1)
       WinActivate("Tibia - Long Doong Silver")


       ;- pixel searchmob, start attack, if no mob stop attack

       $pix = PixelSearch(2, 63, 158, 1032, $HuntingForColor, 10)

       If Not (@error) Then
           MouseClick("left", $pix[0], $pix[1], 3, 1)
           $attacking = True

       ElseIf @error Then

           Waypoint(0x0101F0)
           Waypoint(0x461B02)
           Waypoint(0x585252)
           Waypoint(0xF26521)
           Waypoint(0xBB8E0C)
           Waypoint(0xFFE8C5)
           Waypoint(0xBB8E0C)
           Waypoint(0xF26521)
           Waypoint(0x585252)
           Waypoint(0x461B02)

       EndIf
    WEnd

    Func myExit()
       MsgBox(0, "Ending", "Bot has exited")
       Exit
    EndFunc   ;==>myExit

     

    Um die vielen Funktionsaufrufe etwas schöner zu machen, würde ich die Farben in einem Array speichern:
    Code (AutoIt):
           Local $colors = [0x0101F0, 0x461B02, 0x585252, 0xF26521, 0xBB8E0C, 0xFFE8C5, 0xBB8E0C, 0xF26521, 0x585252, 0x461B02]

           For $color In $colors
               Waypoint($color)
           Next
    Hilft dir das weiter?
     
  8. edpowah

    edpowah New Member

    Registriert seit:
    18. Oktober 2017
    Beiträge:
    5
    Zustimmungen:
    1
    Punkte für Erfolge:
    3
    Geschlecht:
    männlich

    Ich komme leider nicht weiter, ich habe den Script aus dem Spoiler kopiert, jedoch killt er erst ein monster und dann läuft er alle waypoints ab, ohne einen zu töten.. Das ich echt sehr schwierig :/ Ich wäre echt froh es endlich einen Script zu schaffen, dann könnte ich mir viele verschiedene erstellen :/
    Kannst du mir bitte dabei helfen? Biitttte...
     
  9. SilverHazard

    SilverHazard Moderator Mitarbeiter Moderator

    Registriert seit:
    2. Juli 2017
    Beiträge:
    59
    Zustimmungen:
    48
    Punkte für Erfolge:
    18
    Geschlecht:
    männlich
    Best Answer
    Zur allgemeinen Information:

    Wir hatten per PM Kontakt und dieser Code sollte das Problem gelöst haben:

    Code (AutoIt):

    HotKeySet("{f1}", "myExit")
    Global $attacking = False ;
    Global $needRest = False ;

    ;0x694018
    Global $HuntingForColor = [0xA0AF31, 0x732318, 0xD47968, 0x463129]

    Func Waypoint($color)
        $attacking = False
        $waypoint = PixelSearch(1752, 31, 1854, 132, $color, 1)
        MouseClick("left", $waypoint[0], $waypoint[1], 3, 1)
        Sleep(3500)
        $pix = PixelSearch(2, 63, 158, 1032, $HuntingForColor, 1)
        $attacking = True
        Return @error
    EndFunc   ;==>Waypoint

    Func Attack()
        $pix = PixelSearch(2, 63, 158, 1032, $HuntingForColor, 10)

        While not @error Then
            MouseClick("left", $pix[0], $pix[1], 3, 1)
            $attacking = True
            $pix = PixelSearch(2, 63, 158, 1032, $HuntingForColor, 10)
        WEnd
    EndFunc

    While (1)
        WinActivate("Tibia - Long Doong Silver")


        Local $colors = [0x0101F0, 0x461B02, 0x585252, 0xF26521, 0xBB8E0C, 0xFFE8C5, 0xBB8E0C, 0xF26521, 0x585252, 0x461B02]

        For $color In $colors
            Waypoint($color)
            Attack()
        Next

    WEnd

    Func myExit()
        MsgBox(0, "Ending", "Bot has exited")
        Exit
    EndFunc   ;==>myExit
     
     

Diese Seite empfehlen

Die Seite wird geladen...