memory fragen

10/07/2008 22:07 darthwitch#1
Also ich verstehe das mit den memory's nochnicht wirklich also wie ich es in ein script einbauen kann und was die memoryadressen nun wirklich machen also ich habe jetzt die adresse für die map melandrus hoffnung so und wollte das er dann den npc anspricht naja weis jetzt nicht ob es auch die richtige adresse ist also hier ist mal das was ich genommen habe als memorys
Quote:
CHECK_MAP = 0xccccc968
und
NPC_ID_NEAR = 0xccccc578
mein script ist jetzt
PHP Code:
#include<nomadmemory.au3>
$pid ProcessExists("Gw.exe")
If 
$pid 0 Then
    MsgBox
(16,@ScriptName,'Prozess nicht gefunden, Skript wird beendet.')
    Exit 
1
EndIf

$mem _MemoryOpen($pid)



$map 0xccccc968
$npc 
0xccccc558
    Sleep
(5050)
   
$wert _MemoryRead($map,$mem)
 If 
$wert Then  
_MemoryWrite
($npc,$mem,1)
Else
        
MsgBox(16,@ScriptName,'fehlgeschlagen.')
    Exit 
1
EndIf 
aber kommt halt die msg box die habe ich halt nur eingebaut um zu gucken obs geht oder nicht aber natürlich nicht
also wie muss es eigendlich aussehen?...
10/07/2008 22:32 _revo#2
Die Adresse für die ID des außenpostens ist im moment 00A052B0
zum NPC anwählen musst du in wadims tool nach NPC ID SELECT (im moment 00D27188) schauen
10/07/2008 22:33 i4mSoH34Vy#3
ist das die Adresse? 0xccccc578
10/07/2008 22:44 darthwitch#4
steht in wadimwadim's tool aber dann sagt mal wie schreibt man das in ein script das er checkt ob du auserhalb der map bist oder nicht und dann den npc in der nähe anwählt?!
10/07/2008 23:02 _revo#5
NPC Anwählen:

_MemoryWrite ($NpcID_Adress, $Process1, $NpcID)
Send ("{space}")

Die NpcID vom jeweiligen NPC musst du vorher mit CE oä. raussuchen

was du mit "auserhalb der map bist oder nicht" meinst weiß ich grad nicht ;)
10/07/2008 23:12 i4mSoH34Vy#6
Er will wissen ob er draußen steht.
10/07/2008 23:17 _revo#7
während dem ladescreen sind posx und posy aus sectionD immer 0
also checken wie lang sie 0 sind und wenn sich der wert verändert noch ein sleep von ca 2sec einfügen.
Zur sicherheit kannst du jedesmal noch die zoneID überprüfen, ob du auch wirklich im richtigen gebiet gelandet bist
10/08/2008 21:43 darthwitch#8
thx und wie sieht das nun aus wenn ich möchte das er erkennt ob er drausen ist und dann den npc anwähl also wie sieht es als script aus^^?
10/08/2008 21:52 _revo#9
eigeninitiative :)
in meinem letzten post hab ich dir alle infos gegeben, die du brauchst
10/08/2008 22:42 Gabba2#10
Mir war grad ein bisschen langweilig deswegen hier ein "Sleep bis man fertig geladen hat und danach anwählen von NPC X" Script müsst ihr dem entsprechend halt in eure Scripte ein- und umbauen.

Code:
#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.2.12.1
 Author:         Gabba2

 Script Function:
	Sleep bis man fertig geladen hat und danach anwählen von NPC X

#ce ----------------------------------------------------------------------------

opt("WinTitleMatchMode",3); Das Guild Wars das du beeinflussen willst muss auch "Guild Wars" heissen nicht "Guild Wars 1" oder so.
#include <NomadMemory.au3>

Global $PosX, $PosY, $CheckMap, $Check_NPC, $Town, $Area, $Ladescreen, $PID, $hprocess, $travelcheck, $CurrentPosX
Global $ID_vom_NPC_der_angewaehlt_werden_soll

$ID_vom_NPC_der_angewaehlt_werden_soll = InputBox("NPC ID", "Gib die NPC ID von dem NPC an den du anwählen willst.")
$PosX = 0x00D27638
$PosY = 0x00D2763C
$CheckMap = 0x00D27598
$Check_NPC = 0x00D27188

$Town = 0
$Area = 1
$Ladescreen = 2

$PID  = WinGetProcess("Guild Wars") 
$hprocess  = _MemoryOpen($PID)

_travelcheck()

Func _travelcheck(); (mit anschließendem gehen zu NPC X.
	$CurrentPosX = _MemoryRead($PosX, $hprocess) 
	while $CurrentPosX <> 0 ;Pausiert bis der Ladescreen kommt.
		ToolTip('PosX <> 0 1. Schleife',0,0)
		sleep(50)
		$CurrentPosX = _MemoryRead($PosX, $hprocess)
	wend	
	while $CurrentPosX = 0 ;Pausiert solange bis der Ladescreen weg ist.
		ToolTip('PosX = 0 2. Schleife',0,0)
		sleep(50)
		$CurrentPosX = _MemoryRead($PosX, $hprocess)
	wend
	Sleep(2000) ; zusätzliche Wartezeit zum fertig laden (kann auch reduziert werden).
	_MemoryWrite($Check_NPC, $hprocess, $ID_vom_NPC_der_angewaehlt_werden_soll)
	sleep(50)
	Send("{SPACE}")
endfunc
10/08/2008 22:43 i4mSoH34Vy#11
Das wäre so etwas musst halt noch verbessern das er nach 30 sec sagt cucu ich muss gildenhalle :D

Quote:
Func _drau()
While 1
_check()
select
Case ($CurrentPosX = 0 ) and ($CurrentPosY = 0)
sleep(2000)
Case ($CurrentPosX >= 0 ) and ($CurrentPosY >=0)
MsgBox(1,"","du stehst draußen")
Endselect
WEnd
Endfunc
WEnd
Endfunc
Edit: nimm ganf seins das ist besser :D
10/09/2008 13:40 darthwitch#12
jo thx an beide im moment ist alles hier im arsch telefon geht nicht kabel ist gerissen why ever also wie geasgt thx werde ich mal testen^^
10/13/2008 21:03 i4mSoH34Vy#13
So hab nun auch mal eine Frage :P.
Ist das hier die Adresse für die Interface-Größe? INTERFACE = 0xa0084f
Oder welche gibt die Größe zurück.
10/13/2008 21:07 _revo#14
Adresse: 00A0084F

gibt dann folgende Werte aus:
Small = 0
Normal = 256
Large = 512
Larger = 768
10/13/2008 21:16 i4mSoH34Vy#15
Ty :D