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

Funkcja podobna do Image Search, ale szukająca po pixelu po pixelu


Rekomendowane odpowiedzi

Opublikowano

Witam, próbuje zrobić coś podobnego do image search ale pixel po pixelu, mam taki pomysł lecz nie działa tak jak powinien

 

while 1
$wsp=PixelSearch($x,$y,$x2,$y2,$kolor)
If Not @error Then
MouseMove($wsp[0],$wsp[1])
$wsp=PixelSearch($wsp[0]+1,$wsp[1],$wsp[0]+1,$wsp[1],$kolor2)
If Not @error Then
...
endif
endif
wend

 

 

chodzi o to ze jak znajdzie 1 pixel to ma sprawdzić czy obok jest kolejny pixel i tak dalej

jak znajdzie 1 pixel to szuka 2 ale go np obok niema to na nowo szuka 1 pixela, tak robi ale jest problem on szuka na nowo i ciągle znajduje ten sam pixel i szuka na nowo i ten sam pixel i szuka i tak w nieskończoność

 

pytanie to co zrobić żeby już nie szukał 2x tego samego pixela tylko szukał następnych?



"Wyznacz Sobie taki cel, że gdybyś go osiągnął, to zwaliłby Cię z nóg."

The Secret



Pomogłem? Daj +

Opublikowano

pixesearch zwraca ci tylko kord tego pixela, nie zwraca ci kwadratu ktory jest potrzebny w tej funkcji

 

while 1
$wsp=PixelSearch($x,$y,$x2,$y2,$kolor)
If Not @error Then
MouseMove($wsp[0],$wsp[1])
$wsp=PixelSearch($wsp[0]+1,$wsp[1],$x2+1,$y2+1,$kolor2)
If Not @error Then
...
endif
endif
wend

chyba powinno smigac

Opublikowano

PixelSearch ( lewo, góra, prawo, dół, kolor [, odchyłka_koloru [, krok [, hwnd]]] )

ja miałem:

$wsp=PixelSearch($x,$y,$x2,$y2,$kolor)

 

ale jeśli ma szukać na całym ekranie to będzie tak

$x = 0

$y = 0

$x2 = 1365

$y2 = 767

 

i to co napisałeś już nie może być

,$x2+1,$y2+1



"Wyznacz Sobie taki cel, że gdybyś go osiągnął, to zwaliłby Cię z nóg."

The Secret



Pomogłem? Daj +

Opublikowano

zrób większy krok a nie szukanie po pikselku, tak po 10-20 powinno przyspieszyć wyszukiwanie

 

użyj @DesktopHeight i @DesktopWidth do określenia rozmiaru ekranu

 

 

podał byś cel skryptu

If you = stupid then

insert(foot.in.your.ass)

end if

licznik-54-96732-stat.png

Opublikowano

zrób większy krok a nie szukanie po pikselku, tak po 10-20 powinno przyspieszyć wyszukiwanie

 

użyj @DesktopHeight i @DesktopWidth do określenia rozmiaru ekranu

 

Krok na 10 to co 10 pixel będzie sprawdzany, czyli resztę omija ale to będzie 10% szans ze dobrze trafi a 90 ze nie znajdzie, dobrze myślę?

i zmienne dać tak?

$x2 = @DesktopHeight

$y2 = @DesktopWidth

 

@EDIT:

cel skryptu to zapisać np

$kolor = 0xFFC8C8

$kolor2 = 0x000000

itp lub tablice zamiast zmiennych

 

i jeśli znajdzie cały zestaw pixeli na ekranie to reaguje, coś jak imagesearch



"Wyznacz Sobie taki cel, że gdybyś go osiągnął, to zwaliłby Cię z nóg."

The Secret



Pomogłem? Daj +

  • 2 lata później...
Opublikowano

dołączam sie do pytania, nie wiem co źle robię, proszę o POPRAWIENIE mojego kodu, (tylko proszę nie pisz użyj tego lub tego bo to mi nie pomoże)

BOT JEST DO GRY W KASYNie

po znalezieniu w tym miejscu tego piksela nr-1 (846,332,912,354,0x0C8000)

musi najechac tu i wkleic te kwote 0.0001

ale jeżeli nie znajdzie piksela nr-1, to znaczy że w tym miejscu jest inny czyli ten nr-2 (846,332,912,354,0xBB2223)

i jak widzi piksel nr2 to ma najechać tu (846,332) i nacisnąć 4 razy i kliknąć 1-raz tu (332,912) 

i to wszystko w petli, to tyle. ja się dopiero uczę, ale wiem że wam to nie sprawi problemu  w napisaniu, plis napiszcie mi ten kod. sam nie daje rady

 

to mój kod:

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

#include <GUIConstantsEx.au3>
 
HotKeySet("{F6}", "Praca")
HotKeySet("{F7}", "Pauza")
GUICreate("klikanie 1", 200, 200)
GUICtrlCreateLabel("F6 start" & @CR &"F7 stop" & @cr & "free btc TEST", 10, 10, 180, 50)
 
GUISetState(@SW_SHOW)
 
Pauza()
 
func Pauza()
        While 1
                $Msg = GUIGetMsg()
                Switch $Msg
                        Case $GUI_EVENT_CLOSE
                                Exit
                EndSwitch
        WEnd
endfunc
 
func Praca()
 While 1
;........................................klikanie za 18 credits\
 
 
$Variable = if PixelSearch(846,332,912,354,0x0C8000);piksel wziety z WYGRANA
    If IsArray($Variable) = True Then
   MouseMove($Variable [0],$Variable [1], 1)
    MouseMove(438,346,3);najechanie na kwote WYSOKOSC ZAKLADU
Sleep(1000)
send("^v")
 Sleep(2000)
 MouseMove(951,273);najechanie na POSTAW NIZEJ
Sleep(500)
MouseClick("")
Sleep(3000)
 EndIf
 
 $Variable = if PixelSearch(846,332,912,354,0xBB2223);piksel wziety z PRZEGRANA
    If IsArray($Variable) = True Then
  MouseMove($Variable [0],$Variable [1], 1)
    MouseClick(385,268,4);najechanie na STAWKE 2x
 Sleep(3000)
 MouseMove(951,273);najechanie na POSTAW NIZEJ
Sleep(500)
MouseClick("")
Sleep(3000)
 EndIf
 
 
WEnd
EndFunc

Kocham mpcforum.pl!!!

18706.png

  • 1 rok później...
Opublikowano

Witam,  podczepię  się to tematu,  co powinienem zmienić w kodzie żeby żeby pixelsearch czekał do momentu aż pojawi się pixel, nastepnie klik w te miejsce i czeka z pojawi się kolejny w innej częsci ekranu.

 

sleep(2000)
$coord1 = PixelSearch(1006, 612, 1033, 636, 0xFFFFFF)
If Not @error Then
    MouseClick("primary", $coord1[0], $coord1[1], 1,25) ; Klik w Plus
EndIf
 
sleep(500)
 
$coord2 = PixelSearch(858, 588, 899, 600, 0xFFFFFF)
If Not @error Then
    MouseClick("primary", $coord2[0], $coord2[1], 1,25) ; Klik w 10 Punktów
EndIf
Opublikowano

Ma poczekać np 10 sekund i jak się pojawi to kliknie w niego, jeżeli się nie pojawi ma wykonać program dalej

Czyli w pseudo kodzie by miało być :

 

czekam na obrazek 10 sek

jezeli się pojawi w tym czasie obrazek to klikam w niego

jezeli sie nie pojawi po  10 sekundach  to

wykonuję coś innego ?

 

Dobrze to zrozumiałem?

 
Opublikowano

tak dokładnie, jeśli pixel nie pojawi się w ciągu 10 sek, to ma wykonać dalszą część kodu

Może tak?

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GUIConstants.au3>

$time = @ & @
$time2 = @ & @
$i = 0

HotKeySet("{Esc}", "koniec")
HotKeySet("{f9}", "start")

$Form1 = GUICreate("Test", 111, 70, 192, 145, ($WS_EX_TOOLWINDOW))
$Label = GUICtrlCreateLabel("F9 -> start",20, 15, 158, 17 )
GUISetState(@SW_SHOW)

While 1
 $time = @ & @
 Sleep(10)
WEnd

func start()
sleep(100)
licznik()
   obrazek()
if $i > 10 then
   dalszaczesc()
  Else
start()
endif
endfunc

Func obrazek()
$coord1 = PixelSearch(245, 664, 293, 689, 0x390604); tu sobie wstaw swoje kordy i kolor
If Not @ Then
   GUICtrlSetData($Label,"jest obrazek")
	sleep(2000) ; to mozna zmiejszyc lub wywalic
	;MouseClick("primary", $coord1[0], $coord1[1], 1,25) ; Klik w Plus tu moze se klikac np. w obrazek
   $i = 11
EndIf
EndFunc

func dalszaczesc()
  GUICtrlSetData($Label,"C.D.- Esc") ; tu mozna dodać dalsza czesc
EndFunc

func licznik()
   $time2 = @ & @
   $i = $time2 - $time
   GUICtrlSetData($Label,$i)
EndFunc

func koniec()
   GUICtrlSetData($Label,"End")
   Sleep(1000)
   Exit 0
EndFunc

Obczaj czy tak moze być?

Opublikowano

#include <GUIConstantsEx.au3>

#include <StaticConstants.au3>

#include <WindowsConstants.au3>

HotKeySet("{end}","myExit")

 

$ES_NUMBER = 0

 

$Form1 = GUICreate("100 PR i Boczne zadania", 300, 100, 100, 0)

$Button1 = GUICtrlCreateButton("Start", 100, 15, 100, 35)

$label1 = GUICtrlCreateInput("", 120, 60, 60, 20, $ES_NUMBER)

$Label2 = GUICtrlCreateLabel("Powtórzenie"&" 0", 10, 10,70, 75)

GUISetState(@SW_SHOW, $Form1)

 

While 1

$nMsg = GUIGetMsg()

Switch $nMsg

Case $GUI_EVENT_CLOSE ;zamyka program

Exit

 

Case $Button1 ;jeżeli kliknie Start

sleep(5000)

For $i=1 to GUICtrlRead($label1) ; to uruchamia sie cykl

ToolTip($i) ; tootip wyświetlający wartość licznika pętli

 

 

 

 

; ----------------------------------------------------------------------------------

Tu prosze o pomoc

 

 

$coord=PixelSearch(0, 263,62,389,0x97CC56)

If NOT @error Then

MouseClick("left",$coord[0],$coord[1], 1, 30)

endif

 

sleep(700)

MouseClick("left", 1344,972) ; Odbierz Nagrode

sleep(2000)

MouseClick("left", 1414, 945, 1, 30) ; Nagroda Plan do perły

 

For $n = 1 To 9 ; Powtarza cykl przerwij i przerwij misje 9 razy

sleep(800)

MouseClick("left", 1257,969) ; Przerwij

sleep(350)

MouseClick("left", 1435,819) ; Przerwij misję

sleep(2000) ; domyslnie 1000

Next

 

sleep(1000)

MouseClick("left", 1417,970) ; OK

 

 

;---------------------------------------------------------------------------------

sleep(1000)

MouseClick("left", 63,101) ; Wejcie do Ratusza

sleep(2000)

MouseClick("left", 1077,573) ; Wiadomoci

sleep(500)

MouseClick("left", 1700,840) ; Perły Architektury

sleep(2000)

MouseClick("left", 1714, 663, 1, 30) ; Odwiedz

sleep(3000)

MouseClick("left", 1620,999) ; Klik po plusikem

sleep(1000)

 

For $p =1 To 10 ; Wrzuca 100 punktów

MouseClick("left", 1617,966) ; Plusik

sleep(1800) ; domyslnie 1400

MouseClick("left", 1526,941) ; 10 Paczek

sleep(100)

 

Next

 

sleep(50)

MouseClick("left", 1334, 1004, 1, 25) ; Zamknij

sleep(800)

MouseClick("left", 185, 1340, 2, 20) ; Wróć do miasta

sleep(5000)

MouseClick("left", 410,169) ; PUSTY PUNKT - zamyka liste wkładów

sleep(700)

MouseClick("left", 31, 357, 1, 25) ; Zbiry siwa głowa Normalnie wsp to --> 28,293

sleep(700)

MouseClick("left", 1344,972) ; Odbierz Nagrode

sleep(2000)

MouseClick("left", 1414, 945, 1, 30) ; Nagroda Plan do perły

 

For $m = 1 To 9 ; Powtarza cykl przerwij i przerwij misje 4-ry razy

sleep(800)

MouseClick("left", 1257,969) ; Przerwij

sleep(350)

MouseClick("left", 1435,819) ; Przerwij misję

sleep(2000) ; domyslnie 1000

Next

 

sleep(1000)

MouseClick("left", 1417,970) ; OK

 

MouseClick("left", 31, 298, 1, 25) ; Zbiry siwa głowa Normalnie wsp to --> 28,293

sleep(700)

MouseClick("left", 1344,972) ; Odbierz Nagrode

sleep(2000)

MouseClick("left", 1414, 945, 1, 30) ; Nagroda Plan do perły

 

For $o = 1 To 9 ; Powtarza cykl przerwij i przerwij misje 4-ry razy

sleep(800)

MouseClick("left", 1257,969) ; Przerwij

sleep(350)

MouseClick("left", 1435,819) ; Przerwij misję

sleep(2000) ; domyslnie 1000

Next

 

sleep(1000)

MouseClick("left", 1417,970) ; OK

sleep(1000)

MouseClick("left", 63,101) ; Wejcie do Ratusza

sleep(2000)

MouseClick("left", 1077,573) ; Wiadomoci

sleep(500)

MouseClick("left", 1700,840) ; Perły Architektury

sleep(2000)

MouseClick("left", 1714, 663, 1, 30) ; Odwiedz

sleep(3000)

MouseClick("left", 1620,999) ; Klik po plusikem

next

EndSwitch

wEnd

 

Func myExit()

Exit

EndFunc

 

 

 

 

 

Ta częsć kodu ma sprawdzić czy pojawi sie określony pixel w kordach, "(0, 263,62,389,0x97CC56)"

i jesli pojawi sie to ma kliknac na ten pixel i wykonać kod dalej czyli od "Odbierz nagrode" aż do "Ok"

teraz ma sprawdzić czy jest w w/w obszarze (0, 263,62,389,0x97CC56)

raz jeszcze ten pixel jeśli jest to niech wykona zadanie jeszcze raz od "Odbierz nagrode" do "Ok"

jesli nie pojawi sie ten pixel to ma skoczyc do lini "Wejscie do Ratusza"

Opublikowano

Witam, na początku zmień wywal to $ES_NUMBER = 0 ponieważ mimo że skrypt działa (i ja to na szybko kiedyś dodałem ) nie jest to prawidłowo.Zamiast tego $ES_NUMBER = 0 jak dodasz #include <EditConstants.au3> na początku, bedzie działało dobrze.

Co do samej treści skryptu to staraj się umieszczać poszczególne działania w osobnych funkcjach, a potem po prostu żonglujesz dowolnie tymi funkcjami uzywając instrukcji warunkowych w głownej pętli.Taki układ skryptu daje nam możliwość wykonywania poszczególnych zadań

(części programu - funkcji) w dowolnej kolejności.Autoit to nie basic gdzie można było skakać do numerowanych linii w kodzie, a umieszczanie kawałków kodu w funkcjach daje nam też większą przejrzystość oraz lepsze późniejsze zrozumienie całości.

Właściwie po tym co napisałeś to już można wywnioskować że masz już szkic tego co ma program robić.Umieść (podziel) po prostu poszczególne zadania  w funkcjach, a potem wywołasz je dowolnie (można nawet kilka razy wywołać tą samą funkcje kolejność też może być dowolna) z pętli while -  wend.Wszystko stanie się łatwiejsze gdy bedziemy   trzymali się tej zasady.   ;)

Opublikowano

Zrobiłem jak napisałeś, posegregowałem na funkcje, faktycznie wygodniej i nie trzeba pisać tego samego kilka razy, wygląda to teraz tak

 

#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
 
HotKeySet("{end}","myExit")
$i = 0
 
 
$Form1 = GUICreate("100 PR i Boczne zadania", 300, 120, 100, 0)
$Button1 = GUICtrlCreateButton("Start", 100, 15, 100, 35)
$label1 = GUICtrlCreateInput("", 120, 60, 60, 20)
$Label2 = GUICtrlCreateLabel("Powtórzenie"&" 0", 10, 10,70, 75)
GUISetState(@SW_SHOW, $Form1)
Func STOpaczek()
For $p =1 To 10 ; Wrzuca 100 punktów
Plusik()
DziesiecPaczek()
Next
endfunc
Func Odbierznagrode()
MouseClick("left", 1344,972) ; Odbierz Nagrode
sleep(2000)
EndFunc
Func NagrodaPlan()
MouseClick("left", 1414, 945, 1, 30)
EndFunc
Func Przerwij()
MouseClick("left", 1257,969) ; Przerwij
sleep(350)
EndFunc
Func PrzerwijMisje()
MouseClick("left", 1435,819) ; Przerwij misję
sleep(2000)
EndFunc
Func WejscieRatusz()
MouseClick("left", 63,101) ; Wejcie do Ratusza
sleep(2000)
EndFunc
func Wiadomosci()
 
 
MouseClick("left", 1077,573) ; Wiadomoci
sleep(500)
EndFunc
Func OK()
sleep(1000)
MouseClick("left", 1417,970) ; OK
endfunc
Func PerlyArchitektury()
MouseClick("left", 1700,840) ; Perły Architektury
sleep(2000)
EndFunc
Func Odwiedz()
MouseClick("left", 1714, 663, 1, 30) ; Odwiedz
sleep(3000)
EndFunc
Func KlikpodPlusem()
MouseClick("left", 1620,999) ; Klik po plusikem
sleep(1000)
EndFunc
Func Plusik()
MouseClick("left", 1617,966) ; Plusik
sleep(1400) ; domyslnie 1400
EndFunc
Func DziesiecPaczek()
MouseClick("left", 1526,941) ; 10 Paczek
sleep(100)
EndFunc
Func Zamknij()
MouseClick("left", 1334, 1004, 1, 25) ; Zamknij
sleep(800)
EndFunc
Func WrocdoMiasta()
MouseClick("left", 185, 1340, 2, 20) ; Wróć do miasta
sleep(5000)
EndFunc
Func PustyPunkt()
MouseClick("left", 410,169) ; PUSTY PUNKT - zamyka liste wkładów
sleep(700)
EndFunc
Func WykonaneZadanie()
$coord1 = PixelSearch(5, 176, 59, 343, 0x83A84B)
If Not @error Then
 
sleep(2000)
MouseClick("primary", $coord1[0], $coord1[1], 1,25)
   $w = 11
EndIf
EndFunc
Func ZrobNoweZadania()
For $n = 1 To 9 ; Powtarza cykl przerwij i przerwij misje 9 razy
sleep(800)
Przerwij()
PrzerwijMisje()
Next
endfunc
Func DalszaCzesc()
sleep(1000)
WejscieRatusz()
Wiadomosci()
PerlyArchitektury()
Odwiedz()
KlikpodPlusem()
EndFunc
 
 
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE ;zamyka program
Exit
 
 
Case $Button1 ;jeżeli kliknie Start
sleep(5000) ; po wcisnieciu poczekaj chwile
 
For $c=1 to GUICtrlRead($label1) ; to uruchamia sie cykl
ToolTip($c) ; tootip wyświetlający wartość licznika pętli
 
STOpaczek()
sleep(50)
Zamknij()
WrocdoMiasta()
PustyPunkt()
 
;----------------------------------------------------------------------------------------------------
WykonaneZadanie()
if $i > 10 then
  sleep(700)
Odbierznagrode()
NagrodaPlan()
ZrobNoweZadania()
Else
sleep(1000)
OK()
sleep(1000)
;------------------------------------------------------------------------------------------------------
WejscieRatusz()
Wiadomosci()
PerlyArchitektury()
Odwiedz()
KlikpodPlusem()
EndIf
 
 
Next
EndSwitch
wEnd
 
Func myExit()
Exit
EndFunc
 
Jednak nadal nie widzi tego pixela który pojawia sie w ustalonych kordach
na poniższym obrazku wyjaśnie w czym rzecz
 

 

post-1514570-0-17972200-1464595104.png

Opublikowano

Wykonaniezadania()

#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>

HotKeySet("{end}","myExit")
$i = 0

$Form1 = GUICreate("100 PR i Boczne zadania", 300, 120, 100, 0)
$Button1 = GUICtrlCreateButton("Start", 100, 15, 100, 35)
$label1 = GUICtrlCreateInput("", 120, 60, 60, 20, $ES_NUMBER)
$Label2 = GUICtrlCreateLabel("Powtórzenie"&" 0", 10, 10,70, 75)
GUISetState(@SW_SHOW, $Form1)

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE ;zamyka program
Exit
 Case $Button1 ;jeżeli kliknie Start
sleep(5000) ; po wcisnieciu poczekaj chwile
 For $c=1 to GUICtrlRead($label1) ; to uruchamia sie cykl
ToolTip($c) ; tootip wyświetlający wartość licznika pętli
 STOpaczek()
sleep(50)
Zamknij()
WrocdoMiasta()
PustyPunkt()
WykonaneZadanie()
if $i > 10 then
  sleep(700)
Odbierznagrode()
NagrodaPlan()
ZrobNoweZadania()
Else
sleep(1000)
OK()
sleep(1000)
WejscieRatusz()
Wiadomosci()
PerlyArchitektury()
Odwiedz()
KlikpodPlusem()
EndIf
Next
EndSwitch
wEnd

Func STOpaczek()
For $p =1 To 10 ; Wrzuca 100 punktów
Plusik()
DziesiecPaczek()
Next
endfunc

Func Odbierznagrode()
MouseClick("left", 1344,972) ; Odbierz Nagrode
sleep(2000)
EndFunc

Func NagrodaPlan()
MouseClick("left", 1414, 945, 1, 30)
EndFunc

Func Przerwij()
MouseClick("left", 1257,969) ; Przerwij
sleep(350)
EndFunc

Func PrzerwijMisje()
MouseClick("left", 1435,819) ; Przerwij misję
sleep(2000)
EndFunc

Func WejscieRatusz()
MouseClick("left", 63,101) ; Wejcie do Ratusza
sleep(2000)
EndFunc

func Wiadomosci()
 MouseClick("left", 1077,573) ; Wiadomoci
sleep(500)
EndFunc

Func OK()
sleep(1000)
MouseClick("left", 1417,970) ; OK
endfunc

Func PerlyArchitektury()
MouseClick("left", 1700,840) ; Perły Architektury
sleep(2000)
EndFunc

Func Odwiedz()
MouseClick("left", 1714, 663, 1, 30) ; Odwiedz
sleep(3000)
EndFunc

Func KlikpodPlusem()
MouseClick("left", 1620,999) ; Klik po plusikem
sleep(1000)
EndFunc

Func Plusik()
MouseClick("left", 1617,966) ; Plusik
sleep(1400) ; domyslnie 1400
EndFunc

Func DziesiecPaczek()
MouseClick("left", 1526,941) ; 10 Paczek
sleep(100)
EndFunc

Func Zamknij()
MouseClick("left", 1334, 1004, 1, 25) ; Zamknij
sleep(800)
EndFunc

Func WrocdoMiasta()
MouseClick("left", 185, 1340, 2, 20) ; Wróć do miasta
sleep(5000)
EndFunc

Func PustyPunkt()
MouseClick("left", 410,169) ; PUSTY PUNKT - zamyka liste wkładów
sleep(700)
EndFunc

Func WykonaneZadanie()
$coord1 = PixelSearch(5, 176, 59, 343, 0x83A84B,2,5)
If Not @ Then
 sleep(2000)
MouseClick("primary", $coord1[0], $coord1[1], 1,25)
   $w = 11
EndIf
EndFunc

Func ZrobNoweZadania()
For $n = 1 To 9 ; Powtarza cykl przerwij i przerwij misje 9 razy
sleep(800)
Przerwij()
PrzerwijMisje()
Next
endfunc

Func DalszaCzesc()
sleep(1000)
WejscieRatusz()
Wiadomosci()
PerlyArchitektury()
Odwiedz()
KlikpodPlusem()
EndFunc

Func myExit()
Exit
EndFunc

Zobacz czy teraz zadziala ?

Opublikowano

Niestety nie działa wykonuje program do funkcji PustyPunkt() i przeskakuje do funkcji Wejsciedoratusza(),  aż do końca,  omija funkcje WykonaneZadanie()

Opublikowano

Niestety nie działa wykonuje program do funkcji PustyPunkt() i przeskakuje do funkcji Wejsciedoratusza(),  aż do końca,  omija funkcje WykonaneZadanie()

U mnie dziala ta funkcja:

Zrobilem to tak ze w kazdej funkcji wyskoczy ToolTip z jej nazwa i jak nie zniknie to bedzie znaczylo ze ta funkcja ma jakis blad:

Kod:

#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>

HotKeySet("{end}","myExit")
$i = 0
local $Msg , $Exit
$Form1 = GUICreate("100 PR i Boczne zadania", 300, 120, 100, 0)
$Button1 = GUICtrlCreateButton("Start", 100, 15, 100, 35)
$label1 = GUICtrlCreateInput("", 120, 60, 60, 20, $ES_NUMBER)
$Label2 = GUICtrlCreateLabel("Powtórzenie"&" 0", 10, 10,70, 75)
GUISetState(@SW_SHOW, $Form1)

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE ;zamyka program
Exit
 Case $Button1 ;jeżeli kliknie Start
sleep(5000) ; po wcisnieciu poczekaj chwile
 For $c=1 to GUICtrlRead($label1) ; to uruchamia sie cykl
ToolTip($c) ; tootip wyświetlający wartość licznika pętli
 STOpaczek()
sleep(50)
Zamknij()
WrocdoMiasta()
PustyPunkt()
WykonaneZadanie()
if $i > 10 then
  sleep(700)
Odbierznagrode()
NagrodaPlan()
ZrobNoweZadania()
Else
sleep(1000)
OK()
sleep(1000)
WejscieRatusz()
Wiadomosci()
PerlyArchitektury()
Odwiedz()
KlikpodPlusem()
EndIf
Next
EndSwitch
wEnd

Func STOpaczek()
ToolTip("Funkcja STOpaczek",0,0)
For $p =1 To 10 ; Wrzuca 100 punktów
Plusik()
DziesiecPaczek()
Next
ToolTip("")
endfunc

Func Odbierznagrode()
ToolTip("Funkcja Odbierznagrode",0,0)
MouseClick("left", 1344,972) ; Odbierz Nagrode
sleep(2000)
ToolTip("")
EndFunc

Func NagrodaPlan()
ToolTip("Funkcja NagrodaPlan",0,0)
MouseClick("left", 1414, 945, 1, 30)
ToolTip("")
EndFunc

Func Przerwij()
ToolTip("Funkcja Przerwij",0,0)
MouseClick("left", 1257,969) ; Przerwij
sleep(350)
ToolTip("")
EndFunc

Func PrzerwijMisje()
ToolTip("Funkcja PrzerwijMisje",0,0)
MouseClick("left", 1435,819) ; Przerwij misję
sleep(2000)
ToolTip("")
EndFunc

Func WejscieRatusz()
ToolTip("Funkcja WejscieRatusz",0,0)
MouseClick("left", 63,101) ; Wejcie do Ratusza
sleep(2000)
ToolTip("")
EndFunc

func Wiadomosci()
 ToolTip("Funkcja Wiadomosci",0,0)
 MouseClick("left", 1077,573) ; Wiadomoci
sleep(500)
ToolTip("")
EndFunc

Func OK()
ToolTip("Funkcja OK",0,0)
sleep(1000)
MouseClick("left", 1417,970) ; OK
ToolTip("")
endfunc

Func PerlyArchitektury()
ToolTip("Funkcja PerlyArchitektory",0,0)
MouseClick("left", 1700,840) ; Perły Architektury
sleep(2000)
ToolTip("")
EndFunc

Func Odwiedz()
ToolTip("Funkcja Odwiedz",0,0)
MouseClick("left", 1714, 663, 1, 30) ; Odwiedz
sleep(3000)
ToolTip("")
EndFunc

Func KlikpodPlusem()
ToolTip("Funkcja KlikpodPlusem",0,0)
MouseClick("left", 1620,999) ; Klik po plusikem
sleep(1000)
ToolTip("")
EndFunc

Func Plusik()
ToolTip("Funkcja Plusik",0,0)
MouseClick("left", 1617,966) ; Plusik
sleep(1400) ; domyslnie 1400
ToolTip("")
EndFunc

Func DziesiecPaczek()
ToolTip("Funkcja DziesiecPaczek",0,0)
MouseClick("left", 1526,941) ; 10 Paczek
sleep(100)
ToolTip("")
EndFunc

Func Zamknij()
ToolTip("Funkcja Zamknij",0,0)
MouseClick("left", 1334, 1004, 1, 25) ; Zamknij
sleep(800)
ToolTip("")
EndFunc

Func WrocdoMiasta()
ToolTip("Funkcja WrocdoMiasta",0,0)
MouseClick("left", 185, 1340, 2, 20) ; Wróć do miasta
sleep(5000)
ToolTip("")
EndFunc

Func PustyPunkt()
ToolTip("Funkcja PustyPunkt",0,0)
MouseClick("left", 410,169) ; PUSTY PUNKT - zamyka liste wkładów
sleep(700)
ToolTip("")
ToolTip("")
EndFunc

Func WykonaneZadanie()
ToolTip("Funkcja WykonaneZadanie",0,0)
$coord1 = PixelSearch(5, 176, 59, 343, 0x83A84B,2,5)
If Not @ Then
 sleep(2000)
MouseClick("primary", $coord1[0], $coord1[1], 1,25)
   $w = 11
ToolTip("")
EndIf
EndFunc

Func ZrobNoweZadania()
ToolTip("ZrobNoweZadania",0,0)
For $n = 1 To 9 ; Powtarza cykl przerwij i przerwij misje 9 razy
sleep(800)
Przerwij()
PrzerwijMisje()
Next
ToolTip("")
endfunc

Func DalszaCzesc()
ToolTip("DalszaCzesc",0,0)
sleep(1000)
WejscieRatusz()
Wiadomosci()
PerlyArchitektury()
Odwiedz()
KlikpodPlusem()
ToolTip("")
EndFunc

Func myExit()
Exit
EndFunc

Teraz bedzie widac gdzie i co nie dziala lub dziala źle ;).

Opublikowano

Hmm faktycznie tooltip pokazuje że funkcja została wykonana, ale myszka nie idzie na ten pixel,  a może można podać tu jaki zakres pixeli, albo kilka, i jesli który sie pokaze to kliknie?

Opublikowano

Teraz to juz prościzna, odznacz pozostałe funkcje aby nie działały tym znaczkiem ; a zostaw tylko tą jedną  w tej pętli i pobaw się nią aż uzyskasz to co chcesz ;) .

Opublikowano

No walczę z tym, problem jest w tej znikającej zapalającej i gaszącej się stopniowo zielonej ramce,  jak wybiorę inny punkt w granicach podanych w kordach np, piksel na włosach myszka działa i wskakuje na ten pixel. 

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...