shoot(), would be the simplest of ways, and can be done with one command and a couple of ganis. Sorry I can't provide the details, I don't remember. I'll look it up after House is done.
EDIT:
PHP Code:
//#CLIENTSIDE
function onWeaponfired() {
shoot(x,y,z,angle,zangle,power,"gani",param1,param2,...[these params are sent to the GANI, not passed in the shoot command]);
}
//#CLIENTSIDE // Everything following this is dealt on the clientside of things. shoot() is clientside.
function onWeaponfired() {..} // Everything inside this function is called when the weapon is fired.
shoot(stuff)... // Shoots a projectile that is visible as whatever gani is defined. As for the specs, straight from newfeatures, as no need to repeat them in different words:
x,y and z - specify the starting position
angle - shoot angle (when looking from the top): east is 0, north 3.14/2, west is 3.14, south 3.14*3/2)
zangle - the angle in vertical direction, 0 means the projectile is shoot horizontal, 3.14/2 means straight to the sun
power - the shoot power which is used to shoot the projectile; if it's 0 then the projectile is shoot like an old arrow (doesn't fall down, moves 20 tiles each second)
gani - the animation that is used for the projectile; the animation can be multidirectional, the engine automatically selects the best direction for the flying direction; the animation can have 1 step (not animated) or 7 steps, then the engine is automatically choosing the good animation step for the projectile flying angle - when its raising then step 1 is taken, when flying horizontal it is step 4, when it is short before the impact then the engine displays step 7
If anything confuses you, I'll try to answer. There's a lot more to it than this, but I figured you should start off with just getting a bullet going.