protonscr

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

steamclosed reviewedMOVED: Counter‐Strike
ValveSoftware/steam-for-linux#1089 · opened 2013-01-31 by xPaw · updated 2019-07-18 · 4 comments · github
XxPaw 2013-01-31 github

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.

Aalfred-valve maintainer 2013-01-31 github

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

CConnorMcLeod 2013-02-01 github

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.

Ttyftler 2013-02-14 github

How will we notice if it got fixed?

Jjohndrinkwater 2013-02-14 github

Nothing extracted yet.