How many frantic patches we gon get this week I wonder.Code:pub mod wow_classic_4_4_0_54501 { use super::*; pub const CLIENT_VERSION: &str = "4.4.0.54501"; #[repr(C)] pub struct Actionbar; impl Actionbar { pub const CURRENT_PAGE: usize = 0x378D184; pub const FIRST_SLOT: usize = 0x378C980; } #[repr(C)] pub struct UnitInfo { _pad_to_0x30: [u8; 0x30], pub r#type: u8, _pad_to_0x34: [u8; 0x3], pub family: u8, _pad_to_0x38: [u8; 0x3], pub rank: u8, _pad_to_0xE8: [u8; 0xAF], pub gather_type: u8, _pad_to_0x120: [u8; 0x37], pub name: Pointer<String>, } impl UnitInfo { } #[repr(C)] pub struct Map; impl Map { pub const MINIMAP_SUBZONE_TEXT: usize = 0x3780518; pub const SUBZONE_TEXT: usize = 0x3780510; pub const ZONE_TEXT: usize = 0x3780508; } #[repr(C)] pub struct Battleground; impl Battleground { pub const FINISHED: usize = 0x3784A88; pub const INFO: usize = 0x31CB700; pub const WINNER: usize = 0x3784A8C; } #[repr(C)] pub struct Aura { _pad_to_0x88: [u8; 0x88], pub spell_id: u32, _pad_to_0xB0: [u8; 0x24], pub size: u32, } impl Aura { } #[repr(C)] pub struct Item { pub vmt: Address, _pad_to_0x10: [u8; 0x8], pub r#type: u8, _pad_to_0x18: [u8; 0x7], pub guid: GUID, _pad_to_0x150: [u8; 0x128], pub id: u32, _pad_to_0x178: [u8; 0x24], pub owner: GUID, pub container: GUID, _pad_to_0x1B8: [u8; 0x20], pub stack_count: u32, _pad_to_0x1CC: [u8; 0x10], pub durability_current: u32, pub durability_max: u32, _pad_to_0x1E0: [u8; 0xC], pub flag: u32, _pad_to_0x2F4: [u8; 0x110], pub enchant_id: u32, pub enchant_expiry: u32, } impl Item { } #[repr(C)] pub struct Keybinding { _pad_to_0x18: [u8; 0x18], pub next: Pointer<Keybinding>, _pad_to_0x30: [u8; 0x10], pub key: Pointer<String>, _pad_to_0x40: [u8; 0x8], pub action: Pointer<String>, } impl Keybinding { } #[repr(C)] pub struct MacroManager; impl MacroManager { pub const BASE: usize = 0x31CDCC8; } #[repr(C)] pub struct Screen { pub width: u16, pub height: u16, } impl Screen { pub const BASE: usize = 0x31A6AC0; } #[repr(C)] pub struct Addon; impl Addon { pub const COUNT: usize = 0x37DAC88; } #[repr(C)] pub struct Object { pub vmt: Address, _pad_to_0x10: [u8; 0x8], pub r#type: u8, _pad_to_0x18: [u8; 0x7], pub guid: GUID, } impl Object { } #[repr(C)] pub struct ObjectManager { pub max: u32, _pad_to_0x8: [u8; 0x4], pub arr: Address, pub count: u32, _pad_to_0x60: [u8; 0x4C], pub zone_name: Pointer<String>, pub subzone_name: Pointer<String>, _pad_to_0x140: [u8; 0xD0], pub unk_1: u32, _pad_to_0x160: [u8; 0x1C], pub map_id: u32, _pad_to_0x240: [u8; 0xDC], pub unk_2: u32, } impl ObjectManager { pub const BASE: usize = 0x3721980; } #[repr(C)] pub struct Container { _pad_to_0x6D8: [u8; 0x6D8], pub count: u32, pub items: u32, } impl Container { } #[repr(C)] pub struct GameObject { pub vmt: Address, _pad_to_0x10: [u8; 0x8], pub r#type: u8, _pad_to_0x18: [u8; 0x7], pub guid: GUID, _pad_to_0xA0: [u8; 0x78], pub flags: u32, _pad_to_0x108: [u8; 0x64], pub position: Position, _pad_to_0x148: [u8; 0x34], pub name: Pointer<GameObjectName>, _pad_to_0x210: [u8; 0xC0], pub owner: GUID, } impl GameObject { } #[repr(C)] pub struct PlayerNameCache { _pad_to_0x8: [u8; 0x8], pub len: u32, _pad_to_0x10: [u8; 0x4], pub arr: Address, } impl PlayerNameCache { pub const BASE: usize = 0x33C3C00; } #[repr(C)] pub struct ActivePlayer { pub vmt: Address, _pad_to_0x10: [u8; 0x8], pub r#type: u8, _pad_to_0x18: [u8; 0x7], pub guid: GUID, _pad_to_0xDC: [u8; 0xB4], pub dynamic_flag: u32, _pad_to_0x148: [u8; 0x68], pub position: Position, _pad_to_0x158: [u8; 0x4], pub rotation: f32, pub pitch: f32, _pad_to_0x500: [u8; 0x3A0], pub unit_info_ptr: Pointer<UnitInfo>, pub display_id: u32, _pad_to_0x6E8: [u8; 0x1DC], pub cast_id: u32, _pad_to_0x710: [u8; 0x24], pub cast_start: u32, pub cast_end: u32, pub chan_id: u32, _pad_to_0x720: [u8; 0x4], pub chan_start: u32, pub chan_end: u32, _pad_to_0x8C0: [u8; 0x198], pub aura_table_1: Address, pub aura_table_2: Address, _pad_to_0xD75D: [u8; 0xCE8D], pub class: u8, _pad_to_0xD790: [u8; 0x32], pub in_combat_flag: u32, pub unit_flag_one: u32, _pad_to_0xE668: [u8; 0xED0], pub xp: u32, _pad_to_0xED88: [u8; 0x71C], pub health_current: u32, _pad_to_0xEEC0: [u8; 0x134], pub health_max: u32, _pad_to_0xEF80: [u8; 0xBC], pub target: GUID, _pad_to_0xEFB4: [u8; 0x24], pub race: u8, _pad_to_0xEFB7: [u8; 0x2], pub gender: u8, pub power_type: u8, _pad_to_0xEFC0: [u8; 0x7], pub level: u8, _pad_to_0xEFE4: [u8; 0x23], pub faction: u32, _pad_to_0xF010: [u8; 0x28], pub mount_id: u32, _pad_to_0xF208: [u8; 0x1F4], pub power_current: u32, _pad_to_0xF230: [u8; 0x24], pub power_max: u32, _pad_to_0xFF10: [u8; 0xCDC], pub money: u32, _pad_to_0xFF24: [u8; 0x10], pub next_level_xp: u32, _pad_to_0x14000: [u8; 0x40D8], pub inventory_count: u32, } impl ActivePlayer { } #[repr(C)] pub struct Camera { _pad_to_0x10: [u8; 0x10], pub position: Position, pub matrix: [f32; 0x9], pub field_of_view: f32, } impl Camera { pub const BASE: usize = 0x36459E0; pub const OFFSET: usize = 0x3878; } #[repr(C)] pub struct ObjectManagerEntry { pub next: Pointer<ObjectManagerEntry>, pub guid: GUID, pub address: Pointer<Object>, } impl ObjectManagerEntry { } #[repr(C)] pub struct Player { pub vmt: Address, _pad_to_0x10: [u8; 0x8], pub r#type: u8, _pad_to_0x18: [u8; 0x7], pub guid: GUID, _pad_to_0xDC: [u8; 0xB4], pub dynamic_flag: u32, _pad_to_0x148: [u8; 0x68], pub position: Position, _pad_to_0x158: [u8; 0x4], pub rotation: f32, pub pitch: f32, _pad_to_0x500: [u8; 0x3A0], pub unit_info_ptr: Pointer<UnitInfo>, pub display_id: u32, _pad_to_0x6E8: [u8; 0x1DC], pub cast_id: u32, _pad_to_0x710: [u8; 0x24], pub cast_start: u32, pub cast_end: u32, pub chan_id: u32, _pad_to_0x720: [u8; 0x4], pub chan_start: u32, pub chan_end: u32, _pad_to_0x8C0: [u8; 0x198], pub aura_table_1: Address, pub aura_table_2: Address, _pad_to_0xD75D: [u8; 0xCE8D], pub class: u8, _pad_to_0xD790: [u8; 0x32], pub in_combat_flag: u32, pub unit_flag_one: u32, _pad_to_0xED88: [u8; 0x15F0], pub health_current: u32, _pad_to_0xEEC0: [u8; 0x134], pub health_max: u32, _pad_to_0xEF80: [u8; 0xBC], pub target: GUID, _pad_to_0xEFB4: [u8; 0x24], pub race: u8, _pad_to_0xEFB7: [u8; 0x2], pub gender: u8, pub power_type: u8, _pad_to_0xEFC0: [u8; 0x7], pub level: u8, _pad_to_0xEFE4: [u8; 0x23], pub faction: u32, _pad_to_0xF010: [u8; 0x28], pub mount_id: u32, _pad_to_0xF208: [u8; 0x1F4], pub power_current: u32, _pad_to_0xF230: [u8; 0x24], pub power_max: u32, _pad_to_0x14000: [u8; 0x4DCC], pub inventory_count: u32, } impl Player { } #[repr(C)] pub struct Inventory { pub equipment_first: u32, _pad_to_0x110: [u8; 0x10C], pub equipment_last: u32, _pad_to_0x1E0: [u8; 0xCC], pub bag_slot1: u32, _pad_to_0x1F0: [u8; 0xC], pub bag_slot2: u32, _pad_to_0x200: [u8; 0xC], pub bag_slot3: u32, _pad_to_0x210: [u8; 0xC], pub bag_slot4: u32, _pad_to_0x230: [u8; 0x1C], pub backpack_first: u32, _pad_to_0x320: [u8; 0xEC], pub backpack_last: u32, _pad_to_0x3B0: [u8; 0x8C], pub bank_slot_first: u32, _pad_to_0x560: [u8; 0x1AC], pub bank_slot_last: u32, _pad_to_0x570: [u8; 0xC], pub bank_bag1: u32, _pad_to_0x580: [u8; 0xC], pub bank_bag2: u32, _pad_to_0x590: [u8; 0xC], pub bank_bag3: u32, _pad_to_0x5A0: [u8; 0xC], pub bank_bag4: u32, _pad_to_0x5B0: [u8; 0xC], pub bank_bag5: u32, _pad_to_0x5C0: [u8; 0xC], pub bank_bag6: u32, _pad_to_0x5D0: [u8; 0xC], pub bank_bag7: u32, } impl Inventory { } #[repr(C)] pub struct Keybindings { _pad_to_0x18: [u8; 0x18], pub next: Address, _pad_to_0x30: [u8; 0x10], pub key: Address, _pad_to_0x40: [u8; 0x8], pub action: Address, } impl Keybindings { pub const BASE: usize = 0x31A78D8; } #[repr(C)] pub struct Quest; impl Quest { pub const BASE: usize = 0x3794390; pub const CURRENT: usize = 0x37B7634; pub const NUM: usize = 0x37941B0; pub const NUM_CHOICES: usize = 0x37C6C40; pub const REWARD: usize = 0x37C6C48; pub const TITLE: usize = 0x37C2780; } #[repr(C)] pub struct Cvar { _pad_to_0x8: [u8; 0x8], pub value: Pointer<String>, _pad_to_0x40: [u8; 0x30], pub desc: Pointer<String>, _pad_to_0x50: [u8; 0x8], pub key: Pointer<String>, } impl Cvar { pub const BASE: usize = 0x3781EE8; } #[repr(C)] pub struct Runes { pub start_time: u32, _pad_to_0x20: [u8; 0x1C], pub end_time: u32, _pad_to_0x48: [u8; 0x24], pub default_type: u32, _pad_to_0x60: [u8; 0x14], pub rune_type: u32, } impl Runes { pub const BASE: usize = 0x37B61B0; } #[repr(C)] pub struct GameObjectName { _pad_to_0xE0: [u8; 0xE0], pub name: Pointer<String>, } impl GameObjectName { } #[repr(C)] pub struct Spellbook; impl Spellbook { pub const BASE: usize = 0x37816E8; pub const COUNT: usize = 0x37816E0; pub const PET_BASE: usize = 0x3781708; pub const PET_COUNT: usize = 0x3781700; } #[repr(C)] pub struct Globals; impl Globals { pub const BAG_GUID: usize = 0x37D92D0; pub const CHAR_SELECT: usize = 0x36B99BD; pub const CORPSE_POSITION: usize = 0x31C2AE0; pub const CVAR_BASE: usize = 0x3781EE8; pub const DIALOG_WINDOW_OWNER_GUID: usize = 0x3430840; pub const FOCUS_GUID: usize = 0x3430828; pub const FRAMESCRIPT_REGISTERFUNC: usize = 0x342FEA8; pub const GAME_TIME: usize = 0x3430280; pub const GET_PARTY_INFO_ACTIVE_PARTY: usize = 0x37828E8; pub const IN_GAME_STATUS: usize = 0x37812C0; pub const KEY_BINDINGS: usize = 0x31A78D8; pub const LAST_ENEMY_GUID: usize = 0x3430808; pub const LAST_FRIENDLY_GUID: usize = 0x3430818; pub const LAST_TARGET_GUID: usize = 0x34307F8; pub const LOADING_SCREEN: usize = 0x33B3FE8; pub const LOADING_SCREEN_TAXI_SPLINES: usize = 0x33F6F20; pub const LOGIN_SCREEN: usize = 0x36BA618; pub const LOOT_WINDOW: usize = 0x3782B74; pub const MOUSEOVER_GUID: usize = 0x37812C8; pub const NUM_CHARACTERS: usize = 0x36B99E0; pub const PET_GUID: usize = 0x37829F8; pub const PLAYER_GUID: usize = 0x3669DF0; pub const PLAYER_NAME: usize = 0x3193318; pub const TARGET_GUID: usize = 0x34307E8; pub const ZONE_ID: usize = 0x37811C0; } #[repr(C)] pub struct CombatLog; impl CombatLog { pub const EVENT_TYPE: usize = 0x36C4EB0; pub const EVENTS: usize = 0x31BCCC0; } #[repr(C)] pub struct Unit { pub vmt: Address, _pad_to_0x10: [u8; 0x8], pub r#type: u8, _pad_to_0x18: [u8; 0x7], pub guid: GUID, _pad_to_0xDC: [u8; 0xB4], pub dynamic_flag: u32, _pad_to_0x148: [u8; 0x68], pub position: Position, _pad_to_0x158: [u8; 0x4], pub rotation: f32, pub pitch: f32, _pad_to_0x500: [u8; 0x3A0], pub unit_info_ptr: Pointer<UnitInfo>, pub display_id: u32, _pad_to_0x6E8: [u8; 0x1DC], pub cast_id: u32, _pad_to_0x710: [u8; 0x24], pub cast_start: u32, pub cast_end: u32, pub chan_id: u32, _pad_to_0x720: [u8; 0x4], pub chan_start: u32, pub chan_end: u32, _pad_to_0x8C0: [u8; 0x198], pub aura_table_1: Address, pub aura_table_2: Address, _pad_to_0xD75D: [u8; 0xCE8D], pub class: u8, _pad_to_0xD790: [u8; 0x32], pub in_combat_flag: u32, pub unit_flag_one: u32, _pad_to_0xED88: [u8; 0x15F0], pub health_current: u32, _pad_to_0xEEC0: [u8; 0x134], pub health_max: u32, _pad_to_0xEF80: [u8; 0xBC], pub target: GUID, _pad_to_0xEFB4: [u8; 0x24], pub race: u8, _pad_to_0xEFB7: [u8; 0x2], pub gender: u8, pub power_type: u8, _pad_to_0xEFC0: [u8; 0x7], pub level: u8, _pad_to_0xEFE4: [u8; 0x23], pub faction: u32, _pad_to_0xF010: [u8; 0x28], pub mount_id: u32, _pad_to_0xF208: [u8; 0x1F4], pub power_current: u32, _pad_to_0xF230: [u8; 0x24], pub power_max: u32, } impl Unit { } #[repr(C)] pub struct Cooldown { pub last_cooldown: Address, pub next_cooldown: Address, pub spell_id: u32, pub item_id: u32, pub tick_time: u32, pub recovery_start: u32, pub recovery_time: u32, pub category_id: u32, pub category_start: u32, pub category_time: u32, _pad_to_0x38: [u8; 0x8], pub global_id: u32, pub global_time: u32, pub global_start: u32, } impl Cooldown { pub const BASE: usize = 0x31BB450; } #[repr(C)] pub struct UnitStats { _pad_to_0xDA40: [u8; 0xDA40], pub mainhand_speed: u32, pub offhand_speed: u32, pub strength: u32, pub agility: u32, pub stamina: u32, pub intellect: u32, pub spirit: u32, _pad_to_0xDA84: [u8; 0x28], pub armor: u32, _pad_to_0xDA8C: [u8; 0x4], pub fire_resistance: u32, pub nature_resistance: u32, pub frost_resistance: u32, pub shadow_resistance: u32, pub arcane_resistance: u32, _pad_to_0xF484: [u8; 0x19E4], pub expertise: f32, pub block_chance: f32, _pad_to_0xF494: [u8; 0x8], pub parry_chance: f32, _pad_to_0xF49C: [u8; 0x4], pub melee_crit_chance: f32, pub ranged_crit_chance: f32, pub spell_crit_chance: f32, pub unk_2: f32, _pad_to_0x10B1C: [u8; 0x1670], pub defense_rating: u32, _pad_to_0x10B24: [u8; 0x4], pub unk_1: f32, _pad_to_0x10B2C: [u8; 0x4], pub melee_hit_rating: u32, pub ranged_hit_rating: u32, pub spell_hit_rating: u32, pub melee_crit_rating: u32, pub ranged_crit_rating: u32, pub spell_crit_rating: u32, _pad_to_0x10B50: [u8; 0xC], pub resilience_defense_rating: u32, pub resilience_offense_rating: u32, _pad_to_0x10B5C: [u8; 0x4], pub melee_haste_rating: u32, pub ranged_haste_rating: u32, pub spell_haste_rating: u32, } impl UnitStats { } }