You should probably call drop_weapon() prior remove() tho so the weapons are no longer mapped in the m_hMyWeapons array for that player. Doesn't matter for Source.Python because we ensure the handles are valid, but other plugins might not and attempt to manipulate them.

BackRaw wrote:Does the player_weaponstrip entity has any benefits over calling weapon.remove()? What about iterating over the player's weapons and calling .remove() each time? Or is it just that the weapon filters are more flexible?

Ayuto wrote:No, iterating over the player's weapons and removing them is perfectly fine.

Delaying by 0 seconds doesn't execute immediately. Your callback will still be executed in a regular tick-based flow. That means outside of hooks.If you use Weapon class, it will force-drop the weapon automatically when you call .remove()

In addition to what iPlayer said, I would like to add that you are doing a few redundant calls. "player.primary" already returns a Weapon instance (or None if the player has no primary). So, your scroll method should look like this: