3.13 Some Useful Static Offsets menu

User Tag List

Results 1 to 7 of 7
  1. #1
    wlastas's Avatar Active Member
    Reputation
    21
    Join Date
    Apr 2010
    Posts
    124
    Thanks G/R
    19/13
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    3.13 Static Offsets for: Terrain, Elements=>Login_panel, Hero_pick, Esc_dialog

    Hey.
    I plan to post several offsets that I found in this thread - perhaps, while the PoeHelper is released, they will help someone

    TerrainData [updated for 3.13.0c]
    sorry for the late update - i was sleeping
    Code:
     
     public long address {get{
                   var one = ui.M.Read<long>(ui.M.AddressOfProcess + 0x02516E28); // =>0x02516E18
                var two = ui.M.Read<long>(one + 0x30);
                return two + 0x660 - 0x18;
                }
            }
    public TerrainData data => ui.M.Read<TerrainData>(address);
    the old TerrainData structure works fine with this offset
    Code:
    [StructLayout(LayoutKind.Explicit, Pack = 1)]
        public struct TerrainData {
            [FieldOffset(0x18)] public long NumCols;
            [FieldOffset(0x20)] public long NumRows;
            [FieldOffset(0xd8)] public NativePtrArray LayerMelee;
            [FieldOffset(0xf0)] public NativePtrArray LayerRanged;
            [FieldOffset(0x108)] public int BytesPerRow;
        }
    Attached Thumbnails Attached Thumbnails 3.13 Some Useful Static Offsets-3-13-map-jpg  
    Last edited by wlastas; 01-21-2021 at 01:31 AM.

    These ads disappear when you log in.

  2. Thanks poemain02, Genocyber (2 members gave Thanks to wlastas for this useful post)
  3. #2
    wlastas's Avatar Active Member
    Reputation
    21
    Join Date
    Apr 2010
    Posts
    124
    Thanks G/R
    19/13
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Code:
    [StructLayout(LayoutKind.Explicit, Pack = 1)]
        public struct IngameUElementsOffsets {
     [FieldOffset(0x848)] public long ModalDialog;

    ModalDialog.jpg
    Last edited by wlastas; 3 Days Ago at 06:07 AM.

  4. #3
    wlastas's Avatar Active Member
    Reputation
    21
    Join Date
    Apr 2010
    Posts
    124
    Thanks G/R
    19/13
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Code:
    public class LoginPanel :Element {
            public Element log_in_btn { get {
                    Element btn =  GetElementByString("log in");
                    return btn?.Parent;
                    } }
            public override string ToString() {
                return "login btn=" + log_in_btn.GetText() + " over=" + log_in_btn.on_mouse_over();
            }
        }
        public class HeroFrame :Element {
            public Element play_btn {
                get {
                    Element btn = GetChildFromIndices(0,0,1,3)?.GetElementByString("play");
                    return btn?.Parent;
                }
            }
            public HeroElement selected { get {
                   var heroes_list = GetChildFromIndices(0,0,1, 1,1);
                    if(heroes_list == null)
                        return null;
                    else {
                        foreach(var e in heroes_list.Children) {
                            var ha = e.Address.ToString("X"); // for debug in CE
                            if(e.IsVisibleLocal && M.Read<byte>(e.Address + 0x114) == 0xff) {
                                var he = GetObject<HeroElement>(e.Address);
                                return he;
                            }
                        }
                        return null;
                    }
                } }
            public override string ToString() {
                if(selected != null) {
                    return("hero=[" + selected.ToString() + " over=" + play_btn.on_mouse_over() + "]");
                }
                else
                    return ("hero=[not selected]");
            }
        }
        public class HeroElement :Element {
            public string hero_name => GetChildFromIndices(0, 2)?.Text;
            public string league => GetChildFromIndices(0, 5)?.Text;
            public string lvl => GetChildFromIndices(0, 4)?.Text;
            public override string ToString() {
                return "name=" + hero_name + " lvl=" + lvl + " league=" + league;
            }
        }
    Attached Thumbnails Attached Thumbnails 3.13 Some Useful Static Offsets-3-13-hero-jpg   3.13 Some Useful Static Offsets-3-13-login-jpg  
    Last edited by wlastas; 5 Days Ago at 04:03 AM. Reason: last version 15.04.2021

  5. #4
    weiwenhuaming's Avatar Member
    Reputation
    1
    Join Date
    Mar 2020
    Posts
    8
    Thanks G/R
    2/0
    Trade Feedback
    3 (100%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Can you make a PreloadAlert for Tencent?

  6. #5
    wlastas's Avatar Active Member
    Reputation
    21
    Join Date
    Apr 2010
    Posts
    124
    Thanks G/R
    19/13
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by weiwenhuaming View Post
    Can you make a PreloadAlert for Tencent?
    I don't know anything about both

  7. #6
    wlastas's Avatar Active Member
    Reputation
    21
    Join Date
    Apr 2010
    Posts
    124
    Thanks G/R
    19/13
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Static offsets based on the "GameStateOffset" for 3.13
    Code:
     public LoginPanel Login_panel {
                get {
                    var l0 = M.Read<long>(M.AddressOfProcess + M.BaseOffsets[Shared.Enums.OffsetsName.GameStateOffset]);
                    var l1 = M.Read<long>(l0 + 0x20);
                    var l2 = M.Read<long>(l1 + 0x10);               
                    var res = GetObject<LoginPanel>(M.Read<long>(l2 + 0x108));
                    return res.IsValid ? res : null;
                }
            }
    
            public HeroFrame hero_frame {
                get {
                    var l0 = M.Read<long>(M.AddressOfProcess + M.BaseOffsets[Shared.Enums.OffsetsName.GameStateOffset]);
                    var l1 = M.Read<long>(l0 + 0x20);
                    var l2 = M.Read<long>(l1 + 0x10);
                    var l3 = M.Read<long>(l2 + 0x58);
                    var res = GetObject<HeroFrame>(M.Read<long>(l3 + 0x2a8)); //1C0CD8E6CF0
                    return res.IsValid?res:null; 
                }
            }
    
            public EscModalDialog esc_dialog { get {
                    var l0 = M.Read<long>(M.AddressOfProcess + M.BaseOffsets[Shared.Enums.OffsetsName.GameStateOffset]);
                    var l1 = M.Read<long>(l0 + 0x20);
                    var l2 = M.Read<long>(l1 + 0x10);
                    var l3 = M.Read<long>(l2 + 0x58);
                    var l4 = M.Read<long>(l3 + 0x198);
                    var res = GetObject<EscModalDialog>(M.Read<long>(l4 + 0x90));
                    return res.IsValid ? res : null;
                } }

  8. #7
    wlastas's Avatar Active Member
    Reputation
    21
    Join Date
    Apr 2010
    Posts
    124
    Thanks G/R
    19/13
    Trade Feedback
    0 (0%)
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Method for debugging same UI elements
    ui.tasker.ui_root - yours element for debug
    Code:
    static bool was_copy = false;
    
    static void Draw() { //< yours Draw ui method
                was_copy = false;
    ...
    
      #region UI root debug
                frames.Clear();
                if(ui.tasker.ui_root != null && ui.tasker.ui_root.IsValid) {
                    ImGui.Begin(
                        "DEbug Login screen",
                        ImGuiWindowFlags.HorizontalScrollbar
                        | ImGuiWindowFlags.AlwaysVerticalScrollbar
                        );
    
                    ImGui.Checkbox("Always on top", ref always_on_top);
                    ImGui.SameLine();
                    ImGui.Checkbox("draw children", ref draw_children);
                    ImGui.SameLine();
                    ImGui.Checkbox("olways_highlight", ref olways_highlight);
    
                    if(ImGui.TreeNode("UI root=" + ui.tasker.ui_root?.Address.ToString("X"))) {
                        //ImGui.Indent();
                        AddToTree(ui.tasker.ui_root);
                        //ImGui.TreePop();
                    }
                    if(olways_highlight)
                        AddToTree(ui.tasker.ui_root, true);
    
                    ImGui.End();
                } 
             #endregio]
    ...
    } //end of draw
    #region  DEbug Root UI
            public enum MouseButton {
                Left,
                Right,
                Middle,
                Extra1,
                Extra2,
            }
            static Dictionary<long, string> knows_adress = new Dictionary<long, string>();
            static Dictionary<int, SharpDX.RectangleF> frames = new Dictionary<int, SharpDX.RectangleF>();
            static bool always_on_top;
            static bool draw_children = true;
            static bool olways_highlight = false;
            public static SharpDX.RectangleF stash_item;
            static void AddToTree(Element root, bool draw = false) {
                if(root.ChildCount == 0)
                    return;
                if(ImGui.IsItemHovered() || draw) {
                    AddFrames(root);
                    if(ImGui.IsMouseDown((int)MouseButton.Right)) {
                        ImGui.SetClipboardText(root.Address.ToString("X"));
                    }
                }
                for(int i = 0; i < root.Children.Count; i++) {
                    var el = root.Children[i];
                    var text = "";
                    if(el == null || el?.Children == null || el?.Children?.Count == 0) {
                        text = el?.Text;
                        if(text?.Length > 32)
                            text = text.Substring(0, 32) + "...";
                    }
                    else {
                        text = $" [{ el.ChildCount}]";
                    }
                    var adress = $"{ el.Address:X}";
                    if(knows_adress.ContainsKey(el.Address))
                        adress = knows_adress[el.Address];
    
                    if(ImGui.TreeNode($"{adress} { text}")) {
                        AddToTree(el);
                        ImGui.TreePop();
                    }
    
                    if(ImGui.IsItemHovered()) {
                        AddFrames(el);
                        if(!was_copy && ImGui.IsMouseClicked((int)MouseButton.Right) ) {
                            var str = "";
                            if(el.Text != null && el.Text.Length > 0)
                                str = " " + el.Text;
                            var res = el.Address.ToString("X") + str;
                            ImGui.SetClipboardText(res);
                            was_copy = true;
                            ui.AddToLog("Cliked on ui.elem=" + res);
                        }
                       
                    }
                }
            }
           
            public static void AddFrames(Element root) {
                var hc = root.GetHashCode();
                if(!frames.ContainsKey(hc))
                    frames.Add(hc, root.GetClientRectCache);
                if(draw_children) {
                    foreach(var ch in root.Children) {
                        if(frames.Count < 300)
                            AddFrames(ch);
                    }
                }
            }
    #endregion
    Last edited by wlastas; 5 Days Ago at 03:59 AM.

Similar Threads

  1. Some Useful ASM info
    By Hausmaster in forum WoW Memory Editing
    Replies: 1
    Last Post: 03-23-2008, 06:32 PM
  2. Some useful WOW warrior tips
    By warhoo in forum World of Warcraft General
    Replies: 2
    Last Post: 11-26-2007, 03:36 PM
  3. Some useful stuff.. for wow that is!
    By Nolixz in forum World of Warcraft Guides
    Replies: 11
    Last Post: 01-15-2007, 07:05 PM
  4. Some Useful AutoIT Scripts
    By barnyonfire1 in forum World of Warcraft Bots and Programs
    Replies: 21
    Last Post: 11-22-2006, 01:25 AM
All times are GMT -5. The time now is 05:14 AM. Powered by vBulletin® Version 4.2.3
Copyright © 2021 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2021 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search