update item data
This commit is contained in:
@@ -82,12 +82,15 @@ func (gd *GameReader) GetData() data.Data {
|
|||||||
gd.monstersLastUpdate = now
|
gd.monstersLastUpdate = now
|
||||||
}
|
}
|
||||||
|
|
||||||
|
merc, foundMerc := gd.OwnMercenary()
|
||||||
|
merc.Found = foundMerc
|
||||||
|
|
||||||
// Conditionally update inventory 500ms
|
// Conditionally update inventory 500ms
|
||||||
// Except when hovering over an item
|
// Except when hovering over an item
|
||||||
inventory := gd.cachedInventory
|
inventory := gd.cachedInventory
|
||||||
if now.Sub(gd.inventoryLastUpdate) > 500*time.Millisecond ||
|
if now.Sub(gd.inventoryLastUpdate) > 500*time.Millisecond ||
|
||||||
(hover.IsHovered && hover.UnitType == 4) { // 4 = Item type
|
(hover.IsHovered && hover.UnitType == 4) { // 4 = Item type
|
||||||
inventory = gd.Inventory(rawPlayerUnits, hover)
|
inventory = gd.Inventory(rawPlayerUnits, merc, hover)
|
||||||
gd.cachedInventory = inventory
|
gd.cachedInventory = inventory
|
||||||
gd.inventoryLastUpdate = now
|
gd.inventoryLastUpdate = now
|
||||||
}
|
}
|
||||||
@@ -147,8 +150,6 @@ func (gd *GameReader) GetData() data.Data {
|
|||||||
ActiveWeaponSlot: gd.GetActiveWeaponSlot(),
|
ActiveWeaponSlot: gd.GetActiveWeaponSlot(),
|
||||||
}
|
}
|
||||||
|
|
||||||
merc, foundMerc := gd.OwnMercenary()
|
|
||||||
merc.Found = foundMerc
|
|
||||||
d.Mercenary = data.OwnMercenary(merc)
|
d.Mercenary = data.OwnMercenary(merc)
|
||||||
return d
|
return d
|
||||||
}
|
}
|
||||||
@@ -156,7 +157,9 @@ func (gd *GameReader) GetData() data.Data {
|
|||||||
func (gd *GameReader) GetInventory() data.Inventory {
|
func (gd *GameReader) GetInventory() data.Inventory {
|
||||||
rawPlayerUnits := gd.GetRawPlayerUnits()
|
rawPlayerUnits := gd.GetRawPlayerUnits()
|
||||||
hover := gd.HoveredData()
|
hover := gd.HoveredData()
|
||||||
return gd.Inventory(rawPlayerUnits, hover)
|
merc, foundMerc := gd.OwnMercenary()
|
||||||
|
merc.Found = foundMerc
|
||||||
|
return gd.Inventory(rawPlayerUnits, merc, hover)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gd *GameReader) InGame() bool {
|
func (gd *GameReader) InGame() bool {
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import (
|
|||||||
"github.com/hectorgimenez/d2go/pkg/utils"
|
"github.com/hectorgimenez/d2go/pkg/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (gd *GameReader) Inventory(rawPlayerUnits RawPlayerUnits, hover data.HoverData) data.Inventory {
|
func (gd *GameReader) Inventory(rawPlayerUnits RawPlayerUnits, merc OwnMercenary, hover data.HoverData) data.Inventory {
|
||||||
mainPlayer := rawPlayerUnits.GetMainPlayer()
|
mainPlayer := rawPlayerUnits.GetMainPlayer()
|
||||||
baseAddr := gd.Process.moduleBaseAddressPtr + gd.offset.UnitTable + (4 * 1024)
|
baseAddr := gd.Process.moduleBaseAddressPtr + gd.offset.UnitTable + (4 * 1024)
|
||||||
unitTableBuffer := gd.Process.ReadBytesFromMemory(baseAddr, 128*8)
|
unitTableBuffer := gd.Process.ReadBytesFromMemory(baseAddr, 128*8)
|
||||||
@@ -132,7 +132,6 @@ func (gd *GameReader) Inventory(rawPlayerUnits RawPlayerUnits, hover data.HoverD
|
|||||||
itm := &data.Item{
|
itm := &data.Item{
|
||||||
ID: int(txtFileNo),
|
ID: int(txtFileNo),
|
||||||
UnitID: data.UnitID(unitID),
|
UnitID: data.UnitID(unitID),
|
||||||
Owner: data.UnitID(itemOwnerNPC),
|
|
||||||
Name: item.GetNameByEnum(txtFileNo),
|
Name: item.GetNameByEnum(txtFileNo),
|
||||||
Quality: item.Quality(itemQuality),
|
Quality: item.Quality(itemQuality),
|
||||||
Position: data.Position{
|
Position: data.Position{
|
||||||
@@ -143,9 +142,6 @@ func (gd *GameReader) Inventory(rawPlayerUnits RawPlayerUnits, hover data.HoverD
|
|||||||
Sockets: make([]data.Item, 0),
|
Sockets: make([]data.Item, 0),
|
||||||
UniqueSetID: txtUniqueSet,
|
UniqueSetID: txtUniqueSet,
|
||||||
}
|
}
|
||||||
if itm.Owner == 1 {
|
|
||||||
itm.Owner = mainPlayer.UnitID
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set item properties
|
// Set item properties
|
||||||
setProperties(itm, uint32(flags))
|
setProperties(itm, uint32(flags))
|
||||||
@@ -287,6 +283,8 @@ func (gd *GameReader) Inventory(rawPlayerUnits RawPlayerUnits, hover data.HoverD
|
|||||||
location = classifyDLCTabItem(txtFileNo)
|
location = classifyDLCTabItem(txtFileNo)
|
||||||
}
|
}
|
||||||
} else if data.UnitID(itemOwnerNPC) == mainPlayer.UnitID || itemOwnerNPC == 1 {
|
} else if data.UnitID(itemOwnerNPC) == mainPlayer.UnitID || itemOwnerNPC == 1 {
|
||||||
|
itm.Owner = mainPlayer.UnitID
|
||||||
|
|
||||||
if invPage == 0 {
|
if invPage == 0 {
|
||||||
location = item.LocationInventory
|
location = item.LocationInventory
|
||||||
} else if invPage == 3 {
|
} else if invPage == 3 {
|
||||||
@@ -297,14 +295,29 @@ func (gd *GameReader) Inventory(rawPlayerUnits RawPlayerUnits, hover data.HoverD
|
|||||||
invPage = 0
|
invPage = 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if location == item.LocationSharedStash {
|
||||||
|
MySharedStashPage := stashUnitIDToPage[uint(mainPlayer.UnitID)]
|
||||||
|
if invPage == MySharedStashPage {
|
||||||
|
itm.Owner = mainPlayer.UnitID
|
||||||
|
}
|
||||||
|
}
|
||||||
case 1:
|
case 1:
|
||||||
isMercItem := (flags & 0x800000) != 0
|
isMercItem := (flags & 0x800000) != 0
|
||||||
if data.UnitID(itemOwnerNPC) == mainPlayer.UnitID || itemOwnerNPC == 1 {
|
if data.UnitID(itemOwnerNPC) == mainPlayer.UnitID || itemOwnerNPC == 1 {
|
||||||
|
itm.Owner = mainPlayer.UnitID
|
||||||
|
|
||||||
location = item.LocationEquipped
|
location = item.LocationEquipped
|
||||||
if itm.Type().Code == item.TypeBelt {
|
if itm.Type().Code == item.TypeBelt {
|
||||||
belt.Name = itm.Name
|
belt.Name = itm.Name
|
||||||
}
|
}
|
||||||
} else if isMercItem {
|
} else if isMercItem {
|
||||||
|
if merc.Found {
|
||||||
|
itm.Owner = merc.UnitID
|
||||||
|
} else {
|
||||||
|
itm.Owner = data.UnitID(itemOwnerNPC)
|
||||||
|
}
|
||||||
|
|
||||||
location = item.LocationMercenary
|
location = item.LocationMercenary
|
||||||
}
|
}
|
||||||
case 2:
|
case 2:
|
||||||
|
|||||||
Reference in New Issue
Block a user