|
You last visited: Today at 22:24
Advertisement
[Hilfe]Unit / Objectnamen auslesen
Discussion on [Hilfe]Unit / Objectnamen auslesen within the WoW Bots forum part of the World of Warcraft category.
10/19/2009, 22:33
|
#1
|
elite*gold: 0
Join Date: Apr 2007
Posts: 56
Received Thanks: 3
|
[Hilfe]Unit / Objectnamen auslesen
Abend:P
Ich bin hier gerade dabei mir zum lernen nen kleinen Bot zu schreiben was auch bisher wunderbar funktioniert...
Nur stolper ich gerade darüber die GameObject / bzw Playernamen von den jeweiligen objectadressen auszulesen :
die objekte lese ich aus mit:
Code:
void GetObjects(HANDLE hProcess,vector<DWORD>& vobjects)
{
wowstruct wow;
int i=0;
DWORD gclientconnection,curobj, scurmgr, nextobj, pbase, cguid;
gclientconnection = MemoryReadInt(hProcess,wow.ptr.clientConnection,true,"(gClientCOnnection)");
scurmgr = MemoryReadInt(hProcess,gclientconnection + wow.offsets.objectManagerOffset,true,"(scurmgr)");
curobj = MemoryReadInt(hProcess,scurmgr + wow.offsets.ObjManagerFirstObject,true,"");
nextobj = curobj;
vobjects.push_back(curobj);
while((curobj != 0) && (curobj & 1) == 0)
{
++i;
nextobj = MemoryReadInt(hProcess,curobj + wow.offsets.ObjectNextOffset,true,"");
cguid = MemoryReadInt(hProcess,(curobj + wow.offsets.ObjectGUIDOffset),true,"");
if (nextobj == curobj){
break;
} else {
vobjects.push_back(curobj);
curobj = nextobj;
}
}//whileend
}
Die listbox fülle ich mit:
Code:
case 4: //Players
index = m_pModeless->m_DebugLogBox.InsertItem(i,ToString(i).c_str());
stor.Format("0x%X",vobjects[i]);
m_pModeless->m_DebugLogBox.SetItemText(index,1,stor);
m_pModeless->m_DebugLogBox.SetItemText(index,2,ToString(guid).c_str());
m_pModeless->m_DebugLogBox.SetItemText(index,3,"Player");
stor.Format("%10s",MemoryReadString(Handle,(vobjects[i] + 0x95C)+0x5C,""));
m_pModeless->m_DebugLogBox.SetItemText(index,4,stor);
Code:
case 5: //GameObjects
index = m_pModeless->m_DebugLogBox.InsertItem(i,ToString(i).c_str());
stor.Format("0x%X",vobjects[i]);
m_pModeless->m_DebugLogBox.SetItemText(index,1,stor);
m_pModeless->m_DebugLogBox.SetItemText(index,2,ToString(guid).c_str());
m_pModeless->m_DebugLogBox.SetItemText(index,3,"GO");
storage = MemoryReadInt(Handle,vobjects[i] + 0x1A4,0,"");
stor.Format("%10s",MemoryReadString(Handle,storage+0x90,""));
m_pModeless->m_DebugLogBox.SetItemText(index,4,stor);
(loop mit for schleife und case nach jeweiligen objecttyp) storage=dword / stor=cstring
bei player habe ich (vobjects[i] + 0x95C)+0x5C versucht
und bei GO's einzeln
Ich bin mir sicher das die offsets soweit stimmen allerdings komme ich einfach nicht darauf wie ich sie auslese...
Hoffe jemand kann helfen :x
|
|
|
10/20/2009, 03:42
|
#2
|
elite*gold: 0
Join Date: Aug 2009
Posts: 308
Received Thanks: 184
|
#in Engine kram#
Code:
/// <summary>
/// Reads the name of the unit
/// </summary>
/// <param name="curObject">The ObjectID optained from the objectmanager</param>
/// <returns>Returns the name of the unit as ASCII string.</returns>
public string getName(uint curObject)
{
bm.OpenProcessAndThread(pid);
try
{
return bm.ReadASCIIString(bm.ReadUInt((bm.ReadUInt((curObject + (uint)offsets.UNIT_NAMEOFFSET_1)) + (uint)offsets.UNIT_NAMEOFFSET_2)), 50);
}
catch
{
try
{
return bm.ReadASCIIString(bm.ReadUInt((bm.ReadUInt((curObject + (uint)offsets.GAMEOBJECT_NAMEOFFSET_1)) + (uint)offsets.GAMEOBJECT_NAMEOFFSET_2)), 50);
}
catch
{
return "error";
}
}
}
und die offsets dazu:
Code:
UNIT_NAMEOFFSET_1 = 0x968,
UNIT_NAMEOFFSET_2 = 0x5C,
GAMEOBJECT_NAMEOFFSET_1 = 0x1A4,
GAMEOBJECT_NAMEOFFSET_2 = 0x90,
ich hoffe das hilft dir
|
|
|
10/20/2009, 21:33
|
#3
|
elite*gold: 0
Join Date: Apr 2007
Posts: 56
Received Thanks: 3
|
SO macht das ganze sinn danke dir ! :P
Hast du vllt. auch eine Ahnung wie ich die playernamen auslese?
NPC's/GO's/funktionieren wunderbar
|
|
|
10/20/2009, 21:36
|
#4
|
elite*gold: 0
Join Date: Aug 2009
Posts: 308
Received Thanks: 184
|
ja da gibts eine eigene adresse *such*
bm.ReadASCIIString(0x012705E8,30)
|
|
|
10/20/2009, 21:39
|
#5
|
elite*gold: 0
Join Date: Apr 2007
Posts: 56
Received Thanks: 3
|
Die Static is klar ^^
Ich meinte das auslesen von den Namen anderer Player.
danke trozdem für die mühe:P
|
|
|
10/21/2009, 14:55
|
#6
|
elite*gold: 0
Join Date: Apr 2007
Posts: 56
Received Thanks: 3
|
Status update
Ich bekomm die Playernamen einfach nich hin :<
|
|
|
10/21/2009, 17:25
|
#7
|
elite*gold: 0
Join Date: Apr 2007
Posts: 943
Received Thanks: 132
|
Playernamen sind in so ner Art DB gespeichert.
afaik(lang ists her ;D) musste die durchgehen und dann per GUID Vergleich den richtigen Namen finden.
Mom ich such mal den Code.
EDIT für faule( ist aber "in-process"): Du könntest auch einfach die entsprechende VMT callen
-> musst bei WoW Updates nur eventuell den Index ändern : D
-> nur eine Methode für alle ObjektArten(NPCs,Units,GOs,etc)
EDIT2 sagt:
Nö hab den Code nimmer!(hab nur noch den vmt call code ;P)
MMO sagt aber ,dass es so funktioniert(mit alten 3.0.3 Offsets)
Code:
void NameFromGuid(LONGLONG guid, int numBytes, char *name)
{
static const unsigned long nameStorePtr = 0x011AE3D0 + 0x8; // Player name database
static const unsigned long nameMaskOffset = 0x024; // Offset for the mask used with GUID to select a linked list
static const unsigned long nameBaseOffset = 0x01c; // Offset for the start of the name linked list
static const unsigned long nameStringOffset = 0x020; // Offset to the C string in a name structure
unsigned long mask, base, offset, current, shortGUID, testGUID;
mask = ReadDword(nameStorePtr + nameMaskOffset);
base = ReadDword(nameStorePtr + nameBaseOffset);
shortGUID = guid & 0xffffffff; // Only half the guid is used to check for a hit
offset = 12 * (mask & shortGUID); // select the appropriate linked list
current = ReadDword(base + offset + 8);
offset = ReadDword(base + offset); // next-4 ?
if (current == 0 || (current & 0x1)) {*name = 0; return;}
testGUID = ReadDword(current);
while (testGUID != shortGUID)
{
current = ReadDword(current + offset + 4);
if (current == 0 || (current & 0x1)) {*name = 0; return;}
testGUID = ReadDword(current);
}
// Found the guid in the name list...
ReadBytesIntoBuffer(current + nameStringOffset, numBytes, name);
}
|
|
|
10/21/2009, 22:41
|
#8
|
elite*gold: 0
Join Date: Apr 2007
Posts: 56
Received Thanks: 3
|
Großer dank an dich ! Nun mal schaun wie ich an die aktuellen offsets komme...
|
|
|
10/22/2009, 17:51
|
#9
|
elite*gold: 0
Join Date: Apr 2007
Posts: 943
Received Thanks: 132
|
Lad mal die aktuellste WoW.exe hoch.
Ich schau se mir in Olly/IDA dann mal an : D
|
|
|
10/22/2009, 18:29
|
#10
|
elite*gold: 0
Join Date: Apr 2007
Posts: 56
Received Thanks: 3
|
Hier :P falls du icq/msn/whatever hast und lust hast mir mal zu sagen wie du das machst ...ich hör dir gern zu :P
is doch stress immer wieder nachzufragen :<
|
|
|
10/22/2009, 20:47
|
#11
|
elite*gold: 0
Join Date: Apr 2007
Posts: 943
Received Thanks: 132
|
So weit ich das erkennen kann :
nameStorePtr = 0x12542D8 + 0x8
Die restlichen Offsets sollten sich nicht verändert haben.
Meine ICQ : FUUUUUUUUUUUUUUUUUUUUUUUU ->
(lololol russische Links inc ;D )
EDIT: russische Links sind angekommen ,_,
|
|
|
|
Similar Threads
|
Hallo Jungs brauche HILFE [DAME] freeBSD Putty SYSTEMINFORMATION auslesen.
07/31/2010 - Metin2 Private Server - 6 Replies
Hallo Jungs da ich mir jetzt einen Dedicated Server zugelegt hab möchte ich mich etwas mehr mit FreeBSD vertiefen.
Hab erstmal Ubuntu gelöscht und FreeBSD installiert.
Jetzt ist mir wichtig mit welchem befehl kann ich uber Putty auslesen ob meine 12 GB Arbeitsspeicher erkennt werden oder nur 3.7 GB erkannt wurden.
Benutze Putty und FreeBSD 7.2
Am system wurden noch keine Updates vorgenommen. mir gehts darum ob ich PAE installieren muss oder ob das System schon 12 GBArbeitsspeicher...
|
Brauche hilfe Php auslesen
04/26/2010 - Web Development - 7 Replies
Also ich will eine .php ganz auslesen nicht nur wenn man rechtsklick macht dann kommt da fast nix... ich habe schon mehrere methoden ausprobiert mit vb08 geht nicht autoit auch nicht mit eine php code <?php
show_source("http://blablabla.bla/blabla.php ")
?>
ich verzweifle langsam ich will den ganzen quelltext von dieser datei aber leider kann ich nicht in das ftp verzeichniss-.- bitte helft mir (=
|
Unit bar
08/05/2005 - World of Warcraft - 14 Replies
1. zeigt es bei target an welchen ziel der char im mom hat
2. hat der mod ne raid anzeige z.B. für priester praktisch zum heilen
3. zeigt es den rang an vom ausgewählten ziel
4. ist klein aber gut lesbar
5. und mann hat viele weitere einstellungs möglichkeiten
Klick
also HF :bandit:
EDIT: hier sind auch die befehle dabei Klick Two
|
All times are GMT +2. The time now is 22:24.
|
|