AutoIt Pixelsearch Problem

05/26/2010 13:29 .Sh0xxter#1
Hallo Users,
ich habe mir gedacht ich schreib mal einen Bot für Nostale der beim Minigame Steinbruch immer lvl 5 Belohnung holen soll. Nur das Problem ist dass ich nicht weiss wie ich mit Pixelsearch umgehen soll, also hab ich mir den Pixelsearch-Teil von einem Bot rüberkopiert. Doch mein Bot will jetzt nicht funktionieren

So sieht der jetzt im Moment aus
Quote:
HotKeySet('{INSERT}',"button1")
HotKeySet('{END}',"button3")

GuiCreate("Mingame Bot (Steinbruch)",277,197)
$button1=GuiCtrlCreateButton("Start the Bot!",33,50)
$button3=GuiCtrlCreateButton("End the Bot",33,130)
$label1=GuiCtrlCreateLabel("Hotkey: S",150,50)
$label3=GUICtrlCreateLabel("Hotkey: E",150,130)
GuiSetState()

While 1
$msg=GuiGetMsg()
If $msg=-3 Then Exit
If $msg=$button1 Then button1()
If $msg=$button3 Then button3()
Wend




Func button1()
MsgBox(0,"Minigame Bot (Steinbruch)","You started the Bot")
While 1
$pixCord = PixelSearch(501,675,540,679,6549205)
if not @error then send ("{LEFT}")
Sleep (10)
$pixCord = PixelSearch(734,675,773,679,6549205)
if not @error then Send ("{RIGHT}")
Sleep (10)
Send ("{UP}")
WEnd
EndFunc

Func button3()
$var = MsgBox(4,"Exit the Bot","Do you want to exit?")
if $var = 7 then return
Exit 0
EndFunc
Beim roten Teil liegt mein Problem. Kann mir bitte einer helfen? :handsdown:

mfg

Mr.K
05/26/2010 13:56 AllesVergeben#2
Wo liegt denn dein Problem bzw. was funktioniert nicht?

€dit: Und was soll es denn machen?

€€dit: Gehört in die AutoIT Sektion. ;) #reported
05/26/2010 14:06 .Sh0xxter#3
Also bei dem minispiel muss man auf einen stein hauen um punkte zu bekommen. und von links und rechts kommen würmer, diese soll er durch den pixelsearch hauen und wenn keine würmer kommen soll er den stein hauen. Er tut beides nicht ...
05/26/2010 14:16 AllesVergeben#4
Hast du auch die richtige Farbe benutzt (btw wieso ohne 0x).

Er soll also auf die Würmer hauen? Mit der Maus? Oder soll er nur nach links oder rechts "klicken" mit den Pfeiltasten?

Wo hast du den Part dass er auf den Stein hauen soll wenn keine Würmer da sind?
05/26/2010 14:25 .Sh0xxter#5
der teil mit pixelsearch sollte eig funktionieren hab ich mir gedownloaded :D ja mit den pfeiltasten und das hier sollte der teil mit auf den stein hauen sein Send ("{UP}")
05/26/2010 14:28 AllesVergeben#6
Also nochmal, du suchst den Bildschirm auf Würmer ab, wenn welche da sind gehst du mit der Pfeiltaste nach links, wenn nicht, dann nach rechts?

BTW. ich hoffe du hast wenigstens die Farben bei PixelSearch angepasst.
05/26/2010 14:41 .Sh0xxter#7
wenn keine würmer da sind drückt er Up pfeiltaste hoch wenn welche da sind je nachdem welche seite dann rechts oder links

die farben und alles hab ich aus dem bot wo ich gedownloaded hab weiss nicht wie man farben anpasst ...
05/26/2010 15:37 omer36#8
du gehst auf "start/programme/AutoIT und drückst auf AutoIt Window Info"
dann drückst du in unteren bereich auf den kleinen pfeil nach rechts so lange bist du die option "Mouse" siehst. drück auf "Mouse".
so jetz musst du in dein spiel rein. wenn sich deine ziele bewegen drück am besten einmal die "druck-taste" oder "PrtScr-taste" dann öffne "paint" (start/programme/zubehör/paint)
dort machst du nun "rechte maus-taste" und "einfügen".
jetz siehst du dein bild was du kopiert hast (per "druck-knopf")
im Window Info ist ein "Finder Tool" drücke auf dieses runde ding und halte die maus gedrückt,
und geh nun (in paint) auf dein ziel und lass die maus los.
dann siehst du unten: Color 0xFFFFFFF <- das ist dann deine farbe.

aber da du es gedownloaded hast!(?) müsste es richtig sein also änder das:
$pixCord = PixelSearch(501,675,540,679,6549205)
in
$pixCord = PixelSearch(501,675,540,679,0x6549205) bei beiden.
05/26/2010 15:39 Shadow992#9
Quote:
Originally Posted by tequilla95 View Post
wenn keine würmer da sind drückt er Up pfeiltaste hoch wenn welche da sind je nachdem welche seite dann rechts oder links

die farben und alles hab ich aus dem bot wo ich gedownloaded hab weiss nicht wie man farben anpasst ...
Mit einem Wissen über AutoIt von 0,2 (vllt sogar 0,21) wirst du den Bot wohl nie alleine funktionierend fertig machen ...
Deswegen kann ich dir nur empfehlen ein paar Tuts durchzumachen , die meisten sind recht schön erklärt und viele beschäftigen sich auch genau mit der selben Thematik wie du .
Kleine Auswahl an Tuts (Am besten der Reihe nach durcharbeiten) :

[Only registered and activated users can see links. Click Here To Register...]

[Only registered and activated users can see links. Click Here To Register...]

[Only registered and activated users can see links. Click Here To Register...]

[Only registered and activated users can see links. Click Here To Register...]

http:// www . autoitbot . de/coding-bereich-autoit-bot-community/tutorials/autoit/1046-gui-tut/
(Kann mir mal jemand sagen , warum das zensiert wird ?)

[Only registered and activated users can see links. Click Here To Register...]


Und noch was exotisches :

[Only registered and activated users can see links. Click Here To Register...]
05/26/2010 16:10 .Sh0xxter#10
Danke aber ich glaube das problem liegt nicht bei der Farbe denn die hab ich jetzt geändert aber der Bot schlägt auch nicht auf den Stein ( d.h. der Bot scannt die Pixel garnicht)
05/26/2010 16:23 Shadow992#11
Quote:
Originally Posted by omer36 View Post
du gehst auf "start/programme/AutoIT und drückst auf AutoIt Window Info"
dann drückst du in unteren bereich auf den kleinen pfeil nach rechts so lange bist du die option "Mouse" siehst. drück auf "Mouse".
so jetz musst du in dein spiel rein. wenn sich deine ziele bewegen drück am besten einmal die "druck-taste" oder "PrtScr-taste" dann öffne "paint" (start/programme/zubehör/paint)
dort machst du nun "rechte maus-taste" und "einfügen".
jetz siehst du dein bild was du kopiert hast (per "druck-knopf")
im Window Info ist ein "Finder Tool" drücke auf dieses runde ding und halte die maus gedrückt,
und geh nun (in paint) auf dein ziel und lass die maus los.
dann siehst du unten: Color 0xFFFFFFF <- das ist dann deine farbe.

aber da du es gedownloaded hast!(?) müsste es richtig sein also änder das:
$pixCord = PixelSearch(501,675,540,679,6549205)
in
$pixCord = PixelSearch(501,675,540,679,0x6549205) bei beiden.
Ist dir schonmal aufgefallen , dass man hexadzeimal zahlen auch im Dezimalsystem darstellen kann ?
Und ich bin mir ziehmlich sicher , dass das eine Dezimale Farbe ist , da wenn man es als Hexadezimalzahl schreiben würde eine Zahl fehlt (könnte auch so funktionieren , ist aber sehr ungewöhnlich) .
Von daher wird die Farbe (zumindest die Darstellungsweise) schon stimmen ...

@tequilla95
Du kannst ja mal versuchen die Farbvariation zu erhöhen , dann dürftest du wohl eher ein Ergbeniss finden .
Eventuel hilft dir auch ImageSearch bzw. PixelChecksum , du musst halt mal rumprobieren ;)
05/26/2010 16:34 AllesVergeben#12
Hast du auch den richtigen Bereich gewählt, indem der Pixel gesucht werden soll?
05/26/2010 19:09 .Sh0xxter#13
Ich habe den Bereich gewählt, der Bot funktioniert (nur nicht im GAME) auf meinem Desktop. Sieht wie folgt aus:
Quote:
#include <GUIConstantsEx.au3>

HotKeySet('{INSERT}',"button1")
HotKeySet('{END}',"button3")

GuiCreate("Mingame Bot (Steinbruch)",277,197)
$button1=GuiCtrlCreateButton("Start the Bot!",33,50)
$button3=GuiCtrlCreateButton("End the Bot",33,130)
$label1=GuiCtrlCreateLabel("Hotkey: INSERT",150,50)
$label3=GUICtrlCreateLabel("Hotkey: END",150,130)
GuiSetState(@SW_SHOW)

While 1
$msg=GuiGetMsg()
If $msg=-3 Then Exit
If $msg=$button1 Then button1()
If $msg=$button3 Then button3()
Wend




Func button1()
MsgBox(0,"Minigame Bot (Steinbruch)","You started the Bot")
While 1
$pixCord = PixelSearch(450,650,510,680,0xD5B830)
if not @error then send ("{LEFT}")
Sleep (10)
$pixCord = PixelSearch(660,635,710,680,0xF8D547)
if not @error then Send ("{RIGHT}")
Sleep (10)
Send ("{UP}")
WEnd
EndFunc

Func button3()
$var = MsgBox(4,"Exit the Bot","Do you want to exit?")
if $var = 7 then return
Exit 0
EndFunc
Kann mir wer verraten was ich falsch gemacht habe?
05/26/2010 20:06 meral#14
You need to either declare your variables at top as global or dim, or as local inside your loop.

I wouldn't place func in main loop I normally just call it and sleep() also you need variation in what color your looking for 20 is pretty slight 80 is great.

Code:
Func new()
        local $pixelCord
	TrayTip("Minigame Bot (Steinbruch)", "You started the Bot", 2, 1)
	$pixCord = PixelSearch(450, 650 , 510 , 680 , 0xD5B830, 20)
	If @error Then
		send ("{RIGHT}")
		Sleep (10)
	Else
        send ("{LEFT}")
		Sleep (10)
	EndIf
EndFunc
05/26/2010 20:11 .Sh0xxter#15
Quote:
Else
send ("{LEFT}")
send ("{UP}") is right or not?