|
You last visited: Today at 11:54
Advertisement
Pixelsearch Event
Discussion on Pixelsearch Event within the AutoIt forum part of the Coders Den category.
08/04/2019, 20:49
|
#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:
Code:
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)
MouseClick("left", $array_pos[0],$array_pos[1],1,0)
Sleep("50000")
WEnd
EndFunc
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?
|
|
|
08/05/2019, 03:01
|
#2
|
elite*gold: 0
Join Date: Apr 2011
Posts: 363
Received Thanks: 167
|
Quote:
Originally Posted by Numb-Ex
Hallo zusammen, ich bin derzeit dabei mir ein kleines Script zu schreiben.
Derzeit habe ich folgenden Code:
Code:
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)
MouseClick("left", $array_pos[0],$array_pos[1],1,0)
Sleep("50000")
WEnd
EndFunc
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
|
|
|
 |
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.
|
|