I've done an engine which does this, in fact one of my games which I'm working on uses it.
I made the character's arm a separate object, and gave it 32 directions, and made it always look at the crosshair (I made a crosshair and made it always set to co-ordinates XMouse, YMouse), for shooting I used the 360 degree shooting tutorial which you can find on this site. Making it shoot it in the direction of the crosshair without the 360 degree method makes the shooting quite inaccurate.
i think you should use an active picture for the arm so you also can give that 360 directions. Also i experimented a few days ago, and found a way of having 3600 directions.
user click with left button
---> create bullet at player
--->set alt. value x to x of bullet
---> set alt. value y to y of bullet
---> set alt. value a to angle between mouse and bullet * 10.0
always
---> set alt. value x to alt value x + alt. value b * sin (alt value a /10.0)
---> set alt. value y to alt value y + alt. value b * cos (alt value a/10.0)
---> set x of bullet to alt. value x
---> set y of bullet to alt. value y
---> add 2 to alt value b
for the arm, first place the hot spot at the shoulder, then make 32 directions out of it
for the arm you just place it at the player
right click on the two computers, goto always/never and click always
th right click under the arm and goto position and then click set position then, then click on the releavtive to radio button, select the player from the object dialog there appears, then take the marker and place it where you want the player's arm to be placed.
to make the arm look at crosshair, in the same event where you're placibg the arm at the player, goto direction, then click look in direction of click the relvtive to button, select the crosshair from the object dialog, and the click ok. in the edit objects there says some number type 0 in both of them, and then click ok.
to make the crosshair be at the mouse in the same event as where you have the other actions in, right click under the crosshair goto position, and select set x coordinates. in the expression evaluator, there appears mark the 0, then click the retrive data from another object, right click on the mouse and the keyboard, and click get mouse x coordinates. then goto positon right click under the crosshair goto position, and click set y coordinates. mark the 0 click the retrive data from anoter object button right click on the keyboard and the mouse and click get mouse y cootdinates.
But I don't it you too be sooooooooooooo step by step!
I know what all the buttons are and almost everything what they do! I am a n00b BUT I'm not an IDIOT!!
Profile edited as it messed the layout of the site up.