ValveSoftware / steam-for-linux

Issue tracking for the Steam for Linux beta client
4.25k stars 175 forks source link

[CS/CZ] Stripping player weapons leaves hasPrimary offset on true #1089

Closed xPaw closed 11 years ago

xPaw commented 11 years ago

In CBasePlayer::RemoveAllItems, it should set m_fHasPrimary to false. Without changing this, player won't be able to pickup primary weapons from armoury_entity entity, weaponbox remains working.

alfred-valve commented 11 years ago

Can you provide a way to reproduce this issue (nice clear steps please) so I can confirm any fixes we make.

ConnorMcLeod commented 11 years ago

It is hard to reproduce without any addon like AmxModX, would require an aim map with armoury_entity on the ground, and a player_weaponstrip entity somewhere in map then you could notice that if you touch the strip entity while carrying a primary weapon, you can't pickup anymore a armoury_entity (works fine with weaponbox entities).

This is about a CBasePlayer private data (BOOL i think, amxx scripter call it m_fHasPrimary) that is checked when a player touch an armoury_entity so in CArmoury::ArmouryTouch, and if that armoury is not an item or a nade. That private data is set to FALSE in CBasePlayer::DropPlayerItem and in CBasePlayer::DropShield, i don't think anywhere else, so when CBasePlayer::RemoveAllItems is called, CBasePlayerItem::Drop is called for each weapon player is carrying and that private data is not set to 0.

If i find a map that allows to reproduce the bug, will tell you for sure.

tyftler commented 11 years ago

How will we notice if it got fixed?

johndrinkwater commented 11 years ago

You follow the link to https://github.com/ValveSoftware/halflife/issues/1 :)