[help][8.3] How to handle Aura? my old code not working? menu

These ads disappear when you log in.

Results 1 to 10 of 10
  1. #1
    chlycooper's Avatar Member CoreCoins User
    Reputation
    1
    Join Date
    Nov 2012
    Posts
    20
    Thanks G/R
    1/0
    Trade Feedback
    0 (0%)

    [help][8.3] How to handle Aura? my old code not working?

    i used
    Code:
    $auraCount = _MemoryRead($NextObject1 + $AuraCount1, $hWow, 'dword')
    $auraTable = $NextObject1 + $AuraTable1
    If $auraCount > 80 Then
    	$auraTable = _MemoryRead($NextObject1 + $AuraTable2, $hWow, 'dword')
    	$auraCount = _MemoryRead($NextObject1 + $AuraCount2, $hWow, 'dword')
    EndIf
    For $I = 0 To $auraCount - 1
    		Local $spellId = _MemoryRead($auraTable + $AuraSize * $I + $AuraSpellId, $hWow, 'dword')
    Next
    is it changed ? or i just use the wrong offset? I tried some , can't get them.

    These ads disappear when you log in.

  2. #2
    counted's Avatar Contributor CoreCoins User Authenticator enabled
    Reputation
    183
    Join Date
    Mar 2008
    Posts
    161
    Thanks G/R
    10/90
    Trade Feedback
    0 (0%)
    You will need to supply more info on your constants for anyone to help you.

  3. #3
    chlycooper's Avatar Member CoreCoins User
    Reputation
    1
    Join Date
    Nov 2012
    Posts
    20
    Thanks G/R
    1/0
    Trade Feedback
    0 (0%)
    i got from other post, but i can't make it work.
    $AuraCount2 = 0x600 (from a post for 8.3)
    $AuraCount1 = $AuraCount2 + 0xA80 (from a post for 8.3)
    and:
    Aura_Count2 = 0x5f8
    Aura_Count1 = Aura_Count2 + 0xA80
    Aura_Table1 = Aura_Count2 (from a post for 8.25)
    Aura_Table2 = Aura_Count2 + 0x8 (from a post for 8.25)

    $NextObject is the LocalPlayobj address

  4. #4
    counted's Avatar Contributor CoreCoins User Authenticator enabled
    Reputation
    183
    Join Date
    Mar 2008
    Posts
    161
    Thanks G/R
    10/90
    Trade Feedback
    0 (0%)
    Find Script_GetSpellConfirmationPromptsInfo and look around 0x75 from the start of the subroutine, you will see the 0x600 and the 0xa80 offsets. That section of the code shows you how to use them properly. You can also find the Size of the Aura Entry and the Offset of SpellId into the Aura Entry a bit further down.

  5. #5
    chlycooper's Avatar Member CoreCoins User
    Reputation
    1
    Join Date
    Nov 2012
    Posts
    20
    Thanks G/R
    1/0
    Trade Feedback
    0 (0%)
    thank you , big help, i will try it.

  6. #6
    ejt's Avatar Contributor CoreCoins User
    Reputation
    138
    Join Date
    Mar 2008
    Posts
    103
    Thanks G/R
    1/65
    Trade Feedback
    0 (0%)
    Not sure where you got the 'auraCount > 80' from but here is how wow handles auras

    Code:
    void Unit::UpdateAllAuras()
    {
    	auras.clear();
    
    	uint64_t table = address() + offsetof(CGUnit, AuraCount); // 0x600
    	int32_t count = unit_data->AuraFirst; // 0x1080
    
    	if (count == -1)
    	{
     		table = unit_data->AuraTable; // 0x608
    		count = unit_data->AuraCount; // 0x600
    	}
    
    	for (int32_t i = 0; i < count; ++i)
    	{
                    // sizeof CGAura = 0xA8
    		Aura aura = Aura(_process->memory().Read<CGAura>(table + (sizeof(CGAura) * i)));
                   
                    // spell_id is at 0x88
    		if (aura.GetSpellId() > 0)
    			auras.emplace_back(Aura(aura)); 
    	}
    }
    You can reverse the UnitBufff API function and it will call a function that has this:

    Code:
        v5 = sub_D65700(v3, *(unsigned int *)(v2 + 0x10), *(unsigned __int8 *)(v2 + 0x14));
        v6 = v5;
        if ( (v5 & 0x80000000) != 0 )
          goto LABEL_13;
        v7 = v3 + 0x600;
        v8 = 0xA8i64 * v5;
        if ( *(_DWORD *)(v3 + 0x1080) == -1 )
          v7 = *(_QWORD *)(v3 + 0x608);
        v9 = *(_DWORD *)(v8 + v7 + 0x88);
        v10 = (signed int *)sub_465050(&off_28D8B40, *(unsigned int *)(v8 + v7 + 0x88), 0i64, &v21);
        if ( v10 )
        {
          v11 = sub_B79EA0(v3, v6);
          result = sub_166DDE0(v9, v11, v20, v4, v10, v3);
        }
    which is similar to the code above

  7. #7
    chlycooper's Avatar Member CoreCoins User
    Reputation
    1
    Join Date
    Nov 2012
    Posts
    20
    Thanks G/R
    1/0
    Trade Feedback
    0 (0%)
    thank you, i make it working , a lot to learn....

  8. #8
    chlycooper's Avatar Member CoreCoins User
    Reputation
    1
    Join Date
    Nov 2012
    Posts
    20
    Thanks G/R
    1/0
    Trade Feedback
    0 (0%)
    Originally Posted by ejt View Post
    Not sure where you got the 'auraCount > 80' from but here is how wow handles auras

    Code:
    void Unit::UpdateAllAuras()
    {
    	auras.clear();
    
    	uint64_t table = address() + offsetof(CGUnit, AuraCount); // 0x600
    	int32_t count = unit_data->AuraFirst; // 0x1080
    
    	if (count == -1)
    	{
     		table = unit_data->AuraTable; // 0x608
    		count = unit_data->AuraCount; // 0x600
    	}
    
    	for (int32_t i = 0; i < count; ++i)
    	{
                    // sizeof CGAura = 0xA8
    		Aura aura = Aura(_process->memory().Read<CGAura>(table + (sizeof(CGAura) * i)));
                   
                    // spell_id is at 0x88
    		if (aura.GetSpellId() > 0)
    			auras.emplace_back(Aura(aura)); 
    	}
    }
    You can reverse the UnitBufff API function and it will call a function that has this:

    Code:
        v5 = sub_D65700(v3, *(unsigned int *)(v2 + 0x10), *(unsigned __int8 *)(v2 + 0x14));
        v6 = v5;
        if ( (v5 & 0x80000000) != 0 )
          goto LABEL_13;
        v7 = v3 + 0x600;
        v8 = 0xA8i64 * v5;
        if ( *(_DWORD *)(v3 + 0x1080) == -1 )
          v7 = *(_QWORD *)(v3 + 0x608);
        v9 = *(_DWORD *)(v8 + v7 + 0x88);
        v10 = (signed int *)sub_465050(&off_28D8B40, *(unsigned int *)(v8 + v7 + 0x88), 0i64, &v21);
        if ( v10 )
        {
          v11 = sub_B79EA0(v3, v6);
          result = sub_166DDE0(v9, v11, v20, v4, v10, v3);
        }
    which is similar to the code above
    // sizeof CGAura = 0xA8 maybe changed in 8.3.
    for (int i = 0; i < count; ++i)
    {
    Aura aura = new Aura (process, process.Read<IntPtr>(address + 0x608 + (0xA8 * i)))
    if (aura.GetSpellId() > 0 )
    auras.Add(aura);
    }

  9. #9
    ejt's Avatar Contributor CoreCoins User
    Reputation
    138
    Join Date
    Mar 2008
    Posts
    103
    Thanks G/R
    1/65
    Trade Feedback
    0 (0%)
    Size of CGAura is still 0xA8 as you can see from

    Code:
    v8 = 0xA8i64 * v5;
    and I'm not sure why you do

    Code:
    address + 0x608 + (0xA8 * i)
    when thats not how I showed you.

  10. #10
    chlycooper's Avatar Member CoreCoins User
    Reputation
    1
    Join Date
    Nov 2012
    Posts
    20
    Thanks G/R
    1/0
    Trade Feedback
    0 (0%)
    Originally Posted by ejt View Post
    Size of CGAura is still 0xA8 as you can see from

    Code:
    v8 = 0xA8i64 * v5;
    and I'm not sure why you do

    Code:
    address + 0x608 + (0xA8 * i)
    when thats not how I showed you.
    i was made a mistake, now i got my spell id by
    Code:
      int spellid = process.Read<int>(table + (0xA8 * i) + 0x88)
    thanks.

Similar Threads

  1. Need helps / tips on how to sell my WoW account
    By Davesta in forum World of Warcraft General
    Replies: 1
    Last Post: 02-13-2013, 08:05 PM
  2. [How to] These are my "How to"-videos.
    By Vilak in forum World of Warcraft Exploration
    Replies: 12
    Last Post: 12-02-2007, 10:07 AM
  3. how to i update my ascent rev
    By bjorn11 in forum World of Warcraft Emulator Servers
    Replies: 7
    Last Post: 11-28-2007, 02:20 PM
  4. please help me on how to remove beard
    By adtech21 in forum WoW ME Questions and Requests
    Replies: 0
    Last Post: 06-20-2007, 06:09 AM
  5. Replies: 4
    Last Post: 09-18-2006, 06:38 PM
All times are GMT -5. The time now is 12:36 PM. Powered by vBulletin® Version 4.2.3
Copyright © 2020 vBulletin Solutions, Inc. All rights reserved. Digital Point modules: Sphinx-based search