Page 48 of 48 FirstFirst ... 384445464748
Results 706 to 718 of 718
  1. #706
    Contributor CoreCoins User enigma32's Avatar
    Reputation
    110
    Join Date
    Jan 2013
    Posts
    339
    Thanks G/R
    0/28
    CoreCoins
    961
    Trade Feedback
    0 (0%)
    Quote Originally Posted by d07RiV View Post
    Has anyone figured out where the SNO file structures are defined? I know you can read them from game memory and have the code for that, but the current PTR is invite only and I haven't got the version I grabbed from CDN to run yet.

    Since the game will boot to the menu even if you are offline, the stucture definitions clearly have to be stored somewhere in the data files.

    e: okay got PTR to run, but its still a lot harder than being able to parse stuff from static files.
    They are defined in the PE. During startup, it executes a list of constructors which builds up the definition for each field, data structure, network message and SNO. If you want to extract it from the PE only, then you can do that.
    Finding the memory location of a SNO definition is easy, just search for the name.
    Finding the structure definition for that SNO is also easy, just find MOV instructions using any of the offsets.
    Finding each field definition in that structure definition is where it gets messy. This is where I turned to memory reading instead, to access the end result of all those constructors.
    Good luck!

  2. The Following 1 Members Gave Thanks To enigma32 For This Useful Post:

    TehMuffinMan
  3. #707
    Member TehMuffinMan's Avatar
    Reputation
    1
    Join Date
    Sep 2012
    Posts
    3
    Thanks G/R
    1/0
    CoreCoins
    0
    Trade Feedback
    0 (0%)
    I am really trying to grasp all of this memory reading stuff but it feels a bit above my head lol, I don't want to come off as needy.

    I am trying to read legendary item data from Items_Legendary.gam, where do I even go from here?

    var path = @"D:\Data\Items_Legendary.gam";
    SNOFile<GameBalance> file = SNOHelper.LoadFile<GameBalance>(path);

  4. #708
    Contributor CoreCoins User enigma32's Avatar
    Reputation
    110
    Join Date
    Jan 2013
    Posts
    339
    Thanks G/R
    0/28
    CoreCoins
    961
    Trade Feedback
    0 (0%)
    Quote Originally Posted by TehMuffinMan View Post
    I am really trying to grasp all of this memory reading stuff but it feels a bit above my head lol, I don't want to come off as needy.

    I am trying to read legendary item data from Items_Legendary.gam, where do I even go from here?
    I'd say explore the object through the debugger and see what's in there and if you can find whatever it is that you are looking for.

  5. #709
    Member TehMuffinMan's Avatar
    Reputation
    1
    Join Date
    Sep 2012
    Posts
    3
    Thanks G/R
    1/0
    CoreCoins
    0
    Trade Feedback
    0 (0%)
    Quote Originally Posted by enigma32 View Post
    I'd say explore the object through the debugger and see what's in there and if you can find whatever it is that you are looking for.
    Thanks for the reply!

    I've managed to find the list of items.

    Code:
    file.Content.x028_Items.x08_Items
    Been digging through it all, tons of item data so I am on the right track!

    How do you connect things like "real" item name and stats and stuff?

  6. #710
    Contributor CoreCoins User enigma32's Avatar
    Reputation
    110
    Join Date
    Jan 2013
    Posts
    339
    Thanks G/R
    0/28
    CoreCoins
    961
    Trade Feedback
    0 (0%)
    Quote Originally Posted by TehMuffinMan View Post
    Thanks for the reply!

    I've managed to find the list of items.

    Code:
    file.Content.x028_Items.x08_Items
    Been digging through it all, tons of item data so I am on the right track!

    How do you connect things like "real" item name and stats and stuff?
    The "real" names should be in a StringList file. You can probably use [C#] Enigma.D3 to find it in memory.
    Stats I think are defined as GameBalance AffixTable, but how to interpret that data I do not know.

  7. #711
    Member TehMuffinMan's Avatar
    Reputation
    1
    Join Date
    Sep 2012
    Posts
    3
    Thanks G/R
    1/0
    CoreCoins
    0
    Trade Feedback
    0 (0%)
    I think I have the +elemental damage bonus on weapons figured out, but I can't seem to find the location of the base weapon damage range.

    Anyone have any clue?

    Attached Thumbnails Attached Thumbnails [C#] Enigma.D3-0n8dfzz-gif  

  8. #712
    Member d2k2's Avatar
    Reputation
    2
    Join Date
    Jul 2015
    Posts
    25
    Thanks G/R
    4/1
    CoreCoins
    27
    Trade Feedback
    0 (0%)
    Is there a way to read battletag?

  9. #713
    Contributor CoreCoins User Dolphe's Avatar
    Reputation
    93
    Join Date
    Oct 2012
    Posts
    605
    Thanks G/R
    0/22
    CoreCoins
    1743
    Trade Feedback
    0 (0%)
    Quote Originally Posted by d2k2 View Post
    Is there a way to read battletag?
    Code:
    public class BattleNet : MemoryObject
        {
            /* Size is larger then 8 bytes, Contains a lot of Pointers */
            public const int SizeOf = 0x08;
    
            public BattleNetClient Client => ReadPointer<BattleNetClient>(OffsetConversion.BattleNetClient).Dereference();
    
            public class BattleNetClient : MemoryObject
            {
                /* Size is larger then 8 bytes, Contains a lot of Pointers */
                public const int SizeOf = 0x08;
    
                public HeroData Heroes => ReadPointer<HeroData>(OffsetConversion.SelectedHeroes).Dereference();
            }
    
            public class HeroData : MemoryObject
            {
                public const int SizeOf = 0xD4;
    
                public HeroDataContainer Data => Read<HeroDataContainer>(OffsetConversion.HeroesData);
    
                public class HeroDataContainer : MemoryObject
                {
                    public EntityId AccountId => Read<EntityId>(0x00);
                    public RefString BattleTag => Read<RefString>(0x08);
                    public EntityId HeroId => Read<EntityId>(0x14);
                    public RefString HeroName => Read<RefString>(0x1C);
                    public HeroClass HeroClass => Read<HeroClass>(0x30);
                    public int HeroLevel => Read<int>(0x38);
                    public int HeroParagon => Read<int>(0x3C);
                    public Season IsSeasonal => (Read<int>(0x54) != OffsetConversion.ActiveSeason) ? Season.NonSeason : Season.Season;
                    public Arena HeroArena => (Arena)((Read<int>(0x80)) & 1);
                    public Gender HeroGender => (Gender)((Read<int>(0x80) >> 1) & 1);
                    public WorldType WorldType => Read<WorldType>(0x50);
                    public int xAC_QuestSnoId => Read<int>(0x90);
                    public int xB0_QuestStep => Read<int>(0x94);
    
                    public PlayTime HeroPlaytime => Read<PlayTime>(0x98); // In seconds
                    public Timestamp HeroCreated => Read<Timestamp>(0x09C);
                    public Timestamp HeroLastPlayed => Read<Timestamp>(0xA4);
                }
            }
    
            public struct PlayTime
            {
                public int TotalPlaytime;
    
                public override string ToString()
                {
                    TimeSpan t = TimeSpan.FromSeconds(TotalPlaytime);
    
                    return string.Format("{0:D2}d:{1:D2}h:{2:D2}m:{3:D2}s",
                        t.Days,
                        t.Hours,
                        t.Minutes,
                        t.Seconds
                   );
                }
            }
    
            public struct Timestamp
            {
                public long MicrosecondsSinceEpoch;
    
                public override string ToString()
                {
                    return new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddMilliseconds(MicrosecondsSinceEpoch / 1000).ToString();
                }
            }
        }
    Code:
         public const int ScreenManager = 0x1FEB0F8; 
            public const int ActiveSeason = 10;
            public const int BattleNetClient = 0x10;
            public const int SelectedHeroes = 0x0AC;
    
            public const int HeroesData = 0xA4;

  10. #714
    Active Member CoreCoins User SeaDragon's Avatar
    Reputation
    44
    Join Date
    Aug 2016
    Posts
    265
    Thanks G/R
    9/33
    CoreCoins
    504
    Trade Feedback
    0 (0%)
    What is the offset to read Death mode?

  11. #715
    Contributor CoreCoins User Dolphe's Avatar
    Reputation
    93
    Join Date
    Oct 2012
    Posts
    605
    Thanks G/R
    0/22
    CoreCoins
    1743
    Trade Feedback
    0 (0%)
    Quote Originally Posted by SeaDragon View Post
    What is the offset to read Death mode?
    Death mode? You mean if a HC char has died?

    Code:
    0x80 & 8 != 0
    Just noticed Enigma had it in the repo :P
    Enigma.D3/Hero.cs at master * Enigma32/Enigma.D3 * GitHub

  12. #716
    Active Member CoreCoins User SeaDragon's Avatar
    Reputation
    44
    Join Date
    Aug 2016
    Posts
    265
    Thanks G/R
    9/33
    CoreCoins
    504
    Trade Feedback
    0 (0%)
    Thank you very much.
    It works

  13. #717
    Active Member CoreCoins User SeaDragon's Avatar
    Reputation
    44
    Join Date
    Aug 2016
    Posts
    265
    Thanks G/R
    9/33
    CoreCoins
    504
    Trade Feedback
    0 (0%)
    What's the PvpRank?
    Seems to need 4 players RiftRank or RiftLevel

  14. #718
    Active Member CoreCoins User CrEEzz's Avatar
    Reputation
    42
    Join Date
    Jan 2014
    Posts
    118
    Thanks G/R
    8/21
    CoreCoins
    667
    Trade Feedback
    0 (0%)
    Quote Originally Posted by TehMuffinMan View Post
    I think I have the +elemental damage bonus on weapons figured out, but I can't seem to find the location of the base weapon damage range.

    Anyone have any clue?

    Here is how I used to read stats:

    Code:
    // assuming sockets in chest and pants are filled with top gems adding primary stat!
    stats[(int)ItemStat.Int] = Math.Max(0, Attributes.IntelligenceItem.GetValue(acd) - (sockets_filled >= 2 ? sockets_filled * 280 : 0));
    stats[(int)ItemStat.Str] = Math.Max(0, Attributes.StrengthItem.GetValue(acd) - (sockets_filled >= 2 ? sockets_filled * 280 : 0));
    stats[(int)ItemStat.Dex] = Math.Max(0, Attributes.DexterityItem.GetValue(acd) - (sockets_filled >= 2 ? sockets_filled * 280 : 0));
    stats[(int)ItemStat.Primary] = (new float[] { stats[(int)ItemStat.Int], stats[(int)ItemStat.Str], stats[(int)ItemStat.Dex] }).Max();
    stats[(int)ItemStat.Vit] = Attributes.VitalityItem.GetValue(acd);
    stats[(int)ItemStat.CHD] = (float)Math.Round(Attributes.CritDamagePercent.GetValue(acd) * 100);
    stats[(int)ItemStat.CC] = (float)Math.Round(Attributes.CritPercentBonusCapped.GetValue(acd) * 100, 1);
    stats[(int)ItemStat.CDR] = (float)Math.Round(Attributes.PowerCooldownReductionPercentAll.GetValue(acd) * 100);
    stats[(int)ItemStat.IAS] = (float)Math.Round(Attributes.AttacksPerSecondPercent.GetValue(acd) * 100);
    stats[(int)ItemStat.AllRes] = Attributes.ResistanceAll.GetValue(acd);
    stats[(int)ItemStat.MS] = (float)Math.Round(Attributes.MovementScalar.GetValue(acd) * 100);
    stats[(int)ItemStat.Armor] = Attributes.ArmorBonusItem.GetValue(acd);
    stats[(int)ItemStat.Socket] = Attributes.Sockets.GetValue(acd);
    stats[(int)ItemStat.AreaDmgPct] = (float)Math.Round(Attributes.SplashDamageEffectPercent.GetValue(acd, -1) * 100);
    
    foreach (ElementalType elem_type in Enum.GetValues(typeof(ElementalType)))
    {
    	if (elem_type == ElementalType.Physical || elem_type == ElementalType.Unknown) continue;
    	float dmg = Math.Max(Attributes.DamageWeaponMinTotalMainHand.GetValue(acd, (int)elem_type), Attributes.DamageWeaponMinTotalOffHand.GetValue(acd, (int)elem_type));
    	stats[(int)ItemStat.MinWeaponDmg] = Math.Max(stats[(int)ItemStat.MinWeaponDmg], dmg);
    }
    
    foreach (ElementalType elem_type in Enum.GetValues(typeof(ElementalType)))
    {
    	if (elem_type == ElementalType.Physical || elem_type == ElementalType.Unknown) continue;
    	float dmg = Math.Max(Attributes.DamageWeaponMinTotalMainHand.GetValue(acd, (int)elem_type) + Attributes.DamageWeaponDeltaTotalMainHand.GetValue(acd, (int)elem_type),
    						 Attributes.DamageWeaponMinTotalOffHand.GetValue(acd, (int)elem_type) + Attributes.DamageWeaponDeltaTotalOffHand.GetValue(acd, (int)elem_type));
    	stats[(int)ItemStat.MaxWeaponDmg] = Math.Max(stats[(int)ItemStat.MaxWeaponDmg], dmg);
    }
    
    stats[(int)ItemStat.MinDmg] = Attributes.DamageMinTotalAll.GetValue(acd);
    stats[(int)ItemStat.MaxDmg] = Attributes.DamageMinTotalAll.GetValue(acd) + Attributes.DamageDeltaTotalAll.GetValue(acd);
    
    stats[(int)ItemStat.AvgDmg] = (float)Math.Round((stats[(int)ItemStat.MinDmg] + stats[(int)ItemStat.MaxDmg]) * 0.5, 1);
    
    stats[(int)ItemStat.DmgPct] = (float)Math.Round(Attributes.DamageWeaponPercentTotal.GetValue(acd, 0) * 100);
    
    stats[(int)ItemStat.MinWeaponDmg] = Math.Max(stats[(int)ItemStat.MinWeaponDmg], Attributes.DamageWeaponBonusMinX1.GetValue(acd, 0));
    stats[(int)ItemStat.MaxWeaponDmg] = Math.Max(stats[(int)ItemStat.MaxWeaponDmg], Attributes.DamageWeaponBonusMinX1.GetValue(acd, 0) + Attributes.DamageWeaponBonusDeltaX1.GetValue(acd, 0));
    
    stats[(int)ItemStat.AvgWeaponDmg] = (float)Math.Round((stats[(int)ItemStat.MinWeaponDmg] + stats[(int)ItemStat.MaxWeaponDmg]) * 0.5, 1);
    
    stats[(int)ItemStat.LifePct] = (float)Math.Round(Attributes.HitpointsMaxPercentBonusItem.GetValue(acd) * 100);
    stats[(int)ItemStat.LifeOnHit] = Attributes.HitpointsOnHit.GetValue(acd);
    stats[(int)ItemStat.LifePerSec] = Attributes.HitpointsRegenPerSecond.GetValue(acd);
    stats[(int)ItemStat.LifePerFury] = Attributes.SpendingResourceHealsPercent.GetValue(acd, 0x02);
    stats[(int)ItemStat.EliteDmgRedPct] = (float)Math.Round(Attributes.DamagePercentReductionFromElites.GetValue(acd) * 100);
    stats[(int)ItemStat.DmgPctVsElite] = (float)Math.Round(Attributes.DamagePercentBonusVsElites.GetValue(acd) * 100);
    stats[(int)ItemStat.RCR] = (float)Math.Round(Attributes.ResourceCostReductionPercentAll.GetValue(acd) * 100);
    stats[(int)ItemStat.ResourceRegen] = Attributes.ResourceRegenPerSecond.GetValue(acd, 0);
    stats[(int)ItemStat.Res] = Attributes.Resistance.GetValue(acd, 0);
    ancient = Attributes.AncientRank.GetValue(acd) > 0;
    
    foreach (SnoPower power_id in ItemsHelper.StatsPriorityPowerId)
    	stats[(int)ItemStat.PowerDmgPct] = Math.Max(stats[(int)ItemStat.PowerDmgPct], power_bonus_pct[power_id] = (float)Math.Round(Attributes.PowerDamagePercentBonus.GetValue(acd, (int)power_id) * 100));
    
    foreach (ElementalType elemental in ItemsHelper.StatsPriorityElementals)
    {
    	if (elemental == ElementalType.Unknown) continue;
    	stats[(int)ItemStat.ElemDmgPct] = Math.Max(stats[(int)ItemStat.ElemDmgPct], elem_dmg_pct[elemental] = (float)Math.Round(Attributes.DamageDealtPercentBonus.GetValue(acd, (int)elemental) * 100));
    }
    
    stats[(int)ItemStat.WeaponDps] = Attributes.DamageWeaponAverageTotalAll.GetValue(acd) * Attributes.AttacksPerSecondItemMainHand.GetValue(acd);
    Want to get into botting. Check out my blog www.bottersgonnabot.com

 

 
Page 48 of 48 FirstFirst ... 384445464748

Similar Threads

  1. [Hack] Enigma TriggerBot - AutoIT
    By Zolyrica in forum Overwatch Exploits|Hacks
    Replies: 9
    Last Post: 09-12-2016, 02:37 PM
  2. [Release] [C#] 1.0.8.16603 Enigma.D3
    By enigma32 in forum Diablo 3 Memory Editing
    Replies: 33
    Last Post: 05-16-2015, 01:40 PM
  3. Enigma's Smartcast Manager
    By da_bizkit in forum League of Legends
    Replies: 3
    Last Post: 10-22-2012, 02:11 PM
  4. request Blue suede boots -> enigma boots
    By Geico in forum WoW ME Questions and Requests
    Replies: 0
    Last Post: 12-27-2007, 04:40 AM
All times are GMT -5. The time now is 05:17 PM. Powered by vBulletin® Version 4.2.3
Copyright © 2017 vBulletin Solutions, Inc. All rights reserved. Digital Point modules: Sphinx-based search