howto acess: eItemFields/ePlayerFields menu

User Tag List

Page 1 of 2 12 LastLast
Results 1 to 15 of 16
  1. #1
    Nesox's Avatar ★ Elder ★
    Reputation
    1280
    Join Date
    Mar 2007
    Posts
    1,238
    Thanks G/R
    0/3
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    howto acess: eItemFields/ePlayerFields

    hi, ive been fooling around for quiet some time now with memory reading etc.. i tried to acess the ePlayerFields struct but i think im doing it wrong what do u think of this?

    ie.

    Code:
    //already found my playerbase adding 0x1198 to get the pointer to ePlayerFields.
    uint ePlayerFieldPointer = PlayerBase + 0x1198;
    
    
    //offset to Xp
    PLAYER_XP=0xAD0
    
    
    //then lets say i want to read how much Xp i got:
    
    playerXP = Memory.ReadInt(hProcess, 
           (ReadUInt(hProcess, ePlayerFieldPointer) + 0xAD0);  
                        
    //and it returns the value: 2147483647 altho my current xP is 524503
    1. anyone know what im doing wrong?


    2. how do u acess eItemFields struct to read items you got equipped/in bags?
    is the pointer to that struct inside the ePlayerFields struct?
    PLAYER_VISIBLE_ITEM_1_CREATOR=0x1B8,
    PLAYER_VISIBLE_ITEM_1_0=0x1C0,
    PLAYER_VISIBLE_ITEM_1_PROPERTIES=0x1F0,
    PLAYER_VISIBLE_ITEM_1_PAD=0x1F4,

    are any of those a pointer to the eItemFields struct?


    cheers -- Nesox :wave:

    howto acess: eItemFields/ePlayerFields
  2. #2
    Cypher's Avatar Kynox's Sister's Pimp
    Reputation
    1356
    Join Date
    Apr 2006
    Posts
    5,368
    Thanks G/R
    0/4
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    YOU"RE DOING IT WRONG!

    No, really.

    Heres the enums in case yours don't have inheritance and are using the multiplied value:
    Code:
    // WoW Info - Dumped by Cypher (Project Red Pill)
    // Credits: Kynox, Bobbysing, Greyman
    // WoW Build: WoW [Release] Build 8606 (Jul 10 2008 11:43:23)
     
    enum eObjectFields {
        OBJECT_FIELD_GUID=0x0,
        OBJECT_FIELD_TYPE=0x2,
        OBJECT_FIELD_ENTRY=0x3,
        OBJECT_FIELD_SCALE_X=0x4,
        OBJECT_FIELD_PADDING=0x5,
        TOTAL_OBJECT_FIELDS=0x5
    };
     
    enum eUnitFields {
        UNIT_FIELD_CHARM=0x6,
        UNIT_FIELD_SUMMON=0x8,
        UNIT_FIELD_CHARMEDBY=0xA,
        UNIT_FIELD_SUMMONEDBY=0xC,
        UNIT_FIELD_CREATEDBY=0xE,
        UNIT_FIELD_TARGET=0x10,
        UNIT_FIELD_PERSUADED=0x12,
        UNIT_FIELD_CHANNEL_OBJECT=0x14,
        UNIT_FIELD_HEALTH=0x16,
        UNIT_FIELD_POWER1=0x17,
        UNIT_FIELD_POWER2=0x18,
        UNIT_FIELD_POWER3=0x19,
        UNIT_FIELD_POWER4=0x1A,
        UNIT_FIELD_POWER5=0x1B,
        UNIT_FIELD_MAXHEALTH=0x1C,
        UNIT_FIELD_MAXPOWER1=0x1D,
        UNIT_FIELD_MAXPOWER2=0x1E,
        UNIT_FIELD_MAXPOWER3=0x1F,
        UNIT_FIELD_MAXPOWER4=0x20,
        UNIT_FIELD_MAXPOWER5=0x21,
        UNIT_FIELD_LEVEL=0x22,
        UNIT_FIELD_FACTIONTEMPLATE=0x23,
        UNIT_FIELD_BYTES_0=0x24,
        UNIT_VIRTUAL_ITEM_SLOT_DISPLAY=0x25,
        UNIT_VIRTUAL_ITEM_INFO=0x28,
        UNIT_FIELD_FLAGS=0x2E,
        UNIT_FIELD_FLAGS_2=0x2F,
        UNIT_FIELD_AURA=0x30,
        UNIT_FIELD_AURAFLAGS=0x68,
        UNIT_FIELD_AURALEVELS=0x76,
        UNIT_FIELD_AURAAPPLICATIONS=0x84,
        UNIT_FIELD_AURASTATE=0x92,
        UNIT_FIELD_BASEATTACKTIME=0x93,
        UNIT_FIELD_RANGEDATTACKTIME=0x95,
        UNIT_FIELD_BOUNDINGRADIUS=0x96,
        UNIT_FIELD_COMBATREACH=0x97,
        UNIT_FIELD_DISPLAYID=0x98,
        UNIT_FIELD_NATIVEDISPLAYID=0x99,
        UNIT_FIELD_MOUNTDISPLAYID=0x9A,
        UNIT_FIELD_MINDAMAGE=0x9B,
        UNIT_FIELD_MAXDAMAGE=0x9C,
        UNIT_FIELD_MINOFFHANDDAMAGE=0x9D,
        UNIT_FIELD_MAXOFFHANDDAMAGE=0x9E,
        UNIT_FIELD_BYTES_1=0x9F,
        UNIT_FIELD_PETNUMBER=0xA0,
        UNIT_FIELD_PET_NAME_TIMESTAMP=0xA1,
        UNIT_FIELD_PETEXPERIENCE=0xA2,
        UNIT_FIELD_PETNEXTLEVELEXP=0xA3,
        UNIT_DYNAMIC_FLAGS=0xA4,
        UNIT_CHANNEL_SPELL=0xA5,
        UNIT_MOD_CAST_SPEED=0xA6,
        UNIT_CREATED_BY_SPELL=0xA7,
        UNIT_NPC_FLAGS=0xA8,
        UNIT_NPC_EMOTESTATE=0xA9,
        UNIT_TRAINING_POINTS=0xAA,
        UNIT_FIELD_STAT0=0xAB,
        UNIT_FIELD_STAT1=0xAC,
        UNIT_FIELD_STAT2=0xAD,
        UNIT_FIELD_STAT3=0xAE,
        UNIT_FIELD_STAT4=0xAF,
        UNIT_FIELD_POSSTAT0=0xB0,
        UNIT_FIELD_POSSTAT1=0xB1,
        UNIT_FIELD_POSSTAT2=0xB2,
        UNIT_FIELD_POSSTAT3=0xB3,
        UNIT_FIELD_POSSTAT4=0xB4,
        UNIT_FIELD_NEGSTAT0=0xB5,
        UNIT_FIELD_NEGSTAT1=0xB6,
        UNIT_FIELD_NEGSTAT2=0xB7,
        UNIT_FIELD_NEGSTAT3=0xB8,
        UNIT_FIELD_NEGSTAT4=0xB9,
        UNIT_FIELD_RESISTANCES=0xBA,
        UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE=0xC1,
        UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE=0xC8,
        UNIT_FIELD_BASE_MANA=0xCF,
        UNIT_FIELD_BASE_HEALTH=0xD0,
        UNIT_FIELD_BYTES_2=0xD1,
        UNIT_FIELD_ATTACK_POWER=0xD2,
        UNIT_FIELD_ATTACK_POWER_MODS=0xD3,
        UNIT_FIELD_ATTACK_POWER_MULTIPLIER=0xD4,
        UNIT_FIELD_RANGED_ATTACK_POWER=0xD5,
        UNIT_FIELD_RANGED_ATTACK_POWER_MODS=0xD6,
        UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER=0xD7,
        UNIT_FIELD_MINRANGEDDAMAGE=0xD8,
        UNIT_FIELD_MAXRANGEDDAMAGE=0xD9,
        UNIT_FIELD_POWER_COST_MODIFIER=0xDA,
        UNIT_FIELD_POWER_COST_MULTIPLIER=0xE1,
        UNIT_FIELD_MAXHEALTHMODIFIER=0xE8,
        UNIT_FIELD_PADDING=0xE9,
        TOTAL_UNIT_FIELDS=0x58
    };
     
    enum ePlayerFields {
        PLAYER_DUEL_ARBITER=0xEA,
        PLAYER_FLAGS=0xEC,
        PLAYER_GUILDID=0xED,
        PLAYER_GUILDRANK=0xEE,
        PLAYER_BYTES=0xEF,
        PLAYER_BYTES_2=0xF0,
        PLAYER_BYTES_3=0xF1,
        PLAYER_DUEL_TEAM=0xF2,
        PLAYER_GUILD_TIMESTAMP=0xF3,
        PLAYER_QUEST_LOG_1_1=0xF4,
        PLAYER_QUEST_LOG_1_2=0xF5,
        PLAYER_QUEST_LOG_1_3=0xF6,
        PLAYER_QUEST_LOG_1_4=0xF7,
        PLAYER_QUEST_LOG_2_1=0xF8,
        PLAYER_QUEST_LOG_2_2=0xF9,
        PLAYER_QUEST_LOG_2_3=0xFA,
        PLAYER_QUEST_LOG_2_4=0xFB,
        PLAYER_QUEST_LOG_3_1=0xFC,
        PLAYER_QUEST_LOG_3_2=0xFD,
        PLAYER_QUEST_LOG_3_3=0xFE,
        PLAYER_QUEST_LOG_3_4=0xFF,
        PLAYER_QUEST_LOG_4_1=0x100,
        PLAYER_QUEST_LOG_4_2=0x101,
        PLAYER_QUEST_LOG_4_3=0x102,
        PLAYER_QUEST_LOG_4_4=0x103,
        PLAYER_QUEST_LOG_5_1=0x104,
        PLAYER_QUEST_LOG_5_2=0x105,
        PLAYER_QUEST_LOG_5_3=0x106,
        PLAYER_QUEST_LOG_5_4=0x107,
        PLAYER_QUEST_LOG_6_1=0x108,
        PLAYER_QUEST_LOG_6_2=0x109,
        PLAYER_QUEST_LOG_6_3=0x10A,
        PLAYER_QUEST_LOG_6_4=0x10B,
        PLAYER_QUEST_LOG_7_1=0x10C,
        PLAYER_QUEST_LOG_7_2=0x10D,
        PLAYER_QUEST_LOG_7_3=0x10E,
        PLAYER_QUEST_LOG_7_4=0x10F,
        PLAYER_QUEST_LOG_8_1=0x110,
        PLAYER_QUEST_LOG_8_2=0x111,
        PLAYER_QUEST_LOG_8_3=0x112,
        PLAYER_QUEST_LOG_8_4=0x113,
        PLAYER_QUEST_LOG_9_1=0x114,
        PLAYER_QUEST_LOG_9_2=0x115,
        PLAYER_QUEST_LOG_9_3=0x116,
        PLAYER_QUEST_LOG_9_4=0x117,
        PLAYER_QUEST_LOG_10_1=0x118,
        PLAYER_QUEST_LOG_10_2=0x119,
        PLAYER_QUEST_LOG_10_3=0x11A,
        PLAYER_QUEST_LOG_10_4=0x11B,
        PLAYER_QUEST_LOG_11_1=0x11C,
        PLAYER_QUEST_LOG_11_2=0x11D,
        PLAYER_QUEST_LOG_11_3=0x11E,
        PLAYER_QUEST_LOG_11_4=0x11F,
        PLAYER_QUEST_LOG_12_1=0x120,
        PLAYER_QUEST_LOG_12_2=0x121,
        PLAYER_QUEST_LOG_12_3=0x122,
        PLAYER_QUEST_LOG_12_4=0x123,
        PLAYER_QUEST_LOG_13_1=0x124,
        PLAYER_QUEST_LOG_13_2=0x125,
        PLAYER_QUEST_LOG_13_3=0x126,
        PLAYER_QUEST_LOG_13_4=0x127,
        PLAYER_QUEST_LOG_14_1=0x128,
        PLAYER_QUEST_LOG_14_2=0x129,
        PLAYER_QUEST_LOG_14_3=0x12A,
        PLAYER_QUEST_LOG_14_4=0x12B,
        PLAYER_QUEST_LOG_15_1=0x12C,
        PLAYER_QUEST_LOG_15_2=0x12D,
        PLAYER_QUEST_LOG_15_3=0x12E,
        PLAYER_QUEST_LOG_15_4=0x12F,
        PLAYER_QUEST_LOG_16_1=0x130,
        PLAYER_QUEST_LOG_16_2=0x131,
        PLAYER_QUEST_LOG_16_3=0x132,
        PLAYER_QUEST_LOG_16_4=0x133,
        PLAYER_QUEST_LOG_17_1=0x134,
        PLAYER_QUEST_LOG_17_2=0x135,
        PLAYER_QUEST_LOG_17_3=0x136,
        PLAYER_QUEST_LOG_17_4=0x137,
        PLAYER_QUEST_LOG_18_1=0x138,
        PLAYER_QUEST_LOG_18_2=0x139,
        PLAYER_QUEST_LOG_18_3=0x13A,
        PLAYER_QUEST_LOG_18_4=0x13B,
        PLAYER_QUEST_LOG_19_1=0x13C,
        PLAYER_QUEST_LOG_19_2=0x13D,
        PLAYER_QUEST_LOG_19_3=0x13E,
        PLAYER_QUEST_LOG_19_4=0x13F,
        PLAYER_QUEST_LOG_20_1=0x140,
        PLAYER_QUEST_LOG_20_2=0x141,
        PLAYER_QUEST_LOG_20_3=0x142,
        PLAYER_QUEST_LOG_20_4=0x143,
        PLAYER_QUEST_LOG_21_1=0x144,
        PLAYER_QUEST_LOG_21_2=0x145,
        PLAYER_QUEST_LOG_21_3=0x146,
        PLAYER_QUEST_LOG_21_4=0x147,
        PLAYER_QUEST_LOG_22_1=0x148,
        PLAYER_QUEST_LOG_22_2=0x149,
        PLAYER_QUEST_LOG_22_3=0x14A,
        PLAYER_QUEST_LOG_22_4=0x14B,
        PLAYER_QUEST_LOG_23_1=0x14C,
        PLAYER_QUEST_LOG_23_2=0x14D,
        PLAYER_QUEST_LOG_23_3=0x14E,
        PLAYER_QUEST_LOG_23_4=0x14F,
        PLAYER_QUEST_LOG_24_1=0x150,
        PLAYER_QUEST_LOG_24_2=0x151,
        PLAYER_QUEST_LOG_24_3=0x152,
        PLAYER_QUEST_LOG_24_4=0x153,
        PLAYER_QUEST_LOG_25_1=0x154,
        PLAYER_QUEST_LOG_25_2=0x155,
        PLAYER_QUEST_LOG_25_3=0x156,
        PLAYER_QUEST_LOG_25_4=0x157,
        PLAYER_VISIBLE_ITEM_1_CREATOR=0x158,
        PLAYER_VISIBLE_ITEM_1_0=0x15A,
        PLAYER_VISIBLE_ITEM_1_PROPERTIES=0x166,
        PLAYER_VISIBLE_ITEM_1_PAD=0x167,
        PLAYER_VISIBLE_ITEM_2_CREATOR=0x168,
        PLAYER_VISIBLE_ITEM_2_0=0x16A,
        PLAYER_VISIBLE_ITEM_2_PROPERTIES=0x176,
        PLAYER_VISIBLE_ITEM_2_PAD=0x177,
        PLAYER_VISIBLE_ITEM_3_CREATOR=0x178,
        PLAYER_VISIBLE_ITEM_3_0=0x17A,
        PLAYER_VISIBLE_ITEM_3_PROPERTIES=0x186,
        PLAYER_VISIBLE_ITEM_3_PAD=0x187,
        PLAYER_VISIBLE_ITEM_4_CREATOR=0x188,
        PLAYER_VISIBLE_ITEM_4_0=0x18A,
        PLAYER_VISIBLE_ITEM_4_PROPERTIES=0x196,
        PLAYER_VISIBLE_ITEM_4_PAD=0x197,
        PLAYER_VISIBLE_ITEM_5_CREATOR=0x198,
        PLAYER_VISIBLE_ITEM_5_0=0x19A,
        PLAYER_VISIBLE_ITEM_5_PROPERTIES=0x1A6,
        PLAYER_VISIBLE_ITEM_5_PAD=0x1A7,
        PLAYER_VISIBLE_ITEM_6_CREATOR=0x1A8,
        PLAYER_VISIBLE_ITEM_6_0=0x1AA,
        PLAYER_VISIBLE_ITEM_6_PROPERTIES=0x1B6,
        PLAYER_VISIBLE_ITEM_6_PAD=0x1B7,
        PLAYER_VISIBLE_ITEM_7_CREATOR=0x1B8,
        PLAYER_VISIBLE_ITEM_7_0=0x1BA,
        PLAYER_VISIBLE_ITEM_7_PROPERTIES=0x1C6,
        PLAYER_VISIBLE_ITEM_7_PAD=0x1C7,
        PLAYER_VISIBLE_ITEM_8_CREATOR=0x1C8,
        PLAYER_VISIBLE_ITEM_8_0=0x1CA,
        PLAYER_VISIBLE_ITEM_8_PROPERTIES=0x1D6,
        PLAYER_VISIBLE_ITEM_8_PAD=0x1D7,
        PLAYER_VISIBLE_ITEM_9_CREATOR=0x1D8,
        PLAYER_VISIBLE_ITEM_9_0=0x1DA,
        PLAYER_VISIBLE_ITEM_9_PROPERTIES=0x1E6,
        PLAYER_VISIBLE_ITEM_9_PAD=0x1E7,
        PLAYER_VISIBLE_ITEM_10_CREATOR=0x1E8,
        PLAYER_VISIBLE_ITEM_10_0=0x1EA,
        PLAYER_VISIBLE_ITEM_10_PROPERTIES=0x1F6,
        PLAYER_VISIBLE_ITEM_10_PAD=0x1F7,
        PLAYER_VISIBLE_ITEM_11_CREATOR=0x1F8,
        PLAYER_VISIBLE_ITEM_11_0=0x1FA,
        PLAYER_VISIBLE_ITEM_11_PROPERTIES=0x206,
        PLAYER_VISIBLE_ITEM_11_PAD=0x207,
        PLAYER_VISIBLE_ITEM_12_CREATOR=0x208,
        PLAYER_VISIBLE_ITEM_12_0=0x20A,
        PLAYER_VISIBLE_ITEM_12_PROPERTIES=0x216,
        PLAYER_VISIBLE_ITEM_12_PAD=0x217,
        PLAYER_VISIBLE_ITEM_13_CREATOR=0x218,
        PLAYER_VISIBLE_ITEM_13_0=0x21A,
        PLAYER_VISIBLE_ITEM_13_PROPERTIES=0x226,
        PLAYER_VISIBLE_ITEM_13_PAD=0x227,
        PLAYER_VISIBLE_ITEM_14_CREATOR=0x228,
        PLAYER_VISIBLE_ITEM_14_0=0x22A,
        PLAYER_VISIBLE_ITEM_14_PROPERTIES=0x236,
        PLAYER_VISIBLE_ITEM_14_PAD=0x237,
        PLAYER_VISIBLE_ITEM_15_CREATOR=0x238,
        PLAYER_VISIBLE_ITEM_15_0=0x23A,
        PLAYER_VISIBLE_ITEM_15_PROPERTIES=0x246,
        PLAYER_VISIBLE_ITEM_15_PAD=0x247,
        PLAYER_VISIBLE_ITEM_16_CREATOR=0x248,
        PLAYER_VISIBLE_ITEM_16_0=0x24A,
        PLAYER_VISIBLE_ITEM_16_PROPERTIES=0x256,
        PLAYER_VISIBLE_ITEM_16_PAD=0x257,
        PLAYER_VISIBLE_ITEM_17_CREATOR=0x258,
        PLAYER_VISIBLE_ITEM_17_0=0x25A,
        PLAYER_VISIBLE_ITEM_17_PROPERTIES=0x266,
        PLAYER_VISIBLE_ITEM_17_PAD=0x267,
        PLAYER_VISIBLE_ITEM_18_CREATOR=0x268,
        PLAYER_VISIBLE_ITEM_18_0=0x26A,
        PLAYER_VISIBLE_ITEM_18_PROPERTIES=0x276,
        PLAYER_VISIBLE_ITEM_18_PAD=0x277,
        PLAYER_VISIBLE_ITEM_19_CREATOR=0x278,
        PLAYER_VISIBLE_ITEM_19_0=0x27A,
        PLAYER_VISIBLE_ITEM_19_PROPERTIES=0x286,
        PLAYER_VISIBLE_ITEM_19_PAD=0x287,
        PLAYER_CHOSEN_TITLE=0x288,
        PLAYER_FIELD_PAD_0=0x289,
        PLAYER_FIELD_INV_SLOT_HEAD=0x28A,
        PLAYER_FIELD_PACK_SLOT_1=0x2B8,
        PLAYER_FIELD_BANK_SLOT_1=0x2D8,
        PLAYER_FIELD_BANKBAG_SLOT_1=0x310,
        PLAYER_FIELD_VENDORBUYBACK_SLOT_1=0x31E,
        PLAYER_FIELD_KEYRING_SLOT_1=0x336,
        PLAYER_FIELD_VANITYPET_SLOT_1=0x376,
        PLAYER_FARSIGHT=0x39A,
        PLAYER__FIELD_KNOWN_TITLES=0x39C,
        PLAYER_XP=0x39E,
        PLAYER_NEXT_LEVEL_XP=0x39F,
        PLAYER_SKILL_INFO_1_1=0x3A0,
        PLAYER_CHARACTER_POINTS1=0x520,
        PLAYER_CHARACTER_POINTS2=0x521,
        PLAYER_TRACK_CREATURES=0x522,
        PLAYER_TRACK_RESOURCES=0x523,
        PLAYER_BLOCK_PERCENTAGE=0x524,
        PLAYER_DODGE_PERCENTAGE=0x525,
        PLAYER_PARRY_PERCENTAGE=0x526,
        PLAYER_EXPERTISE=0x527,
        PLAYER_OFFHAND_EXPERTISE=0x528,
        PLAYER_CRIT_PERCENTAGE=0x529,
        PLAYER_RANGED_CRIT_PERCENTAGE=0x52A,
        PLAYER_OFFHAND_CRIT_PERCENTAGE=0x52B,
        PLAYER_SPELL_CRIT_PERCENTAGE1=0x52C,
        PLAYER_SHIELD_BLOCK=0x533,
        PLAYER_EXPLORED_ZONES_1=0x534,
        PLAYER_REST_STATE_EXPERIENCE=0x5B4,
        PLAYER_FIELD_COINAGE=0x5B5,
        PLAYER_FIELD_MOD_DAMAGE_DONE_POS=0x5B6,
        PLAYER_FIELD_MOD_DAMAGE_DONE_NEG=0x5BD,
        PLAYER_FIELD_MOD_DAMAGE_DONE_PCT=0x5C4,
        PLAYER_FIELD_MOD_HEALING_DONE_POS=0x5CB,
        PLAYER_FIELD_MOD_TARGET_RESISTANCE=0x5CC,
        PLAYER_FIELD_MOD_TARGET_PHYSICAL_RESISTANCE=0x5CD,
        PLAYER_FIELD_BYTES=0x5CE,
        PLAYER_AMMO_ID=0x5CF,
        PLAYER_SELF_RES_SPELL=0x5D0,
        PLAYER_FIELD_PVP_MEDALS=0x5D1,
        PLAYER_FIELD_BUYBACK_PRICE_1=0x5D2,
        PLAYER_FIELD_BUYBACK_TIMESTAMP_1=0x5DE,
        PLAYER_FIELD_KILLS=0x5EA,
        PLAYER_FIELD_TODAY_CONTRIBUTION=0x5EB,
        PLAYER_FIELD_YESTERDAY_CONTRIBUTION=0x5EC,
        PLAYER_FIELD_LIFETIME_HONORBALE_KILLS=0x5ED,
        PLAYER_FIELD_BYTES2=0x5EE,
        PLAYER_FIELD_WATCHED_FACTION_INDEX=0x5EF,
        PLAYER_FIELD_COMBAT_RATING_1=0x5F0,
        PLAYER_FIELD_ARENA_TEAM_INFO_1_1=0x608,
        PLAYER_FIELD_HONOR_CURRENCY=0x61A,
        PLAYER_FIELD_ARENA_CURRENCY=0x61B,
        PLAYER_FIELD_MOD_MANA_REGEN=0x61C,
        PLAYER_FIELD_MOD_MANA_REGEN_INTERRUPT=0x61D,
        PLAYER_FIELD_MAX_LEVEL=0x61E,
        PLAYER_FIELD_DAILY_QUESTS_1=0x61F,
        TOTAL_PLAYER_FIELDS=0xF2
    };
     
    enum eItemFields {
        ITEM_FIELD_OWNER=0x6,
        ITEM_FIELD_CONTAINED=0x8,
        ITEM_FIELD_CREATOR=0xA,
        ITEM_FIELD_GIFTCREATOR=0xC,
        ITEM_FIELD_STACK_COUNT=0xE,
        ITEM_FIELD_DURATION=0xF,
        ITEM_FIELD_SPELL_CHARGES=0x10,
        ITEM_FIELD_FLAGS=0x15,
        ITEM_FIELD_ENCHANTMENT=0x16,
        ITEM_FIELD_PROPERTY_SEED=0x37,
        ITEM_FIELD_RANDOM_PROPERTIES_ID=0x38,
        ITEM_FIELD_ITEM_TEXT_ID=0x39,
        ITEM_FIELD_DURABILITY=0x3A,
        ITEM_FIELD_MAXDURABILITY=0x3B,
        TOTAL_ITEM_FIELDS=0xE
    };
     
    enum eContainerFields {
        CONTAINER_FIELD_NUM_SLOTS=0x6,
        CONTAINER_ALIGN_PAD=0x7,
        CONTAINER_FIELD_SLOT_1=0x8,
        TOTAL_CONTAINER_FIELDS=0x3
    };
     
    enum eGameObjectFields {
        OBJECT_FIELD_CREATED_BY=0x6,
        GAMEOBJECT_DISPLAYID=0x8,
        GAMEOBJECT_FLAGS=0x9,
        GAMEOBJECT_ROTATION=0xA,
        GAMEOBJECT_STATE=0xE,
        GAMEOBJECT_POS_X=0xF,
        GAMEOBJECT_POS_Y=0x10,
        GAMEOBJECT_POS_Z=0x11,
        GAMEOBJECT_FACING=0x12,
        GAMEOBJECT_DYN_FLAGS=0x13,
        GAMEOBJECT_FACTION=0x14,
        GAMEOBJECT_TYPE_ID=0x15,
        GAMEOBJECT_LEVEL=0x16,
        GAMEOBJECT_ARTKIT=0x17,
        GAMEOBJECT_ANIMPROGRESS=0x18,
        GAMEOBJECT_PADDING=0x19,
        TOTAL_GAMEOBJECT_FIELDS=0x10
    };
     
    enum eDynamicObjectFields {
        DYNAMICOBJECT_CASTER=0x6,
        DYNAMICOBJECT_BYTES=0x8,
        DYNAMICOBJECT_SPELLID=0x9,
        DYNAMICOBJECT_RADIUS=0xA,
        DYNAMICOBJECT_POS_X=0xB,
        DYNAMICOBJECT_POS_Y=0xC,
        DYNAMICOBJECT_POS_Z=0xD,
        DYNAMICOBJECT_FACING=0xE,
        DYNAMICOBJECT_CASTTIME=0xF,
        TOTAL_DYNAMICOBJECT_FIELDS=0x9
    };
     
    enum eCorpseFields {
        CORPSE_FIELD_OWNER=0x6,
        CORPSE_FIELD_PARTY=0x8,
        CORPSE_FIELD_FACING=0xA,
        CORPSE_FIELD_POS_X=0xB,
        CORPSE_FIELD_POS_Y=0xC,
        CORPSE_FIELD_POS_Z=0xD,
        CORPSE_FIELD_DISPLAY_ID=0xE,
        CORPSE_FIELD_ITEM=0xF,
        CORPSE_FIELD_BYTES_1=0x22,
        CORPSE_FIELD_BYTES_2=0x23,
        CORPSE_FIELD_GUILD=0x24,
        CORPSE_FIELD_FLAGS=0x25,
        CORPSE_FIELD_DYNAMIC_FLAGS=0x26,
        CORPSE_FIELD_PAD=0x27,
        TOTAL_CORPSE_FIELDS=0xE
    };
    Here's how to access them: (Relevant code only)
    Code:
    class CGObject_C
    {
    // SNIP
    unsigned int pStorage1;                // 0x0008 - 0x000C
    // SNIP
    }
    
    template<typename T>
    T CGObject_C::GetKnownField(unsigned int Field)
    {
        try
        {
            T* pMyStorage = (T*)(pStorage1);
            return pMyStorage[Field];
        }
        catch (...)
        {
            gpLog->Add("Failed to get field %i", Field);
        }
        return (T)0;
    Called like this:
    CGObject_C * pMyObject = reinterpret_cast<CGObject_C*>(0xDEADBEEF);
    int UnitFieldBlahVal = pMyObject->GetKnownField<unsigned long>(UNIT_FIELD_BLAH);

    A second way to access it is with the pStorage pointer at 120h.

    This particular pointer does NOT use inheritance for the enums and instead points directly into the descriptors of the current type, so you cannot for example use it on a player and access the unit fields. As such you're better off using the pointer at 0x8 but you should be aware of the pointer at 0x120 because it's used in WoW often.

    Note: Obviously the code is designed for C++. Its easy to convert to direct memory access. Just use the pointer and multiply the descriptor offset by 4 (because you're using pointer arithmetic rather than array access).
    Last edited by Cypher; 09-16-2008 at 01:42 AM.

  3. #3
    Nesox's Avatar ★ Elder ★
    Reputation
    1280
    Join Date
    Mar 2007
    Posts
    1,238
    Thanks G/R
    0/3
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Cypher View Post
    YOU"RE DOING IT WRONG!

    No, really.

    Heres the enums in case yours don't have inheritance and are using the multiplied value:
    Code:
    // WoW Info - Dumped by Cypher (Project Red Pill)
    // Credits: Kynox, Bobbysing, Greyman
    // WoW Build: WoW [Release] Build 8606 (Jul 10 2008 11:43:23)
     
    enum eObjectFields {
        OBJECT_FIELD_GUID=0x0,
        OBJECT_FIELD_TYPE=0x2,
        OBJECT_FIELD_ENTRY=0x3,
        OBJECT_FIELD_SCALE_X=0x4,
        OBJECT_FIELD_PADDING=0x5,
        TOTAL_OBJECT_FIELDS=0x5
    };
     
    enum eUnitFields {
        UNIT_FIELD_CHARM=0x6,
        UNIT_FIELD_SUMMON=0x8,
        UNIT_FIELD_CHARMEDBY=0xA,
        UNIT_FIELD_SUMMONEDBY=0xC,
        UNIT_FIELD_CREATEDBY=0xE,
        UNIT_FIELD_TARGET=0x10,
        UNIT_FIELD_PERSUADED=0x12,
        UNIT_FIELD_CHANNEL_OBJECT=0x14,
        UNIT_FIELD_HEALTH=0x16,
        UNIT_FIELD_POWER1=0x17,
        UNIT_FIELD_POWER2=0x18,
        UNIT_FIELD_POWER3=0x19,
        UNIT_FIELD_POWER4=0x1A,
        UNIT_FIELD_POWER5=0x1B,
        UNIT_FIELD_MAXHEALTH=0x1C,
        UNIT_FIELD_MAXPOWER1=0x1D,
        UNIT_FIELD_MAXPOWER2=0x1E,
        UNIT_FIELD_MAXPOWER3=0x1F,
        UNIT_FIELD_MAXPOWER4=0x20,
        UNIT_FIELD_MAXPOWER5=0x21,
        UNIT_FIELD_LEVEL=0x22,
        UNIT_FIELD_FACTIONTEMPLATE=0x23,
        UNIT_FIELD_BYTES_0=0x24,
        UNIT_VIRTUAL_ITEM_SLOT_DISPLAY=0x25,
        UNIT_VIRTUAL_ITEM_INFO=0x28,
        UNIT_FIELD_FLAGS=0x2E,
        UNIT_FIELD_FLAGS_2=0x2F,
        UNIT_FIELD_AURA=0x30,
        UNIT_FIELD_AURAFLAGS=0x68,
        UNIT_FIELD_AURALEVELS=0x76,
        UNIT_FIELD_AURAAPPLICATIONS=0x84,
        UNIT_FIELD_AURASTATE=0x92,
        UNIT_FIELD_BASEATTACKTIME=0x93,
        UNIT_FIELD_RANGEDATTACKTIME=0x95,
        UNIT_FIELD_BOUNDINGRADIUS=0x96,
        UNIT_FIELD_COMBATREACH=0x97,
        UNIT_FIELD_DISPLAYID=0x98,
        UNIT_FIELD_NATIVEDISPLAYID=0x99,
        UNIT_FIELD_MOUNTDISPLAYID=0x9A,
        UNIT_FIELD_MINDAMAGE=0x9B,
        UNIT_FIELD_MAXDAMAGE=0x9C,
        UNIT_FIELD_MINOFFHANDDAMAGE=0x9D,
        UNIT_FIELD_MAXOFFHANDDAMAGE=0x9E,
        UNIT_FIELD_BYTES_1=0x9F,
        UNIT_FIELD_PETNUMBER=0xA0,
        UNIT_FIELD_PET_NAME_TIMESTAMP=0xA1,
        UNIT_FIELD_PETEXPERIENCE=0xA2,
        UNIT_FIELD_PETNEXTLEVELEXP=0xA3,
        UNIT_DYNAMIC_FLAGS=0xA4,
        UNIT_CHANNEL_SPELL=0xA5,
        UNIT_MOD_CAST_SPEED=0xA6,
        UNIT_CREATED_BY_SPELL=0xA7,
        UNIT_NPC_FLAGS=0xA8,
        UNIT_NPC_EMOTESTATE=0xA9,
        UNIT_TRAINING_POINTS=0xAA,
        UNIT_FIELD_STAT0=0xAB,
        UNIT_FIELD_STAT1=0xAC,
        UNIT_FIELD_STAT2=0xAD,
        UNIT_FIELD_STAT3=0xAE,
        UNIT_FIELD_STAT4=0xAF,
        UNIT_FIELD_POSSTAT0=0xB0,
        UNIT_FIELD_POSSTAT1=0xB1,
        UNIT_FIELD_POSSTAT2=0xB2,
        UNIT_FIELD_POSSTAT3=0xB3,
        UNIT_FIELD_POSSTAT4=0xB4,
        UNIT_FIELD_NEGSTAT0=0xB5,
        UNIT_FIELD_NEGSTAT1=0xB6,
        UNIT_FIELD_NEGSTAT2=0xB7,
        UNIT_FIELD_NEGSTAT3=0xB8,
        UNIT_FIELD_NEGSTAT4=0xB9,
        UNIT_FIELD_RESISTANCES=0xBA,
        UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE=0xC1,
        UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE=0xC8,
        UNIT_FIELD_BASE_MANA=0xCF,
        UNIT_FIELD_BASE_HEALTH=0xD0,
        UNIT_FIELD_BYTES_2=0xD1,
        UNIT_FIELD_ATTACK_POWER=0xD2,
        UNIT_FIELD_ATTACK_POWER_MODS=0xD3,
        UNIT_FIELD_ATTACK_POWER_MULTIPLIER=0xD4,
        UNIT_FIELD_RANGED_ATTACK_POWER=0xD5,
        UNIT_FIELD_RANGED_ATTACK_POWER_MODS=0xD6,
        UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER=0xD7,
        UNIT_FIELD_MINRANGEDDAMAGE=0xD8,
        UNIT_FIELD_MAXRANGEDDAMAGE=0xD9,
        UNIT_FIELD_POWER_COST_MODIFIER=0xDA,
        UNIT_FIELD_POWER_COST_MULTIPLIER=0xE1,
        UNIT_FIELD_MAXHEALTHMODIFIER=0xE8,
        UNIT_FIELD_PADDING=0xE9,
        TOTAL_UNIT_FIELDS=0x58
    };
     
    enum ePlayerFields {
        PLAYER_DUEL_ARBITER=0xEA,
        PLAYER_FLAGS=0xEC,
        PLAYER_GUILDID=0xED,
        PLAYER_GUILDRANK=0xEE,
        PLAYER_BYTES=0xEF,
        PLAYER_BYTES_2=0xF0,
        PLAYER_BYTES_3=0xF1,
        PLAYER_DUEL_TEAM=0xF2,
        PLAYER_GUILD_TIMESTAMP=0xF3,
        PLAYER_QUEST_LOG_1_1=0xF4,
        PLAYER_QUEST_LOG_1_2=0xF5,
        PLAYER_QUEST_LOG_1_3=0xF6,
        PLAYER_QUEST_LOG_1_4=0xF7,
        PLAYER_QUEST_LOG_2_1=0xF8,
        PLAYER_QUEST_LOG_2_2=0xF9,
        PLAYER_QUEST_LOG_2_3=0xFA,
        PLAYER_QUEST_LOG_2_4=0xFB,
        PLAYER_QUEST_LOG_3_1=0xFC,
        PLAYER_QUEST_LOG_3_2=0xFD,
        PLAYER_QUEST_LOG_3_3=0xFE,
        PLAYER_QUEST_LOG_3_4=0xFF,
        PLAYER_QUEST_LOG_4_1=0x100,
        PLAYER_QUEST_LOG_4_2=0x101,
        PLAYER_QUEST_LOG_4_3=0x102,
        PLAYER_QUEST_LOG_4_4=0x103,
        PLAYER_QUEST_LOG_5_1=0x104,
        PLAYER_QUEST_LOG_5_2=0x105,
        PLAYER_QUEST_LOG_5_3=0x106,
        PLAYER_QUEST_LOG_5_4=0x107,
        PLAYER_QUEST_LOG_6_1=0x108,
        PLAYER_QUEST_LOG_6_2=0x109,
        PLAYER_QUEST_LOG_6_3=0x10A,
        PLAYER_QUEST_LOG_6_4=0x10B,
        PLAYER_QUEST_LOG_7_1=0x10C,
        PLAYER_QUEST_LOG_7_2=0x10D,
        PLAYER_QUEST_LOG_7_3=0x10E,
        PLAYER_QUEST_LOG_7_4=0x10F,
        PLAYER_QUEST_LOG_8_1=0x110,
        PLAYER_QUEST_LOG_8_2=0x111,
        PLAYER_QUEST_LOG_8_3=0x112,
        PLAYER_QUEST_LOG_8_4=0x113,
        PLAYER_QUEST_LOG_9_1=0x114,
        PLAYER_QUEST_LOG_9_2=0x115,
        PLAYER_QUEST_LOG_9_3=0x116,
        PLAYER_QUEST_LOG_9_4=0x117,
        PLAYER_QUEST_LOG_10_1=0x118,
        PLAYER_QUEST_LOG_10_2=0x119,
        PLAYER_QUEST_LOG_10_3=0x11A,
        PLAYER_QUEST_LOG_10_4=0x11B,
        PLAYER_QUEST_LOG_11_1=0x11C,
        PLAYER_QUEST_LOG_11_2=0x11D,
        PLAYER_QUEST_LOG_11_3=0x11E,
        PLAYER_QUEST_LOG_11_4=0x11F,
        PLAYER_QUEST_LOG_12_1=0x120,
        PLAYER_QUEST_LOG_12_2=0x121,
        PLAYER_QUEST_LOG_12_3=0x122,
        PLAYER_QUEST_LOG_12_4=0x123,
        PLAYER_QUEST_LOG_13_1=0x124,
        PLAYER_QUEST_LOG_13_2=0x125,
        PLAYER_QUEST_LOG_13_3=0x126,
        PLAYER_QUEST_LOG_13_4=0x127,
        PLAYER_QUEST_LOG_14_1=0x128,
        PLAYER_QUEST_LOG_14_2=0x129,
        PLAYER_QUEST_LOG_14_3=0x12A,
        PLAYER_QUEST_LOG_14_4=0x12B,
        PLAYER_QUEST_LOG_15_1=0x12C,
        PLAYER_QUEST_LOG_15_2=0x12D,
        PLAYER_QUEST_LOG_15_3=0x12E,
        PLAYER_QUEST_LOG_15_4=0x12F,
        PLAYER_QUEST_LOG_16_1=0x130,
        PLAYER_QUEST_LOG_16_2=0x131,
        PLAYER_QUEST_LOG_16_3=0x132,
        PLAYER_QUEST_LOG_16_4=0x133,
        PLAYER_QUEST_LOG_17_1=0x134,
        PLAYER_QUEST_LOG_17_2=0x135,
        PLAYER_QUEST_LOG_17_3=0x136,
        PLAYER_QUEST_LOG_17_4=0x137,
        PLAYER_QUEST_LOG_18_1=0x138,
        PLAYER_QUEST_LOG_18_2=0x139,
        PLAYER_QUEST_LOG_18_3=0x13A,
        PLAYER_QUEST_LOG_18_4=0x13B,
        PLAYER_QUEST_LOG_19_1=0x13C,
        PLAYER_QUEST_LOG_19_2=0x13D,
        PLAYER_QUEST_LOG_19_3=0x13E,
        PLAYER_QUEST_LOG_19_4=0x13F,
        PLAYER_QUEST_LOG_20_1=0x140,
        PLAYER_QUEST_LOG_20_2=0x141,
        PLAYER_QUEST_LOG_20_3=0x142,
        PLAYER_QUEST_LOG_20_4=0x143,
        PLAYER_QUEST_LOG_21_1=0x144,
        PLAYER_QUEST_LOG_21_2=0x145,
        PLAYER_QUEST_LOG_21_3=0x146,
        PLAYER_QUEST_LOG_21_4=0x147,
        PLAYER_QUEST_LOG_22_1=0x148,
        PLAYER_QUEST_LOG_22_2=0x149,
        PLAYER_QUEST_LOG_22_3=0x14A,
        PLAYER_QUEST_LOG_22_4=0x14B,
        PLAYER_QUEST_LOG_23_1=0x14C,
        PLAYER_QUEST_LOG_23_2=0x14D,
        PLAYER_QUEST_LOG_23_3=0x14E,
        PLAYER_QUEST_LOG_23_4=0x14F,
        PLAYER_QUEST_LOG_24_1=0x150,
        PLAYER_QUEST_LOG_24_2=0x151,
        PLAYER_QUEST_LOG_24_3=0x152,
        PLAYER_QUEST_LOG_24_4=0x153,
        PLAYER_QUEST_LOG_25_1=0x154,
        PLAYER_QUEST_LOG_25_2=0x155,
        PLAYER_QUEST_LOG_25_3=0x156,
        PLAYER_QUEST_LOG_25_4=0x157,
        PLAYER_VISIBLE_ITEM_1_CREATOR=0x158,
        PLAYER_VISIBLE_ITEM_1_0=0x15A,
        PLAYER_VISIBLE_ITEM_1_PROPERTIES=0x166,
        PLAYER_VISIBLE_ITEM_1_PAD=0x167,
        PLAYER_VISIBLE_ITEM_2_CREATOR=0x168,
        PLAYER_VISIBLE_ITEM_2_0=0x16A,
        PLAYER_VISIBLE_ITEM_2_PROPERTIES=0x176,
        PLAYER_VISIBLE_ITEM_2_PAD=0x177,
        PLAYER_VISIBLE_ITEM_3_CREATOR=0x178,
        PLAYER_VISIBLE_ITEM_3_0=0x17A,
        PLAYER_VISIBLE_ITEM_3_PROPERTIES=0x186,
        PLAYER_VISIBLE_ITEM_3_PAD=0x187,
        PLAYER_VISIBLE_ITEM_4_CREATOR=0x188,
        PLAYER_VISIBLE_ITEM_4_0=0x18A,
        PLAYER_VISIBLE_ITEM_4_PROPERTIES=0x196,
        PLAYER_VISIBLE_ITEM_4_PAD=0x197,
        PLAYER_VISIBLE_ITEM_5_CREATOR=0x198,
        PLAYER_VISIBLE_ITEM_5_0=0x19A,
        PLAYER_VISIBLE_ITEM_5_PROPERTIES=0x1A6,
        PLAYER_VISIBLE_ITEM_5_PAD=0x1A7,
        PLAYER_VISIBLE_ITEM_6_CREATOR=0x1A8,
        PLAYER_VISIBLE_ITEM_6_0=0x1AA,
        PLAYER_VISIBLE_ITEM_6_PROPERTIES=0x1B6,
        PLAYER_VISIBLE_ITEM_6_PAD=0x1B7,
        PLAYER_VISIBLE_ITEM_7_CREATOR=0x1B8,
        PLAYER_VISIBLE_ITEM_7_0=0x1BA,
        PLAYER_VISIBLE_ITEM_7_PROPERTIES=0x1C6,
        PLAYER_VISIBLE_ITEM_7_PAD=0x1C7,
        PLAYER_VISIBLE_ITEM_8_CREATOR=0x1C8,
        PLAYER_VISIBLE_ITEM_8_0=0x1CA,
        PLAYER_VISIBLE_ITEM_8_PROPERTIES=0x1D6,
        PLAYER_VISIBLE_ITEM_8_PAD=0x1D7,
        PLAYER_VISIBLE_ITEM_9_CREATOR=0x1D8,
        PLAYER_VISIBLE_ITEM_9_0=0x1DA,
        PLAYER_VISIBLE_ITEM_9_PROPERTIES=0x1E6,
        PLAYER_VISIBLE_ITEM_9_PAD=0x1E7,
        PLAYER_VISIBLE_ITEM_10_CREATOR=0x1E8,
        PLAYER_VISIBLE_ITEM_10_0=0x1EA,
        PLAYER_VISIBLE_ITEM_10_PROPERTIES=0x1F6,
        PLAYER_VISIBLE_ITEM_10_PAD=0x1F7,
        PLAYER_VISIBLE_ITEM_11_CREATOR=0x1F8,
        PLAYER_VISIBLE_ITEM_11_0=0x1FA,
        PLAYER_VISIBLE_ITEM_11_PROPERTIES=0x206,
        PLAYER_VISIBLE_ITEM_11_PAD=0x207,
        PLAYER_VISIBLE_ITEM_12_CREATOR=0x208,
        PLAYER_VISIBLE_ITEM_12_0=0x20A,
        PLAYER_VISIBLE_ITEM_12_PROPERTIES=0x216,
        PLAYER_VISIBLE_ITEM_12_PAD=0x217,
        PLAYER_VISIBLE_ITEM_13_CREATOR=0x218,
        PLAYER_VISIBLE_ITEM_13_0=0x21A,
        PLAYER_VISIBLE_ITEM_13_PROPERTIES=0x226,
        PLAYER_VISIBLE_ITEM_13_PAD=0x227,
        PLAYER_VISIBLE_ITEM_14_CREATOR=0x228,
        PLAYER_VISIBLE_ITEM_14_0=0x22A,
        PLAYER_VISIBLE_ITEM_14_PROPERTIES=0x236,
        PLAYER_VISIBLE_ITEM_14_PAD=0x237,
        PLAYER_VISIBLE_ITEM_15_CREATOR=0x238,
        PLAYER_VISIBLE_ITEM_15_0=0x23A,
        PLAYER_VISIBLE_ITEM_15_PROPERTIES=0x246,
        PLAYER_VISIBLE_ITEM_15_PAD=0x247,
        PLAYER_VISIBLE_ITEM_16_CREATOR=0x248,
        PLAYER_VISIBLE_ITEM_16_0=0x24A,
        PLAYER_VISIBLE_ITEM_16_PROPERTIES=0x256,
        PLAYER_VISIBLE_ITEM_16_PAD=0x257,
        PLAYER_VISIBLE_ITEM_17_CREATOR=0x258,
        PLAYER_VISIBLE_ITEM_17_0=0x25A,
        PLAYER_VISIBLE_ITEM_17_PROPERTIES=0x266,
        PLAYER_VISIBLE_ITEM_17_PAD=0x267,
        PLAYER_VISIBLE_ITEM_18_CREATOR=0x268,
        PLAYER_VISIBLE_ITEM_18_0=0x26A,
        PLAYER_VISIBLE_ITEM_18_PROPERTIES=0x276,
        PLAYER_VISIBLE_ITEM_18_PAD=0x277,
        PLAYER_VISIBLE_ITEM_19_CREATOR=0x278,
        PLAYER_VISIBLE_ITEM_19_0=0x27A,
        PLAYER_VISIBLE_ITEM_19_PROPERTIES=0x286,
        PLAYER_VISIBLE_ITEM_19_PAD=0x287,
        PLAYER_CHOSEN_TITLE=0x288,
        PLAYER_FIELD_PAD_0=0x289,
        PLAYER_FIELD_INV_SLOT_HEAD=0x28A,
        PLAYER_FIELD_PACK_SLOT_1=0x2B8,
        PLAYER_FIELD_BANK_SLOT_1=0x2D8,
        PLAYER_FIELD_BANKBAG_SLOT_1=0x310,
        PLAYER_FIELD_VENDORBUYBACK_SLOT_1=0x31E,
        PLAYER_FIELD_KEYRING_SLOT_1=0x336,
        PLAYER_FIELD_VANITYPET_SLOT_1=0x376,
        PLAYER_FARSIGHT=0x39A,
        PLAYER__FIELD_KNOWN_TITLES=0x39C,
        PLAYER_XP=0x39E,
        PLAYER_NEXT_LEVEL_XP=0x39F,
        PLAYER_SKILL_INFO_1_1=0x3A0,
        PLAYER_CHARACTER_POINTS1=0x520,
        PLAYER_CHARACTER_POINTS2=0x521,
        PLAYER_TRACK_CREATURES=0x522,
        PLAYER_TRACK_RESOURCES=0x523,
        PLAYER_BLOCK_PERCENTAGE=0x524,
        PLAYER_DODGE_PERCENTAGE=0x525,
        PLAYER_PARRY_PERCENTAGE=0x526,
        PLAYER_EXPERTISE=0x527,
        PLAYER_OFFHAND_EXPERTISE=0x528,
        PLAYER_CRIT_PERCENTAGE=0x529,
        PLAYER_RANGED_CRIT_PERCENTAGE=0x52A,
        PLAYER_OFFHAND_CRIT_PERCENTAGE=0x52B,
        PLAYER_SPELL_CRIT_PERCENTAGE1=0x52C,
        PLAYER_SHIELD_BLOCK=0x533,
        PLAYER_EXPLORED_ZONES_1=0x534,
        PLAYER_REST_STATE_EXPERIENCE=0x5B4,
        PLAYER_FIELD_COINAGE=0x5B5,
        PLAYER_FIELD_MOD_DAMAGE_DONE_POS=0x5B6,
        PLAYER_FIELD_MOD_DAMAGE_DONE_NEG=0x5BD,
        PLAYER_FIELD_MOD_DAMAGE_DONE_PCT=0x5C4,
        PLAYER_FIELD_MOD_HEALING_DONE_POS=0x5CB,
        PLAYER_FIELD_MOD_TARGET_RESISTANCE=0x5CC,
        PLAYER_FIELD_MOD_TARGET_PHYSICAL_RESISTANCE=0x5CD,
        PLAYER_FIELD_BYTES=0x5CE,
        PLAYER_AMMO_ID=0x5CF,
        PLAYER_SELF_RES_SPELL=0x5D0,
        PLAYER_FIELD_PVP_MEDALS=0x5D1,
        PLAYER_FIELD_BUYBACK_PRICE_1=0x5D2,
        PLAYER_FIELD_BUYBACK_TIMESTAMP_1=0x5DE,
        PLAYER_FIELD_KILLS=0x5EA,
        PLAYER_FIELD_TODAY_CONTRIBUTION=0x5EB,
        PLAYER_FIELD_YESTERDAY_CONTRIBUTION=0x5EC,
        PLAYER_FIELD_LIFETIME_HONORBALE_KILLS=0x5ED,
        PLAYER_FIELD_BYTES2=0x5EE,
        PLAYER_FIELD_WATCHED_FACTION_INDEX=0x5EF,
        PLAYER_FIELD_COMBAT_RATING_1=0x5F0,
        PLAYER_FIELD_ARENA_TEAM_INFO_1_1=0x608,
        PLAYER_FIELD_HONOR_CURRENCY=0x61A,
        PLAYER_FIELD_ARENA_CURRENCY=0x61B,
        PLAYER_FIELD_MOD_MANA_REGEN=0x61C,
        PLAYER_FIELD_MOD_MANA_REGEN_INTERRUPT=0x61D,
        PLAYER_FIELD_MAX_LEVEL=0x61E,
        PLAYER_FIELD_DAILY_QUESTS_1=0x61F,
        TOTAL_PLAYER_FIELDS=0xF2
    };
     
    enum eItemFields {
        ITEM_FIELD_OWNER=0x6,
        ITEM_FIELD_CONTAINED=0x8,
        ITEM_FIELD_CREATOR=0xA,
        ITEM_FIELD_GIFTCREATOR=0xC,
        ITEM_FIELD_STACK_COUNT=0xE,
        ITEM_FIELD_DURATION=0xF,
        ITEM_FIELD_SPELL_CHARGES=0x10,
        ITEM_FIELD_FLAGS=0x15,
        ITEM_FIELD_ENCHANTMENT=0x16,
        ITEM_FIELD_PROPERTY_SEED=0x37,
        ITEM_FIELD_RANDOM_PROPERTIES_ID=0x38,
        ITEM_FIELD_ITEM_TEXT_ID=0x39,
        ITEM_FIELD_DURABILITY=0x3A,
        ITEM_FIELD_MAXDURABILITY=0x3B,
        TOTAL_ITEM_FIELDS=0xE
    };
     
    enum eContainerFields {
        CONTAINER_FIELD_NUM_SLOTS=0x6,
        CONTAINER_ALIGN_PAD=0x7,
        CONTAINER_FIELD_SLOT_1=0x8,
        TOTAL_CONTAINER_FIELDS=0x3
    };
     
    enum eGameObjectFields {
        OBJECT_FIELD_CREATED_BY=0x6,
        GAMEOBJECT_DISPLAYID=0x8,
        GAMEOBJECT_FLAGS=0x9,
        GAMEOBJECT_ROTATION=0xA,
        GAMEOBJECT_STATE=0xE,
        GAMEOBJECT_POS_X=0xF,
        GAMEOBJECT_POS_Y=0x10,
        GAMEOBJECT_POS_Z=0x11,
        GAMEOBJECT_FACING=0x12,
        GAMEOBJECT_DYN_FLAGS=0x13,
        GAMEOBJECT_FACTION=0x14,
        GAMEOBJECT_TYPE_ID=0x15,
        GAMEOBJECT_LEVEL=0x16,
        GAMEOBJECT_ARTKIT=0x17,
        GAMEOBJECT_ANIMPROGRESS=0x18,
        GAMEOBJECT_PADDING=0x19,
        TOTAL_GAMEOBJECT_FIELDS=0x10
    };
     
    enum eDynamicObjectFields {
        DYNAMICOBJECT_CASTER=0x6,
        DYNAMICOBJECT_BYTES=0x8,
        DYNAMICOBJECT_SPELLID=0x9,
        DYNAMICOBJECT_RADIUS=0xA,
        DYNAMICOBJECT_POS_X=0xB,
        DYNAMICOBJECT_POS_Y=0xC,
        DYNAMICOBJECT_POS_Z=0xD,
        DYNAMICOBJECT_FACING=0xE,
        DYNAMICOBJECT_CASTTIME=0xF,
        TOTAL_DYNAMICOBJECT_FIELDS=0x9
    };
     
    enum eCorpseFields {
        CORPSE_FIELD_OWNER=0x6,
        CORPSE_FIELD_PARTY=0x8,
        CORPSE_FIELD_FACING=0xA,
        CORPSE_FIELD_POS_X=0xB,
        CORPSE_FIELD_POS_Y=0xC,
        CORPSE_FIELD_POS_Z=0xD,
        CORPSE_FIELD_DISPLAY_ID=0xE,
        CORPSE_FIELD_ITEM=0xF,
        CORPSE_FIELD_BYTES_1=0x22,
        CORPSE_FIELD_BYTES_2=0x23,
        CORPSE_FIELD_GUILD=0x24,
        CORPSE_FIELD_FLAGS=0x25,
        CORPSE_FIELD_DYNAMIC_FLAGS=0x26,
        CORPSE_FIELD_PAD=0x27,
        TOTAL_CORPSE_FIELDS=0xE
    };
    Here's how to access them: (Relevant code only)
    Code:
    class CGObject_C
    {
    // SNIP
    unsigned int pStorage1;                // 0x0008 - 0x000C
    // SNIP
    }
    
    template<typename T>
    T CGObject_C::GetKnownField(unsigned int Field)
    {
        try
        {
            T* pMyStorage = (T*)(pStorage1);
            return pMyStorage[Field];
        }
        catch (...)
        {
            gpLog->Add("Failed to get field %i", Field);
        }
        return (T)0;
    Called like this:
    CGObject_C * pMyObject = reinterpret_cast<CGObject_C*>(0xDEADBEEF);
    int UnitFieldBlahVal = pMyObject->GetKnownField<unsigned long>(UNIT_FIELD_BLAH);

    A second way to access it is with the pStorage pointer at 120h.

    This particular pointer does NOT use inheritance for the enums and instead points directly into the descriptors of the current type, so you cannot for example use it on a player and access the unit fields. As such you're better off using the pointer at 0x8 but you should be aware of the pointer at 0x120 because it's used in WoW often.

    Note: Obviously the code is designed for C++. Its easy to convert to direct memory access. Just use the pointer and multiply the descriptor offset by 4 (because you're using pointer arithmetic rather than array access).
    Hi, thx for the reply i was out for a drive so i havent been able to answer until now. Im using the offsets from
    http://www.mmowned.com/forums/wow-me...addresses.html

    for w/e in unitField it works great

    i just go throug the list of objects find the object with the same GUID as my LocalGUID to get the Baseadress of my character then add 0x120

    Code:
    uint eUnitFieldPointer = PlayerBase + 0x120;
    int level = 0;
    and then read ie. level..

    Code:
    level = ReadInt(hProcess, (ReadUInt(hProcess, ePlayerFieldPointer) + 0x70));
    it returns the correct level altho if i try

    Code:
    uint ePlayerFieldPointer = PlayerBase + 0x1198;
    and do the same thing to read something out of it i just get some bogus value

    shynd states that adding 0x1198 to the playerbase that will give you the pointer to the ePlayerField struct but cant seem to work it out

    http://shynd.wordpress.com/2008/06/29/clarification-of-object-data/

    Edit: after some hours i got it working, ty again :wave:

    thx for your time anyway +Rep
    Last edited by Nesox; 09-16-2008 at 04:11 PM.

  4. #4
    Shynd's Avatar Contributor
    Reputation
    97
    Join Date
    May 2008
    Posts
    393
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    for the record: 0x1198 is an offset I pulled from some subroutine (maybe that which reads player names? I forget) from the 2.4.2 client and is liable to change.

  5. #5
    Cypher's Avatar Kynox's Sister's Pimp
    Reputation
    1356
    Join Date
    Apr 2006
    Posts
    5,368
    Thanks G/R
    0/4
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Very liable to change. You're better off dumping the descriptors in an automatic fashion each patch (or I'll supply updated versions each patch) and then using the pointer at 0x8 which has been there since.... ever?

    When running the Wrath beta heaps of the internal structure of the unit/player/etc objects had changed, so be careful what you hardcode.

    What Shynd is doing is probably easier for you, but the method I posted above is pretty much totally resilient to change as long as you dump new descriptors each patch.

    EDIT: Also, as I said, you're better off not using the pointer at 120h but rather the pointer at 8h, that way you can access any of the descriptors not just the unit fields.
    Last edited by Cypher; 09-16-2008 at 10:40 PM.

  6. #6
    Nesox's Avatar ★ Elder ★
    Reputation
    1280
    Join Date
    Mar 2007
    Posts
    1,238
    Thanks G/R
    0/3
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Cypher View Post
    Very liable to change. You're better off dumping the descriptors in an automatic fashion each patch (or I'll supply updated versions each patch) and then using the pointer at 0x8 which has been there since.... ever?

    When running the Wrath beta heaps of the internal structure of the unit/player/etc objects had changed, so be careful what you hardcode.

    What Shynd is doing is probably easier for you, but the method I posted above is pretty much totally resilient to change as long as you dump new descriptors each patch.

    EDIT: Also, as I said, you're better off not using the pointer at 120h but rather the pointer at 8h, that way you can access any of the descriptors not just the unit fields.
    that's kinda what im doing right now but u read [Playerbase + 0x08] to get the pointer to the ePlayerFields right?
    and i guess if the object is an corpse it would point to eCorpseFields etc.? and items i found the offset to ie. the head at [ePlayerField] + 0x568; wich is
    PLAYER_VISIBLE_ITEM_1_0=0x15A * 4; altho i only get id but where's the pointer for items and bags and such?
    i guess it has something to do with the descriptors but im still kinda noobish only been learning c# for about a year but its really fun i think:wave:

  7. #7
    Cypher's Avatar Kynox's Sister's Pimp
    Reputation
    1356
    Join Date
    Apr 2006
    Posts
    5,368
    Thanks G/R
    0/4
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Nesox View Post
    that's kinda what im doing right now but u read [Playerbase + 0x08] to get the pointer to the ePlayerFields right?
    and i guess if the object is an corpse it would point to eCorpseFields etc.? and items i found the offset to ie. the head at [ePlayerField] + 0x568; wich is
    PLAYER_VISIBLE_ITEM_1_0=0x15A * 4; altho i only get id but where's the pointer for items and bags and such?
    i guess it has something to do with the descriptors but im still kinda noobish only been learning c# for about a year but its really fun i think:wave:
    No. You don't read 0x8 to read the descriptors of the object type, you read 0x8 to read from the base of the array. 0x120 is the pointer into the array starting at the current type.

  8. #8
    Nesox's Avatar ★ Elder ★
    Reputation
    1280
    Join Date
    Mar 2007
    Posts
    1,238
    Thanks G/R
    0/3
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Cypher View Post
    No. You don't read 0x8 to read the descriptors of the object type, you read 0x8 to read from the base of the array. 0x120 is the pointer into the array starting at the current type.
    Ok i think i get it, im able to acess almost evrything now hopefully i get the other things working later today
    im in school atm. we are doing some stupid asp.net page like a guestbook with a db connection not really fun i wanna go home and continue on my bot :yuck:

  9. #9
    Cypher's Avatar Kynox's Sister's Pimp
    Reputation
    1356
    Join Date
    Apr 2006
    Posts
    5,368
    Thanks G/R
    0/4
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Nesox View Post
    Ok i think i get it, im able to acess almost evrything now hopefully i get the other things working later today
    im in school atm. we are doing some stupid asp.net page like a guestbook with a db connection not really fun i wanna go home and continue on my bot :yuck:
    Think of it this way.

    The pointer at 0x8 always points to eObjectFields.
    The pointer at 0x120 alwas points to eTYPEFields, where TYPE is the type of the current object (Unit, Player, GameObject, etc).

  10. #10
    Nesox's Avatar ★ Elder ★
    Reputation
    1280
    Join Date
    Mar 2007
    Posts
    1,238
    Thanks G/R
    0/3
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Cypher View Post
    Think of it this way.

    The pointer at 0x8 always points to eObjectFields.
    The pointer at 0x120 alwas points to eTYPEFields, where TYPE is the type of the current object (Unit, Player, GameObject, etc).
    yea i think i get it with the pointer at 0x08 i was able to read values out of ePlayerField if i multiplied the offsets you posted * 4 and the pointer at 0x120 i was able to figure out how to acess all fields exept eItemFields and eContainer fields, i guess eContainerFields is for chest crates and such? so you would do it like this [base of gameobject type chest] + 0x120 and u can read from it

    altho the eItemField i still cant figure out how to find. Does the items you got equipped have pointers in ePlayerFields or are they in the list of gameobjects? hehe anyways i was able to change tracking type and saw evrything on the minimap ive allways wondered how they do that in wowemuhacker
    ImageShack - Hosting :: minimapzl7.jpg
    l8rz :wave:
    Last edited by Nesox; 09-19-2008 at 01:07 PM.

  11. #11
    Cypher's Avatar Kynox's Sister's Pimp
    Reputation
    1356
    Join Date
    Apr 2006
    Posts
    5,368
    Thanks G/R
    0/4
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Nesox View Post
    yea i think i get it with the pointer at 0x08 i was able to read values out of ePlayerField if i multiplied the offsets you posted * 4 and the pointer at 0x120 i was able to figure out how to acess all fields exept eItemFields and eContainer fields, i guess eContainerFields is for chest crates and such? so you would do it like this [base of gameobject type chest] + 0x120 and u can read from it

    altho the eItemField i still cant figure out how to find. Does the items you got equipped have pointers in ePlayerFields or are they in the list of gameobjects? hehe anyways i was able to change tracking type and saw evrything on the minimap ive allways wondered how they do that in wowemuhacker


    l8rz :wave:

    Conainer is for bags. Item is for items in said bags. (Just from memory, I don't use either of those).

    Also, if you use the enums posted above you can completely ignore the 0x120 pointer and just use the 0x8 one. Just multiply the descriptor offset by 4.

    Afaik there are no pointers to items in the descriptor array, you'd need to reverse the actual classes to find that information. And yes, the tracking in WEH is done that way. There are better ways, but that is by far the easiest.

  12. #12
    spiratesss's Avatar Banned
    Reputation
    87
    Join Date
    Aug 2007
    Posts
    217
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    okej.. sorry for disturbing but can you tell me what all those codes are for :S?

  13. #13
    Shynd's Avatar Contributor
    Reputation
    97
    Join Date
    May 2008
    Posts
    393
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    .mlapecaf\

  14. #14
    Nesox's Avatar ★ Elder ★
    Reputation
    1280
    Join Date
    Mar 2007
    Posts
    1,238
    Thanks G/R
    0/3
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by spiratesss View Post
    okej.. sorry for disturbing but can you tell me what all those codes are for :S?
    its offsets for reading/writing various data.. :homer:

    Originally Posted by Cypher View Post

    Conainer is for bags. Item is for items in said bags. (Just from memory, I don't use either of those).

    Also, if you use the enums posted above you can completely ignore the 0x120 pointer and just use the 0x8 one. Just multiply the descriptor offset by 4.

    Afaik there are no pointers to items in the descriptor array, you'd need to reverse the actual classes to find that information. And yes, the tracking in WEH is done that way. There are better ways, but that is by far the easiest.
    ok, im not so skilled in reverse engineering "yet" so that has to wait altho hmm ok thx again i trying to get some info from the bags atm but no luck right now ill edit this post when i get it working..

    EDIT:

    finally got it working here's the output im getting atm.


    it was pretty easy i think im just dumb i did like this if objecttype is 1 then its an item and then u just read from the eItemsField descriptor thx for all the help and btw what's the gameobjectid for container? i guess its around here somewhere anyways now i can write my autorepair function so it goes repair automatically :wave:
    Code:
    if (GameObjects[i].gameobject_type == 1)
                    {
                         int ITEM_FIELD_DURABILITY = MemoryLib.Memory.ReadInt(hProcess,
                            (MemoryLib.Memory.ReadUInt(hProcess, GameObjects[i].gameobject_base + 0x08) + (int)eItemFields.ITEM_FIELD_DURABILITY));
    
                         int ITEM_FIELD_MAXDURABILITY = MemoryLib.Memory.ReadInt(hProcess,
                            (MemoryLib.Memory.ReadUInt(hProcess, GameObjects[i].gameobject_base + 0x08) + (int)eItemFields.ITEM_FIELD_MAXDURABILITY));
    
    
                         int ITEM_FIELD_OWNER = MemoryLib.Memory.ReadInt(hProcess,
                             (MemoryLib.Memory.ReadUInt(hProcess, GameObjects[i].gameobject_base + 0x08) + (int)eItemFields.ITEM_FIELD_OWNER));
    
    
                         int ITEM_FIELD_CONTAINED = MemoryLib.Memory.ReadInt(hProcess,
                              (MemoryLib.Memory.ReadUInt(hProcess, GameObjects[i].gameobject_base + 0x08) + (int)eItemFields.ITEM_FIELD_CONTAINED));
    
                         if (ITEM_FIELD_MAXDURABILITY != 0)
                         {
                             Console.WriteLine("localGUID: {0:X016}", localGUID);
                             Console.WriteLine("ITEM_FIELD_DURABILITY: {0}rn" +
                                 "ITEM_FIELD_MAXDURABILITY: {1}rn" +
                                 "ITEM_FIELD_OWNER: 0x{2:X}rn" +
                                 "ITEM_FIELD_CONTAINED: {3}rn",
    
    
                                 ITEM_FIELD_DURABILITY,
                                 ITEM_FIELD_MAXDURABILITY,
                                 ITEM_FIELD_OWNER,
                                 ITEM_FIELD_CONTAINED
                                 );
                         }
                    }
    Last edited by Nesox; 09-19-2008 at 02:59 PM.

  15. #15
    Cypher's Avatar Kynox's Sister's Pimp
    Reputation
    1356
    Join Date
    Apr 2006
    Posts
    5,368
    Thanks G/R
    0/4
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Containers (bags etc) aren't GameObjects. Examples of GameObjects are Herbs, Mines, Chests, etc.

Page 1 of 2 12 LastLast

Similar Threads

  1. Request/Howto Mount editing?
    By Joggy in forum WoW ME Questions and Requests
    Replies: 6
    Last Post: 09-06-2007, 05:09 PM
  2. HOWTO: Create a custom patch (e.g. for Cheat Engine)
    By Etherea in forum World of Warcraft Bots and Programs
    Replies: 19
    Last Post: 07-15-2007, 01:47 PM
  3. [HOWTO] Get in The Black Temple (all classes)
    By Vladinator in forum World of Warcraft Exploits
    Replies: 27
    Last Post: 03-22-2007, 03:05 AM
  4. HowTo: Automated Login (With Pictures!)
    By m_fatica in forum World of Warcraft Guides
    Replies: 13
    Last Post: 02-13-2007, 06:45 PM
  5. Best Way to Gain acess to High places, Campfire-->Darkportal Change
    By Piratewolf in forum World of Warcraft Model Editing
    Replies: 22
    Last Post: 11-22-2006, 07:17 AM
All times are GMT -5. The time now is 07:36 AM. Powered by vBulletin® Version 4.2.3
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search