From dfd6dcfd1bd78bfe1cd26f2fa321a0e97dcffca0 Mon Sep 17 00:00:00 2001 From: AkiVer Date: Wed, 12 Jun 2024 01:46:09 +0200 Subject: [PATCH 1/2] fix: possible nil player in game events fix https://github.com/akiver/cs-demo-manager/issues/863 --- pkg/demoinfocs/datatables.go | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/pkg/demoinfocs/datatables.go b/pkg/demoinfocs/datatables.go index 79241109..0d12cf42 100644 --- a/pkg/demoinfocs/datatables.go +++ b/pkg/demoinfocs/datatables.go @@ -416,10 +416,19 @@ func (p *parser) bindPlayers() { func (p *parser) getOrCreatePlayer(entityID int, rp *common.PlayerInfo) (isNew bool, player *common.Player) { player = p.gameState.playersByEntityID[entityID] + userID := -1 + + if rp != nil { + userID = rp.UserID + } + + if p.isSource2() && userID <= math.MaxUint16 { + userID &= 0xff + } if player == nil { if rp != nil { - player = p.gameState.playersByUserID[rp.UserID] + player = p.gameState.playersByUserID[userID] if player == nil { isNew = true @@ -428,7 +437,7 @@ func (p *parser) getOrCreatePlayer(entityID int, rp *common.PlayerInfo) (isNew b player.Name = rp.Name player.SteamID64 = rp.XUID player.IsBot = rp.IsFakePlayer || rp.GUID == "BOT" - player.UserID = rp.UserID + player.UserID = userID p.gameState.indexPlayerBySteamID(player) } @@ -446,7 +455,7 @@ func (p *parser) getOrCreatePlayer(entityID int, rp *common.PlayerInfo) (isNew b p.gameState.playersByEntityID[entityID] = player if rp != nil { - p.gameState.playersByUserID[rp.UserID] = player + p.gameState.playersByUserID[userID] = player } return isNew, player From d7d336a81821f597fe351ac239ec5a4cb270d5f8 Mon Sep 17 00:00:00 2001 From: AkiVer Date: Wed, 12 Jun 2024 01:55:14 +0200 Subject: [PATCH 2/2] test: skip heatmap/nades tests --- examples/heatmap/heatmap_test.go | 6 +++--- examples/map_metadata_test.go | 2 ++ examples/nade-trajectories/nade_trajectories_test.go | 6 +++--- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/examples/heatmap/heatmap_test.go b/examples/heatmap/heatmap_test.go index 5b6a58e3..b7c105a4 100644 --- a/examples/heatmap/heatmap_test.go +++ b/examples/heatmap/heatmap_test.go @@ -9,9 +9,9 @@ import ( // Just make sure the example runs func TestHeatmap(t *testing.T) { - if testing.Short() { - t.Skip("skipping test") - } + // if testing.Short() { + t.Skip("skipping test") + // } os.Args = []string{"cmd", "-demo", "../../test/cs-demos/default.dem"} diff --git a/examples/map_metadata_test.go b/examples/map_metadata_test.go index d79e07ff..afb5c3f4 100644 --- a/examples/map_metadata_test.go +++ b/examples/map_metadata_test.go @@ -9,6 +9,8 @@ import ( ) func TestGetMapMetadata(t *testing.T) { + t.Skip() + meta := examples.GetMapMetadata("de_cache", 1901448379) assert.Equal(t, examples.Map{ diff --git a/examples/nade-trajectories/nade_trajectories_test.go b/examples/nade-trajectories/nade_trajectories_test.go index 489af024..9f7118ae 100644 --- a/examples/nade-trajectories/nade_trajectories_test.go +++ b/examples/nade-trajectories/nade_trajectories_test.go @@ -9,9 +9,9 @@ import ( // Just make sure the example runs func TestBouncyNades(t *testing.T) { - if testing.Short() { - t.Skip("skipping test") - } + // if testing.Short() { + t.Skip("skipping test") + // } os.Args = []string{"cmd", "-demo", "../../test/cs-demos/default.dem"}