Pixelsearch denkfehler BITTE HILFE!

06/11/2009 16:51 flochek#1
Hab irgendwo in meinem script einen denkfehler..... ich will 2 unabhängige farben mit pixelsearch finden und die mouse zu der position bewegen mit mousemove. mit 1 pixelsearch funktioniert das auch nur mit einem 2. komm ich nicht zurecht! wär echt spitze wenn mir wer aus der patsche helfen könnte!!

Code:
HotKeySet("x", "MeinExit")
HotKeySet("y", "StartStop")
HotKeySet("a", "Schuss")´

Global $On
$On = False

while 1
while $On = True
$Ballposition = PixelSearch( 40, 436, 622, 557, 0x070C20, 1)
;HIER MEIN DENKFEHLER ODER
;HIER MEIN DENKFEHLER $Ballposition = PixelSearch( 40, 436, 622, 557, 0xCECF42, 1)
if IsArray($Ballposition) = True Then
MouseMove( $Ballposition[0], $Ballposition[1], 0)
Endif
wend 
wend

Func StartStop()
    If $On = False Then
        $On = True
    Else
        $On = False
    EndIf
EndFunc


Func Schuss()
MouseClick("left", 324, 398)
EndFunc


Func MeinExit()
    Exit
EndFunc
06/13/2009 20:19 Shadow992#2
Quote:
Originally Posted by flochek View Post
Hab irgendwo in meinem script einen denkfehler..... ich will 2 unabhängige farben mit pixelsearch finden und die mouse zu der position bewegen mit mousemove. mit 1 pixelsearch funktioniert das auch nur mit einem 2. komm ich nicht zurecht! wär echt spitze wenn mir wer aus der patsche helfen könnte!!

Code:
HotKeySet("x", "MeinExit")
HotKeySet("y", "StartStop")
HotKeySet("a", "Schuss")´

Global $On
$On = False

while 1
while $On = True
$Ballposition = PixelSearch( 40, 436, 622, 557, 0x070C20, 1)
;HIER MEIN DENKFEHLER ODER
;HIER MEIN DENKFEHLER $Ballposition = PixelSearch( 40, 436, 622, 557, 0xCECF42, 1)
if IsArray($Ballposition) = True Then
MouseMove( $Ballposition[0], $Ballposition[1], 0)
Endif
wend 
wend

Func StartStop()
    If $On = False Then
        $On = True
    Else
        $On = False
    EndIf
EndFunc


Func Schuss()
MouseClick("left", 324, 398)
EndFunc


Func MeinExit()
    Exit
EndFunc
entweder bin ich zu dumm dafür oder das ist komplett falsch :

if IsArray($Ballposition) = True Then
MouseMove( $Ballposition[0], $Ballposition[1], 0)
Endif

was willste mit dem IsArray ?
mach doch statt dem IsArray ein
if not @error then
hin das klappt doch viel besser

und jetzt das zweite was ich nicht kapiere , du sagtest , dass das mit der ersten funktion ganz gut klappt , aber ich sehe in dem skript , nur dass das ganze nur einmal passiert , also einmal mausklick und nicht zweimal ......
Bitte um erklärung , dann kann ich weiter helfen
06/13/2009 20:35 felixli93#3
Quote:
Originally Posted by Shadow992 View Post
entweder bin ich zu dumm dafür oder das ist komplett falsch :

if IsArray($Ballposition) = True Then
MouseMove( $Ballposition[0], $Ballposition[1], 0)
Endif

was willste mit dem IsArray ?
mach doch statt dem IsArray ein
if not @error then
hin das klappt doch viel besser
es ist absolut egal, ob man mit @error oder IsArray arbeitet


hier mal der code, wie ich ihn verwenden würde:
Code:
HotKeySet("x", "MeinExit")
HotKeySet("y", "StartStop")
HotKeySet("a", "Schuss")´

Global $On
$On = False

while 1
while $On


$Ballposition = PixelSearch( 40, 436, 622, 557, 0x070C20, 1)
if IsArray($Ballposition) Then ; oder If Not @error Then
MouseMove( $Ballposition[0], $Ballposition[1], 0)
Endif

$Ballposition = PixelSearch( 40, 436, 622, 557, 0xCECF42, 1)
if IsArray($Ballposition) Then ; oder If Not @error Then
MouseMove( $Ballposition[0], $Ballposition[1], 0)
EndIf
wend 
wend

Func StartStop()
    $On = Not $On
EndFunc


Func Schuss()
MouseClick("left", 324, 398)
EndFunc
erklärungen:
das "= True" kannst du immer weglassen, da, wenn du ein If ohne ein = verwendest immer von "True" ausgegangen wird.

willst du 2 verschiedene farben suchen, würde ich es einfach in reihe schalten, müsste so klappen.

und es ist egal, ob du IsArray () verwendest oder Not @error

mfg felixli93
06/13/2009 21:03 Shadow992#4
Quote:
Originally Posted by felixli93 View Post
es ist absolut egal, ob man mit @error oder IsArray arbeitet


hier mal der code, wie ich ihn verwenden würde:
Code:
HotKeySet("x", "MeinExit")
HotKeySet("y", "StartStop")
HotKeySet("a", "Schuss")´

Global $On
$On = False

while 1
while $On


$Ballposition = PixelSearch( 40, 436, 622, 557, 0x070C20, 1)
if IsArray($Ballposition) Then ; oder If Not @error Then
MouseMove( $Ballposition[0], $Ballposition[1], 0)
Endif

$Ballposition = PixelSearch( 40, 436, 622, 557, 0xCECF42, 1)
if IsArray($Ballposition) Then ; oder If Not @error Then
MouseMove( $Ballposition[0], $Ballposition[1], 0)
EndIf
wend 
wend

Func StartStop()
    $On = Not $On
EndFunc


Func Schuss()
MouseClick("left", 324, 398)
EndFunc
erklärungen:
das "= True" kannst du immer weglassen, da, wenn du ein If ohne ein = verwendest immer von "True" ausgegangen wird.

willst du 2 verschiedene farben suchen, würde ich es einfach in reihe schalten, müsste so klappen.

und es ist egal, ob du IsArray () verwendest oder Not @error

mfg felixli93
Auch wieder was gelernt :-D danke
(das helfen beruht wohl auf gegenseitigkeit XD)
06/17/2009 16:05 FichteFoll#5
Hier mal der code, wie ICH ihn verwenden würde:
Code:
HotKeySet("x", "MeinExit")
HotKeySet("y", "StartStop")
HotKeySet("a", "Schuss")´

Global $On = False

while 1

  while $On
    $Ballposition = PixelSearch( 40, 436, 622, 557, 0x070C20, 1)

    If Not @error Then
      MouseMove( $Ballposition[0], $Ballposition[1], 0)
    Endif

    $Ballposition = PixelSearch( 40, 436, 622, 557, 0xCECF42, 1)

    If Not @error Then
      MouseMove( $Ballposition[0], $Ballposition[1], 0)
    EndIf

    Sleep(5)
  WEnd

  Sleep(10)
WEnd

Func StartStop()
  $On = Not $On
EndFunc

Func Schuss()
  MouseClick("left", 324, 398)
EndFunc

Func MeinExit()
 Exit
EndFunc
Könnte man nicht auch
Code:
$Ballposition = PixelSearch( 40, 436, 622, 557, 0xCECF42 or 0x070C20, 1)
if IsArray($Ballposition) Then ; oder If Not @error Then
MouseMove( $Ballposition[0], $Ballposition[1], 0)
EndIf
machen?

Oder wofür is das Prog?