[classic][Cata][4.4.0.54558] offset dump menu

Shout-Out

User Tag List

Results 1 to 13 of 13
  1. #1
    klumpen's Avatar Active Member
    Reputation
    27
    Join Date
    Apr 2007
    Posts
    77
    Thanks G/R
    31/16
    Trade Feedback
    2 (100%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    [classic][Cata][4.4.0.54558] offset dump

    Enjoy. Updated a few unit_flag fields to match the current release. Still a work in progress.
    Code:
    pub mod wow_classic_4_4_0_54558 {
        use super::*;
    
        pub const CLIENT_VERSION: &str = "4.4.0.54558";
    
        #[repr(C)]
        pub struct Actionbar;
    
    
        impl Actionbar {
            pub const CURRENT_PAGE: usize = 0x38A7324;
            pub const FIRST_SLOT: usize = 0x38A6B20;
        }
    
        #[repr(C)]
        pub struct Screen {
            pub width: u16,
            pub height: u16,
        }
    
    
        impl Screen {
            pub const BASE: usize = 0x32C0AC0;
        }
    
        #[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 Aura {
            _pad_to_0x88: [u8; 0x88],
            pub spell_id: u32,
            _pad_to_0xB0: [u8; 0x24],
            pub size: u32,
        }
    
    
        impl Aura {
        }
    
        #[repr(C)]
        pub struct CombatLog;
    
    
        impl CombatLog {
            pub const EVENT_TYPE: usize = 0x37DEF10;
            pub const EVENTS: usize = 0x32D6CC0;
        }
    
        #[repr(C)]
        pub struct Spellbook;
    
    
        impl Spellbook {
            pub const BASE: usize = 0x389B748;
            pub const COUNT: usize = 0x389B740;
            pub const PET_BASE: usize = 0x389B768;
            pub const PET_COUNT: usize = 0x389B760;
        }
    
        #[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_0xE668: [u8; 0xF0A],
            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,
            pub in_combat_flag: u32,
            pub unit_flag_one: u32,
            pub unit_flag_two: u32,
            pub unit_flag_three: u32,
            _pad_to_0xF010: [u8; 0x18],
            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 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 = 0x389BF48;
        }
    
        #[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_0xED88: [u8; 0x162A],
            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,
            pub in_combat_flag: u32,
            pub unit_flag_one: u32,
            pub unit_flag_two: u32,
            pub unit_flag_three: u32,
            _pad_to_0xF010: [u8; 0x18],
            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 GameObjectName {
            _pad_to_0xE0: [u8; 0xE0],
            pub name: Pointer<String>,
        }
    
    
        impl GameObjectName {
        }
    
        #[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 = 0x34DDC50;
        }
    
        #[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_0xED88: [u8; 0x162A],
            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,
            pub in_combat_flag: u32,
            pub unit_flag_one: u32,
            pub unit_flag_two: u32,
            pub unit_flag_three: u32,
            _pad_to_0xF010: [u8; 0x18],
            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 = 0x32D5450;
        }
    
        #[repr(C)]
        pub struct Map;
    
    
        impl Map {
            pub const MINIMAP_SUBZONE_TEXT: usize = 0x389A588;
            pub const SUBZONE_TEXT: usize = 0x389A580;
            pub const ZONE_TEXT: usize = 0x389A578;
        }
    
        #[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 = 0x375FA30;
            pub const OFFSET: usize = 0x3878;
        }
    
        #[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 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 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 = 0x32C18D8;
        }
    
        #[repr(C)]
        pub struct Quest;
    
    
        impl Quest {
            pub const BASE: usize = 0x38AE530;
            pub const CURRENT: usize = 0x38D17E4;
            pub const NUM: usize = 0x38AE350;
            pub const NUM_CHOICES: usize = 0x38E0DF0;
            pub const REWARD: usize = 0x38E0DF8;
            pub const TITLE: usize = 0x38DC930;
        }
    
        #[repr(C)]
        pub struct Battleground;
    
    
        impl Battleground {
            pub const FINISHED: usize = 0x389EB18;
            pub const INFO: usize = 0x32E5700;
            pub const WINNER: usize = 0x389EB1C;
        }
    
        #[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 {
        }
    
        #[repr(C)]
        pub struct Addon;
    
    
        impl Addon {
            pub const COUNT: usize = 0x38F4E38;
        }
    
        #[repr(C)]
        pub struct Globals;
    
    
        impl Globals {
            pub const BAG_GUID: usize = 0x38F3480;
            pub const CHAR_SELECT: usize = 0x37D3A25;
            pub const CORPSE_POSITION: usize = 0x32DCAE0;
            pub const CVAR_BASE: usize = 0x389BF48;
            pub const DIALOG_WINDOW_OWNER_GUID: usize = 0x354A890;
            pub const FOCUS_GUID: usize = 0x354A878;
            pub const FRAMESCRIPT_REGISTERFUNC: usize = 0x3549EF8;
            pub const GAME_TIME: usize = 0x354A2D0;
            pub const GET_PARTY_INFO_ACTIVE_PARTY: usize = 0x389C948;
            pub const IN_GAME_STATUS: usize = 0x389B330;
            pub const KEY_BINDINGS: usize = 0x32C18D8;
            pub const LAST_ENEMY_GUID: usize = 0x354A858;
            pub const LAST_FRIENDLY_GUID: usize = 0x354A868;
            pub const LAST_TARGET_GUID: usize = 0x354A848;
            pub const LOADING_SCREEN: usize = 0x34CE038;
            pub const LOADING_SCREEN_TAXI_SPLINES: usize = 0x3510F70;
            pub const LOGIN_SCREEN: usize = 0x37D4678;
            pub const LOOT_WINDOW: usize = 0x389CBD4;
            pub const MOUSEOVER_GUID: usize = 0x389B338;
            pub const NUM_CHARACTERS: usize = 0x37D3A48;
            pub const PET_GUID: usize = 0x389CA58;
            pub const PLAYER_GUID: usize = 0x3783E50;
            pub const PLAYER_NAME: usize = 0x32AD318;
            pub const TARGET_GUID: usize = 0x354A838;
            pub const ZONE_ID: usize = 0x389B230;
        }
    
        #[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 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 = 0x383B9E0;
        }
    
        #[repr(C)]
        pub struct Container {
            _pad_to_0x6D8: [u8; 0x6D8],
            pub count: u32,
            pub items: u32,
        }
    
    
        impl Container {
        }
    
        #[repr(C)]
        pub struct MacroManager;
    
    
        impl MacroManager {
            pub const BASE: usize = 0x32E7CC8;
        }
    
        #[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 = 0x38D0360;
        }
    }

    [classic][Cata][4.4.0.54558] offset dump
  2. Thanks imzz (1 members gave Thanks to klumpen for this useful post)
  3. #2
    qop1832's Avatar Active Member

    Reputation
    28
    Join Date
    Dec 2021
    Posts
    59
    Thanks G/R
    18/16
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Why haven’t I received the update yet?

    How do you delete items?
    And read Unit auras? My current situation looks a bit strange... The flags fields are not yet ready.

    HTML Code:
                },
                "Unit": {
                    "aura": {
                        "table": 0x890,  # 8c0    #   85 C9 78 ? 48 89 5C 24 ?
                        "caster": 0x0,
                        "spellid": 0x30,
                        "stack":0x58,
                        "duration": 0x40,
                        "timeLeft": 0x44,
                        "flags": ?, 
                        "size": 0xC0,
                    },
                    "race": 0xEFB4,
                    "summoner": 0xEF40,
                    "owner":0xEDB0,
                    "creator": 0xEF50,
                    "sex": 0xEFB7,
                    "classes": 0xEFB5,
                    "location": (0xF0, 0x20),
                    "rotation": (0xF0, 0x30),
                    "rotationHW": (0xF0, 0x120),
                    "pitch":(0xF0, 0x34),
                    "pitchHW":(0xF0, 0x11C),
                    "name": (0x500, 0x120, 0x0),  # // 48 89 5C 24 ? 48 89 7C 24 ? 41 56 48 83 EC ? 4D 8B F1
                    "creatureType": (0x500, 0x30),
                    "creatureFamily": (0x500, 0x34),
                    "creatureRank": (0x500, 0x38),
                    "level": 0xEFC0,
                    "health": 0xED88,
                    "maxHealth": 0xEEC8,
                    "power": 0xF208,
                    "maxPower": 0xF230,
                    "powerCount": 10,  
                    "combatReach": 0xF004, 
                    "boundingRadius": 0xF000, 
                    "cast_id": 0x6e8,
                    "cast_start": 0x710,
                    "cast_end": 0x714,
                    "channel_id": 0X718,
                    "channel_start": 0x720,
                    "channel_end": 0x724,
                    "movement": (0xF0, 0x108),
                    "dynamicFlags": 0xDC,  
                    "factionTemplate": 0xEFE4,  # 8B 8B ? ? ? ? 48 8B D7 E8 ? ? ? ? EB ?
                    "flags": 0xEFE8,  
                    "mountID": 0xF010,  
                    "speed": 0x1CC,   
                    "anchorGUID": 0x138,  
                    "targetGUID": 0xEF80,
                    "family": 0x34,
                },
                "GameObject": {
                    "creator": 0x210,
                    "name": (0x148, 0xE0, 0x0),
                    "location": 0x108,
                    "flags": 0xA0,
                },
                "Item": {
                    "id": 0x150,
                    "flag": 0x1E0,
                    "owner": 0x178,
                    "container": 0x188,
                    "enchant_id": 0x2e8,
                    "temp_enchant_id": 0x2F4,
                    "temp_enchant_duration": 0x2F8,
                    "stackcount": 0x1B8,
                    "randomSuffix": 0X1C8, 
                    "randomProperties":0X1C8, 
                    "durability": 0x1CC,
                    "maxdurability": 0x1D0,
                },
                "Container": {
                    "item_id": 0xD8,  
                    "count": 0x478,  
                    "items": 0x480,  
                },
                "LocalPlayer": {
                    "money": 0xFF10,  
                    "experience": 0xFF18,  
                    "nextLevelXP": 0xFF1C,  
                    "inventory": {
                        # 搜索 Usage: %s(unit, slot)
                        "base":G.MM.ReadIntByOffset({{"48 8D 88 ?? ?? ?? ?? 8B D3 E8 ?? ?? ?? ?? 48 8B F0 48 85 C0 0F 84 ?? ?? ?? ?? 0F B6 48 ??"}}+0x3)+0x8,  # >  ok  # >  ok   # 48 8D 88 ? ? ? ? 8B D3 E8 ? ? ? ? 48 8B F0 48 85 C0 0F 84 ? ? ? ? 0F B6 48 ?   ---  +0x8
                        "equipment": (0, 19),
                        "bag": (30, 34),
                        "backpack": (35, 51),
                        "bankpack": (59, 87),
                        "bankbag": (87, 94),
                    },
                },
    Last edited by qop1832; 05-08-2024 at 08:14 AM.
    Hello everyone, I'm a newbie~ Recently I'm trying to study how to execute API externally and get the return value of API, as well as the release of aoe spells, come on!

  4. Thanks imzz, maikel233 (2 members gave Thanks to qop1832 for this useful post)
  5. #3
    klumpen's Avatar Active Member
    Reputation
    27
    Join Date
    Apr 2007
    Posts
    77
    Thanks G/R
    31/16
    Trade Feedback
    2 (100%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by qop1832 View Post
    Why haven’t I received the update yet?
    Couldn't tell you, no idea. I download the most recent clients from the Blizzard CDNs. You can see the latest versions at sites such as Home - BlizzTrack.

    Originally Posted by qop1832 View Post
    How do you delete items?
    I've not dealt with deleting items myself. Cheeky answer; go to vendor, sell? :P

    Originally Posted by qop1832 View Post
    And read Unit auras? My current situation looks a bit strange...
    I'm still working on Auras. For now this is what I've got:

    Code:
    #[derive(Debug)]
    pub struct Aura {
        _pad_to_0x88: [u8; 0x88],
        pub spell_id: u32,
        _pad_to_0xB0: [u8; 0x24],
        pub size: u32,
    }
    
    let MAX_AURAS: usize = 60;
    
    for i in (0..MAX_AURAS) {
        if let Ok(aura) = mem.read::<Aura>(unit_addr + 0x8B8 + (i * 0xB0)) {
            if let Some(spell_name) = spell_name_lookup.get(&aura.spell_id) {
                println!("aura:: idx = {i} aura = {aura:?} spell_name = {spell_name}");
            }
        }
    }

  6. #4
    qop1832's Avatar Active Member

    Reputation
    28
    Join Date
    Dec 2021
    Posts
    59
    Thanks G/R
    18/16
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    I actually thought of a plan, first put the item on the cursor. Then use the mouse to click call to simulate the discarding action~ The following is the implementation of mouse click Call

    HTML Code:
        def mouse_call(click_type: int, action_type: int, pos: tuple = None, obj_ptr: int = None) -> None:
            """
            鼠标CALL
            :param click_type:      鼠标动作: 1 右键, 2 左键
            :param action_type:     具体干嘛的不清楚,目前只发现两种   1 or 4
            :param pos:             坐标  (x,y,z)
            :param obj_ptr:         对象指针
            :return:
            """
            mouse_addr = base_address + 0x3615A40  # 48 8b 1d ?? ?? ?? ?? 48 85 db 74 ?? 48 8b cb e8 ?? ?? ?? ?? ba ?? ?? ?? ?? 48 8b cb e8 ?? ?? ?? ?? eb ?? 4c,3
            mouse_call_addr = base_address + 0x18116A0  # 48 89 5C 24 ?? 48 89 7C 24 ?? 55 48 8B EC 48 81 EC ?? ?? ?? ?? 8B FA 48 8B D9 E8
    
            ClickType = 0x2c8  #  8b 8b ?? ?? ?? ?? 85 c9 0f 84 ?? ?? ?? ?? 83 e9 ?? 74 ?? 83 e9, +2
            ClickGUID = ClickType + 0x8
            ClickPOS = ClickType + 0x18
            mouse_ptr = ctypes.c_ulonglong.from_address(mouse_addr).value
            ctypes.c_ulonglong.from_address(mouse_ptr + ClickType).value = click_type  # 鼠标动作: 1 右键, 2 左键     # 左键选中  # 右键交互
            if obj_ptr is not None:
                GUID = ctypes.cast(obj_ptr + 0x18, ctypes.POINTER(CGGuidStruct))  # 读取对象GUID
                ctypes.memmove(mouse_ptr + ClickGUID, GUID, ctypes.sizeof(CGGuidStruct))  # 将对象GUID写入鼠标结构体,GUID字段中
            else:
                ctypes.memmove(mouse_ptr + ClickGUID, ctypes.byref(CGGuidStruct()),
                               ctypes.sizeof(CGGuidStruct))  # 将空的 GUID 结构体写入鼠标结构体
            if pos is not None:
                ctypes.memmove(mouse_ptr + ClickPOS, (ctypes.c_float * 3)(*pos), 12)  # 写入坐标数据
    
            mouse_call_func = ctypes.CFUNCTYPE(ctypes.c_int64, ctypes.c_int64, ctypes.c_uint)(mouse_call_addr)
            mouse_call_func(mouse_ptr, action_type)

    然后

    HTML Code:
    def mouse_call_Test():
            mouse_call(1, 1)
    This call also has many uses... such as ~ object interaction/selection, click to move, AOE skill release, etc.,

    We have replaced the halo with lua.. This is the structure we built before..


    auracount fixed 300
    HTML Code:
                    "aura": {
                        "table": 0x890,  # 8c0    #   85 C9 78 ? 48 89 5C 24 ?
                        "caster": 0x0,  # 施法者Guid
                        "spellid": 0x30,  # 技能ID
                        "stack": 0x3A,  # 层数
                        "duration": 0x40,  # 持续时间
                        "timeLeft": 0x44,  # 结束时间
                        "flags": 0x58,  # 标识
                        "size": 0xC0,
                    },
    Last edited by qop1832; 05-12-2024 at 08:45 AM.
    Hello everyone, I'm a newbie~ Recently I'm trying to study how to execute API externally and get the return value of API, as well as the release of aoe spells, come on!

  7. Thanks imzz, wesdjkl02 (2 members gave Thanks to qop1832 for this useful post)
  8. #5
    imzz's Avatar Active Member
    Reputation
    24
    Join Date
    May 2011
    Posts
    37
    Thanks G/R
    40/17
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    我操 中文看着真亲切!
    回首向来萧瑟处,归去,也无风雨也无晴。

  9. #6
    qop1832's Avatar Active Member

    Reputation
    28
    Join Date
    Dec 2021
    Posts
    59
    Thanks G/R
    18/16
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    怎么说 要不要加个v 深度交流一哈?
    Hello everyone, I'm a newbie~ Recently I'm trying to study how to execute API externally and get the return value of API, as well as the release of aoe spells, come on!

  10. #7
    LiquiDD's Avatar Member
    Reputation
    1
    Join Date
    Nov 2014
    Posts
    4
    Thanks G/R
    4/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Hello, cool guys! can I ask you how you understand the target is in melee range? right now I'm just comparing player and target position and if distance is less than 5, I'm counting its in melee but its not universal, units not same size, any better approach? I'm external, thanks!

  11. #8
    qop1832's Avatar Active Member

    Reputation
    28
    Join Date
    Dec 2021
    Posts
    59
    Thanks G/R
    18/16
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    You should look at the boundingRadius of the Unit object
    Hello everyone, I'm a newbie~ Recently I'm trying to study how to execute API externally and get the return value of API, as well as the release of aoe spells, come on!

  12. Thanks LiquiDD, wesdjkl02 (2 members gave Thanks to qop1832 for this useful post)
  13. #9
    scizzydo's Avatar Contributor
    Reputation
    137
    Join Date
    Oct 2019
    Posts
    99
    Thanks G/R
    5/57
    Trade Feedback
    0 (0%)
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by LiquiDD View Post
    Hello, cool guys! can I ask you how you understand the target is in melee range? right now I'm just comparing player and target position and if distance is less than 5, I'm counting its in melee but its not universal, units not same size, any better approach? I'm external, thanks!
    The distance from the attacker with their combat reach, to the target with their bounding radius. Some other factors can go in with spells for distance checks, but that's the basic

  14. Thanks LiquiDD (1 members gave Thanks to scizzydo for this useful post)
  15. #10
    Hrap's Avatar Member
    Reputation
    12
    Join Date
    Oct 2018
    Posts
    112
    Thanks G/R
    12/4
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Hello guys, please help me,
    How to find out if the target is hostile?


    I tried all the fields of the unit and can't find anything...
    Last edited by Hrap; 3 Weeks Ago at 03:44 PM.

  16. #11
    aeo's Avatar Contributor
    Reputation
    128
    Join Date
    Apr 2007
    Posts
    271
    Thanks G/R
    86/63
    Trade Feedback
    7 (100%)
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)
    its comlicated using factions db and some other stuff. looke at UnitCanAttack lua function, there is a call in there to check based on unit pointers or guids( cant remember)

  17. Thanks wesdjkl02 (1 members gave Thanks to aeo for this useful post)
  18. #12
    wesdjkl02's Avatar Member
    Reputation
    1
    Join Date
    Dec 2023
    Posts
    2
    Thanks G/R
    5/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Thanks.
    This problem has troubled me for a long time.I have no idea with lua function in my C project... I use black list name strings to filter NPCs. This is inefficient.

    Now my biggest problem is how to send mails with Item attachments. I tried a lot but failed.

  19. #13
    xbec's Avatar Member
    Reputation
    3
    Join Date
    Jun 2019
    Posts
    32
    Thanks G/R
    12/2
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by qop1832 View Post
    怎么说 要不要加个v 深度交流一哈?
    难得一见自己人。。。

Similar Threads

  1. [classic][Cata][4.4.0.54501] offset dump
    By klumpen in forum WoW Memory Editing
    Replies: 2
    Last Post: 05-03-2024, 02:13 AM
  2. [classic][Cata][4.4.0.54525] offset dump
    By klumpen in forum WoW Memory Editing
    Replies: 0
    Last Post: 05-03-2024, 02:11 AM
  3. [classic][Cata][4.4.0.54500] offset dump
    By klumpen in forum WoW Memory Editing
    Replies: 0
    Last Post: 05-02-2024, 01:20 AM
  4. [classic][Cata][4.4.0.54481] offset dump
    By klumpen in forum WoW Memory Editing
    Replies: 2
    Last Post: 05-01-2024, 02:11 AM
  5. [Selling] Classic Cata Mop CD Keys
    By raducu in forum World of Warcraft Buy Sell Trade
    Replies: 3
    Last Post: 01-25-2013, 10:11 AM
All times are GMT -5. The time now is 06:59 PM. Powered by vBulletin® Version 4.2.3
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search