There was a really kick ass example in A7's templates, let me dig it up for you. Give me a sec.....
Found it, it was Workshop 23, Workshop 22 has a non-bone version, this one takes the screen coordinates of the mouse, and blends that position with the turrets normal animation with walking to get a good effect. You can use this as a jump board to get what you want. (take a look in your lite-c/workshops folder to find workshop 23 to take a closer look)
///////////////////////////////
#include <acknex.h>
#include <default.c>
///////////////////////////////
var walk_speed; // stores robot's walking speed
ANGLE bone_angle; // a vector that holds the pan, tilt and roll angles
BMAP* crosshair_pcx = "crosshair.pcx"; // the bitmap used for our crosshair
////////////////////////////////////////////////////////////////////////////////////
function rotate_bone()
{
my.pan = -180; // face the camera
while(1)
{
walk_speed += 2 * time_step; // increase walk_speed, "2" sets the animation speed
ent_animate(my, "walk", walk_speed, ANM_CYCLE); // animate the model (use "walk")
bone_angle.pan = (mouse_pos.x - screen_size.x / 2) / 10; // changes pan from -40 to +40 degrees
bone_angle.tilt = (screen_size.y / 2 - mouse_pos.y) / 10; // changes tilt from -30 to +30 degrees
bone_angle.roll = 0; // no need to change the roll angle for this bone
ent_bonereset(my,"CA4");
ent_bonerotate(my,"CA4", bone_angle); // rotate the bone named "CA4"
wait(1);
}
}
function main()
{
video_mode = 7; // set the screen resolution to 800 x 600 pixels
level_load (""); // load an empty level
wait(2); // wait until the level is loaded
ent_create("robot.mdl", vector(400, 0, -50), rotate_bone); // and then create the robot model
mouse_map = crosshair_pcx; // set the bitmap that is going to be used by the mouse pointer
mouse_mode = 2; // now show the pointer
while (1)
{
vec_set(mouse_pos, mouse_cursor); // update the mouse pointer position at all times
wait (1);
}
}