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

PixelSearch - licznik pojawiajacych się pikseli


Rekomendowane odpowiedzi

Opublikowano

Witam czy pomożecie mi ze skryptem, działanie ma polegać na tym że bedzie klikać w różne miejsca na ekranie, ale jeżeli w wyznaczonym miejscu cord pojawi się piksel to chciałbym żeby w okienku GUI liczyło ile razy pojawił się.

 

#include <GUIConstantsEx.au3>#include <StaticConstants.au3>#include <WindowsConstants.au3>#include <EditConstants.au3>HotKeySet("{end}","myExit")$Form1 = GUICreate("LICZNIK ", 300, 200, 1050, 570)$Button1 = GUICtrlCreateButton("Start", 100, 15, 100, 35)$label1 = GUICtrlCreateInput("", 120, 60, 60, 20, $ES_NUMBER)$Label2 = GUICtrlCreateLabel("Powtórzenie "&" 0", 10, 10,70, 75)$Label3 = GUICtrlCreateLabel("RED "&" 0", 5, 100,70, 75)$Label4 = GUICtrlCreateLabel("BLUE "&"0", 5, 140,70, 75)GUISetState(@SW_SHOW, $Form1)WinSetOnTop("LICZNIK" , "", 1)While 1$nMsg = GUIGetMsg()Switch $nMsgCase $GUI_EVENT_CLOSE ;zamyka programExitCase $Button1 ;jeżeli kliknie Startsleep(1000) ; po wcisnieciu poczekaj chwileFor $c=1 to GUICtrlRead($label1) ; to uruchamia sie cyklGUICtrlSetData($Label2, "Powtórzenie " &$c)NextEndSwitchWEnd;-------------------------------------------------;  Tu będzie klikać w różne miejsca na ekranie, ;-------------------------------------------------Func RED()Sleep(100)While TrueLocal $aCoord = PixelSearch(330, 726, 377, 739, 0xF2EAE8)If Not @[url="http://www.mpcforum.pl/user/6221-error/"][size=3]error[/size][/url]ThenMouseClick("left",444,731,1,2)Sleep(100)MouseClick("left", 515,579,1,4)ExitLoopEndIfWEndEndFuncFunc BLUE()sleep(100)While TrueLocal $aCoord = PixelSearch(502, 726, 552, 736, 0xF0F5E9)If Not @[url="http://www.mpcforum.pl/user/6221-error/"][size=3]error[/size][/url] ThenMouseClick("left", 559,732,1,5)ExitLoopEndIfWEndEndFuncFunc myExit()ExitEndFunc 
// Korzystamy ze znaczników kodu

~Vertisan

Opublikowano

Nie wiem w jakim celu sa te nieskonczone petle w funkcjach RED i BLUE, wiec napisalem nowa funkcje tylko do liczenia kolorow.

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

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

$Form1 = GUICreate("LICZNIK ", 300, 200, 1050, 570)
$Button1 = GUICtrlCreateButton("Start", 100, 15, 100, 35)
$label1 = GUICtrlCreateInput("", 120, 60, 60, 20, $ES_NUMBER)
$Label2 = GUICtrlCreateLabel("Powtórzenie " & " 0", 10, 10, 70, 75)
$Label3 = GUICtrlCreateLabel("RED 0", 5, 100, 70, 75)
$Label4 = GUICtrlCreateLabel("BLUE 0", 5, 140, 70, 75)
GUISetState(@SW_SHOW, $Form1)
WinSetOnTop("LICZNIK", "", 1)

Global $CountRed = 0
Global $CountBlue = 0

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE ;zamyka program
			Exit
		Case $Button1 ;jeżeli kliknie Start
			Sleep(1000) ; po wcisnieciu poczekaj chwile
			For $c = 1 To GUICtrlRead($label1) ; to uruchamia sie cykl
				CountColors()
				GUICtrlSetData($Label2, "Powtórzenie " & $c)
			Next
	EndSwitch
WEnd

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

;  Tu bedzie klikałą w różne miejsca na ekranie,

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

Func RED()
	Sleep(100)
	While True
		Local $aCoord = PixelSearch(330, 726, 377, 739, 0xF2EAE8)
		If Not @ Then
			MouseClick("left", 444, 731, 1, 2)
			Sleep(100)
			MouseClick("left", 515, 579, 1, 4)
			ExitLoop
		EndIf
	WEnd
EndFunc   ;==>RED

Func BLUE()
	Sleep(100)
	While True
		Local $aCoord = PixelSearch(502, 726, 552, 736, 0xF0F5E9)
		If Not @ Then
			MouseClick("left", 559, 732, 1, 5)
			ExitLoop
		EndIf
	WEnd
EndFunc   ;==>BLUE

Func CountColors()
	Sleep(100)
	Local $CoordRed = PixelSearch(330, 726, 377, 739, 0xF2EAE8)
	Local $CoordBlue = PixelSearch(502, 726, 552, 736, 0xF0F5E9)

	If IsArray($CoordRed) Then
		$CountRed += 1
		GUICtrlSetData($Label3, "RED " & $CountRed)
	EndIf

	If IsArray($CoordBlue) Then
		$CountBlue += 1
		GUICtrlSetData($Label4, "BLUE " & $CountBlue)
	EndIf
EndFunc   ;==>CountColors

Func myExit()
	Exit
EndFunc   ;==>myExit

 

 

Opublikowano

Pawelek dziękuje:), o to mi właśnie chodziło

 

PS. Mam jeszcze takie pytanie odnośnie Pixelsearch czym sięróżni to

 

  Local $aCoord2 = PixelSearch(706, 604, 822, 613, 0x80271B)
  If Not @error Then

  MouseClick("left", 782, 602, 1, 30)

 

od tego

 

 $cord= PixelSearch(638, 483, 673, 533, 0x496F19)
 If IsArray($jest) = 1 Then    

 MouseClick("left", $cord[0], $cord[1], 1, 5)

Opublikowano

W pierwszym przypadku funkcja PixelSearch szuka punktu o zadanym kolorze (gdy znajdzie to @error = 0) i MouseClick("left", 782, 602, 1, 30) klika na z góry ustalone koordynaty.

W drugim przypadku po znalezieniu przez PixelSearch punktu o szukanym kolorze   MouseClick("left", $cord[0], $cord[1], 1, 5) klika na koordynaty znalezionego punktu (które są zapisane przez PixelSearch w tablicy $cord).

Ot i cała różnica.

 

Poczytaj sobie tutaj: https://pl.wikibooks.org/wiki/AutoIt/Przejmowanie_kontroli#Inne_przydatne_funkcje

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...