|
You last visited: Today at 05:20
Advertisement
Read Memory Surrounding Persons
Discussion on Read Memory Surrounding Persons within the Atlantica Online forum part of the MMORPGs category.
01/07/2010, 03:19
|
#1
|
elite*gold: 50
Join Date: May 2008
Posts: 2,214
Received Thanks: 1,825
|
Read Memory Surrounding Persons
Ok ich hab mich mal hingesetzt und die Werte weiter analysiert von den monster namen.
Man bekommt damit eine Liste von Namen, X, Y Koordinaten von allem was im Spiel im Sichtradius geladen wird.
Soll heißen steht man mitten in Rom stehen alle Personen in der Liste mit Namen, X, Y Koordinate.
Dazu zählen auch NPC, wandernde NPC's (z.b Goncourt wenn man den im Sicht Radius hat) und natürlich auch monster.
Das ist besonderst intressant weil man diese Liste für einige intressante features benutzen könnte / bzw ich werde das tun ^^.
Z.b. sieht man wenn man am Botten ist und eine Person sich dazu gesellt, in dem fall könnte man einen Timer starten (z.b. 20 sekunden) , ist die Person bis dahin nicht weg (also läuft nicht einfach nur vorbei) dann teleportiert man sich nach Rom oder wechselt einfach das Gebiet zum farmen.
*Das Feature ist aber etwas kompliziert in der Umsetzung, da man die Namen sieht, nicht aber ob es den ein Spieler ist, also muss man wissen das ein spezieller Name ein monster ist und andere keine monster sind (mechanismus dafür muss man halt mal schauen).
Das ist zwar schon sehr speziel aber sicherlich sehr nützlich.
Der Große Teil jedoch ist wichtiger um die gegner zu selektieren die man eigentlich angreifen will, dazu müsste man die Koordinaten so ausrichten das man anhand der Vogelperspektive auf das Feld sagen kann wo sich das Monster befinden müsste, dahin kann man dann klicken, was im Optimalfall die zeit intensiven Pixelsearches und Scan erspart, vor allem kann man auch speziellem zeugs aus dem Weg gehen, auch wenn das erstmal nicht so hilfreich ist (da die gegner ja zufällig sind, egal welche Namen sie haben die dann tatsächlich im Kampf sind).
Aber beim AutoMove könnte man auch Gegnern ausweichen die man nicht bekämpfen will, sprich bewegt man sich auf den Gegner zu und hat eine "Distanz" von sagen wir unter 5 (also ist sehr nahe) bricht man das Automove Ab und lenkt dagegen, damit man nicht im Kampf landet.
*Wobei das wohl komplizierter wird am Ende als es sich so anhört (mal sehen).
Für die Ind Dungeons ist es natürlich besonderst gut, da man damit die Gegner genau lokalisieren kann und damit alle nach einander besiegen kann, was mit Pixelsearch nahezu unmöglich ist.
Zuguter letzt kann man es im Waypoint System benutzen um einfach die exakten Koordinaten der NPC auszulesen.
Hier mal was ich mometan zu Test zwecken erstellt habe:
ReadPersonData.au3 file (compilieren mit AutoIT)
Code:
#include <NomadMemory.au3> ;because you need this for _memread functions
#include <readMem_Array.au3>
#Include <String.au3>
#include <readMem_Array.au3>
Global $IniFileName = "Config.ini"
Global $title = IniRead($IniFileName, "default", "$title", "Atlantica Online")
Opt("WinTitleMatchMode", 3)
Global $hWnd = WinGetHandle($title)
Global $Process1 = WinGetProcess($title) ;the window to get PID
Global $Mem_Open = _MemoryOpen($Process1) ;must open before you can read address
#region BasicFuncs
HotKeySet("{ESC}","_exit")
Func _exit()
ControlSend("", "", "", "", 0)
Exit 0
EndFunc
#EndRegion
;Endregion BasicFuncs
#region GUI
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
#Region ### START Koda GUI section ### Form=c:\dokumente und einstellungen\stefan\desktop\bot\atlantica bot\persondata.kxf
$Form2 = GUICreate("Form2", 305, 298, 211, 159)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form2Close")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "Form2Minimize")
GUISetOnEvent($GUI_EVENT_MAXIMIZE, "Form2Maximize")
GUISetOnEvent($GUI_EVENT_RESTORE, "Form2Restore")
$ListView1 = GUICtrlCreateListView("ID|Name|X|Y", 8, 8, 290, 278)
GUICtrlSendMsg(-1, 0x101E, 0, 30)
GUICtrlSendMsg(-1, 0x101E, 1, 150)
GUICtrlSendMsg(-1, 0x101E, 2, 50)
GUICtrlSendMsg(-1, 0x101E, 3, 50)
GUICtrlSetOnEvent(-1, "ListView1Click")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
;EndRegion KODA GUI
#region GUI Funcs
Func Form2Close()
Exit 0
EndFunc
Func Form2Minimize()
EndFunc
Func Form2Maximize()
EndFunc
Func Form2Restore()
EndFunc
Func ListView1Click()
EndFunc
#EndRegion GUI Funcs
;EndRegion GUI Funcs
#EndRegion GUI
;EndRegion GUI
Global $Mem_Name_Array = IniReadSection("Memory.ini","Person_Name")
Global $Mem_Name = _readMem_Array($Mem_Name_Array,0) ;0xB3CAF04
Global $Mem_X = $Mem_Name-0x14 ;0xB3CAEF0
Global $Mem_Y = $Mem_Name-0x12 ;0xB3CAEF2
Global $ListElements[200] ;Contains all the ListView Controll ID's
Func _readMonster_Mem()
for $i=0 to UBound($ListElements)-1
;Reads in 2 Bytes each to form the String from Unicode Text
Local $name = ""
$tempArray = $Mem_Name_Array
$tempArray[3][1] = $tempArray[3][1]+($i*0x4)
$tempMem = _readMem_Array($tempArray,0)
for $j=0 to 32
;~ $_nameMem = _MemoryRead($Mem_Name+($i*$PersonOffset)+($j*0x2),$Mem_Open,"short")
$_nameMem = _MemoryRead($tempMem+($j*0x2),$Mem_Open,"short")
$_nameHex = Hex($_nameMem)
$_nameString = _StringReverse(_HexToString( StringReplace($_nameHex, "00", "") ))
$name = $name & $_nameString
if $_nameMem = 0 Then
ExitLoop
EndIf
Next
;"0x"&Hex($Mem_Name+($i*$PersonOffset));
$x = _MemoryRead($tempMem-0x14,$Mem_Open,"short")
$y = _MemoryRead($tempMem-0x12,$Mem_Open,"short")
$text = $i&"|"&$name&"|"&$x&"|"&$y
if $ListElements[$i] = "" Then
$ListElements[$i] = GUICtrlCreateListViewItem($text,$ListView1)
Else
GUICtrlSetData($ListElements[$i],$text)
EndIf
Next
EndFunc
While true
_readMonster_Mem()
Sleep(100)
WEnd
Memory.ini Extra
Die Memory Addressen entsprechen der GER version.
Code:
;##################
;Reads the Name of all Persons / Monsters in your surrounding area
;The Address represents your own name
;Sub -0x14 from the Person_Name mem to get that Persons X coord
;Sub -0x12 from the Person_Name mem to get that Persons Y coord
;Offset_3 = eax*4+08 eax=1 for your own Name
;##################
[Person_Name]
$Static = 0x01443D20
$Offset_1 = 0x78C
$Offset_2 = 0xC
$Offset_3 = 0x30
$Offset_4 = 0xC8
|
|
|
01/07/2010, 03:20
|
#2
|
elite*gold: 50
Join Date: May 2008
Posts: 2,214
Received Thanks: 1,825
|
Sonst noch jemand Ideen was man damit alles machen könnte ?
|
|
|
01/07/2010, 09:16
|
#3
|
elite*gold: 50
Join Date: May 2008
Posts: 2,214
Received Thanks: 1,825
|
Hab jetzt mal die GUI etwas erweitert.
Es wird nun immer die Distance zwischen dem Spieler und der einzelnen Personen berechnet.
Ist die Distanz kleiner als ein kritischer Wert (mal 5 das schon verdammt nahe) , wird die Zeile rot angezeigt, bei unter 10 zumindest gelb, ansonsten einfach weiß.
Idee ist wie gesagt das man sehen kann was in der Umgebung ist "generell" und dann natürlich für die "kleinigkeiten" mit den Monstern.
|
|
|
01/07/2010, 17:16
|
#4
|
elite*gold: 0
Join Date: Feb 2009
Posts: 24
Received Thanks: 0
|
Could you write please in english?
|
|
|
01/08/2010, 03:52
|
#5
|
elite*gold: 50
Join Date: May 2008
Posts: 2,214
Received Thanks: 1,825
|
Quote:
Originally Posted by neorwind
Could you write please in english?
|
Not allways, just use a Translator of your choice.
Babelfish or something.
|
|
|
01/08/2010, 06:31
|
#6
|
elite*gold: 50
Join Date: May 2008
Posts: 2,214
Received Thanks: 1,825
|
Die Infos bieten sich auch an das man eine Function schreiben kann um Leute für die Stadt zu überreden.
Die heißen ja an sich immer "Herumreisendes Mädchen" usw. muss man nur zu der Positon von denen laufen und dann anklicken, entsprechendes Macro für den Dialog und fertig.
ist ja auch eine Titel Quest.
|
|
|
01/08/2010, 08:29
|
#7
|
elite*gold: 0
Join Date: Feb 2009
Posts: 24
Received Thanks: 0
|
Ok. Then tell me please, how to find this adresses [Person_Name]
Is this Unicode? Or simple text?
|
|
|
01/08/2010, 10:55
|
#8
|
elite*gold: 50
Join Date: May 2008
Posts: 2,214
Received Thanks: 1,825
|
Quote:
Originally Posted by neorwind
Ok. Then tell me please, how to find this adresses [Person_Name]
Is this Unicode? Or simple text?
|
In Atlantica pretty much any Text so far is Unicode.
However, its not that easy to find the Person_Name Memory.
Take a small city as its best just you and 1 other Person (or NPC, at least just 1 in the area), than search that that Name Unicode, change to another location in which its just you and 1 other Person, and "hopefully" your Memory Address changes to that Persons Name.
Its slighty random as the names are not allways put after another in the List.
However i think theirs some easier ways to search them in Cheat Engine.
Type in your "own" Name, lets say "HANS" , search for it as Unicode text.
Than switch the area and during the loading screen search for "NOPERSONNAME". If your name is not long enough, just look which Address changes to as many characters of that as possible and take it.
Instead of "NOPERSONNAME" it can be just an empty String aswell, however, finding out that last step is easy.
From that point search the Pointer like normal.
|
|
|
01/08/2010, 11:02
|
#9
|
elite*gold: 50
Join Date: May 2008
Posts: 2,214
Received Thanks: 1,825
|
UPDATE v0.N5 contains latest ReadPersonData Addon
|
|
|
01/08/2010, 17:08
|
#10
|
elite*gold: 0
Join Date: Feb 2009
Posts: 24
Received Thanks: 0
|
Lol a little bit hard to search everything xD
|
|
|
01/09/2010, 07:53
|
#11
|
elite*gold: 50
Join Date: May 2008
Posts: 2,214
Received Thanks: 1,825
|
Quote:
Originally Posted by neorwind
Lol a little bit hard to search everything xD
|
Just a matter of understanding and training.
If you know what you do, its fast and easy.
The first step to find a Memory is to understand what you actual search and how it "hopefully" behaves in the end.
Absolute worth to spend some time for it, understanding what you use is allways better than just using it (and scream if something doesnt work ^^).
|
|
|
01/09/2010, 09:19
|
#12
|
elite*gold: 0
Join Date: Feb 2009
Posts: 24
Received Thanks: 0
|
Is it possible to find pointers for will's string?
|
|
|
01/09/2010, 13:34
|
#13
|
elite*gold: 50
Join Date: May 2008
Posts: 2,214
Received Thanks: 1,825
|
Quote:
Originally Posted by neorwind
Is it possible to find pointers for will's string?
|
Take a look in the Memory.ini , everything with Offsets is a Pointer (pretty much anything).
They are all explained that you can search them in Cheat Engine.
|
|
|
01/09/2010, 22:42
|
#14
|
elite*gold: 0
Join Date: Feb 2009
Posts: 24
Received Thanks: 0
|
;~~~~~~~~~
;value contains "Will : ***%" visible left of the Map.
;the Bot will just use the *** value without the surrounding text.
;make sure that the Address is the one that start with "Will : ***%" not just the Will value.
;~~~~~~~~~
[Will]
$Static = 0x01443D20
$Offset_1 = 0x135B4
$Offset_2 = 0xD8
$Offset_3 = 0x280
$Offset_4 = 0x4
$Offset_5 = 0x2E4
Everytime i run the game i find different adress. How to find a static one?
Moreover how to find offset
|
|
|
 |
Similar Threads
|
[VB]Write Memory bzw Read Memory
06/26/2010 - .NET Languages - 8 Replies
Hi
Ich hab das TuT von *Guidman* benütz um einen hack zu machen.
So aber nun hab ihc ein paar fragen könnte man memory teil kürzer machen und am besten wie kann man das selber machen weil ich will nihct immer C&P machen.
Und zu Read Memory kann man das auch machen das ein Label immer die Bestimmte Ahnzahl angiebt von dem Pointer?.(Wenn das Read Memory ist ?)
Bitte helf mir
Danke
|
Memory read and add value
06/20/2010 - AutoIt - 4 Replies
Im trying to read values with HexCode but i have no ide to do this. i want the porgress bar and the labels to show the curent value of the Adresses
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <NomadMemory.au3>
|
Memory Read
06/18/2010 - AutoIt - 8 Replies
Hey E*PvP,
ich hab ein Problem...
Ich denke das die memory richtig ist , aber er gibt mir immer nur 0 aus....
Egal ob ich 0, 1, 1000 oder 9million punkte hab ...
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <nomadmemory.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Sol loger", 201, 64, 324, 280)
|
Memory Read u.ä.
02/16/2010 - Metin2 - 2 Replies
Moin,
ich wollte fragen ob es für Metin2 auch eine UDF für autoit (mit memory read) gibt. Also mir geht es eigentlich nur darum, dass ich einen Bot im HIntergrund laufen lassen kann und es möglich ist zu überprüfen wo der nächste gegner ist, diesen anzuklicken und wie viel hp/mp etc man noch hat.
-->Suche etwas "exateres" als z.B. PixelSearch/MousClick und etwas womit ich den Bot im Hintergrund laufen lassen kann.
Könnte mir jemand dazu ein Beispiel Script (bezogen auf Metin2) oder...
|
Read memory
06/27/2008 - Diablo 2 - 7 Replies
Hallo, will mit readprocessmemory nen externes programm machen was mir energie usw protokoliert. Das problem ist nur, das D2 die adressen bei jedem neuen spiel immer verändert. Wie kann ich das umgehen? Brauch ich glaube nen pointer auf die richtige adresse, aber wie? Hat da jemand ahnung???
|
All times are GMT +1. The time now is 05:20.
|
|