-
Contributor
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...
-
Contributor
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
-
Contributor
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;
-
Post Thanks / Like - 2 Thanks
-
Contributor
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.
-
Contributor
Last question in this thread - how to get PartyGuid ? 0x2B0FFD8 ?
Last edited by Mr.Sergey; 08-20-2020 at 02:27 PM.
-
Contributor
[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;
}
-
Post Thanks / Like - 1 Thanks
Mr.Sergey (1 members gave Thanks to air999 for this useful post)