Heeeey Coder's c:
Ich hab' mal wieder ein Problem. Und zwar bin ich dabei einen Bot für ein Spiel zu schreiben, welcher Monster ausfindig machen kann und sie dann anklickt, um anzugreifen.
Das Problem ist leider, dass ich absolut nicht weiß, wie ich ein Monster per AutoIT ausfindig machen kann. Ich hab mich bereits erkundigt, aber konnte nur rausfinden, dass es per Memory möglich sei, jedoch weiss ich nicht wie.
Hat jemand bereits Erfahrung mit Memory? Villeicht kann mir ja jemand von euch ein Beispielcode schreiben, damit ich ungefähr weiss, wie ich den Bot zu konstruieren hab.
Falls die Monster-ID oder Ähnliches von nöten ist, habe ich diese sogar schon herausfinden können, nur fragt sich ob es damit irgendwie machbar ist..
Hmm, wenn sich die Monster bewegen dann haben sie doch andere Koordinaten oder nicht?
CE an, Search for initial value und dann einfach nach changed / unchanged je nach Position suchen. Wenn du die Position vom Mob findest dann wird der Name des Mobs sicherlich auch irgendwo in der Nähe im RAM stehen. Memory View <-
Hmm, wenn sich die Monster bewegen dann haben sie doch andere Koordinaten oder nicht?
CE an, Search for initial value und dann einfach nach changed / unchanged je nach Position suchen. Wenn du die Position vom Mob findest dann wird der Name des Mobs sicherlich auch irgendwo in der Nähe im RAM stehen. Memory View <-
Danke erstmal für deine Antwort.
Kann ich nicht einfach den Namen des Mob's in CE suchen und dann irgendwie den Basepointer rausfinden? Nehmen wir mal an ich stelle mich im Spiel an einem Ort, wo 10 Ochsen sind. Wenn ich jetzt im CE nach dem String "Ochse" suche, findet er also 10 verschiedene Adressen mit der Value "Ochse".
Das bedeutet also, dass jeder Ochse, eine andere Adresse hat, obwohl es die selben Monster sind.
In Prinzip muss ich doch nur die Base-Adresse herausfinden, um diese dann irgendwie per AutoIT anklicken zu lassen.
Oder gibt es da einen anderen weg? Das Monster muss auf jeden Fall angeklickt werden, damit man es angreifen kann.
Ich hatte es schon mit Pixelsearch versucht, aber das scheint nicht so professionell zu funktionieren, wie ich es mir vorstellte ._.
Haha, versuch es doch mal...
Nicht nur die Monster heißen Ochse sondern andere Sachen z.B. auch.
Nur weil da 10 sind heißt das nicht das du 10 findest bzw weniger.
Bin mir nicht sicher ob dies mit AutoIt geht, aber ich meine es sollte möglich sein.
Ich würde es ja so machen das man die Funktion für auswählen eines Mobs sucht und die dann wieder aufruft.
Bräuchtest dafür aber wahrscheinlich die Addis der einzelnen Mobs und eben die richtige Funktion.
Solltest dich am besten mit Olly vertraut machen, sofern es überhaupt in AutoIt möglich ist. :b
die auflistung von objekten in spielen läuft über einen nachbau der clientinternen funktionen. relativ einfach wird das ganze, wenn minimaps oder ähnliche genutzt werden um mobs darzustellen bzw aufzulisten.
hier gilt es die funktion zu finden und die relvanten informationen zu extrahieren.
die letztendliche selektierung kann je nach implementierung im spiel sehr einfach (zb über das setzen eines einzelnen wertes), oder aber auch recht kompliziert über eine client interne funktion mit mindestens einem parameter funktionieren.
Eine Minimap ist soweit vorhanden. Aber wie kann ich mir das zum Vorteil nutzen? Die Monster werden auf der Minimap als gelber Punkt angezeigt, aber man kann sie per Klick auf den jeweiligen gelben Punkt nicht anvisieren... ich bin echt am verzweifeln..
Eine Minimap ist soweit vorhanden. Aber wie kann ich mir das zum Vorteil nutzen? Die Monster werden auf der Minimap als gelber Punkt angezeigt, aber man kann sie per Klick auf den jeweiligen gelben Punkt nicht anvisieren... ich bin echt am verzweifeln..
wie gesagt sobald du weist, wo im client objekte ohnehin durchlaufen werden (wie zb in der minimap funktion), kannst du beginnen diese in autoit nachzubauen...
vor etwa 3 jahren habe ich im stealthex forum mal beschrieben, wie ich das ganze in silkroad gemacht habe:
now we'll take a look at the end of the grap function, to see what gets returned. the returned register should be the id of the item, with the lowest distance to our char. if we found the output, we'll trace it back to see where it gets read from the memory:
as i ran the tool, i've noticed, that the tool did list way to many ids. when i took a deeper look at the ids, i've noticed, that mobs players and npcs also got listed.
since the pickup function should only list items, it had to detect items in the loop. so i went back into the loop.
the first thing thats done in the loop, looks like this:
[Memory Read] Monster HP auslesen 04/02/2012 - AutoIt - 7 Replies Ich versuche im Moment herauszufinden, wie ich die HP eines Monsters auslesen kann.
Wie man hier an dem Bild sehen kann, steht leider keine HP Zahl im Balken, weswegen ich mit Cheat engine per unknown initial value versucht habe, den Wert auszulesen:
http://www9.picfront.org/picture/K3rbobWJdKL/thb/ HP.jpg
Da dies aber nicht funktioniert hat, bzw. ich nur einen Wert rausbekomme, der sich nach dem Tot des Monsters in eine irrsinnige Zahl ändert, frage ich hier um Rat.
Hat vielleicht einer...
[TuT] 1GB Memory Stick zu 2GB Memory Stick machen (in 3 schritte) 11/03/2010 - Tutorials - 11 Replies 1. Ihr Braucht
• sdfix2g => Download
• eine psp mit usb Kabel
• eine 1GB MS (2,4 und 8gb gehen nicht)
2. MS Formatieren
• psp und pc mit usb Kabel verbinden
• Formatiert die MS über PC (geht auch schnellformatieren)
3. 1 werden 2
AutoIt Monster HP Memory auslesen 04/07/2010 - Last Chaos - 7 Replies Ich wollte fragen ob ich diesen Code benutzen kann, das wenn die HP des Monster 0 sind TAB gedrückt wird. Offset hab ich schon.
Func Monster HP()
$ID=_MemoryOpen(0x0000043C) <== Nksp.exe
$Address=0x"Monster HP Offset"
$CurrentMonsterHP=_MemoryRead($Address,$ID)
If $CurrentMonsterHP < 0 Then
ControlSend("{TAB}") <== Ziel wechseln(erstmal nicht wichtig)
EndIf