Irrlicht collision won't works with Child Nodes. Therefore weapons will always pass through the walls.
The reason:
In CSceneNodeAnimatorCollisionResponse are used relative position for calculation like getPosition. Therefore collision will not affect for any node, when this node has another node for parent.
But change to getAbsolutePosition will not resolve the problem.
There must be link between collision of parent and child node