Well....(better put the kettle on!)
An object has a pivot point already, which is at 0,0,0 - usually shown on your modelling package, it's really the centre point, when you rotate your object in DB, it rotates around this. Each seperate mesh or limb in your object also has it's own pivot point - the main centre point is based on the meshes position, it's always 0,0,0 - but a mesh pivot point can be anywhere. Luckily you can use both at the same time because the pivot points are derived from the LIMB POSITION commands, you can get the angles too.
Something you will have to consider is weapons, there's a certain way to glue a weapon onto someones hand, you can't just glue the object right onto the limb, because that usually results in a horrible hand/gun emalgamation. I like to load the weapon and character model into a modeller, then centre the model on the pivot point at which I'm gonna glue. So, I'd load in a character, and delete everything except the hand, then I'd position the hand so that it's pivot point was at 0,0,0 in the world. Now when you position your gun to suit the hand it'll be in an ideal position. Now you'd put the guns pivot point at the end of the barrel.
Don't panic if your modeller won't let you adjust the pivots (most wont), you can guess the gun positioning, then use a little bit of messing around to find that bullet exit position.
For instance:
Make a cube, then make it into a mesh.
Add the cube to your gun object as a new limb.
Offset the cube to the bullet eject position (make a little editor that displays the coordinates while letting you adjust it).
Now the cube limb holds all the bullet info you need, the angles, and the start position of your bullet.
If your planning on adding a bullet flash effect onto the gun - treat the bullet flash object as a gun itself, it should be glued onto the same limb as the gun, and is best modelled around the gun too. You can't glue an object onto an already glued object, but gluing multiple objects to limbs is no biggie.
When you come to fire a bullet, I suggest using object velocity methods instead of angles etc. It's more physics orientated, but it's also easier to handly - you simply need the bullet speed. I use a dummy object (like your cube from before) and position it at the bullet exit, then rotate it to match the limb, then move that object forward depending on the bullet speed. Once you'd done that you can easily ascertain the start position, and X, Y, Z speeds of the bullet - then you need to move your bullets every loop and check for collisions. It's not really necessary to make your bullet a proper object, for speed sakes I'd recommend that if you need to see the bullets, just use a plain with a bullet trail texture and point it towards it's destination. You'll need at least 50 for a reasonably paced FPS, so make sure that collision system is tight - I'd strongly advise sticking to interpolation (like matrices) or array (like lego) collision. An optimised collision system will ensure a decent frame rate - don't rely on DBC's built in poly collision.
Van-B

The nature of Monkey was irrepressible!.