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

Pola z kolorami


Gość X-McGyver

Rekomendowane odpowiedzi

Opublikowano

Witam

 

Mam 3 pola, w każdym z nich zapala sie i znika jakiś kolor w losowej kolejności. Napisałem do tych pól program, który klika w aktualnie zapalone pole. Ma w nie klikać tylko raz a później kliknąć w następnej pole, które się zapali i tak w nieskończoność. Prędkość zapalanie sie tych pól przyspiesza. Niestety program, który napisałem klika w pojedyncze zapalone pole wiele razy zanim przejdzie do następnego, a ma klikać raz. Dodałem więc do tego Sleep(1000) i już to działa lepiej, ale tak jak napisałem prędkość zapalania się pól przyspiesza, więc program wykonuje się poprawnie tylko kilkanaście razy. Co można dodać albo zmienić w tym kodzie, żeby klikało w każde z zapalonych pól tylko raz? Ostatnio próbowałem dodać pętle do while albo dopisać po kliknięciu np. $czerwony = Not $czerwony, ale nic to nie zmienia albo działa źle.

HotKeySet ("a", "start")
 
While 1
    Sleep(10)
WEnd

Func start()
 
While 1
 
$czerwony = PixelSearch(560,140, 97, 80, 0xE23838)
$niebieski = PixelSearch(560,140, 97, 80, 0x0170BF)
$zielony = PixelSearch(560,140, 97, 80, 0x00BE21)
 
If IsArray($czerwony) = 1 Then
    MouseClick("left", $czerwony[0], $czerwony[1], 1, 1)
    $czerwony = Not $czerwony
EndIf
 
If IsArray($niebieski) = 1 Then
    MouseClick("left", $niebieski[0], $niebieski[1], 1, 1)
    $niebieski = Not $niebieski
EndIf
 
If IsArray($zielony) = 1 Then
    MouseClick("left", $zielony[0], $zielony[1], 1, 1)
    $zielony = Not $zielony
EndIf
 
Sleep(10)
WEnd
 
EndFunc
Opublikowano

Dobra już sobie poradziłem. Mam inny problem, jak można zrobić, żeby jesli np. PixelSearch wyszuka mi kolor i kliknie w to miejsce, to żeby następne kliknięcie nie mogło wystąpić w tym samym miejscu co ostatnio? Chodzi o uciekającą kropke, PixelSearch wyszukuje ją tak szybko, że klika w to samo miejsce wiele razy, a powinien tylko raz. Wiem, że można dodać Sleepa, ale może jest lepsze rozwiązanie. Chodzi o to, żeby następny raz klikało tylko wtedy, kiedy kropka zmieni położenie.

HotKeySet ("a", "Start")

Func Start()

While 1

$green = PixelSearch(687, 59, 1268, 933, 0x00FF00)

If IsArray($green) = 1 Then
    MouseClick("left", $green[0], $green[1]+20, 1, 1)
EndIf

Sleep(10)
WEnd
EndFunc

While 1
	Sleep(10)
WEnd
Opublikowano

Po kliknięciu zapisuj sobie znalezione kordy w jakiejś zmiennej, i każ kliknąć dopiero gdy obecne będą inne od poprzednich.

Opublikowano

Po kliknięciu zapisuj sobie znalezione kordy w jakiejś zmiennej, i każ kliknąć dopiero gdy obecne będą inne od poprzednich.

To byłby dobry pomysł, gdyby ta kropka zajmowała 1x1 px, ale ona zajmuje przynajmniej 50x50 px i nawet jak kliknie pixel obok to nic to nie zmienia. Najlepiej byłoby napisać coś takiego, że drugie kliknięcie może wystąpić przynajmniej 100 px poniżej lub powyżej oraz na lewo lub prawo od poprzedniego kliknięcia.

Opublikowano

To co w tym trudnego? Po prostu każesz klikać gdy nowe kordy są oddalone conajmniej o 100 pixeli w każdą stronę od pozycji poprzedniego kliknięcia.

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...