|
You last visited: Today at 08:37
Advertisement
Pixelcheck
Discussion on Pixelcheck within the GW Bots forum part of the Guild Wars category.
06/02/2009, 21:51
|
#1
|
elite*gold: 0
Join Date: Jan 2008
Posts: 293
Received Thanks: 40
|
Pixelcheck
Hab da mal so ne Frage bez. Pixelcheck
Gibts iwas mit dem ich 3 verschiedene Orte (Kordinaten) die ganze Zeit checken kann und sobald sie sich verändern(farblich) sie eine Function ausführen ?
wäre für jede Hilfe dankbar
|
|
|
06/02/2009, 22:05
|
#2
|
elite*gold: 50
Join Date: Feb 2009
Posts: 2,173
Received Thanks: 1,766
|
PHP Code:
$checksum = Pixelchecksum(links, oben, rechts, unten)
While
$checksum = Pixelchecksum(links, oben, rechts, unten)
Sleep(50)
WEnd
Eigentlich ist Pixelchecksum für einen Bereich gedacht(darum auch die 4 Koordinaten), müsste aber auch mit einem Pixel funktionieren.
|
|
|
06/02/2009, 22:15
|
#3
|
elite*gold: 0
Join Date: Jan 2008
Posts: 293
Received Thanks: 40
|
muss ich nicht noch irgendwo die Pixel etc angeben ?
also wie ist das genau gemeint ?
wenn ich zb schreibe
Quote:
While 1
If $checksum1 = PixelChecksum(779,452,809,483) Then
send("1")
Else
sleep(10)
EndIf
WEnd
|
so zb ich möchte dass wenn in diesem bereich, am besten nur 1 Kordinate die Farbe wechselt es die Taste 1 drückt. ?
So neu
PHP Code:
$var = PixelGetColor(792,500) $var1 = PixelGetColor(842,498) $var2 = PixelGetColor(884,498)
While 1
If $var = false Then Send("1") ElseIf $var1 = false Then Send("2") ElseIf $var2 = false Then Send("3") Else msgbox(False,"ErroR","ErroR") EndIf WEnd
also dacht wenn jetz iwie die $var variablen sich ändern also false dann = .... wenn nicht das
sollt doch so iwie klappen oder ?
|
|
|
06/02/2009, 23:36
|
#4
|
elite*gold: 50
Join Date: Feb 2009
Posts: 2,173
Received Thanks: 1,766
|
das mit dem $var funktioniert nicht.
PHP Code:
$checksum = Pixelchecksum(links, oben, rechts, unten)
;erstellt sozusagen einen screenshot von diesem bereich und speichert ihn in die variable
While
$checksum = Pixelchecksum(links, oben, rechts, unten)
;checkt ob der screenshot und das momentane bild übereinstimmen
Sleep(50)
WEnd
Do blalbalabla
|
|
|
06/03/2009, 12:58
|
#5
|
elite*gold: 0
Join Date: Jan 2008
Posts: 293
Received Thanks: 40
|
PHP Code:
$checksum0 = Pixelchecksum(links, oben, rechts, unten) $checksum1 = Pixelchecksum(links, oben, rechts, unten) $checksum2 = Pixelchecksum(links, oben, rechts, unten) ;erstellt sozusagen einen screenshot von diesem bereich und speichert ihn in die variable
While $checksum0 = Pixelchecksum(links, oben, rechts, unten) $checksum1 = Pixelchecksum(links, oben, rechts, unten) $checksum2 = Pixelchecksum(links, oben, rechts, unten) ;checkt ob der screenshot und das momentane bild übereinstimmen Sleep(50) WEnd
While 1 If $checksum0 = verändert Then func()
Elseif $checksum1 = verändert then func1()
Elseif $checksum2 = verändert then func2()
Else Then sleep(10)
Endif Wend
Funk's ....
func0 blabla
func1 blabla
func2 blabla
wie mach ich das jetzt , dass wenn $checksum sich verändert hat es eine Funktion ausführt ? mit einer If und Elseif ?
so irgendwie sollte das doch gehen oder ?
|
|
|
06/03/2009, 14:38
|
#6
|
elite*gold: 0
Join Date: Jan 2009
Posts: 388
Received Thanks: 113
|
Code:
$Checksum1a = Pixelchecksum(links, oben, rechts, unten)
$Checksum2a = Pixelchecksum(links, oben, rechts, unten)
$Checksum3a = Pixelchecksum(links, oben, rechts, unten)
While 1
$Checksum1b = Pixelchecksum(links, oben, rechts, unten)
$Checksum2b = Pixelchecksum(links, oben, rechts, unten)
$Checksum3b = Pixelchecksum(links, oben, rechts, unten)
Switch $nMsg
Case $Checksum1a = $Checksum1b
Funktion1()
ExitLoop ;bei Bedarf aus While Schleife raus
Case $Checksum2a = $Checksum2b
Funktion2()
ExitLoop ;bei Bedarf aus While Schleife raus
Case $Checksum3a = $Checksum3b
Funktion3()
ExitLoop ;bei Bedarf aus While Schleife raus
EndSwitch
WEnd
so?
|
|
|
06/03/2009, 18:43
|
#7
|
elite*gold: 1826
Join Date: Mar 2009
Posts: 4,310
Received Thanks: 6,287
|
willst du einen bereich oder einen einzigen pixel überprüfen?
|
|
|
06/03/2009, 18:50
|
#8
|
elite*gold: 0
Join Date: Jan 2008
Posts: 293
Received Thanks: 40
|
kommt eigendlich nicht sonderlich drauf an , einfach sollt der Bot sobald sich ein Bereich/Pixel ändert ne Taste drücken und so halt wenn wieder der Pixel "zurück" ist die Taste aufhört zu drücken
|
|
|
06/03/2009, 20:01
|
#9
|
elite*gold: 1826
Join Date: Mar 2009
Posts: 4,310
Received Thanks: 6,287
|
Naja dann sollte dir das hier reichen.
Code:
;=================================================================================================
; Function: Vergleichen von PixelFarben + Reaktion
; Description: Vergleicht Pixel mit ihrer Farbe und reagiert dementsprechend
; Parameter(s): $x[$nr], $y[$nr] = Koordinaten
; Func[$nr] = Aufzurufende Funktion bei erfolg
; $hwnd = Windowhandle (Relativ zu den Koordinaten)
; Requirement(s): None
; Return Value(s): Array
; $Array[0] = X Coord
; $Array[1] = Y Coord
; $Array[2] = Farbe in Hex
; On Failure - Returns 0
; Author(s): eF_Hacks
; Note(s): No ******* Notes here.
;=================================================================================================
Func PixelCheck($x1, $y1, $x2, $y2, $x3, $y3, $Func1 = "", $Func2 = "", $Func3 = "", $hwnd = Default)
$PX1 = PixelGetColor($x1, $y1, $hwnd)
$PX2 = PixelGetColor($x2, $y2, $hwnd)
$PX3 = PixelGetColor($x3, $y3, $hwnd)
While 1
If PixelGetColor($x1, $y2, $hwnd) Then
Local $rt_aR[3]
$rt_aR[0] = $x1
$rt_aR[1] = $y1
$rt_aR[2] = Hex($PX1)
Call($Func1)
Return $rt_aR
EndIf
If PixelGetColor($x2, $y2, $hwnd) = Not $PX2 Then
Local $rt_aR[3]
$rt_aR[0] = $x2
$rt_aR[1] = $y2
$rt_aR[2] = Hex($PX2)
Call($Func2)
Return $rt_aR
EndIf
If PixelGetColor($x3, $y3, $hwnd) = Not $PX3 Then
Local $rt_aR[3]
$rt_aR[0] = $x3
$rt_aR[1] = $y3
$rt_aR[2] = Hex($PX3)
Call($Func3)
Return $rt_aR
EndIf
WEnd
Return 0
EndFunc ;==>PixelCheck
|
|
|
06/05/2009, 17:04
|
#10
|
elite*gold: 0
Join Date: Jan 2008
Posts: 293
Received Thanks: 40
|
PHP Code:
While 1
$PX1 = PixelGetColor(795,484) $PX2 = PixelGetColor(835,484) $PX3 = PixelGetColor(875,484)
If PixelGetColor(795,484) = Not $PX1 Then Funktion1() EndIf If PixelGetColor(835,484) = Not $PX2 Then Funktion2() EndIf If PixelGetColor(875,484) = Not $PX3 Then Funktion3() EndIf
WEnd
warum geht mir das mit dem "Not" nicht ?
hab immer so Probleme beim Not irgendwas mach ich da einfach Falsch -.-
|
|
|
06/05/2009, 17:33
|
#11
|
elite*gold: 0
Join Date: Jan 2009
Posts: 388
Received Thanks: 113
|
Quote:
Originally Posted by NANAAA
PHP Code:
While 1
$PX1 = PixelGetColor(795,484)
$PX2 = PixelGetColor(835,484)
$PX3 = PixelGetColor(875,484)
If PixelGetColor(795,484) = Not $PX1 Then
Funktion1()
EndIf
If PixelGetColor(835,484) = Not $PX2 Then
Funktion2()
EndIf
If PixelGetColor(875,484) = Not $PX3 Then
Funktion3()
EndIf
WEnd
warum geht mir das mit dem "Not" nicht ?
hab immer so Probleme beim Not irgendwas mach ich da einfach Falsch -.-
|
Denke es muss "Not =" oder nur "Not" heißen.
Dein Code ergibt aber keinen Sinn, da innerhalb weniger MS der gleiche bereich 2 mal überprüft wird.
du musst die ersten 3 Abfragen vor die Schleife machen.
|
|
|
06/05/2009, 17:40
|
#12
|
elite*gold: 0
Join Date: Jan 2008
Posts: 293
Received Thanks: 40
|
Das wegen der Abfrage ist eigentlich nicht so wichtig (weil verändert sich nicht nach den ersten Ms), aber vielen Dank fürs mitteilen
ehm das mit
If PixelGetColor(795,484) = Not= $PX1 Then
Funktion1()
EndIf
Funktioniert leider nicht bez. Error
|
|
|
06/05/2009, 17:53
|
#13
|
elite*gold: 0
Join Date: Jan 2009
Posts: 388
Received Thanks: 113
|
Quote:
Originally Posted by NANAAA
Das wegen der Abfrage ist eigentlich nicht so wichtig (weil verändert sich nicht nach den ersten Ms), aber vielen Dank fürs mitteilen
ehm das mit
If PixelGetColor(795,484) = Not= $PX1 Then
Funktion1()
EndIf
Funktioniert leider nicht bez. Error
|
erstes "=" weglassen oder einfach "<>"
Zu der Schleife. Vor der If abfrage wird ja nicht angehalten. Also klappt es nicht denn dein Script
Guck die Wand an, sieht das die Wand rot ist --> Schaut die Wand 1 ms später nochmal an --> sie ist immer noch gleich. Und das ganze von vorne
|
|
|
06/05/2009, 18:02
|
#14
|
elite*gold: 1826
Join Date: Mar 2009
Posts: 4,310
Received Thanks: 6,287
|
So gehts bei mir.
Code:
$PX1 = PixelGetColor(795, 484)
$PX2 = PixelGetColor(835, 484)
$PX3 = PixelGetColor(875, 484)
While 1
If PixelGetColor(795, 484) = Not $PX1 Then
Sleep(10)
EndIf
If PixelGetColor(835, 484) = Not $PX2 Then
Sleep(10)
EndIf
If PixelGetColor(875, 484) = Not $PX3 Then
Sleep(10)
EndIf
Sleep(250);DontFucktheCPU
WEnd
|
|
|
All times are GMT +1. The time now is 08:37.
|
|