problem mit adressen (types)

05/11/2009 21:59 Shadow992#1
Ich habe eine Variable , die einmal als 2byte ,4byte und 8 byte große adresse vorkommt 8es ist immer die selbe adresse )

Bsp :
01FA7778 2Bytes 400
01FA7778 4bytes 400
01FA7778 8Bytes 400

genau so steht es in cheat engine , der wert der angezeigt wird ist richtig , jedoch wenn ich alles in ein Autoit skript einbaue , wird mir immer eine ca 10-20 stellige Zahl angezeigt .
ich denke , dass es an dem variablentyp liegt , ich wüsste aber nicht welcher Typ der richtige ist .
Alle types , die ich kenne :


1. none: kein Wert (nur gültig für den Rückgabewert (äquivalent zu "void" in C)
2. byte: ein 8-Bit-Integer Bei CE= Byte
3. ubyte: ein unsigned 8-Bit-Integer
4. short: ein 16-Bit-Integer Bei CE=2Byte
5. ushort: ein unsigned 16-Bit-Integer
6. dword: ein 32-Bit-Integer Bei CE=4Byte
7. udword: ein unsigned 32-Bit-Integer
8. int: ein 32-Bit-Integer Bei CE=4Byte
9. uint: ein unsigned 32-Bit-Integer
10. long: ein 32-Bit-Integer Bei CE=4Byte
11. short_ptr: ein Pointer auf einen 16-Bit-Integer
12. int_ptr: ein Pointer auf einen 32-Bit-Integer
13. long_ptr: ein Pointer auf einen 32-Bit-Integer
14. str: ein String (Nicht mehr Zeichen als 65536) Bei CE=Text
15. wstr: ein "Wide Character"-String (wird während des Aufrufes von/in einen ANSI-String umgewandelt) (Nicht mehr Zeichen als 65536)
16. hwnd: ein Fensterhandle
17. ptr: ein allgemeiner Pointer (void *)
18. float: eine einfache genaue 32-bit-Gleitkommazahl "floating point number" Bei CE=Float
19. double: ein 64-Bit-Gleitkommazahl Bei CE=Double


kann mir bitte jemand helfen ?

Code:
$Process = WinGetProcess("NosTale") 
$MemOpen = _MemoryOpen ($Process)
sleep(22)
$haddresse = 0x020730EC ;leben
$pointer = "0x" & Hex($haddresse + 0x00000060)
$life = _MemoryRead ($pointer,$MemOpen,'uint')
MsgBox(0,"hi",$life)
sleep(22)
$haddresse2 = 0x020730F0 ;mana
$pointer2 = "0x" & Hex($haddresse2 + 0x0000004C)
$mage = _MemoryRead ($pointer2,$MemOpen)
MsgBox(0,"hi",$mage)
sleep(22)
uint war nur testweise reingesetzt und wollte schauen ob es dann geht , kam aber die selbe Zahl raus ;-)

P.S. Ich beutze NomadMemory.au3
05/11/2009 23:02 RDTSC#2
400d/190h/110010000h ist nur ein Word.
Als DWord/QWord sieht es so aus:
00000190/0000000000000190,
also sollte sich das eher weniger tun.
[Außer es ist ein Word, direkt daneben sind andere Werte und du liest ein DWord aus]
Zeig doch mal deinen Code, vielleicht lässt sich dann etwas finden.
05/12/2009 13:50 felixli93#3
welche funktion in autoit benutzt du?

ich empfehle die udf [Only registered and activated users can see links. Click Here To Register...]

hatte noch nie probleme damit und was mit types musste da gar nicht einstellen, außer, wenn du einen text willst
05/12/2009 20:03 __wadim#4
Quote:
welche funktion in autoit benutzt du?

ich empfehle die udf UDF NomadMemory

hatte noch nie probleme damit und was mit types musste da gar nicht einstellen, außer, wenn du einen text willst
in nomadmemory.au3 wird readprocessmemory aufgerufen und da musst du dann genauso die datentypen richtig wählen oO
05/12/2009 20:16 felixli93#5
also bei mir klappte das bis jetzt immer auf default

außer, wenn ich einen text auslesen will, brauch ich natürlich char[...]
aber sonst, ging es ohne ein parameter bei $sv_type und es returnt auch immer das richtige, egal ob byte, 2 bytes, 4 bytes