Need some help on my own GatherBot [AutoIt] menu

User Tag List

Results 1 to 11 of 11
  1. #1
    Blondy's Avatar Private
    Reputation
    1
    Join Date
    Feb 2011
    Posts
    8
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Need some help on my own GatherBot [AutoIt]

    Hi I'm trying to wirte my own GatherBot for World of Warcraft. Coding the GUI was easy but now I try to get the important values of the Game like Player Hp, Mana etc.

    I got stuck getting the String values out of the Memory e.g. player's name, target's name and of couse I need the Object's name to varify wether its a Herb or Mine.

    I'm using the NomadMemory.au3 for
    _MemoryRead($iv_Address, $ah_Handle[, $sv_Type])

    It would be great if someone can post the Offsets/Descriptors I need and explain how the Function would look like

    Here is my _GetHp Func:

    Code:
    Func _GetHP($fGUID)
    	$fDescriptor = _MemoryRead("0x" & Hex(GetMemLocByGUID($fGUID) + $DescriptorOffset), $hWow , "dword")
    	Return _MemoryRead("0x" & Hex($fDescriptor + $PlayerHealthOffset), $hWow ,"dword")
    EndFunc
    I found nothing that helped me here on MMOwned especially for 4.0.6
    (I'm new to AutoIt and WoW Memory so please don't flame >.<)

    Need some help on my own GatherBot [AutoIt]
  2. #2
    Bananenbrot's Avatar Contributor
    Reputation
    153
    Join Date
    Nov 2009
    Posts
    384
    Thanks G/R
    1/3
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

  3. #3
    Blondy's Avatar Private
    Reputation
    1
    Join Date
    Feb 2011
    Posts
    8
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Thanks für your quick reply, but I already read all of these threads. I'm sorry that I havn't told yet

    Getting Player, Target and Objects names is someting that isn't written there. I know that there are basic structures to get names but to be honest I found different approaches that confused me a bit.

  4. #4
    galpha's Avatar Member
    Reputation
    5
    Join Date
    Nov 2007
    Posts
    48
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Blondy View Post
    Thanks für your quick reply, but I already read all of these threads. I'm sorry that I havn't told yet

    Getting Player, Target and Objects names is someting that isn't written there. I know that there are basic structures to get names but to be honest I found different approaches that confused me a bit.
    It's all in the stickied dump thread. Second post, written by JabbaTheCunt:

    Code:
    public struct LocalPlayer {
       public const uint ZONE_NAME_POINTER = 0x99C690;
       public const uint SUBZONE_NAME_POINTER = 0x99C68C;
       public const uint COMBOPOINTS = 0x99C759;
       public const uint COOLDOWN_BASE = 0x99B96C;
       public const uint GAMESTATE = 0x99C69A;
       public const uint ACTIONBAR_BASE = 0xA0AA80;
       public const uint MOUSE_OVER_GUID = 0x99C6A8; //0x92FDD8;
       public const uint TARGET_GUID = 0x99C6B8;
       public const uint LAST_TARGET_GUID = TARGET_GUID + 0x8;
       public const uint RUNETYPE = 0x9FB074;
       public const uint RUNESTATE = 0x9FB0D8;
       public const uint SPELLBOOK_POINTER = 0x9F8E78;
       public const uint SPELLBOOK_COUNT = SPELLBOOK_POINTER - 0x4;
    }
    TARGET_GUID = 0x99C6B8

    There you have your target. Traverse the list of WoW objects and find the object where GUID == TARGET_GUID. You will have to look around in posts, because EVERYTHING has been posted at least once.

  5. #5
    _Mike's Avatar Contributor
    Reputation
    310
    Join Date
    Apr 2008
    Posts
    531
    Thanks G/R
    0/2
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Blondy View Post
    Getting Player, Target and Objects names is someting that isn't written there. I know that there are basic structures to get names but to be honest I found different approaches that confused me a bit.
    You can't go playing the "there's no info" card just because you can't find any copy-paste ready code.
    For example, from the 1st post in the info thread you claim to have read
    Code:
    600040    GetObjectNameFromGuid
    I suggest you learn some basic understanding of reverse engineering before you come back here again.
    Expectations (If you do not meet these do not post);
    Intermediate to expert knowledge of the language you choose to code in. (Common languages in this section are C++ and C#)
    You are expected to understand basic C++ datatypes, and other ideologies that come with C++, and native Win32 programming. (Pointers, the stack, etc)
    You should understand how to use common reverse engineering tools, such as IDA, OllyDbg, etc.
    If given addresses, or an ASM dump, you are expected to understand how to use that information. (Minor questions are allowed.)
    There are several forums around where people don't mind giving detailed explanations to every poster who keeps asking the same questions all the time.
    This isn't one of those.

  6. #6
    Blondy's Avatar Private
    Reputation
    1
    Join Date
    Feb 2011
    Posts
    8
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    ok I understand how memoryreading works, know know things about pointers, offsets, descriptors...

    My problem is not the coding, its the storage of names just for World of Warcraft
    I also tried getting the location with Cheat Engine but i guess thats not possible anymore since 4.0.x

    Here is what I have until know:

    Code:
    Func _GetUnitName($fGUID)
    	$mask=_MemoryRead(0x008BF1E0 + 0x8+0x024, $hwow)
    	$base=_MemoryRead(0x008BF1E0 + 0x8+0x01c, $hwow)
    
    	$shortGUID = BitAnd($fGUID, 0xffffffff)		
    	if ($mask=0xffffffff) Then
    		return ""
    	EndIf
    
    	$offset = 12 * BitAnd($mask, $shortGUID)	
    	$current = _MemoryRead($base+$offset+8, $hwow)			
    	$offset = _MemoryRead($base+$offset, $hwow) 		<--- this what i don't understand, why is the offset modified again?		
    
    	if (BitAND($current, 0x1) = 0x1) Then
    		return ""
    	EndIf
    
    	$testGUID= _MemoryRead($current, $hwow)
    
    	while ($testGUID <> $shortGUID)
    		$current=_MemoryRead($current+$offset+4, $hwow)
    		if (BitAND($current, 0x1) = 0x1) Then
    			return ""
    		EndIf
    		$testGUID=_MemoryRead($current, $hwow)
    	WEnd
    	return _MemoryRead($current+0x020, $hwow, "char[20]")
    EndFunc
    This code is not working but I can't figure wether it is due to the old offsets or to the function itself.
    Also my question is why this function is so diffrent to the one for getting Unit_Health or Unit_Power.

    And btw in the linked threads is a lot of info, I would suggest to read them to every one who is new

  7. #7
    gononono64's Avatar Contributor
    Reputation
    100
    Join Date
    Jul 2009
    Posts
    85
    Thanks G/R
    1/5
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    2 things are you doing wrong.
    -First: Your address -0x008BF1E0- is not the correct address. The correct address is -0x89ACC0- (in the dump file it is called "PlayerNameCachePointer")
    The address you are using is the one to simply get the local players name and is used as such:
    Code:
    $rawr = _MemoryRead($WowBase + 0x8BF1E0, $wow,"char[20]")
    -The second thing you are doing wrong: You are forgetting to add the base address of wow to your address, like this:
    Code:
            $mask=_MemoryRead($WowBase +0x89ACC0 + 0x8+0x024, $hwow)
    	$base=_MemoryRead($WowBase +0x89ACC0 + 0x8+0x01c, $hwow)
    Here is a nice little copy paste for you, because i know thats all you want. If you actually searched in the dump thread you would have figured this out in a matter of seconds ( all this name stuff is neatly tucked together):

    *NOTE* I changed $hwow to $wow

    Code:
    Func _GetUnitName($fGUID)
    
    	$mask=_MemoryRead($WowBase + 0x89ACC0 + 0x8 +0x024, $wow)
    	$base=_MemoryRead($WowBase + 0x89ACC0 + 0x8 +0x01c, $wow)
    
    	$shortGUID = BitAnd($fGUID, 0xffffffff)
    	if ($mask=0xffffffff) Then
    		return ""
    	EndIf
    
    	$offset = 12 * BitAnd($mask, $shortGUID)
    	$current = _MemoryRead($base+$offset+8, $wow)
    	$offset = _MemoryRead($base+$offset, $wow) 		;<--- this what i don't understand, why is the offset modified again?
    
    	if (BitAND($current, 0x1) = 0x1) Then
    
    		return ""
    	EndIf
    
    	$testGUID= _MemoryRead($current, $wow)
    
    	while ($testGUID <> $shortGUID)
    
    		$current=_MemoryRead($current+$offset+4, $wow)
    		if (BitAND($current, 0x1) = 0x1) Then
    			return ""
    		EndIf
    		$testGUID=_MemoryRead($current, $wow)
    	WEnd
    	return _MemoryRead($current + 0x020, $wow, "char[20]")
    EndFunc
    Hi! My name is Devon and I’m an alcoholic. Moving on…
    https://www.ownedcore.com/forums/world-of-warcraft/world-of-warcraft-bots-programs/wow-memory-editing/319172-guide-how-make-wow-bot-complete-newbs.html

  8. #8
    Blondy's Avatar Private
    Reputation
    1
    Join Date
    Feb 2011
    Posts
    8
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Thanks a lot not for the code but for showing me my mistakes

    This is not working for Objects or NPC's, but before I ask I try to find the clue by myself... let me see
    in the Dump I found:

    Code:
                ObjectName1 = 0x1CC,
                ObjectName2 = 0xB4,
                UnitName1 = 0xA24,
                UnitName2 = 0x60,
    My star would be like:
    Code:
    Func _GetUnitName($fGUID)
    	Return = _MemoryRead(GetMemLocByGUID($fGUID) + $UnitName1, $hwow, "char[20]")
    EndFunc
    Ok stop laughing pls >.<
    Give me a hint and code with me not for me Just tell how many times do I have to call _MemoryRead()?
    Last edited by Blondy; 02-28-2011 at 08:03 AM.

  9. #9
    Syltex's Avatar Sergeant Major
    Reputation
    23
    Join Date
    Jul 2010
    Posts
    174
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Blondy View Post
    Thanks a lot not for the code but for showing me my mistakes

    This is not working for Objects or NPC's, but before I ask I try to find the clue by myself... let me see
    in the Dump I found:

    Code:
                ObjectName1 = 0x1CC,
                ObjectName2 = 0xB4,
                UnitName1 = 0xA24,
                UnitName2 = 0x60,
    My star would be like:
    Code:
    Func _GetUnitName($fGUID)
    	Return = _MemoryRead(GetMemLocByGUID($fGUID) + $UnitName1, $hwow, "char[20]")
    EndFunc
    Ok stop laughing pls >.<
    Give me a hint and code with me not for me Just tell how many times do I have to call _MemoryRead()?
    I posted howto in the thread but anyway theres some copy pasta:

    Code:
    Func _GetUnitName($fGUID)
          $Name1 = _Memoryread(GetMemLocByGUID($fGUID) + $UnitName1,$hwow,"int") ; Gets Pointer 1
          $Name2 = _Memoryread($Name1 + $UnitName2,$hwow,"int"); Gets the real offset
          Return = _MemoryRead($Name2, $hwow, "char[20]"); Reading the offset using ascci
    EndFunc
    EDIT:
    To get objects names use the same method but replace the offsets:P



    EDIT2:
    You seam like your trying the best you can, heres the code that i use for my object dumper.
    WARNING FUGLY CODE
    http://www.paste-code.com/paste.php?id=3YMkmX4p2e
    Last edited by Syltex; 02-28-2011 at 08:30 AM.

  10. #10
    Blondy's Avatar Private
    Reputation
    1
    Join Date
    Feb 2011
    Posts
    8
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Tanks a lot for yout help.

    Here's my loot Func
    Code:
    Func _GatherLoot($ObjGUID)
    	_MemoryWrite($WoWBase + 0x99C6A8, $hWow, $ObjGUID, "UINT64")
    	ControlSend($WoWWindow[1][1], "", "", "{T}")
    	Sleep(5000)
    EndFunc
    NOTE: "T" is my Interact with mouseover key

    I'm getting better

    Now its time to let the bot fly^^
    I don't want to use CTM to move . I prefer the normal mouvment with ingame keys and waypoints (navmesh would be a great thing but I think its to difficult fpr me as newbie to implement)
    Getting from one piont to the next one should not be the problem cause my bot can also locate and reach a node to gather it.
    Have you got an idea how I can handle the Z coordinate?
    My idea is to check wether the actual height - the ground height is a specific value.
    How can I get the ground height?
    Last edited by Blondy; 02-28-2011 at 12:39 PM.

  11. #11
    !@^^@!'s Avatar Active Member
    Reputation
    23
    Join Date
    Feb 2007
    Posts
    155
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Well you can use TraceLine from your position and then downwards but i'm pretty sure there's a IsFlying constant or something similar if that's what you mean by "handling the z coordinate"...
    “Programmers are in a race with the Universe to create bigger and better idiot-proof programs, while the Universe is trying to create bigger and better idiots. So far the Universe is winning.” - Rich Cook

Similar Threads

  1. Need some help creating my own server for 2.4.3
    By Magicka in forum WoW EMU Questions & Requests
    Replies: 2
    Last Post: 08-27-2013, 08:16 AM
  2. AutoIT noob, need some help please
    By Mrtypr02 in forum Diablo 3 Bots Questions & Requests
    Replies: 3
    Last Post: 06-08-2012, 12:05 PM
  3. warrior head tier 2 --> tier 3 need some help please
    By katjenl in forum WoW ME Questions and Requests
    Replies: 1
    Last Post: 11-22-2006, 09:10 AM
  4. Need some help
    By _Shapes_ in forum World of Warcraft Model Editing
    Replies: 2
    Last Post: 11-11-2006, 02:18 PM
  5. NEED SOME HELP with Model Editing
    By Dwarf in forum World of Warcraft Model Editing
    Replies: 4
    Last Post: 09-12-2006, 08:12 PM
All times are GMT -5. The time now is 05:43 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