Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Cofanie do poprzedniej pętli


Rekomendowane odpowiedzi

Opublikowano

Witam. Mam problem odnośnie cofania do poprzedniej pętli otóż wszędzie gdzie mam pętle

				If PixelGetColor (1017, 628) = 0x390F00 Then ;sprawdzanie czy jestes online
					MouseClick ("", 1017, 628, 1, 10)
					Sleep (10000)
					MouseClick ("", 1327, 363,1,10)
					Sleep (10000)
					ExitLoop 4
				EndIf

Chciałbym żeby po jej wykonaniu cofało do While 1. Wykorzystałem do tego polecenie ExitLoop ale po odpaleniu wyskakuję mi taki błąd http://screenshot.sh/ouV3XopNzi86a

Cały kod wygląda tak 

 

While 1
	If PixelGetColor  (161, 282) = 0xFA5C5C Then ;sprawdzanie hp
		If PixelGetColor( 160, 298) = 0x1E89E0 Then ;sprawdzanie many
			If PixelGetColor (1017, 628) = 0x390F00 Then ;sprawdzanie czy jestes online
				MouseClick ("", 1017, 628, 1, 10)
				Sleep (10000)
				MouseClick ("", 1327, 363,1,10)
				Sleep (10000)
				ExitLoop 3
			EndIf
			If PixelGetColor (59, 709) = 0xFFFFFF and PixelGetColor (86, 708) <> 0xFFFFFF Then
				MouseMove ( 59, 707) ;wybieranie przeciwnika
				Sleep (1000)
				MouseClick ( "", 59, 707, 1, 10);wybieranie przeciwnika
				Sleep (1000)
				MouseClick ( "", 1068, 358, 1, 10) ;podchodzenie do przeciwnika i atak
				Sleep (5000)
				$kolorkoncawalki = (PixelGetColor ( 1269, 708))
				Do  ;atak
					If PixelGetColor (1384, 845) = 0x4C4C4C Then ;jezeli przeciwnik ma malo hp atakuj
						Sleep (500)
						MouseClick ( "", 1258, 302, 1, 10)
						Sleep (500)
						MouseClick ( "", 1339, 353, 1, 10)
						Sleep (2000)
					Elseif PixelGetColor (538, 845) = 0x4C4C4C  Then ;jezeli nie mamy hp uciekaj
						Sleep (500)
						MouseClick ( "", 1259, 332, 1, 10) ;klikanie 2 trybu
						Sleep (500)
						MouseClick ( "", 1339, 353, 1, 10) ;klikanie zegara
						Sleep (2000)
					Elseif PixelGetColor (564, 858) = 0x4D4D4C Then ;jezeli nie mamy many uciekaj
						Sleep (500)
						MouseClick ( "", 1259, 332, 1, 10) ;klikanie 2 trybu
						Sleep (500)
						MouseClick ( "", 1339, 353, 1, 10) ;klikanie zegara
						Sleep (2000)
					Elseif PixelGetColor (1331, 326) = 0xDE6426 Then  ;zwykly atak
						Sleep (500)
						MouseClick ( "", 1258, 302, 1, 10)
						Sleep (500)
						MouseClick ( "", 1339, 353, 1, 10)
						Sleep (2000)
					EndIf

					If PixelGetColor (1017, 628) = 0x390F00 Then ;sprawdzanie czy jestes online
						MouseClick ("", 1017, 628, 1, 10)
						Sleep (10000)
						MouseClick ("", 1327, 363,1,10)
						Sleep (10000)
						ExitLoop 5
					EndIf
				$kolorkoncawalki = (PixelGetColor ( 1269, 708))
				Until $kolorkoncawalki = 0x3D1D00 ;powtarzani
			If PixelGetColor (1017, 628) = 0x390F00 Then ;sprawdzanie czy jestes online
				MouseClick ("", 1017, 628, 1, 10)
				Sleep (10000)
				MouseClick ("", 1327, 363,1,10)
				Sleep (10000)
				ExitLoop 3
			EndIf
			Sleep (2500)
			MouseClick ( "", 1335, 703, 1, 10)
			Sleep (5000)
			EndIf
			If PixelGetColor (59, 708) <> 0xFFFFFF and PixelGetColor (59, 707) = 0xFFFFFF and PixelGetColor (86, 726) <> 0xFFFFFF Then ;sprawdzanie czy to 2wrog
				If PixelGetColor (1017, 628) = 0x390F00 Then ;sprawdzanie czy jestes online
					MouseClick ("", 1017, 628, 1, 10)
					Sleep (10000)
					MouseClick ("", 1327, 363,1,10)
					Sleep (10000)
					ExitLoop 4
				EndIf
				MouseMove ( 59, 728) ;wybieranie przeciwnika
				Sleep (1000)
				MouseClick ( "", 59, 728, 1, 10);wybieranie przeciwnika
				Sleep (1000)
				MouseClick ( "", 1068, 358, 1, 10) ;podchodzenie do przeciwnika i atak
				Sleep (5000)
				Do  ;atak
					If PixelGetColor (1384, 845) = 0x4C4C4C Then ;jezeli przeciwnik ma malo hp atakuj
						Sleep (500)
						MouseClick ( "", 1258, 302, 1, 10)
						Sleep (500)
						MouseClick ( "", 1339, 353, 1, 10)
						Sleep (2000)
					Elseif PixelGetColor (538, 845) = 0x4C4C4C  Then ;jezeli nie mamy hp uciekaj
						Sleep (500)
						MouseClick ( "", 1259, 332, 1, 10) ;klikanie 2 trybu
						Sleep (500)
						MouseClick ( "", 1339, 353, 1, 10) ;klikanie zegara
						Sleep (2000)
					Elseif PixelGetColor (564, 858) = 0x4D4D4C Then ;jezeli nie mamy many uciekaj
						Sleep (500)
						MouseClick ( "", 1259, 332, 1, 10) ;klikanie 2 trybu
						Sleep (500)
						MouseClick ( "", 1339, 353, 1, 10) ;klikanie zegara
						Sleep (2000)
					Elseif PixelGetColor (1331, 326) = 0xDE6426 Then  ;zwykly atak
						Sleep (500)
						MouseClick ( "", 1258, 302, 1, 10)
						Sleep (500)
						MouseClick ( "", 1339, 353, 1, 10)
						Sleep (2000)
					EndIf

					If PixelGetColor (1017, 628) = 0x390F00 Then ;sprawdzanie czy jestes online
						MouseClick ("", 1017, 628, 1, 10)
						Sleep (10000)
						MouseClick ("", 1327, 363,1,10)
						Sleep (10000)
						ExitLoop 5
					EndIf
				$kolorkoncawalki = (PixelGetColor ( 1269, 708))
				Until $kolorkoncawalki = 0x3D1D00 ;powtarzani
				If PixelGetColor (1017, 628) = 0x390F00 Then ;sprawdzanie czy jestes online
					MouseClick ("", 1017, 628, 1, 10)
					Sleep (10000)
					MouseClick ("", 1327, 363,1,10)
					Sleep (10000)
					ExitLoop 4
				EndIf
				Sleep (2500)
				MouseClick ( "", 1335, 703, 1, 10)
				Sleep (5000)
			EndIf
			If PixelGetColor (59, 707) <> 0xFFFFFF and PixelGetColor (59, 745) = 0xFFFFFF and PixelGetColor (86, 744) <> 0xFFFFFF Then ;3sprawdzanie czy to wrog
				If PixelGetColor (1017, 628) = 0x390F00 Then ;sprawdzanie czy jestes online
					MouseClick ("", 1017, 628, 1, 10)
					Sleep (10000)
					MouseClick ("", 1327, 363,1,10)
					Sleep (10000)
					ExitLoop 4
				EndIf
				MouseMove ( 59, 744) ;wybieranie przeciwnika
				Sleep (1000)
				MouseClick ( "", 59, 744, 1, 10);wybieranie przeciwnika
				Sleep (1000)
				MouseClick ( "", 1068, 358, 1, 10) ;podchodzenie do przeciwnika i atak
				Sleep (5000)
				Do  ;atak
					If PixelGetColor (1384, 845) = 0x4C4C4C Then ;jezeli przeciwnik ma malo hp atakuj
						Sleep (500)
						MouseClick ( "", 1258, 302, 1, 10)
						Sleep (500)
						MouseClick ( "", 1339, 353, 1, 10)
						Sleep (2000)
					Elseif PixelGetColor (538, 845) = 0x4C4C4C  Then ;jezeli nie mamy hp uciekaj
						Sleep (500)
						MouseClick ( "", 1259, 332, 1, 10) ;klikanie 2 trybu
						Sleep (500)
						MouseClick ( "", 1339, 353, 1, 10) ;klikanie zegara
						Sleep (2000)
					Elseif PixelGetColor (564, 858) = 0x4D4D4C Then ;jezeli nie mamy many uciekaj
						Sleep (500)
						MouseClick ( "", 1259, 332, 1, 10) ;klikanie 2 trybu
						Sleep (500)
						MouseClick ( "", 1339, 353, 1, 10) ;klikanie zegara
						Sleep (2000)
					Elseif PixelGetColor (1331, 326) = 0xDE6426 Then  ;zwykly atak
						Sleep (500)
						MouseClick ( "", 1258, 302, 1, 10)
						Sleep (500)
						MouseClick ( "", 1339, 353, 1, 10)
						Sleep (2000)
					EndIf

					If PixelGetColor (1017, 628) = 0x390F00 Then ;sprawdzanie czy jestes online
						MouseClick ("", 1017, 628, 1, 10)
						Sleep (10000)
						MouseClick ("", 1327, 363,1,10)
						Sleep (10000)
						ExitLoop 5
					EndIf
				$kolorkoncawalki = (PixelGetColor ( 1269, 708))
				Until $kolorkoncawalki = 0x3D1D00 ;powtarzani
				If PixelGetColor (1017, 628) = 0x390F00 Then ;sprawdzanie czy jestes online
					MouseClick ("", 1017, 628, 1, 10)
					Sleep (10000)
					MouseClick ("", 1327, 363,1,10)
					Sleep (10000)
					ExitLoop 4
				EndIf
				Sleep (2500)
				MouseClick ( "", 1335, 703, 1, 10)
				Sleep (5000)
			EndIf
		EndIf
	EndIf
	If PixelGetColor(161, 282) <> 0xFA5C5C Then
		Sleep (500)
		MouseClick ( "", 176, 341, 1, 10)
		Sleep (50000)
	EndIf
	If PixelGetColor( 160, 298) <> 0x1E89E0 Then
		Sleep (500)
		MouseClick ( "", 176, 341, 1, 10)
		Sleep (50000)
	EndIf


WEnd

Z góry dzięki za pomoc. I tak wiem że ten kod jest amatorski ale z tym językiem bawi się dopiero 2 dni :P

Opublikowano

ExitLoop powoduje natychmiastowe opuszczenie pętli o tyle poziomów ile masz podany argument po  ExitLoop. Napisałeś ExitLoop 4 i ExitLoop 5, a przecież masz tylko jedną pętlę bez wielokrotnego zagłębienia. Stąd wyświetlany komunikat błędu mówiący, że ExitLoop i ContinueLoop mogą być użyte tylko wewnątrz pętli (próba wyjścia z pętli drugiego i dalszego poziomu, których nie ma, kończy się właśnie takim komunikatem).

Użycie ExitLoop nie spowoduje powrotu do początku pętli, ale jej opuszczenie (czyli zakończenie programu). Do powrotu na początek pętli służy ContinueLoop.

Popatrz tutaj: https://pl.wikibooks.org/wiki/AutoIt/Instrukcje_sterujące#While_..._Wend

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...