Well, there are some more ways to do this.
One idea would be to simply write a skill (lets take 23) and put it on a specific value (lets take 1337). Now in your trace you check for you. If you is valid check the skill, if its 1337 you have to create a vector (depending on the mass of the box and strength of the weapon). You also need to apply the force on the position where you hit the box, here we will use "USE_POLYGON" in the trace so we can later apply it on the hit position:
if(c_trace(..))
{
if(you)
{
if(you.skill23 == 1337)
{
VECTOR vForce;
vec_set(vForce, vector(100, 0, 0));
vec_rotate(vForce, pTraceHit.rotation);
pXent_addforceglobal(you, vForce, hit.x);
}
}
}
Edit: Heres a little preview how it will look like:
www.youtube.com/watch?v=daRrCOQxsiY