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

Klikanie myszką po znalezieniu pixelsearch


Rekomendowane odpowiedzi

Opublikowano

Witam męczę sie od wczoraj ale nic nie zrobiłem problem polega na tym że mam taki kodzik:

$pixel = PixelSearch(0, 0, 1439, 899, 0xD0C4DC)
If IsArray($pixel) = True Then
   MouseMove($pixel [0], $pixel [1], 1)
   sleep(100)
   WinActivate("[CLASS:LauncherWindowClass]")
EndIf

I teraz chodzi mi o to że po uaktywnieniu okna (winactive) myszka kliknęła w przycisk PONÓW i tak cały czas dokładnie to jak zostanie wciśnięty PONÓW to zniknie i jeśli znowu wyskoczy to żeby znowu go wcisnęło, nie mogę sobie poradzić z góry dzięki 

Opublikowano

Witam męczę sie od wczoraj ale nic nie zrobiłem problem polega na tym że mam taki kodzik:

$pixel = PixelSearch(0, 0, 1439, 899, 0xD0C4DC)
If IsArray($pixel) = True Then
   MouseMove($pixel [0], $pixel [1], 1)
   sleep(100)
   WinActivate("[CLASS:LauncherWindowClass]")
EndIf

I teraz chodzi mi o to że po uaktywnieniu okna (winactive) myszka kliknęła w przycisk PONÓW i tak cały czas dokładnie to jak zostanie wciśnięty PONÓW to zniknie i jeśli znowu wyskoczy to żeby znowu go wcisnęło, nie mogę sobie poradzić z góry dzięki 

$pixel = PixelSearch(0, 0, 1439, 899, 0xD0C4DC)
If IsArray($pixel) = True Then
   MouseMove($pixel [0], $pixel [1], 1)
   sleep(100)
   WinActivate("[CLASS:LauncherWindowClass]")
EndIf

1. Przeanalizuj, co kod robi

1.1. Raz sprawdza czy jest dany pixel na danej pozycji

1.2. Sprawdza czy $pixel ma wartość tablicy (nie wiem jak to napisać :P). Jeżeli tak to wykonuje dane zadanie

1.2.1. Przesuwa tam mysz

1.2.2.Przerwa 100 ms

1.2.3 Aktywuje okno Launcher...

 

Ok.

2. Zmieńmy kod

2.1. Jeżeli chcesz sprawdzać aż do skutku to zastosuj pętlę, np. While 1

While 1
;zadania
WEnd

2.2. Możesz zamiast

 

If IsArray($pixel) = True Then

Użyć

If Not @ Then

To chyba tyle. Sprawdź i napisz czy działa

Tysiące lat wojen, ani jednego dnia pokoju,

pytam czy to skończy się.

 

Zegarek BB

Opublikowano

@nafta103

Możliwe, że ta aplikacja ma blokadę przed takimi funkcjami. Możesz spróbować uruchomić jako administrator 

#RequireAdmin

Ew. będziesz musiał (bądź musiała) bawić się z API Windowsa co spowoduje, że nie będzie to działać w tle (przynajmniej nie powinno), ponieważ większość funkcji nie współpracuje z API gier z powodu zabezpieczeń. No chyba, że napiszesz wrapper który pomoże nawiązać współpracę z zewnętrzną aplikacją.

 

EDIT: Zapomniałem o pamięci. Jeżeli nie będzie działać to sprawdź funkcje biblioteki NomadMemory

Tysiące lat wojen, ani jednego dnia pokoju,

pytam czy to skończy się.

 

Zegarek BB

Opublikowano

Oo dziala wielkie dzięki :)

 

ale teraz kolejny problem przy następnej aplikacji mam Pauza Ponów i jak zrobić tak żeby skrypt był uruchomiony cały czas i wyszukiwał pixel klikał w ponów i dalej czuwał ? 

Opublikowano

@nafta103

Przeanalizuj co ma zrobić.

(Przynajmniej ja to tak zrozumiałem)

1.1. Szuka pixela

1.1.1.1. Znajdzie pixel

1.1.1.2. Kliknie na niego

1.1.2.1. Nie znajdzie

1.1.2.2. Nic nie robi (ma czuwać), powraca do 1.1

 

2.1. Aplikacja ma ciągle szukać, czyli potrzebujesz pętli.

While 1
;zadania
WEnd

2.2. Ma szukać pixel'a 

$tak = PixelSearch(0, 0, nie, wiem, 0xFFFFFF)

2.3. Jak go znajdzie to ma w niego kliknąć

If not @ Then
MouseClick ("left/right", $tak[0],$tak[1])

2.4. Jak nie znajdzie to nic nie wykona - powtórzy się pętla.

 

PS: Polecam dać Sleep'a tak aby procesor się nie zmęczył :D

Sleep (200)

+ uprawnienia administratora

Tysiące lat wojen, ani jednego dnia pokoju,

pytam czy to skończy się.

 

Zegarek BB

  • 2 tygodnie później...
Opublikowano

@JDaniel1

a jak zrobić żeby sprawdzał w 10 miejscach kolor piksela i w zależności który będzie się zgadza tam klikał
proszę o podpowiedz

Pamiętaj! Jeśli zasłużyłem , kliknij na "Lubię To"!

Ciebie to nic nie kosztuje, ale mnie motywuje. ^^

Opublikowano

Można różnie, ja bym to zrobił jakoś tak:

$points[10][2] = [
    [10, 20], ; tu podajsz współrzędne punktów (dane przykładowe)
    [50, 70],
    ; i tak dalej aż do 10 elementów
]
$color = 0xFFFFFF ; jakiś kolor

For $point In $points
    $coords = PixelSearch($point[0], $point[1], $point[0], $point[1], $color)
    If Not @ Then ExitLoop
Next

MouseClick($MOUSE_CLICK_LEFT, $coords[0], $coords[1])

Chcesz precyzyjnej i zrozumiałej odpowiedzi? - Zadaj precyzyjne i zrozumiałe pytanie. Nie przyjmuję zleceń.
Nie odpowiadam na priv na pytania, które można zadać na forum. Chcesz mojej pomocy - oznacz mnie w poście =>  @"Hans Kloss PL" 

Opublikowano

@Hans Kloss PL

$points[10][2] = [
    [496, 620], ; tu podajsz współrzędne punktów (dane przykładowe)
    [772, 617],
    ; i tak dalej
]
$color = 0xFFFFFF ; jakiś kolor

For $point In $points
    $coords = PixelSearch($point[0], $point[1], $point[0], $point[1], $color)
    If Not @ Then ExitLoop
Next

MouseClick($MOUSE_CLICK_LEFT, $coords[0], $coords[1])

wyskakuje mi taki bład ;/

http://www86.zippyshare.com/v/lGZOV7AS/file.html

Pamiętaj! Jeśli zasłużyłem , kliknij na "Lubię To"!

Ciebie to nic nie kosztuje, ale mnie motywuje. ^^

Opublikowano

Daj tablicę w jednej linii z Dim na początku (oczywiście zamiast kropek uzupełnij współrzedne do 10 elementów):

#include <AutoItConstants.au3>

Dim $points[10][2] = [[10, 20],[50, 70], ...]
$color = 0xFFFFFF ; jakiś kolor

For $point In $points
    $coords = PixelSearch($point[0], $point[1], $point[0], $point[1], $color)
    If Not @ Then ExitLoop
Next

MouseClick($MOUSE_CLICK_LEFT, $coords[0], $coords[1])

Możliwe, że jeszcze jakieś błędy są, piszę z pamięci - dałem Ci ogólną ideę, nie będę Ci robił gotowca.

Chcesz precyzyjnej i zrozumiałej odpowiedzi? - Zadaj precyzyjne i zrozumiałe pytanie. Nie przyjmuję zleceń.
Nie odpowiadam na priv na pytania, które można zadać na forum. Chcesz mojej pomocy - oznacz mnie w poście =>  @"Hans Kloss PL" 

Opublikowano

@Hans Kloss PL

@JDaniel1

Ustawiam najprostszy kod i myszka w ogóle się nie przesuwa gdzie może leżeć problem?

#RequireAdmin
while 1
sleep(100)
WEnd


while 1
$zmienna = PixelSearch(0, 0, 668, 58,0x000000)
If Not @ Then
MouseClick ("left", ($zmienna[0],$zmienna[1] )
EndIf
WEnd

Pamiętaj! Jeśli zasłużyłem , kliknij na "Lubię To"!

Ciebie to nic nie kosztuje, ale mnie motywuje. ^^

Opublikowano

@ZidaneNS

 

@Hans Kloss PL

@JDaniel1

Ustawiam najprostszy kod i myszka w ogóle się nie przesuwa gdzie może leżeć problem?

#RequireAdmin
while 1
sleep(100)
WEnd


while 1
$zmienna = PixelSearch(0, 0, 668, 58,0x000000)
If Not @ Then
MouseClick ("left", ($zmienna[0],$zmienna[1] )
EndIf
WEnd

 

 

1. Masz 2 pętle nieskończone a pierwsza nie wywołuje drugiej - cały czas aplikacja działa poprawnie, ale Wykonuje tylko jedną część zadania. Tu jest problem

while 1
sleep(100)
WEnd

Analizujcie linijka po linijce ._.

 

Możesz ten kod zamienić na taki, aby wywoływać własną funkcje

while 1
$zmienna = PixelSearch(0, 0, 668, 58,0x000000)
If Not @ Then
MouseClick ("left", ($zmienna[0],$zmienna[1] )
EndIf
WEnd


zamieniasz na

Func cos()
$zmienna = PixelSearch(0, 0, 668, 58,0x000000)
If Not @ Then
MouseClick ("left", ($zmienna[0],$zmienna[1] )
EndIf
EndFunc

A pętle główną na 

#RequireAdmin
while 1
cos()
sleep(500)
WEnd

Tysiące lat wojen, ani jednego dnia pokoju,

pytam czy to skończy się.

 

Zegarek BB

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...