Few things that I don't like:
new argument = "weapon_";
You should use copy native, that's the proper way to copy a string into another.
Also, if you would look inside weapontype.h, in ReGameDLL project(github) you will see that WEAPON_SHIELDGUN index should be 99, not 2. 2 is CSW_GLOCK, but it's not used in cs anyway. For consistency, I would like you to use the correct value, even if this means you will have to resize your array.
Also, better handling for nades would be nice. Like checking game, if it's czero allow them in weaponbox_life, else block it(like you do for knife).
Other than that, code looks okay. Approved, but please fix the above, if you are active.