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

Jak wrzucić to do pętli ?


Rekomendowane odpowiedzi

Opublikowano

Witam. Mój poprzedni temat został zamknięty, więc piszę tutaj. Otóż chcę napisać program który po kolei wyszukuje 5 obrazków. Jeżeli znajdzie wszystkie 5 chcę aby nic już poprostu nie robił. Jeżeli chociaż 1 z obrazków nie zostanie znaleziony, program ma wcisnąć przycisk, aby pojawiły się nowe obrazki i znowu zacząć szukać 5 własciwych. Narazie mam takie cos :

 

 

#include <ImageSearch.au3>
Global $x, $y, $result
$result = _ImageSearch("hp.bmp", 1, $x, $y, 10)
$result1 = _ImageSearch("lud.bmp", 1, $x, $y, 10)
$result2 = _ImageSearch("miecze.bmp", 1, $x, $y, 10)
$result3 = _ImageSearch("2reka.bmp", 1, $x, $y, 10)
$result4 = _ImageSearch("sztyle.bmp", 1, $x, $y, 10)

Do
   $result = _ImageSearch("hp.bmp", 1, $x, $y, 10)
   Sleep(200)
   $result1 = _ImageSearch("lud.bmp", 1, $x, $y, 10)
    Sleep(200)
   $result2 = _ImageSearch("miecze.bmp", 1, $x, $y, 10)
    Sleep(200)
   $result3 = _ImageSearch("2reka.bmp", 1, $x, $y, 10)
    Sleep(200)
   $result4 = _ImageSearch("sztyle.bmp", 1, $x, $y, 10)
    Sleep(200)
   MouseClick("left", 999, 999, 1)
   Sleep(2000)
Until $result = 1 AND $result1 =1 AND $result2 =1 AND $result3 =1 AND $result4 =1

While 1
   Sleep(200)
   WEnd

 

Czy cos w kodzie jest źle ? Ponieważ nawet z jednym obrazkiem (bez pętli go wykrywa) program tak jakby nie wykrywa obrazka i cały czas klika (pętla się nie kończy)

visualcsharp_2.png

 

Mały test na gimnazjalistę: 

 

public static void testnagimbusa()
{
	Console.WriteLine("Podaj ulubionego YouTubera: ");
	string youtuber = Console.Read();
	if (youtuber = "gimper")
	{
		Console.WriteLine("Jesteś gimbusem");
	}
	else if (youtuber = "rojo")
	{
		Console.WriteLine("Jesteś gimbusem");
	}
	else if (youtuber = "isamu")
	{
		Console.WriteLine("Jesteś gimbusem z kompleksem małego przyrodzenia");
	}
	else if (youtuber = "nitrozyniak")
	{	
		Console.WriteLine("Jesteś gimbusem");
	}
	else
	{	
		Console.WriteLine("Masz więcej, niż 16 lat");
	}
}

 

Opublikowano

Nie mam akurat ImageSearch na lapku, ale postaram się pomóc (załącz może swoją wersję albo daj na pastebina, będzie łatwiej). Na pewno używaj nawiasów. Po pierwsze, wyszukanie obrazków przed rozpoczęciem pętli nie ma sensu, bo na samym jej początku robisz to samo, dalej przed kliknięciem sprawdź czy chociaż jeden z obrazków nie został znaleziony, moja propozycja:

#include <ImageSearch.au3>
#include <Array.au3>

global $x, $y, $result[5]

while (1)
  $result[0] = _imageSearch("hp.bmp",     1, $x, $y, 10)
  $result[1] = _imageSearch("lud.bmp",    1, $x, $y, 10)
  $result[2] = _imageSearch("miecze.bmp", 1, $x, $y, 10)
  $result[3] = _imageSearch("2reka.bmp",  1, $x, $y, 10)
  $result[4] = _imageSearch("sztyle.bmp", 1, $x, $y, 10)
  if (uBound(_arrayFindAll($result, 1)) < 5) then
    mouseClick("left", 999, 999, 1)
  else
    exitloop
  endif
  sleep(2000)
wend

while (1)
   sleep(200)
wend

Daj znać czy działa.

Btw. _arrayFindAll wyszukuje daną wartość w tablicy, a uBound sprawdza jej rozmiar.

 

#EDIT:

Dopiero zobaczyłem poprzedni temat, jeśli to jest zwykły Metin2 a nie jakiś priv bez HS to nic Ci to nie da (ofc mogę o czymś nie wiedzieć, nie bawię się w takie gierki od jakiegoś czasu).

 

#EDIT2:

Poprawiłem break na exitloop, teraz powinno działać.

[TUT] Full Autoit V3 Tutorial

yo po 1 nie kayloger tylko bot który zapamiętuje hasła -_-

stop1.png

Opublikowano

Jest to priv bez HS (chociaż mają jakie zabezpieczenia, więc najlepiej tylko obrazkowo, bez wchodzenia w proces gry)

 

Przy odpalaniu :

 

Line 12

 

break

break^ERROR

 

Error: Missing sperator character after keyword

 

Tak wgl. to jak ten break zastąpie inną funkcją to program pojawia się i po 5s jak najade myszką tam na pasek zadań to znika

visualcsharp_2.png

 

Mały test na gimnazjalistę: 

 

public static void testnagimbusa()
{
	Console.WriteLine("Podaj ulubionego YouTubera: ");
	string youtuber = Console.Read();
	if (youtuber = "gimper")
	{
		Console.WriteLine("Jesteś gimbusem");
	}
	else if (youtuber = "rojo")
	{
		Console.WriteLine("Jesteś gimbusem");
	}
	else if (youtuber = "isamu")
	{
		Console.WriteLine("Jesteś gimbusem z kompleksem małego przyrodzenia");
	}
	else if (youtuber = "nitrozyniak")
	{	
		Console.WriteLine("Jesteś gimbusem");
	}
	else
	{	
		Console.WriteLine("Masz więcej, niż 16 lat");
	}
}

 

Opublikowano

Obojętnie co bym tam nie wpisał i tak program działa przez 5-7s a potem się wyłącza, nic nie klika. Po prostu jak najadę na tą małą ikonkę to znika. A przy rozwiązaniu z tego tematu :

http://www.mpcforum.pl/topic/849242-ptla-do-z-wykorzystaniem-imagesearch/
bot się nie wyłącza ale cały czas klika (nie wychodzi z pętli do, jakby obrazków nie wykrywał). Normalnie jak prostym skryptem to każdy obrazek wykrywa, ale chyba nie potrafi zakończyć pętli jak mają być 2/3/4/5 warunków spełnionych (z 1 chyba też nie działa ... - poprostu pętla wszystko psuje)

visualcsharp_2.png

 

Mały test na gimnazjalistę: 

 

public static void testnagimbusa()
{
	Console.WriteLine("Podaj ulubionego YouTubera: ");
	string youtuber = Console.Read();
	if (youtuber = "gimper")
	{
		Console.WriteLine("Jesteś gimbusem");
	}
	else if (youtuber = "rojo")
	{
		Console.WriteLine("Jesteś gimbusem");
	}
	else if (youtuber = "isamu")
	{
		Console.WriteLine("Jesteś gimbusem z kompleksem małego przyrodzenia");
	}
	else if (youtuber = "nitrozyniak")
	{	
		Console.WriteLine("Jesteś gimbusem");
	}
	else
	{	
		Console.WriteLine("Masz więcej, niż 16 lat");
	}
}

 

Opublikowano

A co sądzicie o tym : (czy kod jest poprawny ?)

#include <ImageSearch.au3>

Global $x, $y, $result, $result1

 

Sleep(3000)

While (1)

$result = _ImageSearch("hp.bmp", 1, $x, $y, 150)

Sleep(1000)

If $result == 1 Then

$result1 = _ImageSearch("miecze.bmp", 1, $x, $y, 150)

ElseIf $result == 0 Then

MouseClick("left",

EndIf

If $result1 == 1 Then

$result2 = _ImageSearch("2reka.bmp", 1, $x, $y, 150)

ElseIf $result1 == 0 Then

MouseClick("left",

EndIf

If $result2 == 1 Then

$result3 = _ImageSearch("sztylety.bmp", 1, $x, $y, 150)

ElseIf $result2 == 0 Then

MouseClick("left",

EndIf

If $result3 == 1 Then

$result4 = _ImageSearch("strzaly.bmp", 1, $x, $y, 150)

ElseIf $result3 == 0 Then

MouseClick("left",

EndIf

If $result4 == 1 Then

MsgBox(0, "Sukces!", "Bony wbite!")

ExitLoop

ElseIf $result4 == 0 Then

MouseClick("left",

EndIf

 

WEnd

 

While (1)

Sleep(200)

WEnd

Co do MouseClick to potem dodam x, y.

visualcsharp_2.png

 

Mały test na gimnazjalistę: 

 

public static void testnagimbusa()
{
	Console.WriteLine("Podaj ulubionego YouTubera: ");
	string youtuber = Console.Read();
	if (youtuber = "gimper")
	{
		Console.WriteLine("Jesteś gimbusem");
	}
	else if (youtuber = "rojo")
	{
		Console.WriteLine("Jesteś gimbusem");
	}
	else if (youtuber = "isamu")
	{
		Console.WriteLine("Jesteś gimbusem z kompleksem małego przyrodzenia");
	}
	else if (youtuber = "nitrozyniak")
	{	
		Console.WriteLine("Jesteś gimbusem");
	}
	else
	{	
		Console.WriteLine("Masz więcej, niż 16 lat");
	}
}

 

Opublikowano

@up:
Jeśli ma po kolei klikać jak widzi obrazki (dokładnie w kolejności 1, 2, 3, 4) to tak. Usuń tylko global bo Ci do niczego nie potrzebne (daj local zamiast tego) i zadeklaruj resztę zmiennych a nie tylko $result i $result1, skoro używasz potem $result2, $result3 i $result4.

#EDIT:
Aha, jednak nie. Jak znajdzie pierwszy to kliknie jeszcze cztery razy w tych innych miejscach. W ogóle po co Ci to w pętli w taki sposób? Napisz sobie procedurkę szukającą obrazka póki nie znajdzie i jej użyj, np (pseudokod):

func szukajPokiNieZnajdziesz($obrazek)
  $result = szukajObrazka($obrazek);
  while ($result jest różny od 1)
    $result = szukajObrazka($obrazek);
  wend
endfunc

 

Oczywiście szukajObrazka to _ImageSearch i będziesz musiał dopisać resztę parametrów, ale raczej sobie poradzisz. Jak coś to pisz.

[TUT] Full Autoit V3 Tutorial

yo po 1 nie kayloger tylko bot który zapamiętuje hasła -_-

stop1.png

Opublikowano

Jeżeli chodzi o mój kod, to wszystko działa perfect z jedną wadą. Jeżeli np. przed losowaniem wykryje obrazek na 5000 pż, kliknie zmieniaj bo nie ma obrazka na Odporność na miecze, a na następnym będzie taki bon, to bot sie zatrzyma, bo w końcu znalazł 2 obrazki, tylko nie naraz ... - jak to naprawić ?

 

Co do Twojej propozycji, to nie mozna wylosowac 1 bonu i go zostawić. To musi być tak że za każdym kliknięciem dodawane jest 5 nowych bonów, a bot ma sprawdzić czy te 5 zgadza się z moim GFX, jeżeli chociaz 1 nie, to klika dalej (chyba że nie zrozumiałem o co Tobie chodziło w poście UP) - przecież nie może szukać 1 bonu w nieskończoność, skoro ja potrzebuje 5

 

@EDIT Co sądzisz o tym (zrobiłem wersję narazie na 2 bony) :

#include <ImageSearch.au3>
Global $x, $y, $result, $result1
Sleep(3000)
While (1)
	MouseClick("left", 640, 279)
   $result = _ImageSearch("hp.bmp", 1, $x, $y, 100)
   If $result == 1 Then
		$result1 = _ImageSearch("miecze.bmp", 1, $x, $y, 50)
	ElseIf $result == 0 Then
		ContinueLoop
	EndIf
	If $result1 == 1 Then
		ExitLoop
	ElseIf $result1 == 0 Then
		ContinueLoop
	EndIf
WEnd

While (1)
	Sleep(200)
WEnd
Użyłem po prostu funkcji, że program powraca do początku pętli, po nieudanej próbie znalezienia bonu.

 

 

@EDIT JEST QUWA !!!! Działa wszystko ! Wystarczyło wykorzystać ContinueLoop ! Na razie sprawdzona wersja na 3 bony w itemie.

visualcsharp_2.png

 

Mały test na gimnazjalistę: 

 

public static void testnagimbusa()
{
	Console.WriteLine("Podaj ulubionego YouTubera: ");
	string youtuber = Console.Read();
	if (youtuber = "gimper")
	{
		Console.WriteLine("Jesteś gimbusem");
	}
	else if (youtuber = "rojo")
	{
		Console.WriteLine("Jesteś gimbusem");
	}
	else if (youtuber = "isamu")
	{
		Console.WriteLine("Jesteś gimbusem z kompleksem małego przyrodzenia");
	}
	else if (youtuber = "nitrozyniak")
	{	
		Console.WriteLine("Jesteś gimbusem");
	}
	else
	{	
		Console.WriteLine("Masz więcej, niż 16 lat");
	}
}

 

Opublikowano

No tak, trzeba było od razu dokładnie opisać o co Ci chodzi (losowanie bonów). Chcesz żeby losował (klikał item) dopóki nie znajdzie wszystkich 5?

 

#include <ImageSearch.au3>
 
local $x, $y, $result
 
while (1)
  $result = 0
  $result += _imageSearch("hp.bmp",     1, $x, $y, 10)
  $result += _imageSearch("lud.bmp",    1, $x, $y, 10)
  $result += _imageSearch("miecze.bmp", 1, $x, $y, 10)
  $result += _imageSearch("2reka.bmp",  1, $x, $y, 10)
  $result += _imageSearch("sztyle.bmp", 1, $x, $y, 10)
  if ($result < 5) then
    mouseClick("left", 999, 999, 1)
  else
    exitloop
  endif
  sleep(2000)
wend
 
while (1)
   sleep(200)
wend

To chyba najbardziej efektywny sposób.

[TUT] Full Autoit V3 Tutorial

yo po 1 nie kayloger tylko bot który zapamiętuje hasła -_-

stop1.png

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...