Regnum Online

09/30/2010 21:37 Elborod#1
Hallo ihr PvPers,
ich hab mich jetzt ein bisserl mit AutoIt und den entsprechenden Tutorials auseinandergesetzt und bin doch noch nicht wirklich weit gekommen... Genauer gesagt, ich bin bis ins Spiel gekommen aber mit dem Farmen wirds wohl eher nichts. Das Problem ist folgendes:
Ich habe mir um die Mobs zu finden ein Script geschrieben, welches in 25er Schritten den Bildschirm "abtastet". Um keine Mobs anzugreifen, die zu stark oder zu schwach sind, wollte ich, dass der Bot nur bei zwei Pixelfarben reagiert (zB. grün und gelb) Den Wert dieser Farben hab ich mir mit Window Info schon geholt. Das Problem ist allerdings, dass die Pixel (bzw. der Name des Mobs) erst eingezeigt wird, wenn ich direkt darauf zeige. Der Name und daher die Pixelfarbe ist aber darüber...
Aber noch etwas, wie kann ich dem Bot zeigen, dass er zu dem anvisierten Mob hinläuft? Gibt es da eine Möglichkeit die Koordinaten nur mit der Maus herauszufinden? Ich kann die Position zwar per *alt+i* Ingame nachlesen, aber ob ich das dem Bot beibringen kann....

Würde mich über Antworten freuen :)

Grüße
Elborod
09/30/2010 21:50 h0fi00#2
am besten zeigst du mal den ganzen script, dann kann man dir sicher besser helfen!
09/30/2010 22:00 omer36#3
kenn mich zwar nicht mit dem spiel aus, aber bei sowas müsstest du eher mit memoryread/write arbeiten...
09/30/2010 22:13 Elborod#4
run ("C:\Games\NGD Studios\Regnum Online\regnumonline.exe")
sleep (5000)
send ("{enter}")
sleep (1000)
send ("Passwort{enter}")
sleep (5000)
MouseMove (787,570)
sleep (1000)
MouseClick ("left", 787,570)
sleep (60000)
mousemove (636,941)
MouseClick ("left", 636,941)
Exit


und der Screen Scanner
Sleep (3000)
MouseMove (0,1024,20)
MouseMove (25,0,20)
MouseMove (50,1024,20)
MouseMove (75,0,20)
MouseMove (100,1024,20)
MouseMove (125,0,20)
MouseMove (150,1024,20)
MouseMove (175,0,20)
MouseMove (200,1024,20)
MouseMove (225,0,20)
MouseMove (250,1024,20)
MouseMove (275,0,20)
MouseMove (300,1024,20)
MouseMove (325,0,20)
MouseMove (350,1024,20)
MouseMove (375,0,20)
MouseMove (400,1024,20)
MouseMove (425,0,20)
MouseMove (450,1024,20)
MouseMove (475,0,20)
MouseMove (500,1024,20)
MouseMove (525,0,20)
MouseMove (550,1024,20)
MouseMove (575,0,20)
MouseMove (600,1024,20)
MouseMove (625,0,20)
MouseMove (650,1024,20)
MouseMove (675,0,20)
MouseMove (700,1024,20)
MouseMove (725,0,20)
MouseMove (750,1024,20)
MouseMove (775,0,20)
MouseMove (800,1024,20)
MouseMove (825,0,20)
MouseMove (850,1024,20)
MouseMove (875,0,20)
MouseMove (900,1024,20)
MouseMove (925,0,20)
MouseMove (950,1024,20)
MouseMove (975,0,20)
MouseMove (1000,1024,20)
MouseMove (1025,0,20)
MouseMove (1050,1024,20)
MouseMove (1075,0,20)
MouseMove (1100,1024,20)
MouseMove (1125,0,20)
MouseMove (1150,1024,20)
MouseMove (1175,0,20)
MouseMove (1200,1024,20)
MouseMove (1225,0,20)
MouseMove (1250,1024,20)
MouseMove (1275,0,20)
MouseMove (1280,1024,20)
Exit
09/30/2010 22:24 KingZuck#5
#doppelpost sind verboten

edir es schnell ;D

MFg
09/30/2010 22:31 omer36#6
ehm...
wofür waren die ganzen mousemove gleich nochmal?? :D

kannst du in dem spiel per taste mobs anvisieren?
zb mit der TAB-Taste?
mit PixelSearch() kannst du in einem selbstdefinierten bereich (ganzen bildschirm, oder nur eine kleine ecke) nach einer farbe suchen...

wenn du per TAb auswählen kannst, könnte dein bot inetwa so aussehn:
PHP Code:

Global $Active 0

HotKeySet
("{F1}""_StartBot")
HotKeySet("{F2}""_PauseBot")
HotKeySet("{ESC}""_EndeBot")

Func _StartBot()
    
$Active 1
EndFunc

Func _PauseBot
()
    
$Active 0
EndFunc

Func _EndeBot
()
    Exit
EndFunc

While 1
If $Active 1 Then
    $gegner 
PixelSearch(889,1731011,1900x4F2423,10)
    If 
IsArray($gegner) = True Then
        Send
("1") ; angreifen
    
Else
        
Send("{TAB}") ;weiter suchen
    
EndIf
EndIf
WEnd 
dass würde dann solange die TAB taste drücken (mobs suchen) bis eines gefunden wurde und wenn sein name die farbe hatt, greift es an.

die coordinaten und die farbe müsstest du dann anpassen...
09/30/2010 22:34 Elborod#7
genau das ist das Problem... ich kann die Mobs nur per mausklick auswählen :(

aber danke für die Mühe :)
09/30/2010 22:36 omer36#8
dann ist es echt besser wenn du es mit memoryread versuchst...
wenn das spielt nen anti cheat programm hatt, ist es aber nciht so super.. :D
10/01/2010 20:04 Elborod#9
Also ich weiß jetzt genau was der können soll, nur das ganze in AutoIt zu übersetzten bereitet mir noch etwas Schwierigkeiten
Gleich Vorweg, das soll ein Bogenschützen LevelBot und später Farmbot werden.
Also mit PixelSearch soll der gesamte Bildschirm nach einem bestimmten Pixel abgesucht werden.
Wenn das gesehen wird muss der Bot nicht daraufklicken sondern sofort klicken (sobald das Pixel zu sehen ist). Dann sollte er die {Strg} Taste drücken und sofort danach {1}(Die Taste {1} sollte er wenn möglich alle 8Sekunden wiederholen bis die Kreatur tot ist). Wenn dann die Schrift mit dem Pixel(das den Schaden des Spielers an der Kreatur hat) nicht erscheint, sollte er mindestens 8mal 1Sekunde lang auf {W} drücken und erst aufhören wenn die Pixel erscheinen. Wenn ein Pixel (vom Wasser) auftaucht, sollte er 1Sekunde auf {A/D) bleiben. Wenn auf dem gesamten Bildschirm ein keiner der Pixel gefunden wurde, soll er ebenfalls 1Sec auf {A/D/W} bleiben um ein bisschen weiter zu gehen. Bevor der Bot zu Lvln beginnt, sollte die Taste {9} und anschließend die {Tab} Taste drücken. Das die Kreatur tot ist erkennt der Bot an einem bestimmten Pixel, das in einem abgegrenzten Bereich auftaucht. Nach dieser Schrift sollte der Bot auf die Taste {7} drücken(Der Charakter setzt sich hin und ruht sich aus). Nach 1Minute wieder auf {7} und das ganze beginnt von vorne.
Ich hab es zwar zu vermeiden versucht, aber trotzdem kann es sein, dass der Charakter einmal von einem Mob getötet wird. In dem Fall erscheint nach max. 8Sekunden in einem begrenzten Bereich ein Button mit einer bestimmten PixelFarbe. Den soll der Bot klicken und dann 1Minute warten. Der Charakter erscheint dann an einem Altar wieder und muss an einen bestimmten Ort zurück laufen, was bei einer 3Dimensionalen Welt relativ schwer ist(Hierfür habe ich noch keine Lösung gefunden).
Es sollte aber für den Anfang reichen, wenn der Bot nach der Minute auf die rechte Maustaste Klickt und wieder solange 1Sekunde auf {W} bleibt bis wieder ein gewünschter Pixel erscheint.

Ich hoffe ich habe damit recht klare Linien aufgedeckt, nach denen der Bot später Handeln soll.
Sollte jemand Lust und Zeit haben mir zu helfen, Ich würd mich freuen



grüße
Elborod
10/01/2010 23:30 BlackHybrid#10
Dann würde ich es anders versuchen als in deinem anderem Thema, wo der den ganzen Bildschirm abfährt.
Probier es mit Pixelsearch

PHP Code:
$Fenstergroese=WinGetClientSize ("Regnum Online")
$Array=pixelsearch(00,$Fenstergroese[0], $Fenstergroese[1],0xFarbe)
mouseclick("left",$Array[0],$Array[1]) 
Das könnte dir vieles erleichtern :D
10/02/2010 19:50 Elborod#11
ICQ: 640671962

Erneut danke für die Überlegung aber so einfach ist das nicht, da der Name der Kreatur nur dann erscheint, wenn der Cursor darüber fährt. Anwählen geht weder mit Tab noch mit anderen Tasten.

Ich versuch grad, den Bot klar zu machen, dass er klicken soll wenn die Pixelfarbe
auftaucht ;)

Grüße
Elborod
10/02/2010 20:15 omer36#12
kannst ja dafür mein tool benutzen, da du jetz öffters pixelsearch benutzen musst...

erspart einiges an zeit und arbeit..
schau einfach in meine sig unten ^^
10/02/2010 21:31 Elborod#13
PHP Code:
Global $paused
HotKeySet
("!{F2}""_Scannerstart")
HotKeySet("!{F3}""_Pause")
HotKeySet("{ESC}""_Exit")
HotKeySet("!{F1}""RegnumStart")

While 
Sleep(50)
WEnd

Func _Scannerstart
()
    
Local $x 0
    Local $y 
1
    Local $Step 
10
    
While 1
        Mousemove
($x$y1)
        If 
$x >= @DesktopWidth Then
            $Step 
= - 10
            $y 
+= 20
        
EndIf
        If 
$x <= 0 Then
            $Step 
10
            $y 
+= 20
        
EndIf
        If 
$y >= @DesktopHeight Then Send ("!{F2}")
        
$x += $Step
    WEnd
EndFunc

Func _Exit
()
    Exit
EndFunc

Func _Pause
()
    
$Paused Not $Paused
    
While $Paused
    Sleep
(50)
WEnd
EndFunc 
Kann mir da jemand reinprogrammieren, dass der Bot
PHP Code:
MouseClick ("left"1
wenn der Pixel mit der Farbe
PHP Code:
0x8CA0FF 
zu sehen ist und danach eine neue Funktion startet?

Danke im Vorraus (und danach) ;)

Grüße
Elborod
10/02/2010 21:58 BlackHybrid#14
Ich setzt mch mal wieder ran.
Hab dich jetzt übrigens in ICQ geaddet.
Ich Editier das ergebnis wenn ich eins hab hier rein.
10/02/2010 21:58 omer36#15
erstmal eine frage an dich... :
was bringt dir die Func _Scannerstart() ? also was willst du damit erreichen?