markus-wa / demoinfocs-golang

A Counter-Strike 2 & CS:GO demo parser for Go (demoinfo)
https://pkg.go.dev/github.com/markus-wa/demoinfocs-golang/v4/pkg/demoinfocs?tab=doc
MIT License
701 stars 93 forks source link

crashed at Player.EquipmentValueFreezeTimeEnd() #434

Open penjiu opened 12 months ago

penjiu commented 12 months ago

Describe the bug Failed to get equipment value at specified round(round 12), and the program crashes.

To Reproduce demo url: https://pvp-demo-hz.oss-cn-hangzhou.aliyuncs.com/demo/normal/9205806215538562956_0.dem?response-content-disposition=attachment%3Bfilename%3D9205806215538562956_0.dem.zip&OSSAccessKeyId=LTAI4FdozZjF98JnnYvJRUeQ&Expires=1699328617&Signature=L09sAXWFLY3RlcszNOZsjHlTcXc%3D

  1. Register WeaponFire event
  2. call Player.EquipmentValueFreezeTimeEnd()

Code: parser.RegisterEventHandler(func(e events.WeaponFire) { a.HandleWeaponFired(parser, e) })

    func (a *Analyzer) HandleWeaponFired(parser dem.Parser, e events.WeaponFire) {
            equipmentValueCt := int(0)
            equipmentValueT := int(0)
            for _, participant := range parser.GameState().Participants().All() {
            if participant.Team == common.TeamCounterTerrorists {
            equipmentValueCt += participant.EquipmentValueFreezeTimeEnd()
            } else if participant.Team == common.TeamTerrorists {
            equipmentValueT += participant.EquipmentValueFreezeTimeEnd()
            }
            }
    }

Expected behavior Player.EquipmentValueFreezeTimeEnd() returns correct equipment value.

Library version v4.0.0-beta.2

markus-wa commented 11 months ago

thanks - I will try to look into it when I find some time

penjiu commented 9 months ago

Hi guys, is there a chance to look into this issue ?