Now I have this code, but get incorrect values, where I made a mistake?
Code:
public class WoWGuid
{
public ulong Low { get; set; }
public ulong High { get; set; }
public WoWGuid() { }
public WoWGuid(ulong lowGuid, ulong highGuid)
{
Low = lowGuid ;
High = highGuid ;
}
public WoWGuidType Type
{
get { return (WoWGuidType)(High >> 58); }
set { High |= (ulong)value << 58; }
}
public GuidSubType SubType
{
get { return (GuidSubType)(Low >> 56); }
set { Low |= (ulong)value << 56; }
}
public ushort RealmId
{
get { return (ushort)((High >> 42) & 0x1FFF); }
set { High |= (ulong)value << 42; }
}
public ushort ServerId
{
get { return (ushort)((Low >> 40) & 0x1FFF); }
set { Low |= (ulong)value << 40; }
}
public ushort MapId
{
get { return (ushort)((High >> 29) & 0x1FFF); }
set { High |= (ulong)value << 29; }
}
public uint Id
{
get { return (uint)(High & 0xFFFFFF) >> 6; }
set { High |= (ulong)value << 6; }
}
public ulong CreationBits
{
get { return Low & 0xFFFFFFFFFF; }
set { Low |= value; }
}
}
Code:
public WoWGuid GUID()
{
ulong high = Memory.WoW.Read<ulong>(BaseAddress + (int)Offsets.ObjectFields.Guid);
ulong low = Memory.WoW.Read<ulong>(BaseAddress + (int)Offsets.ObjectFields.Guid + 0x8);
return new WoWGuid(low, high);
}
Code:
public enum ObjectFields
{
Guid = 0x0,
};