Error Pixelbot

03/01/2009 20:10 kaiN_92#1
Code:
HotKeySet ("{F1}", "gegenrot" ) 
HotKeySet ("{F2}", "gegenblau" ) 
HotKeySet ("{F10}", "stop" ) 
HotKeySet ("{Delete}", "quit" ) 
HotKeySet ("{F11}", "hilfe") 


Func gegenrot () 
While 1 
Sleep ( 1000 ) 

   $coord = PixelSearch(0,0,1280,1024,0xFF060E,30,10) 
   sleep (100) 
   if not @error then 
      MouseClick("left",$coord[0],$coord[1],10) 
      sleep (100) 
   EndIf 
WEnd 
EndFunc 

Func gegenblau () 
While 1 
Sleep ( 1000 ) 


    
   $coord = PixelSearch(0,0,1280,1024,0xE5F9D5,30,10) 
   if not @error then 
      MouseClick("left",$coord[0],$coord[1],10) 
EndIf 
WEnd 
EndFunc 









While 1 
   sleep ( 100) 
WEnd

Func Hilfe () 
    MsgBox(0,"Help", "F1 = Gegen Rot" & @CR & _  
	"F2 = Gegen Blau" & @CR & _
	"F11 = Pause" & @CR & _
	"P = PoLyToXiC beenden.") 
EndFunc 

Func stop () 
      While 1 
      Sleep(100) 
   WEnd 
EndFunc 


Func  quit () 
   MsgBox (0, "PoLyToXiC", "              " & @CR & _
   "PoLyToXiC by Snipa." & @CR & _
   "              " & @CR & _
   "DaRkNeSs-GaMiNg") 
   Exit 
EndFunc
Nun spuckt mir das Ding beim laufen lassen nen error aus.

Line 24 (File "Pfad"

MouseClick("left",$coord[0],$coord[1],10)
MouseClick("left",coord^ERROR

Error: Subscript used with non-Array variable


____

Der Fehler passiert aber nur, wenn kein roter Pixel gefunden wird.

Kann mir jemand sagen, was ich flasch mache ?
03/01/2009 20:17 Adroxxx#2
PHP Code:
$coord PixelSearch(0,0,1280,1024,0xFF060E,30,10
Du legst $coord als normale Variable an, greifst aber drauf zu als wäre es ein Array.

PHP Code:
  MouseClick("left",$coord[0],$coord[1],10
wieso $coord[0], und coord[1] wenn du coord nicht als array angelegt hast?
03/01/2009 20:19 BeritoX#3
Also ich hab das Script mal laufen lassen, und es kommt bei mir kein Error, funzt alles ganz normal, findet seine Farben, lässt sich pausieren / beenden...
03/01/2009 20:21 __wadim#4
Quote:
Originally Posted by Adroxxx View Post
PHP Code:
$coord PixelSearch(0,0,1280,1024,0xFF060E,30,10
Du legst $coord als normale Variable an, greifst aber drauf zu als wäre es ein Array.

PHP Code:
  MouseClick("left",$coord[0],$coord[1],10
wieso $coord[0], und coord[1] wenn du coord nicht als array angelegt hast?
pixelsearch: (au3 hilfedatei)
Quote:
Return Value

Success: Returns a two-element array of pixel's coordinates. (Array[0] = x, Array[1] = y)
Failure: Sets @error to 1 if color is not found.
EDIT:

Quote:
Nun spuckt mir das Ding beim laufen lassen nen error aus.

Line 24 (File "Pfad"

MouseClick("left",$coord[o],$coord[1],10)
MouseClick("left",coord^ERROR

Error: Subscript used with non-Array variable
das ist ein O, soll aber eine NULL sein
03/01/2009 20:24 kaiN_92#5
Quote:
Originally Posted by BeritoX View Post
Also ich hab das Script mal laufen lassen, und es kommt bei mir kein Error, funzt alles ganz normal, findet seine Farben, lässt sich pausieren / beenden...
joa, is die farbe da, geht es...is sie nicht da kackt es ab.

Ich denke ich sollte mir den Pixelsearch help mal genauer anschauen !
03/01/2009 20:30 Adroxxx#6
Quote:
Originally Posted by __wadim View Post
pixelsearch: (au3 hilfedatei)


EDIT:


das ist ein O, soll aber eine NULL sein
yo kp wie das bei autoit ist, aber bei c++ muss man imo schon die variable als array anlegen.
03/01/2009 20:41 kaiN_92#7
Func gegenrot ()
While 1
Sleep ( 100 )

$coord = PixelSearch(0,0,1280,1024,0xFF060E,100,90)
sleep (10)
if not @error then
Mouseclick("left")
sleep (10)
EndIf
WEnd
EndFunc



so sollte es dann gehen oder ?

edit: ok kein fehler aber die maus geht nimmer hin :<
03/01/2009 20:56 __wadim#8
Quote:
Originally Posted by kaiN_92 View Post
Func gegenrot ()
While 1
Sleep ( 100 )

$coord = PixelSearch(0,0,1280,1024,0xFF060E,100,90)
sleep (10)
if not @error then
Mouseclick("left")
sleep (10)
EndIf
WEnd
EndFunc



so sollte es dann gehen oder ?

edit: ok kein fehler aber die maus geht nimmer hin :<
der klick wird nur auf der aktuellen cursorposition ausgeführ mit Mouseclick(left), du musst schon die maus dahin bewegen.
MouseMove oder direkt MouseClick mit den nötigen parametern.. schaus dir in der autoit hilfedatei genau an. da sind sogar beispiele.
PixelSearch gibt dir ein array mit 2 werten (array[0] = position x, array[1] = position y) zurück
das muss du jetzt alles schaffen dir zurecht zu biegen, was nicht allzu schwer sein sollte mit der hilfe die du gerade bekommen hast.

Gruß
Wadim
03/01/2009 21:00 felixli93#9
oh mann, ich denke, den einzigen fehler, den du gemacht hast, war dass du statt ner "0" (gesprochen Null) ein o (gesprochen oooooo) geschrieben hast, wie wadim gesagt hat

was die sache mit dem "als array anlegen" angeht:

PixelSearch returned ja ein array, also wird $coord automatisch als array angelegt!
03/01/2009 21:07 kaiN_92#10
hm, das o statt 0 war ja nur in der fehlermeldung die ich geschrieben hab (tippfehler)
im source ist es ja 0 !
03/01/2009 21:11 felixli93#11
dann versuch mal das $coord vorher durch
Dim $coord[2]
zu deklarieren, vllt muss man dem doch sagen, dass es ein array ist
03/01/2009 21:17 kaiN_92#12
also nachdem ich die funktion "gegenrot" abrufe
dieses Dim $coord[2] verwenden ?

Func gegenrot ()
Dim $coord[2]
While 1
Sleep ( 100 )

$coord = PixelSearch(0,0,1280,1024,0xFF060E,100,90)
sleep (10)
if not @error then
MouseClick("left",$coord[0],$coord[1],10)
sleep (10)
EndIf
WEnd
EndFunc

?
so gehts aber auch nicht.

Zur Sache Auto-It hilfedatei.
ich geb der Maus doch eigentlich die Coords an =/
ichglaub ich hab irgendwo nen denkfehler
03/01/2009 21:36 kaiN_92#13
Also wenn der Pixelsearch nicht klappt, wird gibts keine array...so versteh ich das bis jetzt, is das soweit richtig ?

wieso geht dann aber

if @error then return

nicht ;|
weil in diesem momen sag ich ja
wenn fehler, zurück.
03/02/2009 20:38 atze19#14
Func gegenrot ()
Dim $coord[2] ; ist nicht nötig
While 1
Sleep ( 100 )

$coord = PixelSearch(0,0,1280,1024,0xFF060E,100,90)
sleep (10) ; Das ist der Fehler!
if not @error then ; @error ist immer 0 da es sich auf das Sleep bezieht und,
; dass klappt ja immer
MouseClick("left",$coord[0],$coord[1],10)
sleep (10)
EndIf
WEnd
EndFunc
03/02/2009 21:17 felixli93#15
tja, nur wo genau ist da ein fehler?