Woher weiß ein bot wo er gerade ist?

05/12/2010 12:59 Franzknut#1
Hallo,

ich hab mich bisschen mit autoit angefreundet und kann auch schon einige nützliche bots schreiben... jedoch gibt es ja auch soclhe bots welche z.b. ehre farmen. da frag ich mich, woher weiß ein bot wo er gerade ist, und woher weiß er, wo er laufen kann, ohne iwo gegen zu rennen?

mfg
05/12/2010 14:14 HardCore.1337#2
Entweder der Laufweg ist fest einprogrammiert (Makro Mäßig) oder er ließt seine Postion über den Arbeitsspeicher aus.
05/12/2010 14:29 bassbanane#3
Man könnte auch mit pixelsearch und so arbeiten.
So könnte man z.B. erkennen ob man stuckt.
Oder man hat eine Minimap auf und guck mit pixelsearch wo du dich auf der karte befindest.
Wäre aber die wohl aufwändigste Methode.
Aus dem Memory auslesen ist für soetwas die einfachste Methode mit AutoIT.
05/12/2010 16:48 | Moep |#4
Vergiss dass mit den Pixeln, viel zu aufwändig und fehler anfällig.
Such dir die x/y coordinaten mit cheat engine heraus. Mit ein bisschen Mathe Kenntnissen kannst du dir dann in jeden Game eine Moveto Basteln.
05/12/2010 16:57 Σternαl.#5
Mit Packetsniffen müsste das auch gehn.
05/12/2010 19:22 Franzknut#6
also mit cheatengine kann man den arbeitsspeicher auslesen?... und wie genau geht das bzw brauche ich nur cheatengine dafür? gibts ne aktuelle version davon iwo?

mfg
05/12/2010 19:34 Artimes Fowl#7
[Only registered and activated users can see links. Click Here To Register...]

hier die neuste Version

bei YouTube findest du gute Videos dazu ;)
05/12/2010 19:34 | Moep |#8
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
05/12/2010 19:35 Σternαl.#9
Du müsstest mim Cheatengine an die Adresse rankommen, in der deine Positionen gespeichert sind.
Wenn es ne statische Adresse ist, hast du Glück, dann musst du nur den Wert
per MemoryRead auslesen und wüsstest, wo du bist. Wenn es ne dynamische Adresse
ist, muss du erstmal den Pointer finden und dann über den Pointer in deinem Programm
die Adresse kriegen, um dann wieder den Wert (deine Position) mit MemoryRead auszulesen.
05/13/2010 12:40 Franzknut#10
...
05/13/2010 12:47 Σternαl.#11
Les dir einfach mal ein paar CE Tuts durch und dann mach dich ans Scannen^^
05/13/2010 22:43 Franzknut#12
kannst du mirn bestimmtes empfehlen, vllt. das womit du es auch gelernt hast?
btw wie kann ich ce dnan mit autoit verbinden?

mfg
05/13/2010 23:37 Σternαl.#13
Ich habs ohne Tut gelernt :p
Aber ein paar Posts vor mir hat dir jemand schon ein Tutorial aufgelistet^^
Und Cheatengine und deinen Trainer musst du garnicht verbinden, du benutzt
in deinem Trainer nur die Values & Adressen, die du mithilfe von CE herausgefunden hast^^
05/14/2010 12:27 Bl@ze!#14
Aus dem Arbeitsspeicher die Positionen herauslesen, funktioniert zB so:

Code:
//-----------------------------------------------------------------------------
QVector3D uUnits::unitPosition(unsigned int aUnit)
{
   float x,y,z;
   DWORD bytesRead;

   x = 0; y = 0; z = 0;

   ReadProcessMemory(handle(), ((void*)(aUnit + Offsets::UnitX)), &x, sizeof(float), &bytesRead);
   ReadProcessMemory(handle(), ((void*)(aUnit + Offsets::UnitY)), &y, sizeof(float), &bytesRead);
   ReadProcessMemory(handle(), ((void*)(aUnit + Offsets::UnitZ)), &z, sizeof(float), &bytesRead);

   return QVector3D(x,y,z);
}
Du musst nur das prinzip von "ReadProcessMemory" verstehen, dafür gibt es auch genug AutoIT portierungen, die auch leichter sind. ;-)

Du brauchst allerdings die Offsets, die du mit CheatEngine ermitteln könntest, wie einige Vorposter bereits erwähnt haben.
05/14/2010 14:18 Menan#15
Quote:
Originally Posted by Dtex View Post
...
Spam

#Reported

Zum Topic:

Es gibt immer so genannte " Speicheradressen " in diesen sind deine X und Y Koordinaten gespeichert..

Daher weis dein Bot, wo du gerade bist.