public static int AuraStack(uint baseAddress, List <UInt32> buffId) { var cachedAuraStack = AuraStack(baseAddress).Auras; for (int i = 0; i < cachedAuraStack.Count; i++) { Auras.UnitAura buff = cachedAuraStack[i]; if (buffId.Contains(buff.AuraSpellId)) { if (buff.IsActive) { return(buff.AuraCount); } if (!buff.Flags.HasFlag(UnitAuraFlags.Passive) || buff.Flags.HasFlag(UnitAuraFlags.Cancelable)) { return(buff.AuraCount); } if (buff.Flags.HasFlag(UnitAuraFlags.Duration) || buff.Flags.HasFlag(UnitAuraFlags.BasePoints)) { return(buff.AuraCount); } /*if (buff.Flags.HasFlag(UnitAuraFlags.Passive)) * { * UnitAuraFlags t = (UnitAuraFlags)buff.AuraUnk2; * if (t.HasFlag(UnitAuraFlags.Cancelable)) * return buff.AuraCount; * }*/ } } return(-1); }
public static Auras.UnitAuras AuraStack(uint baseAddress) { try { var unitAuras = new Auras.UnitAuras(baseAddress); uint auraTableBase = baseAddress + (uint)Addresses.UnitBaseGetUnitAura.AuraTable1; int auraCount = Memory.WowMemory.Memory.ReadInt(auraTableBase + (uint)Addresses.UnitBaseGetUnitAura.AuraTable2); if (auraCount == -1) { auraCount = Memory.WowMemory.Memory.ReadInt(auraTableBase); } for (uint currentIndex = 0; currentIndex < auraCount; currentIndex++) { uint currentAuraPtr = GetAuraPtrByIndex(auraTableBase, currentIndex); if (currentAuraPtr > 0) { uint auraSpellId = Memory.WowMemory.Memory.ReadUInt(currentAuraPtr + (uint)Addresses.UnitBaseGetUnitAura.AuraStructSpellId); var currUnitAura = new Auras.UnitAura { BaseAddress = currentAuraPtr, AuraSpellId = auraSpellId, }; /*if (auraSpellId == 158188) * { * Logging.WriteDebug("=== Stealth ==="); * string memoryDump = ""; * var bytesDump = Memory.WowMemory.Memory.ReadBytes(currentAuraPtr, 0x98); * foreach (byte b in bytesDump) * { * memoryDump = memoryDump + " " + b; * } * Logging.WriteDebug("Memory Dump: " + memoryDump); * Logging.WriteDebug(currUnitAura.ToString()); * Logging.WriteDebug("Me.Guid: " + ObjectManager.ObjectManager.Me.Guid); * * memoryDump = ""; * foreach (byte b in ObjectManager.ObjectManager.Me.Guid.ToByteArray()) * { * memoryDump = memoryDump + " " + b; * } * Logging.WriteDebug("Guid Bytes: " + memoryDump); * }*/ unitAuras.Auras.Add(currUnitAura); } } return(unitAuras); } catch (Exception e) { Logging.WriteError("AuraStack(uint baseAddress, List<UInt32> buffId)" + e); } return(new Auras.UnitAuras(baseAddress)); }