Farmbot

06/24/2009 15:01 anders5#1
Hi,
bin gerade dabei einen farmbot für metin2 zu schreiben der die monster von selbst anklickt. Soweit bin ich schon:

PHP Code:
Opt('PixelCoordMode'2)
Opt('MouseCoordMode'2)

HotKeySet "{Numpad1}" "start" )
HotKeySet "{Numpad3}" "Ende" )

While 
1
    sleep 
(200)
WEnd

Func start
()
    While (
1)
            Do 
            
$coord PixelSearch3308006000xEB160910 )
            
sleep (100)
        
until IsArray($coord)
            
MouseClick ("left"$coord[0] , $coord[1] + 40 10)



    
WEnd
EndFunc

Func Ende
()
    Exit
Endfunc 
also der soll die pixel vom namen der monster erkennen und dann 40px drunter klicken, leider klickt er aber immer völlig daneben,
weiß jemand warum?
und noch ne frage, gibt es einnen befehl der streckenn messen kann?
06/24/2009 15:07 Endecs#2
Quote:
Originally Posted by anders5 View Post
Hi,
bin gerade dabei einen farmbot für metin2 zu schreiben der die monster von selbst anklickt. Soweit bin ich schon:

PHP Code:
Opt('PixelCoordMode'2)
Opt('MouseCoordMode'2)

HotKeySet "{Numpad1}" "start" )
HotKeySet "{Numpad3}" "Ende" )

While 
1
    sleep 
(200)
WEnd

Func start
()
    While (
1)
            Do 
            
$coord PixelSearch3308006000xEB160910 )
            
sleep (100)
        
until IsArray($coord)
            
MouseClick ("left"$coord[0] , $coord[1] + 40 10)



    
WEnd
EndFunc

Func Ende
()
    Exit
Endfunc 
also der soll die pixel vom namen der monster erkennen und dann 40px drunter klicken, leider klickt er aber immer völlig daneben,
weiß jemand warum?
und noch ne frage, gibt es einnen befehl der streckenn messen kann?
Das liegt daran, dass das Game genau im diesen augenblick den Pixel mehrmals findet also gibt es diesen pixel mehr mals in dem bereich.
Ich hab immer bei solchen dingen folgendes gemacht:
Screen gemacht ganz nah rangezoomt, und dan mit dem pixelfinder usw.
Drüber gegangen und die beste stelle ausgesucht.
(Hat bis jetzt immer funktioniert).

/e Bau noch die Pause Funktion ein:
Code:
Hotkeyset( "{Deinetaste}" , "Pause")
Global $Paused

Func Pause()
    $Paused = NOT $Paused
    While $Paused
        sleep(100)
    WEnd
06/24/2009 15:21 anders5#3
Du meinst die richtige Farbe raussuchen?
Habs ma probiert aber die Farbe vorher hat besser geklappt.

Dass der Pixel mermals vorhanden is is halt blöd aber ich glaub das problem is dass die rote schrift ja breiter als der mob is und deswegen klickt er unter schrift aber neben mob.
Weiß vllt jemand ne möglichkeit wie er net daneben klickt?

edit: die pause funktion hab ich eh schon drinn
06/29/2009 20:47 fieser-hund#4
ich hätte da eine möglichkeit:

$arr=Pixelsearch(0,0,@DesktopWidth,@DesktopHeight, {die rote farbe vom Namen des Mobs})
if not @error then
mouseclick("left",$arr[0]+10,$arr[1]-10,1,5)
endif

durch das "-10" klickt es immer 10 pixel unter dem namen
habs noch nicht getestet, müsste aber theoretisch funzen
Pixelsearch arbeitet von links oben nach rechts unten.
so müsste theoretisch den pixel, den er findet ganz links im Namen sein.
Deshalb dieses "+10"

mfg
06/29/2009 21:13 Frezee#5
Wenn du schon ein etwas fortgeschrittenerer User bist, kannst du das auch über Speicher auslesen machen (so in etwa wie einen Headshot Bot für CSS). Ich finde grad bloß kein so ein doofes Tutorial dazu... -.-'
Kann das bitte jemand posten, falls er es findet?

€: Geht mit AuoIT glaub doch ned so einfach.^^
06/30/2009 02:26 marcopolo1990#6
autoit ist in solchen sachen leider etwas stupide ^^
mal imagesearch probiert?
oder sind die roten pixel nur 1x1 groß ?
wenn sie ja 2x2 groß wären gibs villeicht besseres ergebnisse
07/03/2009 17:50 anders5#7
danke für die vorschläge, ich habs ma versucht. Die Idee mit dem +10 nach rechts is gut, und mit imageseach wirds noch genauer... klappt super danke

@Frezee ich kann leider noch kein memory coding versuchs aber grad zu lernen
allerdings komm ich schon mit dem suchen der pointer net ganz klar... hab dazu ma das [Only registered and activated users can see links. Click Here To Register...] hier gelesen, aber punkt 3. Do a couple of search by changing your HP value till you obtain 1 or 2 address left
klappt bei mir net. Soll ich da ingame den wert ändern oder was?
07/03/2009 23:17 Frezee#8
Quote:
Originally Posted by anders5 View Post
danke für die vorschläge, ich habs ma versucht. Die Idee mit dem +10 nach rechts is gut, und mit imageseach wirds noch genauer... klappt super danke

@Frezee ich kann leider noch kein memory coding versuchs aber grad zu lernen
allerdings komm ich schon mit dem suchen der pointer net ganz klar... hab dazu ma das [Only registered and activated users can see links. Click Here To Register...] hier gelesen, aber punkt 3. Do a couple of search by changing your HP value till you obtain 1 or 2 address left
klappt bei mir net. Soll ich da ingame den wert ändern oder was?
Ganz genau. Ich würde dir aber eher ein anderes Tut empfehlen, darüber gibt es doch viele deutsche Tuts, die wirklich sehr gut erklärt und einfach sind.

Die Methode ist eigentlich immer die gleiche.
Zuerst einen Wert suchen, dann den Wert Ingame verändern und dann wieder suchen.
07/04/2009 18:34 anders5#9
ja das hab ich so gemacht, allerdings verändert sich der Tp wert beispielsweise ja immer ziemlich schnell, das heißt man kann eigentlich nie genau den richtigen wert treffen. Die einzige möglichkeit die mir einfallen würde is sich sterben zu lassen und dann nach null zu suchen, ginge das?