Here's what it would look like for the alpha part.... I'm kind of too lazy to write up the anim part, sorry. But you would request perms to animate then add in something like in your sword but with a global variable to let it know which anims to use.
(weapon 1 script in all prims of that one weapon)
default
{
link_message(integer sender_num, integer num, string str, key id)
{
if (num=2)
llSetAlpha(0,ALL_SIDES);
else if (num=1)
llSetAlpha(1,ALLSIDES);
}
}
(weapon 2 script in all prims of that one weapon)
default
{
link_message(integer sender_num, integer num, string str, key id)
{
if (num=2)
llSetAlpha(0,ALL_SIDES);
else if (num=0)
llSetAlpha(1,ALLSIDES);
}
}
(master prim script)
default
{
on_rez(integer params)
{
llResetScript();
}
state_entry()
{
llListen( 0, "",llGetOwner(), "" );
llSetAlpha(0,ALL_SIDES)
}
listen( integer channel, string name, key id, string msg )
{
if (msg == "draw weapon 1"

llMessageLinked(-1, 1, "", ""

;
else if (msg == "draw weapon 2"

llMessageLinked(-1, 0, "", ""

;
else if (msg == "sheath"

llMessageLinked(-1, 2, "", ""

;
}
}