AutoIt kann keine statische Adresse mit XYZ Koordinaten auslesen?
Hi
ich frage mich, warum mein AutoIt Code keine statische Adresse aus Wow 2.4.3, genauer: die XYZ Koordinaten, auslesen kann. Es kommt immer nur 0 raus, anstelle der in CE korrekt angezeigten Koordinaten (bei gleicher statischer Adresse, also nichts mehr mit Pointern usw)
Code:
Code:
#include <NomadMemory.au3>
#include <GUIConstants.au3>
#include <String.au3>
#include <Date.au3>
#include <array.au3>
#Include <Misc.au3>
; Wow Static Adresses for 2.4.3
dim $knownX = 0x00E18DF4
dim $knownY = 0x00E18DF8
dim $knownZ = 0x00E18DFC
dim $processfound = 0
Global $ProcessID = WinGetProcess("World of Warcraft","")
while $processfound = 0
If $ProcessID = -1 Then
MsgBox(4096, "ERROR", "Failed to detect process.")
$reply = msgbox(1,$appname,"If world of warcraft is running please enter the name of the process (Ie, WORLD OF WARCRAFT) (uppercase sensitive)")
if $reply = 2 then
Exit
Else
$Processnewname = InputBox($appname,"Please enter the name of the process. (Case sensitive)")
Global $ProcessID = WinGetProcess($Processnewname,"")
EndIf
Else
$processfound = 1
EndIf
WEnd
Local $DllInformation = _MemoryOpen($ProcessID)
If @Error Then
MsgBox(4096, "ERROR", "Failed to open memory for process;" & $ProcessID)
Exit
EndIf
$CurrentLocX = _MemoryRead($knownX, $DllInformation,'float')
MsgBox(0,"","X-Pos: " & $CurrentLocX)
$CurrentLocY = _MemoryRead($knownY, $DllInformation,'float')
MsgBox(0,"","Y-Pos: " & $CurrentLocY)
$CurrentLocZ = _MemoryRead($knownZ, $DllInformation,'float')
MsgBox(0,"","Z-Pos: " & $CurrentLocZ)
Wie wärs mit Debugrechten holen?
SetPrivilege("SeDebugPrivilege",1) ist die Funktion aus dem NomadMemory UDF dafür.
Es hilft übrigens sich erstmal zu informieren wie man ein Autoit UDF verwendet und dann nach zu fragen, ist aber nur so ne Idee von mir...
Nein, dass ist es nicht. Und ja, ich habe die NomadMemory.au3 ausführlich studiert und kann mir trotzdem nicht erklären, warum immer nur 0 angezeigt wird (alle Koordinaten).
Habe übrigens Windows 7, ist das ein Problem für AutoIt vs. Speicherzugriff?
So geht das auch nicht du musst eine base adress nehmen diese + 2 offsets da es ein level 3 pointer ist und dann noch die offsets zu den jeweiligen x y z
kann sein das die §point adresse nicht richtig ist da ich auf diesem pc nicht meinen aktuellsten bot habe musst du schauen jedoch die offsets sind 100% richtig viel spaß!
@Bot_interesierter: Ja, hab alles compiliert und gebuildet. Dann per rechter Maustaste "Als Administrator ausführen" gewählt (Windows 7).
Habe sogar den Kompabilitätsmodus getestet, alles dasselbe, nur 0 als Ergebnis.
Hier mal der Beweis:
Ich wage mal zu behaupten, dass man unter Windows 7 nicht mehr mit AutoIt auf den Speicher zugreifen kann. Gegenbeispiele sind gerne gesehen!
Schau mal ob die Process ID stimmen kann, also lass sie dir ausgeben und ich bin mir ziemlich sicher das du die Debug Rechte Manuell mit SetPrivilege anfordern musst, denn wie die Debug Rechte nicht vergeben werden kannst du ReadProcessMemory nicht benutzten.
Wenn du die Rechte nicht hast, dann gibt _MemoryRead immer 0 zurück ^^
Schau mal ob die Process ID stimmen kann, also lass sie dir ausgeben und ich bin mir ziemlich sicher das du die Debug Rechte Manuell mit SetPrivilege anfordern musst, denn wie die Debug Rechte nicht vergeben werden kannst du ReadProcessMemory nicht benutzten.
Wenn du die Rechte nicht hast, dann gibt _MemoryRead immer 0 zurück ^^
Also ich hab zu Beginn jetzt mal SetPrivilege eingefügt:
PHP Code:
dim $knownX = 0x00E18DF4 dim $knownY = 0x00E18DF8 dim $knownZ = 0x00E18DFC
dim $processfound = 0 SetPrivilege("SetDebugPrivilege",1) ...usw
es geht noch immer nicht.
Die ProcessId wird korrekt ausgelesen (z.B. ID = 3644)
Komischerweise ist nach
PHP Code:
Local $DllInformation = _MemoryOpen($ProcessID)
die $DllInformation leer, also keine Anzeige in der MsgBox (nutze ich immer zur Anzeige)
Quote:
Originally Posted by Bot_interesierter
... denn wie die Debug Rechte nicht vergeben werden kannst du ReadProcessMemory nicht benutzten.
Ich nutze garnicht ReadProcessMemory sondern _MemoryRead, wo ist denn die Funktion ReadProcessMemory hinterlegt (nicht in NomadMemory.au3)
, also ohne t in Set gehts nicht. Das Internet spricht von einem eventuellen, generellen Fehler in der SetPrivilege Funktion von Nomad.. ich muss mich mal einlesen.
_MemoryRead ist ein Wrapper für die Windows Api Funktion ReadProcessMemory.
Und es gab einige NomadMemory Versionen in denen die SetPrivilege Funktion Fehlerhaft war/ist, ich bin da nicht auf dem aktuellen Stand weil ich Autoit nicht mehr benutzte.
Jaaaaaaaa es geht!! Es lag an der fehlerhaften SetPrivilege Methode in NomadMemory.au3, danke Bot_interesierter!
Ja, und man muss es als Administrator starten. Ich nehme alles zurück wegen
Windows 7.
Die korrekte NomadMemory.au3 ist angehängt, habe sie noch um _MemoryGetBaseAddress erweitert.
soweit ich weiß gibt es keine statischen XYZ Ids... du musst das so machen
pbase2 = _MemoryRead($Playerbase, $handle, 'ptr')
Pbase1 = _MemoryRead($pbase2 + pbaseoffset1 , $handle, 'ptr')
pBase = _MemoryRead($Pbase1 +pbaseoffset 2, $handle, 'ptr')
so gut nun haben wir die playerbase
jetzt können wir auch xyz aus lesen:
$x=_MemoryRead($pBase + $XUnitOffset, $handle, 'float') ect
soweit ich weiß gibt es keine statischen XYZ Ids... du musst das so machen
pbase2 = _MemoryRead($Playerbase, $handle, 'ptr')
Pbase1 = _MemoryRead($pbase2 + pbaseoffset1 , $handle, 'ptr')
pBase = _MemoryRead($Pbase1 +pbaseoffset 2, $handle, 'ptr')
so gut nun haben wir die playerbase
jetzt können wir auch xyz aus lesen:
$x=_MemoryRead($pBase + $XUnitOffset, $handle, 'float') ect
Wenn man keine Ahnung hat...
Hättest du Seite eins dieses Threads gelesen, dann wüsstest du das es um die Version 2.4.3 geht, in der es sehr wohl eine Statische Adresse für XYZ gibt
CE kommen keine Adresse 08/06/2010 - S4 League - 21 Replies Ich hab ein Problem wen ich mit Cheat engine arbeite kommen einfach keine Adressen.
Kann mir jemand Helfen
Etz Funktioniert Cheat Engine iwie obwohl ich 32bit habe :D
Wie kann ich mit AutoIt einen text aus dem Editor auslesen??? 04/06/2010 - AutoIt - 4 Replies Hallo.
Ich möchte gerne wissen wie ich mit AutoIt Text aus dem editor auslesen kann,
zb.steht im editor:
Hallo
So das skript soll jetzt das wort Hallo in sich einbauen.
Das mit dem ausgeben weiß ich, dass habe ich so gemacht:
Send("Hier ebent das was ich ausgeben will.")
Keine IPv4 Adresse 02/23/2010 - Metin2 Private Server - 1 Replies Ich sehe in dem Feld wo die IPv4 Adresse stehen soll nix..
Ist das normal?
Msn findet keine DNS-Adresse 03/22/2009 - Technical Support - 0 Replies Huhu,
ich wollte mal fragen, wie ich denn das MSN dazu bringen kann, wieder DNS-Adressen zu finden. Seit ich das neueste MNS installiert habe, kann ich mich nicht mehr einloggen, obwohl Internetzugang da ist und funktioniert. Das MSN selbst findet keine Probleme und was sinnvolles hab ich per google nicht gefunden.
Freue mch über Antworten :)
AutoIT Koordinaten 05/27/2008 - Guild Wars - 6 Replies Hallo,
ich wollte wissen, ob ich die Koordinaten auf eine kleine Auflösung herunter rechnen kann, ohne sie neu zu messen?
Von 1280x1024 auf 1024x768
Die 1280x1024 sind jeweils 100%x100% und die 1024x768 müssten 80%x75% sein.