Memory benutzen

03/27/2013 16:31 galexus#1
Hallo Leute,

Ich habe ein großes, kleines Problem :D

Ich habe mit cheatengine eine Adresse ausgelesen.
Diese wollte ich einsetzen um mit autoit in einem bestimmten Bereich danach zu suchen... Allerdings finde ich nichts dazu, wie oder wo ich die ausgelesene Adresse einsetzen kann .. :(

Ich hoffe Ihr könnt euch in mein Problem reindenken und könnt mir weiterhelfen.

Mit freundlichem Gruß

Timo
03/27/2013 16:50 BladeTiger12#2
Erstmal brauchst du die NomadMemory.au3:

Kopier den Code füge es in eine .au3 ein die NomadMemory heißt
und lege sie in den Includes Ordner von AutoIt.
(Pfad bei mir: C:\Program Files (x86)\AutoIt3\Include)

Und dann musst du erstmal mit:
Code:
#RequireAdmin;Für Admin-rechte
#include <NomadMemory.au3> ;Um die Befehle zu nutzen

Global $Adresse = 0xADRESSE , $Process = "Process.exe"

$PID = ProcessExist($Process) ;Schauen ob Process existiert wenn ja gibt es den PID zurück
$hMem = _MemoryOpen($PID);Öffnet die Memory
$Read = _MemoryRead($Adresse , $hMem , "dword") ;Liest die Adresse aus
MsgBox(64 , "Value der Adresse" , $Read) ;Gibt den Wert aus
Bei $Adresse schreibst du deine Adresse hin mit 0x.
Bei $Process schreibst du den Process hin, z.b Solitaire.exe.
Bei _MemoryRead: "dword" ist 4Byte.
03/27/2013 17:33 galexus#3
Es funktioniert nicht er sag mir ne Fehlermeldung:
$PID = ProcessExist($Process)
$PID = ^ERROR

Error:Unknown function name.

Aber ich hab den Code unter Programme(x86)\Autoit3\Include gespeichert...

Code:

#RequireAdmin;Für Admin-rechte
#include <NomadMemory.au3> ;Um die Befehle zu nutzen

Global $Adresse = 0x0048BD44 , $Process = "SpiderSolitaire.exe"

$PID = ProcessExist($Process) ;Schauen ob Process existiert wenn ja gibt es den PID zurück
$hMem = _MemoryOpen($PID);Öffnet die Memory
$Read = _MemoryRead($Adresse , $hMem , "dword") ;Liest die Adresse aus
MsgBox(64 , "Value der Adresse" , $Read) ;Gibt den Wert aus
03/27/2013 17:37 BladeTiger12#4
Ja sorry, habe bei ProcessExist das "S" vergessen also:
Code:
ProcessExists
Das hättest du eig. merken müssen.
Steht da ja sogar, Unknown Function Name:
Unügltiger Funktion Name.
03/27/2013 17:45 galexus#5
Oh man :DD
Das hab ich nicht gesehen :D
Ok Danke Danke Danke :)
Aber eigentlich wollte ich ja mit der Adresse bzw. der Pointeradresse einen bestimmten bereich nach dieser Adresse absuchen.

Also ungefähr so wie pixelsearch wollte ich nun nur nicht nach Pixeln sondern nach der Adresse in einem bestimmten bereich suchen.
03/27/2013 17:47 BladeTiger12#6
Ja da oben redest du von Adressen und jetzt von Pointern.
Ist halt etwas schwerer.
Wenn du Skype hast kannst mich ja mal adden.
Muss jetzt weg noc hetwas erledigen.
03/30/2013 14:06 galexus#7
Ich hab dich bei Skype hinzugefügt aber du antwortest nicht...

Kann mir denn jetzt einer bei meinem Problem helfen ?
Ich versuche mein vorhaben nochmals besser darzustellen:

1. Ich lese eine Adresse mit Cheat Engine aus.
2. Ich möchte in einem bestimmen bereich z.B. in einem Spiel im Inventar nach dieser Adresse suchen. (Die Adresse ist zum Beispiel ein Item)

Meine Frage ist nun wie kann ich in meinem Inventar nach dieser nummer suchen bzw. nach diesem Item?
Ich hoffe ihr könnt mir helfen. :)
03/30/2013 14:56 omer36#8
ich würde so vorgehen:

-dein itemX im inventar an die erste stelle legen und nach "unknown value" suchen
-dein itemX mit einem anderen item vertauschen und nach "changed value" suchen
-X an erste stelle legen -> "changed value"
-inventar schließen, herrum laufen, im inventar andere items vertauschen und nach "Unchanged value" suchen

usw.

vllt. findest du am ende die adresse deines items, vllt aber auf die adresse vom item, die sich im slot1 befindet... musst halt testen 4byte/2byte ect.

ob es nun klappt oder nicht hängt auch vom spiel ab würd ich jetzt mal behaupten.
03/30/2013 18:33 galexus#9
Ja das habe ich ja schon gemacht die Adresse habe ich schon ...
Ich will nun nach der Adresse mit autoit im Inventar such damit autoit da drauf klickt ...
Bisher habe ich das mit pixelsearch gemacht aber das funktioniert ja nur auf meinem pc.

Ich möchte das ungefähr so haben wie bei einem Switch Bot, da bewegt sich ja auch keine Maus es geht alles automatisch.
03/31/2013 00:31 .SkyneT.#10
Quote:
Originally Posted by galexus View Post
Ja das habe ich ja schon gemacht die Adresse habe ich schon ...
Ich will nun nach der Adresse mit autoit im Inventar such damit autoit da drauf klickt ...
Bisher habe ich das mit pixelsearch gemacht aber das funktioniert ja nur auf meinem pc.

Ich möchte das ungefähr so haben wie bei einem Switch Bot, da bewegt sich ja auch keine Maus es geht alles automatisch.
Du wirst keine Adresse für ein Item finden, die Items werden mit
hoher Wahrscheinlichkeit mit bestimmten ID's abgespeichert, die auf
bestimmten Inventarplätzen liegen.
Das wird dann in einer Funktion übergeben, welche du von
deinem Code aus, mit den entsprechenden Parametern,
selber aufrufen müsstest, wenn du keine Mausbewegung haben willst.
03/31/2013 12:00 galexus#11
Ah da kommen wir der Sache doch schon näher :)
Und wie kann ich in autoit auf diese IDs verweisen ?

Danke für eure Hilfe und frohe Ostern :)))