Your finding the child every time you create a bullet? Once you find a child, i'm sure it gets removed from the child list. I'm not sure about that, but i recommend you only do findchild ONCE.
This line:
Should probably be just after your load your mesh. Assign weapon to a Global variable too.
This line:
weapon = FindChild(p\entity, gun)
Should probably be just after your load your mesh. Assign weapon to a Global variable too.