Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 11:54

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Pixelsearch Event

Discussion on Pixelsearch Event within the AutoIt forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 30
Join Date: Jul 2013
Posts: 251
Received Thanks: 16
Pixelsearch Event

Hallo zusammen, ich bin derzeit dabei mir ein kleines Script zu schreiben.
Derzeit habe ich folgenden Code:

Soweit so gut, er fährt die einzelnen Punkte an. Erkennt auch ob die Passende Farbe in dem Bereich vorhanden ist.
Jetzt möchte ich aber sagen, wenn diese Farbe dort nicht vorhanden ist, breche diese Funktion ab, und gehe in eine andere.

Wie kann ich dies mittels If abfrage realisieren?
Numb-Ex is offline  
Old 08/05/2019, 03:01   #2
 
elite*gold: 0
Join Date: Apr 2011
Posts: 363
Received Thanks: 167
Quote:
Originally Posted by Numb-Ex View Post
Hallo zusammen, ich bin derzeit dabei mir ein kleines Script zu schreiben.
Derzeit habe ich folgenden Code:

Soweit so gut, er fährt die einzelnen Punkte an. Erkennt auch ob die Passende Farbe in dem Bereich vorhanden ist.
Jetzt möchte ich aber sagen, wenn diese Farbe dort nicht vorhanden ist, breche diese Funktion ab, und gehe in eine andere.

Wie kann ich dies mittels If abfrage realisieren?

You can follow the easy way:
Code:
$color1 = 0xB7E99B
$color2 = 0xFF5512

func start()

While 1
   MouseClick("left", 1282, 570, 1)
   Sleep(2500)
   MouseClick("left", 713, 718, 1)
   Sleep(1000)

   $array_pos = PixelSearch(840,769,1050,819,0xB7E99B,5)
   If Not @error Then
   MouseClick("left", $array_pos[0],$array_pos[1],1,0)
   Sleep(50000)
   Else
   ;Not found, do sth here, maybe another pixel search or sth
   ;Ex:
   ;$array_pos = PixelSearch(0,0,500,500,$color2,5)
   ;If Not @error Then
	;MsgBox(0,"Found","yay")
	;EndIf
   EndIf

WEnd

EndFunc
Advantages:
Easy to implement
Works most of the time

Cons:
Messy if/else concatenation when need to check a lot of events
Low maintainability


Or the event oriented one:
Code:


;This function register event handlers for pixelsearch, and the callback function

Global $handlers[0][3]
;Function,Callback,Disabled
Func registerSearchHandler($searchParams,$callbackFunction)
	ReDim $handlers[UBound($handlers)+1][3]
	$index = UBound($handlers)-1
	Local $newArray[UBound($searchParams)+1]
	$newArray[0] = "CallArgArray"
	For $i = 1 To UBound($searchParams)
	$newArray[$i] = $searchParams[$i-1]
	Next
	$handlers[$index][0] = $newArray
	$handlers[$index][1] = $callbackFunction
	$handlers[$index][2] = False
EndFunc


;Event handler functions, called when condition is met

Func handler1()
MsgBox(0,"handler1","pink found")
EndFunc

Func handler2()
MsgBox(0,"handler2","yellow found, disabling pink search")
$handlers[0][2] = True
EndFunc


Func handlern()
MsgBox(0,"handlerN","light blue found, enabling pink search")
$handlers[0][2] = False
EndFunc

;Register pixelsearch params, and event handler function

Local $arr = [0,160,555,300,0xFF00FF,5]
registerSearchHandler($arr,handler1)

Local $arr = [0,160,555,300,0xFFFF00,5]
registerSearchHandler($arr,handler2)

Local $arr = [0,160,555,300,0x00FFFF,5]
registerSearchHandler($arr,handlern)


While 1

;   MouseClick("left", 1282, 570, 1)
 ;  Sleep(2500)
 ;  MouseClick("left", 713, 718, 1)
 ;  Sleep(1000)

	For $i = 0 To UBound($handlers) -1
;if handler disabled, not execute 
		if($handlers[$i][2]) Then ContinueLoop
		$ret = Call("PixelSearch",$handlers[$i][0])
		If Not @error Then
			Call($handlers[$i][1])
		EndIf
	Next

	;Sleep(5000)

WEnd
Advantages:
Easy scalability
No messy code
Can change callbacks at any time

Cons:
Messy State machine, (if after some event, another should be disabled, then callback function should handle this manually)...
Hard to implement and understand
elmarcia is offline  
Reply


Similar Threads Similar Threads
Ich schon wieder(pixelsearch)wichtig
03/17/2008 - Guild Wars - 7 Replies
Also ich habe mal ne frage der objectmapper funkst bei mir nicht also bsp: rechtsklicke auf das bild gw001 dann öffnen mit objectmapper dann öffnet der den mapper aber kein bild zu sehn auch nicht wenn ich auf diesen knopf da oben rechts klick woran liegt das? wichtig thx schonmal:D:(
PixelSearch in GuildWars
01/27/2008 - Guild Wars - 12 Replies
Hi, ich arbeite gerade wieder an meinem T3 MultiBot und Thermallquellen Hardmode Bot und wollte dort nun eine PixelFunc einbauen. So das der Bot die Goldenen Items nicht mehr Ident, aber die anderen sachen weiterhin. Desweiteren wird eine "run to" Truhen Function mit im nächsten Bot sein, wo der Bot Char dann das Gold und Matterial Lagern soll und gleich auch die Goldenen Items die er findet. Nun zu meiner eigentlichen Frage. Wie kann ich die PixelSearch func so einbauen das er die...
devils dc detector V1.0 NO PIXELSEARCH!!!
12/09/2007 - SRO Hacks, Bots, Cheats & Exploits - 10 Replies
Download : Devils DC Detector V1.2.exe ... at uploaded.to Mirror : Devils DC Detector V1.2.exe ... at RapidShare: 1-Click Webhosting If you got a disconnect while botting you have 5 options what the programm have to do : It can : 1. Save the disconnect time to: C:\bottime.ini 2. Play an alert sound(replaceable)
[AutoIt] Problem mit PixelSearch.
08/19/2007 - General Coding - 3 Replies
Moin moin. Ich hatte die Idee, dass man mit AutoIt ein PickIt Programm fuer D2 schreiben koennte. Hier erstmal der Code.. Soweit, so gut.. hm. Meine Idee dahinter war es, dass ich ein Script einfach nach der Farbe des Unique Tags in D2 (#958166) suchen und dann einen Mausklick auf das/die entsprechenden Pixel ausfuehren lasse.. Problem: Zurzeit funktioniert daran nichts, ausser die Terminate Funktion. Vielleicht kann mir ja jemand auch diesmal weiterhelfen ;>
[AU3] PixelSearch in if then einbinden
12/22/2006 - General Coding - 4 Replies
Hallo, ich würde gerne eine bestimmte Region nach einer bestimmten Pixelfarbe durchsuchen, und wenn diese gefunden wird, soll eine bestimmte Sache ausgeführt werden. 1. verstehe ich nicht, wie ich das Rechteck bestimme. Also welche Pixelkoordinaten ich bei left, right, bottom und top angeben muss. 2. Wenn ich das dann habe, dann müsste ich dieses Rechteck danach absuchen, wenn die Farbe gefunden wurde, dann müsste eine Funktion ausgeführt werden. Beispielsweise: PixelSearch(x, y,...



All times are GMT +1. The time now is 11:55.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.