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

ImageSearch-nie działa poprawnie


Rekomendowane odpowiedzi

Opublikowano

Witam,mam problem z moim pierwszy programem.Ogólnie jego działanie jak na moje możliwości programistyczne w AutoIt jest wystarczające :D

Ogólnie co program mam za zadanie:

  1. Start
  2. Pojawia się obrazek
  3. Bot klika w niego i odczekuje przykładowo 30sek
  4. Jeśli pokaże się inny obrazek to klika we wskazane kordy przeze mnie.
  5. Bot ponownie czeka na pojawienie się obrazków.
  6. I tak w kółko,aż nie wyłączę bota.

Napisałem pewien kod lecz bot wgl nie działa,nie wykonuje się.

Oto mój końcowy kod:

#include <ImageSearch.au3>
Global $Paused, $x1, $y1, $x2, $y2, $x3, $y3
HotKeySet("{ESC}", "TogglePause")
HotKeySet("S" , "Start")
 
While 1
   Sleep (500)
 
 WEnd
 Func Start()
$result = _ImageSearch("obraz.bmp",1,$x1,$y1,10)
if $result=1 Then
 
   MouseClick("left",$x1,$y1,0)
EndIf
 
 
$result2 = _ImageSearch("obrazek.bmp",1,$x2,$y2,10)
if $result2=1 Then
 
   MouseClick("left",711, 390,0)
   
 EndIf
 
 EndFunc
 
 
Func TogglePause()
    $Paused = NOT $Paused
    While $Paused
      Sleep(100)
    WEnd
EndFunc

 

Bardzo proszę o pomoc i z góry dziękuje :)

Opublikowano

Pojawia się obrazek

Bot klika w niego i odczekuje przykładowo 30sek

Jeśli pokaże się inny obrazek to klika we wskazane kordy przeze mnie.

 

 

if(image search "Pojawia się obrazek")
"Bot klika w niego i odczekuje przykładowo 30sek"
elseif(imagesearch "Jeśli pokaże się inny obrazek to klika we wskazane kordy przeze mnie.")
"Bot klika w niego i odczekuje przykładowo 30sek"
endif
 

 

 

jak nie rozumiesz, napisz

Opublikowano
$result = _ImageSearch("obraz.bmp",1,$x1,$y1,10)
if $result=1 Then

MouseClick("left",$x1,$y1,0)
EndIf


$result2 = _ImageSearch("obrazek.bmp",1,$x2,$y2,10)
if $result2=1 Then

MouseClick("left",711, 390,0)

EndIf
 

 

 

To tutaj mam (chyba ) to o czym piszesz.

Bo znajduje obrazek i jeśli to ten to najeżdza na jego kordy i klika,a jeśli ten drugi to przenosi na kordy i klika

 

Chyba,że źle IF'y "ułożyłem"

Opublikowano


if _ImageSearch("obraz.bmp",1,$x1,$y1,10) Then

MouseClick("left",$x1,$y1,0)

Sleep(30*1000)

elseif _ImageSearch("obrazek.bmp",1,$x2,$y2,10) Then

MouseClick("left",711, 390,0)

EndIf

 

Opublikowano

Czyli kod po poprawie powinien wyglądać tak:

#include <ImageSearch.au3>
Global $Paused, $x1, $y1, $x2, $y2, $x3, $y3
HotKeySet("{ESC}", "TogglePause") 
HotKeySet("{END}" , "Start")


While 1
   Sleep (500)
 
 WEnd

Func Start()
   
 if _ImageSearch("obraz.bmp",1,$x1,$y1,10) Then
MouseClick("left",$x1,$y1,0)
Sleep(30*1000)
elseif _ImageSearch("obrazek.bmp",1,$x2,$y2,10) Then
MouseClick("left",711, 390,0)
EndIf

 
 EndFunc
 
 
Func TogglePause()
    $Paused = NOT $Paused
    While $Paused
        Sleep(100)
    WEnd
 EndFunc
Opublikowano

nie, cały kod powinien być w pętli a nie poza nią by działał cały czas, wróci do tutoriali

If you = stupid then

insert(foot.in.your.ass)

end if

licznik-54-96732-stat.png

Opublikowano

Przejrzałem tutorial odnośnie pętli ponownie i za nic nie wiem jak się zabrać do Twojej uwagi odnosnie całego kodu w pętli,mógłbyś mnie nakierować? :)

Opublikowano

Podpowiem co do zdania "daj cały skrypt w pętle" czyli na początku skryptu dajesz którąś pętle ( w tutorialu masz je wypisane i uzycie) np While 1 dajesz na początku skryptu a na koncu dajesz Wend. Zalecane pomiedzy tym dac chociaz sleep (10) aby nie żarło procesora.

1387536187-U112334.png

Jeśli Ci pomogłem mógłbyś wynagrodzić lajkiem :)

Opublikowano

 

Czyli kod po poprawie powinien wyglądać tak:

#include <ImageSearch.au3>
Global $Paused, $x1, $y1, $x2, $y2, $x3, $y3
HotKeySet("{ESC}", "TogglePause") 
HotKeySet("{END}" , "Start")


While 1
   Sleep (500)
 
 WEnd

Func Start()
   
 if _ImageSearch("obraz.bmp",1,$x1,$y1,10) Then
MouseClick("left",$x1,$y1,0)
Sleep(30*1000)
elseif _ImageSearch("obrazek.bmp",1,$x2,$y2,10) Then
MouseClick("left",711, 390,0)
EndIf

 
 EndFunc
 
 
Func TogglePause()
    $Paused = NOT $Paused
    While $Paused
        Sleep(100)
    WEnd
 EndFunc

 

Pauza wogóle nie działa. To że w tym wątku jest Sleep(taka mała wielowątkowość... kilkuwątkowość!), nie pauzuje innych wątków.

#include <ImageSearch.au3>
Global $x1, $y1, $x2, $y2, $x3, $y3, $Paused = False
HotKeySet("{ESC}", "TogglePause") 
HotKeySet("{END}" , "Start")
While 1
   Sleep (500)
 WEnd
Func Start()
 if $Paused then return 0
 if _ImageSearch("obraz.bmp",1,$x1,$y1,10) Then
MouseClick("left",$x1,$y1,0)
Sleep(30*1000)
elseif _ImageSearch("obrazek.bmp",1,$x2,$y2,10) Then
MouseClick("left",711, 390,0)
EndIf
 EndFunc
Func TogglePause()
    $Paused = NOT $Paused
 EndFunc
Opublikowano

#include <ImageSearch.au3>
Global $Paused, $x1, $y1, $x2, $y2, $x3, $y3, $Paused = False
HotKeySet("{ESC}", "TogglePause")
HotKeySet("{END}" , "Start")
Sleep (500)
Func Start()
if $Paused then return 0
if _ImageSearch("obraz.bmp",1,$x1,$y1,10) Then
MouseClick("left",$x1,$y1,0)
Sleep(30*1000)
elseif _ImageSearch("obrazek.bmp",1,$x2,$y2,10) Then
MouseClick("left",711, 390,0)
EndIf
EndFunc
Func TogglePause()
$Paused = NOT $Paused
EndFunc

 

while 1

Wend

Opublikowano

następny cudotwórca co nie zna składni skryptu !

 

funkcja START ma być w petli a nie poza nią , jako osobna funkcja

globalne zmienne sa do bani i z powietrza wzięte, na dodatek

 

Sleep(30*1000) to normalne Sleep(30000)

 

@2UP jaka wielowątkowość pod SLEEP ?? tworzysz nowe zasady działania skryptów czy co ?

If you = stupid then

insert(foot.in.your.ass)

end if

licznik-54-96732-stat.png

Opublikowano

Nie.

Jest wątek główny, tj. ustawienie hotkey'ów i pętla tylko ze Sleep'em.

Kiedy uruchomi się hotkey, powstaje nowy wątek, który przy Sleep'ie pauzuje tylko swój wątek, nie wpływając na działanie reszty programu.

W związku z tym na początku funkcji start musi być sprawdzenie czy program jest zapauzowany - bo to jest jedyna funkcja która ma być zapauzowana...

TAK! ZAPAUZOWAĆ PAUZOWANIE!

IZZER4 skopiował mój kod i wwalił pętle główną na dół i usunął sleep'a.

Sleep(30*1000) jest nieco bardziej zrozumiały niż Sleep(30000).

Wyobraź sobie pauzę na kilkanaście minut, chyba lepiej (15 * 60 * 1000) niż (900000).

Jak by wyglądała pauza kilkugodzinowa?

I wogóle pisałem kod według oryginalnego kodu autora, a nie niejasnej instrukcji punktowej.

Wiem, globalne są do ****, ale jest pewien powód...

W HotKeySet'ach nie da się podawać argumentów.

A poza tym IZZER4... Global $Paused, $x1, $y1, $x2, $y2, $x3, $y3, $Paused = False

A czy dwukrotna deklaracja zmiennej szkodzi?

Opublikowano

pauza ma być działającą funkcją w pętli, jakoś to nie widać

 

zgodnie z zasadami to ty sobie źle tłumaczysz na podstawie jakiejś dziwnej wielowątkowości, chodzi o pierwszeństwo w wykonaniu funkcji. po kolei według hierarchii

 

start skryptu uruchomi go dokładnie TYLKO RAZ i koniec dlatego musi być ta funkcja powtarzana by działał skrypt cały czas. pierwsza pętla while jest tylko po to by się skrypt ne wyłączał !

 

przy okazji, jest konsola błędów i wywala CAŁY CZAS BŁĄD SKŁADNI SKRYPTU i jakoś żaden to nawet nie potrafił zgłosić ze ma błąd skryptu !

If you = stupid then

insert(foot.in.your.ass)

end if

licznik-54-96732-stat.png

Opublikowano

Podpowiem co do zdania "daj cały skrypt w pętle" czyli na początku skryptu dajesz którąś pętle ( w tutorialu masz je wypisane i uzycie) np While 1 dajesz na początku skryptu a na koncu dajesz Wend. Zalecane pomiedzy tym dac chociaz sleep (10) aby nie żarło procesora.

 

Petle kolego dajemy na koniec czyli skrypt

.................

..............

............

While1

Wend

Opublikowano

Petle kolego dajemy na koniec czyli skrypt

.................

..............

............

While1

Wend

Zależy o czym tu mówimy kolego.Ja pisze o tym:

 

While 1

robie cos

robie cos

robie cos

Sleep(10)

Wend

Czyli caly czas powtarza czynnosci a Ty mowisz o tym aby np nie zamykal nam sie program czyli

While 1

Sleep(10)

Wend

1387536187-U112334.png

Jeśli Ci pomogłem mógłbyś wynagrodzić lajkiem :)

Opublikowano

Do kazdej funkcji robic petle??

Troche bez sensu.

Gdzie masz że do każdej funkcji? Bo widzę że kolega coś wyczytuje czego nie ma?

1387536187-U112334.png

Jeśli Ci pomogłem mógłbyś wynagrodzić lajkiem :)

Opublikowano

ROBEM, zważ że autor miał na myśli coś innego niż ty, zerknij na kod autora.

I nie kompiluje każdego kodu który piszę. Piszę to tutaj, na MPC, a nie w SciTE.

A zakładam że autor zna się na rzeczy i nie brał kodu z ****, tylko pisał logicznie.

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...