Eine Frage zu Mems

01/18/2009 14:47 N.E.O.#1
Wie kriegt man die Mem Adresse von einem bestimmten NPC raus?

[Only registered and activated users can see links. Click Here To Register...]

Da habe ich schon geguckt, aber das klappt irgendwie nicht -.-"


Die Func solll dann so irgendwie sein^^:

Code:
Func _WayOut()
	
_MemoryWrite ($NPC, $Process, $NPC_ID)
Send ("{space}")

EndFunc
01/18/2009 14:49 i4mSoH34Vy#2
$ID = _MemoryRead($NPCAdresse, $hp1)
MsgBox(0,"",$ID)
01/18/2009 14:50 N.E.O.#3
Danke, ich teste es kurz

#edit Geht irgendwie nicht o.O

Ich habe das jetzt so gemacht:

Code:
Global $NPC = IniRead(@ScriptDir & "\Memorys.ini", "SECTION D", "NPC_ID_SELECT", "Not Found" ) ;Must be Updated!
Global $GW = "Guild Wars"
Global $Process = "Gw.exe"

#include<NomadMemory.au3>

$ID = _MemoryRead($NPC, $Process)
MsgBox(0,"",$ID)

Da kommt immer nur "0" raus.
01/18/2009 17:59 i4mSoH34Vy#4
$PID = ProcessExists(WinGetProcess("Guild Wars"))
$hp1 = _MemoryOpen($PID)
$ID= _MemoryRead($NPCAdresse, $hp1)
01/19/2009 18:32 N.E.O.#5
Hättest du vllt noch ne Idee wie man den WayTo dann macht?

Weil mit
Code:
Func _WayOut()
	
_MemoryWrite ($NPC, $Process, $NPC_ID)
Send ("{space}")

EndFunc
funzt der Run nicht..
01/19/2009 19:38 i4mSoH34Vy#6
Was möchtest denn machen?
01/20/2009 10:26 N.E.O.#7
Das er zu einem NPC läuft
01/20/2009 14:44 NBA#8
Da suchst du dir mit einem tool die NPC_Select adresse aus, und schreibst eine andere rein, dann tust du leer druecken lassen und er ist da.

(ACHTUNG! koennte zum abstuerzen des spiels fuehren. Memoryadresse koennte auch anders heissen!)
01/20/2009 17:08 aLasca#9
Wie such ich ne Mem mit CE raus?
01/20/2009 19:38 xSharkoonX#10
search unknown value --> dann den wert verändern was du suchst sonst nix --> search changed value --> alles verändern nur nich den wert --> search unchanged value --> und som weiter
01/21/2009 22:08 Kaneoxi#11
und wenn ich mit der TOWN_OUT_ID nach draussen laufen möchte?
PHP Code:
#cs
Town_OUT_ID anlaufen

#ce
#include<NomadMemory.au3>


WinWait("Guild Wars", "")
If 
Not WinActive("Guild Wars", "") Then WinActivate("Guild Wars", "")
WinWaitActive("Guild Wars", "")

AutoItSetOption ("SendKeyDelay",150) ;Delay wird in ms angegeben, Standardwert is 5 
AutoItSetOption 
("SendKeyDownDelay",150)

Sleep(2000)

$TOWN_OUT_ID = 0xa06498
$var 
= 431
$PID 
= ProcessExists(WinGetProcess("Guild Wars"))
$hp1 = _MemoryOpen($PID)

_MemoryWrite($TOWN_OUT_ID, $hp1, $var)
sleep(1000)
send("{space}")


while 
1
        sleep
(50)

WEnd 
funktioniert es nicht. $var = 431 habe ich aus der Adresse 0xa06498 ausgelesen.
01/21/2009 22:42 i4mSoH34Vy#12
Damit kann man nur checken wo er ist und ihn nicht dort hin laufen lassen.
01/24/2009 23:24 N.E.O.#13
Kann mir das einer nochmal als Func schreiben pls?

Ich check das nicht...
das funzt irgendwie nicht o.O
01/24/2009 23:27 N.E.O.#14
Quote:
Originally Posted by Kaneoxi View Post
und wenn ich mit der TOWN_OUT_ID nach draussen laufen möchte?
PHP Code:
#cs
Town_OUT_ID anlaufen

#ce
#include<NomadMemory.au3>


WinWait("Guild Wars", "")
If 
Not WinActive("Guild Wars", "") Then WinActivate("Guild Wars", "")
WinWaitActive("Guild Wars", "")

AutoItSetOption ("SendKeyDelay",150) ;Delay wird in ms angegeben, Standardwert is 5 
AutoItSetOption 
("SendKeyDownDelay",150)

Sleep(2000)

$TOWN_OUT_ID = 0xa06498
$var 
= 431
$PID 
= ProcessExists(WinGetProcess("Guild Wars"))
$hp1 = _MemoryOpen($PID)

_MemoryWrite($TOWN_OUT_ID, $hp1, $var)
sleep(1000)
send("{space}")


while 
1
        sleep
(50)

WEnd 
funktioniert es nicht. $var = 431 habe ich aus der Adresse 0xa06498 ausgelesen.
Du brauchst die NPC_Select ID.

Guck mal hier:

NPC_ID_SELECT = 0xd284e0


PHP Code:
; update.ini [Gw.exe] - wadimwadim 

[SECTION 9-A]
POSX = 0xa05650
POSY 
= 0xa05654
DEATH 
= 0xa056d4
NO_NPC 
= 0xa07234
MOUSE_COORDX 
= 0xa05ce0
MOUSE_COORDY 
= 0xa05ce4
TOWN_OUT_ID 
= 0xa06498
MLOCATIONA 
= 0xa12e2b
MLOCATIONB 
= 0xa12e2a
COURSE 
= 0xa055c2
EX_AREA_ID 
= 0xa02f78
EXPANDER 
= 0xa05583
EXPANDERB 
= 0xa05582
LVL 
= 0xa02fc0
PVP_PVE 
= 0xa02fcc
PING 
= 0xa003e4
CHARNAME 
= 0xa00434
INTERFACE = 0xa01a37
MOUSE_TEXT 
= 0xa05308
BAGID 
= 0xa01f80
LOG_IN_OUT 
= 0xa165b8
GUILD_OPEN 
= 0xa02470
HERO_OPEN 
= 0xa0240c
INVENTAR_OPEN 
= 0xa02498
EMAIL 
= 0xa01a48
WINDOW 
= 0xa13330
MOVETO_TARGET 
= 0xa056af
CAST 
= 0xa05cc4
CURSOR 
= 0xa0a428
CWNDX 
= 0xa1340c
CWNDY 
= 0xa13408
INVENTARX 
= 0xa0249c
INVENTARY 
= 0xa0249c
HEROPOSX 
= 0xa02410
HEROPOSY 
= 0xa02414
HEROSIZEX 
= 0xa0241c
HEROSIZEY 
= 0xa02418
MMAPPOSX 
= 0xa024f0
MMAPPOSY 
= 0xa024ec
MMAPSIZEX 
= 0xa024f8
MMAPSIZEY 
= 0xa024f4
MERCHANTPOSX 
= 0xa026e0
MERCHANTPOSY 
= 0xa026e4
MERCHANTSIZEX 
= 0xa026e8
MERCHANTSIZEY 
= 0xa026ec
PARTYPOSX 
= 0xa02564
PARTYPOSY 
= 0xa02568
PARTYSIZEX 
= 0xa0256c
PARTYSIZEY 
= 0xa02570
STORAGE 
= 0xa01fac
SELLBAG_X 
= 0xa01f30
PMOVE 
= 0xa056dc
CHESTPOSX 
= 0xa024b4
CHESTPOSY 
= 0xa024b0
OBSERVEMOD 
= 0xa056e8

 
[SECTION D]
D_POSITION_X = 0xd28c54
D_POSITION_Y 
= 0xd28c58
CHECK_MAP 
= 0xd288f0
NPC_ID_NEAR 
= 0xd28500
NPC_ID_SELECT 
= 0xd284e0
NPC_ID_MOUSE_SELECT 
= 0xd284ec
DMG 
= 0xd28988
NPC_ITEMSELECT 
= 0xd29f9c 
01/24/2009 23:28 aLasca#15
PHP Code:
#include <NomadMemory.au3> 

$hWnd = WinGetHandle("Guild Wars") 

Func _Dcheck() 
    Const 
$memdeath = 0xa056d4 
    $PID 
= WinGetProcess($hWnd) 
    Global 
$hprocess = _MemoryOpen($PID) 

    If 
_memoryread($memdeath, $hprocess) = 1 Then 
        
'resign' 
    
EndIf 
EndFunc 
Die Adresse von $memdeath gibt 1 Zurück wenn er tot ist, und 0 wenn er lebt.