Beispiel #1
0
        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);
        }
Beispiel #2
0
        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));
        }