Okay, here ya go

(Sry for double-posting

)
Click on an entity to "activate" it (the "active" ent will show another animation when you press "q"). Rightclick an ent to switch.
Code:
/////////////////////////////////////////
// Player Selection/Switching script
//
// (c) 2006 by Claus N.
// Nighthawk Arts
// www.nighthawk.dk
/////////////////////////////////////////
define anim_state,skill21;
define active,flag1;
// Define all your animation states below
define state_stand,0;
define state_walk,1;
define state_run,2;
define state_spin,3;
define state_bounce,4;
// Animation names
string anim_stand = "stand";
string anim_walk = "walk";
string anim_run = "run";
string anim_spin = "attack";
string anim_bounce = "bounce";
/////////////////////////////////////////
bmap selBG_map = <bg_pan.bmp>;
bmap but1_map = <but1.bmp>;
bmap but2_map = <but2.bmp>;
bmap but3_map = <but3.bmp>;
bmap but4_map = <but4.bmp>;
bmap but5_map = <but5.bmp>;
bmap butc_map = <cancel_but.bmp>;
bmap but1_over_map = <but1.bmp>;
bmap but2_over_map = <but2.bmp>;
bmap but3_over_map = <but3.bmp>;
bmap but4_over_map = <but4.bmp>;
bmap but5_over_map = <but5.bmp>;
bmap butc_over_map = <cancel_but.bmp>;
/////////////////////////////////////////
sound pl1_snd = <wham.wav>;
sound pl2_snd = <wham.wav>;
sound pl3_snd = <wham.wav>;
sound pl4_snd = <wham.wav>;
sound pl5_snd = <wham.wav>;
sound cancel_snd = <wham.wav>;
sound pl1_over_snd = <tap.wav>;
sound pl2_over_snd = <tap.wav>;
sound pl3_over_snd = <tap.wav>;
sound pl4_over_snd = <tap.wav>;
sound pl5_over_snd = <tap.wav>;
sound cancel_over_snd = <tap.wav>;
/////////////////////////////////////////
string pl1_mdl = <cbabe.mdl>;
string pl2_mdl = <woman.mdl>;
string pl3_mdl = <witch.mdl>;
string pl4_mdl = <elf.mdl>;
string pl5_mdl = <warlock.mdl>;
/////////////////////////////////////////
var_nsave snd_handle;
var actorHandle;
/////////////////////////////////////////
string level_str = <level.wmb>;
/////////////////////////////////////////
function butOver(but,pan);
function butClick(but,pan);
/////////////////////////////////////////
panel selectionPan
{
bmap = selBG_map;
flags = refresh;
button = 20,30,but1_map,but1_map,but1_over_map,butClick,null,butOver;
button = 20,60,but2_map,but2_map,but2_over_map,butClick,null,butOver;
button = 20,90,but3_map,but3_map,but3_over_map,butClick,null,butOver;
button = 20,120,but4_map,but4_map,but4_over_map,butClick,null,butOver;
button = 20,150,but5_map,but5_map,but5_over_map,butClick,null,butOver;
button = 20,180,butc_map,butc_map,butc_over_map,butClick,null,butOver;
}
/////////////////////////////////////////
function butOver(but,pan)
{
if(snd_handle != 0)
{
snd_stop(snd_handle);
}
if(but == 1) {snd_handle = snd_play(pl1_over_snd,100,10);}
if(but == 2) {snd_handle = snd_play(pl2_over_snd,100,10);}
if(but == 3) {snd_handle = snd_play(pl3_over_snd,100,10);}
if(but == 4) {snd_handle = snd_play(pl4_over_snd,100,10);}
if(but == 5) {snd_handle = snd_play(pl5_over_snd,100,10);}
if(but == 6) {snd_handle = snd_play(cancel_over_snd,100,10);}
}
/////////////////////////////////////////
function butClick(but,pan)
{
if(actorHandle == 0) {return;}
you = ptr_for_handle(actorHandle);
actorHandle = 0;
if(!you) {return;}
if(snd_handle != 0)
{
snd_stop(snd_handle);
}
if(but == 1) {snd_handle = snd_play(pl1_snd,100,10);ent_morph(you,pl1_mdl);}
if(but == 2) {snd_handle = snd_play(pl2_snd,100,10);ent_morph(you,pl2_mdl);}
if(but == 3) {snd_handle = snd_play(pl3_snd,100,10);ent_morph(you,pl3_mdl);}
if(but == 4) {snd_handle = snd_play(pl4_snd,100,10);ent_morph(you,pl4_mdl);}
if(but == 5) {snd_handle = snd_play(pl5_snd,100,10);ent_morph(you,pl5_mdl);}
if(but == 6) {snd_handle = snd_play(cancel_snd,100,10);}
selectionPan.visible = off;
}
/////////////////////////////////////////
// Call this function from "main()"!!
function init_mouse()
{
mouse_mode = 2;
mouse_on();
}
/////////////////////////////////////////
function selPan_Show(ent)
{
if(ent == 0) {return;}
you = ptr_for_handle(ent);
if(!you) {return;}
temp.x = you.x;
temp.y = you.y;
temp.z = you.z + you.min_z;
vec_to_screen(temp,camera);
selectionPan.pos_x = clamp(temp.x,0,screen_size.x - bmap_width(selectionPan.bmap));
selectionPan.pos_y = clamp(temp.y,0,screen_size.y - bmap_height(selectionPan.bmap));
actorHandle = ent;
selectionPan.visible = on;
}
/////////////////////////////////////////
function animateMe()
{
while(my)
{
if(my.anim_state == state_stand)
{
ent_animate(my,anim_stand,my.skill46,ANM_CYCLE);
my.skill46 += 2 * time;
}
if(my.anim_state == state_walk)
{
ent_animate(my,anim_walk,my.skill46,ANM_CYCLE);
my.skill46 += 6 * time;
}
if(my.anim_state == state_run)
{
ent_animate(my,anim_run,my.skill46,ANM_CYCLE);
my.skill46 += 10 * time;
}
if(my.anim_state == state_spin)
{
ent_animate(my,anim_spin,my.skill46,ANM_CYCLE);
my.skill46 += 8 * time;
}
if(my.anim_state == state_bounce)
{
ent_animate(my,anim_bounce,my.skill46,ANM_CYCLE);
my.skill46 += 8 * time;
}
my.skill46 %= 100;
wait(1);
}
}
/////////////////////////////////////////
function actorClicked
{
if(event_type == event_rightclick)
{
selPan_Show(handle(my));
}
if(event_type == event_click)
{
while(mouse_left) {wait(1);}
my.active = on;
while(!mouse_left) {wait(1);}
my.active = off;
}
}
/////////////////////////////////////////
action plActor
{
animateMe();
my.enable_click = on;
my.enable_rightclick = on;
my.event = actorClicked;
while(my)
{
if(my.active)
{
my.ambient = 100;
my.anim_state = state_stand;
if(key_q) {my.anim_state = state_spin;}
}
else
{
my.ambient = 0;
my.anim_state = state_stand;
}
wait(1);
}
}
/////////////////////////////////////////
on_mouse_right = init_mouse;
/////////////////////////////////////////