A considerably less laggy way of doing it than having a separate listen in each prim would be to put something like this in one prim:
default
{
state_entry()
{
llListen(5, "", llGetOwner(), "");
}
listen(integer channel, string name, key id, string message)
{
string str = message;
// if (llToLower(str) == "show") uncomment if you want to show/hide the listening prim
// {
// llSetAlpha(1.0, ALL_SIDES);
// }
// else if (llToLower(str) == "hide")
// {
// llSetAlpha(0.0, ALL_SIDES);
// }
llMessageLinked(LINK_SET, 0, str, id);
}
}
and this in each prim in the linkset you want to show or hide:
default
{
link_message(integer sender_num, integer num, string str, key id)
{
if (llToLower(str) == "show")
{
llSetAlpha(1.0, ALL_SIDES);
}
else if (llToLower(str) == "hide")
{
llSetAlpha(0.0, ALL_SIDES);
}
}
}
AFTERTHOUGHT
Perhaps a better way of doing it, since we're only deciding once what to do? Does this affect performance? Anyway:
default
{
state_entry()
{
llListen(5, "", llGetOwner(), "");
}
listen(integer channel, string name, key id, string message)
{
string str = message;
float myAlpha;
if (llToLower(str) != "show" && llToLower(str) != "hide" )
return;
if (llToLower(str) == "show")
myAlpha = 1.0;
if (llToLower(str) == "hide")
myAlpha = 0.0;
llMessageLinked(LINK_SET, 0, (string)myAlpha, id);
//llSetAlpha(myAlpha, ALL_SIDES); uncomment if you want to change this prim
}
}
and
default
{
link_message(integer sender_num, integer num, string str, key id)
{
llSetAlpha((float)str, ALL_SIDES);
}
}
in the other linked prims you want to change.