How to identify not skinnable mobs menu

User Tag List

Results 1 to 6 of 6
  1. #1
    Mr.Sergey's Avatar Contributor
    Reputation
    113
    Join Date
    Apr 2009
    Posts
    195
    Thanks G/R
    5/21
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    How to identify not skinnable mobs

    Hi,

    Some mobs, killed by other players, have "Skinnable" tooltip, but cursor does not change to skinning icon. If I click right button of mouse on this mob then character apply skinning ability, but it interrupt in the end, game shows error "creature is not skinnable".

    How can I identify such mobs?

    I check that mob is skinnable by followind code:

    bool skinable = (Memory.Process.ReadUInt(ObjectBase + (uint)UnitFields.Flags ) & (uint)UnitFlags.Skinnable) != 0;

    but this code return true...

    How to identify not skinnable mobs
  2. #2
    charles420's Avatar Contributor
    Reputation
    315
    Join Date
    Jun 2009
    Posts
    329
    Thanks G/R
    25/119
    Trade Feedback
    0 (0%)
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)
    0x17B8 + 0xCC classic wow

    reversed from CGUnit_C::GetSkinnableType
    i believe you can search string UNIT_SKINNABLE_ROCK in ida to find it as well

  3. #3
    air999's Avatar Contributor
    Reputation
    131
    Join Date
    Nov 2014
    Posts
    102
    Thanks G/R
    9/62
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    You need to check also PullerGuid = [unit baseaddress + 0x1778], it's set to Guid of player, or Guid of party, whos pulled first this unit. Also, after some time this PullerGuid is reset to zero, so anyone can skin it.

    You can skin if PullerGuid is zero, or PullerGuid = ActivePlayerGuid or PullerGuid = PartyGuid, if in party.

    Code:
    public bool IsSkinnable => Flags.HasFlag(WoWUnitFlags.Skinnable) && !Flags3.HasFlag(WoWUnitFlags3.AlreadySkinned) && CanBeLooted;
    
    public WoWGuid PullerGuid => Memory.Read<WoWGuid>(BaseAddress + 0x1778);
    public bool CanBeLooted => PullerGuid == WoWGuid.Empty || PullerGuid == Me.Guid || PartyGuid == PullerGuid;

  4. Thanks Mr.Sergey, counted (2 members gave Thanks to air999 for this useful post)
  5. #4
    Mr.Sergey's Avatar Contributor
    Reputation
    113
    Join Date
    Apr 2009
    Posts
    195
    Thanks G/R
    5/21
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    air999, thank you.
    Code:
    (BaseAddress + 0x1778)
    that's what I was looking for.
    Last edited by Mr.Sergey; 08-20-2020 at 05:53 AM.

  6. #5
    Mr.Sergey's Avatar Contributor
    Reputation
    113
    Join Date
    Apr 2009
    Posts
    195
    Thanks G/R
    5/21
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Last question in this thread - how to get PartyGuid ? 0x2B0FFD8 ?
    Last edited by Mr.Sergey; 08-20-2020 at 02:27 PM.

  7. #6
    air999's Avatar Contributor
    Reputation
    131
    Join Date
    Nov 2014
    Posts
    102
    Thanks G/R
    9/62
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    [0x02B10028] pointer to local group info

    Code:
    			public struct GroupInfo
    			{
    				[MarshalAs(UnmanagedType.ByValArray, SizeConst = 40)]
    				public IntPtr[] RaidMembers;
    
    				[MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
    				public IntPtr[] PartyMembers;
    
    				public readonly WoWGuid    PartyGuid;
    				public readonly uint       GroupSize;
    				public readonly uint       RaidSize;
    				public readonly WoWGuid    GroupLeaderGuid;
    				public readonly GroupFlags Flags;
    				public readonly uint       DungeonDifficultyId;
    				public readonly uint       RaidDifficultyId;
    				public readonly uint       Unk6;
    				public readonly uint       Unk7;
    				public readonly uint       Unk8;
    				public readonly uint       LfgDungeonId; //  & 1048575U;
    				public readonly uint       Unk9;
    				public readonly uint       Unk10;
    				public readonly uint       Unk11;
    				public readonly uint       Unk12;
    				public readonly uint       Unk13;
    				public readonly uint       Unk14;
    				public readonly uint       Unk15;
    				public readonly uint       Unk16;
    				public readonly uint       Unk17;
    				public readonly uint       Unk18;
    				public readonly uint       Unk19;
    				public readonly uint       Unk20;
    				public readonly uint       Unk21;
    				public readonly uint       Unk22;
    				public readonly IntPtr     RaidMarker; // ptr to guid
    				public readonly uint       Unk23;
    				public readonly uint       Unk24;
    			}

  8. Thanks Mr.Sergey (1 members gave Thanks to air999 for this useful post)

Similar Threads

  1. [Video Guide] How to Solo Heroic SP Mobs As A Mage!
    By Xerian in forum World of Warcraft Guides
    Replies: 39
    Last Post: 05-08-2008, 01:09 PM
  2. How to Make A Custom Mob
    By JulianX in forum WoW EMU Guides & Tutorials
    Replies: 22
    Last Post: 09-26-2007, 10:48 AM
  3. For people who dont know how to Identify Files
    By Fault in forum World of Warcraft Model Editing
    Replies: 0
    Last Post: 08-14-2006, 08:22 PM
All times are GMT -5. The time now is 03:41 PM. Powered by vBulletin® Version 4.2.3
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search