I guess Void Singer wants the scripts for your glases look like that. This has only one listener, and the commands are given to the other prims via llMessageLinked function call:
//Script in root prim
default
{
state_entry()
{
llListen(600, "", llGetOwner(), ""

;
}
listen(integer channel, string name, key id, string message)
{
llMessageLinked(LINK_SET, 0, message, ""

;
//this transmits the command to all linked prims
//this way we need only one of those lag creating listeners
//for the whole object
//the residents are thankfull, that you try to avoid lag creating scripts
}
changed(integer change)
{
if(change & CHANGED_OWNER) llResetScript();
//we need to set the listener again as the script only listens to owner
}
}
//script for the prims in the head part of your glases, not the lenses
default
{
link_message(integer sender_number, integer number, string message, key id)
{
if("head" == message)
{
llSetAlpha(1.0, ALL_SIDES);
//set headpart opaque, glsses are in head position after all
}
if("nose" == message)
{
llSetAlpha(0.0, ALL_SIDES); //set headpart transparent
}
}
}
//script for the prims in the lenses of your glases, head position
default
{
link_message(integer sender_number, integer number, string message, key id)
{
if("mirror" == message)
{
llSetTexture("silver",ALL_SIDES); //set texture for mirror command
}
if("clear" == message)
{
llSetTexture("white",ALL_SIDES); //set texture for clear command
}
if("head" == message)
{
llSetAlpha(1.0, ALL_SIDES); //set headpart opaque
}
if("nose" == message)
{
llSetAlpha(0.0, ALL_SIDES); //set headpart transparent
}
}
}
//script for the prims in the nose part of your glases, not the lenses
default
{
link_message(integer sender_number, integer number, string message, key id)
{
if("head" == message)
{
llSetAlpha(0.0, ALL_SIDES); //set nose transparent
}
if("nose" == message)
{
llSetAlpha(1.0, ALL_SIDES); //set nose opaque
}
}
}
//script for nosepartlenses
//well, I guess you can do that yourself