Help understanding the object manager, and getting information on a target menu

Shout-Out

User Tag List

Results 1 to 10 of 10
  1. #1
    jpbanon's Avatar Private
    Reputation
    1
    Join Date
    Feb 2010
    Posts
    6
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Help understanding the object manager, and getting information on a target

    Hey guys! I'm still kind of new here, and I'm learning pretty quick, but there is still alot I don't quite understand yet.

    I know how to access memory etc, and I'm successfully getting my player's health, mana, and xyz based on the static player base.

    Right now I'm trying to learn how to get information on targets, and this seems alot more complicated.

    My impression is that a target NPC is an object, of which there are a few types, such as items, NPCs, Players, corpses etc. It seems that these are stored as structs containing many variables and different data types.

    What I don't quite understand is how I use a GUID, and how these relate to an 'objectmanager' which sounds like a linked list of all of the objects and has pointers to the various objects.


    This is the code I have for my object structs:
    Code:
    Func _wowObject() ; misc
    	Return DllStructCreate( _
    			"uint staticClientConnection;" 	& _
    			"uint DataPTR;"				& _ 
    			"uint64 GUID;" 				& _
    			"uint FirstObject;" 			& _
    			"uint NextObject;") 
    EndFunc   ;==>_wowObject
    
    Func _wowUnitObject() ;
    	Return DllStructCreate( _
    			"uint64 GUID;" 				& _
    			"ptr NextObject;"				& _
    			"dword ObjectType;" 			& _
    			"float x;" 					& _
    			"float y;" 					& _
    			"float z;" 					& _
    			"float rot;" 					& _
    			"uint64 DescriptorFieldsOffset;")
    EndFunc   ;==>_wowUnitObject
    
    Func _wowObjectData()
    	return DllStructCreate ( 								_
    		"uint64 charm;"								&	_
    		"uint64 summon;"								&	_
    		"uint64 critter;"								&	_
    		"uint64 charmedBy;"							&	_
    		"uint64 summonedBy;"							&	_
    		"uint64 createdBy;"							&	_
    		"uint64 target;"								&	_
    		"uint64 channelObject;"							&	_
    		"char bytes0[4];"								&	_
    		"uint health;"								&	_
    		"uint power1;"								&	_
    		"uint power2;"								&	_
    		"uint power3;"								&	_
    		"uint power4;"								&	_
    		"uint power5;"								&	_
    		"uint power6;"								&	_
    		"uint power7;"								&	_
    		"uint maxHealth;"								&	_
    		"uint maxPower1;"							&	_
    		"uint maxPower2;"							&	_
    		"uint maxPower3;"							&	_
    		"uint maxPower4;"							&	_
    		"uint maxPower5;"							&	_
    		"uint maxPower6;"							&	_
    		"uint maxPower7;"							&	_
    		"float powerRegenFlatModifier[7];"					&	_
    		"float powerRegenInterruptedFlatModifier[7];"			&	_
    		"uint level;"									&	_
    		"uint factionTemplate;"							&	_
    		"uint virtualItemSlotDisplay[3];"					&	_
    		"uint flags;"									&	_
    		"uint flags2;"								&	_
    		"uint auraState;"								&	_
    		"uint baseAttackTime[2];"						&	_
    		"uint rangedAttackTime;"						&	_
    		"float boundingRadius;"							&	_
    		"float combatReach;"							&	_
    		"uint displayID;"								&	_
    		"uint nativeDisplayID;"							&	_
    		"uint mountDisplayID;"							&	_
    		"float minDamage;"							&	_
    		"float maxDamage;"							&	_
    		"float minOffhandDamage;"						&	_
    		"float maxOffhandDamage;"						&	_
    		"char bytes1[4];"								&	_
    		"uint petNumber;"								&	_
    		"uint petNameTimestamp;"						&	_
    		"uint petExperience;"							&	_
    		"uint petNextLevelExp;"							&	_
    		"uint dynamicFlags;"							&	_
    		"uint channelSpell;"							&	_
    		"float modCastSpeed;"							&	_
    		"uint createdBySpell;"							&	_
    		"uint npcFlags;"								&	_
    		"uint npcEmoteState;"							&	_
    		"uint Stat0;"								&	_
    		"uint Stat1;"								&	_
    		"uint Stat2;"								&	_
    		"uint Stat3;"								&	_
    		"uint Stat4;"								&	_
    		"uint PosStat0;"								&	_
    		"uint PosStat1;"								&	_
    		"uint PosStat2;"								&	_
    		"uint PosStat3;"								&	_
    		"uint PosStat4;"								&	_
    		"uint NegStat0;"								&	_
    		"uint NegStat1;"								&	_
    		"uint NegStat2;"								&	_
    		"uint NegStat3;"								&	_
    		"uint NegStat4;"								&	_
    		"uint resistances[7];"							&	_
    		"uint resistanceBuffModsPositive[7];"				&	_
    		"uint resistanceBuffModsNegative[7];"				&	_
    		"uint baseMana;"								&	_
    		"uint baseHealth;"								&	_
    		"char bytes2[4];"								&	_
    		"uint attackPower;"							&	_
    		"int attackPowerMods;"							&	_
    		"float attackPowerMultiplier;"						&	_
    		"uint rangedAttackPower;"						&	_
    		"int rangedAttackPowerMods;"					&	_
    		"float rangedAttackPowerMultiplier;"					&	_
    		"float minRangedDamage;"						&	_
    		"float maxRangedDamage;"						&	_
    		"uint powerCostModifer[7];"						&	_
    		"float powerCostMultiplier[7];"						&	_
    		"float maxHealthModifier;"						&	_
    		"float HoverHeight;"							&	_
    		"uint padding;" )
    EndFunc
    * Please forgive some of the random spacing, the code didn't copy well.

    I understand that these are outdated, and I am confident I can update the information in _wowObjectData to the correct information using the information at wow-3-3-2-info-dump-thread.

    I cannot find anything that is equivalent to either _wowObject or _wowUnitObject. Can anyone provide some insight into this? My guess is that _wowObject is related to
    Code:
    public enum ObjectManager
            {
    
                CurMgrPointer = 0x00C93410,          // 3.3.2
                CurMgrOffset = 0x2E04,               // 3.3.2
                localGuidOffset = 0xC0,              // 3.3.2
                firstObjectOffset = 0xAC,            // 3.3.2
                nextObjectOffset = 0x3C,             // 3.3.2
    
            }
    from the same thread, but I am not sure. I also don't know how to translate those offsets into datatypes if in fact it is the same.


    Here is a selection of my code for traversing the object manager:
    Code:
    Func _getObjectOffset($objectCondition)
    
    	_ReadProcess($wowProcessHwnd, $baseObjectPTR + 0x2E04, $buffer_ptr)
    
    	$currentObject = DllStructGetData($buffer_ptr, 1)
    	$wowObject = _wowObject()
    
    	$wowObjectData = _wowObjectData()
    
    	$guid = 0
    	$next = 0
    
    	While ($currentObject <> 0 And Mod(Number($currentObject), 2) == 0)
    
    		_ReadProcess($wowProcessHwnd, $currentObject, $wowObject)
    
    		$guid = DllStructGetData($wowObject, 'GUID')
    		$next = DllStructGetData($wowObject, 'NextObject')
    		$data = DllStructGetData($wowObject, 'DataPTR')
    
    		Switch ($objectCondition)
    			Case $C_PLAYER
    				If ($guid == $playerID) Then
    					_ReadProcess($wowProcessHwnd, $currentObject, $player)
    					_ReadProcess($wowProcessHwnd, $data, $playerData)
    					Return $currentObject
    				EndIf
    		EndSwitch
    
    		$currentObject = $next
    
    	WEnd
    EndFunc   ;==>_getObjectOffset
    Your help and patience are greatly appreciated.
    Last edited by jpbanon; 03-02-2010 at 11:31 PM.

    Help understanding the object manager, and getting information on a target
  2. #2
    -Ryuk-'s Avatar Elite User CoreCoins Purchaser Authenticator enabled
    Reputation
    529
    Join Date
    Nov 2009
    Posts
    1,028
    Thanks G/R
    38/51
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Hello, First welcome to MMOwned! ^^

    I'm going to try and help you, but first i'm going to warn you... You won't of seen Apoc's "Enough is Enough" thread because you are new, but I suggest you go read it.

    Now on to(hopefully) helping you.

    NPC and Players ect, are stored in the Object Manager as uint.
    A GUID is a unique ID for that realm. Everything that's stored in the Object Manager has a GUID, and can be used to find their name, health, mana, xyz locations ect. To get this info you need to look at the descriptors for this patch(although they don't change much )


    So for example GUID + Name1 + Name2 = Objects/uints name

    Hope I helped

  3. #3
    jpbanon's Avatar Private
    Reputation
    1
    Join Date
    Feb 2010
    Posts
    6
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    XAutomation, thank you for your reply!

    I have done a search for the "Enough is Enough" thread. I also looked at Apoc's last 100 posts, could it be old enough that it went away?

    Regarding my question:

    So, at the moment I have a target. The uint I get from 0x00B695C8 is -1067353103885382925 which in hex is 0xF1300001D1004AF3.

    So that would be the GUID. So when you say Name1 and Name2, what would those be? Are those the descriptor offsets?

    Do you mean something like this?
    0xF1300001D1004AF3 + 0x17 // 3.3.2 UNIT_FIELD_HEALTH = 0x17

    I can't get that to return the health of my target.

    I apologize for my lack of understanding.

  4. #4
    Apoc's Avatar Angry Penguin
    Reputation
    1388
    Join Date
    Jan 2008
    Posts
    2,750
    Thanks G/R
    0/13
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    A uint is a 32 bit field. Not a 64 bit. You're reading a 64 bit field. Fix yo' shit!

  5. #5
    Mr.Zunz's Avatar Contributor
    Reputation
    92
    Join Date
    Mar 2007
    Posts
    393
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    You should read GUID as an Ulong, most of the rest can be done by UInt


  6. #6
    boredevil's Avatar Active Member
    Reputation
    46
    Join Date
    Feb 2008
    Posts
    166
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I would suggest, reading this post.

    http://www.mmowned.com/forums/wow-me...e-objects.html

    That´s what gave me a pretty good start at pulling object data from wow.

  7. #7
    XTZGZoReX's Avatar Active Member
    Reputation
    32
    Join Date
    Apr 2008
    Posts
    173
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    A GUID is a unique ID for that realm.
    Incorrect. GUIDs are shared, at the very least, across battlegroups.

  8. #8
    MaiN's Avatar Elite User
    Reputation
    335
    Join Date
    Sep 2006
    Posts
    1,047
    Thanks G/R
    0/10
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by XTZGZoReX View Post
    Incorrect. GUIDs are shared, at the very least, across battlegroups.
    Incorrect. GUID's are unique on a per-server basis.

    Originally Posted by wowwiki
    Uniqueness is guaranteed in cross-realm battlegrounds by masking the player GUID with a server specific unique identifier, when needed.
    API UnitGUID - WoWWiki - Your guide to the World of Warcraft
    [16:15:41] Cypher: caus the CPU is a dick
    [16:16:07] kynox: CPU is mad
    [16:16:15] Cypher: CPU is all like
    [16:16:16] Cypher: whatever, i do what i want

  9. #9
    Apoc's Avatar Angry Penguin
    Reputation
    1388
    Join Date
    Jan 2008
    Posts
    2,750
    Thanks G/R
    0/13
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Le sigh.

    GUIDs are unique on a per-server basis, excluding player GUIDs. Of which are unique at a per-battlegroup level. (Quite possibly unique across all server 'types'. [US, Oceanic, EU, etc])

    Player GUIDs need the 'extra' uniqueness to allow cross-server BGs/Arenas and the like.

  10. #10
    XTZGZoReX's Avatar Active Member
    Reputation
    32
    Join Date
    Apr 2008
    Posts
    173
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Yeah, let me correct myself: Player GUIDs are unique on a per-battlegroup basis. All other GUIDs on a per-map basis, as far as my research shows.

Similar Threads

  1. [help] Getting a firm grip on the object manager...
    By yeahlol in forum WoW Bots Questions & Requests
    Replies: 3
    Last Post: 11-23-2010, 03:44 AM
  2. 帮助: [[ Help]]on the model modification and model mapping
    By ZWTA in forum WoW ME Questions and Requests
    Replies: 3
    Last Post: 05-25-2009, 05:34 AM
  3. Equip 4 of the same item and get stats for all
    By Stinja1 in forum WoW EMU Guides & Tutorials
    Replies: 12
    Last Post: 10-24-2007, 07:40 PM
All times are GMT -5. The time now is 05:02 PM. Powered by vBulletin® Version 4.2.3
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Google Authenticator verification provided by Two-Factor Authentication (Free) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search