From c2be2c1816f9995ea28938daa84314f30b9f8a08 Mon Sep 17 00:00:00 2001 From: vietdungdev Date: Mon, 25 May 2026 17:31:42 +0700 Subject: [PATCH] improve item.go 3 --- pkg/memory/game_reader.go | 12 +++++++----- pkg/memory/item.go | 4 ++-- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/pkg/memory/game_reader.go b/pkg/memory/game_reader.go index abdaaad..a3e0ef6 100644 --- a/pkg/memory/game_reader.go +++ b/pkg/memory/game_reader.go @@ -82,12 +82,16 @@ func (gd *GameReader) GetData() data.Data { gd.monstersLastUpdate = now } + // Always update other critical data + corpseUnit := rawPlayerUnits.GetCorpse() + roster := gd.getRoster(rawPlayerUnits) + // Conditionally update inventory 500ms // Except when hovering over an item inventory := gd.cachedInventory if now.Sub(gd.inventoryLastUpdate) > 250*time.Millisecond || (hover.IsHovered && hover.UnitType == 4) { // 4 = Item type - inventory = gd.Inventory(rawPlayerUnits, hover) + inventory = gd.Inventory(rawPlayerUnits, len(roster) > 1, hover) gd.cachedInventory = inventory gd.inventoryLastUpdate = now } @@ -100,9 +104,6 @@ func (gd *GameReader) GetData() data.Data { gd.objectsLastUpdate = now } - // Always update other critical data - corpseUnit := rawPlayerUnits.GetCorpse() - roster := gd.getRoster(rawPlayerUnits) openMenus := gd.OpenMenus() // Quests @@ -155,8 +156,9 @@ func (gd *GameReader) GetData() data.Data { func (gd *GameReader) GetInventory() data.Inventory { rawPlayerUnits := gd.GetRawPlayerUnits() + roster := gd.getRoster(rawPlayerUnits) hover := gd.HoveredData() - return gd.Inventory(rawPlayerUnits, hover) + return gd.Inventory(rawPlayerUnits, len(roster) > 1, hover) } func (gd *GameReader) InGame() bool { diff --git a/pkg/memory/item.go b/pkg/memory/item.go index a6e1cd3..d1d56ba 100644 --- a/pkg/memory/item.go +++ b/pkg/memory/item.go @@ -13,7 +13,7 @@ import ( "github.com/hectorgimenez/d2go/pkg/utils" ) -func (gd *GameReader) Inventory(rawPlayerUnits RawPlayerUnits, hover data.HoverData) data.Inventory { +func (gd *GameReader) Inventory(rawPlayerUnits RawPlayerUnits, partyMode bool, hover data.HoverData) data.Inventory { mainPlayer := rawPlayerUnits.GetMainPlayer() baseAddr := gd.Process.moduleBaseAddressPtr + gd.offset.UnitTable + (4 * 1024) unitTableBuffer := gd.Process.ReadBytesFromMemory(baseAddr, 128*8) @@ -275,7 +275,7 @@ func (gd *GameReader) Inventory(rawPlayerUnits RawPlayerUnits, hover data.HoverD // In party mode / current memory layout: // shared stash page 1 belongs to the current character. // Other pages are other shared stash containers and should keep raw owner. - if page == 1 { + if !partyMode || page == 1 { itm.Owner = mainPlayer.UnitID }