[WoW][5.1.0.16309] x86 Info Dump Thread menu

User Tag List

Page 4 of 5 FirstFirst 12345 LastLast
Results 46 to 60 of 71
  1. #46
    eracer's Avatar Contributor
    Reputation
    201
    Join Date
    Feb 2011
    Posts
    75
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    TimeStamp = 0xB0BCB8

    Edit: DarkLinux beat me to it, seems there is multiple timestamp offsets.
    Last edited by eracer; 12-01-2012 at 02:30 AM.

    [WoW][5.1.0.16309] x86 Info Dump Thread
  2. #47
    CrimeTime's Avatar Active Member
    Reputation
    20
    Join Date
    Dec 2007
    Posts
    83
    Thanks G/R
    16/4
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    This TimeStamp = 0xB0BCB8, works too.
    I'm using it to checkt it with the AuctionItemTimeleft.

  3. #48
    Mike1786's Avatar Member
    Reputation
    2
    Join Date
    Feb 2012
    Posts
    18
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    public const uint AURA_SIZE = 0x30;
    public const uint AURA_SPELL_ID = 0x18;
    public const uint AURA_SPELL_DURATION = 0x21;
    public const uint AURA_SPELL_ENDTIME = 0x24;
    public const uint AURA_SPELL_STACKS = 0x1D;
    public const uint AURA_SPELL_CREATEDBYGUID = 0x10;

  4. #49
    FattyXP's Avatar Member
    Reputation
    20
    Join Date
    Feb 2009
    Posts
    168
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Anyone know the location for Max Climb angle? I know its scanned by warden but I still want it =-)

  5. #50
    DarkLinux's Avatar Former Staff
    CoreCoins Purchaser Authenticator enabled
    Reputation
    1627
    Join Date
    May 2010
    Posts
    1,846
    Thanks G/R
    193/539
    Trade Feedback
    16 (100%)
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)
    Max Climb could be 0x096FF64? If not just pull it from 0x50DA59 +0x4
    Last edited by DarkLinux; 12-03-2012 at 02:32 AM.

  6. #51
    hardcpp's Avatar Active Member
    Reputation
    26
    Join Date
    Mar 2012
    Posts
    16
    Thanks G/R
    0/2
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Hello, i'm currently working on movement packet, i can synchronise some deplacement with dispawn/respawn technique but is sad

    my problem is called MSE (MovementStatusElements) is field order in packet for each movement opcode.

    this is the MSE descriptor for WoW 4.3.4 => https://github.com/TrinityCore/Trini...ntStructures.h

    But i don't known how to get it for Mop, if someone can help me, I would appreciate and can share some MoP packet structure

  7. #52
    Endecs's Avatar Master Sergeant
    Reputation
    53
    Join Date
    Jan 2011
    Posts
    116
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by eracer View Post
    Yes they have changed, here is my descriptor dump
    Code:
        public enum CGObjectData
        {
            m_guid = 0,
            m_data = 2,
            m_type = 4,
            m_entryID = 5,
            m_scale = 6,
            end = 7,
        }
    
        public enum CGItemData
        {
            m_owner = CGObjectData.end + 0,
            m_containedIn = CGObjectData.end + 2,
            m_creator = CGObjectData.end + 4,
            m_giftCreator = CGObjectData.end + 6,
            m_stackCount = CGObjectData.end + 8,
            m_expiration = CGObjectData.end + 9,
            m_spellCharges = CGObjectData.end + 10,
            m_dynamicFlags = CGObjectData.end + 15,
            m_enchantment = CGObjectData.end + 16,
            m_propertySeed = CGObjectData.end + 55,
            m_randomPropertiesID = CGObjectData.end + 56,
            m_durability = CGObjectData.end + 57,
            m_maxDurability = CGObjectData.end + 58,
            m_createPlayedTime = CGObjectData.end + 59,
            m_modifiersMask = CGObjectData.end + 60,
            end = CGObjectData.end + 61,
        }
    
        public enum CGContainerData
        {
            m_slots = CGItemData.end + 0,
            m_numSlots = CGItemData.end + 72,
            end = CGItemData.end + 73,
        }
    
        public enum CGUnitData
        {
            charm = CGObjectData.end + 0,
            summon = CGObjectData.end + 2,
            critter = CGObjectData.end + 4,
            charmedBy = CGObjectData.end + 6,
            summonedBy = CGObjectData.end + 8,
            createdBy = CGObjectData.end + 10,
            target = CGObjectData.end + 12,
            channelObject = CGObjectData.end + 14,
            channelSpell = CGObjectData.end + 16,
            summonedByHomeRealm = CGObjectData.end + 17,
            displayPower = CGObjectData.end + 18,
            overrideDisplayPowerID = CGObjectData.end + 19,
            health = CGObjectData.end + 20,
            power = CGObjectData.end + 21,
            maxHealth = CGObjectData.end + 26,
            maxPower = CGObjectData.end + 27,
            powerRegenFlatModifier = CGObjectData.end + 32,
            powerRegenInterruptedFlatModifier = CGObjectData.end + 37,
            level = CGObjectData.end + 42,
            factionTemplate = CGObjectData.end + 43,
            virtualItemID = CGObjectData.end + 44,
            flags = CGObjectData.end + 47,
            flags2 = CGObjectData.end + 48,
            auraState = CGObjectData.end + 49,
            attackRoundBaseTime = CGObjectData.end + 50,
            rangedAttackRoundBaseTime = CGObjectData.end + 52,
            boundingRadius = CGObjectData.end + 53,
            combatReach = CGObjectData.end + 54,
            displayID = CGObjectData.end + 55,
            nativeDisplayID = CGObjectData.end + 56,
            mountDisplayID = CGObjectData.end + 57,
            minDamage = CGObjectData.end + 58,
            maxDamage = CGObjectData.end + 59,
            minOffHandDamage = CGObjectData.end + 60,
            maxOffHandDamage = CGObjectData.end + 61,
            animTier = CGObjectData.end + 62,
            petNumber = CGObjectData.end + 63,
            petNameTimestamp = CGObjectData.end + 64,
            petExperience = CGObjectData.end + 65,
            petNextLevelExperience = CGObjectData.end + 66,
            dynamicFlags = CGObjectData.end + 67,
            modCastingSpeed = CGObjectData.end + 68,
            modSpellHaste = CGObjectData.end + 69,
            modHaste = CGObjectData.end + 70,
            modHasteRegen = CGObjectData.end + 71,
            createdBySpell = CGObjectData.end + 72,
            npcFlags = CGObjectData.end + 73,
            emoteState = CGObjectData.end + 75,
            stats = CGObjectData.end + 76,
            statPosBuff = CGObjectData.end + 81,
            statNegBuff = CGObjectData.end + 86,
            resistances = CGObjectData.end + 91,
            resistanceBuffModsPositive = CGObjectData.end + 98,
            resistanceBuffModsNegative = CGObjectData.end + 105,
            baseMana = CGObjectData.end + 112,
            baseHealth = CGObjectData.end + 113,
            shapeshiftForm = CGObjectData.end + 114,
            attackPower = CGObjectData.end + 115,
            attackPowerModPos = CGObjectData.end + 116,
            attackPowerModNeg = CGObjectData.end + 117,
            attackPowerMultiplier = CGObjectData.end + 118,
            rangedAttackPower = CGObjectData.end + 119,
            rangedAttackPowerModPos = CGObjectData.end + 120,
            rangedAttackPowerModNeg = CGObjectData.end + 121,
            rangedAttackPowerMultiplier = CGObjectData.end + 122,
            minRangedDamage = CGObjectData.end + 123,
            maxRangedDamage = CGObjectData.end + 124,
            powerCostModifier = CGObjectData.end + 125,
            powerCostMultiplier = CGObjectData.end + 132,
            maxHealthModifier = CGObjectData.end + 139,
            hoverHeight = CGObjectData.end + 140,
            minItemLevel = CGObjectData.end + 141,
            maxItemLevel = CGObjectData.end + 142,
            wildBattlePetLevel = CGObjectData.end + 143,
            battlePetCompanionGUID = CGObjectData.end + 144,
            battlePetCompanionNameTimestamp = CGObjectData.end + 146,
            end = CGObjectData.end + 147,
        }
    
        public enum CGPlayerData
        {
            duelArbiter = CGUnitData.end + 0,
            playerFlags = CGUnitData.end + 2,
            guildRankID = CGUnitData.end + 3,
            guildDeleteDate = CGUnitData.end + 4,
            guildLevel = CGUnitData.end + 5,
            hairColorID = CGUnitData.end + 6,
            restState = CGUnitData.end + 7,
            arenaFaction = CGUnitData.end + 8,
            duelTeam = CGUnitData.end + 9,
            guildTimeStamp = CGUnitData.end + 10,
            questLog = CGUnitData.end + 11,
            visibleItems = CGUnitData.end + 761,
            playerTitle = CGUnitData.end + 799,
            fakeInebriation = CGUnitData.end + 800,
            homePlayerRealm = CGUnitData.end + 801,
            currentSpecID = CGUnitData.end + 802,
            taxiMountAnimKitID = CGUnitData.end + 803,
            currentBattlePetBreedQuality = CGUnitData.end + 804,
            invSlots = CGUnitData.end + 805,
            farsightObject = CGUnitData.end + 977,
            knownTitles = CGUnitData.end + 979,
            coinage = CGUnitData.end + 987,
            XP = CGUnitData.end + 989,
            nextLevelXP = CGUnitData.end + 990,
            skill = CGUnitData.end + 991,
            characterPoints = CGUnitData.end + 1439,
            maxTalentTiers = CGUnitData.end + 1440,
            trackCreatureMask = CGUnitData.end + 1441,
            trackResourceMask = CGUnitData.end + 1442,
            expertise = CGUnitData.end + 1443,
            offhandExpertise = CGUnitData.end + 1444,
            rangedExpertise = CGUnitData.end + 1445,
            blockPercentage = CGUnitData.end + 1446,
            dodgePercentage = CGUnitData.end + 1447,
            parryPercentage = CGUnitData.end + 1448,
            critPercentage = CGUnitData.end + 1449,
            rangedCritPercentage = CGUnitData.end + 1450,
            offhandCritPercentage = CGUnitData.end + 1451,
            spellCritPercentage = CGUnitData.end + 1452,
            shieldBlock = CGUnitData.end + 1459,
            shieldBlockCritPercentage = CGUnitData.end + 1460,
            mastery = CGUnitData.end + 1461,
            pvpPowerDamage = CGUnitData.end + 1462,
            pvpPowerHealing = CGUnitData.end + 1463,
            exploredZones = CGUnitData.end + 1464,
            restStateBonusPool = CGUnitData.end + 1664,
            modDamageDonePos = CGUnitData.end + 1665,
            modDamageDoneNeg = CGUnitData.end + 1672,
            modDamageDonePercent = CGUnitData.end + 1679,
            modHealingDonePos = CGUnitData.end + 1686,
            modHealingPercent = CGUnitData.end + 1687,
            modHealingDonePercent = CGUnitData.end + 1688,
            modPeriodicHealingDonePercent = CGUnitData.end + 1689,
            weaponDmgMultipliers = CGUnitData.end + 1690,
            modSpellPowerPercent = CGUnitData.end + 1693,
            modResiliencePercent = CGUnitData.end + 1694,
            overrideSpellPowerByAPPercent = CGUnitData.end + 1695,
            overrideAPBySpellPowerPercent = CGUnitData.end + 1696,
            modTargetResistance = CGUnitData.end + 1697,
            modTargetPhysicalResistance = CGUnitData.end + 1698,
            lifetimeMaxRank = CGUnitData.end + 1699,
            selfResSpell = CGUnitData.end + 1700,
            pvpMedals = CGUnitData.end + 1701,
            buybackPrice = CGUnitData.end + 1702,
            buybackTimestamp = CGUnitData.end + 1714,
            yesterdayHonorableKills = CGUnitData.end + 1726,
            lifetimeHonorableKills = CGUnitData.end + 1727,
            watchedFactionIndex = CGUnitData.end + 1728,
            combatRatings = CGUnitData.end + 1729,
            arenaTeams = CGUnitData.end + 1756,
            battlegroundRating = CGUnitData.end + 1777,
            maxLevel = CGUnitData.end + 1778,
            runeRegen = CGUnitData.end + 1779,
            noReagentCostMask = CGUnitData.end + 1783,
            glyphSlots = CGUnitData.end + 1787,
            glyphs = CGUnitData.end + 1793,
            glyphSlotsEnabled = CGUnitData.end + 1799,
            petSpellPower = CGUnitData.end + 1800,
            researching = CGUnitData.end + 1801,
            professionSkillLine = CGUnitData.end + 1809,
            uiHitModifier = CGUnitData.end + 1811,
            uiSpellHitModifier = CGUnitData.end + 1812,
            homeRealmTimeOffset = CGUnitData.end + 1813,
            modRangedHaste = CGUnitData.end + 1814,
            modPetHaste = CGUnitData.end + 1815,
            summonedBattlePetGUID = CGUnitData.end + 1816,
            overrideSpellsID = CGUnitData.end + 1818,
            end = CGUnitData.end + 1819,
        }
    
        public enum CGGameObjectData
        {
            m_createdBy = CGObjectData.end + 0,
            m_displayID = CGObjectData.end + 2,
            m_flags = CGObjectData.end + 3,
            m_parentRotation = CGObjectData.end + 4,
            m_animProgress = CGObjectData.end + 8,
            m_factionTemplate = CGObjectData.end + 9,
            m_level = CGObjectData.end + 10,
            m_percentHealth = CGObjectData.end + 11,
            end = CGObjectData.end + 12,
        }
    
        public enum CGDynamicObjectData
        {
            m_caster = CGObjectData.end + 0,
            m_typeAndVisualID = CGObjectData.end + 2,
            m_spellID = CGObjectData.end + 3,
            m_radius = CGObjectData.end + 4,
            m_castTime = CGObjectData.end + 5,
            end = CGObjectData.end + 6,
        }
    
        public enum CGCorpseData
        {
            m_owner = CGObjectData.end + 0,
            m_partyGUID = CGObjectData.end + 2,
            m_displayID = CGObjectData.end + 4,
            m_items = CGObjectData.end + 5,
            m_skinID = CGObjectData.end + 24,
            m_facialHairStyleID = CGObjectData.end + 25,
            m_flags = CGObjectData.end + 26,
            m_dynamicFlags = CGObjectData.end + 27,
            end = CGObjectData.end + 28,
        }
    
        public enum CGAreaTriggerData
        {
            m_caster = CGObjectData.end + 0,
            m_duration = CGObjectData.end + 2,
            m_spellID = CGObjectData.end + 3,
            m_spellVisualID = CGObjectData.end + 4,
            end = CGObjectData.end + 5,
        }
    
        public enum CGSceneObjectData
        {
            m_scriptPackageID = CGObjectData.end + 0,
            m_rndSeedVal = CGObjectData.end + 1,
            m_createdBy = CGObjectData.end + 2,
            end = CGObjectData.end + 4,
        }
    
        public enum CGItemDynamicData
        {
            m_modifiers,
        }
    
        public enum CGUnitDynamicData
        {
            passiveSpells,
        }
    
        public enum CGPlayerDynamicData
        {
            researchSites,
            dailyQuestsCompleted,
        }
    End = 0x8

    And are you sure, that your NPCFlag is right? Don't get on my old results / right results.

    //npcFlags = CGObjectData.end + 73,

    greets,
    Endecs

  8. #53
    doityourself's Avatar ★ Elder ★
    Reputation
    1424
    Join Date
    Nov 2008
    Posts
    843
    Thanks G/R
    35/448
    Trade Feedback
    0 (0%)
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)
    The updatefields from him are not 100% correct, but the npcFlags = CGObjectData.end + 73 is right

  9. #54
    pladi's Avatar Member
    Reputation
    4
    Join Date
    Jan 2009
    Posts
    11
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    some offsets (rebased):

    PHP Code:
            public enum QuestLog
            
    {
                
    QuestCache 0xBF8728//5.1.0
                
    NumberOfObjectivesPtr 0x2EE0//5.1.0
                
    NumRewardsOff1 0xB4//5.1.0
                
    NumRewardsOff2 0x4//5.1.0
                
    NumQuestLogEntries 0xD6BED4//5.1.0
                
    IsHeader 0xD6B880//5.1.0
                
    QuestId 0xD6B878//5.1.0
                
    QuestName 0xC8//5.1.0
                
    FirstObjectivePtr 0x2EE4//5.1.0
                
    ObjectiveSize 0x124//5.1.0
            
    }

            public 
    enum ArchaeologyRaceInfo
            
    {
                 
    Base 0xD395A0//5.1.0
                 
    RaceItemId 0x14//5.1.0
                 
    RaceName 0x4//5.1.0
                 
    NumArchaeologyRaces 0xD39620//5.1.0
                 
    FragmentsCollected 0xC//5.1.0
                 
    FragmentsRequired 0x20//5.1.0
                 
    ResearchDBC 0xBFD1A4//5.1.0
                 
    DBCRewardId 0x14//5.1.0
            


  10. #55
    rafalsk's Avatar Active Member
    Reputation
    17
    Join Date
    Jul 2009
    Posts
    194
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by king48488 View Post
    The updatefields from him are not 100% correct, but the npcFlags = CGObjectData.end + 73 is right
    actually it is not right, taken you use a standard Descriptors reading procedure such as:

    return ReadUInt(object_base_adress + 0x8) + (uint)field*4, typeof(T));
    then,
    UNIT_FIELD_NPC_FLAGS = OBJECT_END + 0x48
    I could not come up with what would render mentioned
    CGObjectData.end + 73
    as a correct result.

    By the way,

    some asked me to post the reversed GetUnitReaction, I've promised it anyway then forgotten. It is very similar to what some of you have already come up with (there was already some talk about templated functions etc). Anyway it was in another context from what I recall not the GetUnitReaction thing.
    Anyway, here it goes, nice copy&paste working as of current patch( note, the code is sort of dirty, havent got time to make it shine, BUT - it works).



    private PluginInterface.eGCUnitReaction GetUnitReaction( uint unit1, uint unit2)
    {
    try
    {
    if (unit1 == 0 || unit2 == 0)
    return 0;

    int hash1, hash2;
    int factionIndex = Memory.ReadInt(Globals.WoWBase + (uint)Addresses.UnitRelation.FactionStartIndex); //3.3.5(0x0AD3894); //0x93E80C 2.4.2
    int unit1Faction = (int)objectList.getDescriptors.GetKnownField<long>(Descriptors.WoWUnitFields.UNI T_FIELD_FACTIONTEMPLATE, ObjectPointer);
    int unit2Faction = (int)objectList.getDescriptors.GetKnownField<long>(Descriptors.WoWUnitFields.UNI T_FIELD_FACTIONTEMPLATE, unit2);

    hash1 = hashRetrieve((uint)(uint)Addresses.UnitRelation.FactionStartIndex, unit1Faction);
    hash2 = hashRetrieve((uint)(uint)Addresses.UnitRelation.FactionStartIndex, unit2Faction);
    return (PluginInterface.eGCUnitReaction)CompareFactionHash(hash1, hash2);

    }
    catch { return 0; }
    }
    public int CompareFactionHash(int hash1, int hash2)
    {///////
    if (hash1 == 0 || hash2 == 0)
    return -1;

    int hashCheck1 = 0, hashCheck2 = 0;
    int hashCompare = 0;
    int hashIndex = 0;
    byte[] bHash1 = new byte[0x40];
    byte[] bHash2 = new byte[0x40];

    bHash1= Memory.ReadBytes((uint) hash1, 0x40);
    bHash2 = Memory.ReadBytes((uint)hash2, 0x40);

    hashCheck1 = BitConverter.ToInt32(bHash1, 0x04);
    hashCheck2 = BitConverter.ToInt32(bHash2, 0x04);

    //bitwise compare of [bHash1+0x14] and [bHash2+0x0C]

    if ((BitConverter.ToInt32(bHash1, (int)Addresses.UnitRelation.HostileOffset1) & BitConverter.ToInt32(bHash2, (int)Addresses.UnitRelation.HostileOffset2)) != 0)
    return 1; //hostile

    hashIndex = 0x18;
    hashCompare = BitConverter.ToInt32(bHash1, hashIndex);
    if (hashCompare != 0)
    {
    for (int i = 0; i < 4; i++)
    {
    if (hashCompare == hashCheck2)
    return 1; //hostile

    hashIndex += 4;
    hashCompare = BitConverter.ToInt32(bHash1, hashIndex);

    if (hashCompare == 0)
    break;
    }
    }

    //bitwise compare of [bHash1+0x10] and [bHash2+0x0C]
    if ((BitConverter.ToInt32(bHash1, (int)Addresses.UnitRelation.FriendlyOffset1) & BitConverter.ToInt32(bHash2, (int)Addresses.UnitRelation.FriendlyOffset2)) != 0)
    return 4; //friendly

    hashIndex = 0x28;
    hashCompare = BitConverter.ToInt32(bHash1, hashIndex);
    if (hashCompare != 0)
    {
    for (int i = 0; i < 4; i++)
    {
    if (hashCompare == hashCheck2)
    return 4; //friendly

    hashIndex += 4;
    hashCompare = BitConverter.ToInt32(bHash1, hashIndex);

    if (hashCompare == 0)
    break;
    }
    }

    //bitwise compare of [bHash2+0x10] and [bHash1+0x0C]
    if ((BitConverter.ToInt32(bHash2, 0x10) & BitConverter.ToInt32(bHash1, 0x0C)) != 0)
    return 4; //friendly

    hashIndex = 0x28;
    hashCompare = BitConverter.ToInt32(bHash2, hashIndex);
    if (hashCompare != 0)
    {
    for (int i = 0; i < 4; i++)
    {
    if (hashCompare == hashCheck1)
    return 4; //friendly

    hashIndex += 4;
    hashCompare = BitConverter.ToInt32(bHash2, hashIndex);

    if (hashCompare == 0)
    break;
    }
    }

    return 3; //neutral
    }

    int hashRetrieve(uint objBase,int index)
    {
    int hash = 0;
    int v4,v5,v6,v2 = 0;

    int minIndex = Memory.ReadInt((uint)(Globals.WoWBase + (uint)Addresses.UnitRelation.FactionStartIndex + 0xC));
    int maxIndex = Memory.ReadInt((uint)(Globals.WoWBase + (uint)Addresses.UnitRelation.FactionStartIndex + 0x8));
    if (index < minIndex || index > maxIndex)// > max Index
    {
    hash = 0;
    }
    else
    {

    v4 = Memory.ReadInt((uint)((Memory.ReadInt((uint)Globals.WoWBase + (uint)Addresses.UnitRelation.FactionStartIndex + 0x1C) + 4 * ((index - minIndex) >> 5))));

    v5 = CountBitsSet(v4 << (0x1F - ((index - minIndex) & 0x1F)));
    v6 = v5 + GetArrayEntryBySizeType(v2, (uint)Memory.ReadInt((uint)Globals.WoWBase + (uint)Addresses.UnitRelation.FactionStartIndex + 0x24), (index - Memory.ReadInt((uint)(Globals.WoWBase + (uint)Addresses.UnitRelation.FactionStartIndex + 0xc))) >> 5) - 1;
    if (Memory.ReadInt((uint)Globals.WoWBase + (uint)Addresses.UnitRelation.FactionStartIndex + 0x20) == 0)
    v6 = GetArrayEntryBySizeType(v2, (uint)Memory.ReadInt((uint)(v2 + 24)), v6);
    hash = Memory.ReadInt((uint)(Globals.WoWBase + (uint)Addresses.UnitRelation.FactionStartIndex + 0x14)) + 0x38 * v6;

    }
    return hash;

    }
    Cheers
    Last edited by rafalsk; 12-06-2012 at 04:58 AM.

  11. #56
    FattyXP's Avatar Member
    Reputation
    20
    Join Date
    Feb 2009
    Posts
    168
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by rafalsk View Post
    actually it is not right, taken you use a standard Descriptors reading procedure such as:



    then,


    I could not come up with what would render mentioned

    as a correct result.

    By the way,

    some asked me to post the reversed GetUnitReaction, I've promised it anyway then forgotten. It is very similar to what some of you have already come up with (there was already some talk about templated functions etc). Anyway it was in another context from what I recall not the GetUnitReaction thing.
    Anyway, here it goes, nice copy&paste working as of current patch( note, the code is sort of dirty, havent got time to make it shine, BUT - it works).



    Cheers
    How can you say this is nice copy and paste when you are using a massive amount of objects from your project that we wouldn't have... Memory, ObjectList, Globals, Addresses. I mean yeah these things are objects most of us use already, but they aren't anywhere near those names or even structured the same.
    Thanks for the code though, with plenty of modification it works great =-)

  12. #57
    Endecs's Avatar Master Sergeant
    Reputation
    53
    Join Date
    Jan 2011
    Posts
    116
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    /e fixed

    NPCFlags: 0x8 + 0x140 (Hex:50 Dez:80)

    greets,
    Endecs
    Last edited by Endecs; 12-06-2012 at 02:42 PM.

  13. #58
    eracer's Avatar Contributor
    Reputation
    201
    Join Date
    Feb 2011
    Posts
    75
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by king48488 View Post
    The updatefields from him are not 100% correct, but the npcFlags = CGObjectData.end + 73 is right
    Which updatefields are you talking about?

    CGObjectData,end = 7
    CGUnitData.npcFlags = 73
    73 + 7 = 80

    Edit: I just tested npcFlags and its correct.

    rafalsk, you are using ReadUInt to read a 64 bit descriptor...
    Last edited by eracer; 12-06-2012 at 06:49 PM.

  14. #59
    rafalsk's Avatar Active Member
    Reputation
    17
    Join Date
    Jul 2009
    Posts
    194
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    How can you say this is nice copy and paste when you are using a massive amount of objects from your project that we wouldn't have
    ok, I know it came served raw, anyway hope variable names were sort of suggestive at least

  15. #60
    TOM_RUS's Avatar Legendary
    Reputation
    914
    Join Date
    May 2008
    Posts
    699
    Thanks G/R
    0/52
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by rafalsk View Post
    some asked me to post the reversed GetUnitReaction, I've promised it anyway then forgotten. It is very similar to what some of you have already come up with (there was already some talk about templated functions etc). Anyway it was in another context from what I recall not the GetUnitReaction thing.
    Anyway, here it goes, nice copy&paste working as of current patch( note, the code is sort of dirty, havent got time to make it shine, BUT - it works).

    Cheers
    A lot better looking code (DBC access is hidden in my DBC class):
    Code:
        [StructLayout(LayoutKind.Sequential)]
        struct FactionTemplateRec // sizeof(0x38)
        {
            public uint m_ID;           // 0
            public uint m_faction;      // 1
            public uint m_flags;        // 2
            public uint m_factionGroup; // 3
            public uint m_friendGroup;  // 4
            public uint m_enemyGroup;   // 5
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
            public uint[] m_enemies;    // 6-9
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
            public uint[] m_friend;     // 10-13
        };
    
        public enum Reaction
        {
            Hostile = 1,
            Neutral = 3,
            Friendly = 4,
        }
    
        class WowUnit : WowObject
        {
            public WowUnit(IntPtr address)
                : base(address)
            {
    
            }
    
            public Reaction UnitReaction
            {
                get
                {
                    WowUnit me = Game.ObjMgr.ActivePlayerObj;
    
                    if (me == null)
                        return Reaction.Neutral;
    
                    int ftid1 = me.GetValue<int>(UnitFields.FactionTemplate);
                    int ftid2 = this.GetValue<int>(UnitFields.FactionTemplate);
    
                    FactionTemplateRec? factionn1 = Game.g_factionTemplateDB[ftid1];
                    FactionTemplateRec? factionn2 = Game.g_factionTemplateDB[ftid2];
    
                    if (!factionn1.HasValue || !factionn2.HasValue)
                        return Reaction.Neutral;
    
                    FactionTemplateRec faction1 = factionn1.Value;
                    FactionTemplateRec faction2 = factionn2.Value;
    
                    if ((faction2.m_factionGroup & faction1.m_enemyGroup) != 0)
                        return Reaction.Hostile;
    
                    for (int i = 0; i < faction1.m_enemies.Length; ++i)
                    {
                        if (faction1.m_enemies[i] == 0)
                            break;
                        if (faction1.m_enemies[i] == faction2.m_faction)
                            return Reaction.Hostile;
                    }
    
                    if ((faction2.m_factionGroup & faction1.m_friendGroup) != 0)
                        return Reaction.Friendly;
    
                    for (int i = 0; i < faction1.m_friend.Length; ++i)
                    {
                        if (faction1.m_friend[i] == 0)
                            break;
                        if (faction1.m_friend[i] == faction2.m_faction)
                            return Reaction.Friendly;
                    }
    
                    if ((faction1.m_factionGroup & faction2.m_friendGroup) != 0)
                        return Reaction.Friendly;
    
                    for (int i = 0; i < faction2.m_friend.Length; ++i)
                    {
                        if (faction2.m_friend[i] == 0)
                            break;
                        if (faction2.m_friend[i] == faction1.m_faction)
                            return Reaction.Friendly;
                    }
    
                    return (Reaction)(~(faction1.m_flags >> 12) & 2 | 1); // it seems checking for (factionFlags & 0x2000) != 0 ? 1 : 3
                }
            }
        }
    Last edited by TOM_RUS; 12-07-2012 at 08:53 AM.

Page 4 of 5 FirstFirst 12345 LastLast

Similar Threads

  1. [WoW][5.0.4.16016] x86 Info Dump Thread
    By noctural in forum WoW Memory Editing
    Replies: 134
    Last Post: 05-06-2014, 01:40 AM
  2. [WoW][5.1.0.16357] x86 Info Dump Thread
    By TOM_RUS in forum WoW Memory Editing
    Replies: 46
    Last Post: 11-27-2013, 04:34 AM
  3. [WoW] [5.2.0 16650] x86 Info Dump Thread
    By noctural in forum WoW Memory Editing
    Replies: 39
    Last Post: 03-08-2013, 04:42 AM
  4. [WoW][5.0.5.16048] x86 Info Dump Thread
    By eracer in forum WoW Memory Editing
    Replies: 81
    Last Post: 11-23-2012, 04:04 AM
  5. [WoW][5.0.5.16135] x86 Info Dump Thread
    By eracer in forum WoW Memory Editing
    Replies: 7
    Last Post: 10-11-2012, 10:58 PM
All times are GMT -5. The time now is 02:00 AM. Powered by vBulletin® Version 4.2.3
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Google Authenticator verification provided by Two-Factor Authentication (Free) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search