Blizzhackers

Home of the Dupe since 2001

* Login   * Register    * FAQ    * Search

Join us on IRC: #bh@irc.synirc.net (or Mibbit Web IRC)


It is currently Sun Jan 14, 2018 1:57 am


All times are UTC [ DST ]





Post new topic Reply to topic  [ 31 posts ]  Go to page 1, 2, 3  Next
Author Message
 Post subject: Diablo III Offsets, Globals, Funcs, Structs, Classes, etc.
PostPosted: Wed Jun 13, 2012 7:57 am 
 
User
User

Joined: Sat Feb 21, 2009 7:54 pm
Dump from 1.0.3.100485

ManagersBase = 0x015A0BEC

GetPlayerGuid = 0x0097EBF0

IterateActors = 0x009E5930
IterateItems = 0x0085C170

GetActorPtrFromActorGuid = 0x0082A000
GetACDPtrFromACDGuid = 0x008170B0
GetSNOPtrFromSNOGuid = 0x008A7550
GetSceneFromSceneGuid = 0x008B5600;
GetWorldFromWorldGuid = 0x00A1D790;
GetUIElementFromHash = 0x0093F470
GetLevelAreaFromActorGuid = 0x009EC210

GetDouble = 0x008C7640
GetInt = 0x008C7700

PrintChat = 0x00A4F190

UseItem = 0x00BB4610
UsePower = 0x0097C810
CastTownPortal = 0x00BAC910 (can also use UsePower(SNOPowerId.UseStoneOfRecall))

Overwrite [[ManagersBase + 0x8D4] + 0xD0] to zoom, the lower the number, the further out you go


ActorAttributes (Description list is at 0x0157D518):
enum ActorAttribute : uint
{
   Axe_Bad_Data = 0x000,   // float
   Attribute_Timer = 0x001,   // int
   Attribute_Pool = 0x002,   // int
   Death_Count = 0x003,   // int
   DualWield_Hand = 0x004,   // int
   DualWield_Hand_Next = 0x005,   // int
   DualWield_Hands_Swapped = 0x006,   // int
   Respawn_Game_Time = 0x007,   // int
   Backpack_Slots = 0x008,   // int
   Shared_Stash_Slots = 0x009,   // int
   Strength = 0x00A,   // float
   Dexterity = 0x00B,   // float
   Intelligence = 0x00C,   // float
   Vitality = 0x00D,   // float
   Strength_Total = 0x00E,   // float
   Dexterity_Total = 0x00F,   // float
   Intelligence_Total = 0x010,   // float
   Vitality_Total = 0x011,   // float
   Strength_Bonus = 0x012,   // float
   Dexterity_Bonus = 0x013,   // float
   Intelligence_Bonus = 0x014,   // float
   Vitality_Bonus = 0x015,   // float
   Strength_Bonus_Percent = 0x016,   // float
   Dexterity_Bonus_Percent = 0x017,   // float
   Intelligence_Bonus_Percent = 0x018,   // float
   Vitality_Bonus_Percent = 0x019,   // float
   Strength_Reduction_Percent = 0x01A,   // float
   Dexterity_Reduction_Percent = 0x01B,   // float
   Intelligence_Reduction_Percent = 0x01C,   // float
   Vitality_Reduction_Percent = 0x01D,   // float
   Primary_Damage_Attribute = 0x01E,   // int
   Attack = 0x01F,   // float
   Precision = 0x020,   // float
   Defense = 0x021,   // float
   Attack_Total = 0x022,   // float
   Precision_Total = 0x023,   // float
   Defense_Total = 0x024,   // float
   Attack_Bonus = 0x025,   // float
   Precision_Bonus = 0x026,   // float
   Defense_Bonus = 0x027,   // float
   Attack_Bonus_Percent = 0x028,   // float
   Precision_Bonus_Percent = 0x029,   // float
   Defense_Bonus_Percent = 0x02A,   // float
   Attack_Reduction_Percent = 0x02B,   // float
   Precision_Reduction_Percent = 0x02C,   // float
   Defense_Reduction_Percent = 0x02D,   // float
   Armor = 0x02E,   // float
   Armor_Bonus_Percent = 0x02F,   // float
   Armor_Item = 0x030,   // float
   Armor_Bonus_Item = 0x031,   // float
   Armor_Item_Percent = 0x032,   // float
   Armor_Item_SubTotal = 0x033,   // float
   Armor_Item_Total = 0x034,   // float
   Armor_Total = 0x035,   // float
   Experience_Granted = 0x036,   // int
   Experience_Next = 0x037,   // int
   Gold_Granted = 0x038,   // int
   Gold = 0x039,   // int
   Gold_Find = 0x03A,   // float
   Level = 0x03B,   // int
   Level_Cap = 0x03C,   // int
   Magic_Find = 0x03D,   // float
   Magic_And_Gold_Find_Suppressed = 0x03E,   // int
   Treasure_Find = 0x03F,   // float
   Resource_Cost_Reduction_Amount = 0x040,   // int
   Resource_Cost_Reduction_Total = 0x041,   // float
   Resource_Set_Point_Bonus = 0x042,   // float
   Faster_Healing_Percent = 0x043,   // float
   Spending_Resource_Heals_Percent = 0x044,   // float
   Bonus_Healing_Received_Percent = 0x045,   // float
   Reduced_Healing_Received_Percent = 0x046,   // float
   Experience_Bonus = 0x047,   // float
   Experience_Bonus_Percent = 0x048,   // float
   Health_Globe_Bonus_Chance = 0x049,   // float
   Health_Globe_Bonus_Mult_Chance = 0x04A,   // float
   Health_Globe_Bonus_Health = 0x04B,   // float
   Increased_Health_From_Globes_Percent = 0x04C,   // float
   Increased_Health_From_Globes_Percent_Total = 0x04D,   // float
   Bonus_Health_Percent_Per_Second_From_Globes = 0x04E,   // float
   Bonus_Health_Percent_Per_Second_From_Globes_Total = 0x04F,   // float
   Mana_Gained_From_Globes_Percent = 0x050,   // float
   Mana_Gained_From_Globes = 0x051,   // float
   Resistance = 0x052,   // float
   Resistance_Percent = 0x053,   // float
   Resistance_Total = 0x054,   // float
   Resistance_All = 0x055,   // float
   Resistance_Percent_All = 0x056,   // float
   Resistance_From_Intelligence = 0x057,   // float
   Class_Damage_Reduction_Percent = 0x058,   // float
   Skill = 0x059,   // int
   Skill_Total = 0x05A,   // int
   TeamID = 0x05B,   // int
   Team_Override = 0x05C,   // int
   Invulnerable = 0x05D,   // int
   Loading = 0x05E,   // int
   Loading_Player_ACD = 0x05F,   // int
   Loading_Power_SNO = 0x060,   // int
   Loading_Anim_Tag = 0x061,   // int
   Loading_NewGame = 0x062,   // int
   Auto_Porting_To_Save_Point = 0x063,   // int
   No_Damage = 0x064,   // int
   No_AutoPickup = 0x065,   // int
   Light_Radius_Percent_Bonus = 0x066,   // float
   Hitpoints_Cur = 0x067,   // float
   Hitpoints_Factor_Level = 0x068,   // float
   Hitpoints_Factor_Vitality = 0x069,   // float
   Hitpoints_Total_From_Vitality = 0x06A,   // float
   Hitpoints_Total_From_Level = 0x06B,   // float
   Hitpoints_Granted = 0x06C,   // float
   Hitpoints_Granted_Duration = 0x06D,   // int
   Hitpoints_Max = 0x06E,   // float
   Hitpoints_Max_Bonus = 0x06F,   // float
   Hitpoints_Max_Total = 0x070,   // float
   Hitpoints_Percent = 0x071,   // float
   Hitpoints_Regen_Per_Second = 0x072,   // float
   Hitpoints_Max_Percent_Bonus = 0x073,   // float
   Hitpoints_Max_Percent_Bonus_Item = 0x074,   // float
   Hitpoints_Healed_Target = 0x075,   // float
   Resource_Type_Primary = 0x076,   // int
   Resource_Type_Secondary = 0x077,   // int
   Resource_Cur = 0x078,   // float
   Resource_Max = 0x079,   // float
   Resource_Max_Bonus = 0x07A,   // float
   Resource_Max_Total = 0x07B,   // float
   Resource_Factor_Level = 0x07C,   // float
   Resource_Granted = 0x07D,   // float
   Resource_Granted_Duration = 0x07E,   // int
   Resource_Percent = 0x07F,   // float
   Resource_Regen_Per_Second = 0x080,   // float
   Resource_Regen_Bonus_Percent = 0x081,   // float
   Resource_Regen_Total = 0x082,   // float
   Resource_Max_Percent_Bonus = 0x083,   // float
   Resource_Capacity_Used = 0x084,   // float
   Resource_Effective_Max = 0x085,   // float
   Resource_Regen_Percent_Per_Second = 0x086,   // float
   Resource_Degeneration_Stop_Point = 0x087,   // float
   Movement_Scalar = 0x088,   // float
   Walking_Rate = 0x089,   // float
   Running_Rate = 0x08A,   // float
   Sprinting_Rate = 0x08B,   // float
   Strafing_Rate = 0x08C,   // float
   Walking_Rate_Total = 0x08D,   // float
   Running_Rate_Total = 0x08E,   // float
   Last_Running_Rate = 0x08F,   // float
   Sprinting_Rate_Total = 0x090,   // float
   Strafing_Rate_Total = 0x091,   // float
   Movement_Bonus_Total = 0x092,   // float
   Movement_Scalar_Subtotal = 0x093,   // float
   Movement_Scalar_Capped_Total = 0x094,   // float
   Movement_Scalar_Uncapped_Bonus = 0x095,   // float
   Movement_Scalar_Total = 0x096,   // float
   Movement_Bonus_Run_Speed = 0x097,   // float
   Casting_Speed = 0x098,   // float
   Casting_Speed_Bonus = 0x099,   // float
   Casting_Speed_Total = 0x09A,   // float
   Always_Hits = 0x09B,   // int
   Hit_Chance = 0x09C,   // float
   Attacks_Per_Second_Item = 0x09D,   // float
   Attacks_Per_Second_Item_Percent = 0x09E,   // float
   Attacks_Per_Second_Item_Subtotal = 0x09F,   // float
   Attacks_Per_Second_Item_Bonus = 0x0A0,   // float
   Attacks_Per_Second_Item_Total = 0x0A1,   // float
   Attacks_Per_Second = 0x0A2,   // float
   Attacks_Per_Second_Bonus = 0x0A3,   // float
   Attacks_Per_Second_Total = 0x0A4,   // float
   Attacks_Per_Second_Percent = 0x0A5,   // float
   AI_Cooldown_Reduction_Percent = 0x0A6,   // float
   Power_Cooldown_Reduction_Percent = 0x0A7,   // float
   Damage_Delta = 0x0A8,   // float
   Damage_Delta_Total = 0x0A9,   // float
   Damage_Min = 0x0AA,   // float
   Damage_Bonus_Min = 0x0AB,   // float
   Damage_Min_Total = 0x0AC,   // float
   Damage_Min_Subtotal = 0x0AD,   // float
   Damage_Percent_All_From_Skills = 0x0AE,   // float
   Damage_Weapon_Delta = 0x0AF,   // float
   Damage_Weapon_Delta_SubTotal = 0x0B0,   // float
   Damage_Weapon_Max = 0x0B1,   // float
   Damage_Weapon_Max_Total = 0x0B2,   // float
   Damage_Weapon_Max_Total_All = 0x0B3,   // float
   Damage_Weapon_Delta_Total = 0x0B4,   // float
   Damage_Weapon_Delta_Total_All = 0x0B5,   // float
   Damage_Weapon_Bonus_Delta = 0x0B6,   // float
   Damage_Weapon_Min = 0x0B7,   // float
   Damage_Weapon_Min_Total = 0x0B8,   // float
   Damage_Weapon_Min_Total_All = 0x0B9,   // float
   Damage_Weapon_Bonus_Min = 0x0BA,   // float
   Damage_Weapon_Percent_Bonus = 0x0BB,   // float
   Damage_Weapon_Percent_All = 0x0BC,   // float
   Damage_Weapon_Percent_Total = 0x0BD,   // float
   Damage_Type_Percent_Bonus = 0x0BE,   // float
   Damage_Percent_Bonus_Witchdoctor = 0x0BF,   // float
   Damage_Percent_Bonus_Wizard = 0x0C0,   // float
   Crit_Percent_Base = 0x0C1,   // float
   Crit_Percent_Bonus_Capped = 0x0C2,   // float
   Crit_Percent_Bonus_Uncapped = 0x0C3,   // float
   Crit_Percent_Cap = 0x0C4,   // float
   Crit_Damage_Percent = 0x0C5,   // float
   Crit_Effect_Time = 0x0C6,   // int
   Pierce_Chance = 0x0C7,   // float
   Damage_Absorb_Percent = 0x0C8,   // float
   Damage_Reduction_Total = 0x0C9,   // float
   Damage_Reduction_Current = 0x0CA,   // float
   Damage_Reduction_Last_Tick = 0x0CB,   // int
   Block_Chance = 0x0CC,   // float
   Block_Chance_Total = 0x0CD,   // float
   Block_Chance_Bonus_Item = 0x0CE,   // float
   Block_Chance_Item = 0x0CF,   // float
   Block_Chance_Item_Total = 0x0D0,   // float
   Block_Amount = 0x0D1,   // float
   Block_Amount_Bonus_Percent = 0x0D2,   // float
   Block_Amount_Total_Min = 0x0D3,   // float
   Block_Amount_Total_Max = 0x0D4,   // float
   Block_Amount_Item_Min = 0x0D5,   // float
   Block_Amount_Item_Delta = 0x0D6,   // float
   Block_Amount_Item_Bonus = 0x0D7,   // float
   Dodge_Chance_Bonus = 0x0D8,   // float
   Dodge_Chance_Bonus_Melee = 0x0D9,   // float
   Dodge_Chance_Bonus_Ranged = 0x0DA,   // float
   Get_Hit_Current = 0x0DB,   // float
   Get_Hit_Max_Base = 0x0DC,   // float
   Get_Hit_Max_Per_Level = 0x0DD,   // float
   Get_Hit_Max = 0x0DE,   // float
   Get_Hit_Recovery_Base = 0x0DF,   // float
   Get_Hit_Recovery_Per_Level = 0x0E0,   // float
   Get_Hit_Recovery = 0x0E1,   // float
   Get_Hit_Damage = 0x0E2,   // float
   Get_Hit_Damage_Scalar = 0x0E3,   // float
   Last_Damage_MainActor = 0x0E4,   // int
   Last_ACD_Attacked = 0x0E5,   // int
   Ignores_Critical_Hits = 0x0E6,   // int
   Immunity = 0x0E7,   // int
   Untargetable = 0x0E8,   // int
   Immobolize = 0x0E9,   // int
   Immune_To_Knockback = 0x0EA,   // int
   Power_Immobilize = 0x0EB,   // int
   Stun_Chance = 0x0EC,   // float
   Stun_Length = 0x0ED,   // float
   Stun_Recovery = 0x0EE,   // float
   Stun_Recovery_Speed = 0x0EF,   // float
   Stunned = 0x0F0,   // int
   Stun_Immune = 0x0F1,   // int
   Poison_Length_Reduction = 0x0F2,   // float
   Poisoned = 0x0F3,   // int
   Bleeding = 0x0F4,   // int
   Bleed_Duration = 0x0F5,   // float
   Chilled = 0x0F6,   // int
   Freeze_Length_Reduction = 0x0F7,   // float
   Freeze_Immune = 0x0F8,   // int
   Webbed = 0x0F9,   // int
   Slow = 0x0FA,   // int
   FireAura = 0x0FB,   // int
   LightningAura = 0x0FC,   // int
   ColdAura = 0x0FD,   // int
   PoisonAura = 0x0FE,   // int
   Blind = 0x0FF,   // int
   Enraged = 0x100,   // int
   Slowdown_Immune = 0x101,   // int
   Gethit_Immune = 0x102,   // int
   Suffocation_Per_Second = 0x103,   // float
   Suffocation_Unit_Value = 0x104,   // float
   Thorns_Percent = 0x105,   // float
   Thorns_Percent_All = 0x106,   // float
   Thorns_Percent_Total = 0x107,   // float
   Thorns_Fixed = 0x108,   // float
   Steal_Health_Percent = 0x109,   // float
   Steal_Mana_Percent = 0x10A,   // float
   Resource_On_Hit = 0x10B,   // float
   Resource_On_Kill = 0x10C,   // float
   Resource_On_Crit = 0x10D,   // float
   Hitpoints_On_Hit = 0x10E,   // float
   Hitpoints_On_Kill = 0x10F,   // float
   Damage_To_Mana = 0x110,   // float
   Last_Proc_Time = 0x111,   // int
   Damage_Power_Delta = 0x112,   // float
   Damage_Power_Min = 0x113,   // float
   Rope_Overlay = 0x114,   // int
   General_Cooldown = 0x115,   // int
   Power_Cooldown = 0x116,   // int
   Power_Cooldown_Start = 0x117,   // int
   Proc_Cooldown = 0x118,   // int
   Emote_Cooldown = 0x119,   // int
   Projectile_Speed = 0x11A,   // float
   Projectile_Speed_Increase_Percent = 0x11B,   // float
   Destroy_When_Path_Blocked = 0x11C,   // int
   Skill_Toggled_State = 0x11D,   // int
   Act = 0x11E,   // int
   Difficulty = 0x11F,   // int
   Last_Damage_Amount = 0x120,   // float
   In_Knockback = 0x121,   // int
   Amplify_Damage_Type_Percent = 0x122,   // float
   Amplify_Damage_Percent = 0x123,   // float
   Durability_Cur = 0x124,   // int
   Durability_Max = 0x125,   // int
   Durability_Last_Damage = 0x126,   // int
   Item_Quality_Level = 0x127,   // int
   Item_Cost_Percent_Bonus = 0x128,   // float
   Item_Equipped = 0x129,   // int
   Requirement = 0x12A,   // float
   Requirements_Ease_Percent = 0x12B,   // float
   Requirement_When_Equipped = 0x12C,   // float
   Sockets = 0x12D,   // int
   Sockets_Filled = 0x12E,   // int
   Stats_All_Bonus = 0x12F,   // float
   Item_Bound_To_ACD = 0x130,   // int
   Item_Locked_To_ACD = 0x131,   // int
   Item_Binding_Level_Override = 0x132,   // int
   ItemStackQuantityHi = 0x133,   // int
   ItemStackQuantityLo = 0x134,   // int
   Run_Speed_Granted = 0x135,   // float
   Run_Speed_Duration = 0x136,   // int
   IdentifyCost = 0x137,   // int
   Seed = 0x138,   // int
   IsCrafted = 0x139,   // int
   DyeType = 0x13A,   // int
   EnchantAffix = 0x13B,   // int
   EnchantRangeVal = 0x13C,   // int
   HighlySalvageable = 0x13D,   // int
   ItemUnlockTimeHi = 0x13E,   // int
   ItemUnlockTimeLo = 0x13F,   // int
   Always_Plays_GetHit = 0x140,   // int
   Hidden = 0x141,   // int
   RActor_Fade_Group = 0x142,   // int
   Quest_Range = 0x143,   // int
   Attack_Cooldown_Min = 0x144,   // int
   Attack_Cooldown_Delta = 0x145,   // int
   InitialCooldownMinTotal = 0x146,   // int
   InitialCooldownDeltaTotal = 0x147,   // int
   Attack_Cooldown_Min_Total = 0x148,   // int
   Attack_Cooldown_Delta_Total = 0x149,   // int
   Closing_Cooldown_Min_Total = 0x14A,   // int
   Closing_Cooldown_Delta_Total = 0x14B,   // int
   Quest_Monster = 0x14C,   // int
   Quest_Monster_Effect = 0x14D,   // int
   Treasure_Class = 0x14E,   // int
   Removes_Body_On_Death = 0x14F,   // int
   InitialCooldownMin = 0x150,   // int
   InitialCooldownDelta = 0x151,   // int
   Knockback_Weight = 0x152,   // float
   UntargetableByPets = 0x153,   // int
   Damage_State_Current = 0x154,   // int
   Damage_State_Max = 0x155,   // int
   Is_Player_Decoy = 0x156,   // int
   Custom_Target_Weight = 0x157,   // float
   Gizmo_State = 0x158,   // int
   Gizmo_Charges = 0x159,   // int
   Chest_Open = 0x15A,   // int
   Door_Locked = 0x15B,   // int
   Door_Timer = 0x15C,   // int
   Gizmo_Disabled_By_Script = 0x15D,   // int
   Gizmo_Operator_ACDID = 0x15E,   // int
   Triggering_Count = 0x15F,   // int
   Gate_Position = 0x160,   // float
   Gate_Velocity = 0x161,   // float
   Gizmo_Has_Been_Operated = 0x162,   // int
   Pet_Owner = 0x163,   // int
   Pet_Creator = 0x164,   // int
   Pet_Type = 0x165,   // int
   DropsNoLoot = 0x166,   // int
   GrantsNoXP = 0x167,   // int
   Hireling_Class = 0x168,   // int
   Summoned_By_SNO = 0x169,   // int
   Is_NPC = 0x16A,   // int
   NPC_Is_Operatable = 0x16B,   // int
   NPC_Is_Escorting = 0x16C,   // int
   NPC_Has_Interact_Options = 0x16D,   // int
   Conversation_Icon = 0x16E,   // int
   Callout_Cooldown = 0x16F,   // int
   Banter_Cooldown = 0x170,   // int
   Conversation_Heard_Count = 0x171,   // int
   Last_Tick_Shop_Entered = 0x172,   // int
   Is_Helper = 0x173,   // int
   Axe = 0x174,   // float
   Axe2H = 0x175,   // float
   ThrowingAxe = 0x176,   // float
   AxeAny = 0x177,   // float
   Bow = 0x178,   // float
   Crossbow = 0x179,   // float
   BowAny = 0x17A,   // float
   Club = 0x17B,   // float
   Club2H = 0x17C,   // float
   ClubAny = 0x17D,   // float
   Dagger = 0x17E,   // float
   Mace = 0x17F,   // float
   Mace2H = 0x180,   // float
   MaceAny = 0x181,   // float
   Sword = 0x182,   // float
   Sword2H = 0x183,   // float
   SwordAny = 0x184,   // float
   Polearm = 0x185,   // float
   Spear = 0x186,   // float
   Wand = 0x187,   // float
   ColdStaff = 0x188,   // float
   FireStaff = 0x189,   // float
   LightningStaff = 0x18A,   // float
   PoisonStaff = 0x18B,   // float
   StaffAny = 0x18C,   // float
   Weapon1H = 0x18D,   // float
   Weapon2H = 0x18E,   // float
   WeaponMelee = 0x18F,   // float
   WeaponRanged = 0x190,   // float
   Quiver = 0x191,   // float
   Reincarnation_Buff = 0x192,   // int
   Dead_Body_AnimTag = 0x193,   // int
   Spawned_by_ACDID = 0x194,   // int
   Summoned_By_ACDID = 0x195,   // int
   Summoner_ID = 0x196,   // int
   Banner_ACDID = 0x197,   // int
   Breakable_Shield_HP = 0x198,   // float
   Current_WeaponClass = 0x199,   // int
   Weapons_Sheathed = 0x19A,   // int
   Held_In_OffHand = 0x19B,   // int
   Attacks_Per_Second_Item_MainHand = 0x19C,   // float
   Attacks_Per_Second_Item_OffHand = 0x19D,   // float
   Attacks_Per_Second_Item_Total_MainHand = 0x19E,   // float
   Attacks_Per_Second_Item_Total_OffHand = 0x19F,   // float
   Damage_Weapon_Min_Total_MainHand = 0x1A0,   // float
   Damage_Weapon_Min_Total_OffHand = 0x1A1,   // float
   Damage_Weapon_Delta_Total_MainHand = 0x1A2,   // float
   Damage_Weapon_Delta_Total_OffHand = 0x1A3,   // float
   Attacks_Per_Second_Item_CurrentHand = 0x1A4,   // float
   Damage_Weapon_Min_Total_CurrentHand = 0x1A5,   // float
   Damage_Weapon_Delta_Total_CurrentHand = 0x1A6,   // float
   Has_Special_Death_AnimTag = 0x1A7,   // int
   Death_Type_Override = 0x1A8,   // int
   In_Combat = 0x1A9,   // int
   In_Conversation = 0x1AA,   // int
   Last_Tick_Potion_Used = 0x1AB,   // int
   Potion_Dilution_Percent = 0x1AC,   // float
   Out_Of_Combat_Health_Regen_Percent = 0x1AD,   // float
   Out_Of_Combat_Mana_Regen_Percent = 0x1AE,   // float
   Potion_Dilution_Duration = 0x1AF,   // int
   Potion_Dilution_Scalar = 0x1B0,   // float
   Feared = 0x1B1,   // int
   Fear_Immune = 0x1B2,   // int
   Last_Damage_ACD = 0x1B3,   // int
   Attached_To_ACD = 0x1B4,   // int
   Attachment_ACD = 0x1B5,   // int
   Normal_Attack_Replacement_Power_SNO = 0x1B6,   // int
   Damage_Type_Override = 0x1B7,   // float
   Minion_Count_Bonus_Percent = 0x1B8,   // float
   Champion_Teleport_Next_Tick = 0x1B9,   // int
   Champion_Teleport_Time_Min_In_Seconds = 0x1BA,   // float
   Champion_Teleport_Time_Delta_In_Seconds = 0x1BB,   // float
   Champion_Clone_Next_Tick = 0x1BC,   // int
   Champion_Clone_Time_Min_In_Seconds = 0x1BD,   // float
   Champion_Clone_Time_Delta_In_Seconds = 0x1BE,   // float
   Champion_Clone_Hitpoint_Bonus_Percent = 0x1BF,   // float
   Champion_Clone_Damage_Bonus_Percent = 0x1C0,   // float
   Champion_Ghostly_Next_Tick = 0x1C1,   // int
   Champion_Ghostly_Inactive_Time_Min_In_Seconds = 0x1C2,   // float
   Champion_Ghostly_Inactive_Time_Delta_In_Seconds = 0x1C3,   // float
   Champion_Ghostly_Active_Time_Min_In_Seconds = 0x1C4,   // float
   Champion_Ghostly_Active_Time_Delta_In_Seconds = 0x1C5,   // float
   Champion_Ghostly_Saved_Dodge_Chance = 0x1C6,   // float
   Champion_Ghostly = 0x1C7,   // int
   Base_Element = 0x1C8,   // int
   Projectile_Amount_Bonus_Percent = 0x1C9,   // float
   Projectile_Reflect_Chance = 0x1CA,   // float
   Attack_Fear_Chance = 0x1CB,   // float
   Attack_Fear_Time_Min = 0x1CC,   // float
   Attack_Fear_Time_Delta = 0x1CD,   // float
   Buff_Visual_Effect = 0x1CE,   // int
   Buff_Icon_Start_Tick0 = 0x1CF,   // int
   Buff_Icon_Start_Tick1 = 0x1D0,   // int
   Buff_Icon_Start_Tick2 = 0x1D1,   // int
   Buff_Icon_Start_Tick3 = 0x1D2,   // int
   Buff_Icon_Start_Tick4 = 0x1D3,   // int
   Buff_Icon_Start_Tick5 = 0x1D4,   // int
   Buff_Icon_Start_Tick6 = 0x1D5,   // int
   Buff_Icon_Start_Tick7 = 0x1D6,   // int
   Buff_Icon_End_Tick0 = 0x1D7,   // int
   Buff_Icon_End_Tick1 = 0x1D8,   // int
   Buff_Icon_End_Tick2 = 0x1D9,   // int
   Buff_Icon_End_Tick3 = 0x1DA,   // int
   Buff_Icon_End_Tick4 = 0x1DB,   // int
   Buff_Icon_End_Tick5 = 0x1DC,   // int
   Buff_Icon_End_Tick6 = 0x1DD,   // int
   Buff_Icon_End_Tick7 = 0x1DE,   // int
   Could_Have_Ragdolled = 0x1DF,   // int
   Ambient_Damage_Effect_Last_Time = 0x1E0,   // int
   Scale_Bonus = 0x1E1,   // float
   Deleted_On_Server = 0x1E2,   // int
   Scripted_Fade_Time = 0x1E3,   // int
   Does_No_Damage = 0x1E4,   // int
   Does_Fake_Damage = 0x1E5,   // int
   SlowTime_Debuff = 0x1E6,   // float
   Blocks_Projectiles = 0x1E7,   // int
   Frozen = 0x1E8,   // int
   Freeze_Damage_Percent_Bonus = 0x1E9,   // float
   Buff_Active = 0x1EA,   // int
   DualWield_BothAttack_Chance = 0x1EB,   // float
   Summon_Expiration_Tick = 0x1EC,   // int
   Summon_Count = 0x1ED,   // int
   Uninterruptible = 0x1EE,   // int
   Queue_Death = 0x1EF,   // int
   CantStartDisplayedPowers = 0x1F0,   // int
   Wizard_Slowtime_Proxy_ACD = 0x1F1,   // int
   DPS = 0x1F2,   // float
   Resurrection_Power = 0x1F3,   // int
   Freeze_Damage = 0x1F4,   // float
   Freeze_Capacity = 0x1F5,   // float
   Thaw_Rate = 0x1F6,   // float
   Chilled_Dur_Bonus_Percent = 0x1F7,   // float
   DOT_DPS = 0x1F8,   // float
   DamageCap_Percent = 0x1F9,   // float
   Item_Time_Sold = 0x1FA,   // int
   Forced_Hireling_Power = 0x1FB,   // int
   IsRooted = 0x1FC,   // int
   RootTargetACD = 0x1FD,   // int
   RootAutoDecayPerSecond = 0x1FE,   // float
   RootUnitValue = 0x1FF,   // float
   RootTotalTicks = 0x200,   // int
   Hide_Affixes = 0x201,   // int
   Rune_A = 0x202,   // int
   Rune_B = 0x203,   // int
   Rune_C = 0x204,   // int
   Rune_D = 0x205,   // int
   Rune_E = 0x206,   // int
   Resistance_Stun = 0x207,   // float
   Resistance_Stun_Total = 0x208,   // float
   Resistance_Root = 0x209,   // float
   Resistance_Root_Total = 0x20A,   // float
   Resistance_Freeze = 0x20B,   // float
   Resistance_Freeze_Total = 0x20C,   // float
   Resistance_StunRootFreeze = 0x20D,   // float
   CrowdControl_Reduction = 0x20E,   // float
   Displays_Team_Effect = 0x20F,   // int
   Cannot_Be_Added_To_AI_Target_List = 0x210,   // int
   SkillKit = 0x211,   // int
   Immune_To_Charm = 0x212,   // int
   Immune_To_Blind = 0x213,   // int
   Damage_Shield = 0x214,   // int
   Silenced = 0x215,   // int
   Diseased = 0x216,   // int
   Guard_Object_ACDID = 0x217,   // int
   Follow_Target_ACDID = 0x218,   // int
   Follow_Target_Type = 0x219,   // int
   Forced_Enemy_ACDID = 0x21A,   // int
   NPC_Talk_Target_ANN = 0x21B,   // int
   NPC_Conv_Target_ANN = 0x21C,   // int
   Script_Target_ACDID = 0x21D,   // int
   Look_Target_Server_ANN = 0x21E,   // int
   Look_Target_Broadcast_Intensity = 0x21F,   // float
   Look_Target_Broadcast_Radius = 0x220,   // float
   Stealthed = 0x221,   // int
   GemQuality = 0x222,   // int
   ItemBuffIcon = 0x223,   // int
   ScrollDuration = 0x224,   // float
   Gizmo_Actor_SNO_To_Spawn = 0x225,   // int
   Gizmo_Actor_To_Spawn_Scale = 0x226,   // float
   Death_Replacement_Power_SNO = 0x227,   // int
   Attachment_Handled_By_Client = 0x228,   // int
   AI_In_Special_State = 0x229,   // int
   AI_Used_Scripted_Spawn_Anim = 0x22A,   // int
   AI_Spawned_By_Inactive_Marker = 0x22B,   // int
   Headstone_Player_ANN = 0x22C,   // int
   Resource_Cost_Reduction_Percent = 0x22D,   // float
   Resistance_Penetration = 0x22E,   // float
   Resistance_Penetration_Total = 0x22F,   // float
   Resistance_Penetration_All = 0x230,   // float
   Resistance_Penetration_Percent_All = 0x231,   // float
   Fury_Effect_Level = 0x232,   // int
   Health_Potion_Bonus_Heal_Percent = 0x233,   // float
   Free_Cast = 0x234,   // int
   Free_Cast_All = 0x235,   // int
   Movement_Scalar_Reduction_Percent = 0x236,   // float
   Movement_Scalar_Reduction_Resistance = 0x237,   // float
   Damage_Absorb_Percent_All = 0x238,   // float
   World_Seed = 0x239,   // int
   Kill_Count_Record = 0x23A,   // int
   Object_Destruction_Record = 0x23B,   // int
   Single_Attack_Record = 0x23C,   // int
   Environment_Attack_Record = 0x23D,   // int
   Root_Immune = 0x23E,   // int
   Monster_Play_Get_Hit_Bonus = 0x23F,   // float
   Stored_Contact_Frame = 0x240,   // int
   Buff_Icon_Count0 = 0x241,   // int
   Buff_Icon_Count1 = 0x242,   // int
   Buff_Icon_Count2 = 0x243,   // int
   Buff_Icon_Count3 = 0x244,   // int
   Buff_Icon_Count4 = 0x245,   // int
   Buff_Icon_Count5 = 0x246,   // int
   Buff_Icon_Count6 = 0x247,   // int
   Buff_Icon_Count7 = 0x248,   // int
   Observer = 0x249,   // int
   Resurrect_As_Observer = 0x24A,   // int
   Combo_Level = 0x24B,   // int
   Combo_Time_Last_Move = 0x24C,   // int
   Burrowed = 0x24D,   // int
   Death_Replacement_Effect_Group_SNO = 0x24E,   // int
   Checkpoint_Resurrection_Allowed_Game_Time = 0x24F,   // int
   Checkpoint_Resurrection_Forced_Game_Time = 0x250,   // int
   Controlling_TimedEvent_SNO = 0x251,   // int
   Casting_Speed_Percent = 0x252,   // float
   Using_Bossbar = 0x253,   // int
   Power_Buff_0_Visual_Effect = 0x254,   // int
   Power_Buff_1_Visual_Effect = 0x255,   // int
   Power_Buff_2_Visual_Effect = 0x256,   // int
   Power_Buff_3_Visual_Effect = 0x257,   // int
   Power_Buff_4_Visual_Effect = 0x258,   // int
   Power_Buff_5_Visual_Effect = 0x259,   // int
   Power_Buff_6_Visual_Effect = 0x25A,   // int
   Power_Buff_7_Visual_Effect = 0x25B,   // int
   Store_SNO = 0x25C,   // int
   Busy = 0x25D,   // int
   Afk = 0x25E,   // int
   Last_Action_Timestamp = 0x25F,   // int
   Portal_Next_Time = 0x260,   // int
   Repair_Discount_Percent = 0x261,   // float
   Resource_Degeneration_Prevented = 0x262,   // int
   Operatable = 0x263,   // int
   Look_Override = 0x264,   // int
   Spawner_Concurrent_Count_ID = 0x265,   // int
   Disabled = 0x266,   // int
   Skill_Override = 0x267,   // int
   Skill_Override_Active = 0x268,   // int
   Skill_Override_Ended = 0x269,   // int
   Skill_Override_Ended_Active = 0x26A,   // int
   Is_Power_Proxy = 0x26B,   // int
   Force_No_Death_Animation = 0x26C,   // int
   Player_WeaponClass_Anim_Override = 0x26D,   // int
   Operatable_Story_Gizmo = 0x26E,   // int
   Power_Buff_0_Visual_Effect_None = 0x26F,   // int
   Power_Buff_0_Visual_Effect_A = 0x270,   // int
   Power_Buff_0_Visual_Effect_B = 0x271,   // int
   Power_Buff_0_Visual_Effect_C = 0x272,   // int
   Power_Buff_0_Visual_Effect_D = 0x273,   // int
   Power_Buff_0_Visual_Effect_E = 0x274,   // int
   Power_Buff_1_Visual_Effect_None = 0x275,   // int
   Power_Buff_1_Visual_Effect_A = 0x276,   // int
   Power_Buff_1_Visual_Effect_B = 0x277,   // int
   Power_Buff_1_Visual_Effect_C = 0x278,   // int
   Power_Buff_1_Visual_Effect_D = 0x279,   // int
   Power_Buff_1_Visual_Effect_E = 0x27A,   // int
   Power_Buff_2_Visual_Effect_None = 0x27B,   // int
   Power_Buff_2_Visual_Effect_A = 0x27C,   // int
   Power_Buff_2_Visual_Effect_B = 0x27D,   // int
   Power_Buff_2_Visual_Effect_C = 0x27E,   // int
   Power_Buff_2_Visual_Effect_D = 0x27F,   // int
   Power_Buff_2_Visual_Effect_E = 0x280,   // int
   Power_Buff_3_Visual_Effect_None = 0x281,   // int
   Power_Buff_3_Visual_Effect_A = 0x282,   // int
   Power_Buff_3_Visual_Effect_B = 0x283,   // int
   Power_Buff_3_Visual_Effect_C = 0x284,   // int
   Power_Buff_3_Visual_Effect_D = 0x285,   // int
   Power_Buff_3_Visual_Effect_E = 0x286,   // int
   Power_Buff_4_Visual_Effect_None = 0x287,   // int
   Power_Buff_4_Visual_Effect_A = 0x288,   // int
   Power_Buff_4_Visual_Effect_B = 0x289,   // int
   Power_Buff_4_Visual_Effect_C = 0x28A,   // int
   Power_Buff_4_Visual_Effect_D = 0x28B,   // int
   Power_Buff_4_Visual_Effect_E = 0x28C,   // int
   Power_Buff_5_Visual_Effect_None = 0x28D,   // int
   Power_Buff_5_Visual_Effect_A = 0x28E,   // int
   Power_Buff_5_Visual_Effect_B = 0x28F,   // int
   Power_Buff_5_Visual_Effect_C = 0x290,   // int
   Power_Buff_5_Visual_Effect_D = 0x291,   // int
   Power_Buff_5_Visual_Effect_E = 0x292,   // int
   Power_Buff_6_Visual_Effect_None = 0x293,   // int
   Power_Buff_6_Visual_Effect_A = 0x294,   // int
   Power_Buff_6_Visual_Effect_B = 0x295,   // int
   Power_Buff_6_Visual_Effect_C = 0x296,   // int
   Power_Buff_6_Visual_Effect_D = 0x297,   // int
   Power_Buff_6_Visual_Effect_E = 0x298,   // int
   Power_Buff_7_Visual_Effect_None = 0x299,   // int
   Power_Buff_7_Visual_Effect_A = 0x29A,   // int
   Power_Buff_7_Visual_Effect_B = 0x29B,   // int
   Power_Buff_7_Visual_Effect_C = 0x29C,   // int
   Power_Buff_7_Visual_Effect_D = 0x29D,   // int
   Power_Buff_7_Visual_Effect_E = 0x29E,   // int
   Walk_Passability_Power_SNO = 0x29F,   // int
   Passability_Power_SNO = 0x2A0,   // int
   Flippy_ID = 0x2A1,   // int
   Summoning_Machine_Num_Casters = 0x2A2,   // int
   Summoning_Machine_Spawn_Count = 0x2A3,   // int
   Summoning_Machine_Next_Spawn_Ticks = 0x2A4,   // int
   Summoning_Machine_Spawn_Team = 0x2A5,   // int
   Screen_Attack_Radius_Constant = 0x2A6,   // float
   Damage_Done_Reduction_Percent = 0x2A7,   // float
   Set_Item_Count = 0x2A8,   // int
   Spawner_Countdown_Percent = 0x2A9,   // float
   Attack_Slow = 0x2AA,   // int
   Power_Disabled = 0x2AB,   // int
   Weapon_Effect_Override = 0x2AC,   // int
   Debuff_Duration_Reduction_Percent = 0x2AD,   // float
   Uses_PvP_Power_Tags = 0x2AE,   // int
   Trait = 0x2AF,   // int
   Last_ACD_Attacked_By = 0x2B0,   // int
   Gold_PickUp_Radius = 0x2B1,   // float
   Client_Only_Effect = 0x2B2,   // int
   Has_Doppelganger_Cloned = 0x2B3,   // int
   Resource_Gain_Bonus_Percent = 0x2B4,   // float
   Looping_Animation_Start_Time = 0x2B5,   // int
   Looping_Animation_End_Time = 0x2B6,   // int
   Looping_Animation_Suppress_Item_Tooltips = 0x2B7,   // int
   Heal_Effect_Last_Played_Tick = 0x2B8,   // int
   Resource_Effect_Last_Played_tick = 0x2B9,   // int
   Thorns_Effect_Last_Played_tick = 0x2BA,   // int
   PVP_Kills = 0x2BB,   // int
   PVP_Deaths = 0x2BC,   // int
   PVP_Assists = 0x2BD,   // int
   PVP_Progression_Points_Gained = 0x2BE,   // int
   PVP_Current_Kill_Streak = 0x2BF,   // int
   PVP_Current_Death_Streak = 0x2C0,   // int
   PVP_Longest_Kill_Streak = 0x2C1,   // int
   PVP_Longest_Death_Streak = 0x2C2,   // int
   Turn_Rate_Scalar = 0x2C3,   // float
   Turn_Accel_Scalar = 0x2C4,   // float
   Turn_Deccel_Scalar = 0x2C5,   // float
   No_Health_Drop = 0x2C6,   // int
   Leader = 0x2C7,   // int
   IsContentRestrictedActor = 0x2C8,   // int
   InBossEncounter = 0x2C9,   // int
   God = 0x2CA,   // int
   MinimapActive = 0x2CB,   // int
   MinimapIconOverride = 0x2CC,   // int
   MinimapDisableArrow = 0x2CD,   // int
   Last_Blocked_ACD = 0x2CE,   // int
   Last_Blocked_Time = 0x2CF,   // int
   Deactivate_Lure = 0x2D0,   // int
   Weapons_Hidden = 0x2D1,   // int
   Actor_Updates_Attributes_From_Owner = 0x2D2,   // int
   Taunt_Target_ACD = 0x2D3,   // int
   UI_Only_Percent_Damage_Increase = 0x2D4,   // float
   Projectile_Effect_SNO = 0x2D5,   // int
   On_Hit_Fear_Proc_Chance = 0x2D6,   // float
   On_Hit_Stun_Proc_Chance = 0x2D7,   // float
   On_Hit_Blind_Proc_Chance = 0x2D8,   // float
   On_Hit_Freeze_Proc_Chance = 0x2D9,   // float
   On_Hit_Chill_Proc_Chance = 0x2DA,   // float
   On_Hit_Slow_Proc_Chance = 0x2DB,   // float
   On_Hit_Immobilize_Proc_Chance = 0x2DC,   // float
   On_Hit_Knockback_Proc_Chance = 0x2DD,   // float
   On_Hit_Bleed_Proc_Chance = 0x2DE,   // float
   On_Hit_Bleed_Proc_Damage_Base = 0x2DF,   // float
   On_Hit_Bleed_Proc_Damage_Delta = 0x2E0,   // float
   Damage_Percent_Reduction_From_Ranged = 0x2E1,   // float
   Damage_Percent_Reduction_From_Melee = 0x2E2,   // float
   Damage_Percent_Reduction_Turns_Into_Heal = 0x2E3,   // float
   Damage_Percent_Reduction_From_Elites = 0x2E4,   // float
   Damage_Percent_Reduction_From_Type = 0x2E5,   // float
   Damage_Percent_Bonus_Vs_Monster_Type = 0x2E6,   // float
   Damage_Percent_Bonus_Vs_Elites = 0x2E7,   // float
   Item_Manipulation_Timeout = 0x2E8,   // int
   Picked_Up_Time = 0x2E9,   // int
   Unequipped_Time = 0x2EA,   // int
   Last_ACD_Killed_Time = 0x2EB,   // int
   CannotDieDuring = 0x2EC,   // int
   Weapon_On_Hit_Fear_Proc_Chance = 0x2ED,   // float
   Weapon_On_Hit_Stun_Proc_Chance = 0x2EE,   // float
   Weapon_On_Hit_Blind_Proc_Chance = 0x2EF,   // float
   Weapon_On_Hit_Freeze_Proc_Chance = 0x2F0,   // float
   Weapon_On_Hit_Chill_Proc_Chance = 0x2F1,   // float
   Weapon_On_Hit_Slow_Proc_Chance = 0x2F2,   // float
   Weapon_On_Hit_Immobilize_Proc_Chance = 0x2F3,   // float
   Weapon_On_Hit_Knockback_Proc_Chance = 0x2F4,   // float
   Weapon_On_Hit_Bleed_Proc_Chance = 0x2F5,   // float
   Weapon_On_Hit_Bleed_Proc_Damage_Base = 0x2F6,   // float
   Weapon_On_Hit_Bleed_Proc_Damage_Delta = 0x2F7,   // float
   Weapon_On_Hit_Fear_Proc_Chance_MainHand = 0x2F8,   // float
   Weapon_On_Hit_Fear_Proc_Chance_OffHand = 0x2F9,   // float
   Weapon_On_Hit_Fear_Proc_Chance_CurrentHand = 0x2FA,   // float
   Weapon_On_Hit_Stun_Proc_Chance_MainHand = 0x2FB,   // float
   Weapon_On_Hit_Stun_Proc_Chance_OffHand = 0x2FC,   // float
   Weapon_On_Hit_Stun_Proc_Chance_CurrentHand = 0x2FD,   // float
   Weapon_On_Hit_Blind_Proc_Chance_MainHand = 0x2FE,   // float
   Weapon_On_Hit_Blind_Proc_Chance_OffHand = 0x2FF,   // float
   Weapon_On_Hit_Blind_Proc_Chance_CurrentHand = 0x300,   // float
   Weapon_On_Hit_Freeze_Proc_Chance_MainHand = 0x301,   // float
   Weapon_On_Hit_Freeze_Proc_Chance_OffHand = 0x302,   // float
   Weapon_On_Hit_Freeze_Proc_Chance_CurrentHand = 0x303,   // float
   Weapon_On_Hit_Chill_Proc_Chance_MainHand = 0x304,   // float
   Weapon_On_Hit_Chill_Proc_Chance_OffHand = 0x305,   // float
   Weapon_On_Hit_Chill_Proc_Chance_CurrentHand = 0x306,   // float
   Weapon_On_Hit_Slow_Proc_Chance_MainHand = 0x307,   // float
   Weapon_On_Hit_Slow_Proc_Chance_OffHand = 0x308,   // float
   Weapon_On_Hit_Slow_Proc_Chance_CurrentHand = 0x309,   // float
   Weapon_On_Hit_Immobilize_Proc_Chance_MainHand = 0x30A,   // float
   Weapon_On_Hit_Immobilize_Proc_Chance_OffHand = 0x30B,   // float
   Weapon_On_Hit_Immobilize_Proc_Chance_CurrentHand = 0x30C,   // float
   Weapon_On_Hit_Knockback_Proc_Chance_MainHand = 0x30D,   // float
   Weapon_On_Hit_Knockback_Proc_Chance_OffHand = 0x30E,   // float
   Weapon_On_Hit_Knockback_Proc_Chance_CurrentHand = 0x30F,   // float
   Weapon_On_Hit_Bleed_Proc_Chance_MainHand = 0x310,   // float
   Weapon_On_Hit_Bleed_Proc_Chance_OffHand = 0x311,   // float
   Weapon_On_Hit_Bleed_Proc_Chance_CurrentHand = 0x312,   // float
   Weapon_On_Hit_Bleed_Proc_Damage_Base_MainHand = 0x313,   // float
   Weapon_On_Hit_Bleed_Proc_Damage_Base_OffHand = 0x314,   // float
   Weapon_On_Hit_Bleed_Proc_Damage_Base_CurrentHand = 0x315,   // float
   Weapon_On_Hit_Bleed_Proc_Damage_Delta_MainHand = 0x316,   // float
   Weapon_On_Hit_Bleed_Proc_Damage_Delta_OffHand = 0x317,   // float
   Weapon_On_Hit_Bleed_Proc_Damage_Delta_CurrentHand = 0x318,   // float
   Power_Damage_Percent_Bonus = 0x319,   // float
   Power_Resource_Reduction = 0x31A,   // float
   Power_Cooldown_Reduction = 0x31B,   // float
   Power_Duration_Increase = 0x31C,   // float
   Power_Crit_Percent_Bonus = 0x31D,   // float
   Weapon_Crit_Chance = 0x31E,   // float
   Weapon_Crit_Chance_MainHand = 0x31F,   // float
   Weapon_Crit_Chance_OffHand = 0x320,   // float
   Weapon_Crit_Chance_CurrentHand = 0x321,   // float
   Strength_Item = 0x322,   // float
   Dexterity_Item = 0x323,   // float
   Intelligence_Item = 0x324,   // float
   Vitality_Item = 0x325,   // float
   Item_Level_Requirement_Reduction = 0x326,   // int
   Item_Durability_Percent_Bonus = 0x327,   // float
   Item_Indestructible = 0x328,   // int
   Core_Attributes_From_Item_Bonus_Multiplier = 0x329,   // float
   Waiting_To_Accept_Resurrection = 0x32A,   // int
   Ghosted = 0x32B,   // int
   Special_Inventory_Has_Sold = 0x32C,   // int
   Power_Channel_Lockout_Time = 0x32D,   // int
   Power_Buff_0_Lockout_Time = 0x32E,   // int
   Power_Buff_1_Lockout_Time = 0x32F,   // int
   Power_Buff_2_Lockout_Time = 0x330,   // int
   Power_Buff_3_Lockout_Time = 0x331,   // int
   Power_Buff_4_Lockout_Time = 0x332,   // int
   Power_Buff_5_Lockout_Time = 0x333,   // int
   Power_Buff_6_Lockout_Time = 0x334,   // int
   Power_Buff_7_Lockout_Time = 0x335,   // int
   Known_By_Owner = 0x336,   // int
   Never_Deactivates = 0x337,   // int
   Account_Under_Review = 0x338,   // int
   Projectile_Detonate_Time = 0x339,   // int
}


SNOGroup (starts at 0x0157C058):
enum SNOGroupContainers : uint
{
   Actor = 0x015EC108,
   Adventure = 0x015E6EB0,
   AmbientSound = 0x016544B8,
   Anim = 0x015E9148,
   Anim2D = 0x0164E878,
   AnimSet = 0x015EBC98,
   Appearance = 0x01639D48,
   Hero = 0x015CCC58,
   Cloth = 0x01652328,
   Conversation = 0x015E5608,
   ConversationList = 0x015E4C20,
   EffectGroup = 0x01652BF0,
   Encounter = 0x015E7290,
   Explosion = 0x01653668,
   FlagSet = 0x015E4840,
   Font = 0x0164EE88,
   GameBalance = 0x015A6008,
   Globals = 0x015F4BD0,
   LevelArea = 0x015E2F88,
   Light = 0x01649510,
   MarkerSet = 0x015E7788,
   Monster = 0x015DBE00,
   Observer = 0x015F4390,
   Particle = 0x0164F5B0,
   Physics = 0x01653C78,
   Power = 0x015E7E20,
   Quest = 0x015DFC00,
   Rope = 0x01643D58,
   Scene = 0x015F2190,
   SceneGroup = 0x015E4348,
   ShaderMap = 0x01654F28,
   Shaders = 0x0164CE30,
   Shakes = 0x01641E18,
   SkillKit = 0x015DEDA8,
   Sound = 0x01646218,
   SoundBank = 0x01648B28,
   StringList = 0x015E8808,
   Surface = 0x01653318,
   Textures = 0x01655160,
   Trail = 0x01651AE8,
   UI = 0x0164A120,
   Weather = 0x016425C8,
   Worlds = 0x015EDAD8,
   Recipe = 0x015DBCE0,
   Condition = 0x015D8EB0,
   TreasureClass = 0x015D80F8,
   Account = 0x015CF098,
   TimedEvent = 0x015DBBC0,
   Act = 0x015DAF20,
   Material = 0x01641B50,
   QuestRange = 0x015DF8A8,
   Lore = 0x015DAB40,
   Reverb = 0x01640D98,
   PhysMesh = 0x015F9770,
   Music = 0x016452B8,
   Tutorial = 0x015D7450,
   BossEncounter = 0x015D78B8,
}

LevelArea
public enum LevelArea
{
    A1_C6_SpiderCave_01_Entrance = 0xE3A6,
    A1_C6_SpiderCave_01_Main = 0x132EC,
    A1_C6_SpiderCave_01_Queen = 0xF506,
    A1_Dun_Crypt_Dev_Hell = 0x36581,
    A1_Fields_Cave_SwordOfJustice_Level01 = 0x1D455,
    A1_Fields_Den = 0x21045,
    A1_Fields_Den_Level02 = 0x2F6b8,
    A1_Fields_RandomDRLG_CaveA_Level01 = 0x141C4,
    A1_Fields_RandomDRLG_CaveA_Level02 = 0x141C5,
    A1_Fields_RandomDRLG_ScavengerDenA_Level01 = 0x13D0D,
    A1_Fields_RandomDRLG_ScavengerDenA_Level02 = 0x13D17,
    A1_Fields_Vendor_Tinker_Exterior = 0x2bC0C,
    A1_Highlands_RandomDRLG_GoatmanCaveA_Level01 = 0x14286,
    A1_Highlands_RandomDRLG_GoatmanCaveA_Level02 = 0x14287,
    A1_Highlands_RandomDRLG_WestTower_Level01 = 0x14196,
    A1_Highlands_RandomDRLG_WestTower_Level02 = 0x14197,
    A1_Random_Level01 = 0x33A17,
    A1_trDun_Blacksmith_Cellar = 0x144A6,
    A1_trDun_ButchersLair_02 = 0x16301,
    A1_trDun_Cain_Intro = 0xED2A,
    A1_trDun_Cave_Highlands_Random01_VendorRescue = 0x21310,
    A1_trdun_Cave_Nephalem_01 = 0xEBEC,
    A1_trdun_Cave_Nephalem_02 = 0xEBED,
    A1_trdun_Cave_Nephalem_03 = 0xEBEE,
    A1_trDun_Cave_Old_Ruins_Random01 = 0x278AC,
    A1_trDun_CrownRoom = 0x18FDA,
    A1_trDun_Crypt_Event_Tower_Of_Power = 0x138F4,
    A1_trDun_Crypt_Flooded_Memories_Level01 = 0x18F9c,
    A1_trDun_Crypt_Flooded_Memories_Level02 = 0x287A6,
    A1_trdun_Crypt_Special_00 = 0x25BDC,
    A1_trdun_Crypt_Special_01 = 0xECB9,
    A1_trDun_Event_JarOfSouls = 0x2371E,
    A1_trDun_FalseSecretPassage_01 = 0x14540,
    A1_trDun_FalseSecretPassage_02 = 0x14541,
    A1_trDun_FalseSecretPassage_03 = 0x14542,
    A1_trDun_Jail_Level01 = 0x171d0,
    A1_trDun_Jail_Level01_Cells = 0x1783D,
    A1_trDun_Leoric01 = 0x4D3E,
    A1_trDun_Leoric02 = 0x4D3F,
    A1_trDun_Leoric03 = 0x4D40,
    A1_trDun_Level01 = 0x4D44,
    A1_trDun_Level04 = 0x4D47,
    A1_trDun_Level05_Templar = 0x15763,
    A1_trDun_Level06 = 0x4D49,
    A1_trDun_Level07B = 0x4D4B,
    A1_trDun_Level07D = 0x4D4D,
    A1_trDun_Tyrael_Level09 = 0x1CAA3,
    A1_trDun_TyraelJail = 0x24447,
    A1_trOut_AdriasCellar = 0xF5F8,
    A1_trOUT_AdriasHut = 0x4DD9,
    A1_trOut_BatesFarmCellar = 0x248A5,
    A1_trOUT_Church = 0x4DDD,
    A1_trOut_Fields_Vendor_Curios = 0x1A3B7,
    A1_trOut_Fields_Vendor_Curios_Exterior = 0x2BE7B,
    A1_trOUT_FishingVillage = 0x4DDF,
    A1_trOUT_FishingVillageHeights = 0x1FB03,
    A1_trOut_ForlornFarm = 0x20B72,
    A1_trOUT_Graveyard = 0x4DE2,
    A1_trOUT_Highlands = 0x4DE4,
    A1_trOUT_Highlands_Bridge = 0x16DC0,
    A1_trOut_Highlands_DunExterior_A = 0x15718,
    A1_trOUT_Highlands_ServantHouse_Cellar_Vendor = 0x29CD1,
    A1_trOUT_Highlands_Sub240_GoatmanGraveyard = 0x1F95F,
    A1_trOUT_Highlands2 = 0x4DE5,
    A1_trOUT_Highlands3 = 0x4AF,
    A1_trOut_Leoric_Manor_Int = 0x189F6,
    A1_trOUT_LeoricsManor = 0x4DE7,
    A1_trOut_MysticWagon = 0x20F08,
    A1_trOUT_NewTristram = 0x4DEB,
    A1_trOUT_NewTristram_AttackArea = 0x316CE,
    A1_trOUT_NewTristramOverlook = 0x26186,
    A1_trOut_Old_Tristram = 0x163FD,
    A1_trOut_Old_Tristram_Road = 0x164BC,
    A1_trOut_Old_Tristram_Road_Cath = 0x18BE7,
    A1_trOut_OldTristram_Cellar = 0x1A22B,
    A1_trOut_OldTristram_Cellar_1 = 0x1A104,
    A1_trOut_OldTristram_Cellar_2 = 0x1A105,
    A1_trOut_OldTristram_Cellar_3 = 0x19322,
    A1_trOut_oldTristram_TreeCave = 0x19C87,
    a1_trOut_Scoundrel_Event_Old_Mill_2 = 0x35556,
    A1_trOut_TownAttack_ChapelCellar = 0x1D43E,
    A1_trOut_Tristram_CainsHouse = 0x1FC73,
    A1_trOut_Tristram_Inn = 0x1AB91,
    A1_trOut_Tristram_LeahsRoom = 0x15349,
    A1_trOut_TristramFields_A = 0x4DF0,
    A1_trOut_TristramFields_B = 0x4DF1,
    A1_trOut_TristramFields_ExitA = 0xF085,
    A1_trOut_TristramFields_Forsaken_Grounds = 0x2BD6F,
    A1_trOut_TristramFields_Secluded_Grove = 0x2BD6E,
    A1_trOut_TristramWilderness = 0x4DF2,
    A1_trOut_TristramWilderness_SubScenes = 0x236AA,
    A1_trOut_Vendor_Tinker_Room = 0x19821,
    A1_trOut_Wilderness_BurialGrounds = 0x11C08,
    A1_trOut_Wilderness_CorpseHouse = 0x30ADF,
    A1_trOut_Wilderness_Sub80_FamilyTree = 0x236A1,
    A2_Belial_Room_01 = 0xED55,
    A2_Belial_Room_Intro = 0x13D1A,
    A2_c1Dun_Swr_Caldeum_01 = 0x4D4F,
    A2_c2dun_Zolt_TreasureHunter = 0x4D53,
    A2_c3Dun_Aqd_Oasis_Level01 = 0xE069,
    A2_cadun_Zolt_Timed01_Level01 = 0x4D52,
    A2_cadun_Zolt_Timed01_Level02 = 0x29108,
    A2_Caldeum = 0x19234,
    A2_Caldeum_Uprising = 0x33613,
    A2_caOut_Alcarnus_RandomCellar_1 = 0x245A7,
    A2_caOut_Alcarnus_RandomCellar_2 = 0x245A8,
    A2_caOut_Alcarnus_RandomCellar_3 = 0x245A9,
    A2_caOUT_Boneyard_01 = 0xD24A,
    A2_caOUT_Borderlands_Khamsin_Mine = 0xEE8A,
    A2_caOUT_BorderlandsKhamsin = 0xF8B2,
    A2_caOut_Cellar_Alcarnus_Main = 0x2FAC4,
    A2_caOut_CT_RefugeeCamp = 0xD811,
    A2_caOut_CT_RefugeeCamp_Gates = 0x318FD,
    A2_caOut_CT_RefugeeCamp_Hub = 0x2917A,
    A2_caOut_Hub_Inn = 0x2AA00,
    A2_caOut_Interior_C_DogBite = 0x2D7BB,
    A2_caOut_Interior_H_RockWorm = 0x232F5,
    A2_caOut_Mine_Abandoned_Cellar = 0x4D81,
    A2_caOut_Oasis = 0xE051,
    A2_caOut_Oasis_Exit = 0x2ACE2,
    A2_caOut_Oasis_Exit_A = 0x2AD07,
    A2_caOut_Oasis_Rakanishu = 0x33BDD,
    A2_caOut_Oasis_RandomCellar_1 = 0x27099,
    A2_caOut_Oasis_RandomCellar_2 = 0x2709A,
    A2_caOut_Oasis_RandomCellar_3 = 0x2709B,
    A2_caOut_Oasis_RandomCellar_4 = 0x27bE7,
    A2_caOut_Oasis1_Water = 0xE664,
    A2_caOut_Oasis2 = 0xE058,
    A2_caOut_OasisCellars = 0x1B100,
    A2_caOUT_StingingWinds = 0x4D7F,
    A2_caOUT_StingingWinds_Alcarnus_Tier1 = 0x4D71,
    A2_caOUT_StingingWinds_Alcarnus_Tier2 = 0x4D72,
    A2_caOUT_StingingWinds_Bridge = 0x29886,
    A2_caOUT_StingingWinds_Canyon = 0x4D7C,
    A2_caOUT_StingingWinds_FallenCamp01 = 0x288EF,
    A2_caOUT_StingingWinds_PostBridge = 0x4D7E,
    A2_caOUT_StingingWinds_PreAlcarnus = 0x4D7B,
    A2_caOUT_StingingWinds_PreBridge = 0x4D7D,
    A2_caOut_Stranded2 = 0x1DA4A,
    A2_caOut_ZakarwaMerchantCellar = 0x1BEBB,
    A2_Cave_Random01 = 0x26F64,
    A2_Cave_Random01_Level02 = 0x35E85,
    A2_CultistCellarEast = 0x19218,
    A2_CultistCellarWest = 0x19214,
    A2_dun_Aqd_Control_A = 0xF9F3,
    A2_dun_Aqd_Control_B = 0xF9F4,
    A2_dun_Aqd_Oasis_RandomFacePuzzle_Large = 0x26B82,
    A2_dun_Aqd_Oasis_RandomFacePuzzle_Small = 0x26AB0,
    A2_dun_Aqd_Special_01 = 0xF520,
    A2_dun_Aqd_Special_A = 0xF53A,
    A2_dun_Aqd_Special_B = 0xF53C,
    A2_Dun_Aqd_Swr_to_Oasis_Level01 = 0x23D96,
    A2_dun_Cave_BloodVial_01 = 0x31F55,
    A2_dun_Cave_BloodVial_02 = 0x31F83,
    A2_dun_Oasis_Cave_MapDungeon = 0x29616,
    A2_dun_Oasis_Cave_MapDungeon_Level02 = 0x2F6bF,
    A2_dun_PortalRoulette_A = 0x1B37F,
    A2_Dun_Swr_Adria_Level01 = 0xE47E,
    A2_Dun_Swr_Caldeum_Sewers_01 = 0x1B205,
    A2_dun_Zolt_Blood02_Level01_Part1 = 0x1E12E,
    A2_dun_Zolt_Blood02_Level01_Part2 = 0x25872,
    A2_Dun_Zolt_BossFight_Level04 = 0xEB22,
    A2_dun_Zolt_Head_Random01 = 0xF0C0,
    A2_Dun_Zolt_Level01 = 0x4D55,
    A2_Dun_Zolt_Level02 = 0x4D56,
    A2_Dun_Zolt_Level03 = 0x4D57,
    A2_Dun_Zolt_Lobby = 0x4D58,
    A2_Dun_Zolt_LobbyCenter = 0x2AFBA,
    A2_Dun_Zolt_Random_Level01 = 0x4D59,
    A2_Dun_Zolt_Random_Level02 = 0x36571,
    A2_dun_Zolt_Random_PortalRoulette_02 = 0x2FDCF,
    A2_Dun_Zolt_ShadowRealm_Level01 = 0x13AD0,
    A2_Event_DyingManMine = 0x2270B,
    A2_Event_PriceOfMercy_Cellar = 0x2FD9E,
    A2_Rockworm_Cellar_Cave = 0x2FE81,
    A2_trDun_Boneyard_Spider_Cave_01 = 0x1B437,
    A2_trDun_Boneyard_Spider_Cave_02 = 0x35758,
    A2_trDun_Boneyard_Worm_Cave_01 = 0x1B433,
    A2_trDun_Boneyard_Worm_Cave_02 = 0x35759,
    A2_trDun_Cave_Oasis_Random01 = 0xF46F,
    A2_trDun_Cave_Oasis_Random01_Level02 = 0x2F6C2,
    A2_trDun_Cave_Oasis_Random02 = 0xF46E,
    A2_trDun_Cave_Oasis_Random02_Level02 = 0x27551,
    a2dun_Aqd_Oasis_Level00 = 0x2F0B6,
    a2dun_Aqd_Oasis_Level01 = 0x2F0B1,
    A3_AzmodanFight = 0x1B39C,
    A3_Battlefield_A = 0x1B7A4,
    A3_Battlefield_B = 0x1B7B5,
    A3_Battlefield_C = 0x1B7C4,
    A3_Bridge_01 = 0x10F80,
    A3_Bridge_Choke_A = 0x25DA8,
    A3_Dun_Battlefield_Gate = 0x25C14,
    A3_dun_Bridge_Interior_Random01 = 0x224ad,
    A3_dun_Bridge_Interior_Random02 = 0x32270,
    A3_Dun_Crater_Level_01 = 0x15040,
    A3_Dun_Crater_Level_02 = 0x1d209,
    A3_Dun_Crater_Level_03 = 0x1d20a,
    A3_dun_Crater_ST_Level01 = 0x13b97,
    A3_dun_Crater_ST_Level01B = 0x1d365,
    A3_dun_Crater_ST_Level02 = 0x13b98,
    A3_dun_Crater_ST_Level02B = 0x2200a,
    A3_dun_Crater_ST_Level04 = 0x14cd2,
    A3_dun_Crater_ST_Level04B = 0x1d368,
    A3_dun_IceCaves_Random_01 = 0x2e3a1,
    A3_dun_IceCaves_Random_01_Level_02 = 0x36206,
    A3_dun_IceCaves_Timed_01 = 0x2ea66,
    A3_dun_IceCaves_Timed_01_Level_02 = 0x36207,
    A3_Dun_Keep_Hub = 0x16b11,
    A3_Dun_Keep_Hub_Inn = 0x2d38c,
    A3_Dun_Keep_Level03 = 0x126ac,
    A3_Dun_Keep_Level04 = 0x16baf,
    A3_Dun_Keep_Level05 = 0x21500,
    A3_Dun_Keep_Random_01 = 0x2aa4a,
    A3_Dun_Keep_Random_01_Level_02 = 0x36238,
    A3_Dun_Keep_Random_02 = 0x2c7f2,
    A3_Dun_Keep_Random_02_Level_02 = 0x36239,
    A3_Dun_Keep_Random_03 = 0x2c802,
    A3_Dun_Keep_Random_03_Level_02 = 0x3623a,
    A3_Dun_Keep_Random_04 = 0x2c8e6,
    A3_Dun_Keep_Random_04_Level_02 = 0x36241,
    A3_Dun_Keep_Random_Cellar_01 = 0x35ee9,
    A3_Dun_Keep_Random_Cellar_02 = 0x35ee8,
    A3_Dun_Keep_Random_Cellar_03 = 0x303f7,
    A3_Dun_Keep_TheBreach_Level04 = 0x3558f,
    A3_dun_rmpt_Level01 = 0x16b20,
    A3_dun_rmpt_Level02 = 0x16bf5,
    A3_Gluttony_Boss = 0x1b280,
    a3dun_Hub_Adria_Tower = 0x31222,
    a3dun_hub_AdriaTower_Intro_01 = 0x3253e,
    A4_dun_Diablo_Arena = 0x1abfb,
    A4_dun_Diablo_Arena_Phase3 = 0x348c3,
    A4_dun_Garden_of_Hope_01 = 0x1abca,
    A4_dun_Garden_of_Hope_02 = 0x1abcc,
    A4_dun_Garden3_SpireEntrance = 0x1d44a,
    A4_dun_Heaven_1000_Monsters_Fight = 0x1aa5d,
    A4_dun_Heaven_1000_Monsters_Fight_Entrance = 0x2f169,
    A4_dun_Hell_Portal_01 = 0x1abd6,
    A4_dun_Hell_Portal_02 = 0x1abdb,
    A4_Dun_Keep_Hub = 0x301ed,
    A4_dun_LibraryOfFate = 0x23120,
    A4_dun_Spire_00 = 0x307a4,
    A4_dun_Spire_01 = 0x1abe2,
    A4_dun_Spire_02 = 0x1abe4,
    A4_dun_Spire_03 = 0x1abe6,
    A4_dun_Spire_04 = 0x33728,
    A4_dun_Spire_SigilRoom_A = 0x313c4,
    A4_dun_Spire_SigilRoom_B = 0x2ae7a,
    A4_dun_Spire_SigilRoom_C = 0x313c6,
    A4_dun_Spire_SigilRoom_D = 0x313c7,
    a4dun_Diablo_ShadowRealm_01 = 0x25845,
    a4dun_spire_DiabloEntrance = 0x3227a,
    a4dun_spire_exterior = 0x34964,
    Axe_Bad_Data = 0x4d60,
    PvP_Maze_01 = 0x4da2,
    PvP_Octogon_01 = 0x4da3,
    PvP_Pillar_01 = 0x4da4,
    PvP_Stairs_01 = 0x4da5,
    PvP_Test_BlueTeam = 0x4da6,
    PvP_Test_Neutral = 0x4da7,
    PvP_Test_RedTeam = 0x4da8,
    PvPArena = 0x4d9c
}



Last edited by jensecj on Mon Jul 16, 2012 10:28 am, edited 15 times in total.
Top
 Profile  
 Post subject: The Real Documentation / Development Thread
PostPosted: Thu Jun 14, 2012 9:25 pm 
 
User
User
User avatar

Joined: Sat Nov 13, 2010 5:17 pm
Figured I would throw together a compilation thread that actually has some useful information since the sticky is lacking at the moment. (The sticky does have some)

Thanks to all who linked me to information ; ) and the sites that do have it so far
and especially the people who have found and posted this information to the public - the orginal authors, all credit goes to them
As always most of these threads are filled with important information aside from what I'm linking/highlighting, so it's worth following and reading them.

Offsets/Locations/Structs/Funcs/etc

D3 Definitions / Acronyms
Helps you understand what ACD/RActor/NavMesh-Zone-Cell is and all that stuff you might feel in the dark about ;)

1.0.3.10485

psior
f_GetPlayerGUID:  0x97EBF0
f_GetSNOTypeFromACDid:  0x8A7550
f_IsMonster: 0x863A10
f_IterateACD: 0x866F40
f_IterateActors: 0x9E5930
f_UsePower: 0x97C810
f_EndScene: 0xC54030

p_ObjManagerBase: 0x15A0BEC


TKG
00852910   D3::ACD::CanSellItem
008597A0   D3::ACD::CanUselItem
0084E500   D3::ACD::GetGBValueByGBId
00864890   D3::ACD::GetGold
0084E3D0   D3::ACD::GetItemIdentified
008639C0   D3::ACD::IsMonster
008CFA10   D3::ACD::IsSkillReady
00866EF0   D3::ACD::Iterate
00BBE670   D3::ACD::SellItem
00BBE8E0   D3::ACD::UseItem
008E7860   D3::ACDActor::IsGizmo
0085DCD0   D3::ACDInventoryGetGoldACD
008E7710   D3::Actor::GetGizmoGroup
00A63E80   D3::CHat
00C54AF0   D3::DirectX::EndScene
009D8AA0   D3::DrawRectangle
0086D6C0   D3::FastAttribs::Iterate
00811D10   D3::GetACDByACDId
008680E0   D3::GetACDIdByANN
008170B0   D3::GetACDPtrFromGUID
0082AE40   D3::GetAct
0082A010   D3::GetActorPtrFromGUID
009EC210   D3::GetAreaByActorId
00870F10   D3::GetAttributeFromFAG
008C75F0   D3::GetDouble
008710C0   D3::GetFloat
008C76B0   D3::GetInt
0084D0E0   D3::GetItemQualityLevel
008B08D0   D3::GetPlayerByACDID
008B0A70   D3::GetPlayerByIndex
0097EB70   D3::GetPlayerGUID
008795E0   D3::GetQuestPtr
008A7500   D3::GetSNOFromSNOId
008B55B0   D3::GetSceneByID
008D99D0   D3::GetSceneIDByXY
0094E580   D3::GetScreenRect
00852A30   D3::GetSellValue
0093F400   D3::GetUIElementByHash
0093BDE0   D3::GetUIManager
00A1D6E0   D3::GetWorldByID
00813480   D3::GetgameWindowState
00810FC0   D3::ItemDescription::Ctor
0080FEA0   D3::ItemDescription::Dtor
009762A0   D3::ItemDescription::FillDescriptionText
00A897C0   D3::IterateUI
00F0F1D0   D3::Log
00BB3D70   D3::MoveItem
008EAAC0   D3::NavMesh::GetFlags
0097EB30   D3::Player::GetLocalPlayer
0093BDA0   D3::PrintChat
00BC3990   D3::RepairAll
00BC7CC0   D3::SalvageAll
00814D20   D3::Scenes::Iterate
00A8A8A0   D3::UIElement:Unk1
00A8B500   D3::UIElement:Unk2
0093F390   D3::UIManager::HasUIElement
0097C9D0   D3::UsePowerToActor
0097C790   D3::UsePowerToLocation
008B40E0   D3::Worlds::Iterate
0086E5B0   D3::getFastAttribgroupFromID
0095E150   D3:UIElement::IsInitialized
008130C0   D3__GetSNOGroup
00BBF470   DD::ACD::Repair


st0724 wrote:
Thanks for the update. I do have to warn people that warden scans for collision code.

Always good to have a quick look at the scan list to see what warden is after, but remember it's not always 100% true.

dogmatt
The Whole Shibam Structures and Functions and Examples

Structures
This is where they have some of their crazy x,y / x,y,z /x,y,z,w structures
struct Vec2;
struct Vec3;
struct Vec4;
struct Mat4;
class CActor;
class CWorld;
class CActorMovement;
class CActorCommonData;
struct tObManStorage;
class ObMan;
class ObManPtr;
struct tObData;
class CObDataContainer;
class CObLocal;
class CObMovHPtr;
class CObMovH;
class CObMov;
class ObManFrames;
class CAttribLinks;
class CAttribGroup;
class CAttribGroupsContainer;
class CAttribFormula;
class CObAttribs;
class CObAttribCoder;
struct tAttribLink;

//------------------------------------- 

struct Vec2 
{
    float x;     // 0x000
    float y;     // 0x004
};

struct Vec3 
{
    float x;     // 0x000
    float y;     // 0x004
    float z;     // 0x008
};

struct Vec4 
{
    float x;     // 0x000
    float y;     // 0x004
    float z;     // 0x008
    float w;     // 0x00C
};

struct Mat4 
{
    float mm[16];     // 0x000
};

class CActor 
{
public:
    ULONG id_actor;     // 0x000
    ULONG id_acd;     // 0x004
    CHAR Name[128];     // 0x008
    ULONG id_sno;     // 0x088
    UCHAR unknown_8C[4];     // 0x08C
    Vec3 Rot;     // 0x090
    float fUnk_Rot;     // 0x09C
    Vec3 Pos;     // 0x0A0
    float fUnk_130;     // 0x0AC
    Vec3 Pos1;     // 0x0B0
    float fUnk_734;     // 0x0BC
    Vec3 Pos2;     // 0x0C0
    UCHAR unknown_CC[4];     // 0x0CC
    float RadiusDefault;     // 0x0D0
    UCHAR unknown_D4[4];     // 0x0D4
    ULONG guid_world;     // 0x0D8
    ULONG guid_Unk;     // 0x0DC
    UCHAR unknown_E0[32];     // 0x0E0
    Vec3 Pos3;     // 0x100
    UCHAR unknown_10C[52];     // 0x10C
    Vec3 Pos4;     // 0x140
    UCHAR unknown_14C[16];     // 0x14C
    ULONG N13E1EB50;     // 0x15C
    UCHAR unknown_160[176];     // 0x160
    Vec3 PosObj;     // 0x210
    UCHAR unknown_21C[356];     // 0x21C
    CActorMovement* Mov;     // 0x380
    float Direction;     // 0x384
    UCHAR unknown_388[24];     // 0x388
    Vec3 Vel;     // 0x3A0
    Vec3 Pos6;     // 0x3AC
    UCHAR unknown_3B8[96];     // 0x3B8
    ULONG Frame;     // 0x418
    ULONG Diff;     // 0x41C
    UCHAR unknown_420[8];     // 0x420
};

class CWorld 
{
public:
    UCHAR unknown_0[16];     // 0x000
    Vec3* a;     // 0x010
    Vec3* b;     // 0x014
    UCHAR unknown_18[48];     // 0x018
};

class CActorMovement 
{
public:
    ULONG* vt;     // 0x000
    ULONG Active;     // 0x004
    float Speed;     // 0x008
    float SpeedCurrent;     // 0x00C
    UCHAR unknown_10[12];     // 0x010
    float ScaleSize;     // 0x01C
    ULONG Flags;     // 0x020
    UCHAR unknown_24[16];     // 0x024
    ULONG IsMoving;     // 0x034
    ULONG PathIsWalkable;     // 0x038
    Vec3 MovTo;     // 0x03C
    UCHAR unknown_48[4];     // 0x048
    Vec3 Pos2;     // 0x04C
    UCHAR unknown_58[28];     // 0x058
    Vec3 Tp;     // 0x074
    UCHAR unknown_80[8];     // 0x080
    ULONG unk;     // 0x088
    UCHAR unknown_8C[24];     // 0x08C
    Vec3 Pos3;     // 0x0A4
    UCHAR unknown_B0[8];     // 0x0B0
    float Speed2;     // 0x0B8
    UCHAR unknown_BC[160];     // 0x0BC
    ULONG id_actor;     // 0x15C
    ULONG FrameMov;     // 0x160
    ULONG Frame;     // 0x164
    ULONG FramePrev;     // 0x168
    UCHAR unknown_16C[4];     // 0x16C
    float Direction;     // 0x170
    UCHAR unknown_174[707];     // 0x174
};

class CActorCommonData 
{
public:
    ULONG id_acd;     // 0x000
    CHAR Name[128];     // 0x004
    ULONG unk_0;     // 0x084
    ULONG id_unk1;     // 0x088
    ULONG id_unk2;     // 0x08C
    ULONG id_sno;     // 0x090
    UCHAR unknown_94[32];     // 0x094
    ULONG id_acd_gBall;     // 0x0B4
    UCHAR unknown_B8[24];     // 0x0B8
    Vec3 PosWorld;     // 0x0D0
    UCHAR unknown_DC[36];     // 0x0DC
    float RadiusDefault;     // 0x100
    UCHAR unknown_104[4];     // 0x104
    ULONG id_world;     // 0x108
    UCHAR unknown_10C[4];     // 0x10C
    ULONG id_owner;     // 0x110
    UCHAR unknown_114[12];     // 0x114
    ULONG id_attrib;     // 0x120
    ULONG id_unk3;     // 0x124
    UCHAR unknown_128[244];     // 0x128
    UCHAR NBAD848;     // 0x21C
    UCHAR RadiusType;     // 0x21D
    UCHAR NBB56E9;     // 0x21E
    UCHAR NBBA038;     // 0x21F
    UCHAR unknown_220[24];     // 0x220
    float RadiusScaled;     // 0x238
    UCHAR unknown_23C[148];     // 0x23C
};

template <class T> 
    class tContainer
    {
    public:
        CHAR Name[256];
        ULONG Limit;
        ULONG SizeOf;
        LONG Last;
        UCHAR unknown_10C[60];
        T** List;
        UCHAR unknown_14C[64];
        ULONG Bits;
        UCHAR unknown_190[64];
    };

struct tObManStorage 
{
    UCHAR unknown_0[16];     // 0x000
    float fl_120;     // 0x010
    float fl_1;     // 0x014
    UCHAR unknown_18[144];     // 0x018
    CObDataContainer* Data;     // 0x0A8
    UCHAR unknown_AC[28];     // 0x0AC
    CAttribGroupsContainer* AttribGroups;     // 0x0C8
    UCHAR unknown_CC[8];     // 0x0CC
    tContainer<CActorCommonData>** ACD;     // 0x0D4
    UCHAR unknown_D8[64];     // 0x0D8
    ULONG Mode;     // 0x118
    UCHAR unknown_11C[12];     // 0x11C
    ULONG Lights;     // 0x128
    ULONG Cutscenes;     // 0x12C
    UCHAR unknown_130[4];     // 0x130
    tContainer<CActor>* Actors;     // 0x134
    UCHAR unknown_138[4];     // 0x138
    ULONG ppCloth;     // 0x13C
    ULONG ppExplosion;     // 0x140
    UCHAR unknown_144[36];     // 0x144
    ObManFrames* Frames;     // 0x168
    UCHAR unknown_16C[12];     // 0x16C
    ULONG Scenes;     // 0x178
    UCHAR unknown_17C[8];     // 0x17C
    CObMovHPtr* MovHistory;     // 0x184
    UCHAR unknown_188[40];     // 0x188
    tContainer<CWorld>* Worlds;     // 0x1B0
    UCHAR unknown_1B4[4];     // 0x1B4
    CObLocal* Local;     // 0x1B8
    UCHAR unknown_1BC[656];     // 0x1BC
};

class ObMan 
{
public:
    struct tPad
    {
        UCHAR unknown_0[56];     // 0x000
        ULONG FrameCurrent;     // 0x038
        UCHAR unknown_3C[1856];     // 0x03C
    };
    tPad Data;     // 0x000
    tObManStorage Storage;     // 0x77C
    UCHAR unknown_BC8[32];     // 0xBC8
};

class ObManPtr 
{
public:
    ObMan* Ptr;     // 0x000
};

struct tObData 
{
    UCHAR unknown_0[4];     // 0x000
    ULONG id_anim;     // 0x004
    ULONG id_actor;     // 0x008
    UCHAR unknown_C[308];     // 0x00C
};

class CObDataContainer 
{
public:
    UCHAR unknown_0[88];     // 0x000
    tObData Data;     // 0x058
    UCHAR unknown_198[256];     // 0x198
};

class CObLocal 
{
public:
    ULONG Index;     // 0x000
    UCHAR unknown_4[92];     // 0x004
};

class CObMovHPtr 
{
public:
    UCHAR unknown_0[8];     // 0x000
    CObMovH* Ptr;     // 0x008
    UCHAR unknown_C[12];     // 0x00C
};

class CObMovH 
{
public:
    CObMov* Ptr;     // 0x000
    UCHAR unknown_4[60];     // 0x004
};

class CObMov 
{
public:
    UCHAR unknown_0[20];     // 0x000
    CObMov* Right;     // 0x014
    CObMov* Left;     // 0x018
    CObMov* Parent;     // 0x01C
    UCHAR unknown_20[32];     // 0x020
};

class ObManFrames 
{
public:
    ULONG Max;     // 0x000
    UCHAR unknown_4[12];     // 0x004
    ULONG N13DC069C;     // 0x010
    UCHAR unknown_14[108];     // 0x014
};

class CAttribLinks 
{
public:
    UCHAR unknown_0[132];     // 0x000
};

template <class T, UINT32 I>  my ANALyzer was pwnd by this template :0
    struct tMap
    {
        T* Ptr; <-  Data ptr
        ULONG Unk;
        ULONG Count; = I - 1
        T Data[I]; - see GetAttrib
        ULONG Mask; - highest byte of (I * 2)?
    };

class CAttribGroup 
{
public:
    ULONG id_attrib;     // 0x000
    UCHAR unknown_4[12];     // 0x004
    CAttribFormula* Formula;     // 0x010
    UCHAR unknown_14[36];     // 0x014
    tMap<tAttribLink *, 33> Links;     // 0x038
    UCHAR unknown_CC[144];     // 0x0CC
};

class CAttribGroupsContainer 
{
public:
    struct tWtf
    {
        UCHAR unknown_0[24];     // 0x000
        ULONG _600DF00D;     // 0x018
    };
    tWtf a;     // 0x000
    tWtf b;     // 0x01C
    tWtf c;     // 0x038
    tWtf d;     // 0x054
    tContainer<CAttribGroup>* FastAttribGroups;     // 0x070
    UCHAR unknown_74[32];     // 0x074
};

class CAttribFormula 
{
public:
    UCHAR unknown_0[8];     // 0x000
    tMap<tAttribLink *, 257> Map;     // 0x008
    UCHAR unknown_41C[56];     // 0x41C
};

class CObAttribs 
{
public:
    UCHAR unknown_0[4];     // 0x000
    ULONG id;     // 0x004
    UCHAR unknown_8[8];     // 0x008
    CHAR* Formula;     // 0x010
    CHAR* Formula2;     // 0x014
    CHAR* Name;     // 0x018
    CObAttribCoder* Coder;     // 0x01C
    LONG Unk;     // 0x020
    LONG Next;     // 0x024
};

class CObAttribCoder 
{
public:
    UCHAR unknown_0[4];     // 0x000
    LONG i;     // 0x004
    CObAttribCoder* Next;     // 0x008
    ULONG Bits;     // 0x00C
};

struct tAttribLink 
{
    tAttribLink* Next;     // 0x000
    LONG AttribIndex;     // 0x004
    LONG Value;     // 0x008
};

//------------------------------------- 


Functions
UINT CGame::GetLocalActorGuid()
{
    ObMan *ob = m_Engine.ObMan->Ptr;

    if(    !ob->Storage.Local ||
        !ob->Storage.Data )
        return ~0;

    if( ob->Storage.Local->Index == ~0 )
        return ~0;

    CObDataContainer *Data = (CObDataContainer *) (
        (ULONG_PTR)ob->Storage.Data + ob->Storage.Local->Index * 0x7FF8 );

    return Data->Data.id_actor;
}

template<class TC>
TC* GetListItem(tContainer<TC>* pct, ULONG guid)
{
    if(guid == ~0)
        return 0;

    if(!pct)
        return 0;

    USHORT id = (guid & 0xFFFF);
    if(id > pct->Limit)
        return 0;

    USHORT l = (id >> pct->Bits);
    USHORT e = id & ((1 << pct->Bits) - 1);

    TC *Ret = (TC *)((ULONG_PTR)&pct->List[l][0] + pct->SizeOf * e);
    return (*(PULONG)Ret == guid) ? Ret : 0;
}

CActor *CGame::GetActor(ULONG guid)
{
    return GetListItem<CActor>(m_Engine.ObMan->Ptr->Storage.Actors, guid);
}

CActorCommonData *CGame::GetActorCommonData(ULONG guid)
{
    return GetListItem<CActorCommonData>(m_Engine.ObMan->Ptr->Storage.ACD[0], guid);
}

CWorld *CGame::GetWorld(ULONG guid)
{
    return GetListItem<CWorld>(m_Engine.ObMan->Ptr->Storage.Worlds, guid);
}

CAttribGroup *CGame::GetAttribGroup(ULONG guid)
{
    return GetListItem<CAttribGroup>(m_Engine.ObMan->Ptr->Storage.AttribGroups->FastAttribGroups, guid);
}

PVOID CGame::GetAttrib(CActor *pActor, CActorCommonData *pACD, LONG AttribIndex)
{
    if(!pACD && !(pACD = GetActorCommonData(pActor->id_acd)))
        return 0;
    if(pACD->id_attrib == ~0)
        return 0;
    CAttribGroup *pGroup = GetAttribGroup(pACD->id_attrib);
    if(!pGroup)
        return 0;

    LONG IndexMask = AttribIndex ^ (AttribIndex >> 16);

    //LONG ptr = pGroup->Links.Data[ pGroup->Links.Mask & IndexMask ];
    //LOG("P: %X", ptr);

    CAttribFormula *pAfm = pGroup->Formula;
    if(pAfm)
    {
        for(tAttribLink *pLnk = (tAttribLink *) pAfm->Map.Data[ pAfm->Map.Mask & IndexMask ];
            pLnk;
            pLnk = pLnk->Next)
        {
            if(pLnk->AttribIndex == AttribIndex)
                return &pLnk->Value;
        }
    }

    return 0;


Useage
    CActor *pLocal = GetActor(GetLocalActorGuid()),
        **pList = Actors->List;

    if(!pLocal || !pLocal->Mov)
        return 0;

    for(int i = 0; i <= Actors->Last; i++)
    {
        CActor &c = pList[0][i];

        if(&c == pLocal)
            continue;
        if(!c.Mov)
            continue;
...
    }



    LOG("%X tls", &Game->m_Engine.ObMan->Ptr->Storage);
    CActor *a = Game->GetActor(Game->GetLocalActorGuid());
    LOG("%X %X id", a->id_actor, a->id_acd);
    LOG("%X actor", a);
    CActorCommonData *pACD = Game->GetActorCommonData(a->id_acd);
    LOG("%X acd", pACD);
    CAttribGroup *pGroup = Game->GetAttribGroup(pACD->id_attrib);
    LOG("%X group", pGroup);



    for(int i = 0; ; i++)
    {
        CObAttribs &a = Game->m_Engine.ObAttr[i];
        if(!a.Name || !a.Name[0])
            break;
        LOG("%i %i [%08X] \"%s\" %i %i", i, a.id, &a, a.Name, a.UnkId, a.NextId);
        if(a.Formula && a.Formula[0])    LOG("    %s", a.Formula);
        if(a.Formula2 && a.Formula2[0])    LOG("    %s", a.Formula2);
        for(CObAttribStat *os = a.Stat; os; os = os->Next)
            LOG("    :: %i %i", os->i, os->Bits);
        LOG("");
    }

    ULONG MaxIndex = 0;
    for(int i = 0; ; i++, MaxIndex++)
    {
        CObAttribs &a = Game->m_Engine.ObAttr[i];
        if(!a.Name || !a.Name[0])
            break;
    }

log all attribs on char 
AttribIndex is kinda server attrib id hash or smth
probably its possible to find sum func to send *change my attrib and gief me gear naw beach* packets. but i do not want to

    CAttribFormula *pAfm = pGroup->Formula;
    if(pAfm)
    {
        for(ULONG x = 0; x < pAfm->Map.Count; x++)
        {
            for(tAttribLink *pLnk = (tAttribLink *) pAfm->Map.Data[x];
                pLnk;
                pLnk = pLnk->Next)
            {
                ULONG id = pLnk->AttribIndex & 0xFFF;
                if(id > MaxIndex)
                {
                    LOG("ERROR");
                }
                else
                {
                    CObAttribs &a = Game->m_Engine.ObAttr[id];
                    LOG("[%08X|%08X] %-4i %s %X [%i]", pLnk, &a, x, a.Name, pLnk->Value, a.Unk);
                }
            }
        }
    } 


Init
struct
{
        ObManPtr *ObMan;
        CObAttribs *ObAttr;

} m_Engine;


//.text:00813029 8B 0D CC C8 56 01                                mov     ecx, obman_156C8CC   
//.text:0081302F C7 81 DC 03 00 00 FF FF FF FF                    mov     dword ptr [ecx+3DCh], 0FFFFFFFFh
// 8B ? ? ? ? ? C7 ? ? 03 00 00 FF FF FF FF
    {
    PUCHAR pFnd = FindPattern("\x8B\x0D\xCC\xC8\x56\x01\xC7\x81\xDC\x03\x00\x00\xFF\xFF\xFF\xFF",
        "x?????x??xxxxxxx");
    LOG("ObMan[0]: %X", pFnd);
    if(pFnd)
        *(PUCHAR *) &m_Engine.ObMan = *(PUCHAR *) &pFnd[2];
    LOG("ObMan: %X", m_Engine.ObMan);
    }
//.text:0085E0E1 25 FF 0F 00 00                       and     eax, 0FFFh
//.text:0085E0E6 8D 04 80                             lea     eax, [eax+eax*4]
//.text:0085E0E9 8B 0C C5 EC 64 55 01                 mov     ecx, attr_15564EC[eax*8]
// 25 FF 0F 00 00 8D 04 80 8B 0C C5 
    {
    PUCHAR pFnd = FindPattern("\x25\xFF\x0F\x00\x00\x8D\x04\x80\x8B\x0C\xC5",
        "xxxxxxxxxxx");
    LOG("ObAttr[0]: %X", pFnd);
    if(pFnd)
        *(PUCHAR *) &m_Engine.ObAttr = *(PUCHAR *) &pFnd[5+3+3];
    LOG("ObAttr: %X", m_Engine.ObAttr);
    } 



Warden

Beaving
Warden Logger
Mirror: http://d3aye.tk/files/Wardenlogger.rar
Quote:
EDIT: Here, you can log on your own. Filter has been added. It filters all addresses that are not in the game code. I don't know if Warden scans outside of base+size, I dont care really.

Open D3, open Loader, login, let it run and log will be saved to C:\logoffset.txt
Keep in mind that Warden scans slowly, it could take several hours to get all, and also, that it's not the only scan Warden has.

You can remove duplicate ones on this website: Remove Duplicate Lines

EDIT: Could be that the D3 client will just terminate after a few minutes. The logger will do this automaticly when it sees itself scanned. That is just a fake scan or whatever and not related to any detection. I don't care to remove it.


Beaving
Warden scan info for 1.0.2.9991 (Offset scan only): - thread includes other great information
May or may not be fully completely and due to change and any time
0x802118 : 0x14
0x802128 : 0x14
0x8026F9 : 0x20
0x803024 : 0xD
0x803269 : 0x24
0x8032B9 : 0x24
0x8032E9 : 0x24
0x804302 : 0xB
0x804322 : 0xB
0x804352 : 0xB
0x804392 : 0xB
0x8043B2 : 0xB
0x804492 : 0xB
0x8044E2 : 0xB
0x8044F2 : 0xB
0x804502 : 0xB
0x804512 : 0xB
0x804522 : 0xB
0x804532 : 0xB
0x804562 : 0xB
0x8045F2 : 0xB
0x8048F8 : 0x23
0x80490C : 0x20
0x805020 : 0x10
0x805908 : 0x19
0x80701C : 0x16
0x807020 : 0x10
0x8071C0 : 0x1F
0x8071E4 : 0x17
0x8071F8 : 0x13
0x807234 : 0x13
0x80749C : 0x14
0x8074BC : 0x14
0x807724 : 0xE
0x807CB4 : 0x17
0x8081E0 : 0x1B
0x808EC0 : 0x37
0x809084 : 0x1B
0x809110 : 0x28
0x80A140 : 0x10
0x80A848 : 0x13
0x80A854 : 0x13
0x80A858 : 0x13
0x80A864 : 0x1F
0x80A864 : 0x27
0x80A864 : 0x2F
0x80B0D0 : 0xC
0x80DF80 : 0x6
0x80E102 : 0x2A
0x80E8E4 : 0xD
0x80F1B2 : 0x2A
0x812A40 : 0x9
0x81605A : 0xD
0x816740 : 0x23
0x81A9C0 : 0x25
0x81C03C : 0x1A
0x81CA68 : 0x22
0x81DA40 : 0x25
0x81DA50 : 0x27
0x81FD4C : 0xE
0x82B028 : 0xD
0x82B038 : 0xD
0x84972D : 0x8
0x85803C : 0xD
0x85C14F : 0x8
0x85E410 : 0x9
0x862248 : 0xE
0x869C10 : 0x30
0x86D4F8 : 0x30
0x86D7C8 : 0x30
0x86D7EC : 0x30
0x86D7F4 : 0x30
0x86D7F8 : 0x30
0x87A82C : 0x16
0x87A8C4 : 0x30
0x87B944 : 0x16
0x87EA74 : 0x16
0x880A2C : 0x16
0x8B46B0 : 0x8
0x94F336 : 0x8
0x94F700 : 0x8
0x97AFE0 : 0xA
0x981BB2 : 0xA
0x9E4E73 : 0xB
0x9E4E83 : 0xC
0xA020FC : 0x2E
0xA020FC : 0x36
0xA05AED : 0xB
0xA09D80 : 0xC
0xA5DD20 : 0x8
0xAA8768 : 0xA
0xACC40D : 0x7
0xACC4B2 : 0x7
0xACC4D0 : 0x9
0xACFC14 : 0x8
0xAD0045 : 0x8
0xAD0191 : 0x9
0xB170D3 : 0xA
0xB1B5B0 : 0xF
0xB1EE0F : 0xF
0xB1EE66 : 0xD
0xB1F9E8 : 0x8
0xB3A2CB : 0xC
0xB3A389 : 0x7
0xB43450 : 0xA
0xBB18B9 : 0x8
0xC47590 : 0xA
0xC88580 : 0x7
0xF26F87 : 0xE


Beaving
Warden Dump
Scanning module from 13th June 12.
Mirror: http://d3aye.tk/files/d3wardendump.rar

Beaving
Warden Pattern
Pattern for the scanning function is 6A 00 57 53 56 51 ff 15.
Keep in mind that Warden is only loaded when logged in and modules are dynamically and are overwritten on different locations here and then.

Random Other Useful Information

How to convert world coordinates to screen coordinates
http://webglfactory.blogspot.com/2011/0 ... creen.html
http://stackoverflow.com/questions/7242 ... projection

The real deal :D
viewtopic.php?f=236&t=490884

Explains Attributes
http://www.ownedcore.com/forums/diablo- ... -help.html

Reading Attributes
http://www.ownedcore.com/forums/diablo- ... s-oop.html


Kane49:
NavMesh vs NavCells
Image

Image


Attribute Research:
http://www.ownedcore.com/forums/diablo- ... -help.html
AH - http://www.ownedcore.com/forums/diablo- ... house.html
Very Indepth - http://www.ownedcore.com/forums/diablo- ... s-oop.html

Forget Whom Linked Me This...
        /// <summary>
        /// Get an actor attribute (health, armor etc.)
        /// </summary>
        /// <typeparam name="T">int or float</typeparam>
        /// <param name="attribute">Attribute to get</param>
        /// <returns>Value of attribute</returns>
        public T GetAttribute<T>(ActorAttribute attribute) where T : struct
        {
            uint ret = GetAttribute((uint)attribute | 0xFFFFF000);

            if (!ret.IsValid())
            {
                return default(T);
            }

            return _memory.Read<T>(ret + 8);
        }

        private uint GetAttribute(uint attribute)
        {
            uint CAttribFormula = _memory.Read<uint>(BaseAddress + 0x10);

            uint _418 = _memory.Read<uint>(CAttribFormula + 0x418);

            uint AttributesMap = _memory.Read<uint>(CAttribFormula + 0x8);

            uint IndexMask = (_418 & (attribute ^ (attribute >> 0x10)));

            uint _res = (AttributesMap + 4 * IndexMask);

            uint result = _memory.Read<uint>(_res);

            if (result != 0)
            {
                while (_memory.Read<uint>(result + 0x4) != attribute)
                {
                    result = _memory.Read<uint>(result);

                    if (result == 0)
                    {
                        break;
                    }
                }
            }

            return result;
        }


Scene Info
http://nopaste.info/9afa622951.html


Last edited by UserNamex32 on Tue Jul 24, 2012 4:35 am, edited 24 times in total.
Top
 Profile  
 Post subject: Re: Diablo III Offsets, Globals, Funcs, Structs, Classes, et
PostPosted: Fri Jun 15, 2012 8:14 am 
 
Administrator Gold
Administrator Gold
User avatar

Joined: Fri Sep 20, 2002 2:38 am
Location: ٩(͡๏̯͡๏)۶Chatsubo Shacko Factory
Hi, the reason everything was consolidated to this one thread was to avoid the comment spam in the previous one. Please do not post comments in this thread unless it is vital or comes bundled with further technical information.

_________________
Image Image Image

Image

Top
 Profile  
 Post subject: Re: Diablo III Offsets, Globals, Funcs, Structs, Classes, et
PostPosted: Sun Jun 17, 2012 7:29 am 
 
User
User

Joined: Sat Mar 17, 2012 5:39 pm
1.0.2.9991 (47839-688375)

float Zoom = 0.0f;

__asm
{
   mov eax, dword ptr ds:[0x1580A2C]
   mov ecx, dword ptr ds:[eax+0x8D4]

   push esi
   lea esi, dword ptr ds:[ecx+0x48]
   mov ecx, esi

//   mov Zoom, ecx
}

// Zoom (+= || -=) 0.5f;

__asm
{
   mov eax, Zoom

   mov dword ptr ds:[ecx+0x88], eax

   pop esi
}

Top
 Profile  
 Post subject: Re: Diablo III Offsets, Globals, Funcs, Structs, Classes, et
PostPosted: Tue Jun 19, 2012 9:05 pm 
 
User
User

Joined: Tue Oct 12, 2004 6:13 pm
Location: Germany
I have been datamining D3A the last couple of hours. Here is what I found (ALL OF THIS IS UNTESTED!) + some things I found previously

(pointers updated to 9991)
debugOut - 00829b9d
getPlayerGUID - 0097CEF0
iterateActors - 009E1CB0
printMessage - 00A4AFA0
getACDPtrFromGUID - 00816D90
getActorPtrFromGUID - 008298B0
-- functions used by D3A:
getActorByID - 0829920
getActorSNO - 00838160
getGold - 00851C00
getWorld - 00A19740
getAct - 0082A750
getQuest - 00866710 (result is a struct with [eax] = quest and [eax+18h] = questStep
printChat - 0093ADE0
getScene - 008A2580
getLevelArea - 009E8600
getACDbyACDid - 00811B20
getItemQuality - 0083A550
iterateUI - 00A82F30
usePowerOnActor - 0097AC70
usePowerOnPos - 0097AA30

ObjMgrPtr - 01580A2C
UIRootPtr - 0156D500


and some structs and functions (only those entries that were more or less obvious while scanning the D3A files)
Actor
0x21C animation

ACD
0x0B8 MonsterType
0x0D0 position
0x110 itemLocation
0x1EC animation
0x254 worldID

UIManager
0x40 Size


UIElementDescriptor
0x010 Name
0x210 UIElement


UIElement
0x028 isVisible
0x030 uid / hash
0xAD8 Text
.Click() {
  void (*callback)(QWORD);
  if (this.uid == 0xDA955A812289FE26) {
    callback = this+0x470;
  } else {
    callback = this+0x55C;
  }
  if (callback != 0)
    (*callback)(&this.uid);
  return;
}


Scene
0x08C SizeX
0x090 SizeY
0x0EC Position
0x178 NavMesh
0x188 isActive
.isvalid() { return (navMesh != 0); }

_________________
Image

Top
 Profile  
 Post subject: Re: Diablo III Offsets, Globals, Funcs, Structs, Classes, et
PostPosted: Wed Jun 20, 2012 1:45 am 
 
User
User
User avatar

Joined: Sat Nov 13, 2010 5:17 pm
New stuff + updates

Top
 Profile  
 Post subject: Re: Diablo III Offsets, Globals, Funcs, Structs, Classes, et
PostPosted: Sat Jun 23, 2012 10:07 am 
 
User
User

Joined: Sat Jun 23, 2012 10:02 am
hello,could you tell me the value of CObAttribs *ObAttr?

Top
 Profile  
 Post subject: Re: Diablo III Offsets, Globals, Funcs, Structs, Classes, et
PostPosted: Sat Jun 23, 2012 8:12 pm 
 
User
User
User avatar

Joined: Sat Nov 13, 2010 5:17 pm
hello,could you tell me the value of CObAttribs *ObAttr?


They are using a pattern to find the offset to it
just hit Ctrl+F and search through this page
IDK C/C++ very well but it looks like it takes a few other offsets or something to get to the base of it.
//.text:0085E0E1 25 FF 0F 00 00                       and     eax, 0FFFh
//.text:0085E0E6 8D 04 80                             lea     eax, [eax+eax*4]
//.text:0085E0E9 8B 0C C5 EC 64 55 01                 mov     ecx, attr_15564EC[eax*8]
// 25 FF 0F 00 00 8D 04 80 8B 0C C5 
    {
    PUCHAR pFnd = FindPattern("\x25\xFF\x0F\x00\x00\x8D\x04\x80\x8B\x0C\xC5",
        "xxxxxxxxxxx");
    LOG("ObAttr[0]: %X", pFnd);
    if(pFnd)
        *(PUCHAR *) &m_Engine.ObAttr = *(PUCHAR *) &pFnd[5+3+3];
    LOG("ObAttr: %X", m_Engine.ObAttr);
    }

Top
 Profile  
 Post subject: Re: Diablo III Offsets, Globals, Funcs, Structs, Classes, et
PostPosted: Sun Jun 24, 2012 4:26 am 
 
User
User

Joined: Sat Jun 23, 2012 10:02 am
thank you very much !
another problem,I want to get the Actor's category,such as monstor, drop item,npc,door..
how can I get it ?

Top
 Profile  
 Post subject: Re: Diablo III Offsets, Globals, Funcs, Structs, Classes, et
PostPosted: Sun Jun 24, 2012 7:12 am 
 
Retired Staff
Retired Staff

Joined: Thu Jul 26, 2001 1:00 am
Location: Sweden
The actor SNO has a field for type.

Top
 Profile  
 Post subject: Re: Diablo III Offsets, Globals, Funcs, Structs, Classes, et
PostPosted: Mon Jun 25, 2012 3:33 am 
 
User
User

Joined: Sat Jun 23, 2012 10:02 am
get it ! how can i get the role's name?

Top
 Profile  
 Post subject: Re: Diablo III Offsets, Globals, Funcs, Structs, Classes, et
PostPosted: Fri Jun 29, 2012 7:35 am 
 
BHDev
BHDev
User avatar

Joined: Wed Feb 07, 2007 10:13 pm
UI related stuff from 1.0.3.10235

template<class K, class V> struct HashTable
{
   struct Pair
   {
      Pair *next;
      K key;
      V value;
   };
   
   void *u_0; // Points to &u_3
   void *u_1;
   Pair **table;
   void *u_2[13];
   uint32_t mask; // (table size in power of 2) - 1
   uint32_t entries;
   void *u_3;
   
   template<typename func> bool each_pair(func do_for_pair)
   {
      for(size_t i = 0; i <= mask; ++i)
      {
         Pair *pair = table[i];

         if(pair)
         {
            if(!do_for_pair(pair->key, pair->value))
               return false;
         }
      }
      
      return true;
   }
};

/* UIEvent
   1.0.3.10235
   MainWndProc - 0x80E5F0: Setups this structure
   dispatch_ui_event - 0x94A8E0: Dispatches the event
*/
struct UIEvent
{
   enum Type
   {
      LeftMouseDown = 6,
      LeftMouseUp = 7,
      LeftMouseDblClick = 8,
      
      MiddleMouseDown = 11,
      MiddleMouseUp = 12,
      MiddleMouseDblClick = 13,
      
      RightMouseDown = 16,
      RightMouseUp = 17,
      RightMouseDblClick = 18,
      
   };
   
   Type type;
   
   void *u_0[6];
   int x;
   int y;
   void *u_1[9];
};

struct UIReference
{
   uint64_t hash;
   char name[0x200];
} __attribute__((aligned(8)));

struct UIHandler
{
   const char *name; // Ignored if this is 0
   uint32_t hash;
   
   typedef void (*func_t)(UIReference *element);
   
   func_t execute;
};

struct UIComponent;

struct UIComponentVirtualTable
{
   void *u_0[7];
   void (__thiscall *event)(UIComponent *self, int *, UIEvent *event);
};

typedef int sound_t; // -1 is no sound

struct UIRect
{
   float left;
   float top;
   float right;
   float bottom;
};

struct UIComponent
{
   /* 1.0.3.10235 Vtable types:
      0x13ED3D8: UIShortcut > UIComponent
      0x13ED258: UIDrawHook > UIComponent
      0x13D7478: UIEvent > UIComponent
      0x13D2BD8: Unknown > UIContainer
      0x13E25B8: UIButton > UIControl
      0x13A2760: UILabel > UIControl
      0x13D4EB8: UIEdit > UIControl
      0x13EAFF0: UICheckbox > UIControl
      0x13ECFE0: UIScrollbarThumb > UIContainer
      0x13E8BF0: Unknown > UIContainer
      0x13EB408: Unknown > UIContainer
   */
   
   UIComponentVirtualTable *v_table;
   void *u_0;
   UIHandler::func_t handler_0;
   void *u_1[1];
   UIHandler::func_t handler_1;
   void *u_2[2];
   sound_t sound_0;
   void *u_3[2];
   uint32_t visible;
   uint32_t u_4; // Padding?
   UIReference self;
   UIReference parent;
};

struct UIContainer:
   public UIComponent
{
   void *u_0[8];
   UIComponent **children;
   uint32_t u_1;
   uint32_t child_count;
};

struct UIControl: // size 0xD00?
   public UIContainer
{
   void *u_0[30];
   uint32_t state;
   void *u_1[1];
   uint32_t flags; // Controls which UIRect is used
   void *u_2[6];
   UIRect rect_0;
   void *u_3[13];
   UIHandler::func_t click;
   void *u_4[323];
   UIRect rect_1;
   void *u_5[12];
   UIRect rect_2;
   void *u_6[7];
   const char *text;
   void *u_7[90];
   const char *text_dup;
};

typedef HashTable<UIReference, UIComponent *> UIComponentMap;
typedef HashTable<uint32_t, UIHandler *> UIHandlerMap;

struct UIManager
{
   UIComponentMap *component_map;
   void *u_0; // Padding?
   UIReference u_1[6];
   void *u_2[1688];
   UIHandlerMap *handler_map;
};

struct ObjectManager
{
   void *u_0[7];
   int count_0; // Fires UIComponent::handler_1 count_0 times in 0xAE27A0 - 1.0.3.10235
   void *u_1[577];
   UIManager *ui_manager;
};

enum UIReferenceIndices
{
   UIReferenceList_None,
   UIReferenceList_Root,
   UIReferenceList_RootNormalLayer,
   UIReferenceList_RootWindowLayer,
   UIReferenceList_RootTopLayer,
   UIReferenceList_MainScreen,
   UIReferenceListEntries,
};

static constexpr auto &ui_reference_list = Offset<UIReference *, 0x158E3B8>::value.ptr; // 1.0.3.10235

/* ui_handler_list
   1.0.3.10235
   setup_ui_handler_list - 0x1326620: Initializes this array
   setup_ui_manager_handler_list - 0xB52120: populates this list into UIManager::handler_map
   get_ui_handler_from_string - 0xB51F10: maps a string to UIHandler::execute using UIManager::handler_map
*/
static constexpr auto &ui_handler_list = Offset<UIHandler *, 0x15924E0>::value.ptr;
static const size_t ui_handler_list_size = 920; // referenced in setup_ui_manager_handler_list

static constexpr auto &object_manager = Offset<ObjectManager **, 0x15A1BEC>::value.ptr; // 1.0.3.10235

static constexpr auto &get_ui_component = Offset<UIComponent *(__cdecl *)(UIReference *reference), 0x93F400>::value.ptr; // 1.0.3.10235

/* extract_ui_rect
   Extracts the virtual coordinates of the UIControl into the rect parameter
*/
static constexpr auto &extract_ui_rect = Offset<void (__thiscall *)(UIControl *element, UIRect *rect), 0xA85B80>::value.ptr; // 1.0.3.10235

/* map_ui_rect
   Maps the virtual coordinates passed in 'in' and maps it to window coordinates which is stored in 'out'
*/
static constexpr auto &map_ui_rect = Offset<void (*)(UIRect *in, UIRect *out, bool x_axis, bool y_axis), 0xA8A230>::value.ptr; // 1.0.3.10235

verify_offset(ObjectManager, count_0, 0x1C);
verify_offset(ObjectManager, ui_manager, 0x924);

verify_offset(UIManager, component_map, 0);
verify_offset(UIManager, handler_map, 0x2698);

// Referenced by dispatch_ui_event
verify_size(UIEvent, 0x48);

verify_size(UIReference, 0x208);
verify_offset(UIReference, name, 0x8);

verify_offset(UIComponent, self, 0x30);

// Referenced by 0x941360 - 1.0.3.10235
verify_offset(UIComponent, parent, 0x238);

// Referenced by 0xAE27A0 - 1.0.3.10235
verify_offset(UIComponent, handler_0, 0x8);
verify_offset(UIComponent, handler_1, 0x10);
verify_offset(UIComponent, sound_0, 0x1C);

// UIContainer::PassEventToChildren - 0A8AA00 - 1.0.3.10235
// UIContainer::IterateVisible - 00A897C0 - 1.0.3.10235
verify_offset(UIContainer, children, 0x460);
verify_offset(UIContainer, child_count, 0x468);

// Referenced by 0x9D5820 - 1.0.3.10235
verify_offset(UIControl, text, 0xAC8);

verify_offset(UIControl, text_dup, 0xC34);
verify_offset(UIControl, state, 0x4E4);

// Referenced by 0xBA75C0 (event handler) - 1.0.3.10235
verify_offset(UIControl, click, 0x54C);

// Referenced by extract_ui_rect
verify_offset(UIControl, rect_0, 0x508);
verify_offset(UIControl, rect_1, 0xA5C);
verify_offset(UIControl, rect_2, 0xA9C);

verify_offset(UIComponentMap, table, 0x8);
verify_offset(UIComponentMap, mask, 0x40);

verify_offset(UIComponentMap::Pair, key, 0x8);
verify_offset(UIComponentMap::Pair, value, 0x210);

Top
 Profile  
 Post subject: Re: Diablo III Offsets, Globals, Funcs, Structs, Classes, et
PostPosted: Thu Jul 05, 2012 3:05 am 
 
User
User
User avatar

Joined: Sat Nov 13, 2010 5:17 pm
Jens, I was wondering how you determined if the attributes were float/int
it seems these are not correct ? or almost as if they are backwards?
haven't really checked any others that I can remember
maybe the stats were wrong too

health stuff seems to be float
    Hitpoints_Cur = 0x067,   // int
    Hitpoints_Factor_Level = 0x068,   // int
    Hitpoints_Factor_Vitality = 0x069,   // int
    Hitpoints_Total_From_Vitality = 0x06A,   // int
    Hitpoints_Total_From_Level = 0x06B,   // int
    Hitpoints_Granted = 0x06C,   // int
    Hitpoints_Granted_Duration = 0x06D,   // float
    Hitpoints_Max = 0x06E,   // int
    Hitpoints_Max_Bonus = 0x06F,   // int
    Hitpoints_Max_Total = 0x070,   // int
    Hitpoints_Percent = 0x071,   // int
    Hitpoints_Regen_Per_Second = 0x072,   // int
    Hitpoints_Max_Percent_Bonus = 0x073,   // int
    Hitpoints_Max_Percent_Bonus_Item = 0x074,   // int
    Hitpoints_Healed_Target = 0x075,   // int

Top
 Profile  
 Post subject: Re: Diablo III Offsets, Globals, Funcs, Structs, Classes, et
PostPosted: Thu Jul 05, 2012 7:37 am 
 
Retired Staff
Retired Staff

Joined: Thu Jul 26, 2001 1:00 am
Location: Sweden
Jens, I was wondering how you determined if the attributes were float/int
it seems these are not correct ? or almost as if they are backwards?
haven't really checked any others that I can remember
maybe the stats were wrong too

health stuff seems to be float
    Hitpoints_Cur = 0x067,   // int
    Hitpoints_Factor_Level = 0x068,   // int
    Hitpoints_Factor_Vitality = 0x069,   // int
    Hitpoints_Total_From_Vitality = 0x06A,   // int
    Hitpoints_Total_From_Level = 0x06B,   // int
    Hitpoints_Granted = 0x06C,   // int
    Hitpoints_Granted_Duration = 0x06D,   // float
    Hitpoints_Max = 0x06E,   // int
    Hitpoints_Max_Bonus = 0x06F,   // int
    Hitpoints_Max_Total = 0x070,   // int
    Hitpoints_Percent = 0x071,   // int
    Hitpoints_Regen_Per_Second = 0x072,   // int
    Hitpoints_Max_Percent_Bonus = 0x073,   // int
    Hitpoints_Max_Percent_Bonus_Item = 0x074,   // int
    Hitpoints_Healed_Target = 0x075,   // int

Yeah all his attribute types are inverted so it's probably just a simple mistake. See http://www.unknowncheats.me/forum/641691-post10.html for how to dump attribute descriptors. The new offset is in jensecj's post.

Top
 Profile  
 Post subject: Re: Diablo III Offsets, Globals, Funcs, Structs, Classes, et
PostPosted: Thu Jul 05, 2012 9:07 am 
 
User
User

Joined: Wed Jun 20, 2012 8:12 pm
Hi there, at first thx to everyone sharing your progress!

Edit: I actually found more concrete Info about all that stuff here: http://code.google.com/p/d3adventure/so ... s/Scene.cs
Thx to d3adventure for making this open source! Most likely I will publish the updated stuff anyway. Lets get to work :)

Here what I've got about that Scene -> NavMesh -> NavZone stuff. No warranty at all, read the comment in order to know what I am sure to be correct and where I think there may still be wrong values. I will try to update this post as soon I make some major advance.
Since I didnt find anything specific about all that Scene/NavMesh stuff I thought even my stuff here, being far away from perfect, should be a better start that nothing. So hopefully this helps some of you. Of course you are also welcome to correct / extend this too ;)

I used ILSpy to decompile demonbuddy and got those structs from there. Those strange 2-3 character stuff at NavMeshRaw are the struct variable "names" how they are displayed within ILSpy, but watch out there are double uses! So watch the variable type too, afaik there is no variable that has the same name AND type!

Changes:
- Added some first partially working structs [05.07.2012 Initial post]

I will make a short comment about what changed above whenever I edit the code of this comment.

Here the structs I use:

/**
* Contains a hashmap that contains a pointer to the scenes structs, "real id" required to obtain the correct address (see SceneTableRaw)
* Have a look at"SceneContainer" to get a clue how its used!
*/
class SceneContainerRaw {
public:
   CHAR          Name[256];             // 0x000
   ULONG          Size;                // 0x100
   ULONG          SizeOverall;          // 0x104
   LONG          Count;                // 0x108
   UCHAR          unknown_10C[60];       // 0x10C
   SceneRaw**       pList;                // 0x148
   UCHAR          unknown_14C[64];       // 0x14C
   ULONG          dwBits;             // 0x18C
   UCHAR          unknown_190[64];       // 0x190
};

/**
* Contains a table that provides the "real id" of a scene which is needed to read the struct
* Have a look at"SceneContainer" to get a clue how its used!
*/
class SceneTableRaw {
public:
   UCHAR          unknown_000[1040];      // 0x10C
   DWORD**          pList;               // 0x410
   UCHAR          unknown_414[52];      // 0x414
   DWORD          dwBits;               // 0x448
};

class SceneRaw {
public:
   int id_scene;               // 0x000   Value good!
   NavMeshRaw navmesh;            // 0x004   Looks quite good, see NavMeshRaw

   DWORD unknown_1CC;            // 0x1CC
   DWORD unknown_1D0;            // 0x1D0
   DWORD unknown_1D4;            // 0x1D4
   DWORD unknown_1D8;            // 0x1D8

   DWORD unknown_1DC;            // 0x1DC
   DWORD unknown_1E0;            // 0x1E0
   DWORD unknown_1E4;            // 0x1E4
   DWORD unknown_1E8;            // 0x1E8
   DWORD unknown_1EC;            // 0x1EC
   DWORD unknown_1F0;            // 0x1F0
   DWORD unknown_1F4;            // 0x1F4
   DWORD unknown_1F8;            // 0x1F8
   DWORD unknown_1FC;            // 0x1FC
   DWORD unknown_200;            // 0x200
   DWORD unknown_204;            // 0x204
   DWORD unknown_208;            // 0x208
   DWORD unknown_20C;            // 0x20C
   DWORD unknown_210;            // 0x210
   DWORD unknown_214;            // 0x214
   DWORD unknown_218;            // 0x218
   DWORD unknown_21C;            // 0x21C
   DWORD unknown_220;            // 0x220
   DWORD unknown_224;            // 0x224
   DWORD unknown_228;            // 0x228
   DWORD unknown_22C;            // 0x22C
   DWORD unknown_230;            // 0x230
   DWORD unknown_234;            // 0x234
   DWORD unknown_238;            // 0x238
   DWORD unknown_23C;            // 0x23C
   DWORD unknown_240;            // 0x240
   DWORD unknown_244;            // 0x244
   DWORD unknown_248;            // 0x248
   DWORD unknown_24C;            // 0x24C
   DWORD unknown_250;            // 0x250
   DWORD unknown_254;            // 0x254
   DWORD unknown_258;            // 0x258
   DWORD unknown_25C;            // 0x25C
   DWORD unknown_260;            // 0x260
   DWORD unknown_264;            // 0x264
   DWORD unknown_268;            // 0x268
   DWORD unknown_26C;            // 0x26C
   DWORD unknown_270;            // 0x270
   DWORD unknown_274;            // 0x274
   DWORD unknown_278;            // 0x278
   DWORD unknown_27C;            // 0x27C
   DWORD unknown_280;            // 0x280
   DWORD unknown_284;            // 0x284
   DWORD unknown_288;            // 0x288
   DWORD unknown_28C;            // 0x28C
   DWORD unknown_290;            // 0x290
   DWORD unknown_294;            // 0x294
   DWORD unknown_298;            // 0x298
   DWORD unknown_29C;            // 0x29C
   DWORD unknown_2A0;            // 0x2A0
   DWORD unknown_2A4;            // 0x2A4
};

class NavZoneRaw {
public:
   DWORD id_navzone;      // 0x000
   DWORD id_world;         // 0x004
   DWORD id_unknown_008;   // 0x008
   Vec2 unknown_00C;      // 0x00C
   DWORD unknown_014;      // 0x014
   Vec2 zoneMin;         // 0x018   Values good!
   Vec2 zoneMax;         // 0x020   Values good!
   DWORD unknown_028;      // 0x028
   DWORD unknown_02C;      // 0x02C
   DWORD unknown_030;      // 0x030
   DWORD unknown_034;      // 0x034
   DWORD unknown_038;      // 0x038
   DWORD unknown_03C;      // 0x03C
   DWORD unknown_040;      // 0x040
   DWORD unknown_044;      // 0x044 Maybe this is the pointer so ZoneDef?
   DWORD pNavZoneDefRaw;   // 0x048 Only contained 0 so far, guess this struct changed since
   DWORD pSceneRecord;      // 0x04C  .. the last version of demonbuddy (got this struct from there)
   DWORD unknown_050;      // 0x050
};

class NavMeshRaw {
public:
   DWORD id_navmesh;      // 0x000 SOH   Value good
   DWORD id_world;         // 0x004 STX   Value good
   DWORD unknown_008;      // 0x008 ETX
   DWORD unknown_00C;      // 0x00C EOT
   DWORD unknown_010;      // 0x010 ENQ
   DWORD sno_levelarea;   // 0x014 ACK   Not sure
   DWORD unknown_018;      // 0x018 BEL
   DWORD unknown_01C;      // 0x01C BS
   DWORD unknown_020;      // 0x020 SO
   DWORD sno_portalWorld;   // 0x024 SI      Not sure
   DWORD unknown_028;      // 0x028 DLE
   DWORD unknown_02C;      // 0x02C DC1
   DWORD unknown_030;      // 0x030 DC2
   DWORD unknown_034;      // 0x034 DC3
   DWORD unknown_038;      // 0x038 DC4
   DWORD unknown_03C;      // 0x03C NAK
   DWORD unknown_040;      // 0x040 SYN
   DWORD unknown_044;      // 0x044 ETB
   DWORD unknown_048;      // 0x048 CAN
   DWORD unknown_04C;      // 0x04C EM
   float unknown_050;      // 0x050 SOH
   DWORD unknown_054;      // 0x054 SUB
   DWORD unknown_058;      // 0x058 ESC
   DWORD unknown_05C;      // 0x05C FS
   DWORD unknown_060;      // 0x060 GS
   DWORD unknown_064;      // 0x064 RS
   float unknown_068;      // 0x068 STX
   DWORD unknown_06C;      // 0x06C US
   DWORD unknown_070;      // 0x070 DEL
   DWORD unknown_074;      // 0x074 PAD
   DWORD unknown_078;      // 0x078 HOP
   DWORD unknown_07C;      // 0x07C BPH
   DWORD unknown_080;      // 0x080 NBH
   DWORD unknown_084;      // 0x084 IND
   DWORD unknown_088;      // 0x088 SSA
   DWORD sizeX;         // 0x08C ESA   Values good!
   DWORD sizeY;         // 0x090 HTS   Values good!
   Vec3 vec_unknown_094;   // 0x094 SOH   Dunno what it is, but values look good
   Vec3 vec_unknown_0A0;   // 0x0A0 STX    .. almost looks like the bounds further
   Vec3 vec_unknown_0AC;   // 0x0AC ETX    .. below.
   Vec3 vec_unknown_0B8;   // 0x0B8 EOT    .. End of comment! :D
   DWORD unknown_0C4;      // 0x0C4 SOH
   DWORD unknown_0C8;      // 0x0C8 STX
   DWORD unknown_0CC;      // 0x0CC ETX
   DWORD unknown_0D0;      // 0x0D0 EOT
   DWORD unknown_0D4;      // 0x0D4 HTJ
   DWORD unknown_0D8;      // 0x0D8 VTS   Read by [ 0x008EAAC0 / D3::NavMesh::GetFlags ] at Address 0x008EABF4
   DWORD unknown_0DC;      // 0x0DC PLD
   DWORD unknown_0E0;      // 0x0E0 ENQ
   DWORD unknown_0E4;      // 0x0E4 ACK
   DWORD unknown_0E8;      // 0x0E8 BEL
   Vec2 position;         // 0x0EC SOH   Values good!
   DWORD unknown_0F4;      // 0x0F4 BS
   DWORD unknown_0F8;      // 0x0F8 SO
   DWORD unknown_0FC;      // 0x0FC SI
   DWORD unknown_100;      // 0x100 DLE
   DWORD unknown_104;      // 0x104 DC1
   DWORD unknown_108;      // 0x108 DC2
   DWORD unknown_10C;      // 0x10C DC3
   DWORD unknown_110;      // 0x110 DC4
   DWORD unknown_114;      // 0x114 NAK
   DWORD unknown_118;      // 0x118 SYN
   DWORD unknown_11C;      // 0x11C ETB
   DWORD unknown_120;      // 0x120 CAN
   DWORD unknown_124;      // 0x124 EM
   DWORD unknown_128;      // 0x128 SUB
   DWORD unknown_12C;      // 0x12C PLU
   DWORD unknown_130;      // 0x130 RI
   Bounds bounds;         // 0x134 SOH   Propably little offset change needed
   Bounds boundsMarker;   // 0x14C STX   ... these vectors (boundsMarker) look wrong!
   float unknown_164;      // 0x164 ETX
   Vec2 unknown_168;      // 0x168 STX
   float unknown_170;      // 0x170 EOT
   float unknown_174;      // 0x174 ENQ
   DWORD unknown_178;      // 0x178 SS2
   NavZoneRaw* pZone;      // 0x17C SOH   Looks good!
   DWORD unknown_180;      // 0x180 SS3
   DWORD unknown_184;      // 0x184 DCS
   DWORD unknown_188;      // 0x188 PU1
   DWORD unknown_18C;      // 0x18C PU2
   DWORD unknown_190;      // 0x190 STS
   DWORD unknown_194;      // 0x194 CCH
   DWORD unknown_198;      // 0x198 MW
   DWORD unknown_19C;      // 0x19C SPA
   DWORD unknown_1A0;      // 0x1A0 EPA
   DWORD unknown_1A4;      // 0x1A4 SOS   Read by [ 0x008EAAC0 / D3::NavMesh::GetFlags ] at Address 0x008EAAF6
   DWORD unknown_1A8;      // 0x1A8 SGCI   Could be a pointer
   DWORD unknown_1AC;      // 0x1AC SCI
   DWORD unknown_1B0;      // 0x1B0 CSI
   DWORD unknown_1B4;      // 0x1B4 ESC
   DWORD unknown_1B8;      // 0x1B8 FS
   DWORD unknown_1BC;      // 0x1BC GS
   DWORD unknown_1C0;      // 0x1C0 RS
   DWORD unknown_1C4;      // 0x1C4 ST      Could be a pointer
};


Here my wrapper classes that read those structs from memory (I'm not injecting!):

SceneContainer
class SceneContainer {
private:
   SceneContainerRaw stContainerData;
   SceneTableRaw stTableData;
   HANDLE    hGameProcess;

   void* readMemory(DWORD dwStart, DWORD dwLength);
public:
   SceneContainer(HANDLE hProcess, DWORD dwAddrContainer, DWORD dwAddrTable);
   virtual ~SceneContainer();

   Scene* getScene(DWORD id_scene);
};

SceneContainer::SceneContainer(HANDLE hProcess, DWORD dwAddrContainer, DWORD dwAddrTable) {
   hGameProcess = hProcess;
   // dwAddrHashmap = &Storage + 0x17C
   if (ReadProcessMemory(hGameProcess, (const void*)dwAddrTable, &stTableData, sizeof(SceneTableRaw), NULL) == 0) {
      throw 0x050;
   }
   // dwAddrContainer = &Storage + 0x178
   if (ReadProcessMemory(hGameProcess, (const void*)dwAddrContainer, &stContainerData, sizeof(SceneContainerRaw), NULL) == 0) {
      throw 0x051;
   }
}

SceneContainer::~SceneContainer() {
   delete &stContainerData;
}

void* SceneContainer::readMemory(DWORD dwStart, DWORD dwLength) {
   void* result = malloc(dwLength);
   if (ReadProcessMemory(hGameProcess, (const void*) dwStart, result, dwLength, NULL) != 0)
      return result;
   return NULL;
}

Scene* SceneContainer::getScene(DWORD dwId) {
   DWORD dwIdLow = (dwId & 0x00FF);
   DWORD dwIdHigh = (dwId & 0xFF00) >> 8;
   DWORD dwIndexLow = (dwIdLow ^ 0x811C9DC5) * 0x1000193;
   DWORD dwIndex = ((dwIndexLow ^ dwIdHigh) * 0x1000193) ^ ((dwId >> 16) & 0xFF);
   dwIndex = (dwIndex * 0x1000193) ^ ((dwId >> 24) & 0xFF);
   dwIndex = (dwIndex * 0x1000193) & stTableData.dwBits;
   DWORD dwTarget = *(DWORD*)readMemory((DWORD)stTableData.pList + 4 * dwIndex, sizeof(DWORD));
   DWORD dwTargetId = 0;
   do {
      if (dwTarget == 0) // Not found!
         return NULL;
      // Compare the Id
      dwTargetId = *(DWORD*)readMemory(dwTarget + 4, sizeof(DWORD));
      if (dwTargetId == dwId) // Found!
         break;
      // Try next
      dwTarget = *(DWORD*)readMemory((DWORD)dwTarget, sizeof(DWORD));
   } while (true);
   dwIndex = *(DWORD*)readMemory(dwTarget + 8, sizeof(DWORD));
   Scene* scene = new Scene(hGameProcess, (DWORD)stContainerData.pList + sizeof(SceneRaw) * (dwIndex & 0xFFFF));
   return scene;
}



Scene
class Scene {
private:
   SceneRaw stScene;
   HANDLE    hGameProcess;

   void* readMemory(DWORD dwStart, DWORD dwLength);
public:
   Scene(HANDLE hProcess, DWORD dwAddress);
   virtual ~Scene();

   DWORD      getId();
   DWORD      getWorldId();
   DWORD      getHeight();
   DWORD      getWidth();
   Vec2*      getPosition();
   NavMesh*   getNavMesh();
};

Scene::Scene(HANDLE hProcess, DWORD dwAddress) {
   hGameProcess = hProcess;
   if (ReadProcessMemory(hGameProcess, (const void*)dwAddress, &stScene, sizeof(SceneRaw), NULL) == 0) {
      throw 0x050;
   }
}

Scene::~Scene() {
   // TODO Auto-generated destructor stub
}

void* Scene::readMemory(DWORD dwStart, DWORD dwLength) {
   void* result = malloc(dwLength);
   if (ReadProcessMemory(hGameProcess, (const void*) dwStart, result, dwLength, NULL) != 0)
      return result;
   return NULL;
}

DWORD Scene::getId() {
   return stScene.navmesh.id_navmesh;
}

DWORD Scene::getWorldId() {
   return stScene.navmesh.id_world;
}

DWORD Scene::getHeight() {
   return stScene.navmesh.sizeY;
}

DWORD Scene::getWidth() {
   return stScene.navmesh.sizeX;
}

Vec2* Scene::getPosition() {
   return &stScene.navmesh.position;
}

NavMesh* Scene::getNavMesh() {
   return new NavMesh(hGameProcess, &stScene.navmesh);
}



NavMesh
class NavMesh {
public:
   NavMeshRaw* pNavMesh;
   HANDLE    hGameProcess;

   void* readMemory(DWORD dwStart, DWORD dwLength);
public:
   NavMesh(HANDLE hProcess, NavMeshRaw* pAttribGroup);
   NavMesh(HANDLE hProcess, DWORD dwAddress);
   virtual ~NavMesh();

   DWORD         getId();
   DWORD         getWorldId();
   NavZoneRaw*    getNavZone();
};

NavMesh::NavMesh(HANDLE hProcess, NavMeshRaw* pNavMeshSrc) {
   hGameProcess = hProcess;
   pNavMesh = pNavMeshSrc;
   pNavMesh->pZone = (NavZoneRaw*)readMemory((DWORD)pNavMesh->pZone, sizeof(NavZoneRaw));
   if (pNavMesh->pZone == NULL) {
      throw 0x051;
   }
}

NavMesh::NavMesh(HANDLE hProcess, DWORD dwAddress) {
   hGameProcess = hProcess;
   pNavMesh = (NavMeshRaw*)readMemory(dwAddress, sizeof(NavMeshRaw));
   if (pNavMesh == NULL) {
      throw 0x050;
   }
   pNavMesh->pZone = (NavZoneRaw*)readMemory((DWORD)pNavMesh->pZone, sizeof(NavZoneRaw));
   if (pNavMesh->pZone == NULL) {
      throw 0x051;
   }
}

NavMesh::~NavMesh() {
   if (pNavMesh != NULL) {
      if (pNavMesh->pZone != NULL)
         delete pNavMesh->pZone;
      delete pNavMesh;
   }
}

void* NavMesh::readMemory(DWORD dwStart, DWORD dwLength) {
   void* result = malloc(dwLength);
   if (ReadProcessMemory(hGameProcess, (const void*) dwStart, result, dwLength, NULL) != 0)
      return result;
   return NULL;
}

DWORD NavMesh::getId() {
   return pNavMesh->id_navmesh;
}

DWORD NavMesh::getWorldId() {
   return pNavMesh->id_world;
}

NavZoneRaw* NavMesh::getNavZone() {
   return pNavMesh->pZone;
}

Top
 Profile  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 31 posts ]  Go to page 1, 2, 3  Next

All times are UTC [ DST ]


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
Jump to:  
cron