Thankfully you’re going for coop which makes this a whole lot easier. There are no real cheating concerns in coop unless this involves for instance real-money player trade (ie Diablo).
You can leave the decision to the client. However there’s a certain risk that two players will pick up the same item within the time defined by both player’s latency. Meaning it takes time for player A to sync the removal of the object to player B and vice versa. For that reason, a lot of coop games opt to provide each local player with local-only loot (ie customized to each client). Or they allow everyone to pick up the same item, by only removing it locally for the local client.
Note that the world item and the held or inventory item needn’t be the same. In fact it’s easier to think of world items just being triggers that spawn something into the player’s hand or inventory, and also tell everyone else “client 3 is now holding the stick of goo” so that everyone’s visuals are updated accordingly. The stick itself is non-networked. Client 3 attacks with the stick, so that’s an RPC sent to everyone which simply calls for “client 3 attacking” and everyone is playing the attack animation with whatever that client is currently holding. There may be a split second firing a gun before that client switches to the stick, but probably this will be rare.
And, if the player drops one of the held or inventory items that aren’t networked, this actually spawns a networked object in the world.
It gets slightly more complicated with projectile weapons however. For the most part you can ignore players shooting in slightly different directions, or locally hitting an enemy but for everyone else that client is missing. As long as the local hits are counted correctly and sent to the server, eventually that enemy will die and for the local player it feels right because clearly those were hits. And everyone else is too busy fighting they wouldn’t even notice an enemy dying from multiple misses.
Why are they possibly missing? Because if you just tell everyone that client 3 is attacking, due to latency that client 3 may be looking in a different direction or standing slightly elsewhere. For many coop games this is acceptable as it keeps traffic low and the code easier to manage. Most importantly, none of the projectiles would need to be network synchronized. A coop game that gets away with this relatively badly, and it’s still not very noticably, is Earth Defense Force if you want to try it out and also have some fun. 
You can also choose to use the MMO strategy: whether a projectile hits or not is part of the attack formula. By default, a player locks on to a target, so every shot will be directed at the selected target and every client is aware of each other’s current targets.
Player drops back into main menu with a message “Connection terminated”. 
And possibly before that, until the timeout occurs, the player will just be able to roam about and do things but this will not have any effect for the others while the disconnected player will notice other players being frozen and perhaps continuously firing in the same direction.